From cf977559d6821a1ccce2acae076835a8037f2a90 Mon Sep 17 00:00:00 2001
From: chenqiyang <1406175257@qq.com>
Date: 星期一, 05 六月 2023 11:47:18 +0800
Subject: [PATCH] 1.提交萤石demo 2.修改部分UI

---
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_2.imageset/logo_loading_2.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/offline.imageset/offline@2x.png                                            |    0 
 EZDemo/HDLEZDemo/HDLEZDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist                        |    8 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel.png                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel@2x.png   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_sel.imageset/Contents.json                                            |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/addDevice_success.imageset/Contents.json                         |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/ic_recordtype.imageset/Contents.json                         |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_sel.imageset/play_sel@2x.png                                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/Sadp.h                                      |  557 +
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play.imageset/play@2x.png                                                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording.imageset/Contents.json                                   |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stoppaly_btn_sel.imageset/Contents.json                            |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_video.imageset/Contents.json                                            |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_right.imageset/ptz_scale_arrow_right@3x.png       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/Contents.json                                                   |    6 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button.imageset/orange_button@2x.png                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi1.imageset/Contents.json                             |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/picture_bg.imageset/picture_bg.png                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_sel.imageset/play_sel@2x.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/Sadp.h                                                           |  557 +
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_up_sel.imageset/ptz_up_sel@2x.png                             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step2.imageset/hdl_ez_wifi_connect_step2@3x.png        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/ic_extension.imageset/Contents.json                          |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_dis.imageset/preview_barrel_dis@2x.png                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock_disable.imageset/hdl_ez_ic_unlock_disable@2x.png          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device_reset.imageset/Contents.json                              |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/icn_location.imageset/Contents.json                                        |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close_sel.imageset/Contents.json                             |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/guaduandianhua.imageset/Contents.json                               |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server2.imageset/Contents.json                                         |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause_sel.imageset/pause_sel@2x.png                                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel.png             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback.imageset/Contents.json                                 |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_sel.imageset/preview_barrel_sel@2x.png                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_dis.imageset/preview_screenshot_dis.png                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn.png                       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button_sel.imageset/Contents.json                           |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server4.imageset/add_server4.png                                       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZConstants_Auth.h                                                       |   52 
 EZSDK/EZSDK.xcodeproj/xcshareddata/xcschemes/EZSDK.xcscheme                                                           |    2 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-60@3x.png                                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server3.imageset/Contents.json                               |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open_icon_1024.imageset/Contents.json                                      |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn.imageset/preview_voice_btn.png                  |    0 
 EZSDK/EZSDK/EZ/UIViewControllers/EZAPWiFiConfigViewController.m                                                       |    2 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/open.imageset/open.png                                           |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZCloudRecordFile.h                         |   36 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/cloud.imageset/Contents.json                                               |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message.imageset/message.png                                    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZCloudRecordDownloadTask.h                                      |   34 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi1.imageset/connect_wifi1.png                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback.imageset/Contents.json                           |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_two.imageset/hdl_ez_wifi_connect_step_two@3x.png  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LaunchImage.launchimage/LanuchImage-2x.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message.imageset/Contents.json                                  |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/upgrade.imageset/upgrade.png                                               |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button.imageset/blue_button@2x.png                                    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_dis.imageset/preview_talkback_dis@2x.png         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording.imageset/Contents.json                          |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_account.imageset/failure_account@2x.png                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZProbeDeviceInfo.h                         |   47 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_wifi.imageset/Contents.json                              |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/close.imageset/close@2x.png                                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi2.imageset/connect_wifi2.png                                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn @2x.png                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message_sel.imageset/Contents.json                              |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn.imageset/Contents.json                        |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button.imageset/Contents.json                               |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_dis.imageset/preview_screenshot_dis@2x.png     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/Contents.json                                                    |    6 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_video.imageset/no_video.png                                             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/HDLEZDemo.xcdatamodeld/HDLEZDemo.xcdatamodel/contents                                      |    4 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASCompositeConstraint.h                                    |   26 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_2.imageset/logo_loading_2@2x.png                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASCompositeConstraint.m                                    |  183 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/cloud.imageset/cloud.png                                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi4.imageset/connect_wifi4@2x.png                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn.imageset/Contents.json                          |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_pass_word.imageset/hdl_ez_temp_pass_word@3x.png                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_sel.imageset/Contents.json                               |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Contents.json                                                              |    6 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/icon_download_fill.imageset/Contents.json                                  |   21 
 EZSDK/EZSDK/EZ/UIViewControllers/EZWifiTipsViewController.m                                                           |   17 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi3.imageset/connect_wifi3@2x.png                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-60@2x.png                                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/message_callhelp.imageset/message_callhelp.png                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_1.imageset/Contents.json                               |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi2.imageset/connect_wifi2@2x.png                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZRTCMediaSessionDefines.h                           |  107 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn_sel.imageset/Contents.json                    |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_wifi.imageset/failure_wifi@2x.png                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/open.imageset/Contents.json                                      |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_sel.imageset/preview_recording_sel@2x.png       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi1.imageset/connect_wifi1@2x.png                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel@2x.png          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZOpenSDK.h                                 |  946 ++
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_wifi.imageset/no_wifi@2x.png                                            |    0 
 EZSDK/EZSDK.xcodeproj/project.pbxproj                                                                                 |    4 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/icon_download_fill.imageset/Contents.json                         |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_pass_word.imageset/Contents.json                               |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close.imageset/Contents.json                                          |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bottom_sel.imageset/Contents.json                                      |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASUtilities.h                                              |  136 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_dis.imageset/preview_recording_dis.png                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-Small@3x.png                                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo-1.imageset/logo.png                                                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock_disable.imageset/hdl_ez_ic_unlock_disable@3x.png          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account2.imageset/link_account2.png                                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close_sel.imageset/play_close_sel@2x.png                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceUpgradeStatus.h                                          |   19 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server3.imageset/add_server3.png                                       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceCloudServiceInfo.h                                       |   65 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/button_disable.imageset/button_disable@2x.png                    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_account.imageset/failure_account.png                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Setting/upgrade.imageset/upgrade@2x.png                                    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZVideoTalkViewcontroller.xib                                                              |  135 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge.imageset/Contents.json                            |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel@2x.png                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot.imageset/preview_screenshot@2x.png                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/upgrade.imageset/upgrade@2x.png                                            |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZAPDevInfo.h                                                    |   23 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Setting/Contents.json                                                      |    6 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message_sel.imageset/message_sel.png                            |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZMain.storyboard                                                                          | 2541 +++++
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play.imageset/play.png                                                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/AddDevice.storyboard                                                                       | 1009 ++
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account4.imageset/link_account4.png                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZSADPDeviceInfo.h                          |   40 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next-1.imageset/Contents.json                                  |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/openssl/libcrypto.a                                                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play.imageset/play.png                                            |    0 
 EZSDK/EZSDK/EZ/UIViewControllers/EZDeviceResultViewController.m                                                       |    5 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_right_sel.imageset/ptz_right_sel@2x.png                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback.imageset/preview_talkback.png                             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_account.imageset/Contents.json                           |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn_sel.imageset/preview_play_btn_sel.png            |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account1.imageset/Contents.json                                       |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceRecordFile.h                        |   26 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_sel.imageset/preview_barrel_sel.png                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account3.imageset/Contents.json                             |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/StreamStudio.imageset/StreamStudio.png                            |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi3.imageset/connect_wifi3@2x.png                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_sel.imageset/preview_talkback_sel@2x.png                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/join_qq_group.imageset/Contents.json                                       |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/cloud.imageset/cloud.png                                                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_server.imageset/failure_server.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZConfigTokenInfo.h                         |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_dis.imageset/preview_barrel_dis.png                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_sel.imageset/preview_screenshot_sel.png                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/spkImg.imageset/Contents.json                                              |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/NSArray+MASShorthandAdditions.h                             |   41 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_rate.imageset/Contents.json                                           |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn .imageset/Contents.json                      |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/no_video.imageset/no_video.png                                    |    0 
 EZSDK/EZSDK/EZ/Global/EZHttpUtil.m                                                                                    |   19 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/StreamStudio-2.imageset/Contents.json                             |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button_sel.imageset/blue_button_sel.png                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/play_download.imageset/Contents.json                              |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi1.imageset/connect_wifi1@2x.png                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_4.imageset/Contents.json                               |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/no_video.imageset/Contents.json                                   |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel@2x.png |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/offline.imageset/Contents.json                                             |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceRecordDownloadTask.h                                     |   39 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_sel.imageset/preview_talkback_sel.png            |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_reset.imageset/device_reset.png                                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/StreamStudio.imageset/Contents.json                               |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDetectorInfo.h                                                 |   41 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/picture_bg.imageset/picture_bg.png                                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/offline.imageset/offline.png                                               |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZRTCVideoEncodeParam.h                              |   30 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open_icon_1024.imageset/open_icon_1024@2x.png                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close.imageset/play_close@2x.png                                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account4.imageset/Contents.json                                       |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/qr_scan_line.imageset/qr_scan_line.png                                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/message_callhelp.imageset/Contents.json                            |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge.imageset/preview_enlarge@2x.png                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message.imageset/message@2x.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bottom_sel.imageset/ptz_bottom_sel@2x.png                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZLeaveMessage.h                                                 |   41 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/Contents.json                                                |    6 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn @2x.png                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn .imageset/preview_stopplay_btn @2x.png       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_dis.imageset/Contents.json                              |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRTCVideoEncodeParam.h                     |   30 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_down.imageset/ptz_scale_arrow_down@3x.png         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/Masonry.h                                                   |   29 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message.imageset/no_message.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot.imageset/preview_screenshot.png                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device.imageset/Contents.json                                    |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause_sel.imageset/pause_sel.png                                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AccentColor.colorset/Contents.json                                         |   11 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording.imageset/preview_recording.png                           |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button_sel.imageset/Contents.json                          |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/ic_recordtype.imageset/ic_recordtype@2x.png                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button.imageset/blue_button.png                                       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/icon_download_fill.imageset/icon_download_fill.png                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider.imageset/Contents.json                                              |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceInfo.h                                                   |   59 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_success_icon.imageset/Contents.json                          |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bg.imageset/Contents.json                                     |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup.imageset/setup.png                                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step2.imageset/hdl_ez_wifi_connect_step2@2x.png        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play.imageset/play@2x.png                                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn@2x.png                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_4.imageset/logo_loading_4@2x.png                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback.imageset/Contents.json                                    |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn.imageset/preview_stopplay_btn .png           |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_sel.imageset/Contents.json                       |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/StreamStudio.imageset/StreamStudio.png                                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close.imageset/play_close.png                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider_sel.imageset/Contents.json                                 |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server3.imageset/add_server3@2x.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Setting/upgrade.imageset/Contents.json                                     |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bg.imageset/Contents.json                                              |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_dis.imageset/preview_recording_dis.png          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/no_video.imageset/no_video@2x.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server1.imageset/add_server1@2x.png                                    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZOpenSDKFramework.h                        |   54 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZStorageInfo.h                                                  |   23 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTransformer.h                                             |   39 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZWiFiItemInfo.h                                                 |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/NSArray+MASAdditions.m                                      |  162 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server1.imageset/Contents.json                               |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause.imageset/pause.png                                                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkSDK.h                            |  268 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause_sel.imageset/pause_sel@2x.png                               |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EzvizWatchServerInfo.h                                           |   26 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel.imageset/preview_barrel.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/NSArray+MASAdditions.h                                      |   72 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZHCNetDeviceInfo.h                                              |   36 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback.imageset/playback.png                                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button_sel.imageset/white_button_sel@2x.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZVideoTalk.h                                        |  179 
 EZDemo/HDLEZDemo/HDLEZDemo/resources/en.lproj/EZMain.strings                                                          |   51 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account2.imageset/Contents.json                             |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_dis.imageset/Contents.json                       |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceUpgradeStatus.h                     |   19 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASViewAttribute.h                                          |   49 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZAccessToken.h                                                  |   19 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASConstraintMaker.m                                        |  273 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/picture_bg.imageset/picture_bg@2x.png                             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZTokenKit.h                                                     |   40 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASConstraintMaker.h                                        |  146 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/qr_scan_line.imageset/qr_scan_line@2x.png                                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASViewAttribute.m                                          |   46 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge.imageset/preview_enlarge.png                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback_sel.imageset/Contents.json                                        |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_up_sel.imageset/Contents.json                                 |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel.png      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-Small@2x.png                                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge.imageset/preview_enlarge@2x.png                            |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/SceneDelegate.m                                                                            |   61 
 EZDemo/HDLEZDemo/HDLEZDemo/SceneDelegate.h                                                                            |   15 
 EZDemo/HDLEZDemo/HDLEZDemo/ViewController.h                                                                           |   20 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/button_disable.imageset/button_disable.png                       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step1.imageset/hdl_ez_wifi_connect_step1@3x.png        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo-1.imageset/Contents.json                                              |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_success_icon.imageset/add_success_icon.png                             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open.imageset/Contents.json                                                |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/ViewController.m                                                                           |   72 
 EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_add_device_success@2x.png                                                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_dis.imageset/preview_talkback_dis.png            |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZStorageInfo.h                             |   23 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_bg.imageset/device_bg.png                                           |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message.imageset/Contents.json                                          |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/com.hri.hpc.mobile.ios.player.metallib                                           |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LaunchImage.launchimage/LanuchImage-R4-7.png                               |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server4.imageset/Contents.json                                         |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/large_back_btn.imageset/large_back_btn@2x.png                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel.imageset/preview_barrel.png                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn_sel.imageset/preview_play_btn_sel@2x.png         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi4.imageset/connect_wifi4@2x.png                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_dis.imageset/preview_recording_dis@2x.png                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi3.imageset/connect_wifi3.png                                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server4.imageset/add_server4@2x.png                                    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi1.imageset/connect_wifi1.png                                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_3.imageset/logo_loading_3@2x.png                       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup_sel.imageset/setup_sel@2x.png                             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bottom_sel.imageset/ptz_bottom_sel.png                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button.imageset/orange_button.png                                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge_btn_sel.imageset/Contents.json                             |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/device_default.imageset/device_default.png                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server2.imageset/add_server2.png                                       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/main.m                                                                                     |   18 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi2.imageset/connect_wifi2.png                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/play_download.imageset/play_download@2x.png                       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_sel.imageset/Contents.json                                  |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback_sel.imageset/Contents.json                             |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi4.imageset/connect_wifi4.png                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_server.imageset/failure_server@2x.png                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account2.imageset/link_account2@2x.png                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/NSLayoutConstraint+MASDebugAdditions.h                      |   16 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Modules/module.modulemap                            |    6 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/duijiangji.imageset/Contents.json                               |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/NSLayoutConstraint+MASDebugAdditions.m                      |  146 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server1.imageset/add_server1.png                             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_wifi.imageset/failure_wifi.png                                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn_sel.imageset/Contents.json                            |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn.imageset/Contents.json                                |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account1.imageset/link_account1@2x.png                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message-1.imageset/no_message.png                                       |    0 
 EZSDK/EZSDK/EZ/UIViewControllers/EZAddByQRCodeViewController.m                                                        |    2 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_right_sel.imageset/ptz_right_sel.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/wifi_bg.imageset/wifi_bg.png                                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause.imageset/pause@2x.png                                       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback.imageset/preview_talkback@2x.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_sel.imageset/preview_screenshot_sel@2x.png     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next.imageset/Contents.json                                    |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn.imageset/Contents.json                                 |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_sel.imageset/Contents.json                         |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bottom_sel.imageset/Contents.json                             |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-Spotlight-40@2x.png                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button.imageset/white_button@2x.png                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close_sel.imageset/Contents.json                                      |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EzvizRecordFileInfo.h                                            |   47 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_default.imageset/device_default.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel@2x.png                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_one.imageset/Contents.json                        |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn_sel.imageset/preview_voice_btn_sel.png          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bottom_sel.imageset/ptz_bottom_sel.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel.imageset/Contents.json                                      |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_right.imageset/ptz_scale_arrow_right@2x.png       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel.imageset/preview_barrel@2x.png                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/no_wifi.imageset/no_wifi@2x.png                                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LaunchImage.launchimage/LanuchImage-R5-5.png                               |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider_sel.imageset/Contents.json                                          |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close.imageset/play_close@2x.png                             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/duijiangji.imageset/duijiangji-2.png                                       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_sel.imageset/message_sel@2x.png                                    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording.imageset/preview_recording@2x.png                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo.imageset/logo.png                                                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/HDLEZDemo.entitlements                                                                     |   10 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZHiddnsDeviceInfo.h                        |   84 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_dis.imageset/preview_barrel_dis.png                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording.imageset/preview_recording.png                  |    0 
 EZSDK/EZSDK/EZ/UIViewControllers/EZAPConfigResultViewController.m                                                     |    7 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback.imageset/Contents.json                                            |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/Contents.json                                                     |    6 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_callhelp.imageset/Contents.json                                    |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/spkImg.imageset/spkImg.png                                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/resources/en.lproj/AddDevice.strings                                                       |   25 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASViewConstraint.m                                         |  401 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASViewConstraint.h                                         |   48 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZAreaInfo.h                                |   19 
 EZDemo/HDLEZDemo/HDLEZDemo/EZSupportViewController.xib                                                                |  126 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider_sel.imageset/slider_sel@2x.png                                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata                                     |    7 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_dis.imageset/preview_recording_dis@2x.png       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceVersion.h                           |   27 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/large_back_btn.imageset/large_back_btn.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button.imageset/blue_button.png                             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZVideoTalkGlobal.h                                  |   63 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open.imageset/open@2x.png                                                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_wifi.imageset/failure_wifi@2x.png                                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button.imageset/blue_button@2x.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_success_icon.imageset/add_success_icon.png                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_dis.imageset/Contents.json                                  |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_up_sel.imageset/ptz_up_sel@2x.png                                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel.png               |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EzvizWatchServerInfo.h                      |   26 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button.imageset/orange_button@2x.png                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn_sel.imageset/Contents.json                       |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTransformer.h                        |   39 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn.imageset/Contents.json                           |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel.png      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkView.h                           |   18 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open_icon_1024.imageset/open_icon_1024.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/results_pic_bg.imageset/results_pic_bg@2x.png                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_down.imageset/ptz_scale_arrow_down@2x.png         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device.imageset/device@2x.png                                    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn_sel.imageset/preview_voice_btn_sel@2x.png       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server4.imageset/Contents.json                               |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_dis.imageset/Contents.json                      |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LaunchImage.launchimage/Contents.json                                      |   64 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/wifi_bg.imageset/Contents.json                                   |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRTCSampleHandleManager.h                  |   31 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZPlayerExParamInfo.h                                            |   34 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi4.imageset/Contents.json                             |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button_sel.imageset/blue_button_sel@2x.png                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_success_icon.imageset/Contents.json                                    |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn.imageset/preview_play_btn@2x.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message-1.imageset/Contents.json                                        |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider_sel.imageset/slider_sel@2x.png                             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock.imageset/hdl_ez_ic_unlock@2x.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_sel.imageset/Contents.json                                |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button_sel.imageset/blue_button_sel@2x.png                            |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/spkImg.imageset/spkImg@2x.png                                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRecordCoverFetcherManager.h               |   69 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/chuanshujilu--2.imageset/Contents.json                            |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZGlobalSDK.h                                                            | 1059 ++
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDevicePtzAngleInfo.h                                           |   47 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_left_sel.imageset/Contents.json                               |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_2.imageset/Contents.json                                      |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRecordDownloadTask.h                      |   86 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn_sel.imageset/Contents.json                             |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi2.imageset/Contents.json                                       |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button_sel.imageset/Contents.json                                    |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_two.imageset/Contents.json                        |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZAlarmInfo.h                                                    |   60 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup.imageset/setup@2x.png                                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_2.imageset/Contents.json                               |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider.imageset/slider@2x.png                                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_down.imageset/Contents.json                       |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_success_icon.imageset/add_success_icon@2x.png                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step2.imageset/Contents.json                           |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/icn_location.imageset/Contents.json                              |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message-1.imageset/Contents.json                                |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel@2x.png            |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server3.imageset/add_server3.png                             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZHCNetDeviceSDK.h                          |  146 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_1.imageset/logo_loading_1.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider_sel.imageset/slider_sel.png                                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZPMPlayPrivateTokenInfo.h                  |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZCloudRecordDownloadTask.h                 |   34 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button_sel.imageset/blue_button_sel.png                               |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message.imageset/Contents.json                                             |   22 
 EZSDK/EZSDK/EZ/UIViewControllers/EZWifiConfigViewController.m                                                         |   19 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/join_qq_group.imageset/join_qq_group.png                                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close.imageset/Contents.json                                 |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_4.imageset/logo_loading_4.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/offline.imageset/offline.png                                    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo.xcodeproj/project.pbxproj                                                                  |  875 ++
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZCloudRecordFile.h                                              |   36 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/upgrade.imageset/Contents.json                                             |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_nav_back.imageset/hdl_ez_ic_nav_back@2x.png                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/no_wifi.imageset/no_wifi.png                                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock.imageset/Contents.json                                    |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message.imageset/no_message@2x.png                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback_sel.imageset/playback_sel@2x.png                                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stoppaly_btn_sel.imageset/Contents.json                   |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn.imageset/Contents.json                       |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button_sel.imageset/Contents.json                                   |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account4.imageset/link_account4@2x.png                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_right_sel.imageset/Contents.json                                       |   22 
 EZSDK/EZSDK/EZ/Venders/SDWebImage/SDWebImageDownloader.m                                                              |    4 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZCameraInfo.h                              |   35 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZVideoTalkSDK.h                                     |  268 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback.imageset/playback.png                                             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server4.imageset/add_server4.png                             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/chuanshujilu--2.imageset/Contents.json                                     |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_left_sel.imageset/ptz_left_sel.png                            |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo-1.imageset/logo@2x.png                                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZConstants_Auth.h                          |   52 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_1.imageset/logo_loading_1@2x.png                       |    0 
 EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m                                                           |   63 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause.imageset/pause.png                                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_server.imageset/failure_server.png                       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/spkImg.imageset/Contents.json                                     |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account3.imageset/link_account3@2x.png                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZHiddnsDeviceInfo.h                                             |   84 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi1.imageset/Contents.json                                       |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn_sel.imageset/Contents.json                                |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/addDevice_success.imageset/addDevice_success.png                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Base.lproj/Main.storyboard                                                                 |  106 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZStreamPlayer.h                                                         |  118 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/results_pic_bg.imageset/Contents.json                                      |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/play_rate.imageset/play_rate.png                                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account4.imageset/Contents.json                             |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_1.imageset/logo_loading_1@2x.png                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/device_default.imageset/device_default@2x.png                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback_sel.imageset/playback_sel.png                                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device.imageset/Contents.json                                              |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_add_device_success.imageset/Contents.json                           |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_one.imageset/hdl_ez_wifi_connect_step_one@3x.png  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account2.imageset/link_account2@2x.png                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_1.imageset/Contents.json                                      |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback.imageset/playback@2x.png                                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_dis.imageset/preview_talkback_dis@2x.png                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge.imageset/Contents.json                                     |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock_disable.imageset/Contents.json                            |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_sel.imageset/play_sel.png                                             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/message_callhelp.imageset/message_callhelp@2x.png                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_server.imageset/Contents.json                                      |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/button_disable.imageset/Contents.json                            |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account3.imageset/Contents.json                                       |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message.imageset/Contents.json                                  |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_add.imageset/hdl_ez_temp_add@3x.png                            |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_right.imageset/Contents.json                      |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause.imageset/Contents.json                                               |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel@2x.png          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_rate.imageset/play_rate.png                                           |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZUserInfo.h                                |   23 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_dis.imageset/Contents.json                                |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close_sel.imageset/play_close_sel.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/device_default.imageset/Contents.json                           |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZVideoTalkSDKDefines.h                              |   17 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup.imageset/setup.png                                                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_right_sel.imageset/ptz_right_sel@2x.png                       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Contents.json                                         |   77 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_sel.imageset/preview_talkback_sel@2x.png         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZBAVParam.h                                |  196 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/duijiangji.imageset/duijiangji-2.png                            |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback_sel.imageset/playback_sel@2x.png                       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge.imageset/preview_enlarge.png                               |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo.imageset/logo@2x.png                                                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_reset.imageset/Contents.json                                        |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button_sel.imageset/white_button_sel.png                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_wifi.imageset/Contents.json                                             |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_dis.imageset/Contents.json                               |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZPlayerExParamInfo.h                       |   34 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/open_icon_1024.imageset/open_icon_1024.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_left_sel.imageset/ptz_left_sel@2x.png                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_left_sel.imageset/ptz_left_sel.png                                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/addDevice_success.imageset/addDevice_success@2x.png                        |    0 
 EZSDK/EZSDK/EZSDK.m                                                                                                   |    7 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/wifi_bg.imageset/wifi_bg.png                                               |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_add_device_success.imageset/hdl_ez_add_device_success@3x.png        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/spkImg.imageset/spkImg@2x.png                                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause.imageset/Contents.json                                      |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/chuanshujilu--2.imageset/chuanshujilu--2.png                               |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_up_sel.imageset/ptz_up_sel.png                                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/StreamStudio-2.imageset/Contents.json                                      |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_bg.imageset/Contents.json                                           |   21 
 EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a                                                                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi3.imageset/connect_wifi3.png                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot.imageset/Contents.json                                  |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device.imageset/device@2x.png                                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account3.imageset/link_account3.png                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge_btn_sel.imageset/Contents.json                    |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/wifi_bg.imageset/Contents.json                                             |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_sel.imageset/Contents.json                     |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_2.imageset/logo_loading_2.png                          |    0 
 EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_add_device_success@3x.png                                                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon.png                                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_wifi.imageset/Contents.json                                        |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZConstants.h                               |  222 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button.imageset/white_button.png                           |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot.imageset/preview_screenshot.png                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_video.imageset/no_video@2x.png                                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn.imageset/preview_unvoice_btn.png              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_wifi.imageset/failure_wifi.png                           |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account3.imageset/link_account3.png                                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account4.imageset/link_account4.png                                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/icn_location.imageset/icn_location.png                           |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message-1.imageset/no_message.png                               |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider.imageset/slider.png                                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next-1.imageset/hdl_ez_list_next@3x.png                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_sel.imageset/preview_barrel_sel.png                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn.imageset/preview_unvoice_btn@2x.png           |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_server.imageset/Contents.json                            |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_callhelp.imageset/message_callhelp@2x.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account3.imageset/link_account3@2x.png                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/button_disable.imageset/Contents.json                                      |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message.imageset/message@2x.png                                            |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/large_back_btn.imageset/Contents.json                        |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZTokenKit.h                                |   40 
 EZDemo/HDLEZDemo/FQDateTimeSDK.framework/Modules/module.modulemap                                                     |    6 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step1.imageset/hdl_ez_wifi_connect_step1@2x.png        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button.imageset/Contents.json                              |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/button_disable.imageset/button_disable.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi2.imageset/Contents.json                             |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server2.imageset/Contents.json                               |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message-1.imageset/no_message@2x.png                                    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn.imageset/preview_stopplay_btn @2x.png        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZConferenceClient.h                        |  238 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_4.imageset/logo_loading_4.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn_sel.imageset/Contents.json                   |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/join_qq_group.imageset/join_qq_group@2x.png                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/StreamStudio-2.imageset/StreamStudio-2.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo.imageset/Contents.json                                                |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/cloud.imageset/Contents.json                                      |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/offline.imageset/offline@2x.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/include/EZSDK/EZSDK.h                                                                      |  113 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/wifi_bg.imageset/wifi_bg@2x.png                                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalk.h                               |  179 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn.imageset/Contents.json                                    |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server1.imageset/Contents.json                                         |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bg.imageset/ptz_bg.png                                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoQualityInfo.h                        |   23 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/chuanshujilu--2.imageset/chuanshujilu--2.png                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bg.imageset/ptz_bg.png                                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_1.imageset/logo_loading_1.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_add.imageset/Contents.json                                     |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel.png                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_sel.imageset/Contents.json                                   |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_sel.imageset/Contents.json                      |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bg.imageset/ptz_bg@2x.png                                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_dis.imageset/preview_barrel_dis@2x.png             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/chuanshujilu-.imageset/chuanshujilu-.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/libEZSDK.a                                                                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRTCCameraParam.h                          |   38 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bg.imageset/ptz_bg@2x.png                                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock.imageset/hdl_ez_ic_unlock@3x.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel.imageset/preview_barrel@2x.png                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn .imageset/preview_stopplay_btn .png          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi4.imageset/connect_wifi4.png                                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZAlarmInfo.h                               |   60 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRTCMediaSessionDefines.h                  |  107 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device_reset.imageset/device_reset.png                           |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_one.imageset/hdl_ez_wifi_connect_step_one@2x.png  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play.imageset/Contents.json                                                |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/chuanshujilu-.imageset/Contents.json                                       |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_left_sel.imageset/Contents.json                                        |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/AppDelegate.h                                                                              |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel@2x.png |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/results_pic_bg.imageset/results_pic_bg.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause_sel.imageset/Contents.json                                           |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/open_icon_1024.imageset/Contents.json                               |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZHCNetDeviceInfo.h                         |   36 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EzvizRecordFileInfo.h                       |   47 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device_reset.imageset/device_reset@2x.png                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message.imageset/no_message.png                                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZProbeDeviceInfo.h                                              |   47 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server3.imageset/add_server3@2x.png                                    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message_sel.imageset/message_sel@2x.png                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next.imageset/hdl_ez_list_next@3x.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRecordDownloader.h                        |   49 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZAreaInfo.h                                                     |   19 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_sel.imageset/preview_screenshot_sel.png        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/Contents.json                                                     |    6 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn.imageset/preview_play_btn.png                    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/large_back_btn.imageset/large_back_btn@2x.png                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_sel.imageset/preview_recording_sel.png          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/picture_bg.imageset/picture_bg@2x.png                                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button_sel.imageset/Contents.json                            |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/wifi_bg.imageset/wifi_bg@2x.png                                            |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback.imageset/playback@2x.png                               |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider.imageset/slider.png                                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_account.imageset/failure_account@2x.png                            |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause.imageset/pause@2x.png                                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup.imageset/setup@2x.png                                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_3.imageset/logo_loading_3@2x.png                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/AppDelegate.m                                                                              |  115 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi4.imageset/Contents.json                                       |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/View+MASShorthandAdditions.h                                |  133 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZAccessToken.h                             |   19 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_4.imageset/Contents.json                                      |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button.imageset/Contents.json                                         |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel.png               |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZConfigTokenInfo.h                                              |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel.imageset/Contents.json                             |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback.imageset/preview_talkback@2x.png                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDevicePtzAngleInfo.h                      |   47 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceInfo.h                              |   59 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/addDevice_success.imageset/Contents.json                                   |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_sel.imageset/preview_recording_sel@2x.png                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/picture_bg.imageset/Contents.json                                          |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_account.imageset/Contents.json                                     |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_up_sel.imageset/Contents.json                                          |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceRecordFile.h                                             |   26 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZRecordDownloadTask.h                                           |   86 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Setting/upgrade.imageset/upgrade.png                                       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/StreamStudio-2.imageset/StreamStudio-2.png                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/chuanshujilu-.imageset/Contents.json                              |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon@2x.png                                           |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server2.imageset/add_server2@2x.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-Small.png                                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/resources/en.lproj/Localizable.strings                                                     |  226 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button_sel.imageset/white_button_sel.png                             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step1.imageset/Contents.json                           |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/icn_location.imageset/icn_location.png                                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_default.imageset/device_default@2x.png                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZLeaveMessage.h                            |   41 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback_sel.imageset/playback_sel.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_dis.imageset/preview_talkback_dis.png                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server4.imageset/add_server4@2x.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button.imageset/white_button.png                                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/close.imageset/close@2x.png                                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_4.imageset/logo_loading_4@2x.png                       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZPlayer.h                                                               |  446 +
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup.imageset/Contents.json                                               |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceRecordDownloadTask.h                |   39 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/large_back_btn.imageset/Contents.json                                      |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup_sel.imageset/setup_sel.png                                           |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_sel.imageset/preview_recording_sel.png                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn.imageset/preview_voice_btn@2x.png               |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider_sel.imageset/slider_sel.png                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next.imageset/hdl_ez_list_next@2x.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZVideoTalkView.h                                    |   18 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/chuanshujilu-.imageset/chuanshujilu-.png                                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_up_sel.imageset/ptz_up_sel.png                                |    0 
 EZSDK.IOS/EZSDK.IOS/Properties/AssemblyInfo.cs                                                                        |    2 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_dis.imageset/Contents.json                         |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device.imageset/device.png                                       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_3.imageset/logo_loading_3.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn@2x.png                    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZConstants_WifiConfig.h                    |   36 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi3.imageset/Contents.json                             |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_wifi.imageset/no_wifi.png                                               |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server2.imageset/add_server2@2x.png                                    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account2.imageset/Contents.json                                       |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_sel.imageset/Contents.json                                         |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup_sel.imageset/Contents.json                                |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZGlobalSDK.h                               | 1059 ++
 EZDemo/HDLEZDemo/HDLEZDemo/Base.lproj/LaunchScreen.storyboard                                                         |   33 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button_sel.imageset/white_button_sel@2x.png                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn .png                    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message.imageset/message.png                                               |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_default.imageset/Contents.json                                      |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_callhelp.imageset/message_callhelp.png                             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi3.imageset/Contents.json                                       |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn .png                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button_sel.imageset/orange_button_sel.png                    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceVersion.h                                                |   27 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot.imageset/Contents.json                         |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/Contents.json                                                      |    6 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup_sel.imageset/setup_sel@2x.png                                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkSDKDefines.h                     |   17 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceCloudServiceInfo.h                  |   65 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_3.imageset/Contents.json                               |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZStreamPlayer.h                            |  118 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server1.imageset/add_server1.png                                       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server1.imageset/add_server1@2x.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZCameraInfo.h                                                   |   35 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASLayoutConstraint.m                                       |   13 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_reset.imageset/device_reset@2x.png                                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZConstants_WifiConfig.h                                                 |   36 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_success_icon.imageset/add_success_icon@2x.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_two.imageset/hdl_ez_wifi_connect_step_two@2x.png  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_right_sel.imageset/ptz_right_sel.png                                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_3.imageset/Contents.json                                      |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASLayoutConstraint.h                                       |   22 
 EZDemo/HDLEZDemo/FQDateTimeSDK.framework/Info.plist                                                                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_add_device_success.imageset/hdl_ez_add_device_success@2x.png        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZWiFiItemInfo.h                            |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn_sel.imageset/Contents.json                      |   22 
 EZDemo/HDLEZDemo/FQDateTimeSDK.framework/Headers/FQDateTimePickerView.h                                               |  107 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkGlobal.h                         |   63 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/picture_bg.imageset/Contents.json                                 |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_add.imageset/hdl_ez_temp_add@2x.png                            |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel.png    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider.imageset/slider@2x.png                                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/ViewController+MASAdditions.m                               |   39 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/ViewController+MASAdditions.h                               |   30 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/close.imageset/close.png                                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASConstraint+Private.h                                     |   66 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/guaduandianhua.imageset/guaduandianhua.png                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn.imageset/Contents.json                                   |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open.imageset/open.png                                                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZRTCSampleHandleManager.h                           |   31 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_right_sel.imageset/Contents.json                              |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/addDevice_success.imageset/addDevice_success.png                           |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_pass_word.imageset/hdl_ez_temp_pass_word@2x.png                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/addDevice_success.imageset/addDevice_success@2x.png              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/open.imageset/open@2x.png                                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_sel.imageset/preview_barrel_sel@2x.png             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider.imageset/Contents.json                                     |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next-1.imageset/hdl_ez_list_next@2x.png                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Info.plist                                                                                 |   15 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_nav_back.imageset/hdl_ez_ic_nav_back@3x.png                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LaunchImage.launchimage/LanuchImage-R4.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_server.imageset/failure_server@2x.png                    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn_sel.imageset/Contents.json                               |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/HDLEZDemo.xcdatamodeld/.xccurrentversion                                                   |    8 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkComponent.h                      |   23 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message-1.imageset/no_message@2x.png                            |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause_sel.imageset/Contents.json                                  |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_2.imageset/logo_loading_2@2x.png                       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account1.imageset/link_account1.png                                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_sel.imageset/play_sel.png                                    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/no_wifi.imageset/Contents.json                                   |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-Spotlight-40@3x.png                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account1.imageset/Contents.json                             |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button_sel.imageset/orange_button_sel@2x.png                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn.png                           |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn .imageset/Contents.json                               |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel.png             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZUserInfo.h                                                     |   23 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/close.imageset/close.png                                                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account2.imageset/link_account2.png                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/ic_extension.imageset/ic_extension@2x.png                    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup_sel.imageset/setup_sel.png                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button.imageset/Contents.json                                       |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/spkImg.imageset/spkImg.png                                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message.imageset/no_message@2x.png                                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close_sel.imageset/play_close_sel.png                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/offline.imageset/Contents.json                                  |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_dis.imageset/Contents.json                     |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZConstants.h                                                            |  222 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZSADPDeviceInfo.h                                               |   40 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_left_sel.imageset/ptz_left_sel@2x.png                                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account4.imageset/link_account4@2x.png                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button.imageset/orange_button.png                            |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASConstraint.m                                             |  301 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback.imageset/preview_talkback.png                    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/play_rate.imageset/Contents.json                                  |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bottom_sel.imageset/ptz_bottom_sel@2x.png                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi2.imageset/connect_wifi2@2x.png                      |    0 
 EZDemo/HDLEZDemo/FQDateTimeSDK.framework/FQDateTimeSDK                                                                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASConstraint.h                                             |  272 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_sel.imageset/message_sel.png                                       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device.imageset/device.png                                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel@2x.png   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account1.imageset/link_account1@2x.png                      |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZOpenSDK.h                                                              |  946 ++
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/open_icon_1024.imageset/open_icon_1024@2x.png                       |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup_sel.imageset/Contents.json                                           |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot.imageset/preview_screenshot@2x.png             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZAPDevInfo.h                               |   23 
 EZSDK.IOS/EZSDK.IOS/Library/lib/EZOpenSDKFramework.framework/Info.plist                                               |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZBAVParam.h                                         |  196 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button.imageset/Contents.json                                |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button.imageset/white_button@2x.png                                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon.appiconset/Contents.json                                           |   98 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account1.imageset/link_account1.png                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/StreamStudio.imageset/Contents.json                                        |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_account.imageset/failure_account.png                               |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button_sel.imageset/Contents.json                                     |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_sel.imageset/Contents.json                              |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_sel.imageset/preview_screenshot_sel@2x.png              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZPlayer.h                                  |  446 +
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/duijiangji.imageset/Contents.json                                          |   21 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/button_disable.imageset/button_disable@2x.png                              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZPMPlayPrivateTokenInfo.h                                       |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/large_back_btn.imageset/large_back_btn.png                   |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/icon_download_fill.imageset/icon_download_fill.png                |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/Contents.json                                                       |    6 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDetectorInfo.h                            |   41 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_nav_back.imageset/Contents.json                                  |   22 
 EZDemo/HDLEZDemo/FQDateTimeSDK.framework/Headers/FQDateTimeSDK.h                                                      |   18 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel.png    |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close.imageset/play_close.png                                         |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server2.imageset/add_server2.png                             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZConferenceClient.h                                 |  238 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server3.imageset/Contents.json                                         |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Info.plist                                          |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_sel.imageset/preview_talkback_sel.png                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_3.imageset/logo_loading_3.png                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoQualityInfo.h                                             |   23 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/EZOpenSDKFramework                                  |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/openssl/libssl.a                                                                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause_sel.imageset/pause_sel.png                                           |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/libHDLLCNVRSDK.a                                                                           |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/close.imageset/Contents.json                                     |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/View+MASAdditions.h                                         |  111 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn.imageset/preview_play_btn@2x.png                 |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup.imageset/Contents.json                                    |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/View+MASAdditions.m                                         |  186 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play.imageset/Contents.json                                       |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_dis.imageset/preview_screenshot_dis@2x.png              |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn.imageset/preview_play_btn.png                             |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZHCNetDeviceSDK.h                                                       |  146 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button_sel.imageset/orange_button_sel.png                           |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_dis.imageset/preview_screenshot_dis.png        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel@2x.png            |    0 
 EZSDK.IOS/EZSDK.IOS/EZSDK.IOS.csproj                                                                                  |    2 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button.imageset/Contents.json                                        |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/close.imageset/Contents.json                                               |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button_sel.imageset/orange_button_sel@2x.png                        |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording.imageset/preview_recording@2x.png               |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/qr_scan_line.imageset/Contents.json                                        |   22 
 EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close_sel.imageset/play_close_sel@2x.png                     |    0 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZRTCCameraParam.h                                   |   38 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZRecordDownloader.h                                             |   49 
 EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZRecordCoverFetcherManager.h                                    |   69 
 847 files changed, 26,140 insertions(+), 41 deletions(-)

diff --git a/EZDemo/HDLEZDemo/FQDateTimeSDK.framework/FQDateTimeSDK b/EZDemo/HDLEZDemo/FQDateTimeSDK.framework/FQDateTimeSDK
new file mode 100755
index 0000000..df82751
--- /dev/null
+++ b/EZDemo/HDLEZDemo/FQDateTimeSDK.framework/FQDateTimeSDK
Binary files differ
diff --git a/EZDemo/HDLEZDemo/FQDateTimeSDK.framework/Headers/FQDateTimePickerView.h b/EZDemo/HDLEZDemo/FQDateTimeSDK.framework/Headers/FQDateTimePickerView.h
new file mode 100644
index 0000000..136848d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/FQDateTimeSDK.framework/Headers/FQDateTimePickerView.h
@@ -0,0 +1,107 @@
+//
+//  FQDateTimePickerView.h
+//  FQTools
+//
+//  Created by wuwuFQ on 2021/5/26.
+//
+
+#import <UIKit/UIKit.h>
+typedef enum{
+    FQDateTimePickerModelYMDate,// 骞存湀 2021-05
+    FQDateTimePickerModelDate,// 骞存湀鏃� 2021-05-26
+    FQDateTimePickerModelDateTime,//骞存湀鏃� 鏃跺垎 yyyy-mm-dd HH:mm 鍙敮鎸�24灏忔椂鍒�
+    FQDateTimePickerModelDateTimeSecond,//骞存湀鏃� 鏃跺垎绉� yyyy-mm-dd HH:mm:ss 鍙敮鎸�24灏忔椂鍒�
+    FQDateTimePickerModelTime,// 鏃跺垎 HH:mm 鍙敮鎸�24灏忔椂鍒�
+    FQDateTimePickerModelTimeSecond,// 鏃跺垎绉� HH:mm:ss 鍙敮鎸�24灏忔椂鍒�
+} FQDateTimePickerModel;
+
+
+NS_ASSUME_NONNULL_BEGIN
+@protocol FQDateTimePickerViewDelegate <NSObject>
+
+/// 纭鎿嶄綔
+/// @param date 鏃ユ湡NSDate
+/// @param dateStr 鏃ユ湡NSString
+/// @param target 鐢ㄤ簬鍖哄垎pickerView
+- (void)confirmActionWithDate:(NSDate *)date withDateString:(NSString *)dateStr withTarget:(NSInteger)target;
+
+@optional
+/// 鍙栨秷鎿嶄綔
+/// @param target 鐢ㄤ簬鍖哄垎pickerView
+- (void)cancelActionWithTarget:(NSInteger)target;
+
+/// 婊氬姩鎿嶄綔
+/// @param date 鏃ユ湡NSDate
+/// @param dateStr 鏃ユ湡NSString
+/// @param target 鐢ㄤ簬鍖哄垎pickerView
+- (void)scrollActionWithDate:(NSDate *)date withDateString:(NSString *)dateStr withTarget:(NSInteger)target;
+
+@end
+
+
+@interface FQDateTimePickerView : UIView
+/*----------------   UI  ------------------------*/
+/// 閬僵鑳屾櫙鑹�
+@property (nonatomic, strong) UIColor *maskBackgroundColor;
+
+/// 閫夋嫨鍣ㄨ儗鏅壊
+@property (nonatomic, strong) UIColor *pickerBackgroundColor;
+
+///纭畾鎸夐挳鏂囨湰
+@property (nonatomic, copy) NSString *confirmText;
+///纭畾鎸夐挳棰滆壊 榛樿black
+@property (nonatomic, strong) UIColor *confirmColor;
+///纭畾鎸夐挳瀛椾綋 榛樿绯荤粺18pt
+@property (nonatomic, strong) UIFont *confirmFont;
+
+///鍙栨秷鎸夐挳鏂囨湰
+@property (nonatomic, copy) NSString *cancelText;
+///鍙栨秷鎸夐挳棰滆壊 榛樿榛戣壊
+@property (nonatomic, strong) UIColor *cancelColor;
+///鍙栨秷鎸夐挳瀛椾綋 榛樿绯荤粺18pt
+@property (nonatomic, strong) UIFont *cancelFont;
+
+///鏍囬鏂囨湰 榛樿 ""
+@property (nonatomic, copy) NSString *title;
+///鏍囬棰滆壊 榛樿榛戣壊
+@property (nonatomic, strong) UIColor *titleColor;
+///鏍囬瀛椾綋 榛樿绯荤粺SFUI-Regular 16.00pt
+@property (nonatomic, strong) UIFont *titleFont;
+
+///婊氳疆鏃ユ湡鏂囨湰棰滆壊(榛樿black)
+@property (nonatomic, strong) UIColor *pickerColor;
+///婊氳疆鏃ユ湡鏂囨湰瀛椾綋[UIFont systemFontOfSize:16]
+@property (nonatomic, strong) UIFont *pickerFont;
+
+
+/*----------------   NSDate  ------------------------*/
+///闄愬埗鏈�澶ф椂闂�
+@property (nonatomic, strong) NSDate *maxDate;
+///闄愬埗鏈�灏忔椂闂�
+@property (nonatomic, strong) NSDate *minDate;
+///榛樿鏃堕棿 - - 榛樿褰撳墠鏃堕棿
+@property (nonatomic, strong) NSDate *defaultDate;
+/// 鍗曚綅锛氶粯璁@"骞�", @"鏈�", @"鏃�", @"鏃�", @"鍒�", @"绉�"]锛岃涓�涓�瀵瑰簲锛岃缃� unitsData = nil 鍙疆绌�
+@property (nonatomic, strong, null_unspecified) NSArray *unitsData;
+
+
+/*----------------   other  ------------------------*/
+/// Protocol
+@property (nonatomic, weak) id<FQDateTimePickerViewDelegate> delegate;
+
+/// 閫夋嫨鍣ㄧ殑鏋氫妇 榛樿FQDateTimePickerModelDate
+@property (nonatomic, assign) FQDateTimePickerModel pickerModel;
+
+/// pickerView鐨則ag  鐢ㄤ簬鍖哄垎鍥炶皟
+@property (nonatomic, assign) NSInteger target;
+
+/// 灞曠ず鍦╳indow涓婏紙璇峰湪灞曠ず涔嬪墠锛岃缃ソ闇�瑕佺殑灞炴�э級
+- (void)showPicker;
+
+/// 灞曠ず鍦╲iew涓婏紙璇峰湪灞曠ず涔嬪墠锛岃缃ソ闇�瑕佺殑灞炴�э級
+/// - Parameter view: <#view description#>
+- (void)showPickerInView:(UIView *)view;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/FQDateTimeSDK.framework/Headers/FQDateTimeSDK.h b/EZDemo/HDLEZDemo/FQDateTimeSDK.framework/Headers/FQDateTimeSDK.h
new file mode 100644
index 0000000..06c8307
--- /dev/null
+++ b/EZDemo/HDLEZDemo/FQDateTimeSDK.framework/Headers/FQDateTimeSDK.h
@@ -0,0 +1,18 @@
+//
+//  FQDateTimeSDK.h
+//  FQDateTimeSDK
+//
+//  Created by wuwuFQ on 2022/4/28.
+//
+
+#import <Foundation/Foundation.h>
+#import "FQDateTimePickerView.h"
+//! Project version number for FQDateTimeSDK.
+FOUNDATION_EXPORT double FQDateTimeSDKVersionNumber;
+
+//! Project version string for FQDateTimeSDK.
+FOUNDATION_EXPORT const unsigned char FQDateTimeSDKVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import <FQDateTimeSDK/PublicHeader.h>
+
+
diff --git a/EZDemo/HDLEZDemo/FQDateTimeSDK.framework/Info.plist b/EZDemo/HDLEZDemo/FQDateTimeSDK.framework/Info.plist
new file mode 100644
index 0000000..dc1ab4c
--- /dev/null
+++ b/EZDemo/HDLEZDemo/FQDateTimeSDK.framework/Info.plist
Binary files differ
diff --git a/EZDemo/HDLEZDemo/FQDateTimeSDK.framework/Modules/module.modulemap b/EZDemo/HDLEZDemo/FQDateTimeSDK.framework/Modules/module.modulemap
new file mode 100644
index 0000000..6f6d782
--- /dev/null
+++ b/EZDemo/HDLEZDemo/FQDateTimeSDK.framework/Modules/module.modulemap
@@ -0,0 +1,6 @@
+framework module FQDateTimeSDK {
+  umbrella header "FQDateTimeSDK.h"
+
+  export *
+  module * { export * }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo.xcodeproj/project.pbxproj b/EZDemo/HDLEZDemo/HDLEZDemo.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..6243df7
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo.xcodeproj/project.pbxproj
@@ -0,0 +1,875 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 55;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		AE31FE2129CC31F200678568 /* EZOpenSDKFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE31FE2029CC31F200678568 /* EZOpenSDKFramework.framework */; };
+		AE31FE2229CC321500678568 /* EZOpenSDKFramework.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = AE31FE2029CC31F200678568 /* EZOpenSDKFramework.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+		AEC1E3F429B6DDC200A00548 /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AEC1E3F329B6DDC200A00548 /* NetworkExtension.framework */; };
+		AEC1E3FE29B836D700A00548 /* AddDevice.strings in Resources */ = {isa = PBXBuildFile; fileRef = AEC1E3FA29B836D700A00548 /* AddDevice.strings */; };
+		AEC1E3FF29B836D700A00548 /* EZMain.strings in Resources */ = {isa = PBXBuildFile; fileRef = AEC1E3FC29B836D700A00548 /* EZMain.strings */; };
+		AEC1E40429B837C800A00548 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = AEC1E40229B837C800A00548 /* Localizable.strings */; };
+		AEC1E40529B839E700A00548 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = AEC1E40729B839E700A00548 /* Localizable.strings */; };
+		AEC1E40829B83A0E00A00548 /* EZMain.strings in Resources */ = {isa = PBXBuildFile; fileRef = AEC1E40A29B83A0E00A00548 /* EZMain.strings */; };
+		AEC1E40B29B83A1200A00548 /* AddDevice.strings in Resources */ = {isa = PBXBuildFile; fileRef = AEC1E40D29B83A1200A00548 /* AddDevice.strings */; };
+		AEDD94B529B04DD800EAA2CA /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDD94B429B04DD800EAA2CA /* AppDelegate.m */; };
+		AEDD94BB29B04DD800EAA2CA /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDD94BA29B04DD800EAA2CA /* ViewController.m */; };
+		AEDD94BE29B04DD800EAA2CA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AEDD94BC29B04DD800EAA2CA /* Main.storyboard */; };
+		AEDD94C129B04DD800EAA2CA /* HDLEZDemo.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = AEDD94BF29B04DD800EAA2CA /* HDLEZDemo.xcdatamodeld */; };
+		AEDD94C329B04DDA00EAA2CA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AEDD94C229B04DDA00EAA2CA /* Assets.xcassets */; };
+		AEDD94C629B04DDA00EAA2CA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AEDD94C429B04DDA00EAA2CA /* LaunchScreen.storyboard */; };
+		AEDD94C929B04DDA00EAA2CA /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDD94C829B04DDA00EAA2CA /* main.m */; };
+		AEDD950E29B04E4B00EAA2CA /* com.hri.hpc.mobile.ios.player.metallib in Resources */ = {isa = PBXBuildFile; fileRef = AEDD950929B04E4B00EAA2CA /* com.hri.hpc.mobile.ios.player.metallib */; };
+		AEDD951629B04EF200EAA2CA /* libEZSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AEDD951229B04EF100EAA2CA /* libEZSDK.a */; };
+		AEDD955229B0550500EAA2CA /* libsqlite3.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = AEDD955129B0550500EAA2CA /* libsqlite3.0.tbd */; };
+		AEDD955429B0551000EAA2CA /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AEDD955329B0551000EAA2CA /* CoreMedia.framework */; };
+		AEDD955629B0551D00EAA2CA /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AEDD955529B0551D00EAA2CA /* AudioToolbox.framework */; };
+		AEDD955829B0552400EAA2CA /* VideoToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AEDD955729B0552400EAA2CA /* VideoToolbox.framework */; };
+		AEDD955A29B0552E00EAA2CA /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AEDD955929B0552D00EAA2CA /* GLKit.framework */; };
+		AEDD955C29B0553600EAA2CA /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AEDD955B29B0553600EAA2CA /* OpenAL.framework */; };
+		AEDD955E29B0554300EAA2CA /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AEDD955D29B0554300EAA2CA /* MobileCoreServices.framework */; };
+		AEDD956029B0554A00EAA2CA /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AEDD955F29B0554A00EAA2CA /* AVFoundation.framework */; };
+		AEDD956229B0555400EAA2CA /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AEDD956129B0555400EAA2CA /* CoreTelephony.framework */; };
+		AEDD956429B0556000EAA2CA /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AEDD956329B0556000EAA2CA /* SystemConfiguration.framework */; };
+		AEDD956629B0557000EAA2CA /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = AEDD956529B0557000EAA2CA /* libc++.tbd */; };
+		AEDD956829B0557C00EAA2CA /* libiconv.2.4.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = AEDD956729B0557C00EAA2CA /* libiconv.2.4.0.tbd */; };
+		AEDD956A29B0558400EAA2CA /* libbz2.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = AEDD956929B0558400EAA2CA /* libbz2.tbd */; };
+		AEDD956C29B0558D00EAA2CA /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = AEDD956B29B0558D00EAA2CA /* libz.tbd */; };
+		AEDD957129B0650000EAA2CA /* EZSupportViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = AEDD956D29B0650000EAA2CA /* EZSupportViewController.xib */; };
+		AEDD957229B0650000EAA2CA /* EZVideoTalkViewcontroller.xib in Resources */ = {isa = PBXBuildFile; fileRef = AEDD956E29B0650000EAA2CA /* EZVideoTalkViewcontroller.xib */; };
+		AEDD957329B0650000EAA2CA /* AddDevice.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AEDD956F29B0650000EAA2CA /* AddDevice.storyboard */; };
+		AEDD957429B0650000EAA2CA /* EZMain.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AEDD957029B0650000EAA2CA /* EZMain.storyboard */; };
+		AEDD959029B0661400EAA2CA /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDD957829B0661400EAA2CA /* NSLayoutConstraint+MASDebugAdditions.m */; };
+		AEDD959129B0661400EAA2CA /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDD958129B0661400EAA2CA /* ViewController+MASAdditions.m */; };
+		AEDD959229B0661400EAA2CA /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDD958529B0661400EAA2CA /* MASCompositeConstraint.m */; };
+		AEDD959329B0661400EAA2CA /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDD958629B0661400EAA2CA /* MASConstraintMaker.m */; };
+		AEDD959429B0661400EAA2CA /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDD958729B0661400EAA2CA /* MASLayoutConstraint.m */; };
+		AEDD959529B0661400EAA2CA /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDD958829B0661400EAA2CA /* NSArray+MASAdditions.m */; };
+		AEDD959629B0661400EAA2CA /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDD958929B0661400EAA2CA /* View+MASAdditions.m */; };
+		AEDD959729B0661400EAA2CA /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDD958C29B0661400EAA2CA /* MASConstraint.m */; };
+		AEDD959829B0661400EAA2CA /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDD958E29B0661400EAA2CA /* MASViewConstraint.m */; };
+		AEDD959929B0661400EAA2CA /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = AEDD958F29B0661400EAA2CA /* MASViewAttribute.m */; };
+		AEE4704729C0460A00480163 /* FQDateTimeSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AEE4704629C0460A00480163 /* FQDateTimeSDK.framework */; };
+		AEE4704929C0464900480163 /* FQDateTimeSDK.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = AEE4704629C0460A00480163 /* FQDateTimeSDK.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+		AEF60D8629CAFFB30050AFFF /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AEF60D8429CAFFB30050AFFF /* libcrypto.a */; };
+		AEF60D8729CAFFB30050AFFF /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AEF60D8529CAFFB30050AFFF /* libssl.a */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		AEE4704829C0464400480163 /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 12;
+			dstPath = "";
+			dstSubfolderSpec = 10;
+			files = (
+				AE31FE2229CC321500678568 /* EZOpenSDKFramework.framework in CopyFiles */,
+				AEE4704929C0464900480163 /* FQDateTimeSDK.framework in CopyFiles */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		AE31FE2029CC31F200678568 /* EZOpenSDKFramework.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = EZOpenSDKFramework.framework; sourceTree = "<group>"; };
+		AEC1E3F329B6DDC200A00548 /* NetworkExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NetworkExtension.framework; path = System/Library/Frameworks/NetworkExtension.framework; sourceTree = SDKROOT; };
+		AEC1E3FB29B836D700A00548 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "../../../../../../HDL/EZOpenSDK/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/zh-Hans.lproj/AddDevice.strings"; sourceTree = "<group>"; };
+		AEC1E3FD29B836D700A00548 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "../../../../../../HDL/EZOpenSDK/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/zh-Hans.lproj/EZMain.strings"; sourceTree = "<group>"; };
+		AEC1E40329B837C800A00548 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "../../../../../../HDL/OnPro/HDL-ON_iOS/Resources/zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
+		AEC1E40629B839E700A00548 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
+		AEC1E40929B83A0E00A00548 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/EZMain.strings; sourceTree = "<group>"; };
+		AEC1E40C29B83A1200A00548 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/AddDevice.strings; sourceTree = "<group>"; };
+		AEDD94B029B04DD800EAA2CA /* HDLEZDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HDLEZDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		AEDD94B329B04DD800EAA2CA /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
+		AEDD94B429B04DD800EAA2CA /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
+		AEDD94B929B04DD800EAA2CA /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
+		AEDD94BA29B04DD800EAA2CA /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
+		AEDD94BD29B04DD800EAA2CA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
+		AEDD94C029B04DD800EAA2CA /* HDLEZDemo.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = HDLEZDemo.xcdatamodel; sourceTree = "<group>"; };
+		AEDD94C229B04DDA00EAA2CA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
+		AEDD94C529B04DDA00EAA2CA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
+		AEDD94C729B04DDA00EAA2CA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		AEDD94C829B04DDA00EAA2CA /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+		AEDD950929B04E4B00EAA2CA /* com.hri.hpc.mobile.ios.player.metallib */ = {isa = PBXFileReference; lastKnownFileType = "archive.metal-library"; path = com.hri.hpc.mobile.ios.player.metallib; sourceTree = "<group>"; };
+		AEDD951229B04EF100EAA2CA /* libEZSDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libEZSDK.a; sourceTree = "<group>"; };
+		AEDD951529B04EF200EAA2CA /* EZSDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZSDK.h; sourceTree = "<group>"; };
+		AEDD951829B0501C00EAA2CA /* EZConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZConstants.h; sourceTree = "<group>"; };
+		AEDD951929B0501C00EAA2CA /* EZHCNetDeviceSDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZHCNetDeviceSDK.h; sourceTree = "<group>"; };
+		AEDD951A29B0501C00EAA2CA /* EZStreamPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZStreamPlayer.h; sourceTree = "<group>"; };
+		AEDD951B29B0501C00EAA2CA /* EZOpenSDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZOpenSDK.h; sourceTree = "<group>"; };
+		AEDD951C29B0501C00EAA2CA /* EZConstants_Auth.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZConstants_Auth.h; sourceTree = "<group>"; };
+		AEDD951D29B0501C00EAA2CA /* EZPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZPlayer.h; sourceTree = "<group>"; };
+		AEDD951E29B0501C00EAA2CA /* EZGlobalSDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZGlobalSDK.h; sourceTree = "<group>"; };
+		AEDD952029B0501C00EAA2CA /* EZDeviceVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZDeviceVersion.h; sourceTree = "<group>"; };
+		AEDD952129B0501C00EAA2CA /* EZUserInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZUserInfo.h; sourceTree = "<group>"; };
+		AEDD952229B0501C00EAA2CA /* EZDeviceUpgradeStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZDeviceUpgradeStatus.h; sourceTree = "<group>"; };
+		AEDD952329B0501C00EAA2CA /* EZAccessToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAccessToken.h; sourceTree = "<group>"; };
+		AEDD952429B0501C00EAA2CA /* EZPlayerExParamInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZPlayerExParamInfo.h; sourceTree = "<group>"; };
+		AEDD952629B0501C00EAA2CA /* EZRTCCameraParam.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZRTCCameraParam.h; sourceTree = "<group>"; };
+		AEDD952729B0501C00EAA2CA /* EZRTCMediaSessionDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZRTCMediaSessionDefines.h; sourceTree = "<group>"; };
+		AEDD952829B0501C00EAA2CA /* EZVideoTalkSDKDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZVideoTalkSDKDefines.h; sourceTree = "<group>"; };
+		AEDD952929B0501C00EAA2CA /* EZVideoTalkView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZVideoTalkView.h; sourceTree = "<group>"; };
+		AEDD952A29B0501C00EAA2CA /* EZConferenceClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZConferenceClient.h; sourceTree = "<group>"; };
+		AEDD952B29B0501C00EAA2CA /* EZVideoTalkGlobal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZVideoTalkGlobal.h; sourceTree = "<group>"; };
+		AEDD952C29B0501C00EAA2CA /* EZVideoTalk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZVideoTalk.h; sourceTree = "<group>"; };
+		AEDD952D29B0501C00EAA2CA /* EZVideoTalkSDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZVideoTalkSDK.h; sourceTree = "<group>"; };
+		AEDD952E29B0501C00EAA2CA /* EZRTCSampleHandleManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZRTCSampleHandleManager.h; sourceTree = "<group>"; };
+		AEDD952F29B0501C00EAA2CA /* EZBAVParam.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZBAVParam.h; sourceTree = "<group>"; };
+		AEDD953029B0501C00EAA2CA /* EZRTCVideoEncodeParam.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZRTCVideoEncodeParam.h; sourceTree = "<group>"; };
+		AEDD953129B0501C00EAA2CA /* EZAPDevInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAPDevInfo.h; sourceTree = "<group>"; };
+		AEDD953229B0501C00EAA2CA /* EzvizWatchServerInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EzvizWatchServerInfo.h; sourceTree = "<group>"; };
+		AEDD953329B0501C00EAA2CA /* EZDeviceRecordDownloadTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZDeviceRecordDownloadTask.h; sourceTree = "<group>"; };
+		AEDD953429B0501C00EAA2CA /* EzvizRecordFileInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EzvizRecordFileInfo.h; sourceTree = "<group>"; };
+		AEDD953529B0501C00EAA2CA /* EZDeviceRecordFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZDeviceRecordFile.h; sourceTree = "<group>"; };
+		AEDD953629B0501C00EAA2CA /* EZLeaveMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZLeaveMessage.h; sourceTree = "<group>"; };
+		AEDD953729B0501C00EAA2CA /* EZWiFiItemInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZWiFiItemInfo.h; sourceTree = "<group>"; };
+		AEDD953829B0501C00EAA2CA /* EZRecordCoverFetcherManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZRecordCoverFetcherManager.h; sourceTree = "<group>"; };
+		AEDD953929B0501C00EAA2CA /* EZHiddnsDeviceInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZHiddnsDeviceInfo.h; sourceTree = "<group>"; };
+		AEDD953A29B0501C00EAA2CA /* Sadp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Sadp.h; sourceTree = "<group>"; };
+		AEDD953B29B0501C00EAA2CA /* EZDeviceInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZDeviceInfo.h; sourceTree = "<group>"; };
+		AEDD953C29B0501C00EAA2CA /* EZRecordDownloader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZRecordDownloader.h; sourceTree = "<group>"; };
+		AEDD953D29B0501C00EAA2CA /* EZRecordDownloadTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZRecordDownloadTask.h; sourceTree = "<group>"; };
+		AEDD953E29B0501C00EAA2CA /* EZVideoTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZVideoTransformer.h; sourceTree = "<group>"; };
+		AEDD953F29B0501C00EAA2CA /* EZTokenKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZTokenKit.h; sourceTree = "<group>"; };
+		AEDD954029B0501C00EAA2CA /* EZPMPlayPrivateTokenInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZPMPlayPrivateTokenInfo.h; sourceTree = "<group>"; };
+		AEDD954129B0501C00EAA2CA /* EZDetectorInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZDetectorInfo.h; sourceTree = "<group>"; };
+		AEDD954229B0501C00EAA2CA /* EZHCNetDeviceInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZHCNetDeviceInfo.h; sourceTree = "<group>"; };
+		AEDD954329B0501C00EAA2CA /* EZCameraInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZCameraInfo.h; sourceTree = "<group>"; };
+		AEDD954429B0501C00EAA2CA /* EZCloudRecordFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZCloudRecordFile.h; sourceTree = "<group>"; };
+		AEDD954529B0501C00EAA2CA /* EZCloudRecordDownloadTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZCloudRecordDownloadTask.h; sourceTree = "<group>"; };
+		AEDD954629B0501C00EAA2CA /* EZAreaInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAreaInfo.h; sourceTree = "<group>"; };
+		AEDD954729B0501C00EAA2CA /* EZProbeDeviceInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZProbeDeviceInfo.h; sourceTree = "<group>"; };
+		AEDD954829B0501C00EAA2CA /* EZDevicePtzAngleInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZDevicePtzAngleInfo.h; sourceTree = "<group>"; };
+		AEDD954929B0501C00EAA2CA /* EZDeviceCloudServiceInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZDeviceCloudServiceInfo.h; sourceTree = "<group>"; };
+		AEDD954A29B0501C00EAA2CA /* EZVideoQualityInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZVideoQualityInfo.h; sourceTree = "<group>"; };
+		AEDD954B29B0501C00EAA2CA /* EZAlarmInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZAlarmInfo.h; sourceTree = "<group>"; };
+		AEDD954C29B0501C00EAA2CA /* EZConfigTokenInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZConfigTokenInfo.h; sourceTree = "<group>"; };
+		AEDD954D29B0501C00EAA2CA /* EZSADPDeviceInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZSADPDeviceInfo.h; sourceTree = "<group>"; };
+		AEDD954E29B0501C00EAA2CA /* EZStorageInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZStorageInfo.h; sourceTree = "<group>"; };
+		AEDD954F29B0501C00EAA2CA /* EZConstants_WifiConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EZConstants_WifiConfig.h; sourceTree = "<group>"; };
+		AEDD955129B0550500EAA2CA /* libsqlite3.0.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.0.tbd; path = usr/lib/libsqlite3.0.tbd; sourceTree = SDKROOT; };
+		AEDD955329B0551000EAA2CA /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; };
+		AEDD955529B0551D00EAA2CA /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
+		AEDD955729B0552400EAA2CA /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; };
+		AEDD955929B0552D00EAA2CA /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; };
+		AEDD955B29B0553600EAA2CA /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; };
+		AEDD955D29B0554300EAA2CA /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; };
+		AEDD955F29B0554A00EAA2CA /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
+		AEDD956129B0555400EAA2CA /* CoreTelephony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreTelephony.framework; path = System/Library/Frameworks/CoreTelephony.framework; sourceTree = SDKROOT; };
+		AEDD956329B0556000EAA2CA /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
+		AEDD956529B0557000EAA2CA /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
+		AEDD956729B0557C00EAA2CA /* libiconv.2.4.0.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.2.4.0.tbd; path = usr/lib/libiconv.2.4.0.tbd; sourceTree = SDKROOT; };
+		AEDD956929B0558400EAA2CA /* libbz2.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libbz2.tbd; path = usr/lib/libbz2.tbd; sourceTree = SDKROOT; };
+		AEDD956B29B0558D00EAA2CA /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
+		AEDD956D29B0650000EAA2CA /* EZSupportViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = EZSupportViewController.xib; sourceTree = "<group>"; };
+		AEDD956E29B0650000EAA2CA /* EZVideoTalkViewcontroller.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = EZVideoTalkViewcontroller.xib; sourceTree = "<group>"; };
+		AEDD956F29B0650000EAA2CA /* AddDevice.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = AddDevice.storyboard; sourceTree = "<group>"; };
+		AEDD957029B0650000EAA2CA /* EZMain.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = EZMain.storyboard; sourceTree = "<group>"; };
+		AEDD957729B0661400EAA2CA /* MASCompositeConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MASCompositeConstraint.h; sourceTree = "<group>"; };
+		AEDD957829B0661400EAA2CA /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = "<group>"; };
+		AEDD957929B0661400EAA2CA /* MASConstraint+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MASConstraint+Private.h"; sourceTree = "<group>"; };
+		AEDD957A29B0661400EAA2CA /* MASLayoutConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MASLayoutConstraint.h; sourceTree = "<group>"; };
+		AEDD957B29B0661400EAA2CA /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+MASShorthandAdditions.h"; sourceTree = "<group>"; };
+		AEDD957C29B0661400EAA2CA /* MASConstraintMaker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MASConstraintMaker.h; sourceTree = "<group>"; };
+		AEDD957D29B0661400EAA2CA /* View+MASAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "View+MASAdditions.h"; sourceTree = "<group>"; };
+		AEDD957E29B0661400EAA2CA /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+MASAdditions.h"; sourceTree = "<group>"; };
+		AEDD957F29B0661400EAA2CA /* MASUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MASUtilities.h; sourceTree = "<group>"; };
+		AEDD958029B0661400EAA2CA /* MASViewAttribute.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MASViewAttribute.h; sourceTree = "<group>"; };
+		AEDD958129B0661400EAA2CA /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "ViewController+MASAdditions.m"; sourceTree = "<group>"; };
+		AEDD958229B0661400EAA2CA /* MASViewConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MASViewConstraint.h; sourceTree = "<group>"; };
+		AEDD958329B0661400EAA2CA /* MASConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MASConstraint.h; sourceTree = "<group>"; };
+		AEDD958429B0661400EAA2CA /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = "<group>"; };
+		AEDD958529B0661400EAA2CA /* MASCompositeConstraint.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MASCompositeConstraint.m; sourceTree = "<group>"; };
+		AEDD958629B0661400EAA2CA /* MASConstraintMaker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MASConstraintMaker.m; sourceTree = "<group>"; };
+		AEDD958729B0661400EAA2CA /* MASLayoutConstraint.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MASLayoutConstraint.m; sourceTree = "<group>"; };
+		AEDD958829B0661400EAA2CA /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSArray+MASAdditions.m"; sourceTree = "<group>"; };
+		AEDD958929B0661400EAA2CA /* View+MASAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "View+MASAdditions.m"; sourceTree = "<group>"; };
+		AEDD958A29B0661400EAA2CA /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "View+MASShorthandAdditions.h"; sourceTree = "<group>"; };
+		AEDD958B29B0661400EAA2CA /* Masonry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Masonry.h; sourceTree = "<group>"; };
+		AEDD958C29B0661400EAA2CA /* MASConstraint.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MASConstraint.m; sourceTree = "<group>"; };
+		AEDD958D29B0661400EAA2CA /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ViewController+MASAdditions.h"; sourceTree = "<group>"; };
+		AEDD958E29B0661400EAA2CA /* MASViewConstraint.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MASViewConstraint.m; sourceTree = "<group>"; };
+		AEDD958F29B0661400EAA2CA /* MASViewAttribute.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MASViewAttribute.m; sourceTree = "<group>"; };
+		AEDD959A29B06A3B00EAA2CA /* HDLEZDemo.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = HDLEZDemo.entitlements; sourceTree = "<group>"; };
+		AEE4704629C0460A00480163 /* FQDateTimeSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FQDateTimeSDK.framework; sourceTree = "<group>"; };
+		AEF60D8429CAFFB30050AFFF /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libcrypto.a; sourceTree = "<group>"; };
+		AEF60D8529CAFFB30050AFFF /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libssl.a; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		AEDD94AD29B04DD800EAA2CA /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				AEDD956C29B0558D00EAA2CA /* libz.tbd in Frameworks */,
+				AEDD956A29B0558400EAA2CA /* libbz2.tbd in Frameworks */,
+				AEDD956829B0557C00EAA2CA /* libiconv.2.4.0.tbd in Frameworks */,
+				AEDD956629B0557000EAA2CA /* libc++.tbd in Frameworks */,
+				AEDD956429B0556000EAA2CA /* SystemConfiguration.framework in Frameworks */,
+				AEDD956229B0555400EAA2CA /* CoreTelephony.framework in Frameworks */,
+				AEDD956029B0554A00EAA2CA /* AVFoundation.framework in Frameworks */,
+				AEDD955E29B0554300EAA2CA /* MobileCoreServices.framework in Frameworks */,
+				AEF60D8629CAFFB30050AFFF /* libcrypto.a in Frameworks */,
+				AEDD955C29B0553600EAA2CA /* OpenAL.framework in Frameworks */,
+				AEDD955A29B0552E00EAA2CA /* GLKit.framework in Frameworks */,
+				AEDD955829B0552400EAA2CA /* VideoToolbox.framework in Frameworks */,
+				AEE4704729C0460A00480163 /* FQDateTimeSDK.framework in Frameworks */,
+				AE31FE2129CC31F200678568 /* EZOpenSDKFramework.framework in Frameworks */,
+				AEDD955629B0551D00EAA2CA /* AudioToolbox.framework in Frameworks */,
+				AEC1E3F429B6DDC200A00548 /* NetworkExtension.framework in Frameworks */,
+				AEDD955429B0551000EAA2CA /* CoreMedia.framework in Frameworks */,
+				AEDD955229B0550500EAA2CA /* libsqlite3.0.tbd in Frameworks */,
+				AEF60D8729CAFFB30050AFFF /* libssl.a in Frameworks */,
+				AEDD951629B04EF200EAA2CA /* libEZSDK.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		AEC1E3F529B8367300A00548 /* resources */ = {
+			isa = PBXGroup;
+			children = (
+				AEC1E40729B839E700A00548 /* Localizable.strings */,
+				AEC1E40229B837C800A00548 /* Localizable.strings */,
+				AEC1E3FA29B836D700A00548 /* AddDevice.strings */,
+				AEC1E3FC29B836D700A00548 /* EZMain.strings */,
+				AEC1E40D29B83A1200A00548 /* AddDevice.strings */,
+				AEC1E40A29B83A0E00A00548 /* EZMain.strings */,
+			);
+			path = resources;
+			sourceTree = "<group>";
+		};
+		AEDD94A729B04DD800EAA2CA = {
+			isa = PBXGroup;
+			children = (
+				AEDD94B229B04DD800EAA2CA /* HDLEZDemo */,
+				AEDD94B129B04DD800EAA2CA /* Products */,
+				AEDD955029B0550500EAA2CA /* Frameworks */,
+			);
+			sourceTree = "<group>";
+		};
+		AEDD94B129B04DD800EAA2CA /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				AEDD94B029B04DD800EAA2CA /* HDLEZDemo.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		AEDD94B229B04DD800EAA2CA /* HDLEZDemo */ = {
+			isa = PBXGroup;
+			children = (
+				AEC1E3F529B8367300A00548 /* resources */,
+				AEDD959A29B06A3B00EAA2CA /* HDLEZDemo.entitlements */,
+				AEDD94CF29B04E4A00EAA2CA /* EZOpenSDK */,
+				AEDD94B329B04DD800EAA2CA /* AppDelegate.h */,
+				AEDD94B429B04DD800EAA2CA /* AppDelegate.m */,
+				AEDD94B929B04DD800EAA2CA /* ViewController.h */,
+				AEDD94BA29B04DD800EAA2CA /* ViewController.m */,
+				AEDD956F29B0650000EAA2CA /* AddDevice.storyboard */,
+				AEDD957029B0650000EAA2CA /* EZMain.storyboard */,
+				AEDD956D29B0650000EAA2CA /* EZSupportViewController.xib */,
+				AEDD956E29B0650000EAA2CA /* EZVideoTalkViewcontroller.xib */,
+				AEDD951329B04EF200EAA2CA /* include */,
+				AEDD951229B04EF100EAA2CA /* libEZSDK.a */,
+				AEDD94BC29B04DD800EAA2CA /* Main.storyboard */,
+				AEDD94C229B04DDA00EAA2CA /* Assets.xcassets */,
+				AEDD94C429B04DDA00EAA2CA /* LaunchScreen.storyboard */,
+				AEDD94C729B04DDA00EAA2CA /* Info.plist */,
+				AEDD94C829B04DDA00EAA2CA /* main.m */,
+				AEDD94BF29B04DD800EAA2CA /* HDLEZDemo.xcdatamodeld */,
+			);
+			path = HDLEZDemo;
+			sourceTree = "<group>";
+		};
+		AEDD94CF29B04E4A00EAA2CA /* EZOpenSDK */ = {
+			isa = PBXGroup;
+			children = (
+				AE31FE2029CC31F200678568 /* EZOpenSDKFramework.framework */,
+				AEF60D8329CAFFB30050AFFF /* openssl */,
+				AEDD957529B065D800EAA2CA /* ThirdParties */,
+				AEDD951729B0501C00EAA2CA /* include */,
+				AEDD950929B04E4B00EAA2CA /* com.hri.hpc.mobile.ios.player.metallib */,
+			);
+			path = EZOpenSDK;
+			sourceTree = "<group>";
+		};
+		AEDD951329B04EF200EAA2CA /* include */ = {
+			isa = PBXGroup;
+			children = (
+				AEDD951429B04EF200EAA2CA /* EZSDK */,
+			);
+			path = include;
+			sourceTree = "<group>";
+		};
+		AEDD951429B04EF200EAA2CA /* EZSDK */ = {
+			isa = PBXGroup;
+			children = (
+				AEDD951529B04EF200EAA2CA /* EZSDK.h */,
+			);
+			path = EZSDK;
+			sourceTree = "<group>";
+		};
+		AEDD951729B0501C00EAA2CA /* include */ = {
+			isa = PBXGroup;
+			children = (
+				AEDD951829B0501C00EAA2CA /* EZConstants.h */,
+				AEDD951929B0501C00EAA2CA /* EZHCNetDeviceSDK.h */,
+				AEDD951A29B0501C00EAA2CA /* EZStreamPlayer.h */,
+				AEDD951B29B0501C00EAA2CA /* EZOpenSDK.h */,
+				AEDD951C29B0501C00EAA2CA /* EZConstants_Auth.h */,
+				AEDD951D29B0501C00EAA2CA /* EZPlayer.h */,
+				AEDD951E29B0501C00EAA2CA /* EZGlobalSDK.h */,
+				AEDD951F29B0501C00EAA2CA /* modules */,
+				AEDD954F29B0501C00EAA2CA /* EZConstants_WifiConfig.h */,
+			);
+			path = include;
+			sourceTree = "<group>";
+		};
+		AEDD951F29B0501C00EAA2CA /* modules */ = {
+			isa = PBXGroup;
+			children = (
+				AEDD952029B0501C00EAA2CA /* EZDeviceVersion.h */,
+				AEDD952129B0501C00EAA2CA /* EZUserInfo.h */,
+				AEDD952229B0501C00EAA2CA /* EZDeviceUpgradeStatus.h */,
+				AEDD952329B0501C00EAA2CA /* EZAccessToken.h */,
+				AEDD952429B0501C00EAA2CA /* EZPlayerExParamInfo.h */,
+				AEDD952529B0501C00EAA2CA /* EZVideoTalk */,
+				AEDD953129B0501C00EAA2CA /* EZAPDevInfo.h */,
+				AEDD953229B0501C00EAA2CA /* EzvizWatchServerInfo.h */,
+				AEDD953329B0501C00EAA2CA /* EZDeviceRecordDownloadTask.h */,
+				AEDD953429B0501C00EAA2CA /* EzvizRecordFileInfo.h */,
+				AEDD953529B0501C00EAA2CA /* EZDeviceRecordFile.h */,
+				AEDD953629B0501C00EAA2CA /* EZLeaveMessage.h */,
+				AEDD953729B0501C00EAA2CA /* EZWiFiItemInfo.h */,
+				AEDD953829B0501C00EAA2CA /* EZRecordCoverFetcherManager.h */,
+				AEDD953929B0501C00EAA2CA /* EZHiddnsDeviceInfo.h */,
+				AEDD953A29B0501C00EAA2CA /* Sadp.h */,
+				AEDD953B29B0501C00EAA2CA /* EZDeviceInfo.h */,
+				AEDD953C29B0501C00EAA2CA /* EZRecordDownloader.h */,
+				AEDD953D29B0501C00EAA2CA /* EZRecordDownloadTask.h */,
+				AEDD953E29B0501C00EAA2CA /* EZVideoTransformer.h */,
+				AEDD953F29B0501C00EAA2CA /* EZTokenKit.h */,
+				AEDD954029B0501C00EAA2CA /* EZPMPlayPrivateTokenInfo.h */,
+				AEDD954129B0501C00EAA2CA /* EZDetectorInfo.h */,
+				AEDD954229B0501C00EAA2CA /* EZHCNetDeviceInfo.h */,
+				AEDD954329B0501C00EAA2CA /* EZCameraInfo.h */,
+				AEDD954429B0501C00EAA2CA /* EZCloudRecordFile.h */,
+				AEDD954529B0501C00EAA2CA /* EZCloudRecordDownloadTask.h */,
+				AEDD954629B0501C00EAA2CA /* EZAreaInfo.h */,
+				AEDD954729B0501C00EAA2CA /* EZProbeDeviceInfo.h */,
+				AEDD954829B0501C00EAA2CA /* EZDevicePtzAngleInfo.h */,
+				AEDD954929B0501C00EAA2CA /* EZDeviceCloudServiceInfo.h */,
+				AEDD954A29B0501C00EAA2CA /* EZVideoQualityInfo.h */,
+				AEDD954B29B0501C00EAA2CA /* EZAlarmInfo.h */,
+				AEDD954C29B0501C00EAA2CA /* EZConfigTokenInfo.h */,
+				AEDD954D29B0501C00EAA2CA /* EZSADPDeviceInfo.h */,
+				AEDD954E29B0501C00EAA2CA /* EZStorageInfo.h */,
+			);
+			path = modules;
+			sourceTree = "<group>";
+		};
+		AEDD952529B0501C00EAA2CA /* EZVideoTalk */ = {
+			isa = PBXGroup;
+			children = (
+				AEDD952629B0501C00EAA2CA /* EZRTCCameraParam.h */,
+				AEDD952729B0501C00EAA2CA /* EZRTCMediaSessionDefines.h */,
+				AEDD952829B0501C00EAA2CA /* EZVideoTalkSDKDefines.h */,
+				AEDD952929B0501C00EAA2CA /* EZVideoTalkView.h */,
+				AEDD952A29B0501C00EAA2CA /* EZConferenceClient.h */,
+				AEDD952B29B0501C00EAA2CA /* EZVideoTalkGlobal.h */,
+				AEDD952C29B0501C00EAA2CA /* EZVideoTalk.h */,
+				AEDD952D29B0501C00EAA2CA /* EZVideoTalkSDK.h */,
+				AEDD952E29B0501C00EAA2CA /* EZRTCSampleHandleManager.h */,
+				AEDD952F29B0501C00EAA2CA /* EZBAVParam.h */,
+				AEDD953029B0501C00EAA2CA /* EZRTCVideoEncodeParam.h */,
+			);
+			path = EZVideoTalk;
+			sourceTree = "<group>";
+		};
+		AEDD955029B0550500EAA2CA /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				AEE4704629C0460A00480163 /* FQDateTimeSDK.framework */,
+				AEC1E3F329B6DDC200A00548 /* NetworkExtension.framework */,
+				AEDD956B29B0558D00EAA2CA /* libz.tbd */,
+				AEDD956929B0558400EAA2CA /* libbz2.tbd */,
+				AEDD956729B0557C00EAA2CA /* libiconv.2.4.0.tbd */,
+				AEDD956529B0557000EAA2CA /* libc++.tbd */,
+				AEDD956329B0556000EAA2CA /* SystemConfiguration.framework */,
+				AEDD956129B0555400EAA2CA /* CoreTelephony.framework */,
+				AEDD955F29B0554A00EAA2CA /* AVFoundation.framework */,
+				AEDD955D29B0554300EAA2CA /* MobileCoreServices.framework */,
+				AEDD955B29B0553600EAA2CA /* OpenAL.framework */,
+				AEDD955929B0552D00EAA2CA /* GLKit.framework */,
+				AEDD955729B0552400EAA2CA /* VideoToolbox.framework */,
+				AEDD955529B0551D00EAA2CA /* AudioToolbox.framework */,
+				AEDD955329B0551000EAA2CA /* CoreMedia.framework */,
+				AEDD955129B0550500EAA2CA /* libsqlite3.0.tbd */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		AEDD957529B065D800EAA2CA /* ThirdParties */ = {
+			isa = PBXGroup;
+			children = (
+				AEDD957629B0661400EAA2CA /* Masonry */,
+			);
+			path = ThirdParties;
+			sourceTree = "<group>";
+		};
+		AEDD957629B0661400EAA2CA /* Masonry */ = {
+			isa = PBXGroup;
+			children = (
+				AEDD957729B0661400EAA2CA /* MASCompositeConstraint.h */,
+				AEDD957829B0661400EAA2CA /* NSLayoutConstraint+MASDebugAdditions.m */,
+				AEDD957929B0661400EAA2CA /* MASConstraint+Private.h */,
+				AEDD957A29B0661400EAA2CA /* MASLayoutConstraint.h */,
+				AEDD957B29B0661400EAA2CA /* NSArray+MASShorthandAdditions.h */,
+				AEDD957C29B0661400EAA2CA /* MASConstraintMaker.h */,
+				AEDD957D29B0661400EAA2CA /* View+MASAdditions.h */,
+				AEDD957E29B0661400EAA2CA /* NSArray+MASAdditions.h */,
+				AEDD957F29B0661400EAA2CA /* MASUtilities.h */,
+				AEDD958029B0661400EAA2CA /* MASViewAttribute.h */,
+				AEDD958129B0661400EAA2CA /* ViewController+MASAdditions.m */,
+				AEDD958229B0661400EAA2CA /* MASViewConstraint.h */,
+				AEDD958329B0661400EAA2CA /* MASConstraint.h */,
+				AEDD958429B0661400EAA2CA /* NSLayoutConstraint+MASDebugAdditions.h */,
+				AEDD958529B0661400EAA2CA /* MASCompositeConstraint.m */,
+				AEDD958629B0661400EAA2CA /* MASConstraintMaker.m */,
+				AEDD958729B0661400EAA2CA /* MASLayoutConstraint.m */,
+				AEDD958829B0661400EAA2CA /* NSArray+MASAdditions.m */,
+				AEDD958929B0661400EAA2CA /* View+MASAdditions.m */,
+				AEDD958A29B0661400EAA2CA /* View+MASShorthandAdditions.h */,
+				AEDD958B29B0661400EAA2CA /* Masonry.h */,
+				AEDD958C29B0661400EAA2CA /* MASConstraint.m */,
+				AEDD958D29B0661400EAA2CA /* ViewController+MASAdditions.h */,
+				AEDD958E29B0661400EAA2CA /* MASViewConstraint.m */,
+				AEDD958F29B0661400EAA2CA /* MASViewAttribute.m */,
+			);
+			path = Masonry;
+			sourceTree = "<group>";
+		};
+		AEF60D8329CAFFB30050AFFF /* openssl */ = {
+			isa = PBXGroup;
+			children = (
+				AEF60D8429CAFFB30050AFFF /* libcrypto.a */,
+				AEF60D8529CAFFB30050AFFF /* libssl.a */,
+			);
+			path = openssl;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		AEDD94AF29B04DD800EAA2CA /* HDLEZDemo */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = AEDD94CC29B04DDA00EAA2CA /* Build configuration list for PBXNativeTarget "HDLEZDemo" */;
+			buildPhases = (
+				AEDD94AC29B04DD800EAA2CA /* Sources */,
+				AEDD94AD29B04DD800EAA2CA /* Frameworks */,
+				AEDD94AE29B04DD800EAA2CA /* Resources */,
+				AEE4704829C0464400480163 /* CopyFiles */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = HDLEZDemo;
+			productName = HDLEZDemo;
+			productReference = AEDD94B029B04DD800EAA2CA /* HDLEZDemo.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		AEDD94A829B04DD800EAA2CA /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				BuildIndependentTargetsInParallel = 1;
+				LastUpgradeCheck = 1330;
+				TargetAttributes = {
+					AEDD94AF29B04DD800EAA2CA = {
+						CreatedOnToolsVersion = 13.3.1;
+					};
+				};
+			};
+			buildConfigurationList = AEDD94AB29B04DD800EAA2CA /* Build configuration list for PBXProject "HDLEZDemo" */;
+			compatibilityVersion = "Xcode 13.0";
+			developmentRegion = en;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+				Base,
+				"zh-Hans",
+			);
+			mainGroup = AEDD94A729B04DD800EAA2CA;
+			productRefGroup = AEDD94B129B04DD800EAA2CA /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				AEDD94AF29B04DD800EAA2CA /* HDLEZDemo */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		AEDD94AE29B04DD800EAA2CA /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				AEDD94C629B04DDA00EAA2CA /* LaunchScreen.storyboard in Resources */,
+				AEDD957329B0650000EAA2CA /* AddDevice.storyboard in Resources */,
+				AEDD950E29B04E4B00EAA2CA /* com.hri.hpc.mobile.ios.player.metallib in Resources */,
+				AEC1E40429B837C800A00548 /* Localizable.strings in Resources */,
+				AEDD957129B0650000EAA2CA /* EZSupportViewController.xib in Resources */,
+				AEC1E40B29B83A1200A00548 /* AddDevice.strings in Resources */,
+				AEC1E40829B83A0E00A00548 /* EZMain.strings in Resources */,
+				AEC1E3FE29B836D700A00548 /* AddDevice.strings in Resources */,
+				AEDD957429B0650000EAA2CA /* EZMain.storyboard in Resources */,
+				AEDD94C329B04DDA00EAA2CA /* Assets.xcassets in Resources */,
+				AEC1E40529B839E700A00548 /* Localizable.strings in Resources */,
+				AEDD94BE29B04DD800EAA2CA /* Main.storyboard in Resources */,
+				AEC1E3FF29B836D700A00548 /* EZMain.strings in Resources */,
+				AEDD957229B0650000EAA2CA /* EZVideoTalkViewcontroller.xib in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		AEDD94AC29B04DD800EAA2CA /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				AEDD94C929B04DDA00EAA2CA /* main.m in Sources */,
+				AEDD94BB29B04DD800EAA2CA /* ViewController.m in Sources */,
+				AEDD959429B0661400EAA2CA /* MASLayoutConstraint.m in Sources */,
+				AEDD94B529B04DD800EAA2CA /* AppDelegate.m in Sources */,
+				AEDD94C129B04DD800EAA2CA /* HDLEZDemo.xcdatamodeld in Sources */,
+				AEDD959929B0661400EAA2CA /* MASViewAttribute.m in Sources */,
+				AEDD959529B0661400EAA2CA /* NSArray+MASAdditions.m in Sources */,
+				AEDD959229B0661400EAA2CA /* MASCompositeConstraint.m in Sources */,
+				AEDD959329B0661400EAA2CA /* MASConstraintMaker.m in Sources */,
+				AEDD959629B0661400EAA2CA /* View+MASAdditions.m in Sources */,
+				AEDD959129B0661400EAA2CA /* ViewController+MASAdditions.m in Sources */,
+				AEDD959829B0661400EAA2CA /* MASViewConstraint.m in Sources */,
+				AEDD959029B0661400EAA2CA /* NSLayoutConstraint+MASDebugAdditions.m in Sources */,
+				AEDD959729B0661400EAA2CA /* MASConstraint.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+		AEC1E3FA29B836D700A00548 /* AddDevice.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				AEC1E3FB29B836D700A00548 /* zh-Hans */,
+			);
+			name = AddDevice.strings;
+			sourceTree = "<group>";
+		};
+		AEC1E3FC29B836D700A00548 /* EZMain.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				AEC1E3FD29B836D700A00548 /* zh-Hans */,
+			);
+			name = EZMain.strings;
+			sourceTree = "<group>";
+		};
+		AEC1E40229B837C800A00548 /* Localizable.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				AEC1E40329B837C800A00548 /* zh-Hans */,
+			);
+			name = Localizable.strings;
+			sourceTree = "<group>";
+		};
+		AEC1E40729B839E700A00548 /* Localizable.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				AEC1E40629B839E700A00548 /* en */,
+			);
+			name = Localizable.strings;
+			sourceTree = "<group>";
+		};
+		AEC1E40A29B83A0E00A00548 /* EZMain.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				AEC1E40929B83A0E00A00548 /* en */,
+			);
+			name = EZMain.strings;
+			sourceTree = "<group>";
+		};
+		AEC1E40D29B83A1200A00548 /* AddDevice.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				AEC1E40C29B83A1200A00548 /* en */,
+			);
+			name = AddDevice.strings;
+			sourceTree = "<group>";
+		};
+		AEDD94BC29B04DD800EAA2CA /* Main.storyboard */ = {
+			isa = PBXVariantGroup;
+			children = (
+				AEDD94BD29B04DD800EAA2CA /* Base */,
+			);
+			name = Main.storyboard;
+			sourceTree = "<group>";
+		};
+		AEDD94C429B04DDA00EAA2CA /* LaunchScreen.storyboard */ = {
+			isa = PBXVariantGroup;
+			children = (
+				AEDD94C529B04DDA00EAA2CA /* Base */,
+			);
+			name = LaunchScreen.storyboard;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		AEDD94CA29B04DDA00EAA2CA /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_ENABLE_OBJC_WEAK = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 15.4;
+				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+				MTL_FAST_MATH = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = iphoneos;
+			};
+			name = Debug;
+		};
+		AEDD94CB29B04DDA00EAA2CA /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_ENABLE_OBJC_WEAK = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 15.4;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				MTL_FAST_MATH = YES;
+				SDKROOT = iphoneos;
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+		AEDD94CD29B04DDA00EAA2CA /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+				CODE_SIGN_ENTITLEMENTS = HDLEZDemo/HDLEZDemo.entitlements;
+				CODE_SIGN_STYLE = Automatic;
+				CURRENT_PROJECT_VERSION = 1;
+				DEVELOPMENT_TEAM = BVTA78PRYA;
+				ENABLE_BITCODE = NO;
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)",
+					"$(PROJECT_DIR)/HDLEZDemo/EZOpenSDK",
+				);
+				GENERATE_INFOPLIST_FILE = YES;
+				INFOPLIST_FILE = HDLEZDemo/Info.plist;
+				INFOPLIST_KEY_NSCameraUsageDescription = "璁块棶鎽勫儚澶�";
+				INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "闇�瑕佷娇鐢ㄥ畾浣嶆潈闄愮敤浜巜ifi閰嶇綉";
+				INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "闇�瑕佷娇鐢ㄥ畾浣嶆潈闄愮敤浜巜ifi閰嶇綉";
+				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
+				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
+				INFOPLIST_KEY_UIMainStoryboardFile = Main;
+				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+				IPHONEOS_DEPLOYMENT_TARGET = 9.1;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+				);
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/HDLEZDemo/EZOpenSDK",
+					"$(PROJECT_DIR)/HDLEZDemo/EZOpenSDK/openssl",
+					"$(PROJECT_DIR)/HDLEZDemo",
+				);
+				MARKETING_VERSION = 1.0;
+				OTHER_LDFLAGS = "-ObjC";
+				PRODUCT_BUNDLE_IDENTIFIER = com.hdl.onpro1;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_EMIT_LOC_STRINGS = YES;
+				TARGETED_DEVICE_FAMILY = "1,2";
+				VALIDATE_WORKSPACE = YES;
+			};
+			name = Debug;
+		};
+		AEDD94CE29B04DDA00EAA2CA /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+				CODE_SIGN_ENTITLEMENTS = HDLEZDemo/HDLEZDemo.entitlements;
+				CODE_SIGN_STYLE = Automatic;
+				CURRENT_PROJECT_VERSION = 1;
+				DEVELOPMENT_TEAM = BVTA78PRYA;
+				ENABLE_BITCODE = NO;
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)",
+					"$(PROJECT_DIR)/HDLEZDemo/EZOpenSDK",
+				);
+				GENERATE_INFOPLIST_FILE = YES;
+				INFOPLIST_FILE = HDLEZDemo/Info.plist;
+				INFOPLIST_KEY_NSCameraUsageDescription = "璁块棶鎽勫儚澶�";
+				INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "闇�瑕佷娇鐢ㄥ畾浣嶆潈闄愮敤浜巜ifi閰嶇綉";
+				INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "闇�瑕佷娇鐢ㄥ畾浣嶆潈闄愮敤浜巜ifi閰嶇綉";
+				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
+				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
+				INFOPLIST_KEY_UIMainStoryboardFile = Main;
+				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+				IPHONEOS_DEPLOYMENT_TARGET = 9.1;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+				);
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/HDLEZDemo/EZOpenSDK",
+					"$(PROJECT_DIR)/HDLEZDemo/EZOpenSDK/openssl",
+					"$(PROJECT_DIR)/HDLEZDemo",
+				);
+				MARKETING_VERSION = 1.0;
+				OTHER_LDFLAGS = "-ObjC";
+				PRODUCT_BUNDLE_IDENTIFIER = com.hdl.onpro1;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_EMIT_LOC_STRINGS = YES;
+				TARGETED_DEVICE_FAMILY = "1,2";
+				VALIDATE_WORKSPACE = YES;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		AEDD94AB29B04DD800EAA2CA /* Build configuration list for PBXProject "HDLEZDemo" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				AEDD94CA29B04DDA00EAA2CA /* Debug */,
+				AEDD94CB29B04DDA00EAA2CA /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		AEDD94CC29B04DDA00EAA2CA /* Build configuration list for PBXNativeTarget "HDLEZDemo" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				AEDD94CD29B04DDA00EAA2CA /* Debug */,
+				AEDD94CE29B04DDA00EAA2CA /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+
+/* Begin XCVersionGroup section */
+		AEDD94BF29B04DD800EAA2CA /* HDLEZDemo.xcdatamodeld */ = {
+			isa = XCVersionGroup;
+			children = (
+				AEDD94C029B04DD800EAA2CA /* HDLEZDemo.xcdatamodel */,
+			);
+			currentVersion = AEDD94C029B04DD800EAA2CA /* HDLEZDemo.xcdatamodel */;
+			path = HDLEZDemo.xcdatamodeld;
+			sourceTree = "<group>";
+			versionGroupType = wrapper.xcdatamodel;
+		};
+/* End XCVersionGroup section */
+	};
+	rootObject = AEDD94A829B04DD800EAA2CA /* Project object */;
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/EZDemo/HDLEZDemo/HDLEZDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..919434a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+   version = "1.0">
+   <FileRef
+      location = "self:">
+   </FileRef>
+</Workspace>
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/EZDemo/HDLEZDemo/HDLEZDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IDEDidComputeMac32BitWarning</key>
+	<true/>
+</dict>
+</plist>
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/AddDevice.storyboard b/EZDemo/HDLEZDemo/HDLEZDemo/AddDevice.storyboard
new file mode 100644
index 0000000..184fdf3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/AddDevice.storyboard
@@ -0,0 +1,1009 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="1Qq-y9-5Vr">
+    <device id="retina4_7" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <scenes>
+        <!--Navigation Controller-->
+        <scene sceneID="xR2-yX-M1N">
+            <objects>
+                <navigationController id="1Qq-y9-5Vr" sceneMemberID="viewController">
+                    <navigationBar key="navigationBar" contentMode="scaleToFill" id="HjS-88-zNd">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
+                        <autoresizingMask key="autoresizingMask"/>
+                    </navigationBar>
+                    <connections>
+                        <segue destination="ENY-lt-T99" kind="relationship" relationship="rootViewController" id="XbR-Et-qQ9"/>
+                    </connections>
+                </navigationController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="gEG-Ir-rVM" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-436.23188405797106" y="205.58035714285714"/>
+        </scene>
+        <!--Add ByQR Code View Controller-->
+        <scene sceneID="eiB-Il-l42">
+            <objects>
+                <viewController storyboardIdentifier="AddByQRCode" id="ENY-lt-T99" customClass="EZAddByQRCodeViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="HtS-K5-WDq"/>
+                        <viewControllerLayoutGuide type="bottom" id="qZG-TK-dZc"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="LGu-xi-7os">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="j2X-TO-2vj" customClass="EZQRView">
+                                <rect key="frame" x="0.0" y="44" width="375" height="623"/>
+                                <subviews>
+                                    <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="qr_scan_line" translatesAutoresizingMaskIntoConstraints="NO" id="i1a-Yx-mmW">
+                                        <rect key="frame" x="77.5" y="150" width="220" height="6"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="6" id="lmj-DU-Gbq"/>
+                                            <constraint firstAttribute="width" constant="220" id="z1o-th-eJT"/>
+                                        </constraints>
+                                    </imageView>
+                                    <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="SAq-8X-VZA">
+                                        <rect key="frame" x="22" y="566" width="64" height="30"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="64" id="0id-Ux-Cgq"/>
+                                            <constraint firstAttribute="height" constant="30" id="qZz-ZY-D4V"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                        <state key="normal" image="open"/>
+                                        <state key="selected" image="close"/>
+                                        <connections>
+                                            <action selector="torchButtonClicked:" destination="ENY-lt-T99" eventType="touchUpInside" id="HP5-g7-afv"/>
+                                        </connections>
+                                    </button>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="璁惧浜岀淮鐮�" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jzO-DN-MQp">
+                                        <rect key="frame" x="87.5" y="409" width="200" height="21"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="21" id="QXL-HS-ZT7"/>
+                                            <constraint firstAttribute="width" constant="200" id="ezZ-9o-YbC"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                        <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                </subviews>
+                                <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.23643369932432431" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstItem="i1a-Yx-mmW" firstAttribute="centerX" secondItem="j2X-TO-2vj" secondAttribute="centerX" id="CWN-0b-URC"/>
+                                    <constraint firstItem="SAq-8X-VZA" firstAttribute="leading" secondItem="j2X-TO-2vj" secondAttribute="leading" constant="22" id="Ju7-z9-LRh"/>
+                                    <constraint firstItem="SAq-8X-VZA" firstAttribute="top" secondItem="jzO-DN-MQp" secondAttribute="bottom" constant="136" id="V4d-rQ-Bna"/>
+                                    <constraint firstItem="i1a-Yx-mmW" firstAttribute="top" secondItem="j2X-TO-2vj" secondAttribute="top" constant="150" id="emC-sh-dOF"/>
+                                    <constraint firstAttribute="bottom" secondItem="SAq-8X-VZA" secondAttribute="bottom" constant="27" id="ne0-Z1-lZa"/>
+                                    <constraint firstItem="jzO-DN-MQp" firstAttribute="centerX" secondItem="j2X-TO-2vj" secondAttribute="centerX" id="y9q-eq-dG9"/>
+                                </constraints>
+                                <userDefinedRuntimeAttributes>
+                                    <userDefinedRuntimeAttribute type="size" keyPath="clearSize">
+                                        <size key="value" width="240" height="240"/>
+                                    </userDefinedRuntimeAttribute>
+                                </userDefinedRuntimeAttributes>
+                            </view>
+                            <activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" style="white" translatesAutoresizingMaskIntoConstraints="NO" id="1wk-2c-E9P">
+                                <rect key="frame" x="177.5" y="323.5" width="20" height="20"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="20" id="39O-vJ-rat"/>
+                                    <constraint firstAttribute="width" constant="20" id="HAm-QG-yrN"/>
+                                </constraints>
+                            </activityIndicatorView>
+                        </subviews>
+                        <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstItem="j2X-TO-2vj" firstAttribute="leading" secondItem="LGu-xi-7os" secondAttribute="leading" id="EKa-2X-FLI"/>
+                            <constraint firstItem="1wk-2c-E9P" firstAttribute="centerX" secondItem="LGu-xi-7os" secondAttribute="centerX" id="POi-4Q-XnH"/>
+                            <constraint firstItem="j2X-TO-2vj" firstAttribute="top" secondItem="HtS-K5-WDq" secondAttribute="bottom" id="QxS-Oy-vRu"/>
+                            <constraint firstItem="1wk-2c-E9P" firstAttribute="centerY" secondItem="LGu-xi-7os" secondAttribute="centerY" id="VAB-8L-bMm"/>
+                            <constraint firstItem="qZG-TK-dZc" firstAttribute="top" secondItem="j2X-TO-2vj" secondAttribute="bottom" id="iLb-27-rKx"/>
+                            <constraint firstAttribute="trailing" secondItem="j2X-TO-2vj" secondAttribute="trailing" id="wqP-Et-DZ4"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="6g9-xu-icN">
+                        <barButtonItem key="rightBarButtonItem" systemItem="compose" id="FpM-w9-smg">
+                            <connections>
+                                <action selector="nextAction:" destination="ENY-lt-T99" id="eED-cY-QEb"/>
+                            </connections>
+                        </barButtonItem>
+                    </navigationItem>
+                    <connections>
+                        <outlet property="activityView" destination="1wk-2c-E9P" id="C3r-9t-tF0"/>
+                        <outlet property="lineImageView" destination="i1a-Yx-mmW" id="PLq-di-DBJ"/>
+                        <outlet property="qrView" destination="j2X-TO-2vj" id="tun-pW-wo8"/>
+                        <outlet property="tipsLabel" destination="jzO-DN-MQp" id="hae-XW-Ubz"/>
+                        <outlet property="torchButton" destination="SAq-8X-VZA" id="igB-sz-7TG"/>
+                        <segue destination="6Kk-DZ-6cc" kind="push" identifier="go2InputSerial" id="Zwz-Ic-fFq"/>
+                        <segue destination="YZf-9t-ph4" kind="push" identifier="go2Result" id="VYk-37-nb6"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="8RX-tm-fvu" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="242.0289855072464" y="205.58035714285714"/>
+        </scene>
+        <!--Input Serial View Controller-->
+        <scene sceneID="cKp-cf-FON">
+            <objects>
+                <viewController id="6Kk-DZ-6cc" customClass="EZInputSerialViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="Ly5-ni-QU6"/>
+                        <viewControllerLayoutGuide type="bottom" id="rsb-cS-Z8q"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="1Au-Se-T1v">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="璁惧鏈鸿韩涓婄殑9浣嶅簭鍒楀彿" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="bPa-tw-WRa">
+                                <rect key="frame" x="0.0" y="84" width="375" height="40"/>
+                                <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="40" id="vLh-9U-8RO"/>
+                                </constraints>
+                                <color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <textInputTraits key="textInputTraits" keyboardType="alphabet"/>
+                                <connections>
+                                    <outlet property="delegate" destination="6Kk-DZ-6cc" id="V3R-96-sz1"/>
+                                </connections>
+                            </textField>
+                            <button opaque="NO" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hA9-0Y-3Qf">
+                                <rect key="frame" x="45" y="230" width="285" height="39"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="285" id="3Bl-Kc-5H6"/>
+                                    <constraint firstAttribute="height" constant="39" id="Qay-ur-1py"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                <state key="normal" title="涓嬩竴姝�" backgroundImage="blue_button"/>
+                                <connections>
+                                    <action selector="go2Result:" destination="6Kk-DZ-6cc" eventType="touchUpInside" id="UfU-Wv-DcP"/>
+                                </connections>
+                            </button>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="楠岃瘉鐮�" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="j8t-kq-eaK">
+                                <rect key="frame" x="0.0" y="150" width="375" height="40"/>
+                                <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="40" id="DjM-dg-5en"/>
+                                </constraints>
+                                <color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <textInputTraits key="textInputTraits" keyboardType="alphabet"/>
+                                <connections>
+                                    <outlet property="delegate" destination="6Kk-DZ-6cc" id="njW-Ua-9DF"/>
+                                </connections>
+                            </textField>
+                        </subviews>
+                        <color key="backgroundColor" red="0.8980392157" green="0.89411764709999997" blue="0.92156862750000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstItem="bPa-tw-WRa" firstAttribute="leading" secondItem="1Au-Se-T1v" secondAttribute="leading" id="3Qc-qL-acb"/>
+                            <constraint firstItem="j8t-kq-eaK" firstAttribute="top" secondItem="bPa-tw-WRa" secondAttribute="bottom" constant="26" id="HCU-tS-J3n"/>
+                            <constraint firstItem="hA9-0Y-3Qf" firstAttribute="top" secondItem="j8t-kq-eaK" secondAttribute="bottom" constant="40" id="J9f-la-VNg"/>
+                            <constraint firstAttribute="trailing" secondItem="j8t-kq-eaK" secondAttribute="trailing" id="P8R-0d-zIb"/>
+                            <constraint firstItem="j8t-kq-eaK" firstAttribute="leading" secondItem="1Au-Se-T1v" secondAttribute="leading" id="UTW-oL-AH0"/>
+                            <constraint firstItem="bPa-tw-WRa" firstAttribute="top" secondItem="Ly5-ni-QU6" secondAttribute="bottom" constant="40" id="Z1R-zI-Db1"/>
+                            <constraint firstAttribute="trailing" secondItem="bPa-tw-WRa" secondAttribute="trailing" id="e8k-Mv-aw6"/>
+                            <constraint firstItem="hA9-0Y-3Qf" firstAttribute="centerX" secondItem="1Au-Se-T1v" secondAttribute="centerX" id="fpM-LI-lRg"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="cg6-M0-qsE"/>
+                    <connections>
+                        <outlet property="nextButton" destination="hA9-0Y-3Qf" id="lLV-yf-6lb"/>
+                        <outlet property="serialTextField" destination="bPa-tw-WRa" id="rZ7-ss-RWE"/>
+                        <outlet property="verifyCodeTextField" destination="j8t-kq-eaK" id="fGb-Ba-gwT"/>
+                        <segue destination="YZf-9t-ph4" kind="push" identifier="go2InputResult" id="ikM-Zn-H8f"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="EkG-li-8z1" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="990" y="-23"/>
+        </scene>
+        <!--Device Result View Controller-->
+        <scene sceneID="cpl-gC-v1b">
+            <objects>
+                <viewController id="YZf-9t-ph4" customClass="EZDeviceResultViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="Dn9-Jz-niK"/>
+                        <viewControllerLayoutGuide type="bottom" id="h2r-ay-nrg"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="M8L-ay-M8z">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="results_pic_bg" translatesAutoresizingMaskIntoConstraints="NO" id="ceg-ex-Xdb">
+                                <rect key="frame" x="100" y="79" width="175" height="165"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="165" id="lgW-5o-AFb"/>
+                                    <constraint firstAttribute="width" constant="175" id="n8A-cf-RRp"/>
+                                </constraints>
+                            </imageView>
+                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="4Br-8g-Y1F">
+                                <rect key="frame" x="112.5" y="79" width="150" height="165"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="150" id="32c-C2-vw1"/>
+                                    <constraint firstAttribute="height" constant="165" id="u24-jh-18u"/>
+                                </constraints>
+                            </imageView>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Qbm-8l-KeG">
+                                <rect key="frame" x="45" y="332" width="285" height="39"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="285" id="B7i-jI-Zax"/>
+                                    <constraint firstAttribute="height" constant="39" id="z4C-rd-xpx"/>
+                                </constraints>
+                                <state key="normal" title="娣诲姞" backgroundImage="blue_button"/>
+                                <state key="highlighted" backgroundImage="blue_button_sel"/>
+                                <connections>
+                                    <action selector="nextAction:" destination="YZf-9t-ph4" eventType="touchUpInside" id="vZp-Qm-Gcc"/>
+                                </connections>
+                            </button>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="灏氭湭杩炴帴缃戠粶" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="0.0" translatesAutoresizingMaskIntoConstraints="NO" id="8qO-si-Tda">
+                                <rect key="frame" x="16" y="291" width="343" height="21"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="21" id="7OY-4Z-9Lv"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <color key="textColor" red="0.83529411764705885" green="0.35294117647058826" blue="0.17647058823529413" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="姝e湪鏌ヨ璁惧淇℃伅锛岃绋嶅悗..." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="0.0" translatesAutoresizingMaskIntoConstraints="NO" id="5rP-JO-eZs">
+                                <rect key="frame" x="16" y="260" width="343" height="24"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="24" id="ymz-86-Y6H"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <color key="textColor" red="0.45901817083358765" green="0.45900446176528931" blue="0.45901218056678772" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <imageView hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="no_wifi" translatesAutoresizingMaskIntoConstraints="NO" id="Zic-gc-gng">
+                                <rect key="frame" x="140" y="149" width="95" height="95"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="95" id="T7o-O5-WbM"/>
+                                    <constraint firstAttribute="height" constant="95" id="uiX-rr-64c"/>
+                                </constraints>
+                            </imageView>
+                        </subviews>
+                        <color key="backgroundColor" red="0.92549019607843142" green="0.92549019607843142" blue="0.93725490196078431" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstItem="5rP-JO-eZs" firstAttribute="leading" secondItem="M8L-ay-M8z" secondAttribute="leadingMargin" id="AJv-pp-adK"/>
+                            <constraint firstItem="4Br-8g-Y1F" firstAttribute="centerX" secondItem="M8L-ay-M8z" secondAttribute="centerX" id="BHu-8x-lDH"/>
+                            <constraint firstItem="Zic-gc-gng" firstAttribute="top" secondItem="Dn9-Jz-niK" secondAttribute="bottom" constant="105" id="EPL-N8-fbI"/>
+                            <constraint firstItem="8qO-si-Tda" firstAttribute="trailing" secondItem="M8L-ay-M8z" secondAttribute="trailingMargin" id="Fxu-S1-6cs"/>
+                            <constraint firstItem="Zic-gc-gng" firstAttribute="centerX" secondItem="M8L-ay-M8z" secondAttribute="centerX" id="HGa-ig-5XZ"/>
+                            <constraint firstItem="8qO-si-Tda" firstAttribute="leading" secondItem="M8L-ay-M8z" secondAttribute="leadingMargin" id="JsH-Cf-IID"/>
+                            <constraint firstItem="Qbm-8l-KeG" firstAttribute="top" secondItem="8qO-si-Tda" secondAttribute="bottom" constant="20" id="PHM-Yj-7E8"/>
+                            <constraint firstItem="5rP-JO-eZs" firstAttribute="top" secondItem="4Br-8g-Y1F" secondAttribute="bottom" constant="16" id="YOK-Zw-1HX"/>
+                            <constraint firstItem="5rP-JO-eZs" firstAttribute="trailing" secondItem="M8L-ay-M8z" secondAttribute="trailingMargin" id="a9Q-Gy-PIg"/>
+                            <constraint firstItem="ceg-ex-Xdb" firstAttribute="centerX" secondItem="M8L-ay-M8z" secondAttribute="centerX" id="fvq-HD-yPj"/>
+                            <constraint firstItem="8qO-si-Tda" firstAttribute="top" secondItem="5rP-JO-eZs" secondAttribute="bottom" constant="7" id="odo-X4-l6Y"/>
+                            <constraint firstItem="4Br-8g-Y1F" firstAttribute="top" secondItem="Dn9-Jz-niK" secondAttribute="bottom" constant="35" id="u02-Jg-1ZD"/>
+                            <constraint firstItem="ceg-ex-Xdb" firstAttribute="top" secondItem="Dn9-Jz-niK" secondAttribute="bottom" constant="35" id="vC2-ZN-zDN"/>
+                            <constraint firstItem="Qbm-8l-KeG" firstAttribute="centerX" secondItem="M8L-ay-M8z" secondAttribute="centerX" id="wpX-ga-1Nk"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="ol8-Ye-vb7"/>
+                    <connections>
+                        <outlet property="actionButton" destination="Qbm-8l-KeG" id="Pjo-3H-bUr"/>
+                        <outlet property="noWifiImageView" destination="Zic-gc-gng" id="MJO-vJ-7Sy"/>
+                        <outlet property="resultBackgroudImageView" destination="ceg-ex-Xdb" id="akl-nq-cdU"/>
+                        <outlet property="resultImageView" destination="4Br-8g-Y1F" id="dOa-RR-Ib6"/>
+                        <outlet property="resultLabel" destination="5rP-JO-eZs" id="J3c-Qn-lGu"/>
+                        <outlet property="statusLabel" destination="8qO-si-Tda" id="Cfg-gT-FkU"/>
+                        <segue destination="IdM-PQ-Ijo" kind="push" identifier="go2WifiTips" id="c80-fS-zgi"/>
+                        <segue destination="csF-MN-QYN" kind="push" identifier="go2WifiResult" id="fz4-3O-uNy"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="da7-fc-UDp" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="990" y="762"/>
+        </scene>
+        <!--Wifi Tips View Controller-->
+        <scene sceneID="jLq-x3-bC0">
+            <objects>
+                <viewController id="IdM-PQ-Ijo" customClass="EZWifiTipsViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="KxQ-S3-2Ow"/>
+                        <viewControllerLayoutGuide type="bottom" id="ovJ-zZ-2JG"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="pgV-eo-vTK">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="wifi_bg" translatesAutoresizingMaskIntoConstraints="NO" id="BN8-qU-5S9">
+                                <rect key="frame" x="0.0" y="44" width="375" height="623"/>
+                            </imageView>
+                        </subviews>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstAttribute="trailing" secondItem="BN8-qU-5S9" secondAttribute="trailing" id="Etb-Ez-HtZ"/>
+                            <constraint firstItem="BN8-qU-5S9" firstAttribute="top" secondItem="KxQ-S3-2Ow" secondAttribute="bottom" id="W8j-ii-zfh"/>
+                            <constraint firstItem="BN8-qU-5S9" firstAttribute="leading" secondItem="pgV-eo-vTK" secondAttribute="leading" id="axG-BG-xrg"/>
+                            <constraint firstItem="ovJ-zZ-2JG" firstAttribute="top" secondItem="BN8-qU-5S9" secondAttribute="bottom" id="rdp-Au-jqI"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="702-9r-yZT"/>
+                    <connections>
+                        <segue destination="4LM-32-B0a" kind="push" identifier="go2WifiInfo" id="Lmt-j9-vhw"/>
+                        <segue destination="vEW-kY-l3A" kind="push" identifier="go2DeviceRestart" id="0Qx-2e-yxl"/>
+                        <segue destination="Oht-RA-6p0" kind="push" identifier="LocationAlertVC" id="28J-Ax-6ub"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="KfL-UU-LuB" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1967" y="120"/>
+        </scene>
+        <!--Location AlertVC View Controller-->
+        <scene sceneID="X8e-da-3nj">
+            <objects>
+                <viewController storyboardIdentifier="LocationAlertVC" id="Oht-RA-6p0" customClass="EZLocationAlertVCViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="jR6-Jk-sfS"/>
+                        <viewControllerLayoutGuide type="bottom" id="HIg-fG-dEs"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="yKS-Rq-Kzr">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="PgL-OV-hf8">
+                                <rect key="frame" x="130" y="89" width="115" height="109"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            </imageView>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8EG-1W-8gb">
+                                <rect key="frame" x="166" y="238" width="0.0" height="0.0"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Kpi-Vj-qTr">
+                                <rect key="frame" x="172" y="292" width="30" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="NjQ-lz-pW7">
+                                <rect key="frame" x="174" y="353" width="30" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            </button>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    </view>
+                    <navigationItem key="navigationItem" id="dWy-0e-pXK"/>
+                    <connections>
+                        <outlet property="btn" destination="Kpi-Vj-qTr" id="Suh-cD-N13"/>
+                        <outlet property="connectLabel" destination="8EG-1W-8gb" id="AZM-Wz-OaX"/>
+                        <outlet property="exceptionButton" destination="NjQ-lz-pW7" id="nZA-lZ-Dj5"/>
+                        <outlet property="imageView" destination="PgL-OV-hf8" id="WJi-mf-CQT"/>
+                        <segue destination="4LM-32-B0a" kind="push" identifier="go2WifiInfo" id="MFl-yy-ZsP"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="wze-Bl-g5G" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="2844" y="118.29085457271366"/>
+        </scene>
+        <!--Device Restart Tips View Controller-->
+        <scene sceneID="hcJ-yB-z4P">
+            <objects>
+                <viewController id="vEW-kY-l3A" customClass="EZDeviceRestartTipsViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="S24-hQ-kb7"/>
+                        <viewControllerLayoutGuide type="bottom" id="4pg-4A-92F"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="GTZ-cT-BIG">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="wifi_bg" translatesAutoresizingMaskIntoConstraints="NO" id="0UR-6j-PZR">
+                                <rect key="frame" x="-4" y="44" width="383" height="623"/>
+                            </imageView>
+                        </subviews>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstAttribute="trailingMargin" secondItem="0UR-6j-PZR" secondAttribute="trailing" constant="-20" id="4oE-ia-Xcc"/>
+                            <constraint firstItem="4pg-4A-92F" firstAttribute="top" secondItem="0UR-6j-PZR" secondAttribute="bottom" id="4xh-cK-zEz"/>
+                            <constraint firstItem="0UR-6j-PZR" firstAttribute="top" secondItem="S24-hQ-kb7" secondAttribute="bottom" id="DNK-n9-dar"/>
+                            <constraint firstItem="0UR-6j-PZR" firstAttribute="leading" secondItem="GTZ-cT-BIG" secondAttribute="leadingMargin" constant="-20" id="aeu-Ch-eS4"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="WcQ-Wt-BhL"/>
+                    <connections>
+                        <segue destination="4LM-32-B0a" kind="push" identifier="go2WifiInfo2" id="9Lc-Kx-oZS"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="qvo-Ze-vQX" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1966" y="1126"/>
+        </scene>
+        <!--Wifi Info View Controller-->
+        <scene sceneID="gmB-NS-VUf">
+            <objects>
+                <viewController id="4LM-32-B0a" customClass="EZWifiInfoViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="cmM-g4-cp8"/>
+                        <viewControllerLayoutGuide type="bottom" id="NOY-Rr-TON"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="d8L-jj-vD6">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="wifi_bg" translatesAutoresizingMaskIntoConstraints="NO" id="clv-dK-n7o">
+                                <rect key="frame" x="0.0" y="44" width="375" height="623"/>
+                                <color key="backgroundColor" red="0.92156862745098034" green="0.92156862745098034" blue="0.92156862745098034" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            </imageView>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="濡傛灉浣犱娇鐢ㄧ殑鏄弻棰戣矾鐢卞櫒锛岃涓嶈璁╂憚鍍忔満杩炴帴5G棰戞鐨刉i-Fi" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="300" translatesAutoresizingMaskIntoConstraints="NO" id="R5v-Qf-L5p">
+                                <rect key="frame" x="10" y="52" width="355" height="40"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="40" id="GwT-5d-OBT"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="2VJ-jQ-xjR">
+                                <rect key="frame" x="10" y="102" width="355" height="34"/>
+                                <color key="backgroundColor" red="0.92549019610000005" green="0.92549019610000005" blue="0.93725490199999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="34" id="jiJ-ow-iwT"/>
+                                </constraints>
+                                <color key="textColor" red="0.33333333333333331" green="0.33333333333333331" blue="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <textInputTraits key="textInputTraits"/>
+                            </textField>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="O9a-PX-Ekn">
+                                <rect key="frame" x="10" y="148" width="355" height="34"/>
+                                <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="34" id="FPO-BB-N1L"/>
+                                </constraints>
+                                <color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <textInputTraits key="textInputTraits" secureTextEntry="YES"/>
+                            </textField>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="x6F-l5-dhJ">
+                                <rect key="frame" x="45" y="198" width="285" height="38"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="38" id="PA7-yu-iCr"/>
+                                    <constraint firstAttribute="width" constant="285" id="tA7-YC-H4g"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                <state key="normal" title="涓嬩竴姝�" backgroundImage="blue_button"/>
+                                <connections>
+                                    <action selector="nextAction:" destination="4LM-32-B0a" eventType="touchUpInside" id="VHS-dX-Wkr"/>
+                                </connections>
+                            </button>
+                        </subviews>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstItem="clv-dK-n7o" firstAttribute="leading" secondItem="d8L-jj-vD6" secondAttribute="leading" id="08K-pG-5PO"/>
+                            <constraint firstAttribute="trailing" secondItem="O9a-PX-Ekn" secondAttribute="trailing" constant="10" id="52l-1i-Pco"/>
+                            <constraint firstItem="O9a-PX-Ekn" firstAttribute="leading" secondItem="d8L-jj-vD6" secondAttribute="leading" constant="10" id="5g4-vL-Mys"/>
+                            <constraint firstItem="O9a-PX-Ekn" firstAttribute="top" secondItem="2VJ-jQ-xjR" secondAttribute="bottom" constant="12" id="DeE-c7-HBb"/>
+                            <constraint firstItem="x6F-l5-dhJ" firstAttribute="centerX" secondItem="d8L-jj-vD6" secondAttribute="centerX" id="JaT-z6-LkB"/>
+                            <constraint firstItem="R5v-Qf-L5p" firstAttribute="top" secondItem="cmM-g4-cp8" secondAttribute="bottom" constant="8" id="Sse-cN-pTd"/>
+                            <constraint firstItem="NOY-Rr-TON" firstAttribute="top" secondItem="clv-dK-n7o" secondAttribute="bottom" id="X7t-Yd-mrG"/>
+                            <constraint firstItem="2VJ-jQ-xjR" firstAttribute="leading" secondItem="d8L-jj-vD6" secondAttribute="leading" constant="10" id="bMV-mc-bJr"/>
+                            <constraint firstAttribute="trailing" secondItem="2VJ-jQ-xjR" secondAttribute="trailing" constant="10" id="cO9-4s-Ykf"/>
+                            <constraint firstItem="R5v-Qf-L5p" firstAttribute="leading" secondItem="d8L-jj-vD6" secondAttribute="leading" constant="10" id="oFF-n8-dtg"/>
+                            <constraint firstAttribute="trailing" secondItem="R5v-Qf-L5p" secondAttribute="trailing" constant="10" id="pOg-Dl-TXn"/>
+                            <constraint firstAttribute="trailing" secondItem="clv-dK-n7o" secondAttribute="trailing" id="qPB-NE-UcX"/>
+                            <constraint firstItem="x6F-l5-dhJ" firstAttribute="top" secondItem="O9a-PX-Ekn" secondAttribute="bottom" constant="16" id="vER-Yv-l4s"/>
+                            <constraint firstItem="2VJ-jQ-xjR" firstAttribute="top" secondItem="R5v-Qf-L5p" secondAttribute="bottom" constant="10" id="x6R-Lv-fbv"/>
+                            <constraint firstItem="clv-dK-n7o" firstAttribute="top" secondItem="cmM-g4-cp8" secondAttribute="bottom" id="zhV-bv-7bb"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="hI4-Fg-uLQ"/>
+                    <connections>
+                        <outlet property="nameLabel" destination="xrj-ZU-1Ue" id="kye-HU-Pbk"/>
+                        <outlet property="nameTextField" destination="2VJ-jQ-xjR" id="rOz-Ym-kbY"/>
+                        <outlet property="nextButton" destination="x6F-l5-dhJ" id="Sb4-tE-eLb"/>
+                        <outlet property="passwordLabel" destination="KAV-Sk-wEc" id="Fhs-an-RJ3"/>
+                        <outlet property="passwordTextField" destination="O9a-PX-Ekn" id="ZjZ-mw-sUa"/>
+                        <outlet property="tipsLabel" destination="R5v-Qf-L5p" id="gUT-EG-1vn"/>
+                        <segue destination="csF-MN-QYN" kind="push" identifier="go2WifiConfig" id="9TP-S2-hhI"/>
+                        <segue destination="vv3-ty-L75" kind="push" identifier="go2APWifiConfig" id="9OK-bP-wm2"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="8Ot-A2-8H6" userLabel="First Responder" sceneMemberID="firstResponder"/>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="缃戠粶" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="xrj-ZU-1Ue">
+                    <rect key="frame" x="0.0" y="0.0" width="42" height="21"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                    <color key="textColor" red="0.33333333333333331" green="0.33333333333333331" blue="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="瀵嗙爜" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="KAV-Sk-wEc">
+                    <rect key="frame" x="0.0" y="0.0" width="42" height="21"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                    <color key="textColor" red="0.33333333333333331" green="0.33333333333333331" blue="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+            </objects>
+            <point key="canvasLocation" x="2809" y="1126"/>
+        </scene>
+        <!--Wi Fi Config View Controller-->
+        <scene sceneID="t0b-Ec-Dce">
+            <objects>
+                <viewController id="vv3-ty-L75" customClass="EZAPWiFiConfigViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="nsk-xy-iCQ"/>
+                        <viewControllerLayoutGuide type="bottom" id="oFO-Ry-mCb"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="KKo-IW-zRG">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="wifi_bg" translatesAutoresizingMaskIntoConstraints="NO" id="hOV-zC-2w5">
+                                <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                            </imageView>
+                            <button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="iaq-GW-DZt">
+                                <rect key="frame" x="127" y="183" width="121" height="30"/>
+                                <color key="backgroundColor" red="1" green="0.57637232540000005" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="121" id="bqT-5I-Fd7"/>
+                                    <constraint firstAttribute="height" constant="30" id="lJm-Ax-NNL"/>
+                                </constraints>
+                                <state key="normal" title="澶嶅埗瀵嗙爜">
+                                    <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                </state>
+                                <connections>
+                                    <action selector="copyPwdBtnClick:" destination="vv3-ty-L75" eventType="touchUpInside" id="631-zp-Egb"/>
+                                </connections>
+                            </button>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="璇烽�氳繃涓嬪垪姝ラ灏嗘墜鏈鸿繛鎺ュ埌璁惧Wi-Fi锛�" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hz9-ZE-6rg">
+                                <rect key="frame" x="16" y="66" width="343" height="21"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="21" id="hWx-qJ-D5P"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2fV-EH-7VO">
+                                <rect key="frame" x="16" y="104" width="20" height="34"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="20" id="X1g-Uc-DV1"/>
+                                    <constraint firstAttribute="height" constant="34" id="iFC-0F-xx0"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="29"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="寰呰繛鎺ョ殑璁惧Wi-Fi淇℃伅濡備笅锛�" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0PQ-gp-JOK">
+                                <rect key="frame" x="47.5" y="104" width="311.5" height="17"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="17" id="oTg-hz-sFc"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="鍚嶇О锛�" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bzO-cY-bUs">
+                                <rect key="frame" x="47.5" y="125" width="43" height="21"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="21" id="AlL-68-8AQ"/>
+                                    <constraint firstAttribute="width" constant="43" id="N5T-re-TCl"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="瀵嗙爜锛�" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="BBf-mw-P8e">
+                                <rect key="frame" x="47.5" y="150" width="43" height="21"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="21" id="s8K-RM-Tg7"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="EZVIZ_137897687" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SOG-Vj-m3m">
+                                <rect key="frame" x="99.5" y="125" width="259.5" height="21"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="21" id="nXt-eu-vGR"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <color key="textColor" red="0.95992773771286011" green="0.52706600270301529" blue="0.055206058104723267" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="EZVIZ_137897687" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gzp-iy-iES">
+                                <rect key="frame" x="99.5" y="150" width="259.5" height="21"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="21" id="0Gv-BZ-q14"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <color key="textColor" red="0.95992773769999995" green="0.52706600270000004" blue="0.055206058099999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ehD-Vr-EwS">
+                                <rect key="frame" x="16" y="225" width="343" height="1"/>
+                                <color key="backgroundColor" red="0.78894352791878175" green="0.78894352791878175" blue="0.78894352791878175" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="1" id="pik-Wt-Z4d"/>
+                                </constraints>
+                            </view>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SyB-zd-gzt">
+                                <rect key="frame" x="16" y="241" width="20" height="34"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="34" id="NdV-0A-du0"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="29"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" usesAttributedText="YES" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="UGZ-ag-Osr">
+                                <rect key="frame" x="47.5" y="241" width="311.5" height="60"/>
+                                <attributedString key="attributedText">
+                                    <fragment content="杩涘叆鎵嬫満绯荤粺Wi-Fi璁剧疆鐣岄潰锛岄�夋嫨鍚嶇О涓�">
+                                        <attributes>
+                                            <color key="NSBackgroundColor" red="1" green="1" blue="1" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <font key="NSFont" metaFont="system" size="14"/>
+                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0"/>
+                                        </attributes>
+                                    </fragment>
+                                    <fragment content="EZVIZ_173784938">
+                                        <attributes>
+                                            <color key="NSBackgroundColor" red="1" green="1" blue="1" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <color key="NSColor" red="1" green="0.59549855620779035" blue="0.15890927166137003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <font key="NSFont" metaFont="system" size="14"/>
+                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0"/>
+                                        </attributes>
+                                    </fragment>
+                                    <fragment content="鐨勭綉缁滐紝鐢ㄦ彁绀虹殑瀵嗙爜杩涜杩炴帴">
+                                        <attributes>
+                                            <color key="NSBackgroundColor" red="1" green="1" blue="1" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <font key="NSFont" metaFont="system" size="14"/>
+                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0"/>
+                                        </attributes>
+                                    </fragment>
+                                </attributedString>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hOb-L4-rkc">
+                                <rect key="frame" x="127" y="311" width="121" height="30"/>
+                                <color key="backgroundColor" red="1" green="0.57637232540000005" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="121" id="bBU-c1-yuI"/>
+                                    <constraint firstAttribute="height" constant="30" id="yF3-zb-oJT"/>
+                                </constraints>
+                                <state key="normal" title="杩涘叆璁剧疆鐣岄潰">
+                                    <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                </state>
+                                <connections>
+                                    <action selector="enterSettingBtnClick:" destination="vv3-ty-L75" eventType="touchUpInside" id="QGy-Gg-Fxj"/>
+                                </connections>
+                            </button>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Wq1-Ch-GSx">
+                                <rect key="frame" x="16" y="353" width="343" height="1"/>
+                                <color key="backgroundColor" red="0.7889435279" green="0.7889435279" blue="0.7889435279" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="1" id="fT8-Cd-qEF"/>
+                                </constraints>
+                            </view>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="3" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="utk-BE-uLK">
+                                <rect key="frame" x="16" y="362" width="20" height="35"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="29"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" usesAttributedText="YES" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Q0X-wy-A5B">
+                                <rect key="frame" x="47.5" y="362" width="311.5" height="100"/>
+                                <attributedString key="attributedText">
+                                    <fragment content="杩斿洖">
+                                        <attributes>
+                                            <color key="NSColor" name="textColor" catalog="System" colorSpace="catalog"/>
+                                            <font key="NSFont" size="14" name="PingFangSC-Regular"/>
+                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0" allowsDefaultTighteningForTruncation="NO"/>
+                                        </attributes>
+                                    </fragment>
+                                    <fragment content="APP">
+                                        <attributes>
+                                            <color key="NSColor" name="textColor" catalog="System" colorSpace="catalog"/>
+                                            <font key="NSFont" size="14" name="HelveticaNeue"/>
+                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0" allowsDefaultTighteningForTruncation="NO"/>
+                                        </attributes>
+                                    </fragment>
+                                    <fragment content="锛岀瓑寰呬笌璁惧杩炴帴锛屾垚鍔熷悗鑷姩杩涘叆涓嬩竴姝ユ搷浣溿��">
+                                        <attributes>
+                                            <color key="NSColor" name="textColor" catalog="System" colorSpace="catalog"/>
+                                            <font key="NSFont" size="14" name="PingFangSC-Regular"/>
+                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0" allowsDefaultTighteningForTruncation="NO"/>
+                                        </attributes>
+                                    </fragment>
+                                    <fragment content="鈥�">
+                                        <attributes>
+                                            <color key="NSColor" name="textColor" catalog="System" colorSpace="catalog"/>
+                                            <font key="NSFont" size="14" name="HelveticaNeue"/>
+                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0" allowsDefaultTighteningForTruncation="NO"/>
+                                        </attributes>
+                                    </fragment>
+                                    <fragment content="(娉ㄦ剰锛氬鏋滆澶�">
+                                        <attributes>
+                                            <color key="NSColor" name="textColor" catalog="System" colorSpace="catalog"/>
+                                            <font key="NSFont" size="14" name="PingFangSC-Regular"/>
+                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0" allowsDefaultTighteningForTruncation="NO"/>
+                                        </attributes>
+                                    </fragment>
+                                    <fragment content="WIFI">
+                                        <attributes>
+                                            <color key="NSColor" name="textColor" catalog="System" colorSpace="catalog"/>
+                                            <font key="NSFont" size="14" name="HelveticaNeue"/>
+                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0" allowsDefaultTighteningForTruncation="NO"/>
+                                        </attributes>
+                                    </fragment>
+                                    <fragment content="鍚嶇О涓嶆槸鈥�">
+                                        <attributes>
+                                            <color key="NSColor" name="textColor" catalog="System" colorSpace="catalog"/>
+                                            <font key="NSFont" size="14" name="PingFangSC-Regular"/>
+                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0" allowsDefaultTighteningForTruncation="NO"/>
+                                        </attributes>
+                                    </fragment>
+                                    <fragment content="EZVIZ">
+                                        <attributes>
+                                            <color key="NSColor" name="textColor" catalog="System" colorSpace="catalog"/>
+                                            <font key="NSFont" size="14" name="HelveticaNeue"/>
+                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0" allowsDefaultTighteningForTruncation="NO"/>
+                                        </attributes>
+                                    </fragment>
+                                    <fragment content="鈥濆墠缂�鐨勶紝璇峰鍒跺瘑鐮佸悗鏍规嵁鏂扮殑鍓嶇紑鍚嶅瓧锛屾墜鍔ㄤ慨鏀瑰瘑鐮佺殑鍓嶇紑骞惰繛鎺ュ嵆鍙�備緥濡傗��">
+                                        <attributes>
+                                            <color key="NSColor" name="textColor" catalog="System" colorSpace="catalog"/>
+                                            <font key="NSFont" size="14" name="PingFangSC-Regular"/>
+                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0" allowsDefaultTighteningForTruncation="NO"/>
+                                        </attributes>
+                                    </fragment>
+                                    <fragment content="SoftAP_XXXXXXX">
+                                        <attributes>
+                                            <color key="NSColor" name="textColor" catalog="System" colorSpace="catalog"/>
+                                            <font key="NSFont" size="13" name="HelveticaNeue"/>
+                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0" allowsDefaultTighteningForTruncation="NO"/>
+                                        </attributes>
+                                    </fragment>
+                                    <fragment content="鈥�)">
+                                        <attributes>
+                                            <color key="NSColor" name="textColor" catalog="System" colorSpace="catalog"/>
+                                            <font key="NSFont" size="14" name="PingFangSC-Regular"/>
+                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0" allowsDefaultTighteningForTruncation="NO"/>
+                                        </attributes>
+                                    </fragment>
+                                </attributedString>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" style="gray" translatesAutoresizingMaskIntoConstraints="NO" id="YrL-E6-3kA">
+                                <rect key="frame" x="177.5" y="627" width="20" height="20"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="20" id="qMR-gD-2g5"/>
+                                    <constraint firstAttribute="width" constant="20" id="sJq-xn-rP3"/>
+                                </constraints>
+                            </activityIndicatorView>
+                            <button hidden="YES" opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="b2S-tK-xqv">
+                                <rect key="frame" x="127" y="617" width="121" height="30"/>
+                                <color key="backgroundColor" red="1" green="0.57637232540000005" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="30" id="9fF-6T-JWK"/>
+                                    <constraint firstAttribute="width" constant="121" id="9jN-6e-csu"/>
+                                </constraints>
+                                <state key="normal" title="娣诲姞璁惧">
+                                    <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                </state>
+                                <connections>
+                                    <action selector="addBtnClick:" destination="vv3-ty-L75" eventType="touchUpInside" id="Zvv-np-LOp"/>
+                                </connections>
+                            </button>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                        <constraints>
+                            <constraint firstItem="hOV-zC-2w5" firstAttribute="leading" secondItem="KKo-IW-zRG" secondAttribute="leading" id="0oK-yS-Vaw"/>
+                            <constraint firstItem="bzO-cY-bUs" firstAttribute="leading" secondItem="0PQ-gp-JOK" secondAttribute="leading" id="3Xh-Z2-Psg"/>
+                            <constraint firstItem="ehD-Vr-EwS" firstAttribute="top" secondItem="iaq-GW-DZt" secondAttribute="bottom" constant="12" id="5Gd-3A-q5b"/>
+                            <constraint firstItem="0PQ-gp-JOK" firstAttribute="top" secondItem="2fV-EH-7VO" secondAttribute="top" id="5Hv-ly-O3c"/>
+                            <constraint firstItem="utk-BE-uLK" firstAttribute="trailing" secondItem="2fV-EH-7VO" secondAttribute="trailing" id="8VS-a8-qP5"/>
+                            <constraint firstItem="BBf-mw-P8e" firstAttribute="trailing" secondItem="bzO-cY-bUs" secondAttribute="trailing" id="8wy-kS-VG7"/>
+                            <constraint firstItem="hOb-L4-rkc" firstAttribute="top" secondItem="UGZ-ag-Osr" secondAttribute="bottom" constant="10" id="9vi-nZ-UgD"/>
+                            <constraint firstItem="Wq1-Ch-GSx" firstAttribute="trailing" secondItem="ehD-Vr-EwS" secondAttribute="trailing" id="AGg-Kd-vnq"/>
+                            <constraint firstItem="Wq1-Ch-GSx" firstAttribute="leading" secondItem="ehD-Vr-EwS" secondAttribute="leading" id="Aig-eS-mta"/>
+                            <constraint firstItem="iaq-GW-DZt" firstAttribute="top" secondItem="gzp-iy-iES" secondAttribute="bottom" constant="12" id="Bdk-ZW-4RS"/>
+                            <constraint firstItem="SyB-zd-gzt" firstAttribute="leading" secondItem="hz9-ZE-6rg" secondAttribute="leading" id="Cn1-eI-tAB"/>
+                            <constraint firstItem="BBf-mw-P8e" firstAttribute="top" secondItem="bzO-cY-bUs" secondAttribute="bottom" constant="4" id="E10-X2-utJ"/>
+                            <constraint firstItem="YrL-E6-3kA" firstAttribute="centerX" secondItem="KKo-IW-zRG" secondAttribute="centerX" id="F9Q-Q6-YEk"/>
+                            <constraint firstItem="0PQ-gp-JOK" firstAttribute="leading" secondItem="2fV-EH-7VO" secondAttribute="trailing" constant="11.5" id="GZk-iq-CRL"/>
+                            <constraint firstItem="SyB-zd-gzt" firstAttribute="top" secondItem="ehD-Vr-EwS" secondAttribute="bottom" constant="15" id="H2d-JZ-e0K"/>
+                            <constraint firstItem="Q0X-wy-A5B" firstAttribute="top" secondItem="utk-BE-uLK" secondAttribute="top" id="Hlq-TH-Aga"/>
+                            <constraint firstItem="BBf-mw-P8e" firstAttribute="leading" secondItem="0PQ-gp-JOK" secondAttribute="leading" id="J8N-Ey-G1H"/>
+                            <constraint firstItem="0PQ-gp-JOK" firstAttribute="trailing" secondItem="hz9-ZE-6rg" secondAttribute="trailing" id="JZk-Zj-Xil"/>
+                            <constraint firstItem="hz9-ZE-6rg" firstAttribute="top" secondItem="nsk-xy-iCQ" secondAttribute="bottom" constant="22" id="KK2-ro-tyQ"/>
+                            <constraint firstItem="SOG-Vj-m3m" firstAttribute="leading" secondItem="bzO-cY-bUs" secondAttribute="trailing" constant="9" id="KWp-Lm-RZh"/>
+                            <constraint firstItem="gzp-iy-iES" firstAttribute="centerY" secondItem="BBf-mw-P8e" secondAttribute="centerY" id="LdV-ad-k0u"/>
+                            <constraint firstItem="SOG-Vj-m3m" firstAttribute="trailing" secondItem="0PQ-gp-JOK" secondAttribute="trailing" id="MAl-oM-iDM"/>
+                            <constraint firstItem="Q0X-wy-A5B" firstAttribute="trailing" secondItem="0PQ-gp-JOK" secondAttribute="trailing" id="ODn-lQ-5e8"/>
+                            <constraint firstItem="oFO-Ry-mCb" firstAttribute="top" secondItem="YrL-E6-3kA" secondAttribute="bottom" constant="20" id="OiN-WD-nvP"/>
+                            <constraint firstItem="SOG-Vj-m3m" firstAttribute="centerY" secondItem="bzO-cY-bUs" secondAttribute="centerY" id="RFn-mA-EJ4"/>
+                            <constraint firstItem="b2S-tK-xqv" firstAttribute="centerX" secondItem="KKo-IW-zRG" secondAttribute="centerX" id="RYN-3Z-zNc"/>
+                            <constraint firstItem="bzO-cY-bUs" firstAttribute="top" secondItem="0PQ-gp-JOK" secondAttribute="bottom" constant="4" id="Sa1-Ji-Vsd"/>
+                            <constraint firstItem="ehD-Vr-EwS" firstAttribute="leading" secondItem="KKo-IW-zRG" secondAttribute="leadingMargin" id="TF1-RG-Smh"/>
+                            <constraint firstItem="oFO-Ry-mCb" firstAttribute="top" secondItem="b2S-tK-xqv" secondAttribute="bottom" constant="20" id="TQM-qf-NsS"/>
+                            <constraint firstItem="hz9-ZE-6rg" firstAttribute="trailing" secondItem="KKo-IW-zRG" secondAttribute="trailingMargin" id="WPJ-HS-ZnM"/>
+                            <constraint firstItem="Wq1-Ch-GSx" firstAttribute="top" secondItem="hOb-L4-rkc" secondAttribute="bottom" constant="12" id="XMS-7r-u6c"/>
+                            <constraint firstItem="oFO-Ry-mCb" firstAttribute="top" secondItem="hOV-zC-2w5" secondAttribute="bottom" id="c9Y-Qf-GMj"/>
+                            <constraint firstItem="SyB-zd-gzt" firstAttribute="trailing" secondItem="2fV-EH-7VO" secondAttribute="trailing" id="dAm-RQ-WRl"/>
+                            <constraint firstItem="ehD-Vr-EwS" firstAttribute="trailing" secondItem="KKo-IW-zRG" secondAttribute="trailingMargin" id="epc-RT-Ded"/>
+                            <constraint firstItem="utk-BE-uLK" firstAttribute="leading" secondItem="hz9-ZE-6rg" secondAttribute="leading" id="fjJ-jL-eXe"/>
+                            <constraint firstItem="hOV-zC-2w5" firstAttribute="top" secondItem="KKo-IW-zRG" secondAttribute="top" id="gDK-R1-B94"/>
+                            <constraint firstItem="utk-BE-uLK" firstAttribute="top" secondItem="Wq1-Ch-GSx" secondAttribute="bottom" constant="8" id="hHk-Xi-Yhh"/>
+                            <constraint firstItem="2fV-EH-7VO" firstAttribute="top" secondItem="hz9-ZE-6rg" secondAttribute="bottom" constant="17" id="hTf-eb-Ag5"/>
+                            <constraint firstItem="gzp-iy-iES" firstAttribute="leading" secondItem="SOG-Vj-m3m" secondAttribute="leading" id="hrE-gd-LHm"/>
+                            <constraint firstItem="iaq-GW-DZt" firstAttribute="centerX" secondItem="KKo-IW-zRG" secondAttribute="centerX" id="kKE-w8-VuG"/>
+                            <constraint firstItem="hz9-ZE-6rg" firstAttribute="leading" secondItem="KKo-IW-zRG" secondAttribute="leadingMargin" id="kdx-O7-vg1"/>
+                            <constraint firstItem="Q0X-wy-A5B" firstAttribute="leading" secondItem="0PQ-gp-JOK" secondAttribute="leading" id="s0A-KQ-eo9"/>
+                            <constraint firstItem="UGZ-ag-Osr" firstAttribute="top" secondItem="SyB-zd-gzt" secondAttribute="top" id="tLw-tX-duA"/>
+                            <constraint firstItem="UGZ-ag-Osr" firstAttribute="leading" secondItem="0PQ-gp-JOK" secondAttribute="leading" id="tdL-7S-QHt"/>
+                            <constraint firstAttribute="trailing" secondItem="hOV-zC-2w5" secondAttribute="trailing" id="thP-tZ-b3W"/>
+                            <constraint firstItem="hOb-L4-rkc" firstAttribute="centerX" secondItem="KKo-IW-zRG" secondAttribute="centerX" id="vUS-EE-fZA"/>
+                            <constraint firstItem="gzp-iy-iES" firstAttribute="trailing" secondItem="0PQ-gp-JOK" secondAttribute="trailing" id="wSs-1b-4Bq"/>
+                            <constraint firstItem="2fV-EH-7VO" firstAttribute="leading" secondItem="hz9-ZE-6rg" secondAttribute="leading" id="yJG-qX-9GP"/>
+                            <constraint firstItem="UGZ-ag-Osr" firstAttribute="trailing" secondItem="0PQ-gp-JOK" secondAttribute="trailing" id="z3b-uO-pZw"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="XkN-Um-DoE"/>
+                    <connections>
+                        <outlet property="addBtn" destination="b2S-tK-xqv" id="9pR-up-3TG"/>
+                        <outlet property="nameL" destination="bzO-cY-bUs" id="aYK-OL-VpJ"/>
+                        <outlet property="passwordLable" destination="BBf-mw-P8e" id="d3L-jP-uP1"/>
+                        <outlet property="processingIndicator" destination="YrL-E6-3kA" id="uPy-Af-flm"/>
+                        <outlet property="step1TipLable" destination="0PQ-gp-JOK" id="nAm-9N-DTh"/>
+                        <outlet property="stepThreeLable" destination="Q0X-wy-A5B" id="DWX-OJ-YK3"/>
+                        <outlet property="stepTwoLabel" destination="UGZ-ag-Osr" id="9F4-Kd-6rm"/>
+                        <outlet property="tipLable" destination="hz9-ZE-6rg" id="ptX-eG-7O7"/>
+                        <outlet property="toCopBtn" destination="iaq-GW-DZt" id="TnC-6F-kLV"/>
+                        <outlet property="toSetBtn" destination="hOb-L4-rkc" id="cYH-M0-bkA"/>
+                        <outlet property="wifiNameLabel" destination="SOG-Vj-m3m" id="uq7-f2-ZQ8"/>
+                        <outlet property="wifiPwdLabel" destination="gzp-iy-iES" id="Z9H-tO-3B5"/>
+                        <segue destination="2Wn-Wh-fVL" kind="push" identifier="go2WifiConfigResult" id="Csk-KC-bfz"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="bdN-GB-lpf" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="3260" y="1986"/>
+        </scene>
+        <!--Config Result View Controller-->
+        <scene sceneID="3j7-fn-MK0">
+            <objects>
+                <viewController id="2Wn-Wh-fVL" customClass="EZAPConfigResultViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="6qi-zI-8ch"/>
+                        <viewControllerLayoutGuide type="bottom" id="6jk-ge-Cjk"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="dOi-Kb-nwY">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="wifi_bg" translatesAutoresizingMaskIntoConstraints="NO" id="aZD-Mg-eY7">
+                                <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                            </imageView>
+                            <activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" style="gray" translatesAutoresizingMaskIntoConstraints="NO" id="jRF-LK-ZpE">
+                                <rect key="frame" x="177.5" y="323.5" width="20" height="20"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="20" id="fpb-6A-yMC"/>
+                                    <constraint firstAttribute="width" constant="20" id="w4Y-XL-gFy"/>
+                                </constraints>
+                            </activityIndicatorView>
+                            <imageView hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="addDevice_success" translatesAutoresizingMaskIntoConstraints="NO" id="LU8-Bg-Ntj">
+                                <rect key="frame" x="107.5" y="293.5" width="160" height="80"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="80" id="FeI-XE-6jJ"/>
+                                    <constraint firstAttribute="width" constant="160" id="Wu8-1n-7EF"/>
+                                </constraints>
+                            </imageView>
+                            <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="mDU-NX-CXb">
+                                <rect key="frame" x="162.5" y="392.5" width="50" height="30"/>
+                                <color key="backgroundColor" red="1" green="0.57637232540000005" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="30" id="2KE-Kj-q0Y"/>
+                                    <constraint firstAttribute="width" constant="50" id="QFG-CY-7hP"/>
+                                </constraints>
+                                <state key="normal" title="瀹屾垚">
+                                    <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                </state>
+                                <connections>
+                                    <action selector="doneBtnClick:" destination="2Wn-Wh-fVL" eventType="touchUpInside" id="TMv-98-CTR"/>
+                                </connections>
+                            </button>
+                            <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="RaQ-FQ-QZ1">
+                                <rect key="frame" x="162.5" y="318.5" width="50" height="30"/>
+                                <color key="backgroundColor" red="1" green="0.57637232540000005" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="30" id="EW0-q2-hgF"/>
+                                    <constraint firstAttribute="width" constant="50" id="gDX-dy-3Ee"/>
+                                </constraints>
+                                <state key="normal" title="閲嶈瘯">
+                                    <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                </state>
+                                <connections>
+                                    <action selector="retryBtnClick:" destination="2Wn-Wh-fVL" eventType="touchUpInside" id="bJI-PZ-aNd"/>
+                                </connections>
+                            </button>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="娣诲姞璁惧涓紝璇风◢鍚�..." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="spS-wV-76P">
+                                <rect key="frame" x="16" y="262.5" width="343" height="23"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="19"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                        <constraints>
+                            <constraint firstItem="RaQ-FQ-QZ1" firstAttribute="centerY" secondItem="dOi-Kb-nwY" secondAttribute="centerY" id="75B-5P-8xy"/>
+                            <constraint firstItem="LU8-Bg-Ntj" firstAttribute="centerX" secondItem="dOi-Kb-nwY" secondAttribute="centerX" id="8s6-KE-vER"/>
+                            <constraint firstAttribute="trailing" secondItem="aZD-Mg-eY7" secondAttribute="trailing" id="Bfj-VN-wdL"/>
+                            <constraint firstItem="jRF-LK-ZpE" firstAttribute="centerY" secondItem="dOi-Kb-nwY" secondAttribute="centerY" id="FpQ-3e-Anx"/>
+                            <constraint firstItem="LU8-Bg-Ntj" firstAttribute="centerY" secondItem="dOi-Kb-nwY" secondAttribute="centerY" id="KWB-rG-l3d"/>
+                            <constraint firstItem="6jk-ge-Cjk" firstAttribute="top" secondItem="aZD-Mg-eY7" secondAttribute="bottom" id="N2a-sN-cRT"/>
+                            <constraint firstItem="LU8-Bg-Ntj" firstAttribute="top" secondItem="spS-wV-76P" secondAttribute="bottom" constant="8" id="Q1t-fK-KrS"/>
+                            <constraint firstItem="aZD-Mg-eY7" firstAttribute="top" secondItem="dOi-Kb-nwY" secondAttribute="top" id="UJ7-6e-zx8"/>
+                            <constraint firstItem="RaQ-FQ-QZ1" firstAttribute="centerX" secondItem="dOi-Kb-nwY" secondAttribute="centerX" id="WSV-tj-2Sf"/>
+                            <constraint firstItem="mDU-NX-CXb" firstAttribute="top" secondItem="LU8-Bg-Ntj" secondAttribute="bottom" constant="19" id="Y8k-nU-c8s"/>
+                            <constraint firstItem="spS-wV-76P" firstAttribute="leading" secondItem="dOi-Kb-nwY" secondAttribute="leadingMargin" id="bXB-cd-zZf"/>
+                            <constraint firstItem="aZD-Mg-eY7" firstAttribute="leading" secondItem="dOi-Kb-nwY" secondAttribute="leading" id="kE8-tT-hf0"/>
+                            <constraint firstItem="spS-wV-76P" firstAttribute="trailing" secondItem="dOi-Kb-nwY" secondAttribute="trailingMargin" id="sG1-Kq-qaT"/>
+                            <constraint firstItem="jRF-LK-ZpE" firstAttribute="centerX" secondItem="dOi-Kb-nwY" secondAttribute="centerX" id="scU-1h-7gS"/>
+                            <constraint firstItem="mDU-NX-CXb" firstAttribute="centerX" secondItem="dOi-Kb-nwY" secondAttribute="centerX" id="vFr-fs-YRq"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="7fb-UA-HaO"/>
+                    <connections>
+                        <outlet property="doneBtn" destination="mDU-NX-CXb" id="nXU-Em-gbJ"/>
+                        <outlet property="loadingIndicator" destination="jRF-LK-ZpE" id="xP7-He-q8R"/>
+                        <outlet property="msgLabel" destination="spS-wV-76P" id="ebh-Qz-aAF"/>
+                        <outlet property="retryBtn" destination="RaQ-FQ-QZ1" id="DLh-WK-MqR"/>
+                        <outlet property="successImageView" destination="LU8-Bg-Ntj" id="QZg-DB-Tqd"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="gDr-kq-8JY" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="4095" y="1986"/>
+        </scene>
+        <!--Wifi Config View Controller-->
+        <scene sceneID="jy7-7a-VfS">
+            <objects>
+                <viewController storyboardIdentifier="WifiConfig" id="csF-MN-QYN" customClass="EZWifiConfigViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="bNp-Fo-Kjg"/>
+                        <viewControllerLayoutGuide type="bottom" id="ilf-pc-32c"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="uxY-or-TSM">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="wifi_bg" translatesAutoresizingMaskIntoConstraints="NO" id="2Bp-Jx-oq2">
+                                <rect key="frame" x="0.0" y="44" width="375" height="623"/>
+                                <color key="backgroundColor" red="0.92156862750000001" green="0.92156862750000001" blue="0.92156862750000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            </imageView>
+                        </subviews>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstAttribute="trailing" secondItem="2Bp-Jx-oq2" secondAttribute="trailing" id="KKc-a3-tf2"/>
+                            <constraint firstItem="2Bp-Jx-oq2" firstAttribute="top" secondItem="bNp-Fo-Kjg" secondAttribute="bottom" id="Zho-au-ewd"/>
+                            <constraint firstItem="2Bp-Jx-oq2" firstAttribute="leading" secondItem="uxY-or-TSM" secondAttribute="leading" id="iKD-bO-uoE"/>
+                            <constraint firstItem="ilf-pc-32c" firstAttribute="top" secondItem="2Bp-Jx-oq2" secondAttribute="bottom" id="wht-CS-Rt7"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="lYh-Pf-QOC"/>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="Trk-g7-Omc" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1071" y="1926"/>
+        </scene>
+    </scenes>
+    <inferredMetricsTieBreakers>
+        <segue reference="fz4-3O-uNy"/>
+        <segue reference="Lmt-j9-vhw"/>
+        <segue reference="ikM-Zn-H8f"/>
+    </inferredMetricsTieBreakers>
+    <resources>
+        <image name="addDevice_success" width="320" height="185"/>
+        <image name="blue_button" width="285" height="39"/>
+        <image name="blue_button_sel" width="285" height="39"/>
+        <image name="close" width="64" height="30"/>
+        <image name="no_wifi" width="94" height="94"/>
+        <image name="open" width="64" height="30"/>
+        <image name="qr_scan_line" width="219" height="6"/>
+        <image name="results_pic_bg" width="175" height="165"/>
+        <image name="wifi_bg" width="320" height="450"/>
+    </resources>
+</document>
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/AppDelegate.h b/EZDemo/HDLEZDemo/HDLEZDemo/AppDelegate.h
new file mode 100644
index 0000000..245dea3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/AppDelegate.h
@@ -0,0 +1,21 @@
+//
+//  AppDelegate.h
+//  HDLEZDemo
+//
+//  Created by 闄堝惎鎵� on 2023/3/2.
+//
+
+#import <UIKit/UIKit.h>
+#import <CoreData/CoreData.h>
+
+@interface AppDelegate : UIResponder <UIApplicationDelegate>
+
+@property (strong, nonatomic) UIWindow *window;
+
+@property (readonly, strong) NSPersistentContainer *persistentContainer;
+
+- (void)saveContext;
+
+
+@end
+
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/AppDelegate.m b/EZDemo/HDLEZDemo/HDLEZDemo/AppDelegate.m
new file mode 100644
index 0000000..286b072
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/AppDelegate.m
@@ -0,0 +1,115 @@
+//
+//  AppDelegate.m
+//  HDLEZDemo
+//
+//  Created by 闄堝惎鎵� on 2023/3/2.
+//
+
+#import "AppDelegate.h"
+#import "EZSDK.h"
+#import <CoreLocation/CoreLocation.h>
+
+@interface AppDelegate ()<CLLocationManagerDelegate>
+@property (nonatomic, strong) CLLocationManager *locationmanager;
+
+@end
+
+@implementation AppDelegate
+
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+    
+//    //璁剧疆window
+//    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
+
+    // Override point for customization after application launch.
+    [[EZSDK sharedInstance] initLibWithAppKey:@"1aa98a90489b4838b966b57018b4b04b" globalAppKey:@"1aa98a90489b4838b966b57018b4b04b"];
+//    [[EZSDK sharedInstance] initLibWithAppKey:@"941b1b72b6294998acfd36c14931b675" globalAppKey:@"941b1b72b6294998acfd36c14931b675"];
+    [[EZSDK sharedInstance] setHDlAccessToken:@"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI1NTc3YTY5ZDYxMTM0YzgxYjFiMzQ3NjczYjAzYTI3MSIsImNvbXBhbnlJZCI6IjAiLCJyb2xlIjoiIiwiaGVhZGVyUHJlZml4IjoiQmVhcmVyICIsInVzZXJBY2NvdW50Ijoid3hyIiwidGVuYW50SWQiOiIyMCIsInVzZXJUeXBlIjoiVVNFUl9DIiwidG9rZW5UeXBlIjoiYWNjZXNzX3Rva2VuIiwidXNlck5hbWUiOiJ3eHIiLCJ1c2VyRGF0YVJpZ2h0IjoiMSIsIm9wZW5BcHBsaWNhdGlvbklkIjoiMCIsInVzZXJJZCI6IjEzOTIwMzU1NjgyMDQ0MjMxNjkiLCJleHAiOjE2ODE3MzEwOTMsIm5iZiI6MTY4MTcyMzg5M30.E-h5ba1N1vJZjrNgvBAx0XLg13oTxITqjMVuzxeXdgoxYRzhmYUlGATIz_B3OK71Bv91pVq-q2Z6LlA8-40pUNDGN_YGLBSt4p34KliTGisr106ksoFd5B2f3qJt3bgfDHANJCp8tfFcUBGSdX0I9TSworLkQYS0K4Asd_t-ObA" refreshToken:@"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJmNDZlOTYzMDQ1ODU0MzI4YTUwOWE2ZDljYmE2YjU1NCIsImNvbXBhbnlJZCI6IjAiLCJoZWFkZXJQcmVmaXgiOiJCZWFyZXIgIiwidGVuYW50SWQiOiIyMCIsInRva2VuVHlwZSI6InJlZnJlc2hfdG9rZW4iLCJvcGVuQXBwbGljYXRpb25JZCI6IjAiLCJ1c2VySWQiOiIxMzkyMDM1NTY4MjA0NDIzMTY5IiwiZXhwIjoxNjgyMzI4NjkzLCJuYmYiOjE2ODE3MjM4OTN9.iQu24WYLPqr3g7LUklZFS7JlY5eO_smPDgUwM3z9s2ldK528nw1EMp0SQgy5USpKpgFzATliDLpb_UDXhx-8-uUjO9dtL8dY3P-I9xmpwjnF13I8eYg5h40hZa5ihuokURsOf9DnD7cjLEItQ_FCsT8rdu9vFzQSE-TWoTmkSV8"];
+    [[EZSDK sharedInstance] setRequestHttpsHostAndPlatform:@"https://test-gz.hdlcontrol.com" platform:1 homeId:@"1547099040465408002"];
+//    [[EZSDK sharedInstance] setRequestHttpsHostAndPlatform:@"https://test-gz.hdlcontrol.com" platform:1 homeId:@"1644171733588557825"];
+    [[EZSDK sharedInstance] setEZAccessToken:@"ra.be9kj2gsdeldsty13rdsieay3wigmdxn-9dccz2nop6-11v2z1o-jslwzcqgz"];
+//    [[EZSDK sharedInstance] setEZAccessToken:@"ra.3hkirwcadrpfmaa89wep99io3wto4yds-7zptb10d20-1wxg4f3-ygiojudee"];
+
+    
+    //瀹氫綅鏉冮檺
+    _locationmanager = [[CLLocationManager alloc]init];
+    _locationmanager.delegate = self;
+    [_locationmanager requestWhenInUseAuthorization];
+    [_locationmanager startUpdatingLocation];
+
+    return YES;
+}
+
+- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
+//    if (status == kCLAuthorizationStatusAuthorizedWhenInUse || status == kCLAuthorizationStatusAuthorizedAlways) {
+//        [self performSegueWithIdentifier:@"go2WifiInfo" sender:nil];
+//    }
+}
+-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{
+    [_locationmanager stopUpdatingLocation];
+}
+
+#pragma mark - UISceneSession lifecycle
+
+
+//- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options {
+//    // Called when a new scene session is being created.
+//    // Use this method to select a configuration to create the new scene with.
+//    return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role];
+//}
+//
+//
+//- (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet<UISceneSession *> *)sceneSessions {
+//    // Called when the user discards a scene session.
+//    // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
+//    // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
+//}
+
+
+#pragma mark - Core Data stack
+
+@synthesize persistentContainer = _persistentContainer;
+
+- (NSPersistentContainer *)persistentContainer {
+    // The persistent container for the application. This implementation creates and returns a container, having loaded the store for the application to it.
+    @synchronized (self) {
+        if (_persistentContainer == nil) {
+            _persistentContainer = [[NSPersistentContainer alloc] initWithName:@"HDLEZDemo"];
+            [_persistentContainer loadPersistentStoresWithCompletionHandler:^(NSPersistentStoreDescription *storeDescription, NSError *error) {
+                if (error != nil) {
+                    // Replace this implementation with code to handle the error appropriately.
+                    // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
+                    
+                    /*
+                     Typical reasons for an error here include:
+                     * The parent directory does not exist, cannot be created, or disallows writing.
+                     * The persistent store is not accessible, due to permissions or data protection when the device is locked.
+                     * The device is out of space.
+                     * The store could not be migrated to the current model version.
+                     Check the error message to determine what the actual problem was.
+                    */
+                    NSLog(@"Unresolved error %@, %@", error, error.userInfo);
+                    abort();
+                }
+            }];
+        }
+    }
+    
+    return _persistentContainer;
+}
+
+#pragma mark - Core Data Saving support
+
+- (void)saveContext {
+    NSManagedObjectContext *context = self.persistentContainer.viewContext;
+    NSError *error = nil;
+    if ([context hasChanges] && ![context save:&error]) {
+        // Replace this implementation with code to handle the error appropriately.
+        // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
+        NSLog(@"Unresolved error %@, %@", error, error.userInfo);
+        abort();
+    }
+}
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AccentColor.colorset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AccentColor.colorset/Contents.json
new file mode 100644
index 0000000..eb87897
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AccentColor.colorset/Contents.json
@@ -0,0 +1,11 @@
+{
+  "colors" : [
+    {
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Contents.json
new file mode 100644
index 0000000..0b05e18
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Contents.json
@@ -0,0 +1,77 @@
+{
+  "images" : [
+    {
+      "idiom" : "iphone",
+      "scale" : "2x",
+      "size" : "20x20"
+    },
+    {
+      "idiom" : "iphone",
+      "scale" : "3x",
+      "size" : "20x20"
+    },
+    {
+      "filename" : "Icon-Small.png",
+      "idiom" : "iphone",
+      "scale" : "1x",
+      "size" : "29x29"
+    },
+    {
+      "filename" : "Icon-Small@2x.png",
+      "idiom" : "iphone",
+      "scale" : "2x",
+      "size" : "29x29"
+    },
+    {
+      "filename" : "Icon-Small@3x.png",
+      "idiom" : "iphone",
+      "scale" : "3x",
+      "size" : "29x29"
+    },
+    {
+      "filename" : "Icon-Spotlight-40@2x.png",
+      "idiom" : "iphone",
+      "scale" : "2x",
+      "size" : "40x40"
+    },
+    {
+      "filename" : "Icon-Spotlight-40@3x.png",
+      "idiom" : "iphone",
+      "scale" : "3x",
+      "size" : "40x40"
+    },
+    {
+      "filename" : "Icon.png",
+      "idiom" : "iphone",
+      "scale" : "1x",
+      "size" : "57x57"
+    },
+    {
+      "filename" : "Icon@2x.png",
+      "idiom" : "iphone",
+      "scale" : "2x",
+      "size" : "57x57"
+    },
+    {
+      "filename" : "Icon-60@2x.png",
+      "idiom" : "iphone",
+      "scale" : "2x",
+      "size" : "60x60"
+    },
+    {
+      "filename" : "Icon-60@3x.png",
+      "idiom" : "iphone",
+      "scale" : "3x",
+      "size" : "60x60"
+    },
+    {
+      "idiom" : "ios-marketing",
+      "scale" : "1x",
+      "size" : "1024x1024"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-60@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-60@2x.png
new file mode 100644
index 0000000..dbceea4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-60@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-60@3x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-60@3x.png
new file mode 100644
index 0000000..87aeccc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-60@3x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-Small.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-Small.png
new file mode 100644
index 0000000..d1a5596
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-Small.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-Small@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-Small@2x.png
new file mode 100644
index 0000000..b3cf002
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-Small@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-Small@3x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-Small@3x.png
new file mode 100644
index 0000000..581c8d8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-Small@3x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-Spotlight-40@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-Spotlight-40@2x.png
new file mode 100644
index 0000000..69160ad
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-Spotlight-40@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-Spotlight-40@3x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-Spotlight-40@3x.png
new file mode 100644
index 0000000..11bb6bc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon-Spotlight-40@3x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon.png
new file mode 100644
index 0000000..c1c0b89
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon@2x.png
new file mode 100644
index 0000000..b78c28d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon-1.appiconset/Icon@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon.appiconset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..9221b9b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,98 @@
+{
+  "images" : [
+    {
+      "idiom" : "iphone",
+      "scale" : "2x",
+      "size" : "20x20"
+    },
+    {
+      "idiom" : "iphone",
+      "scale" : "3x",
+      "size" : "20x20"
+    },
+    {
+      "idiom" : "iphone",
+      "scale" : "2x",
+      "size" : "29x29"
+    },
+    {
+      "idiom" : "iphone",
+      "scale" : "3x",
+      "size" : "29x29"
+    },
+    {
+      "idiom" : "iphone",
+      "scale" : "2x",
+      "size" : "40x40"
+    },
+    {
+      "idiom" : "iphone",
+      "scale" : "3x",
+      "size" : "40x40"
+    },
+    {
+      "idiom" : "iphone",
+      "scale" : "2x",
+      "size" : "60x60"
+    },
+    {
+      "idiom" : "iphone",
+      "scale" : "3x",
+      "size" : "60x60"
+    },
+    {
+      "idiom" : "ipad",
+      "scale" : "1x",
+      "size" : "20x20"
+    },
+    {
+      "idiom" : "ipad",
+      "scale" : "2x",
+      "size" : "20x20"
+    },
+    {
+      "idiom" : "ipad",
+      "scale" : "1x",
+      "size" : "29x29"
+    },
+    {
+      "idiom" : "ipad",
+      "scale" : "2x",
+      "size" : "29x29"
+    },
+    {
+      "idiom" : "ipad",
+      "scale" : "1x",
+      "size" : "40x40"
+    },
+    {
+      "idiom" : "ipad",
+      "scale" : "2x",
+      "size" : "40x40"
+    },
+    {
+      "idiom" : "ipad",
+      "scale" : "1x",
+      "size" : "76x76"
+    },
+    {
+      "idiom" : "ipad",
+      "scale" : "2x",
+      "size" : "76x76"
+    },
+    {
+      "idiom" : "ipad",
+      "scale" : "2x",
+      "size" : "83.5x83.5"
+    },
+    {
+      "idiom" : "ios-marketing",
+      "scale" : "1x",
+      "size" : "1024x1024"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/Contents.json
@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/device_default.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/device_default.imageset/Contents.json
new file mode 100644
index 0000000..e3cf157
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/device_default.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "device_default.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "device_default@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/device_default.imageset/device_default.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/device_default.imageset/device_default.png
new file mode 100644
index 0000000..6bb62f9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/device_default.imageset/device_default.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/device_default.imageset/device_default@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/device_default.imageset/device_default@2x.png
new file mode 100644
index 0000000..9ee752d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/device_default.imageset/device_default@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/duijiangji.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/duijiangji.imageset/Contents.json
new file mode 100644
index 0000000..f97fca3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/duijiangji.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "duijiangji-2.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/duijiangji.imageset/duijiangji-2.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/duijiangji.imageset/duijiangji-2.png
new file mode 100644
index 0000000..3cc8402
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/duijiangji.imageset/duijiangji-2.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message.imageset/Contents.json
new file mode 100644
index 0000000..2519bfb
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "message.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "message@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message.imageset/message.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message.imageset/message.png
new file mode 100644
index 0000000..e8d7e2a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message.imageset/message.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message.imageset/message@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message.imageset/message@2x.png
new file mode 100644
index 0000000..b09951e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message.imageset/message@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message_sel.imageset/Contents.json
new file mode 100644
index 0000000..c1b8903
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "message_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "message_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message_sel.imageset/message_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message_sel.imageset/message_sel.png
new file mode 100644
index 0000000..4c5bbf8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message_sel.imageset/message_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message_sel.imageset/message_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message_sel.imageset/message_sel@2x.png
new file mode 100644
index 0000000..7eb6bd3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/message_sel.imageset/message_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/offline.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/offline.imageset/Contents.json
new file mode 100644
index 0000000..6823c6e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/offline.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "offline.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "offline@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/offline.imageset/offline.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/offline.imageset/offline.png
new file mode 100644
index 0000000..b9150fc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/offline.imageset/offline.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/offline.imageset/offline@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/offline.imageset/offline@2x.png
new file mode 100644
index 0000000..b26f2f7
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/offline.imageset/offline@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback.imageset/Contents.json
new file mode 100644
index 0000000..a81e0b0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "playback.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "playback@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback.imageset/playback.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback.imageset/playback.png
new file mode 100644
index 0000000..685601d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback.imageset/playback.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback.imageset/playback@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback.imageset/playback@2x.png
new file mode 100644
index 0000000..8d23634
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback.imageset/playback@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback_sel.imageset/Contents.json
new file mode 100644
index 0000000..a9e8f30
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "playback_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "playback_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback_sel.imageset/playback_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback_sel.imageset/playback_sel.png
new file mode 100644
index 0000000..57b946b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback_sel.imageset/playback_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback_sel.imageset/playback_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback_sel.imageset/playback_sel@2x.png
new file mode 100644
index 0000000..f6e308a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/playback_sel.imageset/playback_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup.imageset/Contents.json
new file mode 100644
index 0000000..ec63d63
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "setup.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "setup@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup.imageset/setup.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup.imageset/setup.png
new file mode 100644
index 0000000..3e72fcf
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup.imageset/setup.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup.imageset/setup@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup.imageset/setup@2x.png
new file mode 100644
index 0000000..3ec9640
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup.imageset/setup@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup_sel.imageset/Contents.json
new file mode 100644
index 0000000..ea22170
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "setup_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "setup_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup_sel.imageset/setup_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup_sel.imageset/setup_sel.png
new file mode 100644
index 0000000..1685e84
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup_sel.imageset/setup_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup_sel.imageset/setup_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup_sel.imageset/setup_sel@2x.png
new file mode 100644
index 0000000..ef862fc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/DeviceList/setup_sel.imageset/setup_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LaunchImage.launchimage/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LaunchImage.launchimage/Contents.json
new file mode 100644
index 0000000..f524f2f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LaunchImage.launchimage/Contents.json
@@ -0,0 +1,64 @@
+{
+  "images" : [
+    {
+      "extent" : "full-screen",
+      "filename" : "LanuchImage-R5-5.png",
+      "idiom" : "iphone",
+      "minimum-system-version" : "8.0",
+      "orientation" : "portrait",
+      "scale" : "3x",
+      "subtype" : "736h"
+    },
+    {
+      "extent" : "full-screen",
+      "filename" : "LanuchImage-R4-7.png",
+      "idiom" : "iphone",
+      "minimum-system-version" : "8.0",
+      "orientation" : "portrait",
+      "scale" : "2x",
+      "subtype" : "667h"
+    },
+    {
+      "extent" : "full-screen",
+      "filename" : "LanuchImage-2x.png",
+      "idiom" : "iphone",
+      "minimum-system-version" : "7.0",
+      "orientation" : "portrait",
+      "scale" : "2x"
+    },
+    {
+      "extent" : "full-screen",
+      "filename" : "LanuchImage-R4.png",
+      "idiom" : "iphone",
+      "minimum-system-version" : "7.0",
+      "orientation" : "portrait",
+      "scale" : "2x",
+      "subtype" : "retina4"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "orientation" : "portrait",
+      "scale" : "1x"
+    },
+    {
+      "extent" : "full-screen",
+      "filename" : "LanuchImage-2x.png",
+      "idiom" : "iphone",
+      "orientation" : "portrait",
+      "scale" : "2x"
+    },
+    {
+      "extent" : "full-screen",
+      "filename" : "LanuchImage-R4.png",
+      "idiom" : "iphone",
+      "orientation" : "portrait",
+      "scale" : "2x",
+      "subtype" : "retina4"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LaunchImage.launchimage/LanuchImage-2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LaunchImage.launchimage/LanuchImage-2x.png
new file mode 100644
index 0000000..0490a01
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LaunchImage.launchimage/LanuchImage-2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LaunchImage.launchimage/LanuchImage-R4-7.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LaunchImage.launchimage/LanuchImage-R4-7.png
new file mode 100644
index 0000000..4334a23
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LaunchImage.launchimage/LanuchImage-R4-7.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LaunchImage.launchimage/LanuchImage-R4.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LaunchImage.launchimage/LanuchImage-R4.png
new file mode 100644
index 0000000..8df3556
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LaunchImage.launchimage/LanuchImage-R4.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LaunchImage.launchimage/LanuchImage-R5-5.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LaunchImage.launchimage/LanuchImage-R5-5.png
new file mode 100644
index 0000000..229ee78
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LaunchImage.launchimage/LanuchImage-R5-5.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/Contents.json
@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/StreamStudio-2.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/StreamStudio-2.imageset/Contents.json
new file mode 100644
index 0000000..542f42c
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/StreamStudio-2.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "StreamStudio-2.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/StreamStudio-2.imageset/StreamStudio-2.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/StreamStudio-2.imageset/StreamStudio-2.png
new file mode 100644
index 0000000..f4f84f5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/StreamStudio-2.imageset/StreamStudio-2.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/StreamStudio.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/StreamStudio.imageset/Contents.json
new file mode 100644
index 0000000..b7ab750
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/StreamStudio.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "StreamStudio.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/StreamStudio.imageset/StreamStudio.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/StreamStudio.imageset/StreamStudio.png
new file mode 100644
index 0000000..0dc10b8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/StreamStudio.imageset/StreamStudio.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/cloud.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/cloud.imageset/Contents.json
new file mode 100644
index 0000000..55ef386
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/cloud.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "cloud.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/cloud.imageset/cloud.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/cloud.imageset/cloud.png
new file mode 100644
index 0000000..d246e8d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/cloud.imageset/cloud.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/picture_bg.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/picture_bg.imageset/Contents.json
new file mode 100644
index 0000000..e3acd91
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/picture_bg.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "picture_bg.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "picture_bg@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/picture_bg.imageset/picture_bg.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/picture_bg.imageset/picture_bg.png
new file mode 100644
index 0000000..6d59dd0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/picture_bg.imageset/picture_bg.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/picture_bg.imageset/picture_bg@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/picture_bg.imageset/picture_bg@2x.png
new file mode 100644
index 0000000..fe4b56c
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/picture_bg.imageset/picture_bg@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play.imageset/Contents.json
new file mode 100644
index 0000000..ad6392d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "play.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "play@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play.imageset/play.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play.imageset/play.png
new file mode 100644
index 0000000..85eb80e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play.imageset/play.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play.imageset/play@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play.imageset/play@2x.png
new file mode 100644
index 0000000..854cdf9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play.imageset/play@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close.imageset/Contents.json
new file mode 100644
index 0000000..c34d33b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "play_close.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "play_close@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close.imageset/play_close.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close.imageset/play_close.png
new file mode 100644
index 0000000..0ad333d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close.imageset/play_close.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close.imageset/play_close@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close.imageset/play_close@2x.png
new file mode 100644
index 0000000..e5f1fb1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close.imageset/play_close@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close_sel.imageset/Contents.json
new file mode 100644
index 0000000..637d883
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "play_close_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "play_close_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close_sel.imageset/play_close_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close_sel.imageset/play_close_sel.png
new file mode 100644
index 0000000..9754105
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close_sel.imageset/play_close_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close_sel.imageset/play_close_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close_sel.imageset/play_close_sel@2x.png
new file mode 100644
index 0000000..13eb5cd
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_close_sel.imageset/play_close_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_sel.imageset/Contents.json
new file mode 100644
index 0000000..4cec557
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "play_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "play_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_sel.imageset/play_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_sel.imageset/play_sel.png
new file mode 100644
index 0000000..85e02b3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_sel.imageset/play_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_sel.imageset/play_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_sel.imageset/play_sel@2x.png
new file mode 100644
index 0000000..5b3fc80
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/play_sel.imageset/play_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel.imageset/Contents.json
new file mode 100644
index 0000000..83b47bb
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_barrel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_barrel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel.imageset/preview_barrel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel.imageset/preview_barrel.png
new file mode 100644
index 0000000..1269e01
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel.imageset/preview_barrel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel.imageset/preview_barrel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel.imageset/preview_barrel@2x.png
new file mode 100644
index 0000000..cad41ed
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel.imageset/preview_barrel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_dis.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_dis.imageset/Contents.json
new file mode 100644
index 0000000..032a237
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_dis.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_barrel_dis.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_barrel_dis@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_dis.imageset/preview_barrel_dis.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_dis.imageset/preview_barrel_dis.png
new file mode 100644
index 0000000..881bb3f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_dis.imageset/preview_barrel_dis.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_dis.imageset/preview_barrel_dis@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_dis.imageset/preview_barrel_dis@2x.png
new file mode 100644
index 0000000..5cdd845
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_dis.imageset/preview_barrel_dis@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_sel.imageset/Contents.json
new file mode 100644
index 0000000..49c76e1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_barrel_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_barrel_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_sel.imageset/preview_barrel_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_sel.imageset/preview_barrel_sel.png
new file mode 100644
index 0000000..d7acf20
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_sel.imageset/preview_barrel_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_sel.imageset/preview_barrel_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_sel.imageset/preview_barrel_sel@2x.png
new file mode 100644
index 0000000..a7660e7
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_barrel_sel.imageset/preview_barrel_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording.imageset/Contents.json
new file mode 100644
index 0000000..bdb6947
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_recording.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_recording@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording.imageset/preview_recording.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording.imageset/preview_recording.png
new file mode 100644
index 0000000..8a3f44d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording.imageset/preview_recording.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording.imageset/preview_recording@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording.imageset/preview_recording@2x.png
new file mode 100644
index 0000000..a0d840f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording.imageset/preview_recording@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_dis.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_dis.imageset/Contents.json
new file mode 100644
index 0000000..67c6a2c
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_dis.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_recording_dis.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_recording_dis@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_dis.imageset/preview_recording_dis.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_dis.imageset/preview_recording_dis.png
new file mode 100644
index 0000000..8f2fa68
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_dis.imageset/preview_recording_dis.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_dis.imageset/preview_recording_dis@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_dis.imageset/preview_recording_dis@2x.png
new file mode 100644
index 0000000..17af37e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_dis.imageset/preview_recording_dis@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_sel.imageset/Contents.json
new file mode 100644
index 0000000..f0744e9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_recording_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_recording_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_sel.imageset/preview_recording_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_sel.imageset/preview_recording_sel.png
new file mode 100644
index 0000000..582049b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_sel.imageset/preview_recording_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_sel.imageset/preview_recording_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_sel.imageset/preview_recording_sel@2x.png
new file mode 100644
index 0000000..f7b8be1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_recording_sel.imageset/preview_recording_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot.imageset/Contents.json
new file mode 100644
index 0000000..ccf1171
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_screenshot.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_screenshot@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot.imageset/preview_screenshot.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot.imageset/preview_screenshot.png
new file mode 100644
index 0000000..51f91f8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot.imageset/preview_screenshot.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot.imageset/preview_screenshot@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot.imageset/preview_screenshot@2x.png
new file mode 100644
index 0000000..ce23ff6
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot.imageset/preview_screenshot@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_dis.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_dis.imageset/Contents.json
new file mode 100644
index 0000000..c3db802
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_dis.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_screenshot_dis.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_screenshot_dis@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_dis.imageset/preview_screenshot_dis.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_dis.imageset/preview_screenshot_dis.png
new file mode 100644
index 0000000..50eb992
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_dis.imageset/preview_screenshot_dis.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_dis.imageset/preview_screenshot_dis@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_dis.imageset/preview_screenshot_dis@2x.png
new file mode 100644
index 0000000..071a302
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_dis.imageset/preview_screenshot_dis@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_sel.imageset/Contents.json
new file mode 100644
index 0000000..b900df4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_screenshot_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_screenshot_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_sel.imageset/preview_screenshot_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_sel.imageset/preview_screenshot_sel.png
new file mode 100644
index 0000000..74fe3b1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_sel.imageset/preview_screenshot_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_sel.imageset/preview_screenshot_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_sel.imageset/preview_screenshot_sel@2x.png
new file mode 100644
index 0000000..f9fb901
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_screenshot_sel.imageset/preview_screenshot_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stoppaly_btn_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stoppaly_btn_sel.imageset/Contents.json
new file mode 100644
index 0000000..98275d0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stoppaly_btn_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_stoppaly_btn_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_stoppaly_btn_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel.png
new file mode 100644
index 0000000..7910053
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel@2x.png
new file mode 100644
index 0000000..0668cef
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn .imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn .imageset/Contents.json
new file mode 100644
index 0000000..d7aabbd
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn .imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_stopplay_btn .png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_stopplay_btn @2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn .imageset/preview_stopplay_btn .png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn .imageset/preview_stopplay_btn .png
new file mode 100644
index 0000000..72c3fb4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn .imageset/preview_stopplay_btn .png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn .imageset/preview_stopplay_btn @2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn .imageset/preview_stopplay_btn @2x.png
new file mode 100644
index 0000000..003c00b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn .imageset/preview_stopplay_btn @2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn.imageset/Contents.json
new file mode 100644
index 0000000..d7aabbd
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_stopplay_btn .png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_stopplay_btn @2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn.imageset/preview_stopplay_btn .png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn.imageset/preview_stopplay_btn .png
new file mode 100644
index 0000000..72c3fb4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn.imageset/preview_stopplay_btn .png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn.imageset/preview_stopplay_btn @2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn.imageset/preview_stopplay_btn @2x.png
new file mode 100644
index 0000000..003c00b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn.imageset/preview_stopplay_btn @2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn_sel.imageset/Contents.json
new file mode 100644
index 0000000..0168d6f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_stopplay_btn_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_stopplay_btn_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel.png
new file mode 100644
index 0000000..7910053
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel@2x.png
new file mode 100644
index 0000000..0668cef
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback.imageset/Contents.json
new file mode 100644
index 0000000..b43f4df
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_talkback.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_talkback@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback.imageset/preview_talkback.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback.imageset/preview_talkback.png
new file mode 100644
index 0000000..e785577
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback.imageset/preview_talkback.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback.imageset/preview_talkback@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback.imageset/preview_talkback@2x.png
new file mode 100644
index 0000000..12f5af4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback.imageset/preview_talkback@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_dis.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_dis.imageset/Contents.json
new file mode 100644
index 0000000..65f0448
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_dis.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_talkback_dis.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_talkback_dis@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_dis.imageset/preview_talkback_dis.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_dis.imageset/preview_talkback_dis.png
new file mode 100644
index 0000000..e233237
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_dis.imageset/preview_talkback_dis.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_dis.imageset/preview_talkback_dis@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_dis.imageset/preview_talkback_dis@2x.png
new file mode 100644
index 0000000..a960102
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_dis.imageset/preview_talkback_dis@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_sel.imageset/Contents.json
new file mode 100644
index 0000000..955c426
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_talkback_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_talkback_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_sel.imageset/preview_talkback_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_sel.imageset/preview_talkback_sel.png
new file mode 100644
index 0000000..5155efd
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_sel.imageset/preview_talkback_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_sel.imageset/preview_talkback_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_sel.imageset/preview_talkback_sel@2x.png
new file mode 100644
index 0000000..4a13b1e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_talkback_sel.imageset/preview_talkback_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn.imageset/Contents.json
new file mode 100644
index 0000000..885eb6b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_unvoice_btn.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_unvoice_btn@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn.imageset/preview_unvoice_btn.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn.imageset/preview_unvoice_btn.png
new file mode 100644
index 0000000..77c5688
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn.imageset/preview_unvoice_btn.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn.imageset/preview_unvoice_btn@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn.imageset/preview_unvoice_btn@2x.png
new file mode 100644
index 0000000..2554612
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn.imageset/preview_unvoice_btn@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn_sel.imageset/Contents.json
new file mode 100644
index 0000000..f25f265
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_unvoice_btn_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_unvoice_btn_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel.png
new file mode 100644
index 0000000..2908329
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel@2x.png
new file mode 100644
index 0000000..8858696
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn.imageset/Contents.json
new file mode 100644
index 0000000..e7c16de
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_voice_btn.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_voice_btn@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn.imageset/preview_voice_btn.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn.imageset/preview_voice_btn.png
new file mode 100644
index 0000000..b330c2a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn.imageset/preview_voice_btn.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn.imageset/preview_voice_btn@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn.imageset/preview_voice_btn@2x.png
new file mode 100644
index 0000000..2dff6b3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn.imageset/preview_voice_btn@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn_sel.imageset/Contents.json
new file mode 100644
index 0000000..01ea8c2
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_voice_btn_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_voice_btn_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn_sel.imageset/preview_voice_btn_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn_sel.imageset/preview_voice_btn_sel.png
new file mode 100644
index 0000000..7276951
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn_sel.imageset/preview_voice_btn_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn_sel.imageset/preview_voice_btn_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn_sel.imageset/preview_voice_btn_sel@2x.png
new file mode 100644
index 0000000..1bbf161
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/preview_voice_btn_sel.imageset/preview_voice_btn_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bg.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bg.imageset/Contents.json
new file mode 100644
index 0000000..9868ffb
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bg.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "ptz_bg.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ptz_bg@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bg.imageset/ptz_bg.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bg.imageset/ptz_bg.png
new file mode 100644
index 0000000..752bf61
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bg.imageset/ptz_bg.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bg.imageset/ptz_bg@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bg.imageset/ptz_bg@2x.png
new file mode 100644
index 0000000..380bb27
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bg.imageset/ptz_bg@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bottom_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bottom_sel.imageset/Contents.json
new file mode 100644
index 0000000..c5293c8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bottom_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "ptz_bottom_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ptz_bottom_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bottom_sel.imageset/ptz_bottom_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bottom_sel.imageset/ptz_bottom_sel.png
new file mode 100644
index 0000000..d2a408f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bottom_sel.imageset/ptz_bottom_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bottom_sel.imageset/ptz_bottom_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bottom_sel.imageset/ptz_bottom_sel@2x.png
new file mode 100644
index 0000000..76d8d2d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_bottom_sel.imageset/ptz_bottom_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_left_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_left_sel.imageset/Contents.json
new file mode 100644
index 0000000..488cc0d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_left_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "ptz_left_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ptz_left_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_left_sel.imageset/ptz_left_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_left_sel.imageset/ptz_left_sel.png
new file mode 100644
index 0000000..7bb790f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_left_sel.imageset/ptz_left_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_left_sel.imageset/ptz_left_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_left_sel.imageset/ptz_left_sel@2x.png
new file mode 100644
index 0000000..767c0ce
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_left_sel.imageset/ptz_left_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_right_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_right_sel.imageset/Contents.json
new file mode 100644
index 0000000..7a5097b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_right_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "ptz_right_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ptz_right_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_right_sel.imageset/ptz_right_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_right_sel.imageset/ptz_right_sel.png
new file mode 100644
index 0000000..cb55201
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_right_sel.imageset/ptz_right_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_right_sel.imageset/ptz_right_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_right_sel.imageset/ptz_right_sel@2x.png
new file mode 100644
index 0000000..8a7f7e0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_right_sel.imageset/ptz_right_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_down.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_down.imageset/Contents.json
new file mode 100644
index 0000000..4eefcf9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_down.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ptz_scale_arrow_down@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "ptz_scale_arrow_down@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_down.imageset/ptz_scale_arrow_down@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_down.imageset/ptz_scale_arrow_down@2x.png
new file mode 100644
index 0000000..f3749b5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_down.imageset/ptz_scale_arrow_down@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_down.imageset/ptz_scale_arrow_down@3x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_down.imageset/ptz_scale_arrow_down@3x.png
new file mode 100644
index 0000000..76381a1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_down.imageset/ptz_scale_arrow_down@3x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_right.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_right.imageset/Contents.json
new file mode 100644
index 0000000..f59b3d3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_right.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ptz_scale_arrow_right@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "ptz_scale_arrow_right@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_right.imageset/ptz_scale_arrow_right@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_right.imageset/ptz_scale_arrow_right@2x.png
new file mode 100644
index 0000000..a52b621
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_right.imageset/ptz_scale_arrow_right@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_right.imageset/ptz_scale_arrow_right@3x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_right.imageset/ptz_scale_arrow_right@3x.png
new file mode 100644
index 0000000..53df4f2
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_scale_arrow_right.imageset/ptz_scale_arrow_right@3x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_up_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_up_sel.imageset/Contents.json
new file mode 100644
index 0000000..e428613
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_up_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "ptz_up_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ptz_up_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_up_sel.imageset/ptz_up_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_up_sel.imageset/ptz_up_sel.png
new file mode 100644
index 0000000..c9636b6
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_up_sel.imageset/ptz_up_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_up_sel.imageset/ptz_up_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_up_sel.imageset/ptz_up_sel@2x.png
new file mode 100644
index 0000000..2c063f8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/ptz_up_sel.imageset/ptz_up_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/spkImg.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/spkImg.imageset/Contents.json
new file mode 100644
index 0000000..e690b49
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/spkImg.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "spkImg.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "spkImg@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/spkImg.imageset/spkImg.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/spkImg.imageset/spkImg.png
new file mode 100644
index 0000000..3eea86e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/spkImg.imageset/spkImg.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/spkImg.imageset/spkImg@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/spkImg.imageset/spkImg@2x.png
new file mode 100644
index 0000000..e57f1e5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/LivePlay/spkImg.imageset/spkImg@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/Contents.json
@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/message_callhelp.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/message_callhelp.imageset/Contents.json
new file mode 100644
index 0000000..e1a8cfb
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/message_callhelp.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "message_callhelp.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "message_callhelp@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/message_callhelp.imageset/message_callhelp.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/message_callhelp.imageset/message_callhelp.png
new file mode 100644
index 0000000..28d68c0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/message_callhelp.imageset/message_callhelp.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/message_callhelp.imageset/message_callhelp@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/message_callhelp.imageset/message_callhelp@2x.png
new file mode 100644
index 0000000..a8c182d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/message_callhelp.imageset/message_callhelp@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message-1.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message-1.imageset/Contents.json
new file mode 100644
index 0000000..69799cc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message-1.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "no_message.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "no_message@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message-1.imageset/no_message.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message-1.imageset/no_message.png
new file mode 100644
index 0000000..8d1423f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message-1.imageset/no_message.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message-1.imageset/no_message@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message-1.imageset/no_message@2x.png
new file mode 100644
index 0000000..d739789
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message-1.imageset/no_message@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message.imageset/Contents.json
new file mode 100644
index 0000000..69799cc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "no_message.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "no_message@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message.imageset/no_message.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message.imageset/no_message.png
new file mode 100644
index 0000000..8d1423f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message.imageset/no_message.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message.imageset/no_message@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message.imageset/no_message@2x.png
new file mode 100644
index 0000000..d739789
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Message/no_message.imageset/no_message@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/Contents.json
@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/ic_extension.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/ic_extension.imageset/Contents.json
new file mode 100644
index 0000000..9c02ec1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/ic_extension.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ic_extension@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/ic_extension.imageset/ic_extension@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/ic_extension.imageset/ic_extension@2x.png
new file mode 100644
index 0000000..8dad7b9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/ic_extension.imageset/ic_extension@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/ic_recordtype.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/ic_recordtype.imageset/Contents.json
new file mode 100644
index 0000000..3bfccfd
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/ic_recordtype.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ic_recordtype@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/ic_recordtype.imageset/ic_recordtype@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/ic_recordtype.imageset/ic_recordtype@2x.png
new file mode 100644
index 0000000..b2b6248
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/ic_recordtype.imageset/ic_recordtype@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/large_back_btn.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/large_back_btn.imageset/Contents.json
new file mode 100644
index 0000000..2637062
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/large_back_btn.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "large_back_btn.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "large_back_btn@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/large_back_btn.imageset/large_back_btn.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/large_back_btn.imageset/large_back_btn.png
new file mode 100644
index 0000000..e4b9c79
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/large_back_btn.imageset/large_back_btn.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/large_back_btn.imageset/large_back_btn@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/large_back_btn.imageset/large_back_btn@2x.png
new file mode 100644
index 0000000..b9318f6
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Navigationbar/large_back_btn.imageset/large_back_btn@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/Contents.json
@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/addDevice_success.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/addDevice_success.imageset/Contents.json
new file mode 100644
index 0000000..251a426
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/addDevice_success.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "addDevice_success.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "addDevice_success@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/addDevice_success.imageset/addDevice_success.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/addDevice_success.imageset/addDevice_success.png
new file mode 100644
index 0000000..9cda5ec
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/addDevice_success.imageset/addDevice_success.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/addDevice_success.imageset/addDevice_success@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/addDevice_success.imageset/addDevice_success@2x.png
new file mode 100644
index 0000000..918784d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/addDevice_success.imageset/addDevice_success@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server1.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server1.imageset/Contents.json
new file mode 100644
index 0000000..21bf7fe
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server1.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "add_server1.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "add_server1@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server1.imageset/add_server1.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server1.imageset/add_server1.png
new file mode 100644
index 0000000..bcb6c34
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server1.imageset/add_server1.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server1.imageset/add_server1@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server1.imageset/add_server1@2x.png
new file mode 100644
index 0000000..45257b5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server1.imageset/add_server1@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server2.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server2.imageset/Contents.json
new file mode 100644
index 0000000..cf82d06
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server2.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "add_server2.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "add_server2@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server2.imageset/add_server2.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server2.imageset/add_server2.png
new file mode 100644
index 0000000..d2d21d3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server2.imageset/add_server2.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server2.imageset/add_server2@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server2.imageset/add_server2@2x.png
new file mode 100644
index 0000000..9e4d171
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server2.imageset/add_server2@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server3.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server3.imageset/Contents.json
new file mode 100644
index 0000000..dda6388
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server3.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "add_server3.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "add_server3@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server3.imageset/add_server3.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server3.imageset/add_server3.png
new file mode 100644
index 0000000..6480d6b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server3.imageset/add_server3.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server3.imageset/add_server3@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server3.imageset/add_server3@2x.png
new file mode 100644
index 0000000..052c2f9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server3.imageset/add_server3@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server4.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server4.imageset/Contents.json
new file mode 100644
index 0000000..b7268af
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server4.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "add_server4.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "add_server4@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server4.imageset/add_server4.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server4.imageset/add_server4.png
new file mode 100644
index 0000000..71a3ad6
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server4.imageset/add_server4.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server4.imageset/add_server4@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server4.imageset/add_server4@2x.png
new file mode 100644
index 0000000..ada9984
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_server4.imageset/add_server4@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_success_icon.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_success_icon.imageset/Contents.json
new file mode 100644
index 0000000..8c4c5ed
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_success_icon.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "add_success_icon.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "add_success_icon@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_success_icon.imageset/add_success_icon.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_success_icon.imageset/add_success_icon.png
new file mode 100644
index 0000000..b0bb699
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_success_icon.imageset/add_success_icon.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_success_icon.imageset/add_success_icon@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_success_icon.imageset/add_success_icon@2x.png
new file mode 100644
index 0000000..c3c9f5d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/add_success_icon.imageset/add_success_icon@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button.imageset/Contents.json
new file mode 100644
index 0000000..f692f01
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "blue_button.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "blue_button@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button.imageset/blue_button.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button.imageset/blue_button.png
new file mode 100644
index 0000000..c652af2
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button.imageset/blue_button.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button.imageset/blue_button@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button.imageset/blue_button@2x.png
new file mode 100644
index 0000000..e0443c9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button.imageset/blue_button@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button_sel.imageset/Contents.json
new file mode 100644
index 0000000..08e87e5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "blue_button_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "blue_button_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button_sel.imageset/blue_button_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button_sel.imageset/blue_button_sel.png
new file mode 100644
index 0000000..b6a9641
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button_sel.imageset/blue_button_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button_sel.imageset/blue_button_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button_sel.imageset/blue_button_sel@2x.png
new file mode 100644
index 0000000..6bcf118
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/blue_button_sel.imageset/blue_button_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/button_disable.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/button_disable.imageset/Contents.json
new file mode 100644
index 0000000..ca11428
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/button_disable.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "button_disable.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "button_disable@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/button_disable.imageset/button_disable.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/button_disable.imageset/button_disable.png
new file mode 100644
index 0000000..244d7bd
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/button_disable.imageset/button_disable.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/button_disable.imageset/button_disable@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/button_disable.imageset/button_disable@2x.png
new file mode 100644
index 0000000..9ee4619
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/button_disable.imageset/button_disable@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/close.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/close.imageset/Contents.json
new file mode 100644
index 0000000..307aa33
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/close.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "close.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "close@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/close.imageset/close.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/close.imageset/close.png
new file mode 100644
index 0000000..6c6a737
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/close.imageset/close.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/close.imageset/close@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/close.imageset/close@2x.png
new file mode 100644
index 0000000..d3920af
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/close.imageset/close@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi1.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi1.imageset/Contents.json
new file mode 100644
index 0000000..88bb94f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi1.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "connect_wifi1.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "connect_wifi1@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi1.imageset/connect_wifi1.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi1.imageset/connect_wifi1.png
new file mode 100644
index 0000000..011301b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi1.imageset/connect_wifi1.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi1.imageset/connect_wifi1@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi1.imageset/connect_wifi1@2x.png
new file mode 100644
index 0000000..3534903
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi1.imageset/connect_wifi1@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi2.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi2.imageset/Contents.json
new file mode 100644
index 0000000..39c7788
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi2.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "connect_wifi2.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "connect_wifi2@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi2.imageset/connect_wifi2.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi2.imageset/connect_wifi2.png
new file mode 100644
index 0000000..a7ce842
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi2.imageset/connect_wifi2.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi2.imageset/connect_wifi2@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi2.imageset/connect_wifi2@2x.png
new file mode 100644
index 0000000..14cdbf3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi2.imageset/connect_wifi2@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi3.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi3.imageset/Contents.json
new file mode 100644
index 0000000..9837440
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi3.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "connect_wifi3.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "connect_wifi3@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi3.imageset/connect_wifi3.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi3.imageset/connect_wifi3.png
new file mode 100644
index 0000000..a8ffcdb
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi3.imageset/connect_wifi3.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi3.imageset/connect_wifi3@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi3.imageset/connect_wifi3@2x.png
new file mode 100644
index 0000000..f5f1429
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi3.imageset/connect_wifi3@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi4.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi4.imageset/Contents.json
new file mode 100644
index 0000000..8dfb63a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi4.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "connect_wifi4.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "connect_wifi4@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi4.imageset/connect_wifi4.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi4.imageset/connect_wifi4.png
new file mode 100644
index 0000000..17f1a9d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi4.imageset/connect_wifi4.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi4.imageset/connect_wifi4@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi4.imageset/connect_wifi4@2x.png
new file mode 100644
index 0000000..20b7aa5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/connect_wifi4.imageset/connect_wifi4@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device.imageset/Contents.json
new file mode 100644
index 0000000..001740d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "device.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "device@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device.imageset/device.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device.imageset/device.png
new file mode 100644
index 0000000..c4a40d4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device.imageset/device.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device.imageset/device@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device.imageset/device@2x.png
new file mode 100644
index 0000000..9722fa8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device.imageset/device@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device_reset.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device_reset.imageset/Contents.json
new file mode 100644
index 0000000..1cccf9a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device_reset.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "device_reset.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "device_reset@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device_reset.imageset/device_reset.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device_reset.imageset/device_reset.png
new file mode 100644
index 0000000..c6b50f1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device_reset.imageset/device_reset.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device_reset.imageset/device_reset@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device_reset.imageset/device_reset@2x.png
new file mode 100644
index 0000000..d847b82
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/device_reset.imageset/device_reset@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_account.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_account.imageset/Contents.json
new file mode 100644
index 0000000..9013a37
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_account.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "failure_account.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "failure_account@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_account.imageset/failure_account.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_account.imageset/failure_account.png
new file mode 100644
index 0000000..b307285
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_account.imageset/failure_account.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_account.imageset/failure_account@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_account.imageset/failure_account@2x.png
new file mode 100644
index 0000000..ac4932b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_account.imageset/failure_account@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_server.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_server.imageset/Contents.json
new file mode 100644
index 0000000..23d78cc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_server.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "failure_server.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "failure_server@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_server.imageset/failure_server.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_server.imageset/failure_server.png
new file mode 100644
index 0000000..7b58bca
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_server.imageset/failure_server.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_server.imageset/failure_server@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_server.imageset/failure_server@2x.png
new file mode 100644
index 0000000..3364f9d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_server.imageset/failure_server@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_wifi.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_wifi.imageset/Contents.json
new file mode 100644
index 0000000..89ee288
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_wifi.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "failure_wifi.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "failure_wifi@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_wifi.imageset/failure_wifi.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_wifi.imageset/failure_wifi.png
new file mode 100644
index 0000000..1fb8959
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_wifi.imageset/failure_wifi.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_wifi.imageset/failure_wifi@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_wifi.imageset/failure_wifi@2x.png
new file mode 100644
index 0000000..299fc91
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/failure_wifi.imageset/failure_wifi@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/icn_location.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/icn_location.imageset/Contents.json
new file mode 100644
index 0000000..05ea6ec
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/icn_location.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "icn_location.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/icn_location.imageset/icn_location.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/icn_location.imageset/icn_location.png
new file mode 100644
index 0000000..97aa6ca
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/icn_location.imageset/icn_location.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account1.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account1.imageset/Contents.json
new file mode 100644
index 0000000..9b916d0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account1.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "link_account1.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "link_account1@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account1.imageset/link_account1.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account1.imageset/link_account1.png
new file mode 100644
index 0000000..e6615ad
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account1.imageset/link_account1.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account1.imageset/link_account1@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account1.imageset/link_account1@2x.png
new file mode 100644
index 0000000..67e55ba
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account1.imageset/link_account1@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account2.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account2.imageset/Contents.json
new file mode 100644
index 0000000..85222c6
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account2.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "link_account2.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "link_account2@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account2.imageset/link_account2.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account2.imageset/link_account2.png
new file mode 100644
index 0000000..ccc2b87
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account2.imageset/link_account2.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account2.imageset/link_account2@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account2.imageset/link_account2@2x.png
new file mode 100644
index 0000000..0c1bfd0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account2.imageset/link_account2@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account3.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account3.imageset/Contents.json
new file mode 100644
index 0000000..2e11ac2
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account3.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "link_account3.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "link_account3@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account3.imageset/link_account3.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account3.imageset/link_account3.png
new file mode 100644
index 0000000..c9e312a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account3.imageset/link_account3.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account3.imageset/link_account3@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account3.imageset/link_account3@2x.png
new file mode 100644
index 0000000..398e371
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account3.imageset/link_account3@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account4.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account4.imageset/Contents.json
new file mode 100644
index 0000000..8fa09f9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account4.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "link_account4.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "link_account4@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account4.imageset/link_account4.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account4.imageset/link_account4.png
new file mode 100644
index 0000000..7064629
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account4.imageset/link_account4.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account4.imageset/link_account4@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account4.imageset/link_account4@2x.png
new file mode 100644
index 0000000..d7822e1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/link_account4.imageset/link_account4@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/no_wifi.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/no_wifi.imageset/Contents.json
new file mode 100644
index 0000000..b048fab
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/no_wifi.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "no_wifi.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "no_wifi@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/no_wifi.imageset/no_wifi.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/no_wifi.imageset/no_wifi.png
new file mode 100644
index 0000000..f0664b0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/no_wifi.imageset/no_wifi.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/no_wifi.imageset/no_wifi@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/no_wifi.imageset/no_wifi@2x.png
new file mode 100644
index 0000000..c45795a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/no_wifi.imageset/no_wifi@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/open.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/open.imageset/Contents.json
new file mode 100644
index 0000000..d0c187e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/open.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "open.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "open@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/open.imageset/open.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/open.imageset/open.png
new file mode 100644
index 0000000..0133f1f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/open.imageset/open.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/open.imageset/open@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/open.imageset/open@2x.png
new file mode 100644
index 0000000..ea7dbb5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/open.imageset/open@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button.imageset/Contents.json
new file mode 100644
index 0000000..b13f53a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "white_button.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "white_button@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button.imageset/white_button.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button.imageset/white_button.png
new file mode 100644
index 0000000..82791ff
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button.imageset/white_button.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button.imageset/white_button@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button.imageset/white_button@2x.png
new file mode 100644
index 0000000..1c37e69
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button.imageset/white_button@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button_sel.imageset/Contents.json
new file mode 100644
index 0000000..48f7ca5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "white_button_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "white_button_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button_sel.imageset/white_button_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button_sel.imageset/white_button_sel.png
new file mode 100644
index 0000000..8527b2f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button_sel.imageset/white_button_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button_sel.imageset/white_button_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button_sel.imageset/white_button_sel@2x.png
new file mode 100644
index 0000000..7d90c5c
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/white_button_sel.imageset/white_button_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/wifi_bg.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/wifi_bg.imageset/Contents.json
new file mode 100644
index 0000000..493a1bd
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/wifi_bg.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "wifi_bg.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "wifi_bg@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/wifi_bg.imageset/wifi_bg.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/wifi_bg.imageset/wifi_bg.png
new file mode 100644
index 0000000..314fff3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/wifi_bg.imageset/wifi_bg.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/wifi_bg.imageset/wifi_bg@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/wifi_bg.imageset/wifi_bg@2x.png
new file mode 100644
index 0000000..c93782b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/NetConfig/wifi_bg.imageset/wifi_bg@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/Contents.json
@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/guaduandianhua.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/guaduandianhua.imageset/Contents.json
new file mode 100644
index 0000000..1180dd8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/guaduandianhua.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "guaduandianhua.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/guaduandianhua.imageset/guaduandianhua.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/guaduandianhua.imageset/guaduandianhua.png
new file mode 100644
index 0000000..46c1dc8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/guaduandianhua.imageset/guaduandianhua.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_1.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_1.imageset/Contents.json
new file mode 100644
index 0000000..93cb3c9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_1.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "logo_loading_1.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "logo_loading_1@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_1.imageset/logo_loading_1.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_1.imageset/logo_loading_1.png
new file mode 100644
index 0000000..a2c457a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_1.imageset/logo_loading_1.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_1.imageset/logo_loading_1@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_1.imageset/logo_loading_1@2x.png
new file mode 100644
index 0000000..1aa5551
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_1.imageset/logo_loading_1@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_2.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_2.imageset/Contents.json
new file mode 100644
index 0000000..dce78c2
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_2.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "logo_loading_2.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "logo_loading_2@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_2.imageset/logo_loading_2.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_2.imageset/logo_loading_2.png
new file mode 100644
index 0000000..496e1a8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_2.imageset/logo_loading_2.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_2.imageset/logo_loading_2@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_2.imageset/logo_loading_2@2x.png
new file mode 100644
index 0000000..ba61f7c
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_2.imageset/logo_loading_2@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_3.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_3.imageset/Contents.json
new file mode 100644
index 0000000..f21d0a8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_3.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "logo_loading_3.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "logo_loading_3@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_3.imageset/logo_loading_3.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_3.imageset/logo_loading_3.png
new file mode 100644
index 0000000..3f37f67
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_3.imageset/logo_loading_3.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_3.imageset/logo_loading_3@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_3.imageset/logo_loading_3@2x.png
new file mode 100644
index 0000000..28dedfc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_3.imageset/logo_loading_3@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_4.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_4.imageset/Contents.json
new file mode 100644
index 0000000..b88300a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_4.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "logo_loading_4.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "logo_loading_4@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_4.imageset/logo_loading_4.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_4.imageset/logo_loading_4.png
new file mode 100644
index 0000000..73617d1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_4.imageset/logo_loading_4.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_4.imageset/logo_loading_4@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_4.imageset/logo_loading_4@2x.png
new file mode 100644
index 0000000..95254a1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/logo_loading_4.imageset/logo_loading_4@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/open_icon_1024.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/open_icon_1024.imageset/Contents.json
new file mode 100644
index 0000000..fc4f507
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/open_icon_1024.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "open_icon_1024.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "open_icon_1024@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/open_icon_1024.imageset/open_icon_1024.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/open_icon_1024.imageset/open_icon_1024.png
new file mode 100644
index 0000000..9fb7671
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/open_icon_1024.imageset/open_icon_1024.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/open_icon_1024.imageset/open_icon_1024@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/open_icon_1024.imageset/open_icon_1024@2x.png
new file mode 100644
index 0000000..044e08d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/open_icon_1024.imageset/open_icon_1024@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button.imageset/Contents.json
new file mode 100644
index 0000000..915685e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "orange_button.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "orange_button@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button.imageset/orange_button.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button.imageset/orange_button.png
new file mode 100644
index 0000000..776d2b4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button.imageset/orange_button.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button.imageset/orange_button@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button.imageset/orange_button@2x.png
new file mode 100644
index 0000000..21abd5a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button.imageset/orange_button@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button_sel.imageset/Contents.json
new file mode 100644
index 0000000..0344d3d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "orange_button_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "orange_button_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button_sel.imageset/orange_button_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button_sel.imageset/orange_button_sel.png
new file mode 100644
index 0000000..e165078
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button_sel.imageset/orange_button_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button_sel.imageset/orange_button_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button_sel.imageset/orange_button_sel@2x.png
new file mode 100644
index 0000000..be87b81
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Others/orange_button_sel.imageset/orange_button_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/Contents.json
@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/chuanshujilu--2.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/chuanshujilu--2.imageset/Contents.json
new file mode 100644
index 0000000..9d45159
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/chuanshujilu--2.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "chuanshujilu--2.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/chuanshujilu--2.imageset/chuanshujilu--2.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/chuanshujilu--2.imageset/chuanshujilu--2.png
new file mode 100644
index 0000000..4259ea6
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/chuanshujilu--2.imageset/chuanshujilu--2.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/chuanshujilu-.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/chuanshujilu-.imageset/Contents.json
new file mode 100644
index 0000000..1a490bc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/chuanshujilu-.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "chuanshujilu-.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/chuanshujilu-.imageset/chuanshujilu-.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/chuanshujilu-.imageset/chuanshujilu-.png
new file mode 100644
index 0000000..0763630
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/chuanshujilu-.imageset/chuanshujilu-.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/icon_download_fill.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/icon_download_fill.imageset/Contents.json
new file mode 100644
index 0000000..30ce1c3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/icon_download_fill.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "icon_download_fill.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/icon_download_fill.imageset/icon_download_fill.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/icon_download_fill.imageset/icon_download_fill.png
new file mode 100644
index 0000000..96fb961
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/icon_download_fill.imageset/icon_download_fill.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/no_video.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/no_video.imageset/Contents.json
new file mode 100644
index 0000000..a4d4cd8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/no_video.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "no_video.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "no_video@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/no_video.imageset/no_video.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/no_video.imageset/no_video.png
new file mode 100644
index 0000000..5ee7de2
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/no_video.imageset/no_video.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/no_video.imageset/no_video@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/no_video.imageset/no_video@2x.png
new file mode 100644
index 0000000..b2b05f4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/no_video.imageset/no_video@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause.imageset/Contents.json
new file mode 100644
index 0000000..12980e4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "pause.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "pause@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause.imageset/pause.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause.imageset/pause.png
new file mode 100644
index 0000000..3093598
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause.imageset/pause.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause.imageset/pause@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause.imageset/pause@2x.png
new file mode 100644
index 0000000..8ca260b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause.imageset/pause@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause_sel.imageset/Contents.json
new file mode 100644
index 0000000..1232c2d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "pause_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "pause_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause_sel.imageset/pause_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause_sel.imageset/pause_sel.png
new file mode 100644
index 0000000..ae0bc5c
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause_sel.imageset/pause_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause_sel.imageset/pause_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause_sel.imageset/pause_sel@2x.png
new file mode 100644
index 0000000..3a8fea8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/pause_sel.imageset/pause_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/play_download.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/play_download.imageset/Contents.json
new file mode 100644
index 0000000..8847547
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/play_download.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "play_download@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/play_download.imageset/play_download@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/play_download.imageset/play_download@2x.png
new file mode 100644
index 0000000..9a6c96a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/play_download.imageset/play_download@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/play_rate.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/play_rate.imageset/Contents.json
new file mode 100644
index 0000000..2165a01
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/play_rate.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "play_rate.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/play_rate.imageset/play_rate.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/play_rate.imageset/play_rate.png
new file mode 100644
index 0000000..7e72cb8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/play_rate.imageset/play_rate.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge.imageset/Contents.json
new file mode 100644
index 0000000..73a989d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_enlarge.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_enlarge@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge.imageset/preview_enlarge.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge.imageset/preview_enlarge.png
new file mode 100644
index 0000000..fafd7e5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge.imageset/preview_enlarge.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge.imageset/preview_enlarge@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge.imageset/preview_enlarge@2x.png
new file mode 100644
index 0000000..74bf56d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge.imageset/preview_enlarge@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge_btn_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge_btn_sel.imageset/Contents.json
new file mode 100644
index 0000000..d1b4589
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge_btn_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_enlarge_btn_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_enlarge_btn_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel.png
new file mode 100644
index 0000000..a823d6f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel@2x.png
new file mode 100644
index 0000000..c1838af
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn.imageset/Contents.json
new file mode 100644
index 0000000..3de25dc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_play_btn.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_play_btn@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn.imageset/preview_play_btn.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn.imageset/preview_play_btn.png
new file mode 100644
index 0000000..22b8248
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn.imageset/preview_play_btn.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn.imageset/preview_play_btn@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn.imageset/preview_play_btn@2x.png
new file mode 100644
index 0000000..7d1bbbe
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn.imageset/preview_play_btn@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn_sel.imageset/Contents.json
new file mode 100644
index 0000000..7aafe66
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_play_btn_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_play_btn_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn_sel.imageset/preview_play_btn_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn_sel.imageset/preview_play_btn_sel.png
new file mode 100644
index 0000000..9b398b5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn_sel.imageset/preview_play_btn_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn_sel.imageset/preview_play_btn_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn_sel.imageset/preview_play_btn_sel@2x.png
new file mode 100644
index 0000000..2ea80f4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/preview_play_btn_sel.imageset/preview_play_btn_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider.imageset/Contents.json
new file mode 100644
index 0000000..c3a2a0d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "slider.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "slider@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider.imageset/slider.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider.imageset/slider.png
new file mode 100644
index 0000000..55b4ee9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider.imageset/slider.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider.imageset/slider@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider.imageset/slider@2x.png
new file mode 100644
index 0000000..6106de6
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider.imageset/slider@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider_sel.imageset/Contents.json
new file mode 100644
index 0000000..e9469b4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "slider_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "slider_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider_sel.imageset/slider_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider_sel.imageset/slider_sel.png
new file mode 100644
index 0000000..fb1b326
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider_sel.imageset/slider_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider_sel.imageset/slider_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider_sel.imageset/slider_sel@2x.png
new file mode 100644
index 0000000..15a040b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Playback/slider_sel.imageset/slider_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Setting/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Setting/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Setting/Contents.json
@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Setting/upgrade.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Setting/upgrade.imageset/Contents.json
new file mode 100644
index 0000000..1ad2c93
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Setting/upgrade.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "upgrade.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "upgrade@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Setting/upgrade.imageset/upgrade.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Setting/upgrade.imageset/upgrade.png
new file mode 100644
index 0000000..db6b714
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Setting/upgrade.imageset/upgrade.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Setting/upgrade.imageset/upgrade@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Setting/upgrade.imageset/upgrade@2x.png
new file mode 100644
index 0000000..3df33e1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/Setting/upgrade.imageset/upgrade@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/StreamStudio-2.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/StreamStudio-2.imageset/Contents.json
new file mode 100644
index 0000000..542f42c
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/StreamStudio-2.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "StreamStudio-2.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/StreamStudio-2.imageset/StreamStudio-2.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/StreamStudio-2.imageset/StreamStudio-2.png
new file mode 100644
index 0000000..f4f84f5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/StreamStudio-2.imageset/StreamStudio-2.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/StreamStudio.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/StreamStudio.imageset/Contents.json
new file mode 100644
index 0000000..b7ab750
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/StreamStudio.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "StreamStudio.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/StreamStudio.imageset/StreamStudio.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/StreamStudio.imageset/StreamStudio.png
new file mode 100644
index 0000000..0dc10b8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/StreamStudio.imageset/StreamStudio.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/addDevice_success.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/addDevice_success.imageset/Contents.json
new file mode 100644
index 0000000..251a426
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/addDevice_success.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "addDevice_success.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "addDevice_success@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/addDevice_success.imageset/addDevice_success.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/addDevice_success.imageset/addDevice_success.png
new file mode 100644
index 0000000..9cda5ec
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/addDevice_success.imageset/addDevice_success.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/addDevice_success.imageset/addDevice_success@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/addDevice_success.imageset/addDevice_success@2x.png
new file mode 100644
index 0000000..918784d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/addDevice_success.imageset/addDevice_success@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server1.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server1.imageset/Contents.json
new file mode 100644
index 0000000..21bf7fe
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server1.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "add_server1.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "add_server1@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server1.imageset/add_server1.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server1.imageset/add_server1.png
new file mode 100644
index 0000000..bcb6c34
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server1.imageset/add_server1.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server1.imageset/add_server1@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server1.imageset/add_server1@2x.png
new file mode 100644
index 0000000..45257b5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server1.imageset/add_server1@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server2.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server2.imageset/Contents.json
new file mode 100644
index 0000000..cf82d06
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server2.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "add_server2.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "add_server2@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server2.imageset/add_server2.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server2.imageset/add_server2.png
new file mode 100644
index 0000000..d2d21d3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server2.imageset/add_server2.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server2.imageset/add_server2@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server2.imageset/add_server2@2x.png
new file mode 100644
index 0000000..9e4d171
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server2.imageset/add_server2@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server3.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server3.imageset/Contents.json
new file mode 100644
index 0000000..dda6388
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server3.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "add_server3.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "add_server3@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server3.imageset/add_server3.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server3.imageset/add_server3.png
new file mode 100644
index 0000000..6480d6b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server3.imageset/add_server3.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server3.imageset/add_server3@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server3.imageset/add_server3@2x.png
new file mode 100644
index 0000000..052c2f9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server3.imageset/add_server3@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server4.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server4.imageset/Contents.json
new file mode 100644
index 0000000..b7268af
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server4.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "add_server4.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "add_server4@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server4.imageset/add_server4.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server4.imageset/add_server4.png
new file mode 100644
index 0000000..71a3ad6
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server4.imageset/add_server4.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server4.imageset/add_server4@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server4.imageset/add_server4@2x.png
new file mode 100644
index 0000000..ada9984
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_server4.imageset/add_server4@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_success_icon.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_success_icon.imageset/Contents.json
new file mode 100644
index 0000000..8c4c5ed
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_success_icon.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "add_success_icon.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "add_success_icon@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_success_icon.imageset/add_success_icon.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_success_icon.imageset/add_success_icon.png
new file mode 100644
index 0000000..b0bb699
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_success_icon.imageset/add_success_icon.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_success_icon.imageset/add_success_icon@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_success_icon.imageset/add_success_icon@2x.png
new file mode 100644
index 0000000..c3c9f5d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/add_success_icon.imageset/add_success_icon@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button.imageset/Contents.json
new file mode 100644
index 0000000..f692f01
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "blue_button.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "blue_button@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button.imageset/blue_button.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button.imageset/blue_button.png
new file mode 100644
index 0000000..c652af2
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button.imageset/blue_button.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button.imageset/blue_button@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button.imageset/blue_button@2x.png
new file mode 100644
index 0000000..e0443c9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button.imageset/blue_button@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button_sel.imageset/Contents.json
new file mode 100644
index 0000000..08e87e5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "blue_button_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "blue_button_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button_sel.imageset/blue_button_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button_sel.imageset/blue_button_sel.png
new file mode 100644
index 0000000..b6a9641
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button_sel.imageset/blue_button_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button_sel.imageset/blue_button_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button_sel.imageset/blue_button_sel@2x.png
new file mode 100644
index 0000000..6bcf118
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/blue_button_sel.imageset/blue_button_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/button_disable.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/button_disable.imageset/Contents.json
new file mode 100644
index 0000000..ca11428
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/button_disable.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "button_disable.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "button_disable@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/button_disable.imageset/button_disable.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/button_disable.imageset/button_disable.png
new file mode 100644
index 0000000..244d7bd
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/button_disable.imageset/button_disable.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/button_disable.imageset/button_disable@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/button_disable.imageset/button_disable@2x.png
new file mode 100644
index 0000000..9ee4619
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/button_disable.imageset/button_disable@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/chuanshujilu--2.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/chuanshujilu--2.imageset/Contents.json
new file mode 100644
index 0000000..9d45159
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/chuanshujilu--2.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "chuanshujilu--2.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/chuanshujilu--2.imageset/chuanshujilu--2.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/chuanshujilu--2.imageset/chuanshujilu--2.png
new file mode 100644
index 0000000..4259ea6
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/chuanshujilu--2.imageset/chuanshujilu--2.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/chuanshujilu-.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/chuanshujilu-.imageset/Contents.json
new file mode 100644
index 0000000..1a490bc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/chuanshujilu-.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "chuanshujilu-.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/chuanshujilu-.imageset/chuanshujilu-.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/chuanshujilu-.imageset/chuanshujilu-.png
new file mode 100644
index 0000000..0763630
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/chuanshujilu-.imageset/chuanshujilu-.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/close.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/close.imageset/Contents.json
new file mode 100644
index 0000000..307aa33
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/close.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "close.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "close@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/close.imageset/close.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/close.imageset/close.png
new file mode 100644
index 0000000..6c6a737
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/close.imageset/close.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/close.imageset/close@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/close.imageset/close@2x.png
new file mode 100644
index 0000000..d3920af
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/close.imageset/close@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/cloud.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/cloud.imageset/Contents.json
new file mode 100644
index 0000000..55ef386
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/cloud.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "cloud.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/cloud.imageset/cloud.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/cloud.imageset/cloud.png
new file mode 100644
index 0000000..d246e8d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/cloud.imageset/cloud.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi1.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi1.imageset/Contents.json
new file mode 100644
index 0000000..88bb94f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi1.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "connect_wifi1.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "connect_wifi1@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi1.imageset/connect_wifi1.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi1.imageset/connect_wifi1.png
new file mode 100644
index 0000000..011301b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi1.imageset/connect_wifi1.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi1.imageset/connect_wifi1@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi1.imageset/connect_wifi1@2x.png
new file mode 100644
index 0000000..3534903
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi1.imageset/connect_wifi1@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi2.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi2.imageset/Contents.json
new file mode 100644
index 0000000..39c7788
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi2.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "connect_wifi2.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "connect_wifi2@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi2.imageset/connect_wifi2.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi2.imageset/connect_wifi2.png
new file mode 100644
index 0000000..a7ce842
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi2.imageset/connect_wifi2.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi2.imageset/connect_wifi2@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi2.imageset/connect_wifi2@2x.png
new file mode 100644
index 0000000..14cdbf3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi2.imageset/connect_wifi2@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi3.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi3.imageset/Contents.json
new file mode 100644
index 0000000..9837440
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi3.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "connect_wifi3.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "connect_wifi3@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi3.imageset/connect_wifi3.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi3.imageset/connect_wifi3.png
new file mode 100644
index 0000000..a8ffcdb
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi3.imageset/connect_wifi3.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi3.imageset/connect_wifi3@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi3.imageset/connect_wifi3@2x.png
new file mode 100644
index 0000000..f5f1429
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi3.imageset/connect_wifi3@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi4.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi4.imageset/Contents.json
new file mode 100644
index 0000000..8dfb63a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi4.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "connect_wifi4.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "connect_wifi4@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi4.imageset/connect_wifi4.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi4.imageset/connect_wifi4.png
new file mode 100644
index 0000000..17f1a9d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi4.imageset/connect_wifi4.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi4.imageset/connect_wifi4@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi4.imageset/connect_wifi4@2x.png
new file mode 100644
index 0000000..20b7aa5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/connect_wifi4.imageset/connect_wifi4@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device.imageset/Contents.json
new file mode 100644
index 0000000..001740d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "device.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "device@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device.imageset/device.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device.imageset/device.png
new file mode 100644
index 0000000..c4a40d4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device.imageset/device.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device.imageset/device@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device.imageset/device@2x.png
new file mode 100644
index 0000000..9722fa8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device.imageset/device@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_bg.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_bg.imageset/Contents.json
new file mode 100644
index 0000000..b1bc3ee
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_bg.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "device_bg.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_bg.imageset/device_bg.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_bg.imageset/device_bg.png
new file mode 100644
index 0000000..e78c0ce
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_bg.imageset/device_bg.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_default.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_default.imageset/Contents.json
new file mode 100644
index 0000000..e3cf157
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_default.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "device_default.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "device_default@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_default.imageset/device_default.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_default.imageset/device_default.png
new file mode 100644
index 0000000..6bb62f9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_default.imageset/device_default.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_default.imageset/device_default@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_default.imageset/device_default@2x.png
new file mode 100644
index 0000000..9ee752d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_default.imageset/device_default@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_reset.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_reset.imageset/Contents.json
new file mode 100644
index 0000000..1cccf9a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_reset.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "device_reset.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "device_reset@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_reset.imageset/device_reset.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_reset.imageset/device_reset.png
new file mode 100644
index 0000000..c6b50f1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_reset.imageset/device_reset.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_reset.imageset/device_reset@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_reset.imageset/device_reset@2x.png
new file mode 100644
index 0000000..d847b82
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/device_reset.imageset/device_reset@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/duijiangji.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/duijiangji.imageset/Contents.json
new file mode 100644
index 0000000..f97fca3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/duijiangji.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "duijiangji-2.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/duijiangji.imageset/duijiangji-2.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/duijiangji.imageset/duijiangji-2.png
new file mode 100644
index 0000000..3cc8402
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/duijiangji.imageset/duijiangji-2.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_account.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_account.imageset/Contents.json
new file mode 100644
index 0000000..9013a37
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_account.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "failure_account.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "failure_account@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_account.imageset/failure_account.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_account.imageset/failure_account.png
new file mode 100644
index 0000000..b307285
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_account.imageset/failure_account.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_account.imageset/failure_account@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_account.imageset/failure_account@2x.png
new file mode 100644
index 0000000..ac4932b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_account.imageset/failure_account@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_server.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_server.imageset/Contents.json
new file mode 100644
index 0000000..23d78cc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_server.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "failure_server.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "failure_server@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_server.imageset/failure_server.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_server.imageset/failure_server.png
new file mode 100644
index 0000000..7b58bca
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_server.imageset/failure_server.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_server.imageset/failure_server@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_server.imageset/failure_server@2x.png
new file mode 100644
index 0000000..3364f9d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_server.imageset/failure_server@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_wifi.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_wifi.imageset/Contents.json
new file mode 100644
index 0000000..89ee288
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_wifi.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "failure_wifi.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "failure_wifi@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_wifi.imageset/failure_wifi.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_wifi.imageset/failure_wifi.png
new file mode 100644
index 0000000..1fb8959
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_wifi.imageset/failure_wifi.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_wifi.imageset/failure_wifi@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_wifi.imageset/failure_wifi@2x.png
new file mode 100644
index 0000000..299fc91
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/failure_wifi.imageset/failure_wifi@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_add_device_success.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_add_device_success.imageset/Contents.json
new file mode 100644
index 0000000..3d04882
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_add_device_success.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "hdl_ez_add_device_success@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "hdl_ez_add_device_success@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_add_device_success.imageset/hdl_ez_add_device_success@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_add_device_success.imageset/hdl_ez_add_device_success@2x.png
new file mode 100644
index 0000000..ff75690
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_add_device_success.imageset/hdl_ez_add_device_success@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_add_device_success.imageset/hdl_ez_add_device_success@3x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_add_device_success.imageset/hdl_ez_add_device_success@3x.png
new file mode 100644
index 0000000..285ac69
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_add_device_success.imageset/hdl_ez_add_device_success@3x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_nav_back.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_nav_back.imageset/Contents.json
new file mode 100644
index 0000000..47d8ca9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_nav_back.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "hdl_ez_ic_nav_back@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "hdl_ez_ic_nav_back@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_nav_back.imageset/hdl_ez_ic_nav_back@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_nav_back.imageset/hdl_ez_ic_nav_back@2x.png
new file mode 100644
index 0000000..360b01c
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_nav_back.imageset/hdl_ez_ic_nav_back@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_nav_back.imageset/hdl_ez_ic_nav_back@3x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_nav_back.imageset/hdl_ez_ic_nav_back@3x.png
new file mode 100644
index 0000000..b9a32a4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_nav_back.imageset/hdl_ez_ic_nav_back@3x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock.imageset/Contents.json
new file mode 100644
index 0000000..bea5de2
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "hdl_ez_ic_unlock@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "hdl_ez_ic_unlock@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock.imageset/hdl_ez_ic_unlock@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock.imageset/hdl_ez_ic_unlock@2x.png
new file mode 100644
index 0000000..0dee5f5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock.imageset/hdl_ez_ic_unlock@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock.imageset/hdl_ez_ic_unlock@3x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock.imageset/hdl_ez_ic_unlock@3x.png
new file mode 100644
index 0000000..f1525fc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock.imageset/hdl_ez_ic_unlock@3x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock_disable.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock_disable.imageset/Contents.json
new file mode 100644
index 0000000..b94b3d2
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock_disable.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "hdl_ez_ic_unlock_disable@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "hdl_ez_ic_unlock_disable@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock_disable.imageset/hdl_ez_ic_unlock_disable@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock_disable.imageset/hdl_ez_ic_unlock_disable@2x.png
new file mode 100644
index 0000000..f8fd633
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock_disable.imageset/hdl_ez_ic_unlock_disable@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock_disable.imageset/hdl_ez_ic_unlock_disable@3x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock_disable.imageset/hdl_ez_ic_unlock_disable@3x.png
new file mode 100644
index 0000000..2927b9a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_ic_unlock_disable.imageset/hdl_ez_ic_unlock_disable@3x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next-1.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next-1.imageset/Contents.json
new file mode 100644
index 0000000..50372df
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next-1.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "hdl_ez_list_next@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "hdl_ez_list_next@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next-1.imageset/hdl_ez_list_next@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next-1.imageset/hdl_ez_list_next@2x.png
new file mode 100644
index 0000000..db56906
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next-1.imageset/hdl_ez_list_next@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next-1.imageset/hdl_ez_list_next@3x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next-1.imageset/hdl_ez_list_next@3x.png
new file mode 100644
index 0000000..94c2b96
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next-1.imageset/hdl_ez_list_next@3x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next.imageset/Contents.json
new file mode 100644
index 0000000..50372df
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "hdl_ez_list_next@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "hdl_ez_list_next@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next.imageset/hdl_ez_list_next@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next.imageset/hdl_ez_list_next@2x.png
new file mode 100644
index 0000000..b2b29ec
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next.imageset/hdl_ez_list_next@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next.imageset/hdl_ez_list_next@3x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next.imageset/hdl_ez_list_next@3x.png
new file mode 100644
index 0000000..fac62dd
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_list_next.imageset/hdl_ez_list_next@3x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_add.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_add.imageset/Contents.json
new file mode 100644
index 0000000..4a0641d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_add.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "hdl_ez_temp_add@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "hdl_ez_temp_add@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_add.imageset/hdl_ez_temp_add@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_add.imageset/hdl_ez_temp_add@2x.png
new file mode 100644
index 0000000..db56906
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_add.imageset/hdl_ez_temp_add@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_add.imageset/hdl_ez_temp_add@3x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_add.imageset/hdl_ez_temp_add@3x.png
new file mode 100644
index 0000000..94c2b96
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_add.imageset/hdl_ez_temp_add@3x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_pass_word.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_pass_word.imageset/Contents.json
new file mode 100644
index 0000000..5d8c56b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_pass_word.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "hdl_ez_temp_pass_word@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "hdl_ez_temp_pass_word@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_pass_word.imageset/hdl_ez_temp_pass_word@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_pass_word.imageset/hdl_ez_temp_pass_word@2x.png
new file mode 100644
index 0000000..f679fe7
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_pass_word.imageset/hdl_ez_temp_pass_word@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_pass_word.imageset/hdl_ez_temp_pass_word@3x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_pass_word.imageset/hdl_ez_temp_pass_word@3x.png
new file mode 100644
index 0000000..57093d5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_temp_pass_word.imageset/hdl_ez_temp_pass_word@3x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step1.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step1.imageset/Contents.json
new file mode 100644
index 0000000..a0274b5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step1.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "hdl_ez_wifi_connect_step1@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "hdl_ez_wifi_connect_step1@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step1.imageset/hdl_ez_wifi_connect_step1@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step1.imageset/hdl_ez_wifi_connect_step1@2x.png
new file mode 100644
index 0000000..144400f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step1.imageset/hdl_ez_wifi_connect_step1@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step1.imageset/hdl_ez_wifi_connect_step1@3x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step1.imageset/hdl_ez_wifi_connect_step1@3x.png
new file mode 100644
index 0000000..8b637a0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step1.imageset/hdl_ez_wifi_connect_step1@3x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step2.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step2.imageset/Contents.json
new file mode 100644
index 0000000..789ea79
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step2.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "hdl_ez_wifi_connect_step2@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "hdl_ez_wifi_connect_step2@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step2.imageset/hdl_ez_wifi_connect_step2@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step2.imageset/hdl_ez_wifi_connect_step2@2x.png
new file mode 100644
index 0000000..f3e6d66
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step2.imageset/hdl_ez_wifi_connect_step2@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step2.imageset/hdl_ez_wifi_connect_step2@3x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step2.imageset/hdl_ez_wifi_connect_step2@3x.png
new file mode 100644
index 0000000..a274b61
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step2.imageset/hdl_ez_wifi_connect_step2@3x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_one.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_one.imageset/Contents.json
new file mode 100644
index 0000000..a91c458
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_one.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "hdl_ez_wifi_connect_step_one@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "hdl_ez_wifi_connect_step_one@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_one.imageset/hdl_ez_wifi_connect_step_one@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_one.imageset/hdl_ez_wifi_connect_step_one@2x.png
new file mode 100644
index 0000000..29e36d1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_one.imageset/hdl_ez_wifi_connect_step_one@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_one.imageset/hdl_ez_wifi_connect_step_one@3x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_one.imageset/hdl_ez_wifi_connect_step_one@3x.png
new file mode 100644
index 0000000..bc3a447
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_one.imageset/hdl_ez_wifi_connect_step_one@3x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_two.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_two.imageset/Contents.json
new file mode 100644
index 0000000..ff42c4f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_two.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "hdl_ez_wifi_connect_step_two@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "hdl_ez_wifi_connect_step_two@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_two.imageset/hdl_ez_wifi_connect_step_two@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_two.imageset/hdl_ez_wifi_connect_step_two@2x.png
new file mode 100644
index 0000000..07a5957
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_two.imageset/hdl_ez_wifi_connect_step_two@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_two.imageset/hdl_ez_wifi_connect_step_two@3x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_two.imageset/hdl_ez_wifi_connect_step_two@3x.png
new file mode 100644
index 0000000..a60b4bb
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/hdl_ez_wifi_connect_step_two.imageset/hdl_ez_wifi_connect_step_two@3x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/icn_location.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/icn_location.imageset/Contents.json
new file mode 100644
index 0000000..05ea6ec
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/icn_location.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "icn_location.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/icn_location.imageset/icn_location.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/icn_location.imageset/icn_location.png
new file mode 100644
index 0000000..97aa6ca
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/icn_location.imageset/icn_location.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/icon_download_fill.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/icon_download_fill.imageset/Contents.json
new file mode 100644
index 0000000..30ce1c3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/icon_download_fill.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "icon_download_fill.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/icon_download_fill.imageset/icon_download_fill.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/icon_download_fill.imageset/icon_download_fill.png
new file mode 100644
index 0000000..96fb961
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/icon_download_fill.imageset/icon_download_fill.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/join_qq_group.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/join_qq_group.imageset/Contents.json
new file mode 100644
index 0000000..545dbc9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/join_qq_group.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "join_qq_group.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "join_qq_group@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/join_qq_group.imageset/join_qq_group.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/join_qq_group.imageset/join_qq_group.png
new file mode 100644
index 0000000..8e2b2cb
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/join_qq_group.imageset/join_qq_group.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/join_qq_group.imageset/join_qq_group@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/join_qq_group.imageset/join_qq_group@2x.png
new file mode 100644
index 0000000..bcf0305
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/join_qq_group.imageset/join_qq_group@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/large_back_btn.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/large_back_btn.imageset/Contents.json
new file mode 100644
index 0000000..2637062
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/large_back_btn.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "large_back_btn.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "large_back_btn@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/large_back_btn.imageset/large_back_btn.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/large_back_btn.imageset/large_back_btn.png
new file mode 100644
index 0000000..e4b9c79
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/large_back_btn.imageset/large_back_btn.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/large_back_btn.imageset/large_back_btn@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/large_back_btn.imageset/large_back_btn@2x.png
new file mode 100644
index 0000000..b9318f6
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/large_back_btn.imageset/large_back_btn@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account1.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account1.imageset/Contents.json
new file mode 100644
index 0000000..9b916d0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account1.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "link_account1.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "link_account1@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account1.imageset/link_account1.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account1.imageset/link_account1.png
new file mode 100644
index 0000000..e6615ad
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account1.imageset/link_account1.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account1.imageset/link_account1@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account1.imageset/link_account1@2x.png
new file mode 100644
index 0000000..67e55ba
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account1.imageset/link_account1@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account2.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account2.imageset/Contents.json
new file mode 100644
index 0000000..85222c6
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account2.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "link_account2.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "link_account2@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account2.imageset/link_account2.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account2.imageset/link_account2.png
new file mode 100644
index 0000000..ccc2b87
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account2.imageset/link_account2.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account2.imageset/link_account2@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account2.imageset/link_account2@2x.png
new file mode 100644
index 0000000..0c1bfd0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account2.imageset/link_account2@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account3.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account3.imageset/Contents.json
new file mode 100644
index 0000000..2e11ac2
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account3.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "link_account3.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "link_account3@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account3.imageset/link_account3.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account3.imageset/link_account3.png
new file mode 100644
index 0000000..c9e312a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account3.imageset/link_account3.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account3.imageset/link_account3@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account3.imageset/link_account3@2x.png
new file mode 100644
index 0000000..398e371
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account3.imageset/link_account3@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account4.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account4.imageset/Contents.json
new file mode 100644
index 0000000..8fa09f9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account4.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "link_account4.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "link_account4@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account4.imageset/link_account4.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account4.imageset/link_account4.png
new file mode 100644
index 0000000..7064629
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account4.imageset/link_account4.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account4.imageset/link_account4@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account4.imageset/link_account4@2x.png
new file mode 100644
index 0000000..d7822e1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/link_account4.imageset/link_account4@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo-1.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo-1.imageset/Contents.json
new file mode 100644
index 0000000..c1fd129
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo-1.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "logo.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "logo@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo-1.imageset/logo.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo-1.imageset/logo.png
new file mode 100644
index 0000000..1ce3df0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo-1.imageset/logo.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo-1.imageset/logo@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo-1.imageset/logo@2x.png
new file mode 100644
index 0000000..4045390
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo-1.imageset/logo@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo.imageset/Contents.json
new file mode 100644
index 0000000..c1fd129
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "logo.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "logo@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo.imageset/logo.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo.imageset/logo.png
new file mode 100644
index 0000000..1ce3df0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo.imageset/logo.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo.imageset/logo@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo.imageset/logo@2x.png
new file mode 100644
index 0000000..4045390
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo.imageset/logo@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_1.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_1.imageset/Contents.json
new file mode 100644
index 0000000..93cb3c9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_1.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "logo_loading_1.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "logo_loading_1@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_1.imageset/logo_loading_1.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_1.imageset/logo_loading_1.png
new file mode 100644
index 0000000..a2c457a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_1.imageset/logo_loading_1.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_1.imageset/logo_loading_1@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_1.imageset/logo_loading_1@2x.png
new file mode 100644
index 0000000..1aa5551
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_1.imageset/logo_loading_1@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_2.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_2.imageset/Contents.json
new file mode 100644
index 0000000..dce78c2
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_2.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "logo_loading_2.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "logo_loading_2@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_2.imageset/logo_loading_2.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_2.imageset/logo_loading_2.png
new file mode 100644
index 0000000..496e1a8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_2.imageset/logo_loading_2.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_2.imageset/logo_loading_2@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_2.imageset/logo_loading_2@2x.png
new file mode 100644
index 0000000..ba61f7c
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_2.imageset/logo_loading_2@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_3.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_3.imageset/Contents.json
new file mode 100644
index 0000000..f21d0a8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_3.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "logo_loading_3.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "logo_loading_3@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_3.imageset/logo_loading_3.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_3.imageset/logo_loading_3.png
new file mode 100644
index 0000000..3f37f67
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_3.imageset/logo_loading_3.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_3.imageset/logo_loading_3@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_3.imageset/logo_loading_3@2x.png
new file mode 100644
index 0000000..28dedfc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_3.imageset/logo_loading_3@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_4.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_4.imageset/Contents.json
new file mode 100644
index 0000000..b88300a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_4.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "logo_loading_4.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "logo_loading_4@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_4.imageset/logo_loading_4.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_4.imageset/logo_loading_4.png
new file mode 100644
index 0000000..73617d1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_4.imageset/logo_loading_4.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_4.imageset/logo_loading_4@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_4.imageset/logo_loading_4@2x.png
new file mode 100644
index 0000000..95254a1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/logo_loading_4.imageset/logo_loading_4@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message.imageset/Contents.json
new file mode 100644
index 0000000..2519bfb
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "message.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "message@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message.imageset/message.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message.imageset/message.png
new file mode 100644
index 0000000..e8d7e2a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message.imageset/message.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message.imageset/message@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message.imageset/message@2x.png
new file mode 100644
index 0000000..b09951e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message.imageset/message@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_callhelp.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_callhelp.imageset/Contents.json
new file mode 100644
index 0000000..e1a8cfb
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_callhelp.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "message_callhelp.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "message_callhelp@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_callhelp.imageset/message_callhelp.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_callhelp.imageset/message_callhelp.png
new file mode 100644
index 0000000..28d68c0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_callhelp.imageset/message_callhelp.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_callhelp.imageset/message_callhelp@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_callhelp.imageset/message_callhelp@2x.png
new file mode 100644
index 0000000..a8c182d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_callhelp.imageset/message_callhelp@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_sel.imageset/Contents.json
new file mode 100644
index 0000000..c1b8903
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "message_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "message_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_sel.imageset/message_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_sel.imageset/message_sel.png
new file mode 100644
index 0000000..4c5bbf8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_sel.imageset/message_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_sel.imageset/message_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_sel.imageset/message_sel@2x.png
new file mode 100644
index 0000000..7eb6bd3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/message_sel.imageset/message_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message-1.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message-1.imageset/Contents.json
new file mode 100644
index 0000000..69799cc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message-1.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "no_message.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "no_message@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message-1.imageset/no_message.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message-1.imageset/no_message.png
new file mode 100644
index 0000000..8d1423f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message-1.imageset/no_message.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message-1.imageset/no_message@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message-1.imageset/no_message@2x.png
new file mode 100644
index 0000000..d739789
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message-1.imageset/no_message@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message.imageset/Contents.json
new file mode 100644
index 0000000..69799cc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "no_message.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "no_message@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message.imageset/no_message.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message.imageset/no_message.png
new file mode 100644
index 0000000..8d1423f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message.imageset/no_message.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message.imageset/no_message@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message.imageset/no_message@2x.png
new file mode 100644
index 0000000..d739789
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_message.imageset/no_message@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_video.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_video.imageset/Contents.json
new file mode 100644
index 0000000..a4d4cd8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_video.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "no_video.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "no_video@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_video.imageset/no_video.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_video.imageset/no_video.png
new file mode 100644
index 0000000..5ee7de2
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_video.imageset/no_video.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_video.imageset/no_video@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_video.imageset/no_video@2x.png
new file mode 100644
index 0000000..b2b05f4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_video.imageset/no_video@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_wifi.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_wifi.imageset/Contents.json
new file mode 100644
index 0000000..b048fab
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_wifi.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "no_wifi.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "no_wifi@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_wifi.imageset/no_wifi.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_wifi.imageset/no_wifi.png
new file mode 100644
index 0000000..f0664b0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_wifi.imageset/no_wifi.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_wifi.imageset/no_wifi@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_wifi.imageset/no_wifi@2x.png
new file mode 100644
index 0000000..c45795a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/no_wifi.imageset/no_wifi@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/offline.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/offline.imageset/Contents.json
new file mode 100644
index 0000000..6823c6e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/offline.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "offline.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "offline@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/offline.imageset/offline.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/offline.imageset/offline.png
new file mode 100644
index 0000000..b9150fc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/offline.imageset/offline.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/offline.imageset/offline@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/offline.imageset/offline@2x.png
new file mode 100644
index 0000000..b26f2f7
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/offline.imageset/offline@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open.imageset/Contents.json
new file mode 100644
index 0000000..d0c187e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "open.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "open@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open.imageset/open.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open.imageset/open.png
new file mode 100644
index 0000000..0133f1f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open.imageset/open.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open.imageset/open@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open.imageset/open@2x.png
new file mode 100644
index 0000000..ea7dbb5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open.imageset/open@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open_icon_1024.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open_icon_1024.imageset/Contents.json
new file mode 100644
index 0000000..fc4f507
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open_icon_1024.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "open_icon_1024.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "open_icon_1024@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open_icon_1024.imageset/open_icon_1024.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open_icon_1024.imageset/open_icon_1024.png
new file mode 100644
index 0000000..9fb7671
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open_icon_1024.imageset/open_icon_1024.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open_icon_1024.imageset/open_icon_1024@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open_icon_1024.imageset/open_icon_1024@2x.png
new file mode 100644
index 0000000..044e08d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/open_icon_1024.imageset/open_icon_1024@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button.imageset/Contents.json
new file mode 100644
index 0000000..915685e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "orange_button.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "orange_button@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button.imageset/orange_button.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button.imageset/orange_button.png
new file mode 100644
index 0000000..776d2b4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button.imageset/orange_button.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button.imageset/orange_button@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button.imageset/orange_button@2x.png
new file mode 100644
index 0000000..21abd5a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button.imageset/orange_button@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button_sel.imageset/Contents.json
new file mode 100644
index 0000000..0344d3d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "orange_button_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "orange_button_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button_sel.imageset/orange_button_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button_sel.imageset/orange_button_sel.png
new file mode 100644
index 0000000..e165078
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button_sel.imageset/orange_button_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button_sel.imageset/orange_button_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button_sel.imageset/orange_button_sel@2x.png
new file mode 100644
index 0000000..be87b81
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/orange_button_sel.imageset/orange_button_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause.imageset/Contents.json
new file mode 100644
index 0000000..12980e4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "pause.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "pause@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause.imageset/pause.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause.imageset/pause.png
new file mode 100644
index 0000000..3093598
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause.imageset/pause.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause.imageset/pause@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause.imageset/pause@2x.png
new file mode 100644
index 0000000..8ca260b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause.imageset/pause@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause_sel.imageset/Contents.json
new file mode 100644
index 0000000..1232c2d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "pause_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "pause_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause_sel.imageset/pause_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause_sel.imageset/pause_sel.png
new file mode 100644
index 0000000..ae0bc5c
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause_sel.imageset/pause_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause_sel.imageset/pause_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause_sel.imageset/pause_sel@2x.png
new file mode 100644
index 0000000..3a8fea8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/pause_sel.imageset/pause_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/picture_bg.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/picture_bg.imageset/Contents.json
new file mode 100644
index 0000000..e3acd91
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/picture_bg.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "picture_bg.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "picture_bg@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/picture_bg.imageset/picture_bg.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/picture_bg.imageset/picture_bg.png
new file mode 100644
index 0000000..6d59dd0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/picture_bg.imageset/picture_bg.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/picture_bg.imageset/picture_bg@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/picture_bg.imageset/picture_bg@2x.png
new file mode 100644
index 0000000..fe4b56c
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/picture_bg.imageset/picture_bg@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play.imageset/Contents.json
new file mode 100644
index 0000000..ad6392d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "play.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "play@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play.imageset/play.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play.imageset/play.png
new file mode 100644
index 0000000..85eb80e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play.imageset/play.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play.imageset/play@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play.imageset/play@2x.png
new file mode 100644
index 0000000..854cdf9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play.imageset/play@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close.imageset/Contents.json
new file mode 100644
index 0000000..c34d33b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "play_close.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "play_close@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close.imageset/play_close.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close.imageset/play_close.png
new file mode 100644
index 0000000..0ad333d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close.imageset/play_close.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close.imageset/play_close@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close.imageset/play_close@2x.png
new file mode 100644
index 0000000..e5f1fb1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close.imageset/play_close@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close_sel.imageset/Contents.json
new file mode 100644
index 0000000..637d883
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "play_close_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "play_close_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close_sel.imageset/play_close_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close_sel.imageset/play_close_sel.png
new file mode 100644
index 0000000..9754105
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close_sel.imageset/play_close_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close_sel.imageset/play_close_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close_sel.imageset/play_close_sel@2x.png
new file mode 100644
index 0000000..13eb5cd
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_close_sel.imageset/play_close_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_rate.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_rate.imageset/Contents.json
new file mode 100644
index 0000000..2165a01
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_rate.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "play_rate.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_rate.imageset/play_rate.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_rate.imageset/play_rate.png
new file mode 100644
index 0000000..7e72cb8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_rate.imageset/play_rate.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_sel.imageset/Contents.json
new file mode 100644
index 0000000..4cec557
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "play_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "play_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_sel.imageset/play_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_sel.imageset/play_sel.png
new file mode 100644
index 0000000..85e02b3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_sel.imageset/play_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_sel.imageset/play_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_sel.imageset/play_sel@2x.png
new file mode 100644
index 0000000..5b3fc80
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/play_sel.imageset/play_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback.imageset/Contents.json
new file mode 100644
index 0000000..a81e0b0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "playback.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "playback@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback.imageset/playback.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback.imageset/playback.png
new file mode 100644
index 0000000..685601d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback.imageset/playback.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback.imageset/playback@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback.imageset/playback@2x.png
new file mode 100644
index 0000000..8d23634
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback.imageset/playback@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback_sel.imageset/Contents.json
new file mode 100644
index 0000000..a9e8f30
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "playback_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "playback_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback_sel.imageset/playback_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback_sel.imageset/playback_sel.png
new file mode 100644
index 0000000..57b946b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback_sel.imageset/playback_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback_sel.imageset/playback_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback_sel.imageset/playback_sel@2x.png
new file mode 100644
index 0000000..f6e308a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/playback_sel.imageset/playback_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel.imageset/Contents.json
new file mode 100644
index 0000000..83b47bb
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_barrel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_barrel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel.imageset/preview_barrel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel.imageset/preview_barrel.png
new file mode 100644
index 0000000..1269e01
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel.imageset/preview_barrel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel.imageset/preview_barrel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel.imageset/preview_barrel@2x.png
new file mode 100644
index 0000000..cad41ed
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel.imageset/preview_barrel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_dis.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_dis.imageset/Contents.json
new file mode 100644
index 0000000..032a237
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_dis.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_barrel_dis.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_barrel_dis@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_dis.imageset/preview_barrel_dis.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_dis.imageset/preview_barrel_dis.png
new file mode 100644
index 0000000..881bb3f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_dis.imageset/preview_barrel_dis.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_dis.imageset/preview_barrel_dis@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_dis.imageset/preview_barrel_dis@2x.png
new file mode 100644
index 0000000..5cdd845
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_dis.imageset/preview_barrel_dis@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_sel.imageset/Contents.json
new file mode 100644
index 0000000..49c76e1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_barrel_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_barrel_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_sel.imageset/preview_barrel_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_sel.imageset/preview_barrel_sel.png
new file mode 100644
index 0000000..d7acf20
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_sel.imageset/preview_barrel_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_sel.imageset/preview_barrel_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_sel.imageset/preview_barrel_sel@2x.png
new file mode 100644
index 0000000..a7660e7
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_barrel_sel.imageset/preview_barrel_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge.imageset/Contents.json
new file mode 100644
index 0000000..73a989d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_enlarge.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_enlarge@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge.imageset/preview_enlarge.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge.imageset/preview_enlarge.png
new file mode 100644
index 0000000..fafd7e5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge.imageset/preview_enlarge.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge.imageset/preview_enlarge@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge.imageset/preview_enlarge@2x.png
new file mode 100644
index 0000000..74bf56d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge.imageset/preview_enlarge@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge_btn_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge_btn_sel.imageset/Contents.json
new file mode 100644
index 0000000..d1b4589
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge_btn_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_enlarge_btn_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_enlarge_btn_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel.png
new file mode 100644
index 0000000..a823d6f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel@2x.png
new file mode 100644
index 0000000..c1838af
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_enlarge_btn_sel.imageset/preview_enlarge_btn_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn.imageset/Contents.json
new file mode 100644
index 0000000..3de25dc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_play_btn.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_play_btn@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn.imageset/preview_play_btn.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn.imageset/preview_play_btn.png
new file mode 100644
index 0000000..22b8248
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn.imageset/preview_play_btn.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn.imageset/preview_play_btn@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn.imageset/preview_play_btn@2x.png
new file mode 100644
index 0000000..7d1bbbe
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn.imageset/preview_play_btn@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn_sel.imageset/Contents.json
new file mode 100644
index 0000000..7aafe66
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_play_btn_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_play_btn_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel.png
new file mode 100644
index 0000000..9b398b5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel@2x.png
new file mode 100644
index 0000000..2ea80f4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_play_btn_sel.imageset/preview_play_btn_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording.imageset/Contents.json
new file mode 100644
index 0000000..bdb6947
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_recording.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_recording@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording.imageset/preview_recording.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording.imageset/preview_recording.png
new file mode 100644
index 0000000..8a3f44d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording.imageset/preview_recording.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording.imageset/preview_recording@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording.imageset/preview_recording@2x.png
new file mode 100644
index 0000000..a0d840f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording.imageset/preview_recording@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_dis.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_dis.imageset/Contents.json
new file mode 100644
index 0000000..67c6a2c
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_dis.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_recording_dis.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_recording_dis@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_dis.imageset/preview_recording_dis.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_dis.imageset/preview_recording_dis.png
new file mode 100644
index 0000000..8f2fa68
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_dis.imageset/preview_recording_dis.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_dis.imageset/preview_recording_dis@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_dis.imageset/preview_recording_dis@2x.png
new file mode 100644
index 0000000..17af37e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_dis.imageset/preview_recording_dis@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_sel.imageset/Contents.json
new file mode 100644
index 0000000..f0744e9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_recording_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_recording_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_sel.imageset/preview_recording_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_sel.imageset/preview_recording_sel.png
new file mode 100644
index 0000000..582049b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_sel.imageset/preview_recording_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_sel.imageset/preview_recording_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_sel.imageset/preview_recording_sel@2x.png
new file mode 100644
index 0000000..f7b8be1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_recording_sel.imageset/preview_recording_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot.imageset/Contents.json
new file mode 100644
index 0000000..ccf1171
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_screenshot.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_screenshot@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot.imageset/preview_screenshot.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot.imageset/preview_screenshot.png
new file mode 100644
index 0000000..51f91f8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot.imageset/preview_screenshot.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot.imageset/preview_screenshot@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot.imageset/preview_screenshot@2x.png
new file mode 100644
index 0000000..ce23ff6
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot.imageset/preview_screenshot@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_dis.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_dis.imageset/Contents.json
new file mode 100644
index 0000000..c3db802
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_dis.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_screenshot_dis.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_screenshot_dis@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_dis.imageset/preview_screenshot_dis.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_dis.imageset/preview_screenshot_dis.png
new file mode 100644
index 0000000..50eb992
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_dis.imageset/preview_screenshot_dis.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_dis.imageset/preview_screenshot_dis@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_dis.imageset/preview_screenshot_dis@2x.png
new file mode 100644
index 0000000..071a302
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_dis.imageset/preview_screenshot_dis@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_sel.imageset/Contents.json
new file mode 100644
index 0000000..b900df4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_screenshot_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_screenshot_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_sel.imageset/preview_screenshot_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_sel.imageset/preview_screenshot_sel.png
new file mode 100644
index 0000000..74fe3b1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_sel.imageset/preview_screenshot_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_sel.imageset/preview_screenshot_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_sel.imageset/preview_screenshot_sel@2x.png
new file mode 100644
index 0000000..f9fb901
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_screenshot_sel.imageset/preview_screenshot_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stoppaly_btn_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stoppaly_btn_sel.imageset/Contents.json
new file mode 100644
index 0000000..98275d0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stoppaly_btn_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_stoppaly_btn_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_stoppaly_btn_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel.png
new file mode 100644
index 0000000..7910053
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel@2x.png
new file mode 100644
index 0000000..0668cef
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stoppaly_btn_sel.imageset/preview_stoppaly_btn_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn .imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn .imageset/Contents.json
new file mode 100644
index 0000000..d7aabbd
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn .imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_stopplay_btn .png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_stopplay_btn @2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn .png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn .png
new file mode 100644
index 0000000..72c3fb4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn .png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn @2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn @2x.png
new file mode 100644
index 0000000..003c00b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn .imageset/preview_stopplay_btn @2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn.imageset/Contents.json
new file mode 100644
index 0000000..d7aabbd
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_stopplay_btn .png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_stopplay_btn @2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn .png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn .png
new file mode 100644
index 0000000..72c3fb4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn .png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn @2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn @2x.png
new file mode 100644
index 0000000..003c00b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn.imageset/preview_stopplay_btn @2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn_sel.imageset/Contents.json
new file mode 100644
index 0000000..0168d6f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_stopplay_btn_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_stopplay_btn_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel.png
new file mode 100644
index 0000000..7910053
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel@2x.png
new file mode 100644
index 0000000..0668cef
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_stopplay_btn_sel.imageset/preview_stopplay_btn_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback.imageset/Contents.json
new file mode 100644
index 0000000..b43f4df
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_talkback.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_talkback@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback.imageset/preview_talkback.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback.imageset/preview_talkback.png
new file mode 100644
index 0000000..e785577
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback.imageset/preview_talkback.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback.imageset/preview_talkback@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback.imageset/preview_talkback@2x.png
new file mode 100644
index 0000000..12f5af4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback.imageset/preview_talkback@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_dis.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_dis.imageset/Contents.json
new file mode 100644
index 0000000..65f0448
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_dis.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_talkback_dis.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_talkback_dis@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_dis.imageset/preview_talkback_dis.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_dis.imageset/preview_talkback_dis.png
new file mode 100644
index 0000000..e233237
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_dis.imageset/preview_talkback_dis.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_dis.imageset/preview_talkback_dis@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_dis.imageset/preview_talkback_dis@2x.png
new file mode 100644
index 0000000..a960102
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_dis.imageset/preview_talkback_dis@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_sel.imageset/Contents.json
new file mode 100644
index 0000000..955c426
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_talkback_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_talkback_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_sel.imageset/preview_talkback_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_sel.imageset/preview_talkback_sel.png
new file mode 100644
index 0000000..5155efd
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_sel.imageset/preview_talkback_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_sel.imageset/preview_talkback_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_sel.imageset/preview_talkback_sel@2x.png
new file mode 100644
index 0000000..4a13b1e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_talkback_sel.imageset/preview_talkback_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn.imageset/Contents.json
new file mode 100644
index 0000000..885eb6b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_unvoice_btn.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_unvoice_btn@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn.png
new file mode 100644
index 0000000..77c5688
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn@2x.png
new file mode 100644
index 0000000..2554612
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn.imageset/preview_unvoice_btn@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn_sel.imageset/Contents.json
new file mode 100644
index 0000000..f25f265
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_unvoice_btn_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_unvoice_btn_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel.png
new file mode 100644
index 0000000..2908329
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel@2x.png
new file mode 100644
index 0000000..8858696
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_unvoice_btn_sel.imageset/preview_unvoice_btn_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn.imageset/Contents.json
new file mode 100644
index 0000000..e7c16de
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_voice_btn.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_voice_btn@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn.png
new file mode 100644
index 0000000..b330c2a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn@2x.png
new file mode 100644
index 0000000..2dff6b3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn.imageset/preview_voice_btn@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn_sel.imageset/Contents.json
new file mode 100644
index 0000000..01ea8c2
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "preview_voice_btn_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "preview_voice_btn_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel.png
new file mode 100644
index 0000000..7276951
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel@2x.png
new file mode 100644
index 0000000..1bbf161
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/preview_voice_btn_sel.imageset/preview_voice_btn_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bg.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bg.imageset/Contents.json
new file mode 100644
index 0000000..9868ffb
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bg.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "ptz_bg.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ptz_bg@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bg.imageset/ptz_bg.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bg.imageset/ptz_bg.png
new file mode 100644
index 0000000..752bf61
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bg.imageset/ptz_bg.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bg.imageset/ptz_bg@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bg.imageset/ptz_bg@2x.png
new file mode 100644
index 0000000..380bb27
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bg.imageset/ptz_bg@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bottom_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bottom_sel.imageset/Contents.json
new file mode 100644
index 0000000..c5293c8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bottom_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "ptz_bottom_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ptz_bottom_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bottom_sel.imageset/ptz_bottom_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bottom_sel.imageset/ptz_bottom_sel.png
new file mode 100644
index 0000000..d2a408f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bottom_sel.imageset/ptz_bottom_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bottom_sel.imageset/ptz_bottom_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bottom_sel.imageset/ptz_bottom_sel@2x.png
new file mode 100644
index 0000000..76d8d2d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_bottom_sel.imageset/ptz_bottom_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_left_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_left_sel.imageset/Contents.json
new file mode 100644
index 0000000..488cc0d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_left_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "ptz_left_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ptz_left_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_left_sel.imageset/ptz_left_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_left_sel.imageset/ptz_left_sel.png
new file mode 100644
index 0000000..7bb790f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_left_sel.imageset/ptz_left_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_left_sel.imageset/ptz_left_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_left_sel.imageset/ptz_left_sel@2x.png
new file mode 100644
index 0000000..767c0ce
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_left_sel.imageset/ptz_left_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_right_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_right_sel.imageset/Contents.json
new file mode 100644
index 0000000..7a5097b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_right_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "ptz_right_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ptz_right_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_right_sel.imageset/ptz_right_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_right_sel.imageset/ptz_right_sel.png
new file mode 100644
index 0000000..cb55201
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_right_sel.imageset/ptz_right_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_right_sel.imageset/ptz_right_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_right_sel.imageset/ptz_right_sel@2x.png
new file mode 100644
index 0000000..8a7f7e0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_right_sel.imageset/ptz_right_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_up_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_up_sel.imageset/Contents.json
new file mode 100644
index 0000000..e428613
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_up_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "ptz_up_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ptz_up_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_up_sel.imageset/ptz_up_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_up_sel.imageset/ptz_up_sel.png
new file mode 100644
index 0000000..c9636b6
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_up_sel.imageset/ptz_up_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_up_sel.imageset/ptz_up_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_up_sel.imageset/ptz_up_sel@2x.png
new file mode 100644
index 0000000..2c063f8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/ptz_up_sel.imageset/ptz_up_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/qr_scan_line.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/qr_scan_line.imageset/Contents.json
new file mode 100644
index 0000000..3fdd29a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/qr_scan_line.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "qr_scan_line.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "qr_scan_line@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/qr_scan_line.imageset/qr_scan_line.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/qr_scan_line.imageset/qr_scan_line.png
new file mode 100644
index 0000000..1b64c58
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/qr_scan_line.imageset/qr_scan_line.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/qr_scan_line.imageset/qr_scan_line@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/qr_scan_line.imageset/qr_scan_line@2x.png
new file mode 100644
index 0000000..f72e882
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/qr_scan_line.imageset/qr_scan_line@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/results_pic_bg.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/results_pic_bg.imageset/Contents.json
new file mode 100644
index 0000000..03dff31
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/results_pic_bg.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "results_pic_bg.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "results_pic_bg@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/results_pic_bg.imageset/results_pic_bg.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/results_pic_bg.imageset/results_pic_bg.png
new file mode 100644
index 0000000..a8e20aa
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/results_pic_bg.imageset/results_pic_bg.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/results_pic_bg.imageset/results_pic_bg@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/results_pic_bg.imageset/results_pic_bg@2x.png
new file mode 100644
index 0000000..c97bc61
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/results_pic_bg.imageset/results_pic_bg@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup.imageset/Contents.json
new file mode 100644
index 0000000..ec63d63
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "setup.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "setup@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup.imageset/setup.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup.imageset/setup.png
new file mode 100644
index 0000000..3e72fcf
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup.imageset/setup.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup.imageset/setup@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup.imageset/setup@2x.png
new file mode 100644
index 0000000..3ec9640
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup.imageset/setup@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup_sel.imageset/Contents.json
new file mode 100644
index 0000000..ea22170
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "setup_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "setup_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup_sel.imageset/setup_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup_sel.imageset/setup_sel.png
new file mode 100644
index 0000000..1685e84
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup_sel.imageset/setup_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup_sel.imageset/setup_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup_sel.imageset/setup_sel@2x.png
new file mode 100644
index 0000000..ef862fc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/setup_sel.imageset/setup_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider.imageset/Contents.json
new file mode 100644
index 0000000..c3a2a0d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "slider.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "slider@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider.imageset/slider.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider.imageset/slider.png
new file mode 100644
index 0000000..55b4ee9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider.imageset/slider.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider.imageset/slider@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider.imageset/slider@2x.png
new file mode 100644
index 0000000..6106de6
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider.imageset/slider@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider_sel.imageset/Contents.json
new file mode 100644
index 0000000..e9469b4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "slider_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "slider_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider_sel.imageset/slider_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider_sel.imageset/slider_sel.png
new file mode 100644
index 0000000..fb1b326
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider_sel.imageset/slider_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider_sel.imageset/slider_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider_sel.imageset/slider_sel@2x.png
new file mode 100644
index 0000000..15a040b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/slider_sel.imageset/slider_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/spkImg.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/spkImg.imageset/Contents.json
new file mode 100644
index 0000000..e690b49
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/spkImg.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "spkImg.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "spkImg@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/spkImg.imageset/spkImg.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/spkImg.imageset/spkImg.png
new file mode 100644
index 0000000..3eea86e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/spkImg.imageset/spkImg.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/spkImg.imageset/spkImg@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/spkImg.imageset/spkImg@2x.png
new file mode 100644
index 0000000..e57f1e5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/spkImg.imageset/spkImg@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/upgrade.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/upgrade.imageset/Contents.json
new file mode 100644
index 0000000..1ad2c93
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/upgrade.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "upgrade.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "upgrade@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/upgrade.imageset/upgrade.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/upgrade.imageset/upgrade.png
new file mode 100644
index 0000000..db6b714
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/upgrade.imageset/upgrade.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/upgrade.imageset/upgrade@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/upgrade.imageset/upgrade@2x.png
new file mode 100644
index 0000000..3df33e1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/upgrade.imageset/upgrade@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button.imageset/Contents.json
new file mode 100644
index 0000000..b13f53a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "white_button.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "white_button@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button.imageset/white_button.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button.imageset/white_button.png
new file mode 100644
index 0000000..82791ff
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button.imageset/white_button.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button.imageset/white_button@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button.imageset/white_button@2x.png
new file mode 100644
index 0000000..1c37e69
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button.imageset/white_button@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button_sel.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button_sel.imageset/Contents.json
new file mode 100644
index 0000000..48f7ca5
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button_sel.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "white_button_sel.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "white_button_sel@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button_sel.imageset/white_button_sel.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button_sel.imageset/white_button_sel.png
new file mode 100644
index 0000000..8527b2f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button_sel.imageset/white_button_sel.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button_sel.imageset/white_button_sel@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button_sel.imageset/white_button_sel@2x.png
new file mode 100644
index 0000000..7d90c5c
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/white_button_sel.imageset/white_button_sel@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/wifi_bg.imageset/Contents.json b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/wifi_bg.imageset/Contents.json
new file mode 100644
index 0000000..493a1bd
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/wifi_bg.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "wifi_bg.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "wifi_bg@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/wifi_bg.imageset/wifi_bg.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/wifi_bg.imageset/wifi_bg.png
new file mode 100644
index 0000000..314fff3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/wifi_bg.imageset/wifi_bg.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/wifi_bg.imageset/wifi_bg@2x.png b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/wifi_bg.imageset/wifi_bg@2x.png
new file mode 100644
index 0000000..c93782b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Assets.xcassets/wifi_bg.imageset/wifi_bg@2x.png
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Base.lproj/LaunchScreen.storyboard b/EZDemo/HDLEZDemo/HDLEZDemo/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 0000000..3aa4810
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <scenes>
+        <!--View Controller-->
+        <scene sceneID="EHf-IW-A2E">
+            <objects>
+                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
+                        <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                    </view>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="53" y="375"/>
+        </scene>
+    </scenes>
+    <resources>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Base.lproj/Main.storyboard b/EZDemo/HDLEZDemo/HDLEZDemo/Base.lproj/Main.storyboard
new file mode 100644
index 0000000..08c76e6
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Base.lproj/Main.storyboard
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="9QW-mI-OM5">
+    <device id="retina6_1" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <scenes>
+        <!--Navigation Controller-->
+        <scene sceneID="O8c-S3-gk1">
+            <objects>
+                <navigationController id="9QW-mI-OM5" sceneMemberID="viewController">
+                    <navigationBar key="navigationBar" contentMode="scaleToFill" id="j8e-BJ-Bnd">
+                        <rect key="frame" x="0.0" y="44" width="414" height="44"/>
+                        <autoresizingMask key="autoresizingMask"/>
+                    </navigationBar>
+                    <connections>
+                        <segue destination="BYZ-38-t0r" kind="relationship" relationship="rootViewController" id="n1k-OE-BFd"/>
+                    </connections>
+                </navigationController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="qkH-h8-pOd" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-1374" y="-13"/>
+        </scene>
+        <!--View Controller-->
+        <scene sceneID="tne-QT-ifu">
+            <objects>
+                <viewController id="BYZ-38-t0r" customClass="ViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
+                        <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yuD-D5-fhS">
+                                <rect key="frame" x="146" y="467" width="124" height="31"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="璺宠浆鎽勫儚澶村垪琛�"/>
+                                <connections>
+                                    <action selector="toDeviceList:" destination="BYZ-38-t0r" eventType="touchUpInside" id="GtI-Fd-6to"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="OLp-N2-Hg5">
+                                <rect key="frame" x="167" y="558" width="82" height="31"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="娣诲姞璁惧"/>
+                                <connections>
+                                    <action selector="addDevice:" destination="BYZ-38-t0r" eventType="touchUpInside" id="w68-PT-1Gj"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2KN-Sn-Woo">
+                                <rect key="frame" x="160" y="639" width="82" height="31"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="涓存椂瀵嗙爜"/>
+                                <connections>
+                                    <action selector="toTempView:" destination="BYZ-38-t0r" eventType="touchUpInside" id="otc-xW-CXt"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="XPT-Vj-G6M">
+                                <rect key="frame" x="146" y="384" width="124" height="31"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="璺宠浆闂ㄩ攣鎽勫儚澶�"/>
+                                <connections>
+                                    <action selector="toDoorCamera:" destination="BYZ-38-t0r" eventType="touchUpInside" id="RhS-Eu-8Mg"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="6iO-em-eZH">
+                                <rect key="frame" x="167" y="321" width="82" height="31"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="鍘嗗彶璁板綍"/>
+                                <connections>
+                                    <action selector="toDeviceMsgListV:" destination="BYZ-38-t0r" eventType="touchUpInside" id="AwY-z6-dMr"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="T3k-N9-gyi">
+                                <rect key="frame" x="138" y="597" width="139" height="31"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="娣诲姞鏃犻渶楠岃瘉璁惧"/>
+                                <connections>
+                                    <action selector="addDeviceWithoutConfirm:" destination="BYZ-38-t0r" eventType="touchUpInside" id="YMr-o1-DSZ"/>
+                                </connections>
+                            </button>
+                        </subviews>
+                        <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                    </view>
+                    <navigationItem key="navigationItem" id="QQP-Xf-0Gc"/>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-275.36231884057975" y="-13.392857142857142"/>
+        </scene>
+    </scenes>
+    <resources>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZMain.storyboard b/EZDemo/HDLEZDemo/HDLEZDemo/EZMain.storyboard
new file mode 100644
index 0000000..63dec62
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZMain.storyboard
@@ -0,0 +1,2541 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="tPl-Go-Tmu">
+    <device id="retina4_7" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment version="4352" identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <scenes>
+        <!--Item-->
+        <scene sceneID="Ypd-kv-rjR">
+            <objects>
+                <navigationController id="tPl-Go-Tmu" sceneMemberID="viewController">
+                    <tabBarItem key="tabBarItem" title="Item" id="EOh-Lf-fJU"/>
+                    <navigationBar key="navigationBar" contentMode="scaleToFill" id="9n2-YJ-ND5">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
+                        <autoresizingMask key="autoresizingMask"/>
+                    </navigationBar>
+                    <connections>
+                        <segue destination="BYZ-38-t0r" kind="relationship" relationship="rootViewController" id="UYR-rC-4Ms"/>
+                    </connections>
+                </navigationController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="Hqy-oN-m1b" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-1056" y="145.72713643178412"/>
+        </scene>
+        <!--Ddns Device Table View Controller-->
+        <scene sceneID="Rpj-wC-3ly">
+            <objects>
+                <tableViewController id="qZw-LL-wzV" customClass="EZDdnsDeviceTableViewController" sceneMemberID="viewController">
+                    <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="ecg-RF-Skt">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                        <prototypes>
+                            <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="R2t-zM-WMl">
+                                <rect key="frame" x="0.0" y="44.5" width="375" height="44"/>
+                                <autoresizingMask key="autoresizingMask"/>
+                                <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="R2t-zM-WMl" id="a02-NK-SeS">
+                                    <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
+                                    <autoresizingMask key="autoresizingMask"/>
+                                </tableViewCellContentView>
+                            </tableViewCell>
+                        </prototypes>
+                        <connections>
+                            <outlet property="dataSource" destination="qZw-LL-wzV" id="qRO-vy-kkW"/>
+                            <outlet property="delegate" destination="qZw-LL-wzV" id="sa1-QI-psZ"/>
+                        </connections>
+                    </tableView>
+                    <navigationItem key="navigationItem" id="vnG-WW-NBt">
+                        <nil key="title"/>
+                        <segmentedControl key="titleView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="0" id="UWK-Zd-fWJ">
+                            <rect key="frame" x="112.5" y="6" width="150" height="32"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <segments>
+                                <segment title="First"/>
+                                <segment title="Second"/>
+                            </segments>
+                            <connections>
+                                <action selector="segmentControl:" destination="qZw-LL-wzV" eventType="valueChanged" id="CHc-5h-ANs"/>
+                            </connections>
+                        </segmentedControl>
+                        <barButtonItem key="rightBarButtonItem" systemItem="add" id="x58-0L-dAg">
+                            <connections>
+                                <action selector="go2AddDevice:" destination="qZw-LL-wzV" id="dHn-Xn-rfa"/>
+                            </connections>
+                        </barButtonItem>
+                    </navigationItem>
+                    <connections>
+                        <outlet property="addButton" destination="x58-0L-dAg" id="pbn-8n-fSc"/>
+                        <outlet property="segment" destination="UWK-Zd-fWJ" id="Jae-Gg-cKU"/>
+                        <outlet property="segmentedControl" destination="UWK-Zd-fWJ" id="AD3-PE-NmO"/>
+                        <segue destination="DY9-ia-PiP" kind="push" identifier="go2RealPlayFromDdns" id="q2I-Q5-CUY"/>
+                        <segue destination="3Mz-U5-jsP" kind="push" identifier="go2CameraListFromDdns" id="uaA-Ji-Zwg"/>
+                    </connections>
+                </tableViewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="kIa-kX-fnm" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="640" y="-716.9415292353824"/>
+        </scene>
+        <!--View Controller-->
+        <scene sceneID="tne-QT-ifu">
+            <objects>
+                <viewController id="BYZ-38-t0r" customClass="ViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
+                        <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="logo" translatesAutoresizingMaskIntoConstraints="NO" id="MPX-n4-aGz">
+                                <rect key="frame" x="82.5" y="100" width="210" height="94"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="94" id="UZa-4y-JdR"/>
+                                    <constraint firstAttribute="width" constant="210" id="xPZ-ku-beA"/>
+                                </constraints>
+                            </imageView>
+                            <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="9VU-hP-zCR">
+                                <rect key="frame" x="45" y="247" width="285" height="39"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="39" id="Uox-Yc-kob"/>
+                                    <constraint firstAttribute="width" constant="285" id="wAy-Hx-fAn"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                <state key="normal" title="鎺ュ彛璋冪敤Demo" backgroundImage="blue_button"/>
+                                <state key="highlighted" backgroundImage="blue_button_sel"/>
+                                <connections>
+                                    <action selector="goAPI:" destination="BYZ-38-t0r" eventType="touchUpInside" id="7BP-Ah-1v3"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="p2R-3f-bRm">
+                                <rect key="frame" x="45" y="306" width="285" height="39"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="39" id="Dta-c4-zZr"/>
+                                    <constraint firstAttribute="width" constant="285" id="OT3-hb-4Yn"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                <state key="normal" title="浜掕仈缃慏emo" backgroundImage="orange_button"/>
+                                <state key="highlighted" backgroundImage="orange_button_sel"/>
+                                <connections>
+                                    <action selector="go2CameraList:" destination="BYZ-38-t0r" eventType="touchUpInside" id="UL5-C6-Mmx"/>
+                                </connections>
+                            </button>
+                            <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Jqc-fA-IF7">
+                                <rect key="frame" x="45" y="598" width="285" height="39"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="285" id="47F-cH-WPe"/>
+                                    <constraint firstAttribute="height" constant="39" id="aWy-eI-cnW"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                <state key="normal" title="钀ょ煶鐧诲綍" backgroundImage="blue_button"/>
+                                <state key="highlighted" backgroundImage="blue_button_sel"/>
+                                <connections>
+                                    <action selector="ezvizLogin:" destination="BYZ-38-t0r" eventType="touchUpInside" id="hcg-0O-Gq9"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="EWl-dl-v7z">
+                                <rect key="frame" x="45" y="365" width="285" height="39"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="39" id="FhC-TV-ezu"/>
+                                    <constraint firstAttribute="width" constant="285" id="Niw-45-NHf"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                <state key="normal" title="灞�鍩熺綉Demo" backgroundImage="orange_button"/>
+                                <state key="highlighted" backgroundImage="orange_button_sel"/>
+                                <connections>
+                                    <segue destination="lve-FH-V3q" kind="push" id="wdG-ur-OaH"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Tbh-3f-Kyo">
+                                <rect key="frame" x="45" y="483" width="285" height="39"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="39" id="aUb-DN-crC"/>
+                                    <constraint firstAttribute="width" constant="285" id="u2c-90-3In"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                <state key="normal" title="DDNS Demo" backgroundImage="orange_button"/>
+                                <state key="highlighted" backgroundImage="orange_button_sel"/>
+                                <connections>
+                                    <segue destination="qZw-LL-wzV" kind="push" id="yxL-uN-ZvY"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ps8-ku-D1c">
+                                <rect key="frame" x="45" y="424" width="285" height="39"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="39" id="Mu0-my-UVK"/>
+                                    <constraint firstAttribute="width" constant="285" id="rGt-yT-DqQ"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                <state key="normal" title="Support" backgroundImage="orange_button"/>
+                                <state key="highlighted" backgroundImage="orange_button_sel"/>
+                                <connections>
+                                    <action selector="supportBtnClick:" destination="BYZ-38-t0r" eventType="touchUpInside" id="7dM-lj-Wct"/>
+                                </connections>
+                            </button>
+                        </subviews>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstItem="Jqc-fA-IF7" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="0u7-ic-ffM"/>
+                            <constraint firstItem="ps8-ku-D1c" firstAttribute="top" secondItem="EWl-dl-v7z" secondAttribute="bottom" constant="20" id="5CP-Ff-rzS"/>
+                            <constraint firstItem="ps8-ku-D1c" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="87a-rw-8Dg"/>
+                            <constraint firstItem="MPX-n4-aGz" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="HBw-CM-yXP"/>
+                            <constraint firstItem="EWl-dl-v7z" firstAttribute="top" secondItem="p2R-3f-bRm" secondAttribute="bottom" constant="20" id="I1V-DW-mIa"/>
+                            <constraint firstItem="Tbh-3f-Kyo" firstAttribute="top" secondItem="ps8-ku-D1c" secondAttribute="bottom" constant="20" id="Lo4-Zt-LuM"/>
+                            <constraint firstItem="EWl-dl-v7z" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="XaA-D1-njM"/>
+                            <constraint firstItem="MPX-n4-aGz" firstAttribute="top" secondItem="y3c-jy-aDJ" secondAttribute="bottom" constant="56" id="YVS-Pv-v3f"/>
+                            <constraint firstItem="Tbh-3f-Kyo" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="b2a-zO-RHF"/>
+                            <constraint firstItem="wfy-db-euE" firstAttribute="top" secondItem="Jqc-fA-IF7" secondAttribute="bottom" constant="30" id="goF-mU-CcC"/>
+                            <constraint firstItem="p2R-3f-bRm" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="jEu-7v-93k"/>
+                            <constraint firstItem="p2R-3f-bRm" firstAttribute="top" secondItem="9VU-hP-zCR" secondAttribute="bottom" constant="20" id="mFD-bH-Mvl"/>
+                            <constraint firstItem="9VU-hP-zCR" firstAttribute="top" secondItem="MPX-n4-aGz" secondAttribute="bottom" constant="53" id="oSX-ki-Tc0"/>
+                            <constraint firstItem="9VU-hP-zCR" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="xhU-6r-0Yy"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="zba-ac-7BA">
+                        <barButtonItem key="rightBarButtonItem" title="娉ㄩ攢" id="TXG-Z3-M8g">
+                            <connections>
+                                <action selector="logout:" destination="BYZ-38-t0r" id="3ld-6c-xnS"/>
+                            </connections>
+                        </barButtonItem>
+                    </navigationItem>
+                    <connections>
+                        <outlet property="ddnsDemoBtn" destination="Tbh-3f-Kyo" id="No4-8D-5VX"/>
+                        <segue destination="PUV-T9-WXJ" kind="push" identifier="go2CameraList" id="ojB-EE-NfY"/>
+                        <segue destination="eVp-8l-5eB" kind="push" identifier="go2DemoAPI" id="wH9-FQ-qsr"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-235.19999999999999" y="145.72713643178412"/>
+        </scene>
+        <!--Device Table View Controller-->
+        <scene sceneID="rr5-Et-K6j">
+            <objects>
+                <tableViewController storyboardIdentifier="EZCameraList" id="PUV-T9-WXJ" customClass="EZDeviceTableViewController" sceneMemberID="viewController">
+                    <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="89" sectionHeaderHeight="28" sectionFooterHeight="28" id="UD8-7k-qhK">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <color key="backgroundColor" red="0.94117647059999998" green="0.94117647059999998" blue="0.94509803920000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <prototypes>
+                            <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="EZDeviceCell" rowHeight="73" id="Xkg-Dw-w2X" customClass="DeviceListCell">
+                                <rect key="frame" x="0.0" y="44.5" width="375" height="73"/>
+                                <autoresizingMask key="autoresizingMask"/>
+                                <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Xkg-Dw-w2X" id="Iet-JC-0rQ">
+                                    <rect key="frame" x="0.0" y="0.0" width="375" height="73"/>
+                                    <autoresizingMask key="autoresizingMask"/>
+                                    <subviews>
+                                        <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="oYg-rg-sRX">
+                                            <rect key="frame" x="5" y="5" width="112" height="63"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" secondItem="oYg-rg-sRX" secondAttribute="height" multiplier="16:9" id="Qj2-1x-bY8"/>
+                                            </constraints>
+                                        </imageView>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="C2S" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yuu-Ju-MKr">
+                                            <rect key="frame" x="127" y="5" width="238" height="20"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="20" id="N48-de-git"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hZX-eZ-E0u">
+                                            <rect key="frame" x="127" y="29" width="39" height="39"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="39" id="4QQ-tz-dPq"/>
+                                                <constraint firstAttribute="height" constant="39" id="RuZ-Pc-8zE"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                            <state key="normal" image="playback">
+                                                <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            </state>
+                                            <connections>
+                                                <action selector="go2Record:" destination="Xkg-Dw-w2X" eventType="touchUpInside" id="bav-o4-rz1"/>
+                                            </connections>
+                                        </button>
+                                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="AmG-2j-Y75">
+                                            <rect key="frame" x="186" y="29" width="39" height="39"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="39" id="Q42-XD-P1b"/>
+                                                <constraint firstAttribute="height" constant="39" id="iDX-Vm-hmw"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                            <state key="normal" image="message">
+                                                <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            </state>
+                                            <connections>
+                                                <action selector="go2Message:" destination="Xkg-Dw-w2X" eventType="touchUpInside" id="fKh-5v-6Ze"/>
+                                            </connections>
+                                        </button>
+                                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4wC-NG-1q2">
+                                            <rect key="frame" x="5" y="5" width="112" height="63"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" secondItem="4wC-NG-1q2" secondAttribute="height" multiplier="16:9" id="J7d-8O-Hsb"/>
+                                            </constraints>
+                                            <connections>
+                                                <action selector="go2Play:" destination="Xkg-Dw-w2X" eventType="touchUpInside" id="bRp-DU-PSA"/>
+                                            </connections>
+                                        </button>
+                                        <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="offline" translatesAutoresizingMaskIntoConstraints="NO" id="SXG-cT-WZd">
+                                            <rect key="frame" x="89" y="5" width="28" height="28"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="28" id="1bc-Qu-5o1"/>
+                                                <constraint firstAttribute="height" constant="28" id="o9l-At-R62"/>
+                                            </constraints>
+                                        </imageView>
+                                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0cb-tT-6Se">
+                                            <rect key="frame" x="245" y="29" width="39" height="39"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="39" id="Mps-h7-nX0"/>
+                                                <constraint firstAttribute="height" constant="39" id="hNG-1A-X3w"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <state key="normal" image="setup">
+                                                <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            </state>
+                                            <connections>
+                                                <action selector="go2Setting:" destination="Xkg-Dw-w2X" eventType="touchUpInside" id="2Bj-rO-BWL"/>
+                                            </connections>
+                                        </button>
+                                        <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ad0-s7-tSM">
+                                            <rect key="frame" x="304" y="29" width="39" height="39"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="39" id="DY8-Hg-cjL"/>
+                                                <constraint firstAttribute="height" constant="39" id="HnR-hR-8bi"/>
+                                            </constraints>
+                                            <state key="normal" image="duijiangji"/>
+                                            <connections>
+                                                <action selector="go2VideoTalk:" destination="Xkg-Dw-w2X" eventType="touchUpInside" id="ejA-qH-hlh"/>
+                                            </connections>
+                                        </button>
+                                    </subviews>
+                                    <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <constraints>
+                                        <constraint firstItem="4wC-NG-1q2" firstAttribute="leading" secondItem="Iet-JC-0rQ" secondAttribute="leading" constant="5" id="2lM-8U-Coj"/>
+                                        <constraint firstItem="AmG-2j-Y75" firstAttribute="leading" secondItem="hZX-eZ-E0u" secondAttribute="trailing" constant="20" id="3AL-W4-tN5"/>
+                                        <constraint firstAttribute="bottom" secondItem="AmG-2j-Y75" secondAttribute="bottom" constant="5" id="4hD-YQ-TQt"/>
+                                        <constraint firstItem="4wC-NG-1q2" firstAttribute="top" secondItem="Iet-JC-0rQ" secondAttribute="top" constant="5" id="CpW-TJ-kmv"/>
+                                        <constraint firstItem="yuu-Ju-MKr" firstAttribute="top" secondItem="Iet-JC-0rQ" secondAttribute="top" constant="5" id="Exf-xl-NwN"/>
+                                        <constraint firstItem="oYg-rg-sRX" firstAttribute="top" secondItem="Iet-JC-0rQ" secondAttribute="top" constant="5" id="GPe-zd-5ci"/>
+                                        <constraint firstItem="hZX-eZ-E0u" firstAttribute="leading" secondItem="oYg-rg-sRX" secondAttribute="trailing" constant="10" id="GsL-bZ-Shg"/>
+                                        <constraint firstAttribute="bottom" secondItem="4wC-NG-1q2" secondAttribute="bottom" constant="5" id="VtW-8E-Wln"/>
+                                        <constraint firstAttribute="bottom" secondItem="0cb-tT-6Se" secondAttribute="bottom" constant="5" id="WlZ-vF-Hr6"/>
+                                        <constraint firstItem="yuu-Ju-MKr" firstAttribute="leading" secondItem="oYg-rg-sRX" secondAttribute="trailing" constant="10" id="Y4S-hv-y1P"/>
+                                        <constraint firstItem="SXG-cT-WZd" firstAttribute="trailing" secondItem="4wC-NG-1q2" secondAttribute="trailing" id="YqH-qI-e52"/>
+                                        <constraint firstItem="SXG-cT-WZd" firstAttribute="top" secondItem="4wC-NG-1q2" secondAttribute="top" id="cOF-ea-qDY"/>
+                                        <constraint firstItem="0cb-tT-6Se" firstAttribute="leading" secondItem="AmG-2j-Y75" secondAttribute="trailing" constant="20" id="iAI-d3-joG"/>
+                                        <constraint firstAttribute="trailing" secondItem="yuu-Ju-MKr" secondAttribute="trailing" constant="10" id="iF6-ia-hBT"/>
+                                        <constraint firstAttribute="bottom" secondItem="oYg-rg-sRX" secondAttribute="bottom" constant="5" id="mW5-ze-raR"/>
+                                        <constraint firstItem="ad0-s7-tSM" firstAttribute="leading" secondItem="0cb-tT-6Se" secondAttribute="trailing" constant="20" id="pUr-10-jnu"/>
+                                        <constraint firstAttribute="bottom" secondItem="ad0-s7-tSM" secondAttribute="bottom" constant="5" id="peC-1f-wPe"/>
+                                        <constraint firstAttribute="bottom" secondItem="hZX-eZ-E0u" secondAttribute="bottom" constant="5" id="xIw-Sw-cwS"/>
+                                        <constraint firstItem="oYg-rg-sRX" firstAttribute="leading" secondItem="Iet-JC-0rQ" secondAttribute="leading" constant="5" id="xwT-lV-EqG"/>
+                                    </constraints>
+                                </tableViewCellContentView>
+                                <color key="backgroundColor" red="0.94117647059999998" green="0.94117647059999998" blue="0.94509803920000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <connections>
+                                    <outlet property="cameraImageView" destination="oYg-rg-sRX" id="Jy4-is-hdV"/>
+                                    <outlet property="messageButton" destination="AmG-2j-Y75" id="CYt-Tf-DqL"/>
+                                    <outlet property="nameLabel" destination="yuu-Ju-MKr" id="iYU-EQ-lA7"/>
+                                    <outlet property="offlineIcon" destination="SXG-cT-WZd" id="VXG-bh-GBD"/>
+                                    <outlet property="playButton" destination="4wC-NG-1q2" id="R0t-KW-2p5"/>
+                                    <outlet property="recordButton" destination="hZX-eZ-E0u" id="eaT-b6-TKr"/>
+                                    <outlet property="settingButton" destination="0cb-tT-6Se" id="fKK-di-Y5g"/>
+                                    <outlet property="videoTalkButton" destination="ad0-s7-tSM" id="HEM-dk-Tdi"/>
+                                </connections>
+                            </tableViewCell>
+                        </prototypes>
+                        <connections>
+                            <outlet property="dataSource" destination="PUV-T9-WXJ" id="c9f-0M-cLC"/>
+                            <outlet property="delegate" destination="PUV-T9-WXJ" id="ell-uM-Is0"/>
+                        </connections>
+                    </tableView>
+                    <navigationItem key="navigationItem" id="QiI-QE-qqY">
+                        <rightBarButtonItems>
+                            <barButtonItem id="yGh-cj-oPZ">
+                                <connections>
+                                    <action selector="go2AddDevice:" destination="PUV-T9-WXJ" id="D58-zZ-Ox4"/>
+                                </connections>
+                            </barButtonItem>
+                            <barButtonItem title="娉ㄩ攢" id="5JV-V5-93l">
+                                <connections>
+                                    <action selector="go2MultiPlay:" destination="PUV-T9-WXJ" id="dR3-5L-hra"/>
+                                </connections>
+                            </barButtonItem>
+                        </rightBarButtonItems>
+                    </navigationItem>
+                    <connections>
+                        <outlet property="addButton" destination="yGh-cj-oPZ" id="KX9-xN-pem"/>
+                        <outlet property="logoutBtn" destination="5JV-V5-93l" id="mDS-mp-F4P"/>
+                        <segue destination="uBF-Yq-Qo0" kind="push" identifier="go2LivePlay" id="X3Q-o5-p8V"/>
+                        <segue destination="I6z-uV-dEU" kind="push" identifier="go2Playback" id="Qls-Y0-o2u"/>
+                        <segue destination="MVz-Sq-jf5" kind="push" identifier="go2MessageList" id="Kgx-sc-mTL"/>
+                        <segue destination="3ZH-14-C2h" kind="push" identifier="go2Setting" id="1Wl-6O-XOm"/>
+                        <segue destination="mDf-rT-1AG" kind="push" identifier="go2CameraList" id="lW4-fY-Ttr"/>
+                    </connections>
+                </tableViewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="NKy-d7-m62" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="724" y="242"/>
+        </scene>
+        <!--Camera Table View Controller-->
+        <scene sceneID="TjS-bX-rfT">
+            <objects>
+                <tableViewController id="mDf-rT-1AG" customClass="EZCameraTableViewController" sceneMemberID="viewController">
+                    <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="yIX-z0-9in">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <prototypes>
+                            <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="EZCameraCell" id="7Im-ni-l3z">
+                                <rect key="frame" x="0.0" y="44.5" width="375" height="44"/>
+                                <autoresizingMask key="autoresizingMask"/>
+                                <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="7Im-ni-l3z" id="DdN-J1-0fa">
+                                    <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
+                                    <autoresizingMask key="autoresizingMask"/>
+                                </tableViewCellContentView>
+                            </tableViewCell>
+                        </prototypes>
+                        <connections>
+                            <outlet property="dataSource" destination="mDf-rT-1AG" id="eU2-XI-Pwl"/>
+                            <outlet property="delegate" destination="mDf-rT-1AG" id="KwM-WJ-FUe"/>
+                        </connections>
+                    </tableView>
+                    <navigationItem key="navigationItem" id="fvt-9v-OHF"/>
+                    <connections>
+                        <segue destination="uBF-Yq-Qo0" kind="push" identifier="go2LivePlay" id="oPv-Bb-2n6"/>
+                        <segue destination="I6z-uV-dEU" kind="push" identifier="go2Playback" id="GcW-2d-Vr6"/>
+                    </connections>
+                </tableViewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="BbG-Me-SeW" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1414.4000000000001" y="705.24737631184416"/>
+        </scene>
+        <!--Hub璁惧娴嬭瘯涓撶敤-->
+        <scene sceneID="G9e-94-Nua">
+            <objects>
+                <viewController storyboardIdentifier="EZHubDebugViewController" id="cjX-Lt-BP9" customClass="EZHubDebugViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="EWY-eJ-jtQ"/>
+                        <viewControllerLayoutGuide type="bottom" id="osv-DW-PLK"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="9Li-8P-hDA">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="璁惧搴忓垪鍙�" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iwL-Ah-WH0">
+                                <rect key="frame" x="20" y="150" width="72" height="17"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="bezel" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="3Ww-0Y-zfl">
+                                <rect key="frame" x="102" y="138.5" width="253" height="40"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="40" id="zI7-mv-iMH"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <textInputTraits key="textInputTraits"/>
+                            </textField>
+                            <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="1" borderStyle="bezel" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="iAj-OV-oUu">
+                                <rect key="frame" x="102" y="198.5" width="253" height="40"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="40" id="jeW-7w-Zss"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <textInputTraits key="textInputTraits"/>
+                            </textField>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2s3-2Z-WBg">
+                                <rect key="frame" x="170" y="258.5" width="35" height="33"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <state key="normal" title="璺宠浆">
+                                    <color key="titleColor" systemColor="darkTextColor"/>
+                                </state>
+                                <connections>
+                                    <action selector="clickNextBtn:" destination="cjX-Lt-BP9" eventType="touchUpInside" id="gpT-6m-bB8"/>
+                                </connections>
+                            </button>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Tip: 璇疯緭鍏ユ纭殑搴忓垪鍙峰強閫氶亾鍙疯繘琛岄瑙�/鍥炴斁" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Tju-Bo-s8t">
+                                <rect key="frame" x="20" y="642.5" width="335" height="14.5"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                <color key="textColor" systemColor="systemGrayColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="閫氶亾鍙�" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Gfd-eM-Uwg">
+                                <rect key="frame" x="20" y="210" width="43" height="17"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                        </subviews>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                        <constraints>
+                            <constraint firstItem="iAj-OV-oUu" firstAttribute="centerY" secondItem="Gfd-eM-Uwg" secondAttribute="centerY" id="4Dc-j5-BF4"/>
+                            <constraint firstItem="iAj-OV-oUu" firstAttribute="leading" secondItem="3Ww-0Y-zfl" secondAttribute="leading" id="9S5-Z0-yep"/>
+                            <constraint firstItem="2s3-2Z-WBg" firstAttribute="centerX" secondItem="9Li-8P-hDA" secondAttribute="centerX" id="Ewb-Mt-WOw"/>
+                            <constraint firstItem="Gfd-eM-Uwg" firstAttribute="leading" secondItem="iwL-Ah-WH0" secondAttribute="leading" id="H8P-Hf-0w3"/>
+                            <constraint firstItem="2s3-2Z-WBg" firstAttribute="top" secondItem="iAj-OV-oUu" secondAttribute="bottom" constant="20" id="Jca-Gb-xbn"/>
+                            <constraint firstItem="iwL-Ah-WH0" firstAttribute="top" secondItem="EWY-eJ-jtQ" secondAttribute="bottom" constant="150" id="S4R-2z-VJG"/>
+                            <constraint firstAttribute="trailing" secondItem="Tju-Bo-s8t" secondAttribute="trailing" constant="20" id="Wol-pi-jwB"/>
+                            <constraint firstAttribute="trailing" secondItem="3Ww-0Y-zfl" secondAttribute="trailing" constant="20" id="Ywb-iw-0Co"/>
+                            <constraint firstItem="iAj-OV-oUu" firstAttribute="top" secondItem="3Ww-0Y-zfl" secondAttribute="bottom" constant="20" id="azT-tB-cNb"/>
+                            <constraint firstItem="3Ww-0Y-zfl" firstAttribute="centerY" secondItem="iwL-Ah-WH0" secondAttribute="centerY" id="bUr-p5-c0c"/>
+                            <constraint firstItem="3Ww-0Y-zfl" firstAttribute="leading" secondItem="iwL-Ah-WH0" secondAttribute="trailing" constant="10" id="gAu-hK-yWx"/>
+                            <constraint firstItem="osv-DW-PLK" firstAttribute="top" secondItem="Tju-Bo-s8t" secondAttribute="bottom" constant="10" id="hk5-mb-cah"/>
+                            <constraint firstItem="Tju-Bo-s8t" firstAttribute="leading" secondItem="9Li-8P-hDA" secondAttribute="leading" constant="20" id="q6g-dT-jVP"/>
+                            <constraint firstItem="iAj-OV-oUu" firstAttribute="trailing" secondItem="3Ww-0Y-zfl" secondAttribute="trailing" id="yqG-Yl-wlg"/>
+                            <constraint firstItem="iwL-Ah-WH0" firstAttribute="leading" secondItem="9Li-8P-hDA" secondAttribute="leading" constant="20" id="zBe-CH-hDj"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" title="Hub璁惧娴嬭瘯涓撶敤" id="yPB-O2-7ly"/>
+                    <connections>
+                        <outlet property="channelNo" destination="iAj-OV-oUu" id="Hv3-RO-7Sn"/>
+                        <outlet property="deviceSerial" destination="3Ww-0Y-zfl" id="frj-1l-EVk"/>
+                        <outlet property="nextBtn" destination="2s3-2Z-WBg" id="lKP-OE-VZc"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="GD7-bW-eej" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="2245.5999999999999" y="843.32833583208401"/>
+        </scene>
+        <!--DemoAPI Table View Controller-->
+        <scene sceneID="K6d-tL-5Zo">
+            <objects>
+                <tableViewController id="eVp-8l-5eB" customClass="DemoAPITableViewController" sceneMemberID="viewController">
+                    <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="CfU-2M-GhS">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <prototypes>
+                            <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="DemoAPICell" id="wpS-t4-02o">
+                                <rect key="frame" x="0.0" y="44.5" width="375" height="44"/>
+                                <autoresizingMask key="autoresizingMask"/>
+                                <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="wpS-t4-02o" id="8mM-ux-z21">
+                                    <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
+                                    <autoresizingMask key="autoresizingMask"/>
+                                </tableViewCellContentView>
+                            </tableViewCell>
+                        </prototypes>
+                        <connections>
+                            <outlet property="dataSource" destination="eVp-8l-5eB" id="1sZ-CF-mcF"/>
+                            <outlet property="delegate" destination="eVp-8l-5eB" id="QDd-Zc-npE"/>
+                        </connections>
+                    </tableView>
+                    <navigationItem key="navigationItem" id="uwl-Qi-lCX">
+                        <barButtonItem key="rightBarButtonItem" title="娴嬭瘯" id="eaB-Su-wjk">
+                            <color key="tintColor" red="0.46666666666666667" green="0.6588235294117647" blue="0.98039215686274506" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <connections>
+                                <action selector="checkCancel:" destination="eVp-8l-5eB" id="gJG-PL-kXX"/>
+                            </connections>
+                        </barButtonItem>
+                    </navigationItem>
+                    <connections>
+                        <segue destination="gYM-MT-67r" kind="push" identifier="go2Play" id="vGU-HX-hFr"/>
+                    </connections>
+                </tableViewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="piY-CP-R86" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-236.80000000000001" y="-794.30284857571223"/>
+        </scene>
+        <!--Local Device List View Controller-->
+        <scene sceneID="OzV-ek-MDM">
+            <objects>
+                <tableViewController id="lve-FH-V3q" customClass="EZLocalDeviceListViewController" sceneMemberID="viewController">
+                    <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="eYm-4q-VdW">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                        <prototypes>
+                            <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="UVM-wN-ME4">
+                                <rect key="frame" x="0.0" y="44.5" width="375" height="44"/>
+                                <autoresizingMask key="autoresizingMask"/>
+                                <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="UVM-wN-ME4" id="PFk-ak-8nJ">
+                                    <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
+                                    <autoresizingMask key="autoresizingMask"/>
+                                </tableViewCellContentView>
+                            </tableViewCell>
+                        </prototypes>
+                        <connections>
+                            <outlet property="dataSource" destination="lve-FH-V3q" id="zuS-vV-dCl"/>
+                            <outlet property="delegate" destination="lve-FH-V3q" id="Uwu-Sl-2aT"/>
+                        </connections>
+                    </tableView>
+                    <navigationItem key="navigationItem" id="roW-Vh-54I"/>
+                    <connections>
+                        <segue destination="DY9-ia-PiP" kind="push" identifier="go2LocalRealPlay" id="9Tu-UR-Cms"/>
+                        <segue destination="3Mz-U5-jsP" kind="push" identifier="go2CameraList" id="vdt-wN-aOY"/>
+                    </connections>
+                </tableViewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="fUd-tf-VAT" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1316.8" y="-303.14842578710648"/>
+        </scene>
+        <!--Play Demo View Controller-->
+        <scene sceneID="8fm-uL-tzd">
+            <objects>
+                <viewController id="gYM-MT-67r" customClass="EZPlayDemoViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="74A-e0-tbe"/>
+                        <viewControllerLayoutGuide type="bottom" id="J7W-UF-HXH"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="Ele-7y-Sts">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8AH-ts-VAl">
+                                <rect key="frame" x="0.0" y="44" width="187.5" height="100"/>
+                                <color key="backgroundColor" red="0.17321318387985229" green="0.74333697557449341" blue="0.45914602279663086" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="100" id="uyH-gu-qB2"/>
+                                </constraints>
+                            </view>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="frT-lO-vkv">
+                                <rect key="frame" x="187.5" y="144" width="187.5" height="100"/>
+                                <color key="backgroundColor" red="0.17321318387985229" green="0.74333697557449341" blue="0.45914602279663086" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            </view>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="XlI-CJ-eCW">
+                                <rect key="frame" x="0.0" y="144" width="187.5" height="100"/>
+                                <color key="backgroundColor" red="0.93333333330000001" green="0.65490196079999996" blue="0.40000000000000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            </view>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iCt-fy-olc">
+                                <rect key="frame" x="187.5" y="44" width="187.5" height="100"/>
+                                <color key="backgroundColor" red="0.85770881180000003" green="0.211302614" blue="0.113631911" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            </view>
+                        </subviews>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstAttribute="trailing" secondItem="iCt-fy-olc" secondAttribute="trailing" id="8cG-EV-Zci"/>
+                            <constraint firstItem="iCt-fy-olc" firstAttribute="width" secondItem="8AH-ts-VAl" secondAttribute="width" id="K2g-7q-aVl"/>
+                            <constraint firstItem="frT-lO-vkv" firstAttribute="top" secondItem="iCt-fy-olc" secondAttribute="bottom" id="UhO-aa-pdv"/>
+                            <constraint firstItem="iCt-fy-olc" firstAttribute="top" secondItem="74A-e0-tbe" secondAttribute="bottom" id="Ur2-hP-wfh"/>
+                            <constraint firstItem="frT-lO-vkv" firstAttribute="leading" secondItem="XlI-CJ-eCW" secondAttribute="trailing" id="XIn-Kk-1nK"/>
+                            <constraint firstItem="8AH-ts-VAl" firstAttribute="top" secondItem="74A-e0-tbe" secondAttribute="bottom" id="Y3l-Rf-RQU"/>
+                            <constraint firstItem="iCt-fy-olc" firstAttribute="leading" secondItem="8AH-ts-VAl" secondAttribute="trailing" id="a1g-Bl-WQa"/>
+                            <constraint firstItem="XlI-CJ-eCW" firstAttribute="width" secondItem="8AH-ts-VAl" secondAttribute="width" id="bjQ-gf-dGk"/>
+                            <constraint firstAttribute="trailing" secondItem="frT-lO-vkv" secondAttribute="trailing" id="cb9-Tf-upe"/>
+                            <constraint firstItem="8AH-ts-VAl" firstAttribute="leading" secondItem="Ele-7y-Sts" secondAttribute="leading" id="dpm-HC-1mA"/>
+                            <constraint firstItem="XlI-CJ-eCW" firstAttribute="height" secondItem="8AH-ts-VAl" secondAttribute="height" id="g4q-KH-ZfP"/>
+                            <constraint firstItem="frT-lO-vkv" firstAttribute="height" secondItem="8AH-ts-VAl" secondAttribute="height" id="nsU-MN-xXd"/>
+                            <constraint firstItem="iCt-fy-olc" firstAttribute="height" secondItem="8AH-ts-VAl" secondAttribute="height" id="qhP-df-mYo"/>
+                            <constraint firstItem="XlI-CJ-eCW" firstAttribute="leading" secondItem="Ele-7y-Sts" secondAttribute="leading" id="rzL-GK-xxp"/>
+                            <constraint firstItem="frT-lO-vkv" firstAttribute="width" secondItem="8AH-ts-VAl" secondAttribute="width" id="wH2-YL-hfv"/>
+                            <constraint firstItem="XlI-CJ-eCW" firstAttribute="top" secondItem="8AH-ts-VAl" secondAttribute="bottom" id="zP3-Uf-px6"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="FYr-cz-ceJ"/>
+                    <connections>
+                        <outlet property="playerView1" destination="8AH-ts-VAl" id="RyF-dg-Xlo"/>
+                        <outlet property="playerView2" destination="iCt-fy-olc" id="8Pp-VG-cj3"/>
+                        <outlet property="playerView3" destination="XlI-CJ-eCW" id="ths-4T-Wdu"/>
+                        <outlet property="playerView4" destination="frT-lO-vkv" id="HA5-cm-w4R"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="5b9-k6-eNq" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="667.20000000000005" y="-1505.8470764617691"/>
+        </scene>
+        <!--Local Camera List View Controller-->
+        <scene sceneID="GiH-NW-r0j">
+            <objects>
+                <tableViewController id="3Mz-U5-jsP" customClass="EZLocalCameraListViewController" sceneMemberID="viewController">
+                    <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="chP-35-ge9">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                        <prototypes>
+                            <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="VhH-MZ-U0P">
+                                <rect key="frame" x="0.0" y="44.5" width="375" height="44"/>
+                                <autoresizingMask key="autoresizingMask"/>
+                                <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="VhH-MZ-U0P" id="Kep-2I-4hb">
+                                    <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
+                                    <autoresizingMask key="autoresizingMask"/>
+                                </tableViewCellContentView>
+                            </tableViewCell>
+                        </prototypes>
+                        <connections>
+                            <outlet property="dataSource" destination="3Mz-U5-jsP" id="Shx-EK-Y4b"/>
+                            <outlet property="delegate" destination="3Mz-U5-jsP" id="SyV-co-OYw"/>
+                        </connections>
+                    </tableView>
+                    <navigationItem key="navigationItem" id="qGc-YD-tfD"/>
+                    <connections>
+                        <segue destination="DY9-ia-PiP" kind="push" identifier="cameraList2RealPlay" id="EFm-VJ-o0S"/>
+                    </connections>
+                </tableViewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="sT3-wg-h8c" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="2160" y="-1504.9475262368817"/>
+        </scene>
+        <!--Local Real Play View Controller-->
+        <scene sceneID="Ob9-Vq-jik">
+            <objects>
+                <viewController id="DY9-ia-PiP" customClass="EZLocalRealPlayViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="h0Y-TV-n1t"/>
+                        <viewControllerLayoutGuide type="bottom" id="4wj-tV-fqx"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="EEp-D8-32M">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hdv-eQ-Pot">
+                                <rect key="frame" x="0.0" y="44" width="375" height="211"/>
+                                <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" secondItem="hdv-eQ-Pot" secondAttribute="height" multiplier="16:9" id="qjy-ev-K4v"/>
+                                </constraints>
+                            </view>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dGh-tv-6od">
+                                <rect key="frame" x="0.0" y="467" width="375" height="200"/>
+                                <subviews>
+                                    <button opaque="NO" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="zmO-yA-U7o">
+                                        <rect key="frame" x="110.5" y="23" width="154" height="154"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="154" id="bmK-aA-z2Y"/>
+                                            <constraint firstAttribute="width" constant="154" id="dtm-z6-bF8"/>
+                                        </constraints>
+                                        <state key="normal" image="ptz_bg" backgroundImage="ptz_bg"/>
+                                        <state key="disabled" image="ptz_bg" backgroundImage="ptz_bg"/>
+                                        <state key="highlighted" image="ptz_bg"/>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="o3J-1O-xKa">
+                                        <rect key="frame" x="162.5" y="23" width="50" height="50"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="50" id="T7U-Lb-iYk"/>
+                                            <constraint firstAttribute="width" constant="50" id="yvd-VM-S0F"/>
+                                        </constraints>
+                                        <connections>
+                                            <action selector="ptzStart:" destination="DY9-ia-PiP" eventType="touchDown" id="FmE-If-DJB"/>
+                                            <action selector="ptzStop:" destination="DY9-ia-PiP" eventType="touchUpInside" id="KYK-NW-8CI"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YPs-v6-rGE">
+                                        <rect key="frame" x="162.5" y="127" width="50" height="50"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="50" id="4vC-Qa-KjP"/>
+                                            <constraint firstAttribute="height" constant="50" id="5Fr-vb-ovm"/>
+                                        </constraints>
+                                        <connections>
+                                            <action selector="ptzStart:" destination="DY9-ia-PiP" eventType="touchDown" id="Va2-ev-nNu"/>
+                                            <action selector="ptzStop:" destination="DY9-ia-PiP" eventType="touchUpInside" id="i53-0h-UuB"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4FY-hr-et5">
+                                        <rect key="frame" x="214.5" y="74" width="50" height="50"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="50" id="3Gt-6l-mih"/>
+                                            <constraint firstAttribute="height" constant="50" id="p6U-Hl-acN"/>
+                                        </constraints>
+                                        <connections>
+                                            <action selector="ptzStart:" destination="DY9-ia-PiP" eventType="touchDown" id="j9n-PS-Beo"/>
+                                            <action selector="ptzStop:" destination="DY9-ia-PiP" eventType="touchUpInside" id="JwY-1I-u4H"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="AGq-mS-fpu">
+                                        <rect key="frame" x="110.5" y="75" width="50" height="50"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="50" id="HCc-Dx-2z4"/>
+                                            <constraint firstAttribute="width" constant="50" id="q60-ir-KZb"/>
+                                        </constraints>
+                                        <connections>
+                                            <action selector="ptzStart:" destination="DY9-ia-PiP" eventType="touchDown" id="4Bd-We-F5z"/>
+                                            <action selector="ptzStop:" destination="DY9-ia-PiP" eventType="touchUpInside" id="6k7-62-FlS"/>
+                                        </connections>
+                                    </button>
+                                </subviews>
+                                <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                                <constraints>
+                                    <constraint firstItem="AGq-mS-fpu" firstAttribute="centerY" secondItem="dGh-tv-6od" secondAttribute="centerY" priority="750" id="6Ua-84-TEt"/>
+                                    <constraint firstItem="YPs-v6-rGE" firstAttribute="centerX" secondItem="dGh-tv-6od" secondAttribute="centerX" priority="750" id="EM0-2a-fAq"/>
+                                    <constraint firstAttribute="centerX" secondItem="AGq-mS-fpu" secondAttribute="trailing" priority="750" constant="27" id="L0Z-lO-ka5"/>
+                                    <constraint firstAttribute="height" constant="200" id="LlC-4K-Vpc"/>
+                                    <constraint firstAttribute="centerY" secondItem="o3J-1O-xKa" secondAttribute="bottom" priority="750" constant="27" id="PiS-5g-E5f"/>
+                                    <constraint firstItem="4FY-hr-et5" firstAttribute="centerY" secondItem="dGh-tv-6od" secondAttribute="centerY" priority="750" constant="-1" id="Sba-Vg-Qul"/>
+                                    <constraint firstItem="zmO-yA-U7o" firstAttribute="centerX" secondItem="dGh-tv-6od" secondAttribute="centerX" priority="750" id="a6V-Dn-JYu"/>
+                                    <constraint firstItem="o3J-1O-xKa" firstAttribute="centerX" secondItem="dGh-tv-6od" secondAttribute="centerX" priority="750" id="bhI-hp-Gej"/>
+                                    <constraint firstItem="zmO-yA-U7o" firstAttribute="centerY" secondItem="dGh-tv-6od" secondAttribute="centerY" priority="750" id="lMq-ZA-nLj"/>
+                                    <constraint firstItem="YPs-v6-rGE" firstAttribute="top" secondItem="dGh-tv-6od" secondAttribute="centerY" priority="750" constant="27" id="nZd-DA-LUI"/>
+                                    <constraint firstItem="4FY-hr-et5" firstAttribute="leading" secondItem="dGh-tv-6od" secondAttribute="centerX" priority="750" constant="27" id="ohc-aO-VyY"/>
+                                </constraints>
+                            </view>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                        <constraints>
+                            <constraint firstItem="dGh-tv-6od" firstAttribute="leading" secondItem="EEp-D8-32M" secondAttribute="leading" id="6jN-4v-8p4"/>
+                            <constraint firstAttribute="trailing" secondItem="dGh-tv-6od" secondAttribute="trailing" id="IYo-ow-hER"/>
+                            <constraint firstAttribute="trailing" secondItem="hdv-eQ-Pot" secondAttribute="trailing" id="OT6-ma-tdH"/>
+                            <constraint firstItem="4wj-tV-fqx" firstAttribute="top" secondItem="dGh-tv-6od" secondAttribute="bottom" id="ccD-0a-h62"/>
+                            <constraint firstItem="hdv-eQ-Pot" firstAttribute="leading" secondItem="EEp-D8-32M" secondAttribute="leading" id="gV9-Mb-Mcx"/>
+                            <constraint firstItem="hdv-eQ-Pot" firstAttribute="top" secondItem="h0Y-TV-n1t" secondAttribute="bottom" id="ydp-0t-Luo"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="31P-xi-HNx"/>
+                    <connections>
+                        <outlet property="playerView" destination="hdv-eQ-Pot" id="dwq-TG-eDg"/>
+                        <outlet property="ptzBgBtn" destination="zmO-yA-U7o" id="P8c-Ec-ZWf"/>
+                        <outlet property="ptzDownBtn" destination="YPs-v6-rGE" id="nGW-Uw-VJv"/>
+                        <outlet property="ptzLeftBtn" destination="AGq-mS-fpu" id="QaN-LS-GA3"/>
+                        <outlet property="ptzRightBtn" destination="4FY-hr-et5" id="QwW-Dl-DXG"/>
+                        <outlet property="ptzUpBtn" destination="o3J-1O-xKa" id="2If-64-zQF"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="MCh-vn-O5v" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="2159.1999999999998" y="-702.99850074962524"/>
+        </scene>
+        <!--Live Play View Controller-->
+        <scene sceneID="nO0-GE-9oX">
+            <objects>
+                <viewController storyboardIdentifier="EZLivePlayViewController" id="uBF-Yq-Qo0" customClass="EZLivePlayViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="heE-pR-PSR"/>
+                        <viewControllerLayoutGuide type="bottom" id="3qm-Zv-a7S"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="PYB-vu-Xcw">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="wifi_bg" translatesAutoresizingMaskIntoConstraints="NO" id="gFl-PI-CLn">
+                                <rect key="frame" x="0.0" y="44" width="375" height="623"/>
+                            </imageView>
+                            <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="NRj-hs-uOI">
+                                <rect key="frame" x="0.0" y="44" width="375" height="211"/>
+                                <subviews>
+                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1Xz-5f-ZJx">
+                                        <rect key="frame" x="0.0" y="0.0" width="375" height="211"/>
+                                        <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" secondItem="1Xz-5f-ZJx" secondAttribute="height" multiplier="16:9" id="7NS-WA-bEr"/>
+                                        </constraints>
+                                    </view>
+                                </subviews>
+                                <constraints>
+                                    <constraint firstItem="1Xz-5f-ZJx" firstAttribute="centerY" secondItem="NRj-hs-uOI" secondAttribute="centerY" id="DTc-SB-nnD"/>
+                                    <constraint firstAttribute="width" secondItem="NRj-hs-uOI" secondAttribute="height" multiplier="16:9" id="FHe-T4-BRJ"/>
+                                    <constraint firstItem="1Xz-5f-ZJx" firstAttribute="width" secondItem="NRj-hs-uOI" secondAttribute="width" id="JfK-ti-Ys7"/>
+                                    <constraint firstItem="1Xz-5f-ZJx" firstAttribute="height" secondItem="NRj-hs-uOI" secondAttribute="height" id="QcN-dO-GL9"/>
+                                    <constraint firstAttribute="bottom" secondItem="1Xz-5f-ZJx" secondAttribute="bottom" id="ted-kP-rO7"/>
+                                    <constraint firstAttribute="trailing" secondItem="1Xz-5f-ZJx" secondAttribute="trailing" id="wA6-Da-kWF"/>
+                                    <constraint firstItem="1Xz-5f-ZJx" firstAttribute="centerX" secondItem="NRj-hs-uOI" secondAttribute="centerX" id="zUn-i2-2qZ"/>
+                                </constraints>
+                                <viewLayoutGuide key="contentLayoutGuide" id="ENM-3Y-cS8"/>
+                                <viewLayoutGuide key="frameLayoutGuide" id="itJ-oF-sXb"/>
+                            </scrollView>
+                            <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2bL-GF-xWw">
+                                <rect key="frame" x="0.0" y="44" width="375" height="40"/>
+                                <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="40" id="u99-on-soH"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="  00:00" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Yrc-c9-rvb">
+                                <rect key="frame" x="147.5" y="54" width="80" height="24"/>
+                                <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="80" id="O7b-Gn-efp"/>
+                                    <constraint firstAttribute="height" constant="24" id="ZGt-2H-p7D"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dTs-1h-o4p">
+                                <rect key="frame" x="157" y="162" width="61" height="93"/>
+                                <subviews>
+                                    <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="picture_bg" translatesAutoresizingMaskIntoConstraints="NO" id="oew-Eh-y6G">
+                                        <rect key="frame" x="0.0" y="0.0" width="61" height="93"/>
+                                    </imageView>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="skK-Ar-y6h">
+                                        <rect key="frame" x="0.0" y="5" width="61" height="25"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="25" id="FvR-rx-0Us"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                        <state key="normal" title="楂樻竻"/>
+                                        <state key="highlighted">
+                                            <color key="titleColor" red="0.83529411760000005" green="0.35294117650000001" blue="0.1764705882" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </state>
+                                        <connections>
+                                            <action selector="qualitySelectedClicked:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="ehq-ZC-DP7"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WSh-Ao-McO">
+                                        <rect key="frame" x="0.0" y="30" width="61" height="25"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="25" id="R6l-x2-qDN"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                        <state key="normal" title="鍧囪 "/>
+                                        <state key="highlighted">
+                                            <color key="titleColor" red="0.83529411760000005" green="0.35294117650000001" blue="0.1764705882" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </state>
+                                        <connections>
+                                            <action selector="qualitySelectedClicked:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="r2V-mn-r3i"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="UlQ-aK-1VP">
+                                        <rect key="frame" x="0.0" y="55" width="61" height="25"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                        <state key="normal" title="娴佺晠"/>
+                                        <state key="highlighted">
+                                            <color key="titleColor" red="0.83529411760000005" green="0.35294117650000001" blue="0.1764705882" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </state>
+                                        <connections>
+                                            <action selector="qualitySelectedClicked:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="zNC-JB-2X8"/>
+                                        </connections>
+                                    </button>
+                                </subviews>
+                                <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstItem="WSh-Ao-McO" firstAttribute="top" secondItem="skK-Ar-y6h" secondAttribute="bottom" id="1lW-7e-eiC"/>
+                                    <constraint firstAttribute="width" constant="61" id="7Vp-xX-qkl"/>
+                                    <constraint firstItem="skK-Ar-y6h" firstAttribute="trailing" secondItem="WSh-Ao-McO" secondAttribute="trailing" id="9yE-XT-Sk2"/>
+                                    <constraint firstItem="skK-Ar-y6h" firstAttribute="top" secondItem="dTs-1h-o4p" secondAttribute="top" constant="5" id="GWJ-7g-A0e"/>
+                                    <constraint firstItem="oew-Eh-y6G" firstAttribute="centerX" secondItem="UlQ-aK-1VP" secondAttribute="centerX" id="L87-O0-VoA"/>
+                                    <constraint firstItem="UlQ-aK-1VP" firstAttribute="top" secondItem="WSh-Ao-McO" secondAttribute="bottom" id="WgL-bD-701"/>
+                                    <constraint firstItem="skK-Ar-y6h" firstAttribute="leading" secondItem="WSh-Ao-McO" secondAttribute="leading" id="YhJ-Jr-x79"/>
+                                    <constraint firstItem="oew-Eh-y6G" firstAttribute="centerY" secondItem="dTs-1h-o4p" secondAttribute="centerY" id="c1M-Xb-cfJ"/>
+                                    <constraint firstAttribute="height" constant="93" id="d7D-mg-BSx"/>
+                                    <constraint firstAttribute="bottom" secondItem="UlQ-aK-1VP" secondAttribute="bottom" constant="13" id="ebx-RF-FUE"/>
+                                    <constraint firstItem="skK-Ar-y6h" firstAttribute="centerX" secondItem="dTs-1h-o4p" secondAttribute="centerX" id="mlv-DW-3jJ"/>
+                                    <constraint firstItem="WSh-Ao-McO" firstAttribute="leading" secondItem="UlQ-aK-1VP" secondAttribute="leading" id="pfM-pi-Gro"/>
+                                    <constraint firstItem="WSh-Ao-McO" firstAttribute="trailing" secondItem="UlQ-aK-1VP" secondAttribute="trailing" id="qLx-ym-avm"/>
+                                    <constraint firstItem="oew-Eh-y6G" firstAttribute="leading" secondItem="skK-Ar-y6h" secondAttribute="leading" id="wYS-ai-oQn"/>
+                                </constraints>
+                            </view>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1FE-Su-4U4">
+                                <rect key="frame" x="0.0" y="255" width="375" height="37"/>
+                                <subviews>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xSp-4i-Jwh">
+                                        <rect key="frame" x="0.0" y="0.0" width="75" height="37"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="37" id="vvT-rg-bpU"/>
+                                        </constraints>
+                                        <state key="normal" image="preview_play_btn"/>
+                                        <state key="highlighted" image="preview_play_btn_sel"/>
+                                        <connections>
+                                            <action selector="playButtonClicked:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="h84-BQ-Rba"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="tAW-X2-E9K">
+                                        <rect key="frame" x="75" y="0.0" width="75" height="37"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="37" id="yUl-JS-zBO"/>
+                                        </constraints>
+                                        <state key="normal" image="preview_voice_btn"/>
+                                        <state key="selected" image="preview_unvoice_btn"/>
+                                        <state key="highlighted" image="preview_voice_btn_sel"/>
+                                        <connections>
+                                            <action selector="voiceButtonClicked:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="99b-Tz-nsx"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="MqM-GF-jSr">
+                                        <rect key="frame" x="225" y="0.0" width="75" height="37"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="37" id="dpN-py-vBv"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="lTh-qe-8pV">
+                                        <rect key="frame" x="300" y="0.0" width="75" height="37"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="37" id="b2W-Lf-XIu"/>
+                                        </constraints>
+                                        <state key="normal" image="preview_enlarge"/>
+                                        <state key="highlighted" image="preview_enlarge_btn_sel"/>
+                                        <connections>
+                                            <action selector="large:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="DiS-En-dkK"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="JEB-Q6-XNh">
+                                        <rect key="frame" x="150" y="0.0" width="75" height="37"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="37" id="vOh-Oc-1dN"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                        <state key="normal" title="楂樻竻">
+                                            <color key="titleColor" red="0.70588235294117641" green="0.70588235294117641" blue="0.70588235294117641" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </state>
+                                        <connections>
+                                            <action selector="qualityButtonClicked:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="Hze-u0-cgn"/>
+                                        </connections>
+                                    </button>
+                                </subviews>
+                                <color key="backgroundColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstItem="xSp-4i-Jwh" firstAttribute="top" secondItem="1FE-Su-4U4" secondAttribute="top" id="1W5-cF-JRC"/>
+                                    <constraint firstItem="lTh-qe-8pV" firstAttribute="top" secondItem="1FE-Su-4U4" secondAttribute="top" id="HsY-AZ-lgd"/>
+                                    <constraint firstItem="tAW-X2-E9K" firstAttribute="width" secondItem="xSp-4i-Jwh" secondAttribute="width" id="Mx5-If-rHb"/>
+                                    <constraint firstItem="MqM-GF-jSr" firstAttribute="width" secondItem="xSp-4i-Jwh" secondAttribute="width" id="NLP-kf-u95"/>
+                                    <constraint firstAttribute="height" constant="37" id="Onr-j0-g93"/>
+                                    <constraint firstItem="JEB-Q6-XNh" firstAttribute="width" secondItem="xSp-4i-Jwh" secondAttribute="width" id="P8q-8H-VNk"/>
+                                    <constraint firstItem="MqM-GF-jSr" firstAttribute="top" secondItem="1FE-Su-4U4" secondAttribute="top" id="Rht-jJ-nst"/>
+                                    <constraint firstItem="lTh-qe-8pV" firstAttribute="width" secondItem="xSp-4i-Jwh" secondAttribute="width" id="XLi-l4-xmh"/>
+                                    <constraint firstItem="tAW-X2-E9K" firstAttribute="leading" secondItem="xSp-4i-Jwh" secondAttribute="trailing" id="Zd3-bK-ayn"/>
+                                    <constraint firstAttribute="trailing" secondItem="lTh-qe-8pV" secondAttribute="trailing" id="aid-gD-fi2"/>
+                                    <constraint firstItem="MqM-GF-jSr" firstAttribute="leading" secondItem="JEB-Q6-XNh" secondAttribute="trailing" id="ea4-ei-JXX"/>
+                                    <constraint firstItem="tAW-X2-E9K" firstAttribute="top" secondItem="1FE-Su-4U4" secondAttribute="top" id="gFD-BU-g3r"/>
+                                    <constraint firstItem="JEB-Q6-XNh" firstAttribute="top" secondItem="1FE-Su-4U4" secondAttribute="top" id="iOt-L6-Zqu"/>
+                                    <constraint firstItem="JEB-Q6-XNh" firstAttribute="leading" secondItem="tAW-X2-E9K" secondAttribute="trailing" id="o02-Wm-XvO"/>
+                                    <constraint firstItem="lTh-qe-8pV" firstAttribute="leading" secondItem="MqM-GF-jSr" secondAttribute="trailing" id="q8x-LF-oDx"/>
+                                    <constraint firstItem="xSp-4i-Jwh" firstAttribute="leading" secondItem="1FE-Su-4U4" secondAttribute="leading" id="qZZ-Fc-8jt"/>
+                                </constraints>
+                            </view>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7Gq-77-ypg">
+                                <rect key="frame" x="0.0" y="292" width="375" height="375"/>
+                                <subviews>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fUI-tR-jyG">
+                                        <rect key="frame" x="77.5" y="87.5" width="100" height="100"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="100" id="4pV-lo-eLV"/>
+                                            <constraint firstAttribute="height" constant="100" id="CFM-rZ-KQg"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                        <state key="normal" title="浜戝彴" image="preview_barrel">
+                                            <color key="titleColor" red="0.66666666666666663" green="0.66666666666666663" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </state>
+                                        <state key="disabled" image="preview_barrel_dis"/>
+                                        <state key="highlighted" image="preview_barrel_sel"/>
+                                        <connections>
+                                            <action selector="ptzViewShow:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="KFK-7A-xxO"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4Eh-hh-84T">
+                                        <rect key="frame" x="197.5" y="87.5" width="100" height="100"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="100" id="MdX-on-ZlR"/>
+                                            <constraint firstAttribute="height" constant="100" id="uZ6-ZC-fku"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                        <state key="normal" title="瀵硅" image="preview_talkback">
+                                            <color key="titleColor" red="0.66666666666666663" green="0.66666666666666663" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </state>
+                                        <state key="disabled" image="preview_talkback_dis"/>
+                                        <state key="selected" image="preview_talkback_sel"/>
+                                        <state key="highlighted" image="preview_talkback_sel"/>
+                                        <connections>
+                                            <action selector="talkButtonClicked:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="jgM-EH-Af3"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="wEO-O3-gSJ">
+                                        <rect key="frame" x="77.5" y="187.5" width="100" height="100"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="100" id="HNG-1d-auy"/>
+                                            <constraint firstAttribute="height" constant="100" id="fFt-WV-T6O"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                        <state key="normal" title="鎴浘" image="preview_screenshot">
+                                            <color key="titleColor" red="0.66666666666666663" green="0.66666666666666663" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </state>
+                                        <state key="disabled" image="preview_screenshot_dis"/>
+                                        <state key="highlighted" image="preview_screenshot_sel"/>
+                                        <connections>
+                                            <action selector="capture:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="0Wz-FX-QwF"/>
+                                        </connections>
+                                    </button>
+                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Lrx-9r-gJZ">
+                                        <rect key="frame" x="0.0" y="287" width="375" height="88"/>
+                                        <subviews>
+                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Un0-bC-uwU">
+                                                <rect key="frame" x="325" y="0.0" width="50" height="50"/>
+                                                <constraints>
+                                                    <constraint firstAttribute="width" constant="50" id="BBB-mL-3uD"/>
+                                                    <constraint firstAttribute="height" constant="50" id="p9L-7l-33x"/>
+                                                </constraints>
+                                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                <state key="normal" image="play_close">
+                                                    <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                </state>
+                                                <state key="highlighted" image="play_close_sel"/>
+                                                <connections>
+                                                    <action selector="closePtzView:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="M9G-1Z-zup"/>
+                                                </connections>
+                                            </button>
+                                            <button opaque="NO" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cRL-ov-Bad">
+                                                <rect key="frame" x="110.5" y="-33" width="154" height="154"/>
+                                                <constraints>
+                                                    <constraint firstAttribute="width" constant="154" id="2qV-nc-X2D"/>
+                                                    <constraint firstAttribute="height" constant="154" id="CCV-cO-2RB"/>
+                                                </constraints>
+                                                <state key="normal" image="ptz_bg" backgroundImage="ptz_bg"/>
+                                                <state key="disabled" image="ptz_bg" backgroundImage="ptz_bg"/>
+                                                <state key="highlighted" image="ptz_bg"/>
+                                            </button>
+                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="46J-XC-G3M">
+                                                <rect key="frame" x="162.5" y="-33" width="50" height="50"/>
+                                                <constraints>
+                                                    <constraint firstAttribute="width" constant="50" id="bG6-29-hdH"/>
+                                                    <constraint firstAttribute="height" constant="50" id="sI2-gA-aFQ"/>
+                                                </constraints>
+                                                <connections>
+                                                    <action selector="ptzControlButtonTouchDown:" destination="uBF-Yq-Qo0" eventType="touchDown" id="cSg-Lv-heL"/>
+                                                    <action selector="ptzControlButtonTouchUpInside:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="Kde-Iu-u0r"/>
+                                                </connections>
+                                            </button>
+                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YpD-H2-J3L">
+                                                <rect key="frame" x="162.5" y="71" width="50" height="50"/>
+                                                <constraints>
+                                                    <constraint firstAttribute="width" constant="50" id="8xd-ja-amB"/>
+                                                    <constraint firstAttribute="height" constant="50" id="fYS-8a-jfb"/>
+                                                </constraints>
+                                                <connections>
+                                                    <action selector="ptzControlButtonTouchDown:" destination="uBF-Yq-Qo0" eventType="touchDown" id="Jna-by-hAL"/>
+                                                    <action selector="ptzControlButtonTouchUpInside:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="UnJ-rv-mKN"/>
+                                                </connections>
+                                            </button>
+                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WlW-FZ-jz8">
+                                                <rect key="frame" x="214.5" y="18" width="50" height="50"/>
+                                                <constraints>
+                                                    <constraint firstAttribute="width" constant="50" id="JyV-sT-9Nd"/>
+                                                    <constraint firstAttribute="height" constant="50" id="bVy-Jx-0Yf"/>
+                                                </constraints>
+                                                <connections>
+                                                    <action selector="ptzControlButtonTouchDown:" destination="uBF-Yq-Qo0" eventType="touchDown" id="JTa-za-IYF"/>
+                                                    <action selector="ptzControlButtonTouchUpInside:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="qQE-bR-BGo"/>
+                                                </connections>
+                                            </button>
+                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="g5e-Uk-Wgs">
+                                                <rect key="frame" x="110.5" y="19" width="50" height="50"/>
+                                                <constraints>
+                                                    <constraint firstAttribute="width" constant="50" id="ZN7-OU-GCA"/>
+                                                    <constraint firstAttribute="height" constant="50" id="et2-oA-SKp"/>
+                                                </constraints>
+                                                <connections>
+                                                    <action selector="ptzControlButtonTouchDown:" destination="uBF-Yq-Qo0" eventType="touchDown" id="dUb-me-TLa"/>
+                                                    <action selector="ptzControlButtonTouchUpInside:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="fLI-BA-pIU"/>
+                                                </connections>
+                                            </button>
+                                        </subviews>
+                                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <constraints>
+                                            <constraint firstItem="Un0-bC-uwU" firstAttribute="top" secondItem="Lrx-9r-gJZ" secondAttribute="top" priority="750" id="54o-Gk-b6S"/>
+                                            <constraint firstItem="g5e-Uk-Wgs" firstAttribute="centerY" secondItem="Lrx-9r-gJZ" secondAttribute="centerY" priority="750" id="B6c-z9-8Z3"/>
+                                            <constraint firstAttribute="centerY" secondItem="46J-XC-G3M" secondAttribute="bottom" priority="750" constant="27" id="JC3-vr-CVu"/>
+                                            <constraint firstItem="WlW-FZ-jz8" firstAttribute="leading" secondItem="Lrx-9r-gJZ" secondAttribute="centerX" priority="750" constant="27" id="Lou-j5-1Pd"/>
+                                            <constraint firstAttribute="trailing" secondItem="Un0-bC-uwU" secondAttribute="trailing" priority="750" id="Sti-kb-CQy"/>
+                                            <constraint firstItem="cRL-ov-Bad" firstAttribute="centerY" secondItem="Lrx-9r-gJZ" secondAttribute="centerY" priority="750" id="YRB-a6-pUb"/>
+                                            <constraint firstItem="46J-XC-G3M" firstAttribute="centerX" secondItem="Lrx-9r-gJZ" secondAttribute="centerX" priority="750" id="Yhz-to-Ubw"/>
+                                            <constraint firstItem="YpD-H2-J3L" firstAttribute="centerX" secondItem="Lrx-9r-gJZ" secondAttribute="centerX" priority="750" id="bcZ-X7-5dx"/>
+                                            <constraint firstItem="cRL-ov-Bad" firstAttribute="centerX" secondItem="Lrx-9r-gJZ" secondAttribute="centerX" priority="750" id="bfJ-TI-Rsq"/>
+                                            <constraint firstItem="YpD-H2-J3L" firstAttribute="top" secondItem="Lrx-9r-gJZ" secondAttribute="centerY" priority="750" constant="27" id="eFC-gN-nKT"/>
+                                            <constraint firstItem="WlW-FZ-jz8" firstAttribute="centerY" secondItem="Lrx-9r-gJZ" secondAttribute="centerY" priority="750" constant="-1" id="etm-6s-8kr"/>
+                                            <constraint firstAttribute="centerX" secondItem="g5e-Uk-Wgs" secondAttribute="trailing" priority="750" constant="27" id="iRs-7W-6aC"/>
+                                        </constraints>
+                                    </view>
+                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IqL-eW-ddl">
+                                        <rect key="frame" x="0.0" y="287" width="375" height="88"/>
+                                        <subviews>
+                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="j3z-1C-gSQ">
+                                                <rect key="frame" x="325" y="0.0" width="50" height="50"/>
+                                                <constraints>
+                                                    <constraint firstAttribute="height" constant="50" id="2sf-D2-cKQ"/>
+                                                    <constraint firstAttribute="width" constant="50" id="reU-yg-Liw"/>
+                                                </constraints>
+                                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                <state key="normal" image="play_close">
+                                                    <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                </state>
+                                                <state key="highlighted" image="play_close_sel"/>
+                                                <connections>
+                                                    <action selector="closeTalkView:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="ftP-Gi-Ucl"/>
+                                                </connections>
+                                            </button>
+                                            <imageView contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="preview_talkback" highlightedImage="spkImg" translatesAutoresizingMaskIntoConstraints="NO" id="SdD-om-sXP">
+                                                <rect key="frame" x="137.5" y="-6" width="100" height="100"/>
+                                                <gestureRecognizers/>
+                                                <constraints>
+                                                    <constraint firstAttribute="height" constant="100" id="5Av-B7-ISV"/>
+                                                    <constraint firstAttribute="width" constant="100" id="UDJ-l5-0jj"/>
+                                                </constraints>
+                                                <connections>
+                                                    <outletCollection property="gestureRecognizers" destination="ltq-Kf-jdp" appends="YES" id="olW-ao-9WJ"/>
+                                                </connections>
+                                            </imageView>
+                                        </subviews>
+                                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <constraints>
+                                            <constraint firstItem="SdD-om-sXP" firstAttribute="centerX" secondItem="IqL-eW-ddl" secondAttribute="centerX" id="6eQ-63-K20"/>
+                                            <constraint firstItem="j3z-1C-gSQ" firstAttribute="top" secondItem="IqL-eW-ddl" secondAttribute="top" id="9NY-bI-b6q"/>
+                                            <constraint firstAttribute="trailing" secondItem="j3z-1C-gSQ" secondAttribute="trailing" id="Qg8-Nn-00G"/>
+                                            <constraint firstItem="SdD-om-sXP" firstAttribute="centerY" secondItem="IqL-eW-ddl" secondAttribute="centerY" id="rol-jB-yzQ"/>
+                                        </constraints>
+                                    </view>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xQS-rQ-Xez">
+                                        <rect key="frame" x="197.5" y="187.5" width="100" height="100"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="100" id="Gjc-CC-41w"/>
+                                            <constraint firstAttribute="height" constant="100" id="Kpb-pS-Xes"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                        <state key="normal" title="褰曞儚" image="preview_recording">
+                                            <color key="titleColor" red="0.66666666666666663" green="0.66666666666666663" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </state>
+                                        <state key="disabled" image="preview_recording_dis"/>
+                                        <state key="selected" image="preview_recording_sel"/>
+                                        <state key="highlighted" image="preview_recording_sel"/>
+                                        <connections>
+                                            <action selector="localButtonClicked:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="ghH-Hn-KkG"/>
+                                        </connections>
+                                    </button>
+                                    <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WYB-ca-Ox6">
+                                        <rect key="frame" x="323" y="20" width="32" height="32"/>
+                                        <state key="normal" image="cloud"/>
+                                        <connections>
+                                            <action selector="clickCloudBtn:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="Ft8-PW-PT5"/>
+                                        </connections>
+                                    </button>
+                                    <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="浜戝瓨鍌�" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wXb-RI-dLd">
+                                        <rect key="frame" x="319" y="52" width="40" height="16"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                                        <color key="textColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="纭В鐮�" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oNR-gT-NPm">
+                                        <rect key="frame" x="8" y="8" width="37" height="14.5"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="X2B-Km-Emd">
+                                        <rect key="frame" x="327" y="87" width="24" height="24"/>
+                                        <state key="normal" backgroundImage="StreamStudio-2"/>
+                                        <state key="selected" backgroundImage="chuanshujilu--2"/>
+                                        <connections>
+                                            <action selector="clickStreamBtn:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="SWh-1d-pGr"/>
+                                        </connections>
+                                    </button>
+                                    <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5WH-Ih-9Yw">
+                                        <rect key="frame" x="8" y="32.5" width="31" height="15"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                        <nil key="textColor"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                </subviews>
+                                <color key="backgroundColor" red="1" green="1" blue="1" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="bottom" secondItem="Lrx-9r-gJZ" secondAttribute="bottom" id="1Qx-tP-K0s"/>
+                                    <constraint firstItem="wEO-O3-gSJ" firstAttribute="top" secondItem="fUI-tR-jyG" secondAttribute="bottom" priority="250" id="2zd-sl-7ZI"/>
+                                    <constraint firstAttribute="centerY" secondItem="fUI-tR-jyG" secondAttribute="top" priority="250" constant="100" id="4p2-rr-TGl"/>
+                                    <constraint firstItem="4Eh-hh-84T" firstAttribute="leading" secondItem="fUI-tR-jyG" secondAttribute="trailing" priority="250" constant="20" id="5ta-Jr-LcA"/>
+                                    <constraint firstItem="fUI-tR-jyG" firstAttribute="trailing" secondItem="7Gq-77-ypg" secondAttribute="centerX" priority="250" constant="-10" id="656-5B-ekl"/>
+                                    <constraint firstItem="IqL-eW-ddl" firstAttribute="leading" secondItem="7Gq-77-ypg" secondAttribute="leading" priority="750" id="8LC-eV-05C"/>
+                                    <constraint firstItem="oNR-gT-NPm" firstAttribute="leading" secondItem="7Gq-77-ypg" secondAttribute="leading" constant="8" id="9Ds-Ki-Rud"/>
+                                    <constraint firstItem="wXb-RI-dLd" firstAttribute="top" secondItem="WYB-ca-Ox6" secondAttribute="bottom" id="9Mu-5s-lbJ"/>
+                                    <constraint firstAttribute="trailing" secondItem="IqL-eW-ddl" secondAttribute="trailing" priority="750" id="AU9-VP-gIS"/>
+                                    <constraint firstItem="X2B-Km-Emd" firstAttribute="top" secondItem="wXb-RI-dLd" secondAttribute="bottom" constant="19" id="Bct-NX-l16"/>
+                                    <constraint firstItem="Lrx-9r-gJZ" firstAttribute="leading" secondItem="7Gq-77-ypg" secondAttribute="leading" priority="750" id="CLz-G3-usS"/>
+                                    <constraint firstItem="xQS-rQ-Xez" firstAttribute="top" secondItem="4Eh-hh-84T" secondAttribute="bottom" priority="250" id="ChR-na-m9f"/>
+                                    <constraint firstItem="X2B-Km-Emd" firstAttribute="centerX" secondItem="wXb-RI-dLd" secondAttribute="centerX" id="DSU-sp-o9u"/>
+                                    <constraint firstItem="5WH-Ih-9Yw" firstAttribute="leading" secondItem="oNR-gT-NPm" secondAttribute="leading" id="Df9-NZ-c56"/>
+                                    <constraint firstItem="4Eh-hh-84T" firstAttribute="top" secondItem="fUI-tR-jyG" secondAttribute="top" priority="250" id="Dwr-ff-Xpd"/>
+                                    <constraint firstItem="WYB-ca-Ox6" firstAttribute="top" secondItem="7Gq-77-ypg" secondAttribute="top" constant="20" id="Gur-C3-MNq"/>
+                                    <constraint firstAttribute="bottom" secondItem="IqL-eW-ddl" secondAttribute="bottom" id="Hr3-33-Biv"/>
+                                    <constraint firstItem="IqL-eW-ddl" firstAttribute="top" secondItem="7Gq-77-ypg" secondAttribute="top" priority="750" constant="287" id="IcU-Zd-4MD"/>
+                                    <constraint firstItem="wXb-RI-dLd" firstAttribute="centerX" secondItem="WYB-ca-Ox6" secondAttribute="centerX" id="K7C-mh-05P"/>
+                                    <constraint firstAttribute="trailing" secondItem="WYB-ca-Ox6" secondAttribute="trailing" constant="20" id="UDa-kD-WGc"/>
+                                    <constraint firstItem="xQS-rQ-Xez" firstAttribute="leading" secondItem="wEO-O3-gSJ" secondAttribute="trailing" priority="250" constant="20" id="XcG-14-Ntg"/>
+                                    <constraint firstItem="Lrx-9r-gJZ" firstAttribute="top" secondItem="7Gq-77-ypg" secondAttribute="top" priority="750" constant="287" id="fpM-bl-0VS"/>
+                                    <constraint firstItem="oNR-gT-NPm" firstAttribute="top" secondItem="7Gq-77-ypg" secondAttribute="top" constant="8" id="g6p-Bd-Y1V"/>
+                                    <constraint firstAttribute="trailing" secondItem="Lrx-9r-gJZ" secondAttribute="trailing" priority="750" id="g8l-zu-mnf"/>
+                                    <constraint firstItem="5WH-Ih-9Yw" firstAttribute="top" secondItem="oNR-gT-NPm" secondAttribute="bottom" constant="10" id="nqI-Fr-Meo"/>
+                                    <constraint firstItem="wEO-O3-gSJ" firstAttribute="leading" secondItem="fUI-tR-jyG" secondAttribute="leading" priority="250" id="rZn-id-4zF"/>
+                                    <constraint firstItem="xQS-rQ-Xez" firstAttribute="top" secondItem="4Eh-hh-84T" secondAttribute="bottom" priority="250" id="w6w-WA-yEe"/>
+                                    <constraint firstItem="wEO-O3-gSJ" firstAttribute="top" secondItem="fUI-tR-jyG" secondAttribute="bottom" priority="250" id="xHk-cr-HsT"/>
+                                </constraints>
+                            </view>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="nkn-oC-NfP">
+                                <rect key="frame" x="0.0" y="44" width="40" height="40"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="40" id="WQV-Fb-Hpn"/>
+                                    <constraint firstAttribute="width" constant="40" id="rqc-sI-jaX"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <state key="normal" image="large_back_btn"/>
+                                <connections>
+                                    <action selector="largeBack:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="Pup-Sq-Zr5"/>
+                                </connections>
+                            </button>
+                            <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yYv-tJ-QCV">
+                                <rect key="frame" x="160.5" y="122.5" width="54" height="54"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="54" id="TXE-KQ-iJl"/>
+                                    <constraint firstAttribute="height" constant="54" id="nqy-4G-kEq"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <state key="normal" image="play"/>
+                                <state key="highlighted" image="play_sel"/>
+                                <connections>
+                                    <action selector="playButtonClicked:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="Ujr-Nu-Y44"/>
+                                </connections>
+                            </button>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YwB-6z-DKL">
+                                <rect key="frame" x="0.0" y="134.5" width="375" height="30"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="30" id="eMk-ij-ZRD"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label hidden="YES" opaque="NO" userInteractionEnabled="NO" alpha="0.69999999999999996" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3XK-Ur-ZIj">
+                                <rect key="frame" x="16" y="139" width="0.0" height="0.0"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                        </subviews>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstItem="Yrc-c9-rvb" firstAttribute="top" secondItem="heE-pR-PSR" secondAttribute="bottom" constant="10" id="0Cf-Q8-Mwq"/>
+                            <constraint firstAttribute="trailing" secondItem="YwB-6z-DKL" secondAttribute="trailing" id="0oZ-sb-kgM"/>
+                            <constraint firstItem="YwB-6z-DKL" firstAttribute="leading" secondItem="PYB-vu-Xcw" secondAttribute="leading" id="135-mO-STg"/>
+                            <constraint firstItem="7Gq-77-ypg" firstAttribute="top" secondItem="1FE-Su-4U4" secondAttribute="bottom" priority="751" id="4Dh-L5-Wxp"/>
+                            <constraint firstItem="YwB-6z-DKL" firstAttribute="centerX" secondItem="PYB-vu-Xcw" secondAttribute="centerX" id="58C-Bi-adb"/>
+                            <constraint firstItem="dTs-1h-o4p" firstAttribute="centerX" secondItem="PYB-vu-Xcw" secondAttribute="centerX" id="7Nq-GR-ypc"/>
+                            <constraint firstAttribute="trailing" secondItem="1FE-Su-4U4" secondAttribute="trailing" id="9po-jh-PJt"/>
+                            <constraint firstItem="1FE-Su-4U4" firstAttribute="top" secondItem="NRj-hs-uOI" secondAttribute="bottom" id="Aeo-vo-x5Y"/>
+                            <constraint firstAttribute="trailing" secondItem="NRj-hs-uOI" secondAttribute="trailing" id="G3Q-MC-BpN"/>
+                            <constraint firstItem="2bL-GF-xWw" firstAttribute="top" secondItem="heE-pR-PSR" secondAttribute="bottom" id="JNG-uc-9XA"/>
+                            <constraint firstItem="NRj-hs-uOI" firstAttribute="top" secondItem="heE-pR-PSR" secondAttribute="bottom" id="PXn-FW-8dk"/>
+                            <constraint firstItem="3qm-Zv-a7S" firstAttribute="top" secondItem="7Gq-77-ypg" secondAttribute="bottom" id="PfJ-VS-6RB"/>
+                            <constraint firstItem="1FE-Su-4U4" firstAttribute="top" secondItem="dTs-1h-o4p" secondAttribute="bottom" id="Qae-km-Xxm"/>
+                            <constraint firstItem="NRj-hs-uOI" firstAttribute="centerY" secondItem="yYv-tJ-QCV" secondAttribute="centerY" id="TGA-a5-AUm"/>
+                            <constraint firstItem="nkn-oC-NfP" firstAttribute="top" secondItem="heE-pR-PSR" secondAttribute="bottom" id="Tn0-Se-wHE"/>
+                            <constraint firstItem="nkn-oC-NfP" firstAttribute="leading" secondItem="PYB-vu-Xcw" secondAttribute="leading" id="YSp-TA-bZd"/>
+                            <constraint firstItem="yYv-tJ-QCV" firstAttribute="centerX" secondItem="YwB-6z-DKL" secondAttribute="centerX" id="Yt6-5R-nAw"/>
+                            <constraint firstItem="2bL-GF-xWw" firstAttribute="leading" secondItem="PYB-vu-Xcw" secondAttribute="leading" id="adY-eM-6Nb"/>
+                            <constraint firstItem="NRj-hs-uOI" firstAttribute="centerY" secondItem="YwB-6z-DKL" secondAttribute="centerY" id="cjf-nt-XqE"/>
+                            <constraint firstItem="3qm-Zv-a7S" firstAttribute="top" secondItem="gFl-PI-CLn" secondAttribute="bottom" id="fSZ-Xw-PGz"/>
+                            <constraint firstItem="gFl-PI-CLn" firstAttribute="leading" secondItem="PYB-vu-Xcw" secondAttribute="leading" id="hvI-bX-2fD"/>
+                            <constraint firstItem="3XK-Ur-ZIj" firstAttribute="leading" secondItem="PYB-vu-Xcw" secondAttribute="leading" constant="16" id="hya-DL-nrl"/>
+                            <constraint firstItem="1FE-Su-4U4" firstAttribute="leading" secondItem="PYB-vu-Xcw" secondAttribute="leading" id="mfp-Y3-aJF"/>
+                            <constraint firstItem="7Gq-77-ypg" firstAttribute="leading" secondItem="PYB-vu-Xcw" secondAttribute="leading" id="nIY-1B-8KJ"/>
+                            <constraint firstItem="NRj-hs-uOI" firstAttribute="leading" secondItem="PYB-vu-Xcw" secondAttribute="leading" id="opo-g8-z05"/>
+                            <constraint firstAttribute="trailing" secondItem="7Gq-77-ypg" secondAttribute="trailing" id="pjs-uX-99u"/>
+                            <constraint firstAttribute="trailing" secondItem="2bL-GF-xWw" secondAttribute="trailing" id="sJ1-Mt-Ys4"/>
+                            <constraint firstItem="gFl-PI-CLn" firstAttribute="top" secondItem="heE-pR-PSR" secondAttribute="bottom" id="sJh-Px-GtM"/>
+                            <constraint firstAttribute="trailing" secondItem="gFl-PI-CLn" secondAttribute="trailing" id="vZX-0k-C1e"/>
+                            <constraint firstItem="3XK-Ur-ZIj" firstAttribute="top" secondItem="2bL-GF-xWw" secondAttribute="bottom" constant="55" id="vyg-ls-OTR"/>
+                            <constraint firstItem="Yrc-c9-rvb" firstAttribute="centerX" secondItem="PYB-vu-Xcw" secondAttribute="centerX" id="y5l-xh-jsd"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="vpB-aG-zb3"/>
+                    <connections>
+                        <outlet property="bottomView" destination="7Gq-77-ypg" id="kLP-FN-Tvv"/>
+                        <outlet property="captureButton" destination="wEO-O3-gSJ" id="ABn-Ub-QEs"/>
+                        <outlet property="cloudBtn" destination="WYB-ca-Ox6" id="E4S-1L-4uS"/>
+                        <outlet property="cloudTip" destination="wXb-RI-dLd" id="bCu-fP-8IF"/>
+                        <outlet property="controlButton" destination="fUI-tR-jyG" id="uqI-1T-h8V"/>
+                        <outlet property="currentHDStatus" destination="oNR-gT-NPm" id="STe-rh-VhG"/>
+                        <outlet property="emptyButton" destination="MqM-GF-jSr" id="jD7-hz-yfd"/>
+                        <outlet property="highButton" destination="skK-Ar-y6h" id="jbk-j5-fCX"/>
+                        <outlet property="largeBackButton" destination="nkn-oC-NfP" id="kwo-DU-hgk"/>
+                        <outlet property="largeButton" destination="lTh-qe-8pV" id="feK-gX-fjt"/>
+                        <outlet property="largeTitleLabel" destination="2bL-GF-xWw" id="mev-Ko-lDT"/>
+                        <outlet property="localRecordButton" destination="xQS-rQ-Xez" id="Z0M-JE-cTx"/>
+                        <outlet property="localRecordLabel" destination="Yrc-c9-rvb" id="1z2-Zz-9nr"/>
+                        <outlet property="localRecrodContraint" destination="0Cf-Q8-Mwq" id="c08-mO-Xbr"/>
+                        <outlet property="lowButton" destination="UlQ-aK-1VP" id="ISE-DJ-W5I"/>
+                        <outlet property="messageLabel" destination="YwB-6z-DKL" id="196-Ds-Vl6"/>
+                        <outlet property="middleButton" destination="WSh-Ao-McO" id="vty-N8-cDz"/>
+                        <outlet property="playButton" destination="xSp-4i-Jwh" id="DUU-ap-reQ"/>
+                        <outlet property="playerPlayButton" destination="yYv-tJ-QCV" id="EIB-lc-14l"/>
+                        <outlet property="playerView" destination="1Xz-5f-ZJx" id="tYS-5X-mCe"/>
+                        <outlet property="ptzCloseButton" destination="Un0-bC-uwU" id="pBM-jg-Hsv"/>
+                        <outlet property="ptzControlButton" destination="cRL-ov-Bad" id="dO9-KY-Fpn"/>
+                        <outlet property="ptzDownButton" destination="YpD-H2-J3L" id="9Hs-IT-QQk"/>
+                        <outlet property="ptzLeftButton" destination="g5e-Uk-Wgs" id="fki-ie-i36"/>
+                        <outlet property="ptzRightButton" destination="WlW-FZ-jz8" id="iaG-Q2-Wi2"/>
+                        <outlet property="ptzUpButton" destination="46J-XC-G3M" id="Ixx-Pf-YV3"/>
+                        <outlet property="ptzView" destination="Lrx-9r-gJZ" id="Ow3-oS-CtM"/>
+                        <outlet property="ptzViewContraint" destination="fpM-bl-0VS" id="hPO-oy-rgu"/>
+                        <outlet property="qualityButton" destination="JEB-Q6-XNh" id="z41-pC-jcF"/>
+                        <outlet property="qualityView" destination="dTs-1h-o4p" id="cwe-H0-P0z"/>
+                        <outlet property="scrollView" destination="NRj-hs-uOI" id="eoY-a5-7Nt"/>
+                        <outlet property="speakImageView" destination="SdD-om-sXP" id="vut-X7-g34"/>
+                        <outlet property="streamPlayBtn" destination="X2B-Km-Emd" id="wjk-zR-FDC"/>
+                        <outlet property="streamTypeLabel" destination="5WH-Ih-9Yw" id="azv-2u-5FX"/>
+                        <outlet property="talkButton" destination="4Eh-hh-84T" id="XX0-Zw-Ftd"/>
+                        <outlet property="talkCloseButton" destination="j3z-1C-gSQ" id="7jR-OW-01U"/>
+                        <outlet property="talkView" destination="IqL-eW-ddl" id="hTy-iu-CUA"/>
+                        <outlet property="talkViewContraint" destination="IcU-Zd-4MD" id="vMR-vH-k7J"/>
+                        <outlet property="toolBar" destination="1FE-Su-4U4" id="CTH-vb-IfL"/>
+                        <outlet property="voiceButton" destination="tAW-X2-E9K" id="N5O-Qz-qd6"/>
+                        <outlet property="zoomSizeLabel" destination="3XK-Ur-ZIj" id="vYD-CM-uoE"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="XkP-ug-XyL" userLabel="First Responder" sceneMemberID="firstResponder"/>
+                <tapGestureRecognizer id="ltq-Kf-jdp">
+                    <connections>
+                        <action selector="talkPressed:" destination="uBF-Yq-Qo0" id="9nW-Qf-Oh1"/>
+                    </connections>
+                </tapGestureRecognizer>
+            </objects>
+            <point key="canvasLocation" x="2170.4000000000001" y="-23.838080959520241"/>
+        </scene>
+        <!--Playback View Controller-->
+        <scene sceneID="eUQ-yT-QiD">
+            <objects>
+                <viewController storyboardIdentifier="EZPlaybackViewController" id="I6z-uV-dEU" customClass="EZPlaybackViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="0R4-Gk-cpw"/>
+                        <viewControllerLayoutGuide type="bottom" id="37Q-1L-JHq"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="6jg-tf-s0b">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kQU-Pc-qqv">
+                                <rect key="frame" x="0.0" y="44" width="375" height="211"/>
+                                <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <gestureRecognizers/>
+                                <constraints>
+                                    <constraint firstAttribute="width" secondItem="kQU-Pc-qqv" secondAttribute="height" multiplier="16:9" id="0Wa-du-utY"/>
+                                </constraints>
+                                <connections>
+                                    <outletCollection property="gestureRecognizers" destination="znC-g9-QOc" appends="YES" id="Rsv-hA-OU9"/>
+                                </connections>
+                            </view>
+                            <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SJH-Sa-TMv">
+                                <rect key="frame" x="0.0" y="44" width="375" height="40"/>
+                                <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="40" id="o94-Gh-tdc"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3j6-e7-ztE">
+                                <rect key="frame" x="0.0" y="255" width="375" height="44"/>
+                                <subviews>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Bu9-Qz-3Ij">
+                                        <rect key="frame" x="187.5" y="0.0" width="187.5" height="44"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                        <state key="normal" title="SD鍗″綍鍍�">
+                                            <color key="titleColor" red="0.33333333333333331" green="0.33333333333333331" blue="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </state>
+                                        <state key="selected">
+                                            <color key="titleColor" red="0.10859914124011993" green="0.54394680261611938" blue="0.85770881175994873" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </state>
+                                        <state key="highlighted">
+                                            <color key="titleColor" red="0.10859914124011993" green="0.54394680261611938" blue="0.85770881175994873" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </state>
+                                        <connections>
+                                            <action selector="deviceButtonClicked:" destination="I6z-uV-dEU" eventType="touchUpInside" id="klD-8b-xvO"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="E3a-LC-jG1">
+                                        <rect key="frame" x="0.0" y="0.0" width="187.5" height="44"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                        <state key="normal" title="浜戝瓨鍌�">
+                                            <color key="titleColor" red="0.33333333333333331" green="0.33333333333333331" blue="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </state>
+                                        <state key="selected">
+                                            <color key="titleColor" red="0.10859914124011993" green="0.54394680261611938" blue="0.85770881175994873" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </state>
+                                        <state key="highlighted">
+                                            <color key="titleColor" red="0.10859914124011993" green="0.54394680261611938" blue="0.85770881175994873" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </state>
+                                        <connections>
+                                            <action selector="cloudButtonClicked:" destination="I6z-uV-dEU" eventType="touchUpInside" id="wfa-2r-mE4"/>
+                                        </connections>
+                                    </button>
+                                    <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="o6e-rL-gRl">
+                                        <rect key="frame" x="44" y="42" width="100" height="2"/>
+                                        <color key="backgroundColor" red="0.10859914124011993" green="0.54394680261611938" blue="0.85770881175994873" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="2" id="6MV-Yf-u0v"/>
+                                            <constraint firstAttribute="width" constant="100" id="tRm-sK-AEy"/>
+                                        </constraints>
+                                    </imageView>
+                                </subviews>
+                                <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstItem="E3a-LC-jG1" firstAttribute="top" secondItem="3j6-e7-ztE" secondAttribute="top" id="27O-8F-zGo"/>
+                                    <constraint firstItem="E3a-LC-jG1" firstAttribute="leading" secondItem="3j6-e7-ztE" secondAttribute="leading" id="6fJ-x7-f2s"/>
+                                    <constraint firstAttribute="height" constant="44" id="U3c-fO-8g1"/>
+                                    <constraint firstAttribute="bottom" secondItem="Bu9-Qz-3Ij" secondAttribute="bottom" id="d3E-fM-Rgx"/>
+                                    <constraint firstAttribute="bottom" secondItem="o6e-rL-gRl" secondAttribute="bottom" id="dof-FH-aUf"/>
+                                    <constraint firstAttribute="trailing" secondItem="Bu9-Qz-3Ij" secondAttribute="trailing" id="fYI-cL-36a"/>
+                                    <constraint firstItem="Bu9-Qz-3Ij" firstAttribute="leading" secondItem="E3a-LC-jG1" secondAttribute="trailing" id="htQ-Ki-sMp"/>
+                                    <constraint firstAttribute="bottom" secondItem="E3a-LC-jG1" secondAttribute="bottom" id="lRb-bP-hv0"/>
+                                    <constraint firstItem="o6e-rL-gRl" firstAttribute="centerX" secondItem="E3a-LC-jG1" secondAttribute="centerX" id="oxC-bm-Nxp"/>
+                                    <constraint firstItem="Bu9-Qz-3Ij" firstAttribute="width" secondItem="E3a-LC-jG1" secondAttribute="width" id="pnZ-lj-8jS"/>
+                                    <constraint firstItem="Bu9-Qz-3Ij" firstAttribute="top" secondItem="3j6-e7-ztE" secondAttribute="top" id="ptS-eh-XSH"/>
+                                </constraints>
+                            </view>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hY1-Ac-Oot">
+                                <rect key="frame" x="0.0" y="44" width="40" height="40"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="40" id="AFV-2p-wo1"/>
+                                    <constraint firstAttribute="width" constant="40" id="h15-cw-wZH"/>
+                                </constraints>
+                                <state key="normal" image="large_back_btn"/>
+                                <connections>
+                                    <action selector="largeBack:" destination="I6z-uV-dEU" eventType="touchUpInside" id="E4s-vE-mXI"/>
+                                </connections>
+                            </button>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="buq-PS-h5p">
+                                <rect key="frame" x="0.0" y="195" width="375" height="60"/>
+                                <subviews>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Z3E-1u-wEn">
+                                        <rect key="frame" x="0.0" y="23" width="60" height="37"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="37" id="BNn-Tm-SaF"/>
+                                            <constraint firstAttribute="width" constant="60" id="mZh-Ks-yHR"/>
+                                        </constraints>
+                                        <state key="normal" image="preview_play_btn"/>
+                                        <connections>
+                                            <action selector="playButtonClicked:" destination="I6z-uV-dEU" eventType="touchUpInside" id="nzq-1I-c5F"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="t6K-Cq-gMh">
+                                        <rect key="frame" x="60" y="23" width="60" height="37"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="60" id="PRG-n5-0Ed"/>
+                                            <constraint firstAttribute="height" constant="37" id="nC8-FN-WAT"/>
+                                        </constraints>
+                                        <state key="normal" image="preview_voice_btn"/>
+                                        <connections>
+                                            <action selector="voiceButtonClicked:" destination="I6z-uV-dEU" eventType="touchUpInside" id="aAV-1Z-FGI"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7aB-y0-gtH">
+                                        <rect key="frame" x="315" y="23" width="60" height="37"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="60" id="XfK-j2-a6d"/>
+                                            <constraint firstAttribute="height" constant="37" id="o7j-tw-1vI"/>
+                                        </constraints>
+                                        <state key="normal" image="preview_enlarge"/>
+                                        <state key="highlighted" image="preview_enlarge_btn_sel"/>
+                                        <connections>
+                                            <action selector="large:" destination="I6z-uV-dEU" eventType="touchUpInside" id="gJE-qX-38a"/>
+                                        </connections>
+                                    </button>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="00:00" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ruu-Hg-3Tx">
+                                        <rect key="frame" x="0.0" y="0.0" width="34" height="20"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="20" id="0Xh-uc-DaE"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                        <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <slider opaque="NO" contentMode="scaleToFill" semanticContentAttribute="playback" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="e5d-g8-Knj">
+                                        <rect key="frame" x="35.5" y="-5" width="303.5" height="31"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="30" id="4zL-xp-G9T"/>
+                                        </constraints>
+                                        <color key="thumbTintColor" red="0.10859914124011993" green="0.54394680261611938" blue="0.85770881175994873" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <connections>
+                                            <action selector="duringValueChange:" destination="I6z-uV-dEU" eventType="touchUpInside" id="I9w-HO-pCv"/>
+                                        </connections>
+                                    </slider>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="00:00" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ESG-x4-J8R">
+                                        <rect key="frame" x="341" y="0.0" width="34" height="20"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="20" id="2SN-fe-EDR"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                        <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Ej7-SD-EGu">
+                                        <rect key="frame" x="120" y="23" width="60" height="37"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="37" id="gaR-jU-rDU"/>
+                                            <constraint firstAttribute="width" constant="60" id="hDY-tf-ODd"/>
+                                        </constraints>
+                                        <state key="normal" image="play_rate"/>
+                                        <connections>
+                                            <action selector="clickRateBtn:" destination="I6z-uV-dEU" eventType="touchUpInside" id="XwB-R2-Aun"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gRk-Pf-zJ6">
+                                        <rect key="frame" x="290" y="30" width="20" height="20"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="20" id="9fx-g9-N3E"/>
+                                            <constraint firstAttribute="width" constant="20" id="J09-k3-gR7"/>
+                                        </constraints>
+                                        <state key="normal" backgroundImage="StreamStudio"/>
+                                        <state key="selected" backgroundImage="chuanshujilu-"/>
+                                        <connections>
+                                            <action selector="clickStreamBtn:" destination="I6z-uV-dEU" eventType="touchUpInside" id="XrC-J3-i4l"/>
+                                        </connections>
+                                    </button>
+                                </subviews>
+                                <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstItem="Z3E-1u-wEn" firstAttribute="leading" secondItem="buq-PS-h5p" secondAttribute="leading" id="1R2-0e-zLb"/>
+                                    <constraint firstItem="t6K-Cq-gMh" firstAttribute="leading" secondItem="Z3E-1u-wEn" secondAttribute="trailing" id="4m4-IR-mc0"/>
+                                    <constraint firstItem="ruu-Hg-3Tx" firstAttribute="leading" secondItem="buq-PS-h5p" secondAttribute="leading" id="7Mx-RJ-l3f"/>
+                                    <constraint firstAttribute="bottom" secondItem="7aB-y0-gtH" secondAttribute="bottom" id="7tH-jm-Tc8"/>
+                                    <constraint firstItem="7aB-y0-gtH" firstAttribute="leading" secondItem="gRk-Pf-zJ6" secondAttribute="trailing" constant="5" id="8Ex-wx-3ye"/>
+                                    <constraint firstItem="ruu-Hg-3Tx" firstAttribute="top" secondItem="buq-PS-h5p" secondAttribute="top" id="Er7-IE-Hng"/>
+                                    <constraint firstItem="e5d-g8-Knj" firstAttribute="leading" secondItem="ruu-Hg-3Tx" secondAttribute="trailing" constant="3.5" id="P23-Qx-aw5"/>
+                                    <constraint firstItem="Ej7-SD-EGu" firstAttribute="centerY" secondItem="t6K-Cq-gMh" secondAttribute="centerY" id="Ppi-XZ-Pvb"/>
+                                    <constraint firstItem="ESG-x4-J8R" firstAttribute="top" secondItem="buq-PS-h5p" secondAttribute="top" id="Pxo-mC-azU"/>
+                                    <constraint firstAttribute="bottom" secondItem="t6K-Cq-gMh" secondAttribute="bottom" id="TlR-1T-jdW"/>
+                                    <constraint firstItem="ESG-x4-J8R" firstAttribute="leading" secondItem="e5d-g8-Knj" secondAttribute="trailing" constant="4" id="UZA-Gk-8yQ"/>
+                                    <constraint firstAttribute="bottom" secondItem="Z3E-1u-wEn" secondAttribute="bottom" id="i3E-OX-iln"/>
+                                    <constraint firstItem="ESG-x4-J8R" firstAttribute="width" secondItem="ruu-Hg-3Tx" secondAttribute="width" id="lZC-MU-A3Y"/>
+                                    <constraint firstItem="Ej7-SD-EGu" firstAttribute="leading" secondItem="t6K-Cq-gMh" secondAttribute="trailing" id="of7-XD-uI1"/>
+                                    <constraint firstAttribute="bottom" secondItem="gRk-Pf-zJ6" secondAttribute="bottom" constant="10" id="pO2-v2-n1y"/>
+                                    <constraint firstItem="e5d-g8-Knj" firstAttribute="centerY" secondItem="ESG-x4-J8R" secondAttribute="centerY" id="pTj-gC-TCd"/>
+                                    <constraint firstAttribute="height" constant="60" id="tMQ-jL-rdi"/>
+                                    <constraint firstAttribute="trailing" secondItem="ESG-x4-J8R" secondAttribute="trailing" id="vMR-I6-RPC"/>
+                                    <constraint firstAttribute="trailing" secondItem="7aB-y0-gtH" secondAttribute="trailing" id="vXW-8l-Y0i"/>
+                                </constraints>
+                            </view>
+                            <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="jim-qG-8NV">
+                                <rect key="frame" x="0.0" y="299" width="375" height="368"/>
+                                <color key="backgroundColor" red="0.94117647059999998" green="0.94117647059999998" blue="0.94509803920000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="1" minimumInteritemSpacing="1" id="rBI-Vc-Dgo">
+                                    <size key="itemSize" width="106" height="80"/>
+                                    <size key="headerReferenceSize" width="0.0" height="0.0"/>
+                                    <size key="footerReferenceSize" width="0.0" height="0.0"/>
+                                    <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
+                                </collectionViewFlowLayout>
+                                <cells>
+                                    <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" reuseIdentifier="RecordCell" id="RGd-D5-AuH" customClass="EZRecordCell">
+                                        <rect key="frame" x="0.0" y="0.0" width="106" height="80"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
+                                            <rect key="frame" x="0.0" y="0.0" width="106" height="80"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="RAf-ZJ-cA4">
+                                                    <rect key="frame" x="5" y="5" width="96" height="54"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" secondItem="RAf-ZJ-cA4" secondAttribute="height" multiplier="16:9" id="BF0-NY-eA0"/>
+                                                    </constraints>
+                                                </imageView>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="9:00" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="UHi-Q3-DiS">
+                                                    <rect key="frame" x="5" y="59" width="96" height="20"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="20" id="ZKH-0e-YF1"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                                    <color key="textColor" red="0.33333333333333331" green="0.33333333333333331" blue="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ZIg-yn-0X2">
+                                                    <rect key="frame" x="81" y="60" width="20" height="20"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="20" id="8Bf-mj-T2z"/>
+                                                        <constraint firstAttribute="width" constant="20" id="X18-v9-UpS"/>
+                                                    </constraints>
+                                                    <state key="normal" backgroundImage="icon_download_fill"/>
+                                                    <connections>
+                                                        <action selector="clickDownloadBtn:" destination="RGd-D5-AuH" eventType="touchUpInside" id="hGG-35-w9L"/>
+                                                    </connections>
+                                                </button>
+                                            </subviews>
+                                        </view>
+                                        <constraints>
+                                            <constraint firstAttribute="trailing" secondItem="RAf-ZJ-cA4" secondAttribute="trailing" constant="5" id="058-0j-pFi"/>
+                                            <constraint firstItem="UHi-Q3-DiS" firstAttribute="top" secondItem="RAf-ZJ-cA4" secondAttribute="bottom" id="0dX-Yd-K5a"/>
+                                            <constraint firstAttribute="trailing" secondItem="UHi-Q3-DiS" secondAttribute="trailing" constant="5" id="60b-dd-X7i"/>
+                                            <constraint firstAttribute="trailing" secondItem="ZIg-yn-0X2" secondAttribute="trailing" constant="5" id="VwM-m6-cIf"/>
+                                            <constraint firstItem="RAf-ZJ-cA4" firstAttribute="leading" secondItem="RGd-D5-AuH" secondAttribute="leading" constant="5" id="Vy4-Re-M6J"/>
+                                            <constraint firstItem="UHi-Q3-DiS" firstAttribute="leading" secondItem="RGd-D5-AuH" secondAttribute="leading" constant="5" id="nB3-ow-NuN"/>
+                                            <constraint firstItem="RAf-ZJ-cA4" firstAttribute="top" secondItem="RGd-D5-AuH" secondAttribute="top" constant="5" id="rQw-Mf-4sZ"/>
+                                            <constraint firstAttribute="bottom" secondItem="ZIg-yn-0X2" secondAttribute="bottom" id="z5D-m5-IEK"/>
+                                        </constraints>
+                                        <connections>
+                                            <outlet property="downloadBtn" destination="ZIg-yn-0X2" id="lle-UI-ZQ8"/>
+                                            <outlet property="imageView" destination="RAf-ZJ-cA4" id="veW-nv-l2v"/>
+                                            <outlet property="timeLabel" destination="UHi-Q3-DiS" id="KhY-hH-jGY"/>
+                                        </connections>
+                                    </collectionViewCell>
+                                </cells>
+                                <connections>
+                                    <outlet property="dataSource" destination="I6z-uV-dEU" id="YTa-Q8-Fhz"/>
+                                    <outlet property="delegate" destination="I6z-uV-dEU" id="Dui-l6-Z8k"/>
+                                </connections>
+                            </collectionView>
+                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="no_video" translatesAutoresizingMaskIntoConstraints="NO" id="KsP-XU-bB0">
+                                <rect key="frame" x="140.5" y="361" width="94" height="94"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="94" id="aF8-gn-fXB"/>
+                                    <constraint firstAttribute="width" constant="94" id="kaI-f1-60h"/>
+                                </constraints>
+                            </imageView>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="绌虹┖濡備篃" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pg3-8C-ucI">
+                                <rect key="frame" x="137.5" y="465" width="100" height="20"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="100" id="lIY-Ce-8Ca"/>
+                                    <constraint firstAttribute="height" constant="20" id="zIg-E3-en7"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <color key="textColor" red="0.33333333333333331" green="0.33333333333333331" blue="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ihF-af-cva">
+                                <rect key="frame" x="338.5" y="54" width="26.5" height="12"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="10"/>
+                                <color key="textColor" systemColor="systemRedColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                        </subviews>
+                        <color key="backgroundColor" red="0.94117647059999998" green="0.94117647059999998" blue="0.94509803920000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstItem="3j6-e7-ztE" firstAttribute="top" secondItem="buq-PS-h5p" secondAttribute="bottom" id="3Mc-Kc-zIp"/>
+                            <constraint firstItem="kQU-Pc-qqv" firstAttribute="leading" secondItem="6jg-tf-s0b" secondAttribute="leading" id="3Sz-uF-O8o"/>
+                            <constraint firstItem="ihF-af-cva" firstAttribute="top" secondItem="0R4-Gk-cpw" secondAttribute="bottom" constant="10" id="4k9-qQ-Y1T"/>
+                            <constraint firstItem="hY1-Ac-Oot" firstAttribute="top" secondItem="0R4-Gk-cpw" secondAttribute="bottom" id="9Ug-e9-Uoo"/>
+                            <constraint firstAttribute="trailing" secondItem="SJH-Sa-TMv" secondAttribute="trailing" id="DEn-Yl-3tq"/>
+                            <constraint firstItem="SJH-Sa-TMv" firstAttribute="top" secondItem="0R4-Gk-cpw" secondAttribute="bottom" id="HT2-C4-AZF"/>
+                            <constraint firstItem="pg3-8C-ucI" firstAttribute="centerX" secondItem="KsP-XU-bB0" secondAttribute="centerX" id="M6E-SJ-WIb"/>
+                            <constraint firstItem="jim-qG-8NV" firstAttribute="leading" secondItem="6jg-tf-s0b" secondAttribute="leading" priority="750" id="MM9-Au-SHa"/>
+                            <constraint firstItem="pg3-8C-ucI" firstAttribute="centerX" secondItem="6jg-tf-s0b" secondAttribute="centerX" id="NQC-uO-jWc"/>
+                            <constraint firstItem="kQU-Pc-qqv" firstAttribute="top" secondItem="0R4-Gk-cpw" secondAttribute="bottom" id="OXa-qo-Lsw"/>
+                            <constraint firstItem="buq-PS-h5p" firstAttribute="leading" secondItem="6jg-tf-s0b" secondAttribute="leading" id="OsY-kO-MRO"/>
+                            <constraint firstItem="KsP-XU-bB0" firstAttribute="centerX" secondItem="6jg-tf-s0b" secondAttribute="centerX" id="Q5m-B0-oCq"/>
+                            <constraint firstItem="37Q-1L-JHq" firstAttribute="top" secondItem="jim-qG-8NV" secondAttribute="bottom" priority="750" id="RsB-sO-mlP"/>
+                            <constraint firstAttribute="trailing" secondItem="3j6-e7-ztE" secondAttribute="trailing" id="YKO-sP-hff"/>
+                            <constraint firstItem="pg3-8C-ucI" firstAttribute="top" secondItem="KsP-XU-bB0" secondAttribute="bottom" constant="10" id="b75-Vp-dDd"/>
+                            <constraint firstItem="hY1-Ac-Oot" firstAttribute="leading" secondItem="6jg-tf-s0b" secondAttribute="leading" id="dR6-0O-enX"/>
+                            <constraint firstAttribute="trailing" secondItem="kQU-Pc-qqv" secondAttribute="trailing" id="gHU-T0-W7K"/>
+                            <constraint firstItem="3j6-e7-ztE" firstAttribute="leading" secondItem="6jg-tf-s0b" secondAttribute="leading" id="gcY-Ef-gk6"/>
+                            <constraint firstAttribute="trailing" secondItem="jim-qG-8NV" secondAttribute="trailing" priority="750" id="hqn-nx-fIj"/>
+                            <constraint firstItem="KsP-XU-bB0" firstAttribute="top" secondItem="3j6-e7-ztE" secondAttribute="bottom" constant="62" id="kZI-9D-bd3"/>
+                            <constraint firstAttribute="trailing" secondItem="ihF-af-cva" secondAttribute="trailing" constant="10" id="mtn-nO-5qu"/>
+                            <constraint firstAttribute="trailing" secondItem="buq-PS-h5p" secondAttribute="trailing" id="qAj-RS-bdT"/>
+                            <constraint firstItem="3j6-e7-ztE" firstAttribute="top" secondItem="kQU-Pc-qqv" secondAttribute="bottom" id="tGf-lM-bPe"/>
+                            <constraint firstItem="SJH-Sa-TMv" firstAttribute="leading" secondItem="6jg-tf-s0b" secondAttribute="leading" id="xkf-hy-wp1"/>
+                            <constraint firstItem="jim-qG-8NV" firstAttribute="top" secondItem="3j6-e7-ztE" secondAttribute="bottom" priority="750" id="zW5-Vq-dsE"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="sif-Bh-S2V">
+                        <nil key="title"/>
+                        <view key="titleView" contentMode="scaleToFill" id="UjG-SJ-r1Q">
+                            <rect key="frame" x="123.5" y="5.5" width="128" height="33"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <subviews>
+                                <textField hidden="YES" opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="fpz-XF-SsG">
+                                    <rect key="frame" x="15" y="1.5" width="100" height="30"/>
+                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <textInputTraits key="textInputTraits"/>
+                                </textField>
+                                <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="wgh-Q4-NmD">
+                                    <rect key="frame" x="0.0" y="1.5" width="128" height="30"/>
+                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                    <state key="normal">
+                                        <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    </state>
+                                    <connections>
+                                        <action selector="dateButtonClicked:" destination="I6z-uV-dEU" eventType="touchUpInside" id="blD-SP-xPZ"/>
+                                    </connections>
+                                </button>
+                            </subviews>
+                            <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                        </view>
+                    </navigationItem>
+                    <connections>
+                        <outlet property="cloudButton" destination="E3a-LC-jG1" id="w84-9D-fe3"/>
+                        <outlet property="dateButton" destination="wgh-Q4-NmD" id="6RC-vg-9e9"/>
+                        <outlet property="datePicker" destination="2LL-d5-JwH" id="Pls-Im-jvK"/>
+                        <outlet property="dateTextField" destination="fpz-XF-SsG" id="WL6-gA-aBD"/>
+                        <outlet property="dateToolbar" destination="MFi-iV-2pJ" id="zVX-ie-4k3"/>
+                        <outlet property="deviceButton" destination="Bu9-Qz-3Ij" id="Vjp-T8-uI2"/>
+                        <outlet property="duringSlider" destination="e5d-g8-Knj" id="Lpe-ZO-jGT"/>
+                        <outlet property="duringTimeLabel" destination="ESG-x4-J8R" id="wb2-WA-Geu"/>
+                        <outlet property="largeBackButton" destination="hY1-Ac-Oot" id="3vD-sf-OT1"/>
+                        <outlet property="largeButton" destination="7aB-y0-gtH" id="K80-Il-ovl"/>
+                        <outlet property="largeTitleLabel" destination="SJH-Sa-TMv" id="Azk-pA-lo4"/>
+                        <outlet property="noVideoImageView" destination="KsP-XU-bB0" id="uuy-I7-RjU"/>
+                        <outlet property="noVideoLabel" destination="pg3-8C-ucI" id="pWG-m9-pOS"/>
+                        <outlet property="playButton" destination="Z3E-1u-wEn" id="kh9-WC-095"/>
+                        <outlet property="playTimeLabel" destination="ruu-Hg-3Tx" id="wAa-dH-XNO"/>
+                        <outlet property="playbackList" destination="jim-qG-8NV" id="dpb-Sy-z2g"/>
+                        <outlet property="playerToolbox" destination="buq-PS-h5p" id="1ue-bg-0Vs"/>
+                        <outlet property="playerToolboxConstraint" destination="tMQ-jL-rdi" id="STA-TC-Nan"/>
+                        <outlet property="playerView" destination="kQU-Pc-qqv" id="3bN-i4-Fsq"/>
+                        <outlet property="rateBtn" destination="Ej7-SD-EGu" id="tQg-wJ-TOV"/>
+                        <outlet property="selectedImageView" destination="o6e-rL-gRl" id="kKp-Rj-4xP"/>
+                        <outlet property="selectedImageViewConstraint" destination="oxC-bm-Nxp" id="Gf0-Nx-xD8"/>
+                        <outlet property="streamPlayBtn" destination="gRk-Pf-zJ6" id="HZ0-EC-KRr"/>
+                        <outlet property="streamTypeLabel" destination="ihF-af-cva" id="QG5-YG-QRx"/>
+                        <outlet property="toolView" destination="3j6-e7-ztE" id="EVc-wy-QXh"/>
+                        <outlet property="voiceButton" destination="t6K-Cq-gMh" id="01u-zp-E0p"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="ns5-vM-KXW" userLabel="First Responder" sceneMemberID="firstResponder"/>
+                <datePicker contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" datePickerMode="date" id="2LL-d5-JwH">
+                    <rect key="frame" x="0.0" y="0.0" width="320" height="216"/>
+                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+                </datePicker>
+                <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="MFi-iV-2pJ">
+                    <rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
+                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+                    <items>
+                        <barButtonItem title="鍙栨秷" id="6Za-cr-nzm">
+                            <connections>
+                                <action selector="cancel:" destination="I6z-uV-dEU" id="i0b-WR-Dv5"/>
+                            </connections>
+                        </barButtonItem>
+                        <barButtonItem style="plain" systemItem="flexibleSpace" id="cbF-Ui-mjA"/>
+                        <barButtonItem title="纭畾" id="cQF-0W-PL0">
+                            <connections>
+                                <action selector="confirm:" destination="I6z-uV-dEU" id="18j-pJ-5Vt"/>
+                            </connections>
+                        </barButtonItem>
+                    </items>
+                </toolbar>
+                <tapGestureRecognizer id="znC-g9-QOc">
+                    <connections>
+                        <action selector="showToolBar:" destination="I6z-uV-dEU" id="PGf-kv-HRg"/>
+                    </connections>
+                </tapGestureRecognizer>
+            </objects>
+            <point key="canvasLocation" x="1172" y="1463"/>
+        </scene>
+        <!--Message List View Controller-->
+        <scene sceneID="La1-sv-OP4">
+            <objects>
+                <tableViewController id="MVz-Sq-jf5" customClass="EZMessageListViewController" sceneMemberID="viewController">
+                    <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="100" sectionHeaderHeight="28" sectionFooterHeight="28" id="p2y-0I-SRU">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <prototypes>
+                            <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="MessageCell" rowHeight="75" id="St6-kz-bZE" customClass="MessageListCell">
+                                <rect key="frame" x="0.0" y="44.5" width="375" height="75"/>
+                                <autoresizingMask key="autoresizingMask"/>
+                                <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="St6-kz-bZE" id="gqt-AI-8vk">
+                                    <rect key="frame" x="0.0" y="0.0" width="375" height="75"/>
+                                    <autoresizingMask key="autoresizingMask"/>
+                                    <subviews>
+                                        <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Anm-pP-Im6">
+                                            <rect key="frame" x="5" y="5" width="90" height="65"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="65" id="HyQ-tw-ere"/>
+                                                <constraint firstAttribute="width" constant="90" id="U11-iq-gFE"/>
+                                            </constraints>
+                                        </imageView>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="浜轰綋鎰熷簲浜嬩欢" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oq1-TQ-afe">
+                                            <rect key="frame" x="119" y="13" width="92" height="18"/>
+                                            <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="鏉ヨ嚜:123456789" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SpQ-pQ-wyI">
+                                            <rect key="frame" x="119" y="45" width="176" height="20"/>
+                                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <color key="textColor" red="0.67843137254901964" green="0.67843137254901964" blue="0.67843137254901964" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jy3-lI-DsU">
+                                            <rect key="frame" x="100" y="32" width="10" height="10"/>
+                                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                            <color key="backgroundColor" red="0.10859914124011993" green="0.54394680261611938" blue="0.85770881175994873" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </imageView>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" text="9:00" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0SD-HE-m6y">
+                                            <rect key="frame" x="219" y="13" width="140" height="18"/>
+                                            <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                            <color key="textColor" red="0.67843137254901964" green="0.67843137254901964" blue="0.67843137254901964" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                    </subviews>
+                                    <constraints>
+                                        <constraint firstItem="Anm-pP-Im6" firstAttribute="top" secondItem="gqt-AI-8vk" secondAttribute="top" constant="5" id="7EA-Vw-H4t"/>
+                                        <constraint firstItem="oq1-TQ-afe" firstAttribute="top" secondItem="gqt-AI-8vk" secondAttribute="topMargin" constant="2" id="EHj-Jp-msb"/>
+                                        <constraint firstItem="0SD-HE-m6y" firstAttribute="leading" secondItem="oq1-TQ-afe" secondAttribute="trailing" constant="8" id="Ekl-gJ-6xS"/>
+                                        <constraint firstItem="0SD-HE-m6y" firstAttribute="top" secondItem="gqt-AI-8vk" secondAttribute="topMargin" constant="2" id="Sdl-Mq-ojW"/>
+                                        <constraint firstItem="Anm-pP-Im6" firstAttribute="leading" secondItem="gqt-AI-8vk" secondAttribute="leading" constant="5" id="YEj-dB-5Qx"/>
+                                        <constraint firstItem="oq1-TQ-afe" firstAttribute="leading" secondItem="Anm-pP-Im6" secondAttribute="trailing" constant="24" id="pmt-zE-HsN"/>
+                                        <constraint firstItem="0SD-HE-m6y" firstAttribute="trailing" secondItem="gqt-AI-8vk" secondAttribute="trailingMargin" id="sdj-ui-vjw"/>
+                                    </constraints>
+                                </tableViewCellContentView>
+                                <connections>
+                                    <outlet property="actionImageView" destination="Anm-pP-Im6" id="QSW-GD-H4R"/>
+                                    <outlet property="descriptionLabel" destination="SpQ-pQ-wyI" id="rxz-7r-ehE"/>
+                                    <outlet property="readStatusIcon" destination="jy3-lI-DsU" id="eIz-si-mpJ"/>
+                                    <outlet property="timeLabel" destination="0SD-HE-m6y" id="433-ly-kMQ"/>
+                                    <outlet property="titleLabel" destination="oq1-TQ-afe" id="V2K-db-ufc"/>
+                                </connections>
+                            </tableViewCell>
+                        </prototypes>
+                        <connections>
+                            <outlet property="dataSource" destination="MVz-Sq-jf5" id="d2f-CU-fmv"/>
+                            <outlet property="delegate" destination="MVz-Sq-jf5" id="qhi-uc-zr4"/>
+                        </connections>
+                    </tableView>
+                    <toolbarItems>
+                        <barButtonItem title="鍒犻櫎" style="plain" id="6yZ-4A-Vvl">
+                            <color key="tintColor" red="0.85770881180000003" green="0.211302614" blue="0.113631911" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <connections>
+                                <action selector="deleteMessage:" destination="MVz-Sq-jf5" id="Vdj-g1-A36"/>
+                            </connections>
+                        </barButtonItem>
+                        <barButtonItem style="plain" systemItem="flexibleSpace" id="mzb-N8-DSD"/>
+                        <barButtonItem title="鏍囪宸茶" id="tHi-Fa-i4d">
+                            <connections>
+                                <action selector="readMessage:" destination="MVz-Sq-jf5" id="4ul-Xs-xvT"/>
+                            </connections>
+                        </barButtonItem>
+                    </toolbarItems>
+                    <navigationItem key="navigationItem" id="ARC-rQ-wIY">
+                        <barButtonItem key="rightBarButtonItem" systemItem="edit" id="dHf-dn-ncL">
+                            <connections>
+                                <action selector="editTableView:" destination="MVz-Sq-jf5" id="47f-Zy-tav"/>
+                            </connections>
+                        </barButtonItem>
+                    </navigationItem>
+                    <simulatedToolbarMetrics key="simulatedBottomBarMetrics"/>
+                    <connections>
+                        <outlet property="deleteSelected" destination="6yZ-4A-Vvl" id="nNN-ry-Dws"/>
+                        <outlet property="editButton" destination="dHf-dn-ncL" id="ZeI-ph-uuY"/>
+                        <outlet property="noMessage" destination="sFU-KM-YgO" id="DMZ-7P-zoo"/>
+                        <outlet property="noMessageLabel" destination="u19-7q-vxu" id="X2k-k1-Tha"/>
+                        <outlet property="readAll" destination="tHi-Fa-i4d" id="Fv3-O0-Gd1"/>
+                        <segue destination="Vpd-pS-Twe" kind="push" identifier="go2MessagePhoto" id="NXd-Cg-MwP"/>
+                    </connections>
+                </tableViewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="UIp-4e-qNh" userLabel="First Responder" sceneMemberID="firstResponder"/>
+                <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="no_message" id="sFU-KM-YgO">
+                    <rect key="frame" x="0.0" y="0.0" width="94" height="94"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                </imageView>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="鏆傛棤娑堟伅" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="u19-7q-vxu">
+                    <rect key="frame" x="0.0" y="0.0" width="90" height="21"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                    <color key="textColor" red="0.53333333329999999" green="0.53333333329999999" blue="0.53333333329999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+            </objects>
+            <point key="canvasLocation" x="54.399999999999999" y="1235.9820089955024"/>
+        </scene>
+        <!--Setting View Controller-->
+        <scene sceneID="8uc-oI-R8b">
+            <objects>
+                <tableViewController id="3ZH-14-C2h" customClass="EZSettingViewController" sceneMemberID="viewController">
+                    <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" id="wlo-g7-YSk">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <prototypes>
+                            <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="EZSettingCell" id="Mk7-Ag-WW0">
+                                <rect key="frame" x="0.0" y="49.5" width="375" height="44"/>
+                                <autoresizingMask key="autoresizingMask"/>
+                                <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Mk7-Ag-WW0" id="Pt3-DC-cCE">
+                                    <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
+                                    <autoresizingMask key="autoresizingMask"/>
+                                </tableViewCellContentView>
+                            </tableViewCell>
+                        </prototypes>
+                        <connections>
+                            <outlet property="dataSource" destination="3ZH-14-C2h" id="I4R-NW-aqQ"/>
+                            <outlet property="delegate" destination="3ZH-14-C2h" id="0Ve-Vu-DDA"/>
+                        </connections>
+                    </tableView>
+                    <navigationItem key="navigationItem" id="OqD-LX-c7f"/>
+                    <connections>
+                        <outlet property="actionSwitch" destination="8jg-ac-7ea" id="xIr-pf-25h"/>
+                        <outlet property="currentVersionLabel" destination="RBc-j1-IEr" id="0eE-u0-usA"/>
+                        <outlet property="hdSwitch" destination="KBU-5V-GwK" id="lf0-8b-Qeq"/>
+                        <outlet property="nVersionLabel" destination="bvq-5A-JW8" id="dqy-G7-H05"/>
+                        <outlet property="nameLabel" destination="8Y3-zX-Cnw" id="w24-b8-OXa"/>
+                        <outlet property="serialLabel" destination="9VV-np-Xv9" id="Vvo-rR-zdY"/>
+                        <outlet property="updateImageView" destination="A8K-Mk-xFS" id="qqg-Hg-1rw"/>
+                        <outlet property="videoSwitch" destination="eKv-yq-ycl" id="HD9-JX-sBQ"/>
+                        <segue destination="yga-gr-cbw" kind="push" identifier="go2setDeviceName" id="MqZ-43-B1F"/>
+                        <segue destination="B6I-K3-uvg" kind="push" identifier="go2Upgrade" id="iXV-Xg-6Ai"/>
+                    </connections>
+                </tableViewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="0Ah-46-kfZ" userLabel="First Responder" sceneMemberID="firstResponder"/>
+                <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" id="8jg-ac-7ea">
+                    <rect key="frame" x="0.0" y="0.0" width="51" height="31"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <connections>
+                        <action selector="actionSwitchChanged:" destination="3ZH-14-C2h" eventType="valueChanged" id="urQ-Ay-8Ik"/>
+                    </connections>
+                </switch>
+                <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" id="eKv-yq-ycl">
+                    <rect key="frame" x="0.0" y="0.0" width="51" height="31"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <connections>
+                        <action selector="encryptChanged:" destination="3ZH-14-C2h" eventType="touchUpInside" id="P8B-M0-dUl"/>
+                    </connections>
+                </switch>
+                <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" id="KBU-5V-GwK">
+                    <rect key="frame" x="0.0" y="0.0" width="51" height="31"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <connections>
+                        <action selector="HDChanged:" destination="3ZH-14-C2h" eventType="valueChanged" id="fHK-6L-vL6"/>
+                    </connections>
+                </switch>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="璁惧鍚�" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="8Y3-zX-Cnw">
+                    <rect key="frame" x="0.0" y="0.0" width="72" height="21"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                    <color key="textColor" red="0.53333333329999999" green="0.53333333329999999" blue="0.53333333329999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="123456789" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="9VV-np-Xv9">
+                    <rect key="frame" x="0.0" y="0.0" width="122" height="21"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                    <color key="textColor" red="0.53333333333333333" green="0.53333333333333333" blue="0.53333333333333333" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="RBc-j1-IEr">
+                    <rect key="frame" x="0.0" y="0.0" width="120" height="21"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="14"/>
+                    <color key="textColor" red="0.53333333329999999" green="0.53333333329999999" blue="0.53333333329999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="bvq-5A-JW8">
+                    <rect key="frame" x="0.0" y="0.0" width="112" height="21"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                    <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="upgrade" id="A8K-Mk-xFS">
+                    <rect key="frame" x="0.0" y="0.0" width="45" height="21"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                </imageView>
+            </objects>
+            <point key="canvasLocation" x="2998.4000000000001" y="340.02998500749629"/>
+        </scene>
+        <!--Edit View Controller-->
+        <scene sceneID="5rr-1N-SjW">
+            <objects>
+                <viewController id="yga-gr-cbw" customClass="EZEditViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="7aP-Sp-tAl"/>
+                        <viewControllerLayoutGuide type="bottom" id="z34-zQ-g1R"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="kWR-Bn-Cd6">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="璇疯緭鍏ヨ澶囧悕绉�" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="r1W-d8-Rg7">
+                                <rect key="frame" x="0.0" y="94" width="375" height="40"/>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="40" id="NLX-OK-XZ7"/>
+                                </constraints>
+                                <color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <textInputTraits key="textInputTraits"/>
+                            </textField>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xdQ-Ec-12V">
+                                <rect key="frame" x="45" y="194" width="285" height="39"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="285" id="F6x-VP-pj1"/>
+                                    <constraint firstAttribute="height" constant="39" id="eMs-1w-UTL"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                <state key="normal" title="淇濆瓨" backgroundImage="blue_button"/>
+                                <connections>
+                                    <action selector="saveName:" destination="yga-gr-cbw" eventType="touchUpInside" id="MNJ-A6-Kp1"/>
+                                </connections>
+                            </button>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="涓嶈秴杩�50涓瓧绗�" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xj6-wT-AiB">
+                                <rect key="frame" x="9" y="145" width="216" height="21"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="21" id="H5l-ew-D4h"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <color key="textColor" red="0.53333333329999999" green="0.53333333329999999" blue="0.53333333329999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                        </subviews>
+                        <color key="backgroundColor" red="0.94117647059999998" green="0.94117647059999998" blue="0.94509803920000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstItem="r1W-d8-Rg7" firstAttribute="leading" secondItem="kWR-Bn-Cd6" secondAttribute="leading" id="0Ir-GL-kg9"/>
+                            <constraint firstItem="xj6-wT-AiB" firstAttribute="leading" secondItem="kWR-Bn-Cd6" secondAttribute="leading" constant="9" id="6YT-M5-I8Q"/>
+                            <constraint firstItem="xj6-wT-AiB" firstAttribute="top" secondItem="r1W-d8-Rg7" secondAttribute="bottom" constant="11" id="71h-89-SKQ"/>
+                            <constraint firstAttribute="trailing" secondItem="r1W-d8-Rg7" secondAttribute="trailing" id="Fh5-VC-xdu"/>
+                            <constraint firstItem="r1W-d8-Rg7" firstAttribute="top" secondItem="7aP-Sp-tAl" secondAttribute="bottom" constant="50" id="cwe-OY-Bkj"/>
+                            <constraint firstAttribute="trailing" secondItem="xj6-wT-AiB" secondAttribute="trailing" constant="150" id="fQK-zd-btb"/>
+                            <constraint firstItem="xdQ-Ec-12V" firstAttribute="top" secondItem="r1W-d8-Rg7" secondAttribute="bottom" constant="60" id="gPG-aa-4Zb"/>
+                            <constraint firstItem="xdQ-Ec-12V" firstAttribute="centerX" secondItem="kWR-Bn-Cd6" secondAttribute="centerX" id="sft-Qz-JsK"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="QoW-uz-ej1"/>
+                    <connections>
+                        <outlet property="deviceNameTextField" destination="r1W-d8-Rg7" id="hPG-Ge-HhP"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="7Bh-zP-3pb" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="3920" y="-109.74512743628186"/>
+        </scene>
+        <!--Message Photo View Controller-->
+        <scene sceneID="ekE-W8-1DW">
+            <objects>
+                <viewController id="Vpd-pS-Twe" customClass="EZMessagePhotoViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="aBf-9x-ztY"/>
+                        <viewControllerLayoutGuide type="bottom" id="cZ6-zM-7Go"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="Uu5-Ms-thn">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="i18-UP-bcI">
+                                <rect key="frame" x="0.0" y="487" width="375" height="180"/>
+                                <subviews>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="鍙戠敓浜轰綋鎰熷簲浜嬩欢" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AUI-sk-GM6">
+                                        <rect key="frame" x="10" y="25" width="355" height="20"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="20" id="Vp3-qH-8RB"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                        <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2015/11/18 19:12:22" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QVM-WI-RUj">
+                                        <rect key="frame" x="10" y="45" width="355" height="20"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="20" id="MCb-HL-HmO"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                        <color key="textColor" red="0.53333333333333333" green="0.53333333333333333" blue="0.53333333333333333" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="鏉ヨ嚜锛欳2mini" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xta-Lo-bjB">
+                                        <rect key="frame" x="10" y="65" width="355" height="20"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="20" id="eUk-DP-f6r"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                        <color key="textColor" red="0.53333333333333333" green="0.53333333333333333" blue="0.53333333333333333" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="MZk-cJ-Fkp">
+                                        <rect key="frame" x="45" y="117" width="285" height="39"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="285" id="SdI-Fw-BPc"/>
+                                            <constraint firstAttribute="height" constant="39" id="uIB-3c-LVw"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                        <state key="normal" title="娑堟伅褰曞儚" backgroundImage="blue_button"/>
+                                        <connections>
+                                            <action selector="go2Next:" destination="Vpd-pS-Twe" eventType="touchUpInside" id="BbC-Xc-fQb"/>
+                                        </connections>
+                                    </button>
+                                </subviews>
+                                <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.75419657939189189" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstItem="xta-Lo-bjB" firstAttribute="leading" secondItem="i18-UP-bcI" secondAttribute="leading" constant="10" id="3HX-J5-kZY"/>
+                                    <constraint firstAttribute="height" constant="180" id="978-QH-KUo"/>
+                                    <constraint firstItem="MZk-cJ-Fkp" firstAttribute="centerX" secondItem="i18-UP-bcI" secondAttribute="centerX" id="D67-dM-j65"/>
+                                    <constraint firstItem="MZk-cJ-Fkp" firstAttribute="top" secondItem="xta-Lo-bjB" secondAttribute="bottom" constant="32" id="MF0-Qv-j3E"/>
+                                    <constraint firstAttribute="bottom" secondItem="MZk-cJ-Fkp" secondAttribute="bottom" constant="24" id="NUE-KB-P0B"/>
+                                    <constraint firstItem="QVM-WI-RUj" firstAttribute="leading" secondItem="i18-UP-bcI" secondAttribute="leading" constant="10" id="OX0-R0-1T0"/>
+                                    <constraint firstItem="MZk-cJ-Fkp" firstAttribute="centerX" secondItem="QVM-WI-RUj" secondAttribute="centerX" id="PaH-5Q-bUp"/>
+                                    <constraint firstAttribute="trailing" secondItem="QVM-WI-RUj" secondAttribute="trailing" constant="10" id="UM8-2T-oqc"/>
+                                    <constraint firstItem="QVM-WI-RUj" firstAttribute="top" secondItem="AUI-sk-GM6" secondAttribute="bottom" id="aCH-vh-CIY"/>
+                                    <constraint firstAttribute="trailing" secondItem="AUI-sk-GM6" secondAttribute="trailing" constant="10" id="iu6-gz-PlM"/>
+                                    <constraint firstItem="AUI-sk-GM6" firstAttribute="leading" secondItem="i18-UP-bcI" secondAttribute="leading" constant="10" id="npp-Na-uXn"/>
+                                    <constraint firstItem="AUI-sk-GM6" firstAttribute="top" secondItem="i18-UP-bcI" secondAttribute="top" constant="25" id="rQO-pV-naS"/>
+                                    <constraint firstItem="MZk-cJ-Fkp" firstAttribute="centerX" secondItem="AUI-sk-GM6" secondAttribute="centerX" id="t2b-3L-Nl4"/>
+                                    <constraint firstAttribute="trailing" secondItem="xta-Lo-bjB" secondAttribute="trailing" constant="10" id="xur-1Q-gHl"/>
+                                </constraints>
+                            </view>
+                        </subviews>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstAttribute="trailing" secondItem="i18-UP-bcI" secondAttribute="trailing" id="YBz-8q-wDZ"/>
+                            <constraint firstItem="i18-UP-bcI" firstAttribute="leading" secondItem="Uu5-Ms-thn" secondAttribute="leading" id="oMB-hN-b6R"/>
+                            <constraint firstItem="cZ6-zM-7Go" firstAttribute="top" secondItem="i18-UP-bcI" secondAttribute="bottom" id="xbC-N7-Z5b"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="Hfr-L6-q9G"/>
+                    <nil key="simulatedBottomBarMetrics"/>
+                    <connections>
+                        <outlet property="contentLabel" destination="xta-Lo-bjB" id="6Lv-rT-1hU"/>
+                        <outlet property="messageDetailInfoView" destination="i18-UP-bcI" id="8VI-SS-xAE"/>
+                        <outlet property="recordButton" destination="MZk-cJ-Fkp" id="RIE-3g-ybt"/>
+                        <outlet property="timeLabel" destination="QVM-WI-RUj" id="OzY-nA-Oqo"/>
+                        <outlet property="titleLabel" destination="AUI-sk-GM6" id="X2c-dH-RAT"/>
+                        <segue destination="Ziu-Is-xdi" kind="push" identifier="go2MessagePlayback" id="QL2-r6-I3I"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="0Y4-gX-Pdl" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-318.39999999999998" y="2107.6461769115444"/>
+        </scene>
+        <!--Message Playback View Controller-->
+        <scene sceneID="7U5-ja-hx3">
+            <objects>
+                <viewController id="Ziu-Is-xdi" customClass="EZMessagePlaybackViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="nfL-if-wgC"/>
+                        <viewControllerLayoutGuide type="bottom" id="AVQ-gq-N1c"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="mkg-WK-bfu">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="wifi_bg" translatesAutoresizingMaskIntoConstraints="NO" id="XNo-QF-Cb8">
+                                <rect key="frame" x="0.0" y="32" width="375" height="635"/>
+                            </imageView>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Sid-Ff-mRw">
+                                <rect key="frame" x="0.0" y="44" width="375" height="211"/>
+                                <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <gestureRecognizers/>
+                                <constraints>
+                                    <constraint firstAttribute="width" secondItem="Sid-Ff-mRw" secondAttribute="height" multiplier="16:9" id="pQd-K0-kef"/>
+                                </constraints>
+                                <connections>
+                                    <outletCollection property="gestureRecognizers" destination="QGi-M4-3ct" appends="YES" id="TmO-Rk-ErH"/>
+                                </connections>
+                            </view>
+                            <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="  00:00" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IqR-oy-XmU">
+                                <rect key="frame" x="147.5" y="54" width="80" height="24"/>
+                                <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="80" id="57P-5k-0tb"/>
+                                    <constraint firstAttribute="height" constant="24" id="Mqb-tw-Qxq"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="XID-G7-Q1F">
+                                <rect key="frame" x="0.0" y="44" width="40" height="40"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="40" id="AOT-6h-sls"/>
+                                    <constraint firstAttribute="height" constant="40" id="JO7-Hb-1i7"/>
+                                </constraints>
+                                <state key="normal" image="large_back_btn"/>
+                                <connections>
+                                    <action selector="largeBack:" destination="I6z-uV-dEU" eventType="touchUpInside" id="Dhi-B6-M16"/>
+                                    <action selector="largeBack:" destination="Ziu-Is-xdi" eventType="touchUpInside" id="kFm-ga-gme"/>
+                                </connections>
+                            </button>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="b60-F5-UgT">
+                                <rect key="frame" x="0.0" y="195" width="375" height="60"/>
+                                <subviews>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="a6a-IS-kTU">
+                                        <rect key="frame" x="0.0" y="23" width="60" height="37"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="37" id="AfH-0T-CMk"/>
+                                            <constraint firstAttribute="width" constant="60" id="vaX-fO-27D"/>
+                                        </constraints>
+                                        <state key="normal" image="preview_play_btn"/>
+                                        <connections>
+                                            <action selector="playButtonClicked:" destination="I6z-uV-dEU" eventType="touchUpInside" id="5y4-UP-Cq4"/>
+                                            <action selector="playButtonClicked:" destination="Ziu-Is-xdi" eventType="touchUpInside" id="R09-nh-Kz2"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="S3H-Nc-Lu9">
+                                        <rect key="frame" x="60" y="23" width="60" height="37"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="37" id="BbD-6J-wMN"/>
+                                            <constraint firstAttribute="width" constant="60" id="k0h-am-AUy"/>
+                                        </constraints>
+                                        <state key="normal" image="preview_voice_btn"/>
+                                        <connections>
+                                            <action selector="voiceButtonClicked:" destination="I6z-uV-dEU" eventType="touchUpInside" id="7dA-sY-rJM"/>
+                                            <action selector="voiceButtonClicked:" destination="Ziu-Is-xdi" eventType="touchUpInside" id="RRJ-y0-y4j"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cLa-FB-IQC">
+                                        <rect key="frame" x="315" y="23" width="60" height="37"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="37" id="Dhh-Hn-9xJ"/>
+                                            <constraint firstAttribute="width" constant="60" id="lQa-uK-fRg"/>
+                                        </constraints>
+                                        <state key="normal" image="preview_enlarge"/>
+                                        <state key="highlighted" image="preview_enlarge_btn_sel"/>
+                                        <connections>
+                                            <action selector="large:" destination="I6z-uV-dEU" eventType="touchUpInside" id="EgA-TW-66G"/>
+                                            <action selector="large:" destination="Ziu-Is-xdi" eventType="touchUpInside" id="cNC-Fk-JVO"/>
+                                        </connections>
+                                    </button>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="00:00" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="arc-1g-3CP">
+                                        <rect key="frame" x="0.0" y="0.0" width="34" height="20"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="20" id="qCj-Pb-rep"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                        <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <slider opaque="NO" contentMode="scaleToFill" semanticContentAttribute="playback" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="5mo-5w-CGH">
+                                        <rect key="frame" x="35.5" y="-5" width="303.5" height="31"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="30" id="BZH-q0-NfT"/>
+                                        </constraints>
+                                        <color key="thumbTintColor" red="0.10859914124011993" green="0.54394680261611938" blue="0.85770881175994873" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <connections>
+                                            <action selector="duringValueChange:" destination="I6z-uV-dEU" eventType="touchUpInside" id="UNW-03-tB5"/>
+                                            <action selector="duringValueChange:" destination="Ziu-Is-xdi" eventType="touchUpInside" id="yFD-GS-9zU"/>
+                                        </connections>
+                                    </slider>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="00:00" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="68c-It-TWh">
+                                        <rect key="frame" x="341" y="0.0" width="34" height="20"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="20" id="rkK-LL-Iu9"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                                        <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                </subviews>
+                                <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstItem="68c-It-TWh" firstAttribute="top" secondItem="b60-F5-UgT" secondAttribute="top" id="1we-A3-8NM"/>
+                                    <constraint firstItem="arc-1g-3CP" firstAttribute="top" secondItem="b60-F5-UgT" secondAttribute="top" id="8PY-wD-9BE"/>
+                                    <constraint firstItem="5mo-5w-CGH" firstAttribute="leading" secondItem="arc-1g-3CP" secondAttribute="trailing" constant="3.5" id="CEo-Y1-KWV"/>
+                                    <constraint firstAttribute="height" constant="60" id="H8F-Dr-u5m"/>
+                                    <constraint firstAttribute="trailing" secondItem="68c-It-TWh" secondAttribute="trailing" id="HvI-sY-HRZ"/>
+                                    <constraint firstItem="arc-1g-3CP" firstAttribute="leading" secondItem="b60-F5-UgT" secondAttribute="leading" id="MXz-M4-slD"/>
+                                    <constraint firstItem="a6a-IS-kTU" firstAttribute="leading" secondItem="b60-F5-UgT" secondAttribute="leading" id="bnA-wA-NoS"/>
+                                    <constraint firstItem="68c-It-TWh" firstAttribute="width" secondItem="arc-1g-3CP" secondAttribute="width" id="cH5-cA-qx3"/>
+                                    <constraint firstItem="S3H-Nc-Lu9" firstAttribute="leading" secondItem="a6a-IS-kTU" secondAttribute="trailing" id="fJA-A1-CyU"/>
+                                    <constraint firstAttribute="bottom" secondItem="S3H-Nc-Lu9" secondAttribute="bottom" id="h3g-Ty-iNV"/>
+                                    <constraint firstItem="68c-It-TWh" firstAttribute="leading" secondItem="5mo-5w-CGH" secondAttribute="trailing" constant="4" id="k0e-h4-OJW"/>
+                                    <constraint firstAttribute="bottom" secondItem="a6a-IS-kTU" secondAttribute="bottom" id="keH-4j-kjq"/>
+                                    <constraint firstAttribute="bottom" secondItem="cLa-FB-IQC" secondAttribute="bottom" id="oxW-dK-xJN"/>
+                                    <constraint firstItem="5mo-5w-CGH" firstAttribute="centerY" secondItem="68c-It-TWh" secondAttribute="centerY" id="upd-df-cFG"/>
+                                    <constraint firstAttribute="trailing" secondItem="cLa-FB-IQC" secondAttribute="trailing" id="vMu-fL-CxF"/>
+                                </constraints>
+                            </view>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="es2-2O-C6T">
+                                <rect key="frame" x="197.5" y="355" width="100" height="100"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="100" id="ggm-qd-KNb"/>
+                                    <constraint firstAttribute="width" constant="100" id="sET-Nc-aei"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <state key="normal" title="褰曞儚" image="preview_recording">
+                                    <color key="titleColor" red="0.66666666666666663" green="0.66666666666666663" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                </state>
+                                <state key="disabled" image="preview_recording_dis"/>
+                                <state key="selected" image="preview_recording_sel"/>
+                                <state key="highlighted" image="preview_recording_sel"/>
+                                <connections>
+                                    <action selector="localButtonClicked:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="mwQ-yE-rJl"/>
+                                    <action selector="localButtonClicked:" destination="Ziu-Is-xdi" eventType="touchUpInside" id="ymB-Qs-DYt"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="uxM-3S-gu1">
+                                <rect key="frame" x="77.5" y="355" width="100" height="100"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="100" id="76E-yD-MgD"/>
+                                    <constraint firstAttribute="height" constant="100" id="YTu-Ca-QiC"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <state key="normal" title="鎴浘" image="preview_screenshot">
+                                    <color key="titleColor" red="0.66666666666666663" green="0.66666666666666663" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                </state>
+                                <state key="disabled" image="preview_screenshot_dis"/>
+                                <state key="highlighted" image="preview_screenshot_sel"/>
+                                <connections>
+                                    <action selector="capture:" destination="uBF-Yq-Qo0" eventType="touchUpInside" id="OV3-bX-1Cc"/>
+                                    <action selector="capture:" destination="Ziu-Is-xdi" eventType="touchUpInside" id="XPo-Ej-PTr"/>
+                                </connections>
+                            </button>
+                        </subviews>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstItem="XID-G7-Q1F" firstAttribute="leading" secondItem="mkg-WK-bfu" secondAttribute="leading" id="44U-eP-qoj"/>
+                            <constraint firstItem="XNo-QF-Cb8" firstAttribute="leading" secondItem="mkg-WK-bfu" secondAttribute="leading" id="4mi-A0-Yqa"/>
+                            <constraint firstItem="es2-2O-C6T" firstAttribute="top" secondItem="uxM-3S-gu1" secondAttribute="top" id="5Jp-Y9-LvH"/>
+                            <constraint firstItem="uxM-3S-gu1" firstAttribute="top" secondItem="b60-F5-UgT" secondAttribute="bottom" constant="100" id="6hK-sd-gv0"/>
+                            <constraint firstItem="Sid-Ff-mRw" firstAttribute="bottom" secondItem="b60-F5-UgT" secondAttribute="bottom" id="8xg-8a-jK1"/>
+                            <constraint firstItem="Sid-Ff-mRw" firstAttribute="trailing" secondItem="b60-F5-UgT" secondAttribute="trailing" id="JIK-S0-y2m"/>
+                            <constraint firstItem="Sid-Ff-mRw" firstAttribute="leading" secondItem="b60-F5-UgT" secondAttribute="leading" id="R2p-kI-ddB"/>
+                            <constraint firstItem="XNo-QF-Cb8" firstAttribute="top" secondItem="mkg-WK-bfu" secondAttribute="top" constant="32" id="SlB-AN-QdV"/>
+                            <constraint firstItem="Sid-Ff-mRw" firstAttribute="top" secondItem="nfL-if-wgC" secondAttribute="bottom" id="Y4j-nZ-qaU"/>
+                            <constraint firstItem="es2-2O-C6T" firstAttribute="leading" secondItem="mkg-WK-bfu" secondAttribute="centerXWithinMargins" constant="10" id="aNt-cU-Ben"/>
+                            <constraint firstItem="IqR-oy-XmU" firstAttribute="centerX" secondItem="mkg-WK-bfu" secondAttribute="centerX" id="g8q-JH-xwV"/>
+                            <constraint firstItem="Sid-Ff-mRw" firstAttribute="trailing" secondItem="XNo-QF-Cb8" secondAttribute="trailing" id="gwj-ge-stt"/>
+                            <constraint firstAttribute="bottom" secondItem="XNo-QF-Cb8" secondAttribute="bottom" id="oGc-93-IA5"/>
+                            <constraint firstItem="Sid-Ff-mRw" firstAttribute="leading" secondItem="XNo-QF-Cb8" secondAttribute="leading" id="ofn-fn-AWD"/>
+                            <constraint firstAttribute="trailing" secondItem="XNo-QF-Cb8" secondAttribute="trailing" id="p2Z-fc-rcv"/>
+                            <constraint firstItem="IqR-oy-XmU" firstAttribute="top" secondItem="nfL-if-wgC" secondAttribute="bottom" constant="10" id="ubZ-J9-tBg"/>
+                            <constraint firstAttribute="centerXWithinMargins" secondItem="uxM-3S-gu1" secondAttribute="trailing" constant="10" id="ufZ-89-QFM"/>
+                            <constraint firstItem="XID-G7-Q1F" firstAttribute="top" secondItem="nfL-if-wgC" secondAttribute="bottom" id="yoF-Yt-Zqi"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="4ns-ef-UNV"/>
+                    <nil key="simulatedBottomBarMetrics"/>
+                    <connections>
+                        <outlet property="captureButton" destination="uxM-3S-gu1" id="DW0-gl-Rur"/>
+                        <outlet property="duringSlider" destination="5mo-5w-CGH" id="bfo-5A-oSQ"/>
+                        <outlet property="duringTimeLabel" destination="68c-It-TWh" id="Aky-eV-Hds"/>
+                        <outlet property="largeBackButton" destination="XID-G7-Q1F" id="hDs-V1-4WK"/>
+                        <outlet property="largeButton" destination="cLa-FB-IQC" id="lif-mV-Npo"/>
+                        <outlet property="localRecordButton" destination="es2-2O-C6T" id="B3h-hl-q2R"/>
+                        <outlet property="localRecordLabel" destination="IqR-oy-XmU" id="Ggp-z8-pm6"/>
+                        <outlet property="playButton" destination="a6a-IS-kTU" id="7lF-ms-4v5"/>
+                        <outlet property="playTimeLabel" destination="arc-1g-3CP" id="8Gu-uV-Pza"/>
+                        <outlet property="playerToolbox" destination="b60-F5-UgT" id="bnx-zY-YhD"/>
+                        <outlet property="playerToolboxConstraint" destination="H8F-Dr-u5m" id="AwH-Xc-6vN"/>
+                        <outlet property="playerView" destination="Sid-Ff-mRw" id="Vgh-Yz-OF3"/>
+                        <outlet property="voiceButton" destination="S3H-Nc-Lu9" id="45a-H5-Qtf"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="sE7-s6-W7M" userLabel="First Responder" sceneMemberID="firstResponder"/>
+                <tapGestureRecognizer id="QGi-M4-3ct">
+                    <connections>
+                        <action selector="showToolBar:" destination="Ziu-Is-xdi" id="lym-iO-6TQ"/>
+                    </connections>
+                </tapGestureRecognizer>
+            </objects>
+            <point key="canvasLocation" x="553.60000000000002" y="2107.6461769115444"/>
+        </scene>
+        <!--Device Upgrade View Controller-->
+        <scene sceneID="x4v-5X-mKn">
+            <objects>
+                <viewController id="B6I-K3-uvg" customClass="EZDeviceUpgradeViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="LBJ-sA-IBq"/>
+                        <viewControllerLayoutGuide type="bottom" id="HbW-AF-LH2"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="bNO-BS-VHb">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4ol-dw-GX9">
+                                <rect key="frame" x="45" y="260" width="285" height="39"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="285" id="ZIE-YP-8dt"/>
+                                    <constraint firstAttribute="height" constant="39" id="t3Q-fl-sHA"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                <state key="normal" title="鏇存柊" backgroundImage="blue_button"/>
+                                <connections>
+                                    <action selector="upgradeDevice:" destination="B6I-K3-uvg" eventType="touchUpInside" id="BIP-1D-tq7"/>
+                                </connections>
+                            </button>
+                            <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="ex5-eL-x0h">
+                                <rect key="frame" x="0.0" y="80" width="375" height="150"/>
+                                <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="150" id="azy-6S-UKf"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
+                            </textView>
+                            <progressView hidden="YES" opaque="NO" contentMode="scaleToFill" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="jcN-yM-fWF">
+                                <rect key="frame" x="20" y="313" width="335" height="4"/>
+                            </progressView>
+                            <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="姝e湪鏇存柊..." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ckd-hd-wtP">
+                                <rect key="frame" x="20" y="269" width="335" height="21"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="21" id="hMV-z6-oh2"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                        </subviews>
+                        <color key="backgroundColor" red="0.94117647059999998" green="0.94117647059999998" blue="0.94509803920000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstItem="ex5-eL-x0h" firstAttribute="leading" secondItem="bNO-BS-VHb" secondAttribute="leading" id="5Sx-wr-AcX"/>
+                            <constraint firstItem="ckd-hd-wtP" firstAttribute="top" secondItem="ex5-eL-x0h" secondAttribute="bottom" constant="39" id="9mP-Jg-Ds0"/>
+                            <constraint firstItem="jcN-yM-fWF" firstAttribute="leading" secondItem="bNO-BS-VHb" secondAttribute="leading" constant="20" id="DFY-8x-HRt"/>
+                            <constraint firstItem="jcN-yM-fWF" firstAttribute="top" secondItem="4ol-dw-GX9" secondAttribute="bottom" constant="14" id="DHs-Sa-MNF"/>
+                            <constraint firstItem="4ol-dw-GX9" firstAttribute="centerX" secondItem="bNO-BS-VHb" secondAttribute="centerX" id="G2S-Ej-ErK"/>
+                            <constraint firstAttribute="trailing" secondItem="ckd-hd-wtP" secondAttribute="trailing" constant="20" id="OUP-EG-GSy"/>
+                            <constraint firstItem="ckd-hd-wtP" firstAttribute="leading" secondItem="bNO-BS-VHb" secondAttribute="leading" constant="20" id="g9b-J7-KvP"/>
+                            <constraint firstItem="ex5-eL-x0h" firstAttribute="top" secondItem="LBJ-sA-IBq" secondAttribute="bottom" constant="36" id="lyI-yt-mFw"/>
+                            <constraint firstItem="4ol-dw-GX9" firstAttribute="top" secondItem="ex5-eL-x0h" secondAttribute="bottom" constant="30" id="oLN-EW-9zt"/>
+                            <constraint firstAttribute="trailing" secondItem="ex5-eL-x0h" secondAttribute="trailing" id="oOW-Rf-Icj"/>
+                            <constraint firstAttribute="trailing" secondItem="jcN-yM-fWF" secondAttribute="trailing" constant="20" id="tfs-Fk-EiN"/>
+                        </constraints>
+                    </view>
+                    <navigationItem key="navigationItem" id="wlY-lF-sum"/>
+                    <connections>
+                        <outlet property="upgradeButton" destination="4ol-dw-GX9" id="ttR-xM-ZmO"/>
+                        <outlet property="upgradeLabel" destination="ckd-hd-wtP" id="PYH-15-im8"/>
+                        <outlet property="upgradeProgressView" destination="jcN-yM-fWF" id="zD6-zt-VNu"/>
+                        <outlet property="upgradeTextView" destination="ex5-eL-x0h" id="zSk-G2-jlt"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="kWd-Kx-WD6" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="3920" y="612.59370314842579"/>
+        </scene>
+    </scenes>
+    <inferredMetricsTieBreakers>
+        <segue reference="Qls-Y0-o2u"/>
+        <segue reference="X3Q-o5-p8V"/>
+        <segue reference="9Tu-UR-Cms"/>
+        <segue reference="vdt-wN-aOY"/>
+    </inferredMetricsTieBreakers>
+    <color key="tintColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+    <resources>
+        <image name="StreamStudio" width="24" height="24"/>
+        <image name="StreamStudio-2" width="24" height="24"/>
+        <image name="blue_button" width="285" height="39"/>
+        <image name="blue_button_sel" width="285" height="39"/>
+        <image name="chuanshujilu-" width="24" height="24"/>
+        <image name="chuanshujilu--2" width="24" height="24"/>
+        <image name="cloud" width="32" height="32"/>
+        <image name="duijiangji" width="39" height="39"/>
+        <image name="icon_download_fill" width="20" height="20"/>
+        <image name="large_back_btn" width="10" height="19"/>
+        <image name="logo" width="210" height="94"/>
+        <image name="message" width="39" height="39"/>
+        <image name="no_message" width="94" height="94"/>
+        <image name="no_video" width="94" height="94"/>
+        <image name="offline" width="28" height="28"/>
+        <image name="orange_button" width="285" height="39"/>
+        <image name="orange_button_sel" width="285" height="39"/>
+        <image name="picture_bg" width="61" height="93"/>
+        <image name="play" width="54" height="54"/>
+        <image name="play_close" width="50" height="50"/>
+        <image name="play_close_sel" width="50" height="50"/>
+        <image name="play_rate" width="18.5" height="18.5"/>
+        <image name="play_sel" width="54" height="54"/>
+        <image name="playback" width="39" height="39"/>
+        <image name="preview_barrel" width="65" height="65"/>
+        <image name="preview_barrel_dis" width="65" height="65"/>
+        <image name="preview_barrel_sel" width="65" height="65"/>
+        <image name="preview_enlarge" width="37" height="37"/>
+        <image name="preview_enlarge_btn_sel" width="37" height="37"/>
+        <image name="preview_play_btn" width="37" height="37"/>
+        <image name="preview_play_btn_sel" width="37" height="37"/>
+        <image name="preview_recording" width="65" height="65"/>
+        <image name="preview_recording_dis" width="65" height="65"/>
+        <image name="preview_recording_sel" width="65" height="65"/>
+        <image name="preview_screenshot" width="65" height="65"/>
+        <image name="preview_screenshot_dis" width="65" height="65"/>
+        <image name="preview_screenshot_sel" width="65" height="65"/>
+        <image name="preview_talkback" width="65" height="65"/>
+        <image name="preview_talkback_dis" width="65" height="65"/>
+        <image name="preview_talkback_sel" width="65" height="65"/>
+        <image name="preview_unvoice_btn" width="37" height="37"/>
+        <image name="preview_voice_btn" width="37" height="37"/>
+        <image name="preview_voice_btn_sel" width="37" height="37"/>
+        <image name="ptz_bg" width="154" height="154"/>
+        <image name="setup" width="39" height="39"/>
+        <image name="spkImg" width="155" height="155"/>
+        <image name="upgrade" width="45" height="21"/>
+        <image name="wifi_bg" width="320" height="450"/>
+        <systemColor name="darkTextColor">
+            <color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+        <systemColor name="systemGrayColor">
+            <color red="0.55686274509803924" green="0.55686274509803924" blue="0.57647058823529407" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+        </systemColor>
+        <systemColor name="systemRedColor">
+            <color red="1" green="0.23137254901960785" blue="0.18823529411764706" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+        </systemColor>
+    </resources>
+</document>
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/EZOpenSDKFramework b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/EZOpenSDKFramework
new file mode 100755
index 0000000..c29f125
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/EZOpenSDKFramework
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZAPDevInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZAPDevInfo.h
new file mode 100644
index 0000000..d1b5e38
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZAPDevInfo.h
@@ -0,0 +1,23 @@
+//
+//  EZAPDevInfo.h
+//  EZWiFiConfigSDK
+//
+//  Created by yuqian on 2020/7/28.
+//  Copyright 漏 2020 com.ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZAPDevInfo : NSObject
+
+@property (nonatomic, copy) NSString *apVersion;//鐗堟湰锛屽綋鍓峚p鐗堟湰1.0
+@property (nonatomic, copy) NSString *devSubserial;//璁惧搴忓垪鍙凤紝鏈�澶�64
+@property (nonatomic, copy) NSString *devType;//璁惧鍨嬪彿锛屾渶澶�64
+@property (nonatomic, copy) NSString *devFirmwareversion;//璁惧鍥轰欢鐗堟湰鍙凤紝鏈�澶�64
+@property (nonatomic, copy) NSString *macAddr;//璁惧mac鍦板潃
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZAccessToken.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZAccessToken.h
new file mode 100644
index 0000000..21379c3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZAccessToken.h
@@ -0,0 +1,19 @@
+//
+//  EZAccessToken.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/10/19.
+//  Copyright 漏 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓鸿悿鐭冲紑鏀惧钩鍙版巿鏉冪櫥褰曚互鍚庣殑鍑瘉淇℃伅
+@interface EZAccessToken : NSObject
+
+/// accessToken 鐧诲綍鍑瘉
+@property (nonatomic, copy) NSString *accessToken;
+/// accessToken杩囨湡鐨勬椂闂寸偣,鐩稿浜�1970骞寸殑姣鏁�
+@property (nonatomic, assign) NSInteger expire;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZAlarmInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZAlarmInfo.h
new file mode 100644
index 0000000..9e763ef
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZAlarmInfo.h
@@ -0,0 +1,60 @@
+//
+//  EZAlarmInfo.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/9/16.
+//  Copyright (c) 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓哄憡璀︿俊鎭璞�
+@interface EZAlarmInfo : NSObject
+
+/// 鍛婅ID
+@property (nonatomic, copy) NSString *alarmId;
+/// 璁惧搴忓垪鍙�
+@property (nonatomic, copy) NSString *deviceSerial;
+/// 閫氶亾鍙�
+@property (nonatomic) NSInteger cameraNo;
+/// 鍛婅鍚嶇О
+@property (nonatomic, copy) NSString *alarmName;
+/// 鍛婅鍥剧墖
+@property (nonatomic, copy) NSString *alarmPicUrl;
+/// 鍛婅寮�濮嬫椂闂�
+@property (nonatomic, strong) NSDate *alarmStartTime;
+/// 鍛婅绫诲瀷
+@property (nonatomic) NSInteger alarmType;
+/// 鏄惁鍔犲瘑
+//@property (nonatomic) BOOL isEncrypt;
+
+
+/// 鍛婅鍥剧墖鍔犲瘑淇℃伅 crypt 0-涓嶇‘瀹� 1-璁惧鍔犲瘑 2-骞冲彴鍔犲瘑
+/// 濡傛灉鏄�2锛岃〃鏄庢槸骞冲彴鍔犲瘑鐨勫浘鐗囷紝璇蜂娇鐢ㄤ笅闈㈢殑checksum浣滀负瑙e瘑绉橀挜瑙e瘑鍥剧墖
+/// 濡傛灉鏄�1锛岃〃鏄庢槸璁惧鍔犲瘑鐨勫浘鐗囷紝璇蜂娇鐢ㄨ澶囩殑楠岃瘉鐮佷綔涓鸿В瀵嗙閽ヨВ瀵嗗浘鐗�
+/// 濡傛灉鏄�0锛岃〃鏄庢湭鐭ョ殑鍔犲瘑淇℃伅锛岃閫氳繃涓婇潰鎶ヨ鍥剧墖URL锛坅larmPicUrl锛変腑鐨� isEncrypted 瀛楁锛屽垽鏂浘鐗囨槸 0锛氭湭鍔犲瘑 1锛氳澶囧姞瀵�
+/// 鎶ヨ鍥剧墖鐨刄RL绀轰緥锛�
+/// https://whpic.ys7.com:8009/HIK_1447836214_458BEBDAE4AB6a6f_525400286893421023815?isEncrypted=1&isCloudStored=0
+/// https://www.ys7.com:9090/api/cloud?method=download&fid=5ed92258-8e0f-11e5-8000-c19249a52dcf&deviceSerialNo=504242549&isEncrypted=0&isCloudStored=1
+@property (nonatomic) NSInteger crypt;
+/// 鍛婅鍥剧墖骞冲彴鍔犲瘑鏃剁殑瀵嗛挜
+@property (nonatomic, copy) NSString *checksum;
+/// 鏄惁宸茶
+@property (nonatomic) BOOL isRead;
+/// 瀛樺偍绫诲瀷锛�0-鏃犲瓨鍌紝1-钀ょ煶锛�2-鐧惧害锛�4-sd鍗″瓨鍌紝5-钀ょ煶鍜宻d鍗★紝6-鐧惧害鍜宻d鍗�
+@property (nonatomic) NSInteger recState;
+/// 鍛婅褰曞儚缁撴潫鏃堕棿鏃堕棿寤跺悗鍋忕Щ閲忥紝閫氳繃alarmStartTime鍔犱笂寤跺悗鍋忕Щ閲忚幏寰楀憡璀﹀綍鍍忕殑鍏蜂綋缁撴潫鏃堕棿
+@property (nonatomic) NSInteger delayTime;
+/// 鍛婅褰曞儚寮�濮嬫椂闂存彁鍓嶅亸绉婚噺锛岄�氳繃alarmStartTime鍑忓幓鎻愬墠鍋忕Щ閲忚幏寰楀憡璀﹀綍鍍忕殑鍏蜂綋寮�濮嬫椂闂�
+@property (nonatomic) NSInteger preTime;
+/// 璁惧鍚嶇О
+@property (nonatomic, copy) NSString *deviceName;
+/// 璁惧澶х被
+@property (nonatomic, copy) NSString *category;
+
+/// 4530 鎵╁睍瀛楁
+@property (nonatomic, copy) NSString *customerType;
+/// 4530 鎵╁睍瀛楁
+@property (nonatomic, copy) NSString *customerInfo;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZAreaInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZAreaInfo.h
new file mode 100644
index 0000000..ebbd210
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZAreaInfo.h
@@ -0,0 +1,19 @@
+//
+//  EZAreaInfo.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 16/7/19.
+//  Copyright 漏 2016骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ゅ璞′负鍖哄煙瀵硅薄锛屾捣澶栧紑鏀惧钩鍙颁笓鐢ㄥ璞�
+@interface EZAreaInfo : NSObject
+
+@property (nonatomic) NSInteger id; ///鍖哄煙ID
+@property (nonatomic, copy) NSString *name; ///鍖哄煙鍚嶇О
+@property (nonatomic, copy) NSString *region; ///鍖哄煙鏍囪瘑
+@property (nonatomic) NSInteger telephoneCode; ///鍖哄煙鎵嬫満鍥介檯鍙�
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZBAVParam.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZBAVParam.h
new file mode 100644
index 0000000..b3d1e94
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZBAVParam.h
@@ -0,0 +1,196 @@
+//
+//  EZBAVParam.h
+//  EZBAVClient
+//
+//  Created by kanhaiping on 2018/6/27.
+//  Copyright 漏 2018骞� hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+
+/*
+ typedef struct SBavDevInfo
+ {
+     YS_INT8            m_szDevSerial[STREAM_DEV_SERIAL_LEN + 1];                //蹇呭~    璁惧搴忓垪鍙�
+     YS_UINT32        m_sChannel;                                                //蹇呭~    閫氶亾鍙�
+     YS_INT16        m_sDevStreamType;                                        //蹇呭~    璁惧涓诲瓙鐮佺被鍨�
+     YS_INT8            m_szAuthToken[STREAM_TOKEN_LEN + 1];                    //蹇呭~    璁よ瘉token
+ }SBavDevInfo;
+ */
+
+@interface EZBAVDevInfo : NSObject
+@property (nonatomic, strong) NSString *serial; /**< 蹇呭~    璁惧搴忓垪鍙� */
+@property (nonatomic, assign) int32_t m_iChannel;//蹇呭~    閫氶亾鍙�
+@property (nonatomic, assign) int32_t m_iDevStreamType;//蹇呭~    璁惧涓诲瓙鐮佺被鍨�
+@property (nonatomic, strong) NSString *m_szAuthToken; /**< 蹇呭~    璁よ瘉token */
+@end
+/*
+ typedef struct
+ {
+     YS_UINT32        m_iRoomId;                                                //蹇呭~    闇�瑕佸姞鍏ユ埧闂村彿
+     YS_UINT32        m_uClientId;                                            //蹇呭~    鍔犲叆鏂筩lientId
+     YS_INT8            m_szCustomId[CUSTOMID_LEN + 1];                            //閫夋嫨    鍔犲叆鏂硅嚜瀹氫箟Id
+     YS_INT8            m_szPassword[STREAM_TOKEN_LEN + 1];                        //蹇呭~    鎴块棿瀵嗙爜
+     YS_UINT8        m_iCltType;                                                //蹇呭~    瀹㈡埛绔被鍨�
+     YS_UINT16        m_iStsPort;                                                //蹇呭~    杞彂鏈嶅姟绔彛
+     YS_INT8            m_szStsAddr[CLIENT_STREAM_SVR_ADDR_LEN + 1];            //蹇呭~    杞彂鏈嶅姟鍦板潃
+     YS_UINT16        m_iVcPort;                                                //蹇呭~    浼氭帶鏈嶅姟绔彛
+     YS_INT8            m_szVcAddr[CLIENT_STREAM_SVR_ADDR_LEN + 1];                //蹇呭~    浼氭帶鏈嶅姟鍦板潃
+     YS_INT8            m_szFilePath[FLIEPATH + 1];                                //閫夋嫨  鍐欐枃浠剁殑璺緞
+     YS_INT8            m_szExtensionParas[CLIENT_STREAM_EXTENSION_LEN + 1];    //閫夋嫨    鎵╁睍瀛楁淇℃伅
+ }EZConferenceParam;
+ */
+@interface EZRTCJoinParam : NSObject
+@property (nonatomic, assign) int32_t m_iRoomId; /**<蹇呭~    闇�瑕佸姞鍏ユ埧闂村彿 */
+@property (nonatomic, assign) int32_t m_uClientId; /**< 蹇呭~    鍔犲叆鏂筩lientId */
+@property (nonatomic, strong) NSString *m_szCustomId;  /**< 閫夋嫨    鍔犲叆鏂硅嚜瀹氫箟Id */
+@property (nonatomic, strong) NSString *m_szPassword;  /**< 閫夋嫨     鎴块棿瀵嗙爜 */
+@property (nonatomic, assign) int32_t m_iCltType; /**< 蹇呭~    瀹㈡埛绔被鍨� */
+@property (nonatomic, strong) NSString *m_szVcAddr;//蹇呭~    瑙嗛浼氳蹇呭~ 浼氭帶鏈嶅姟鍦板潃
+@property (nonatomic, assign) int32_t m_iVcPort;//蹇呭~    瑙嗛浼氳蹇呭~ 浼氭帶鏈嶅姟绔痥鍙�
+@property (nonatomic, strong) NSString *m_szStsAddr; /**< 蹇呭~    杞彂鏈嶅姟鍦板潃 */
+@property (nonatomic, assign) int32_t m_iStsPort; /**< 蹇呭~    杞彂鏈嶅姟绔彛 */
+@property (nonatomic, strong) NSString *m_szExtensionParas; /**< 閫夋嫨    鎵╁睍瀛楁淇℃伅 */
+
+@end
+
+
+@interface EZBAVParam : NSObject
+
+@property (nonatomic, assign) int32_t m_iCltRole; /**< 蹇呭~    0 鍙戣捣 1 鎺ュ彈 鍙戣捣绔~鍐�0 鎺ュ彈绔~鍐�1 鎷掔粷涓�2 */
+@property (nonatomic, assign) int32_t m_iStreamType;/**< 蹇呴��    0 闊宠棰� 1 瀵硅 2 浼氳*/
+//@property (nonatomic, assign) int32_t m_szIsNpq;/**< 閫夋嫨  0 涓嶈蛋NPQ锛岃蛋TCP 1 鏄疦PQ锛岃蛋UDP */
+@property (nonatomic, assign) int32_t m_iCltType; /**< 蹇呭~    瀹㈡埛绔被鍨� */
+
+@property (nonatomic, strong) NSString *m_szVcAddr;//蹇呭~    瑙嗛浼氳蹇呭~ 浼氭帶鏈嶅姟鍦板潃
+@property (nonatomic, assign) int32_t m_iVcPort;//蹇呭~    瑙嗛浼氳蹇呭~ 浼氭帶鏈嶅姟绔痥鍙�
+@property (nonatomic, strong) NSString *m_szStsAddr; /**< 蹇呭~    杞彂鏈嶅姟鍦板潃 */
+@property (nonatomic, assign) int32_t m_iStsPort; /**< 蹇呭~    杞彂鏈嶅姟绔彛 */
+
+@property (nonatomic, assign) int32_t m_iRoomId; /**< 閫夋嫨    闇�瑕佸姞鍏ユ埧闂村彿锛屽彧鏈夋帴鍙楃闇�瑕佸~鍐� */
+@property (nonatomic, assign) int32_t m_iClientId; //閫夊~  鍙戣捣or鍔犲叆鑰呯殑id
+@property (nonatomic, strong) NSString *m_szSelfId;  /**< 蹇呭~  鏍囪瘑Id */
+@property (nonatomic, assign) int32_t m_iReason; /**< 閫夋嫨  鍘熷洜 鎷掓帴鎺ュ惉101 鏃犱汉鎺ュ惉102 */
+
+//@property (nonatomic, assign) int32_t m_iMaxBitrate;/**< 蹇呭~    鐮佺巼鍙樺寲鑼冨洿鐨勬渶澶у�� */
+//
+//@property (nonatomic, assign) int32_t m_iMinBitrate;/**< 蹇呭~    鐮佺巼鍙樺寲鑼冨洿鐨勬渶灏忓�� */
+
+//@property (nonatomic, assign) int32_t m_iType;/**< 閫夋嫨  鍙傝�傿AV_QOS_TYPE */
+//
+//@property (nonatomic, assign) int32_t m_iVideo;/**< 閫夋嫨  鏄惁寮�鍚棰慟os 1 寮�鍚� 0 涓嶅紑鍚� */
+//
+//@property (nonatomic, assign) int32_t m_iAudio;/**< 閫夋嫨  鏄惁寮�鍚煶棰慟os 1 寮�鍚� 0 涓嶅紑鍚� */
+
+@property (nonatomic, assign) int32_t m_iAuthType; /**< 蹇呭~    璁よ瘉鏂瑰紡 */
+@property (nonatomic, strong) NSString *m_szAuthToken; /**< 蹇呭~    璁よ瘉token */
+
+
+
+@property (nonatomic, assign) int32_t m_iOtherCltType; /**< 閫夋嫨    鍙湁瀵圭鏄墜琛ㄧ闇�濉啓 */
+@property (nonatomic, strong) NSString *m_szOterId; /**< 閫夋嫨    鍙湁瀵圭鏄墜琛ㄧ闇�濉啓 */
+@property (nonatomic, assign) int32_t m_iChannel;//閫夊~  涓夋柟闊宠棰戞椂锛孖PC璁惧闇�瑕佸~鍐�
+@property (nonatomic, assign) int32_t m_iDevStreamType;//閫夊~  璁惧涓诲瓙鐮佹祦
+
+@property (nonatomic, strong) NSString *m_szExtensionParas; /**< 閫夋嫨    鎵╁睍瀛楁淇℃伅 */
+
+
+@end
+
+
+
+/// 涓庝細鑰呬俊鎭�
+@interface EZRTCParticipantsInfo : NSObject
+@property (nonatomic, assign) uint32_t m_uRoomId;
+@property (nonatomic, assign) uint32_t m_uClientId;
+@property (nonatomic, strong) NSString *m_sCustomId;
+@property (nonatomic, strong) NSString *m_szUserName;
+@property (nonatomic, assign) uint8_t m_iCltType; //鐢ㄤ互鍖哄垎鏄惁鏄澶� 111:璁惧 
+@property (nonatomic, assign) int8_t audioState;// 澹伴煶鍚敤鐘舵�� 0-鍏抽棴 1-鍚敤
+@property (nonatomic, assign) int8_t videoState;// 瑙嗛鍚敤鐘舵�� 0-鍏抽棴 1-涓绘祦 5-涓诲瓙娴�
+@property (nonatomic, assign) int8_t shareState;// 灞忓箷鍏变韩鍚敤鐘舵�� 0-鍏抽棴 1-鍚敤
+@property (nonatomic, assign) int8_t upNetState;//缃戠粶鐘舵��
+@property (nonatomic, assign) int8_t downNetState;//缃戠粶鐘舵��
+
+@end
+
+
+@interface EZRTCParticipantVolume : NSObject
+@property (nonatomic, assign) uint32_t m_uClientId;
+@property (nonatomic, strong) NSString *m_sCustomId;
+@property (nonatomic, assign) uint8_t m_sVolume;    //闊抽噺寮哄害0-10 10涓烘渶寮� 0涓烘渶寮�
+@end
+
+
+@interface EZRTCStatistic : NSObject
+@property (nonatomic, assign) int32_t type;//0锛氬瓙琛� 1锛氫富琛�
+@property (nonatomic, strong) NSDictionary *statisticInfo;
+@end
+
+///鏈湴鐨勯煶瑙嗛缁熻
+@interface EZRTCLocalStatistics : NSObject
+///瑙嗛鎸囨爣鍙傛暟
+@property (nonatomic, assign) uint32_t videoSentBitrate; //瑙嗛浼犺緭鐮佺巼(涓婅)
+@property (nonatomic, assign) uint32_t videoSentFrameRate; //甯х巼澶у皬
+@property (nonatomic, assign) uint16_t videoPacketLossRate; //瑙嗛涓㈠寘鐜�
+@property (nonatomic, assign) uint16_t videoStreamType; //娴佺被鍨�
+///闊抽鎸囨爣鍙傛暟
+@property (nonatomic, assign) uint32_t audioSentBitrate;//闊抽浼犺緭鐮佺巼
+@property (nonatomic, assign) uint16_t audioPacketLossRate;//闊抽涓㈠寘鐜�
+@end
+
+///杩滅鐨勯煶瑙嗛缁熻
+@interface  EZRTCRemoteStatistics : NSObject
+///瑙嗛鎸囨爣鍙傛暟
+@property (nonatomic, assign) uint32_t videoClientId; //杩滅瑙嗛clientId
+@property (nonatomic, assign) uint32_t videoReceivedBitrate;//杩滅瑙嗛浼犺緭鐮佺巼锛堜笅琛岋級
+@property (nonatomic, assign) uint32_t videoReceivedFrameRate;//杩滅甯х巼澶у皬
+@property (nonatomic, assign) uint16_t videoPacketLossRate;//杩滅瑙嗛涓㈠寘鐜�(涓嬭)
+@property (nonatomic, assign) uint16_t videoTotalFrozenTime;//杩滅瑙嗛鎬荤殑鍗¢】鏃堕暱
+@property (nonatomic, assign) uint16_t videoFrozenRate; //杩滅瑙嗛鍗¢】姣�
+@property (nonatomic, assign) uint16_t streamType; //杩滅娴佺被鍨�
+///闊抽鎸囨爣鍙傛暟
+@property (nonatomic, assign) uint32_t audioClientId; //杩滅闊抽clientId
+@property (nonatomic, assign) uint32_t audioReceivedBitrate;//杩滅闊抽浼犺緭鐮佺巼锛堜笅琛岋級
+@property (nonatomic, assign) uint16_t audioPacketLossRate;//杩滅闊抽涓㈠寘鐜�(涓嬭)
+@property (nonatomic, assign) uint16_t audioTotalFrozenTime;//杩滅闊抽鎬荤殑鍗¢】鏃堕暱
+@property (nonatomic, assign) uint16_t audioFrozenRate; //杩滅闊抽鍗¢】姣�
+
+@end
+
+@interface EZRTCVideoSize : NSObject
+
+@property (nonatomic, assign) int width;//瀹�
+@property (nonatomic, assign) int height;//楂�
+
+@end
+
+extern int32_t const EZBAVMessageRoomCreated;
+extern int32_t const EZBAVMessagePeerEnteredRoom;
+extern int32_t const EZBAVMessagePeerLeaveRoom;
+extern int32_t const EZBAVMessageStartInputData;
+//extern int32_t const EZBAVMessageOtherDisconnect;
+extern int32_t const EZBAVMessageTransferData;
+//extern int32_t const EZBAVMessageClientInfo;//鍏朵粬涓庝細瀹㈡埛绔俊鎭�
+extern int32_t const EZBAVMessageClientVolume;//鍏朵粬涓庝細瀹㈡埛绔煶閲�
+extern int32_t const EZBAVMessageClientAudioAvailable;
+extern int32_t const EZBAVMessageClientVideoAvailable;
+extern int32_t const EZBAVMessageNetworkQuality;
+extern int32_t const EZBAVMessageClientShareAvailable;
+extern int32_t const EZBAVMessageJoinRoomOK;
+extern int32_t const EZBAVMessageForcedQuit;
+extern int32_t const EZBAVMessageStatistic;
+
+extern int32_t const EZBAVForcedQuitReasonRepeatJoin;//宸插湪鍏朵粬鍦版柟鍔犲叆鎴块棿
+extern int32_t const EZBAVForcedQuitReasonMovedOut;//琚鐞嗗憳绉诲嚭鎴块棿
+extern int32_t const EZBAVForcedQuitReasonRoomDissolved;//鎴块棿瑙f暎
+
+extern int32_t const  EZBAVMessageLocalVideoStats;//缁熻鏈湴瑙嗛瀹炴椂鏁版嵁
+extern int32_t const  EZBAVMessageLocalAudioStats;//缁熻鏈湴闊抽瀹炴椂鏁版嵁
+extern int32_t const  EZBAVMessageRemoteVideoStats;//缁熻杩滅瑙嗛瀹炴椂鏁版嵁
+extern int32_t const  EZBAVMessageRemoteAudioStats;//缁熻杩滅闊抽瀹炴椂鏁版嵁
+
+
+
+typedef void(^EZAudioOpenResultBlock)(NSInteger ret);
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZCameraInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZCameraInfo.h
new file mode 100644
index 0000000..9054b1e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZCameraInfo.h
@@ -0,0 +1,35 @@
+//
+//  EZCameraInfo.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/9/15.
+//  Copyright (c) 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓洪�氶亾淇℃伅瀵硅薄
+@interface EZCameraInfo : NSObject
+
+/// 鎽勫儚澶村悕绉�
+@property (nonatomic, copy) NSString *cameraName;
+/// 閫氶亾鍙�
+@property (nonatomic) NSInteger cameraNo;
+/// 璁惧搴忓垪鍙�
+@property (nonatomic, copy) NSString *deviceSerial;
+/// 鍒嗕韩鐘舵�侊細0銆佹湭鍒嗕韩锛�1銆佸垎浜墍鏈夎�咃紝2銆佸垎浜帴鍙楄�咃紙琛ㄧず姝ゆ憚鍍忓ご鏄埆浜哄垎浜粰鎴戠殑锛�
+@property (nonatomic) NSInteger isShared;
+/// 閫氶亾灏侀潰
+@property (nonatomic, copy) NSString *cameraCover;
+/// 瑙嗛璐ㄩ噺锛�0-娴佺晠锛�1-鍧囪 锛�2-楂樻竻锛�3-瓒呮竻
+@property (nonatomic) NSInteger videoLevel;
+//鏉冮檺
+@property (nonatomic) NSInteger permission;
+/// 閫氶亾鏀寔鐨勬竻鏅板害淇℃伅鍒楄〃锛孍ZVideoQualityInfo瀵硅薄鍒楄〃銆�(/api/device/list 杩斿洖鐨�"videoQualityInfos" 鏈夎锛屼互/api/device/detail 鎺ュ彛杩斿洖涓哄噯)
+@property (nonatomic, strong) NSArray *videoQualityInfos;
+
+/// 璁惧鏄惁寮�鍚姞瀵�
+@property (nonatomic) BOOL isEncrypt;
+/// 璁惧鐘舵�侊紝1-鍦ㄧ嚎锛�2-涓嶅湪绾�
+@property (nonatomic) NSInteger status;
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZCloudRecordDownloadTask.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZCloudRecordDownloadTask.h
new file mode 100644
index 0000000..174ee40
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZCloudRecordDownloadTask.h
@@ -0,0 +1,34 @@
+//
+//  EZCloudRecordDownloadTask.h
+//  EZOpenSDK
+//
+//  Created by yuqian on 2019/7/2.
+//  Copyright 漏 2019 Ezviz. All rights reserved.
+//
+
+#import "EZRecordDownloadTask.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class EZCloudRecordFile;
+
+@interface EZCloudRecordDownloadTask : EZRecordDownloadTask
+
+/**
+ 浜戝瓨鍌ㄥ綍鍍忎笅杞戒换鍔″垵濮嬪寲銆�
+ 涓嬭浇鐨勫綍鍍忎负PS鏂囦欢锛屽闇�杞崲MP4锛岃鑷璋冪敤EZVideoTransformer绫荤殑杞皝瑁呮柟娉�
+ 
+ @param taskID 涓嬭浇浠诲姟鍞竴鏍囪瘑ID
+ @param recordFile 浜戝瓨鍌ㄥ綍鍍忔枃浠�
+ @param verifyCode 璁惧楠岃瘉鐮�
+ @param savePath 涓嬭浇瀛樺偍璺緞
+ @return 鍒濆鍖栨垚鍔熻繑鍥炲疄渚嬶紝澶辫触杩斿洖nil
+ */
+- (instancetype) initTaskWithID:(NSUInteger)taskID
+                cloudRecordFile:(EZCloudRecordFile *)recordFile
+                     verifyCode:(NSString *)verifyCode
+                       savePath:(NSString *)savePath;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZCloudRecordFile.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZCloudRecordFile.h
new file mode 100644
index 0000000..f8c693f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZCloudRecordFile.h
@@ -0,0 +1,36 @@
+//
+//  EZCloudFile.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/9/17.
+//  Copyright (c) 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓轰簯瀛樺偍褰曞儚鏂囦欢瀵硅薄
+@interface EZCloudRecordFile : NSObject
+
+/// 璁惧搴忓垪鍙�
+@property (nonatomic, copy) NSString *deviceSerial;
+/// 璁惧閫氶亾鍙�
+@property (nonatomic, assign) NSInteger cameraNo;
+/// 浜戝瓨鍌ㄥ綍鍍忔枃浠禝d
+@property (nonatomic, copy) NSString *fileId;
+/// 浜戝瓨鍌ㄥ綍鍍忔枃浠跺紑濮嬫椂闂�
+@property (nonatomic, strong) NSDate *startTime;
+/// 浜戝瓨鍌ㄥ綍鍍忔枃浠剁粨鏉熸椂闂�
+@property (nonatomic, strong) NSDate *stopTime;
+/// 浜戝瓨鍌ㄥ綍鍍忔埅鍥惧湴鍧�
+@property (nonatomic, copy) NSString *coverPic;
+/// 浜戝瓨鍌ㄥ綍鍍忎笅杞藉湴鍧�
+@property (nonatomic, copy) NSString *downloadPath;
+/// 浜戝瓨鍌ㄥ浘鐗囧姞瀵嗗瘑鐮侊紝濡傛灉鏄痆NSNull null]鎴栬�卬il鎸囬拡鍒欏浘鐗囦笉鍔犲瘑
+@property (nonatomic, copy) NSString *encryption;
+/// 鏂囦欢澶у皬
+@property (nonatomic, assign) NSUInteger fileSize;
+
+@property (nonatomic, assign) int32_t istorageVersion; //浜戝瓨鍌ㄧ被鍒�:1 鍗曟枃浠跺瓨鍌ㄦā寮忥紱2 杩炵画瀛樺偍妯″紡锛�3 寰呭畾
+@property (nonatomic, assign) int32_t videoType;//浜戝瓨鍌ㄥ綍鍍忕被鍨嬶紝榛樿涓�0锛岃〃绀轰笉灞炰簬浜戝瓨鍌ㄥ綍鍍�
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZConferenceClient.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZConferenceClient.h
new file mode 100644
index 0000000..43d478e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZConferenceClient.h
@@ -0,0 +1,238 @@
+//
+//  EZBAVClient.h
+//  EZBAVClient
+//
+//  Created by kanhaiping on 2018/6/26.
+//  Copyright 漏 2018骞� hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+#import "EZBAVParam.h"
+#import "EZRTCMediaSessionDefines.h"
+#import "EZVideoTalkView.h"
+
+
+
+@class EZConferenceClient;
+@class EZRTCCameraParam;
+@class EZRTCVideoEncodeParam;
+
+@protocol EZConferenceClientDelegate<NSObject>
+
+
+/// 閿欒鍥炶皟
+/// @param client client
+/// @param errorCode 鍑洪敊鐨勯敊璇爜
+- (void)bavClient:(EZConferenceClient *)client didReceivedError:(int32_t)errorCode;
+
+/**
+ 鍥炶皟娑堟伅
+
+ @param client client
+ @param messageCode 娑堟伅鐮� 鍙傝EZBAVMessage
+ @param msg 闄勫姞淇℃伅锛�
+    濡傛灉鏄疎ZBAVMessagePeerEnteredRoom锛宮sg鏄疎ZRTCParticipantsInfo瀵硅薄锛屼絾鏄彧鏈塵_uClientId銆乵_szUserName瀛楁鏈夋晥
+    濡傛灉鏄疎ZBAVMessagePeerLeaveRoom娑堟伅锛宮sg鏄疎ZRTCParticipantsInfo瀵硅薄锛屼絾鏄彧鏈塵_uClientId瀛楁鏈夋晥
+    濡傛灉鏄疎ZBAVMessageClientVolume娑堟伅锛宮sg鏄疎ZBAVParticipantVolume瀵硅薄
+    濡傛灉娑堟伅鏄� EZBAVMessageTransferData msg鏄� msg鏄瓧绗︿覆 @"瀹為檯鐨勯�忎紶娑堟伅"
+    濡傛灉娑堟伅鏄疎ZBAVMessageClientAudioAvailable锛宮sg鏄疎ZRTCParticipantsInfo瀵硅薄锛屼絾鏄彧鏈塵_uClientId鍜宎udioState瀛楁鏈夋晥
+    濡傛灉娑堟伅鏄疎ZBAVMessageClientVideoAvailable 锛宮sg鏄疎ZRTCParticipantsInfo瀵硅薄锛屼絾鏄彧鏈塵_uClientId鍜寁ideoState瀛楁鏈夋晥
+    濡傛灉娑堟伅鏄疎ZBAVMessageNetworkQuality 锛宮sg鏄疎ZRTCParticipantsInfo瀵硅薄锛屼絾鏄彧鏈塵_uClientId鍜宯etState瀛楁鏈夋晥
+    濡傛灉娑堟伅鏄疎ZBAVMessageJoinRoomOK 锛宮sg鏄痭il
+    濡傛灉娑堟伅鏄疎ZBAVMessageForcedQuit 锛宮sg鏄疦SNumber锛屾瘮濡侤(EZBAVForcedQuitReasonMovedOut)
+    濡傛灉娑堟伅鏄疎ZBAVMessageStatistic锛宮sg鏄疎ZRTCStatistic
+ 
+ */
+- (void)bavClient:(EZConferenceClient *)client didReceivedMessage:(int32_t)messageCode msg:(id)msg;
+
+@optional
+
+///**
+// 鍥炶皟娑堟伅 bavclient log鍥炶皟
+//
+// @param client client
+// @param msg 閫忎紶娑堟伅
+// */
+//- (void)bavClient:(EZVideoTalk *)client didReceivedBavClientLogMsg:(NSString*)msg;
+
+/**
+ 鏄剧ず鍥炶皟锛岄娆$敾闈㈠嚭鏉ヤ互鍙婂悗缁敾闈㈠昂瀵稿彂鐢熷彉鍖栨椂鍥炶皟
+
+ @param client client
+ @param width 鐢婚潰瀹藉害
+ @param height 鐢婚潰楂樺害
+ */
+- (void)bavClient:(EZConferenceClient *)client didDisplayWidth:(int32_t)width height:(int32_t)height ofRemoteClient:(int)clientID;
+
+/**
+ 鎾斁鍗¢】
+ 
+ @param client client
+ @param delayTime 鍗¢】鏃堕棿
+ */
+- (void)bavClient:(EZConferenceClient *)client playDelayTime:(int32_t)delayTime ofRemoteClient:(int)clientID;
+
+/**
+ 鎾斁鍗¢】缁熻
+ 
+ @param client client
+ @param delayTimeStat 鍗¢】鏃堕棿
+ */
+- (void)bavClient:(EZConferenceClient *)client playDelayTimeStatistics:(double)delayTimeStat ofRemoteClient:(int)clientID;
+
+/**
+ 鏈湴瑙嗛鏁版嵁鍥炶皟
+ 
+ @param localVideoStatistics 瑙嗛鐩稿叧鍙傛暟
+ @param width    瀹藉害
+ @param height  楂樺害
+ */
+- (void)onLocalVideoStats:(EZRTCLocalStatistics *)localVideoStatistics width:(int)width height:(int)height;
+
+/**
+ 鏈湴闊抽鏁版嵁鍥炶皟
+ 
+ @param localAudioStatistics 闊抽鐩稿叧鍙傛暟
+ */
+- (void)onLocalAudioStats:(EZRTCLocalStatistics *)localAudioStatistics;
+
+/**
+ 杩滅瑙嗛鏁版嵁鍥炶皟
+ 
+ @param remoteVideoStatistics 瑙嗛鐩稿叧鍙傛暟
+ @param width    瀹藉害
+ @param height  楂樺害
+ */
+- (void)onRemoteVideoStats:(EZRTCRemoteStatistics *)remoteVideoStatistics width:(int)width height:(int)height;
+
+/**
+ 杩滅闊抽鏁版嵁鍥炶皟
+ 
+ @param remoteAudioStatistics 闊抽鐩稿叧鍙傛暟
+ */
+- (void)onRemoteAudioStats:(EZRTCRemoteStatistics *)remoteAudioStatistics;
+
+
+@end
+
+@interface EZConferenceClient : NSObject
+
+@property (nonatomic, weak) id<EZConferenceClientDelegate> delegate;
+@property (nonatomic, assign, readonly) int32_t roomID;
+@property (nonatomic, assign, readonly) int32_t clientID;
+
+
+/**
+ 瀵硅鏃讹紝寮哄埗閲囩敤鎵0鍣ㄦ挱鏀惧0闊筹紝榛樿涓篩ES
+ */
+@property (nonatomic, assign) BOOL forceToSpeaker;
+
+
+/// 鍒濆鍖栬棰戦�氳瘽SDK瀵硅薄
+- (instancetype)init;
+
+/// 鍔犲叆浼氳锛堟柊鎺ュ彛锛�
+/// @param param 鍙傛暟
+- (NSInteger)enterRoom:(EZRTCJoinParam *)param;
+
+
+/// 閫�鍑轰細璁�
+- (NSInteger)exitRoom;
+
+
+/// 瑙f暎浼氳锛岃В鏁e悗锛屽叾浠栦笌浼氳�呬細鏀跺埌浼氳琚В鏁f秷鎭�
+- (void)dissolveRoom;
+
+/// 鏈湴鎽勫儚澶村紑鍚�/鍏抽棴鎺ュ彛
+/// @param enable 鏄惁寮�鍚憚鍍忓ご
+- (NSInteger)enableLocalVideo:(BOOL)enable;
+
+/// 璁剧疆鏈湴鐨勯瑙堢獥鍙�
+/// @param localWin 绐楀彛window
+- (void)setLocalView:(nullable EZVideoTalkView *)localWin;
+
+/// 鏈湴楹﹀厠椋庡紑鍚�/鍏抽棴鎺ュ彛
+/// @param enable 鏄惁寮�鍚害鍏嬮
+/// @param block 涓荤嚎绋嬪洖璋冪粨鏋�
+- (void)enableLocalAudio:(BOOL)enable withResultBlock:(EZAudioOpenResultBlock)block;
+
+/// 鏄惁寮�鍚緟娴侊紝杈呮祦鍒嗚鲸鐜囨洿浣庛�佺爜鐜囨洿灏�
+/// @param enable 鏄惁寮�鍚�
+/// @param encodeParam 缂栫爜鍙傛暟锛屽彲浠ヤ紶鍏il
+- (NSInteger)enableLocalSmallVideo:(BOOL)enable;
+
+
+/// 寮�鍚睆骞曞叡浜�
+/// @param name 鍏变韩鍚嶇О
+/// @param resultBlock 灞忓箷鍏变韩缁撴灉鍥炶皟
+/// @param didFinishBlock 灞忓箷鍏变韩缁撴潫鍥炶皟锛屽湪姝e父鐨勫睆骞曞叡浜粨鏉熺粨鏉熷悗鍥炶皟
+- (void)startScreenShareWithName:(NSString *)name
+                 withResultBlock:(EZScreenShareResultBlock)resultBlock
+                   andEndedBlock:(dispatch_block_t)didFinishBlock;
+
+
+/// 缁撴潫灞忓箷鍏变韩
+- (void)stopScreenShare;
+
+
+/// 璁剧疆杩滅▼绐楀彛锛�1.蹇呴』鍦ㄦ嬁鍒拌繙绔鎴风鍔犲叆鐨勬秷鎭悗璁剧疆锛�2.蹇呴』鍦ㄤ富绾跨▼璋冪敤
+/// @param window 鎾斁绐楀彛
+/// @param clientID 鍔犲叆鐨勫鎴风鐨処D
+/// @param streamType 1瑙嗛 4灏忔祦
+- (int32_t)setRemoteView:(nullable UIView *)window ofClient:(int32_t)clientID withStream:(NSInteger)streamType;
+
+/// 璁剧疆瑙傜湅灞忓箷鍏变韩鐨勭獥鍙�,蹇呴』鍦ㄤ富绾跨▼璋冪敤
+/// @param view 绐楀彛
+- (int32_t)setScreenShareView:(UIView *_Nullable)view;
+
+
+/// 閭�璇疯澶囧姞鍏ヤ細璁�
+/// @param dev 璁惧淇℃伅
+- (int32_t)inviteDev:(EZBAVDevInfo *_Nonnull)dev;
+
+
+/// 鍒囨崲瀵硅鏃朵娇鐢ㄧ殑鎽勫儚澶达紝榛樿閲囩敤鍓嶇疆 鍚屾鎺ュ彛
+/// @param backCameraSelected YES:閫夋嫨鍚庣疆锛孨O:閫夋嫨鍓嶇疆
+- (int32_t)switchCamera:(BOOL)backCameraSelected;
+
+
+- (EZRTCStatistic *_Nullable)getStatistic;
+
+#pragma 闄勫姞鎺ュ彛
+
+/// 寮�鍏充細璁腑鏌愪釜涓庝細鑰呯殑澹伴煶锛岄粯璁ゅ紑
+/// @param open YES:寮�锛孨O:鍏�
+- (int32_t)soundCtrl:(BOOL)open forClient:(int32_t)clientID;
+
+
+
+/// 寮傛鑾峰彇鏈湴鎶撳浘
+/// @param block 鎶撳浘鎴愬姛鍥炶皟锛屽け璐mage涓簄il
+//- (void)localScreenShotWithBlock:(void (^)(UIImage *image))block;
+
+/// 鑾峰彇杩滅鎶撳浘
+/// @param quality 鍘嬬缉璐ㄩ噺 0 ~ 100
+//- (UIImage *)remoteScreenShotWithQuality:(int)quality;
+
+/// 鏈湴褰曞埗
+/// @param path 鍐欏叆鐨勬矙鐩掕矾寰�
+- (BOOL)startLocalVideoRecordWithPath:(NSString *)path;
+
+/// 鍋滄鏈湴褰曞埗
+- (BOOL)stopLocalVideoRecord;
+
+/// 寮�濮嬭繙绔綍鍒� mp4
+/// @param path 鍐欏叆鐨勬矙鐩掕矾寰�
+- (BOOL)startRemoteVideoRecordWithPath:(NSString *)path  forClient:(int32_t)clientID;
+
+
+/// 鍋滄杩滅褰曞埗
+- (BOOL)stopRemoteVideoRecordForClient:(int32_t)clientID;
+
+
+/// 鍙戦�侀�忎紶娑堟伅鎺ュ彛锛屽悓姝ユ帴鍙o紝鍙兘鑰楁椂
+/// @param msg 娑堟伅鍐呭锛屾瘮濡俲son鏁版嵁
+- (int)sendTransferMsg:(NSString *)msg;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZConfigTokenInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZConfigTokenInfo.h
new file mode 100644
index 0000000..9b9a949
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZConfigTokenInfo.h
@@ -0,0 +1,21 @@
+//
+//  EZConfigTokenInfo.h
+//  EZWiFiConfigSDK
+//
+//  Created by yuqian on 2020/7/30.
+//  Copyright 漏 2020 com.ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZConfigTokenInfo : NSObject
+
+@property (nonatomic, copy) NSString *userId;
+@property (nonatomic, copy) NSString *token;
+@property (nonatomic, copy) NSString *lbsDomain;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZConstants.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZConstants.h
new file mode 100644
index 0000000..edc3b24
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZConstants.h
@@ -0,0 +1,222 @@
+//
+//  EZConstants.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 16/7/20.
+//  Copyright 漏 2016骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+//钀ょ煶寮�鏀惧钩鍙板鎵樻柟娉�
+@protocol EZOpenSDKDelegate <NSObject>
+
+@optional
+
+/**
+ 钀ょ煶鐧诲綍鏄惁鎴愬姛
+ 
+ @param result 鏄惁鎴愬姛
+ */
+- (void)ezvizLoginResult:(BOOL)result;
+
+@end
+
+/* EZOpenSDK鐨勯敊璇畾涔� */
+typedef NS_ENUM(NSInteger, EZErrorCode) {
+    /**
+     *  瀵硅閿欒鐮�
+     */
+    EZ_DEVICE_TTS_REQUEST_TIMEOUT = 360001,           //瀹㈡埛绔姹傝秴鏃�
+    EZ_DEVICE_TTS_TALKING_TIMEOUT = 360002,           //瀵硅鍙戣捣瓒呮椂
+    EZ_DEVICE_TTS_DEVICE_CONNECT_ERROR = 360003,      //TTS鐨勮澶囩鍙戠敓閿欒
+    EZ_DEVICE_TTS_INTER_ERROR = 360004,               //TTS鍐呴儴鍙戠敓閿欒
+    EZ_DEVICE_TTS_SEND_ERROR = 360005,                //瀹㈡埛绔彂閫佺殑娑堟伅閿欒
+    EZ_DEVICE_TTS_RECEIVE_ERROR = 360006,             //瀹㈡埛绔帴鏀跺彂鐢熼敊璇�
+    EZ_DEVICE_TTS_CLOSE_CONNECT = 360007,             //TTS鍏抽棴浜嗕笌瀹㈡埛绔殑杩炴帴
+    EZ_DEVICE_TTS_TALKING = 360010,                   //璁惧姝e湪瀵硅涓�
+    EZ_DEVICE_TTS_PRIVACY_PROTECT = 360013,           //璁惧寮�鍚簡闅愮淇濇姢
+    EZ_DEVICE_TTS_INIT_ERROR = 360102,                //TTS鍒濆鍖栧け璐�
+    
+    
+    /**
+     *  鍙栨祦閿欒鐮�
+     */
+    EZ_DEVICE_IS_PRIVACY_PROTECTING = 380011,         //璁惧闅愮淇濇姢涓�
+    EZ_DEVICE_CONNECT_COUNT_LIMIT = 380045,           //璁惧鐩磋繛鍙栨祦杩炴帴鏁伴噺杩囧ぇ
+    EZ_DEVICE_COMMAND_NOT_SUPPORT = 380047,           //璁惧涓嶆敮鎸佽鍛戒护
+    EZ_DEVICE_CAS_TALKING = 380077,                   //璁惧姝e湪瀵硅涓�
+    EZ_DEVICE_CAS_REC_ERROR = 380102,                 //鏁版嵁鎺ユ敹寮傚父
+    EZ_DEVICE_CAS_PARSE_ERROR = 380205,               //璁惧妫�娴嬪叆鍙傚紓甯�
+    EZ_PLAY_TIMEOUT = 380209,                         //缃戠粶杩炴帴瓒呮椂
+    EZ_DEVICE_TIMEOUT = 380212,                       //璁惧绔綉缁滆繛鎺ヨ秴鏃�
+    EZ_STREAM_CLIENT_TIMEOUT = 390038,                //鍚屾椂`390037`鎵嬫満缃戠粶寮曡捣鐨勫彇娴佽秴鏃�
+    EZ_STREAM_CLIENT_NOT_FIND_FILE = 395402,          //鍥炴斁鎵句笉鍒板綍鍍忔枃浠讹紝妫�鏌ヤ紶鍏ョ殑鍥炴斁鏂囦欢鏄惁姝g‘
+    EZ_STREAM_CLIENT_OFFLINE = 395404,                //璁惧涓嶅湪绾�
+    EZ_STREAM_CLIENT_TOKEN_INVALID = 395406,          //鍙栨祦token楠岃瘉澶辨晥
+    EZ_STREAM_CLIENT_PRIVACY_PROTECT = 395409,        //棰勮寮�鍚殣绉佷繚鎶�,鍙互鍦ㄨ悿鐭充簯APP涓叧闂�
+    EZ_STREAM_CLIENT_DEVICE_COUNT_LIMIT = 395410,     //璁惧杩炴帴鏁拌繃澶�,鏈夎繃澶氱殑缁堢姝e湪瀵硅璁惧杩涜鍙栨祦鎿嶄綔
+    EZ_STREAM_CLIENT_TOKEN_LIMIT  = 395411,           //token鏃犳潈闄�
+    EZ_STREAM_CLIENT_CAMERANO_ERROR = 395415,         //璁惧閫氶亾閿�
+    EZ_STREAM_CLIENT_TYPE_UNSUPPORT = 395451,         //璁惧涓嶆敮鎸佺殑鐮佹祦绫诲瀷
+    EZ_STREAM_CLIENT_CONNECT_SERVER_ERROR = 395452,   //璁惧杩炴帴棰勮娴佸獟浣撴湇鍔″櫒澶辫触
+    EZ_STREAM_CLIENT_SESSION_NOT_EXIST = 395454,      //浼氳瘽涓嶅瓨鍦�
+    EZ_STREAM_CLIENT_SAME_REQUEST = 395491,           //鐩稿悓璇锋眰姝e湪澶勭悊锛屾嫆缁濇湰娆″鐞�
+    EZ_STREAM_CLIENT_INNER_ERROR = 395500,            //娴佸獟浣撴湇鍔″櫒鍐呴儴澶勭悊閿欒
+    EZ_STREAM_CLIENT_NO_SOURCE = 395544,              //璁惧杩斿洖鏃犺棰戞簮
+    EZ_STREAM_CLIENT_VIDEO_OUT_SHARE_TIME = 395545,   //瑙嗛鍒嗕韩鏃堕棿宸茬粡缁撴潫
+    EZ_STREAM_CLIENT_LIMIT = 395546,                  //璁惧鍙栨祦鍙楀埌闄愬埗锛屽崌绾т紒涓氱増鍙斁寮�闄愬埗
+    EZ_STREAM_CLIENT_DEVICE_OUT_SHARE_TIME = 395600,  //鍒嗕韩璁惧涓嶅湪鍒嗕韩鏃堕棿鍐�
+    
+    /**
+     *  HTTP 閿欒鐮�
+     */
+    EZ_HTTPS_PARAM_ERROR = 110001,                    //璇锋眰鍙傛暟閿欒
+    EZ_HTTPS_ACCESS_TOKEN_INVALID = 110002,           //AccessToken鏃犳晥
+    EZ_HTTPS_ACCESS_TOKEN_EXPIRE = 110003,            //AccessToken杩囨湡
+    EZ_HTTPS_REGIST_USER_NOT_EXSIT = 110004,          //娉ㄥ唽鐢ㄦ埛涓嶅瓨鍦�
+    EZ_HTTPS_APPKEY_ERROR = 110005,                   //AppKey寮傚父
+    EZ_HTTPS_IP_LIMIT = 110006,                       //ip鍙楅檺
+    EZ_HTTPS_INVOKE_LIMIT = 110007,                   //璋冪敤娆℃暟杈惧埌涓婇檺
+    EZ_HTTPS_USER_BINDED = 110012,                    //绗笁鏂硅处鎴蜂笌钀ょ煶璐﹀彿宸茬粡缁戝畾
+    EZ_HTTPS_APPKEY_IS_NULL = 110017,                 //AppKey涓嶅瓨鍦�
+    EZ_HTTPS_APPKEY_NOT_MATCHED = 110018,             //AppKey涓嶅尮閰嶏紝璇锋鏌ユ湇鍔$璁剧疆鐨刟ppKey鏄惁鍜孲DK浣跨敤鐨刟ppKey涓�鑷�
+    EZ_HTTPS_CAMERA_NOT_EXISTS = 120001,              //閫氶亾涓嶅瓨鍦紝璇锋鏌ユ憚鍍忓ご璁惧鏄惁閲嶆柊娣诲姞杩�
+    EZ_HTTPS_DEVICE_NOT_EXISTS = 120002,              //璁惧涓嶅瓨鍦�
+    EZ_HTTPS_DEVICE_NETWORK_ANOMALY = 120006,         //缃戠粶寮傚父
+    EZ_HTTPS_DEVICE_OFFLINE = 120007,                 //璁惧涓嶅湪绾�
+    EZ_HTTPS_DEIVCE_RESPONSE_TIMEOUT = 120008,        //璁惧璇锋眰鍝嶅簲瓒呮椂寮傚父
+    EZ_HTTPS_DEVICE_VALICATECODE_ERROR = 120010,      //璁惧楠岃瘉鐮侀敊璇�
+    EZ_HTTPS_ILLEGAL_DEVICE_SERIAL = 120014,          //涓嶅悎娉曠殑搴忓垪鍙�
+    EZ_HTTPS_DEVICE_STORAGE_FORMATTING = 120016,      //璁惧姝e湪鏍煎紡鍖栫鐩�
+    EZ_HTTPS_DEVICE_ADDED_MYSELF = 120017,            //鍚宍120020`璁惧宸茬粡琚嚜宸辨坊鍔�
+    EZ_HTTPS_USER_NOT_OWN_THIS_DEVICE = 120018,       //璇ョ敤鎴蜂笉鎷ユ湁璇ヨ澶�
+    EZ_HTTPS_DEVICE_UNSUPPORT_CLOUD = 120019,         //璁惧涓嶆敮鎸佷簯瀛樺偍鏈嶅姟
+    EZ_HTTPS_DEVICE_ONLINE_ADDED = 120020,            //璁惧鍦ㄧ嚎锛岃鑷繁娣诲姞
+    EZ_HTTPS_DEVICE_ONLINE_NOT_ADDED = 120021,        //璁惧鍦ㄧ嚎锛屾湭琚敤鎴锋坊鍔�
+    EZ_HTTPS_DEVICE_ONLINE_IS_ADDED = 120022,         //璁惧鍦ㄧ嚎锛屽凡缁忚鍒殑鐢ㄦ埛娣诲姞
+    EZ_HTTPS_DEVICE_OFFLINE_NOT_ADDED = 120023,       //璁惧涓嶅湪绾匡紝鏈鐢ㄦ埛娣诲姞
+    EZ_HTTPS_DEVICE_OFFLINE_IS_ADDED = 120024,        //璁惧涓嶅湪绾匡紝宸茬粡琚埆鐨勭敤鎴锋坊鍔�
+    EZ_HTTPS_DEVICE_OFFLINE_IS_ADDED_MYSELF = 120029, //璁惧涓嶅湪绾匡紝浣嗘槸宸茬粡琚嚜宸辨坊鍔�
+    EZ_HTTPS_DEVICE_BUNDEL_STATUS_ON = 120031,        //鍚屾椂`106002`閿欒鐮佷篃鏄紝璁惧寮�鍚簡缁堢缁戝畾锛岃鍒拌悿鐭充簯瀹㈡埛绔叧闂粓绔粦瀹�
+    EZ_HTTPS_OPERATE_LEAVE_MSG_FAIL = 120202,         //鎿嶄綔鐣欒█娑堟伅澶辫触
+    EZ_HTTPS_SERVER_DATA_ERROR = 149999,              //鏁版嵁寮傚父
+    EZ_HTTPS_SERVER_ERROR = 150000,                   //鏈嶅姟鍣ㄥ紓甯�
+    EZ_HTTPS_CLOUD_DELETE_ALL_EXCEPT_LAST = 150002,   //浜戝瓨鍌ㄨ棰戝垹闄ゅ畬鎴愶紝闄や簡鏈�鍚庝竴涓湪褰曞埗鐨勮棰戞棤娉曞垹闄�
+    EZ_HTTPS_DEVICE_PTZ_NOT_SUPPORT = 160000,         //璁惧涓嶆敮鎸佷簯鍙版帶鍒�
+    EZ_HTTPS_DEVICE_PTZ_NO_PERMISSION = 160001,       //鐢ㄦ埛娌℃湁鏉冮檺鎿嶄綔浜戝彴鎺у埗
+    EZ_HTTPS_DEVICE_PTZ_UPPER_LIMIT = 160002,         //浜戝彴杈惧埌涓婇檺浣嶏紙椤堕儴锛�
+    EZ_HTTPS_DEVICE_PTZ_FLOOR_LIMIT = 160003,         //浜戝彴杈惧埌涓嬮檺浣嶏紙搴曢儴锛�
+    EZ_HTTPS_DEVICE_PTZ_LEFT_LIMIT = 160004,          //浜戝彴杈惧埌宸﹂檺浣嶏紙鏈�宸﹁竟锛�
+    EZ_HTTPS_DEVICE_PTZ_RIGHT_LIMIT = 160005,         //浜戝彴杈惧埌鍙抽檺浣嶏紙鏈�鍙宠竟锛�
+    EZ_HTTPS_DEVICE_PTZ_FAILED = 160006,              //浜戝彴鎿嶄綔澶辫触
+    EZ_HTTPS_DEVICE_PTZ_RESETING = 160009,            //浜戝彴姝e湪璋冪敤棰勭疆鐐�
+    EZ_HTTPS_DEVICE_COMMAND_NOT_SUPPORT = 160020,     //璁惧鎶撳浘澶辫触锛屼笉鏀寔鎶撳浘
+    
+    /**
+     *  鎺ュ彛 閿欒鐮�(SDK鏈湴鏍¢獙)
+     */
+    EZ_SDK_PARAM_ERROR = 400002,                      //鎺ュ彛鍙傛暟閿欒
+    EZ_SDK_NOT_SUPPORT_TALK = 400025,                 //璁惧涓嶆敮鎸佸璁�
+    EZ_SDK_TIMEOUT = 400034,                          //鏃犳挱鏀総oken锛岃stop鍐峴tart鎾斁鍣�
+    EZ_SDK_NEED_VALIDATECODE = 400035,                //闇�瑕佽澶囬獙璇佺爜
+    EZ_SDK_VALIDATECODE_NOT_MATCH = 400036,           //璁惧楠岃瘉鐮佷笉鍖归厤
+    EZ_SDK_DECODE_TIMEOUT = 400041,                   //瑙g爜瓒呮椂锛屽彲鑳芥槸楠岃瘉鐮侀敊璇�
+    EZ_SDK_STREAM_TIMEOUT = 400015,                   //鍙栨祦瓒呮椂,璇锋鏌ユ墜鏈虹綉缁�
+    EZ_SDK_PLAYBACK_STREAM_TIMEOUT = 400409,          //鍥炴斁鍙栨祦瓒呮椂,璇锋鏌ユ墜鏈虹綉缁�
+    
+    /**
+     *  NPC鍙栨祦閿欒鐮�
+     */
+    EZ_NPC_CLIENT_PARAMETER_ERROR = 500001,           //鍙傛暟閿欒
+    EZ_NPC_CLIENT_ORDER_ERROR = 500002,               //璋冪敤椤哄簭鍑洪敊
+    EZ_NPC_CLIENT_MEMORY_ERROR = 500003,              //鍒嗛厤鍐呭瓨澶辫触
+    EZ_NPC_CLIENT_BUFFER_OVERFLOW_ERROR = 500004,     //缂撳啿鍖烘孩鍑�
+    EZ_NPC_CLIENT_SYSTEM_NO_SUPPORT_ERROR = 500005,   //绯荤粺涓嶆敮鎸�
+    EZ_NPC_CLIENT_INVALID_PORT_ERROR = 500006,        //鏃犳晥绔彛
+    EZ_NPC_CLIENT_STREAM_CLOSE_ERROR = 500101,        //娴佸叧闂�
+    EZ_NPC_CLIENT_TRACK_CLOSE_ERROR = 500102,         //TRACK_CLOSE
+    EZ_NPC_CLIENT_NPCCREATE_ERROR = 500103,           //鍒涘缓澶辫触
+    EZ_NPC_CLIENT_TRSCREATE_ERROR = 500104,           //TRSCREATE_ERROR
+    EZ_NPC_CLIENT_FAIL_UNKNOWN_ERROR = 509999,        //FAIL_UNKNOWN
+};
+
+/* 璁惧ptz鍛戒护锛屽畾涔夌殑鍊间笌Android瀹氫箟鐨勪笉涓�鏍凤紝SDK浼氬湪鍐呴儴浼氬仛涓�灞傝浆鎹� */
+typedef NS_OPTIONS(NSUInteger, EZPTZCommand) {
+    EZPTZCommandLeft            = 1 << 0, //鍚戝乏鏃嬭浆
+    EZPTZCommandRight           = 1 << 1, //鍚戝彸鏃嬭浆
+    EZPTZCommandUp              = 1 << 2, //鍚戜笂鏃嬭浆
+    EZPTZCommandDown            = 1 << 3, //鍚戜笅鏃嬭浆
+    EZPTZCommandZoomIn          = 1 << 4, //闀滃ご鎷夎繘
+    EZPTZCommandZoomOut         = 1 << 5, //闀滃ご鎷夎繙
+};
+
+/*
+ * 璁惧鏄剧ず鍛戒护
+ */
+typedef NS_OPTIONS(NSUInteger, EZDisplayCommand) {
+    EZDisplayCommandCenter          = 1 << 0, //鏄剧ず涓棿
+};
+
+/**
+ *  璁惧ptz鍔ㄤ綔鍛戒护
+ */
+typedef NS_ENUM(NSInteger, EZPTZAction) {
+    EZPTZActionStart = 1, //ptz寮�濮�
+    EZPTZActionStop = 2   //ptz鍋滄
+};
+
+/* 娑堟伅鐘舵�� */
+typedef NS_ENUM(NSInteger, EZMessageStatus) {
+    EZMessageStatusRead = 1,    //宸茶
+};
+
+/* 娑堟伅绫诲瀷 */
+typedef NS_ENUM(NSInteger, EZMessageType)
+{
+    EZMessageTypeAlarm = 1,   //鍛婅绫诲瀷
+    EZMessageTypeLeave,       //鐣欒█绫诲瀷
+};
+
+/* 鐣欒█娑堟伅绫诲瀷 */
+typedef NS_ENUM(NSInteger, EZLeaveMessageType)
+{
+    EZLeaveMessageTypeAll,    //鍏ㄩ儴
+    EZLeaveMessageTypeVoice,  //璇煶绫�
+    EZLeaveMessageTypeVideo,  //瑙嗛绫�
+};
+
+/* 璁惧甯冮槻鐘舵�佹灇涓剧被鍨� */
+typedef NS_ENUM(NSInteger, EZDefenceStatus) {
+    EZDefenceStatusOffOrSleep     = 0,  //A1璁惧鐫$湢妯″紡鎴栬�呴潪A1璁惧鐨勬挙闃茬姸鎬�
+    EZDefenceStatusOn             = 1,  //闈濧1璁惧鐨勫竷闃茬姸鎬�
+    EZDefenceStatusAtHome         = 8,  //A1鍦ㄥ妯″紡
+    EZDefenceStatusOuter          = 16, //A1澶栧嚭妯″紡
+};
+
+/* 閫氶亾娓呮櫚搴︼紝璇锋敞鎰忎笉鏄墍鏈夎澶囬兘鏈夎繖浜涙竻鏅板害鐨勶紝璇锋牴鎹疄闄呭満鏅娇鐢� */
+typedef NS_ENUM(NSInteger, EZVideoLevelType) {
+    EZVideoLevelLow       = 0,  //娴佺晠
+    EZVideoLevelMiddle    = 1,  //鍧囪 
+    EZVideoLevelHigh      = 2,  //楂樻竻
+    EZVideoLevelSuperHigh = 3   //瓒呮竻
+};
+
+/* 褰曞儚绫诲瀷 */
+typedef NS_ENUM(NSUInteger, EZVideoRecordType) {
+    EZVideoRecordTypeAll,     // 鎵�鏈夌被鍨�
+    EZVideoRecordTypeCMR,     // 瀹氭椂褰曞儚
+    EZVideoRecordTypeEvent    // 浜嬩欢绫诲瀷
+};
+
+/* 浜戝瓨鍌ㄥ綍鍍忕被鍨� */
+typedef NS_ENUM(NSInteger, EZCloudVideoType) {
+    EZCloudVideoTypeAll = -1,   // 鍏ㄩ儴褰曞儚
+    EZCloudVideoTypeSeries = 1, // 杩炵画褰曞儚
+    EZCloudVideoTypeAct = 2     // 娲诲姩褰曞儚
+};
+
+/// 寮�鏀惧钩鍙板父閲忕被
+@interface EZConstants : NSObject
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZConstants_Auth.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZConstants_Auth.h
new file mode 100644
index 0000000..1d70767
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZConstants_Auth.h
@@ -0,0 +1,52 @@
+//
+//  EZConstants_Auth.h
+//  Auth
+//
+//  Created by JuneCheng on 2022/5/18.
+//
+
+#import <Foundation/Foundation.h>
+
+// 钀ょ煶寮�鏀惧钩鍙板鎵樻柟娉�
+@protocol EZAuthSDKDelegate <NSObject>
+
+@optional
+
+/**
+ 钀ょ煶鐧诲綍鏄惁鎴愬姛
+ 
+ @param result 鏄惁鎴愬姛
+ */
+- (void)ezvizLoginResult:(BOOL)result;
+
+@end
+
+/* 钀ょ煶鐮斿彂鐨凙PP */
+typedef NS_ENUM(NSInteger, EZAppType) {
+    EZEzviz                 = 0,  // 钀ょ煶浜戣棰戝浗鍐呯増
+    EZEzvizInternational    = 1,  // 钀ょ煶浜戣棰戞捣澶栫増
+    EZHIKConnect            = 2,  // HIK-Connect
+};
+
+/* 钀ょ煶璐熻矗鐮斿彂鐨凙PP */
+typedef NS_ENUM(NSInteger, EZAppPageType) {
+    EZPageDeviceList        = 0,  // 璁惧鍒楄〃椤甸潰
+    EZPageAlarmList         = 1,  // 鍛婅娑堟伅鍒楄〃椤甸潰
+};
+
+///闇�瑕佽繘琛岄噸鏂扮櫥褰曠殑閫氱煡锛岃閫氱煡瑙﹀彂棰戠巼涓�5骞翠竴娆★紝闇�鍦⊿DK鍒濆鍖栫洃鍚�
+extern const NSNotificationName EZNeedReloginNotification;
+
+///閿欒瑙e喅鏂规KEY
+extern NSErrorUserInfoKey const EZErrorSolutionKey;
+
+///閿欒妯″潡閿欒鐮並EY
+extern NSErrorUserInfoKey const EZErrorModuleCodeKey;
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZConstants_Auth : NSObject
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZConstants_WifiConfig.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZConstants_WifiConfig.h
new file mode 100644
index 0000000..97dd69d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZConstants_WifiConfig.h
@@ -0,0 +1,36 @@
+//
+//  EZConstants_WifiConfig.h
+//  WifiConfig
+//
+//  Created by JuneCheng on 2022/5/6.
+//
+
+#ifndef EZConstants_WifiConfig_h
+#define EZConstants_WifiConfig_h
+
+/* 閰嶇綉鏂瑰紡 */
+typedef NS_ENUM(NSInteger, EZWiFiConfigMode) {
+    EZWiFiConfigSmart        = 1 << 0,  // smart config
+    EZWiFiConfigWave         = 1 << 1,  // 澹版尝閰嶇綉
+};
+
+/* WiFi閰嶇疆璁惧鐘舵�� */
+typedef NS_ENUM(NSInteger, EZWifiConfigStatus) {
+    DEVICE_WIFI_CONNECTING = 1,   //璁惧姝e湪杩炴帴WiFi
+    DEVICE_WIFI_CONNECTED = 2,    //璁惧杩炴帴WiFi鎴愬姛  (宸插簾寮� v4.16.0)
+    DEVICE_PLATFORM_REGISTED = 3, //璁惧娉ㄥ唽骞冲彴鎴愬姛
+    DEVICE_ACCOUNT_BINDED = 4,    //璁惧宸茬粡缁戝畾璐︽埛  (宸插簾寮� v4.16.0)
+    DEVICE_WIFI_SENT_SUCCESS = 5, //鍚戣澶囧彂閫乄iFi淇℃伅鎴愬姛
+    DEVICE_WIFI_SENT_FAILED = 6,  //鍚戣澶囧彂閫乄iFi淇℃伅澶辫触
+    DEVICE_PLATFORM_REGIST_FAILED = 7, //璁惧娉ㄥ唽骞冲彴澶辫触锛岃疆璇�20娆★紝20娆℃湭鏌ヨ鍒拌澶囦笂绾胯涓烘敞鍐屽钩鍙板け璐�
+};
+
+/* New AP閰嶇綉璁惧鐘舵�� */
+typedef NS_ENUM(NSInteger, EZNewAPConfigStatus) {
+    EZNewAPConfigStatusConnectSuccess          = 104,    // 杩炴帴鎴愬姛
+    EZNewAPConfigStatusUnknow                  = 105,    // 鏈煡閿欒
+    EZNewAPConfigStatusPasswordError           = 106,    // 瀵嗙爜閿欒
+    EZNewAPConfigStatusNoAPFound               = 201,    // 鏈壘鍒皐ifi鐑偣
+};
+
+#endif /* EZConstants_WifiConfig_h */
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDetectorInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDetectorInfo.h
new file mode 100644
index 0000000..9dd71bc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDetectorInfo.h
@@ -0,0 +1,41 @@
+//
+//  EZDetectorInfo.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 16/1/12.
+//  Copyright 漏 2016骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓烘帰娴嬪櫒淇℃伅瀵硅薄
+@interface EZDetectorInfo : NSObject
+
+/// 鎺㈡祴鍣ㄥ簭鍒楀彿
+@property (nonatomic, copy) NSString *detectorSerial;
+/// 鎺㈡祴鍣ㄧ姸鎬侊紝鎺㈡祴鍣ㄤ笌A1鏄惁杩為�氾細0-闈炶仈閫氾紝1-鑱旈��
+@property (nonatomic) NSInteger state;
+/// 鎺㈡祴鍣ㄧ被鍨�
+@property (nonatomic, copy) NSString *type;
+/// 鎺㈡祴鍣ㄥ悕绉�
+/*  V("V", "瑙嗛璁惧"), I("I", "鍛婅杈撳叆璁惧"), O("O", "鍛婅杈撳嚭璁惧"), PIR("PIR", "绾㈠鎺㈡祴鍣�"), FIRE("FIRE", "鐑熸劅鎺㈡祴鍣�"),MAGNETOMETER("MAGNETOMETER", "闂ㄧ浼犳劅鍣�"), GAS("GAS", "鍙噧姘斾綋"), WATERLOGGING("WATERLOGGING", "姘存蹈"),CALLHELP("CALLHELP", "绱ф�ユ寜閽�"), TELECONTROL("TELECONTROL", "閬ユ帶鍣�"), ALERTOR("ALERTOR", "鍛婅鍣�"),KEYBOARD("KEYBOARD", "閿洏"),CURTAIN("CURTAIN","骞曞笜"), MOVE_MAGNETOMETER("MOVE_MAGNETOMETER","鍗曚綋闂ㄧ")
+ */
+@property (nonatomic, copy) NSString *typeName;
+/// 鏂逛綅淇℃伅锛屽彲鐢ㄤ簬瀹㈡埛鑷畾涔夊悕绉�
+@property (nonatomic, copy) NSString *location;
+/// 闃插尯鏁呴殰鐘舵�侊紝0鎭㈠锛�1浜х敓
+@property (nonatomic) NSInteger faultZoneStatus;
+/// 鐢垫睜娆犲帇鐘舵�侊紝0鎭㈠锛�1浜х敓
+@property (nonatomic) NSInteger underVoltageStatus;
+/// 鏃犵嚎骞叉壈鐘舵�侊紝0鎭㈠锛�1浜х敓
+@property (nonatomic) NSInteger wirelessInterferenceStatus;
+/// 璁惧绂荤嚎鐘舵�侊紝0鎭㈠锛�1浜х敓
+@property (nonatomic) NSInteger offlineStatus;
+/// 鍦ㄥ妯″紡鏄惁寮�鍚�
+@property (nonatomic) BOOL atHomeEnable;
+/// 澶栧嚭妯″紡鏄惁寮�鍚�
+@property (nonatomic) BOOL outerEnable;
+/// 鐫$湢妯″紡鏄惁寮�鍚�
+@property (nonatomic) BOOL sleepEnable;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceCloudServiceInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceCloudServiceInfo.h
new file mode 100644
index 0000000..fffd93e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceCloudServiceInfo.h
@@ -0,0 +1,65 @@
+//
+//  EZDeviceCloudServiceInfo.h
+//  EzvizOpenSDK
+//
+//  Created by JuneCheng on 2022/1/4.
+//  Copyright 漏 2022 Hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+@class EZCloudServicePackageInfo;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// 浜戝瓨鍌ㄨ澶囬�氶亾濂楅淇℃伅
+@interface EZDeviceCloudServiceInfo : NSObject
+
+@property (nonatomic, copy) NSString *ownerId;///< 璁惧鎵�灞炵敤鎴风敤鎴峰悕
+@property (nonatomic, copy) NSString *serial;///< 璁惧搴忓垪鍙�
+@property (nonatomic, assign) NSInteger channelNo;///< 閫氶亾鍙�
+@property (nonatomic, copy) NSString *devicePicUrl;///< 璁惧鍥剧墖url
+@property (nonatomic, assign) NSInteger storageTime;///< 瀛樺偍鏃堕暱
+@property (nonatomic, assign) NSInteger storageTimeUnit;///< 瀛樺偍鏃堕暱鍗曚綅锛�1-澶╋紝2-鍛紝3-鏈堬紝4-骞�
+@property (nonatomic, copy) NSString *expireTime;///< 浜戝瓨鍌ㄦ湇鍔¤繃鏈熸椂闂�
+@property (nonatomic, copy) NSString *expireDate;///< 鍒版湡鏃堕棿锛� yyyy骞碝M鏈坉d鏃� 鏍煎紡
+@property (nonatomic, copy) NSString *devModel;///< 璁惧鍨嬪彿
+@property (nonatomic, copy) NSString *devName;///< 璁惧鍚嶇О
+@property (nonatomic, assign) NSInteger onlineStatus;///< 璁惧鍦ㄧ嚎鐘舵��
+@property (nonatomic, assign) NSInteger status;///< 浜戝瓨鍌ㄧ姸鎬� -2涓嶆敮鎸� -1鏈紑鍚� 0鏆傚仠 1寮�鍚� 2杩囨湡 4鎸囧畾鐢熸晥浜戝瓨鍌ㄥ緟鐢熸晥鐘舵��
+@property (nonatomic, assign) NSInteger expireDay;///< 褰撳墠璺濈杩囨湡鐨勬湁鏁堝ぉ鏁�
+@property (nonatomic, assign) NSInteger validDay;///< 鏈嶅姟鍙娇鐢ㄧ殑澶╂暟
+@property (nonatomic, copy) NSString *createTime;///< 鍒涘缓鏃堕棿
+@property (nonatomic, assign) BOOL designateDevice;///< 鏄惁鏄寚瀹氳澶�
+@property (nonatomic, assign) BOOL subscribe;///< 鏄惁鐢卞綋鍓嶈闃呭紑閫�
+@property (nonatomic, assign) BOOL supportSubscribe;///< 鏄惁鏀寔璁㈤槄浜戝瓨鍌�
+@property (nonatomic, assign) BOOL supportCard;///< 鏄惁鏀寔鐐瑰崱
+@property (nonatomic, assign) NSInteger openTryCloudShield;///< 鏄惁灞忚斀浜戝瓨鍌ㄨ瘯鐢� 1涓哄睆钄斤紝鍏朵粬涓烘湭灞忚斀
+@property (nonatomic, strong) NSArray<EZCloudServicePackageInfo *> *serviceList;///<
+
+@end
+
+
+@interface EZCloudServicePackageInfo : NSObject
+
+@property (nonatomic, assign) long serviceId;///<
+@property (nonatomic, assign) NSInteger productPayType;///< 浜у搧浠樿垂绫诲瀷锛�1浠樿垂 2 璇曠敤 3鍏嶈垂
+@property (nonatomic, assign) NSInteger storageTimeUnit;///< 瀛樺偍鏃堕暱鍗曚綅锛�1-澶� 2-鍛� 3-鏈� 4-骞� 5-灏忔椂
+@property (nonatomic, copy) NSString *expireTime;///< 杩囨湡鏃堕棿
+@property (nonatomic, assign) NSInteger forceBinding;///< 寮哄埗缁戝畾鐘舵�� 1-寮哄埗缁戝畾 2-鍙浆绉�
+@property (nonatomic, assign) NSInteger effectImmediately;///< 鏈嶅姟鏄惁绔嬪嵆鐢熸晥 1-绔嬪嵆鐢熸晥 2-寤惰繜鐢熸晥 3-鎸囧畾鏃ユ湡鐢熸晥
+@property (nonatomic, assign) NSInteger canFamilyDeviceNum;///< 鍙姞鍏ュ椁愯澶囨暟
+@property (nonatomic, assign) long familyServiceId;///< 瀹跺涵濂楅鏈嶅姟ID
+@property (nonatomic, assign) NSInteger serviceTime;///< 浜戝瓨鍌ㄤ娇鐢ㄦ椂闀�
+@property (nonatomic, assign) NSInteger addFamilyDeviceNum;///< 宸插姞鍏ュ椁愯澶囨暟
+@property (nonatomic, assign) NSInteger productCode;///< 浜у搧缂栧彿
+@property (nonatomic, assign) NSInteger buyNum;///< 璐拱鏁伴噺
+@property (nonatomic, copy) NSString *businessOrderNo;///< 璁㈠崟鍙凤細褰撳墠寮�閫氭湇鍔′笌璁㈠崟鍏宠仈
+@property (nonatomic, assign) NSInteger serviceTimeUnit;///< 浜戝瓨鍌ㄤ娇鐢ㄦ椂闀垮崟浣嶏細1-澶� 2-鍛� 3-鏈� 4-骞�
+@property (nonatomic, assign) NSInteger storageTime;///< 瀛樺偍鏃堕暱
+@property (nonatomic, assign) NSInteger serviceType;///< 濂楅绫诲瀷锛�2銆佸搴椁愶紝 1 or null涓烘櫘閫氬椁�
+@property (nonatomic, copy) NSString *effectTime;///< 鐢熸晥鏃堕棿
+@property (nonatomic, assign) NSInteger status;///< 鐘舵�侊細1 寰呬娇鐢� 2浣跨敤涓� 3宸蹭娇鐢�
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceInfo.h
new file mode 100644
index 0000000..da60bb4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceInfo.h
@@ -0,0 +1,59 @@
+//
+//  EZDeviceInfo.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/9/16.
+//  Copyright (c) 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓鸿澶囦俊鎭璞�
+@interface EZDeviceInfo : NSObject
+
+/// 璁惧鍏宠仈鐨勯�氶亾淇℃伅
+@property (nonatomic, strong) NSArray *cameraInfo;
+/// 璁惧鍏宠仈鐨勯�氶亾鏁伴噺
+@property (nonatomic) NSInteger cameraNum;
+/// 鍏锋湁闃叉姢鑳藉姏鐨勮澶囧竷鎾ら槻鐘舵�侊細0-鐫$湢锛�8-鍦ㄥ锛�16-澶栧嚭锛屾櫘閫欼PC甯冩挙闃茬姸鎬侊細0-鎾ら槻锛�1-甯冮槻
+@property (nonatomic) NSInteger defence;
+/// 璁惧鍏宠仈鐨勬帰娴嬪櫒鏁伴噺
+@property (nonatomic) NSInteger detectorNum;
+/// 璁惧鍏宠仈鐨勬帰娴嬪櫒淇℃伅
+@property (nonatomic, strong) NSArray *detectorInfo;
+/// 璁惧鍥剧墖
+@property (nonatomic, copy) NSString *deviceCover;
+/// 璁惧鍚嶇О
+@property (nonatomic, copy) NSString *deviceName;
+/// 璁惧搴忓垪鍙�
+@property (nonatomic, copy) NSString *deviceSerial;
+/// 璁惧绫诲瀷
+@property (nonatomic, copy) NSString *deviceType;
+/// 璁惧鐗堟湰鍙�
+@property (nonatomic, copy) NSString *deviceVersion;
+/// 璁惧鍗忚鐗堟湰鍙风被鍨�  0:闈炲浗鏍� 6:鍥芥爣
+@property (nonatomic) NSInteger devProtoEnum;
+/// 璁惧鏄惁寮�鍚姞瀵�
+@property (nonatomic) BOOL isEncrypt;
+/// 璁惧鐘舵�侊紝1-鍦ㄧ嚎锛�2-涓嶅湪绾�
+@property (nonatomic) NSInteger status;
+/// 鏄惁鏀寔瀵硅 0-涓嶆敮鎸佸璁诧紝1-鏀寔鍏ㄥ弻宸ュ璁诧紝3-鏀寔鍗婂弻宸ュ璁诧紝4-鍚屾椂鏀寔鍏ㄥ弻宸ュ拰鍗婂弻宸�
+@property (nonatomic) NSInteger isSupportTalk;
+/// 鏄惁鏀寔浜戝彴鎺у埗
+@property (nonatomic) BOOL isSupportPTZ;
+/// 鏄惁鏀寔鏀惧ぇ
+@property (nonatomic) BOOL isSupportZoom;
+///鏄惁鏀寔鎻愮ず闊冲紑鍏�
+@property (nonatomic) BOOL isSupportAudioOnOff;
+/// 鏄惁鏀寔涓績闀滃儚缈昏浆
+@property (nonatomic) BOOL isSupportMirrorCenter;
+/// 鏄惁鏀寔澹版尝閰嶇綉
+@property (nonatomic) BOOL isSupportSoundWave;
+/// 鏄惁鏀寔鍊嶆暟鍥炴斁
+@property (nonatomic) BOOL isSupportPlaybackRate;
+/// 璁惧澶х被
+@property (nonatomic,copy) NSString *category;
+/// 娣诲姞鏃堕棿
+@property (nonatomic,strong) NSDate *addTime;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDevicePtzAngleInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDevicePtzAngleInfo.h
new file mode 100644
index 0000000..4437921
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDevicePtzAngleInfo.h
@@ -0,0 +1,47 @@
+//
+//  EZDevicePtzAngleInfo.h
+//  EzvizOpenSDK
+//
+//  Created by JuneCheng on 2022/4/27.
+//  Copyright 漏 2022 Hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZDevicePtzAngleInfo : NSObject
+
+/** 姘村钩鏂瑰悜璧风偣瑙掑害 */
+@property (readonly) NSInteger horizontalStartAngle;
+
+/** 姘村钩鏂瑰悜缁堢偣瑙掑害 */
+@property (readonly) NSInteger horizontalEndAngle;
+
+/** 姘村钩鏂瑰悜褰撳墠瑙掑害 */
+@property (readonly) NSInteger horizontalCurrentAngle;
+
+/** 鍨傜洿鏂瑰悜璧风偣瑙掑害 */
+@property (readonly) NSInteger verticalStartAngle;
+
+/** 鍨傜洿鏂瑰悜缁堢偣瑙掑害 */
+@property (readonly) NSInteger verticalEndAngle;
+
+/** 鍨傜洿鏂瑰悜褰撳墠瑙掑害 */
+@property (readonly) NSInteger verticalCurrentAngle;
+
+/** 鏂瑰悜 */
+@property (readonly) NSInteger orientation;
+
+/** 鐗堟湰鍙� */
+@property (readonly) NSInteger ptzCfgVersion;
+
+/** 鍒濆鍖� */
+- (instancetype)initWithType:(NSInteger)type data:(NSData *)data;
+
+- (float)horCurAngPercent;
+- (float)verCurAngPercent;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceRecordDownloadTask.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceRecordDownloadTask.h
new file mode 100644
index 0000000..adb8679
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceRecordDownloadTask.h
@@ -0,0 +1,39 @@
+//
+//  EZDeviceRecordDownloadTask.h
+//  EZOpenSDK
+//
+//  Created by yuqian on 2019/7/2.
+//  Copyright 漏 2019 Ezviz. All rights reserved.
+//
+
+#import "EZRecordDownloadTask.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class EZDeviceRecordFile;
+
+@interface EZDeviceRecordDownloadTask : EZRecordDownloadTask
+
+/**
+ sd鍗″綍鍍忎笅杞戒换鍔″垵濮嬪寲锛屽紓姝ユ柟娉�
+ 涓嬭浇鐨勫綍鍍忎负PS鏂囦欢锛屽闇�杞崲MP4锛岃鑷璋冪敤EZVideoTransformer绫荤殑杞皝瑁呮柟娉�
+ 
+ @param taskID 涓嬭浇浠诲姟鍞竴鏍囪瘑ID
+ @param recordFile 璁惧褰曞儚鏂囦欢
+ @param deviceSerial 璁惧搴忓垪鍙�
+ @param cameraNo 閫氶亾鍙�
+ @param verifyCode 璁惧楠岃瘉鐮�
+ @param savePath 涓嬭浇瀛樺偍璺緞
+ @param completion 瀹屾垚鍥炶皟锛屾垚鍔熻繑鍥瀟ask锛屽け璐ヨ繑鍥瀗il
+ */
+- (void) initTaskWithID:(NSUInteger)taskID
+   DeviceRecordFileInfo:(EZDeviceRecordFile *)recordFile
+           deviceSerial:(NSString *)deviceSerial
+               cameraNo:(NSInteger)cameraNo
+             verifyCode:(NSString *)verifyCode
+               savePath:(NSString *)savePath
+             completion:(void (^)(EZDeviceRecordDownloadTask *task))completion;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceRecordFile.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceRecordFile.h
new file mode 100644
index 0000000..b7a2867
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceRecordFile.h
@@ -0,0 +1,26 @@
+//
+//  EZDeviceRecordFile.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/9/17.
+//  Copyright (c) 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓鸿澶囧綍鍍忔枃浠朵俊鎭紙鍖呭惈SD鍗°�佸悗绔叧鑱旇澶囩殑褰曞儚锛�
+@interface EZDeviceRecordFile : NSObject
+
+/// 璁惧褰曞儚鏂囦欢鐨勫紑濮嬫椂闂�
+@property (nonatomic, strong) NSDate *startTime;
+/// 璁惧褰曞儚鏂囦欢鐨勭粨鏉熸椂闂�
+@property (nonatomic, strong) NSDate *stopTime;
+/// 鏂囦欢绫诲瀷 -2:UNKNOW -1:ALLEVENT 0:ALARM 1:TIMING 2:IO 3:CMR 4:event 5:all
+@property (nonatomic, assign) int type;
+@property (nonatomic, copy) NSString *channelType;
+
+
+@property (nonatomic, assign) int seq;
+@property (nonatomic, strong) NSData *imageData;///< 
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceUpgradeStatus.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceUpgradeStatus.h
new file mode 100644
index 0000000..06c173b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceUpgradeStatus.h
@@ -0,0 +1,19 @@
+//
+//  EZDeviceUpgradeStatus.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/12/21.
+//  Copyright 漏 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓鸿澶囧崌绾х姸鎬佸璞�
+@interface EZDeviceUpgradeStatus : NSObject
+
+/// 鍗囩骇杩涘害锛屼粎status_type涓哄崌绾х姸鎬佹椂鏈夋晥锛屽彇鍊艰寖鍥翠负1-100
+@property (nonatomic) NSInteger upgradeProgress;
+/// 鍗囩骇鐘舵�侊細 0锛氭鍦ㄥ崌绾� 1锛氳澶囬噸鍚� 2锛氬崌绾ф垚鍔� 3锛氬崌绾уけ璐�
+@property (nonatomic) NSInteger upgradeStatus;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceVersion.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceVersion.h
new file mode 100644
index 0000000..a49a31a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZDeviceVersion.h
@@ -0,0 +1,27 @@
+//
+//  EZDeviceVersion.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/12/10.
+//  Copyright 漏 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓鸿澶囩増鏈俊鎭璞�
+@interface EZDeviceVersion : NSObject
+
+/// 褰撳墠鐗堟湰
+@property (nonatomic, copy) NSString *currentVersion;
+/// 鏈�鏂扮増鏈�
+@property (nonatomic, copy) NSString *latestVersion;
+/// 鏄惁鍙互鏇存柊,娉細0-涓嶉渶瑕佸崌绾� 1-闇�瑕佸崌绾� 3-闇�瑕佸崌绾�1.7鐗堟湰浠ヤ笂
+@property (nonatomic) NSInteger isNeedUpgrade;
+/// 鏄惁姝e湪鍗囩骇,娉細0-涓嶅湪鍗囩骇 1-姝e湪鍗囩骇
+@property (nonatomic) NSInteger isUpgrading;
+/// 鍥轰欢涓嬭浇鍦板潃锛屽彧鏈夊彲浠ユ洿鏂版椂鎵嶄細鏈夊��
+@property (nonatomic, copy) NSString *downloadUrl;
+/// 鏇存柊鍐呭鎻忚堪
+@property (nonatomic, copy) NSString *upgradeDesc;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZGlobalSDK.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZGlobalSDK.h
new file mode 100644
index 0000000..90f7cc9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZGlobalSDK.h
@@ -0,0 +1,1059 @@
+//
+//  EZGlobalSDK.h
+//  EZOpenSDK
+//
+//  Created by JuneCheng on 2022/7/18.
+//
+
+#import <Foundation/Foundation.h>
+#import "EZConstants.h"
+#import "EZConstants_Auth.h"
+#import "EZConstants_WifiConfig.h"
+
+@class EZAccessToken;
+@class EZPlayer;
+@class EZUserInfo;
+@class EZDeviceVersion;
+@class EZDeviceInfo;
+@class EZProbeDeviceInfo;
+@class EZDeviceUpgradeStatus;
+@class EZLeaveMessage;
+@class EZHiddnsDeviceInfo;
+@class EZDeviceCloudServiceInfo;
+@class EZWiFiItemInfo, EZAPDevInfo, EZConfigTokenInfo;
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZGlobalSDK : NSObject
+
+#pragma mark - Auth璁よ瘉鐩稿叧Api
+
+/**
+ *  瀹炰緥EZOpenSDK鎺ュ彛
+ *
+ *  @param appKey 浼犲叆鐢宠鐨刟ppKey
+ *
+ *  @return YES/NO
+ */
++ (BOOL)initLibWithAppKey:(NSString *)appKey;
+
+/**
+ *  鍒濆鍖栨帴鍙o紝鍙缃湇鍔″櫒锛屾捣澶栫敤鎴蜂娇鐢ㄨ鍒濆鍖栨柟娉�
+ *
+ *  @param appKey 浼犲叆鐢宠鐨刟ppKey
+ *  @param apiUrl apiUrl鍦板潃
+ *  @param authUrl auth鍦板潃
+ *
+ *  @return YES/NO
+ */
++ (BOOL)initLibWithAppKey:(NSString *)appKey
+                      url:(NSString *)apiUrl
+                  authUrl:(NSString *)authUrl;
+
+/**
+ *  閿�姣丒ZOpenSDK鎺ュ彛
+ *
+ *  @return YES/NO
+ */
++ (BOOL)destoryLib;
+
+/**
+ *  璁剧疆鏄惁鎵撳嵃debug鏃ュ織,闇�鍦ㄥ垵濮嬪寲sdk涔嬪墠璋冪敤
+ *
+ *  @param enable 鏄惁鎵撳嵃鏃ュ織锛岄粯璁ゅ叧闂�
+ *
+ *  @return YES/NO
+ */
++ (BOOL)setDebugLogEnable:(BOOL)enable;
+
+/**
+ *  璁剧疆debug鏃ュ織鍥炶皟,闇�鍦ㄥ垵濮嬪寲sdk涔嬪墠璋冪敤
+ *
+ *  @param logCallback 鏃ュ織鍥炶皟
+ */
++ (void)setDebugLogCallBack:(void(^)(NSString *logStr))logCallback;
+
+/**
+ *  鎵撳紑鎺堟潈鐧诲綍涓棿椤甸潰鎺ュ彛
+ *
+ *  @param areaId areaId
+ *  @param block 鍥炶皟block
+*/
++ (void)openLoginPage:(NSString *)areaId
+           completion:(void (^)(EZAccessToken *accessToken))block;
+
+/**
+ *  鎺堟潈鐧诲綍浠ュ悗缁橢ZOpenSDK璁剧疆accessToken鎺ュ彛
+ *
+ *  @param accessToken 鎺堟潈鐧诲綍鑾峰彇鐨刟ccessToken
+ */
++ (void)setAccessToken:(NSString *)accessToken;
+
+/**
+ *  璐︽埛娉ㄩ攢鎺ュ彛
+ *
+ *  @param completion 鍥炶皟block锛宔rror涓虹┖琛ㄧず鐧诲嚭鎴愬姛
+ */
++ (void)logout:(void (^)(NSError *error))completion;
+
+
+/**
+ 澶栭儴璺宠浆澶勭悊鏂规硶锛岄�傜敤浜巌OS9浠ヤ笂锛屽寘鎷琲OS9
+
+ @param url 璺宠浆杩囨潵鐨剈rl
+ @param options 鍙傛暟锛岄粯璁や负绌猴紝鐩墠鏈繘琛屽鐞嗭紝棰勭暀
+ @param delegate 濮旀墭
+ @return 缁撴灉
+ */
++ (BOOL)handleOpenUrl:(NSURL *)url options:(NSDictionary *)options delegate:(id<EZAuthSDKDelegate>)delegate;
+
+/**
+ *  鑾峰彇SDK鐗堟湰鍙锋帴鍙�
+ *
+ *  @return 鐗堟湰鍙�
+ */
++ (NSString *)getVersion;
+
+/**
+ *  鎵撳紑浜戝瓨鍌ㄤ腑闂撮〉
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param channelNo    璁惧閫氶亾鍙�
+ */
++ (void)openCloudPage:(NSString *)deviceSerial channelNo:(NSInteger)channelNo;
+
+/**
+ *  鎵撳紑淇敼瀵嗙爜涓棿椤�
+ *
+ *  @param completion 鍥炶皟block resultCode涓�0鏃惰〃绀轰慨鏀瑰瘑鐮佹垚鍔�
+ */
++ (void)openChangePasswordPage:(void (^)(NSInteger resultCode))completion;
+
+/**
+ 鏄惁宸茬粡鐧诲綍
+
+ @return YES锛氬凡缁忕櫥褰曪紱NO锛氭湭鐧诲綍
+ */
++ (BOOL)isLogin;
+
+/**
+ 鑾峰彇褰撳墠accessToken
+
+ @return accessToken
+ */
++ (NSString *)getAccesstoken;
+
+#pragma mark - 鎾斁鍣ㄥ垱寤篈pi
+
+/**
+ *  鏍规嵁cameraId鏋勯�燛ZPlayer瀵硅薄
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *
+ *  @return EZPlayer瀵硅薄
+ */
++ (EZPlayer *)createPlayerWithDeviceSerial:(NSString *)deviceSerial
+                                  cameraNo:(NSInteger)cameraNo;
+
+/**
+ *  涓�涓〉闈㈠瓨鍦ㄥ涓棰戜娇鐢ㄦ渶灏忕殑鐮佹祦锛屾病鏈夊瓙鐮佹祦鐨勮瘽杩樻槸浣跨敤涓荤爜娴�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     铏氭嫙閫氶亾
+ *  @param useSubStream   鏄惁浣跨敤瀛愮爜娴�
+ *
+ *  @return EZPlayer瀵硅薄
+ */
++ (EZPlayer *)createPlayerWithDeviceSerial:(NSString *)deviceSerial
+                                  cameraNo:(NSInteger)cameraNo
+                              useSubStream:(BOOL)useSubStream;
+
+/**
+ *  鏍规嵁url鏋勯�燛ZPlayer瀵硅薄 锛堜富瑕佺敤鏉ュ鐞嗚棰戝箍鍦虹殑鎾斁锛�
+ *
+ *  @param url 鎾斁url锛岀洰鍓嶅彧鏀寔璇ュ崗璁細ysproto://vtm.ys7.com:8554/live?dev=531993276&chn=1&stream=1&cln=1&isp=0&biz=3
+ *
+ *  @return EZPlayer瀵硅薄
+ */
++ (EZPlayer *)createPlayerWithUrl:(NSString *)url;
+
+
+/**
+ *  閲婃斁EZPlayer瀵硅薄
+ *
+ *  @param player EZPlayer瀵硅薄
+ *
+ *  @return YES/NO
+ */
++ (BOOL)releasePlayer:(EZPlayer *)player;
+
+#pragma mark - 鍙栨祦鐩稿叧Api
+
+/**
+ *  璁剧疆p2p鍔熻兘鏄惁寮�鍚帴鍙o紝榛樿涓嶅紑鍚痯2p锛岀敤鎴疯嚜宸遍�夋嫨鏄惁寮�鍚�
+ *
+ *  @param enable p2p鏄惁寮�鍚�
+ */
++ (void)enableP2P:(BOOL)enable;
+
+/**
+ *  娓呴櫎鍙栨祦鏃剁殑缂撳瓨鏁版嵁
+ */
++ (void)clearStreamInfoCache;
+
+/**
+ *  鏄惁鏀寔鍥芥爣
+ *  @param enable YES or NO
+ */
++ (void)enableNationalStandard:(BOOL)enable;
+
+#pragma mark - 褰曞儚鏌ヨApi
+
+/**
+ *  鏌ヨ浜戝瓨鍌ㄥ綍鍍忎俊鎭垪琛ㄦ帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param beginTime    鏌ヨ鏃堕棿鑼冨洿寮�濮嬫椂闂�
+ *  @param endTime      鏌ヨ鏃堕棿鑼冨洿缁撴潫鏃堕棿
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZCloudRecordFile鐨勫璞℃暟缁勶紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)searchRecordFileFromCloud:(NSString *)deviceSerial
+                                           cameraNo:(NSInteger)cameraNo
+                                          beginTime:(NSDate *)beginTime
+                                            endTime:(NSDate *)endTime
+                                         completion:(void (^)(NSArray *couldRecords, NSError *error))completion;
+
+/**
+ *  鏌ヨ杩滅▼SD鍗″瓨鍌ㄥ綍鍍忎俊鎭垪琛ㄦ帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param beginTime    鏌ヨ鏃堕棿鑼冨洿寮�濮嬫椂闂�
+ *  @param endTime      鏌ヨ鏃堕棿鑼冨洿缁撴潫鏃堕棿
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZDeviceRecordFile鐨勫璞℃暟缁勶紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)searchRecordFileFromDevice:(NSString *)deviceSerial
+                                            cameraNo:(NSInteger)cameraNo
+                                           beginTime:(NSDate *)beginTime
+                                             endTime:(NSDate *)endTime
+                                          completion:(void (^)(NSArray *deviceRecords, NSError *error))completion;
+
+/**
+ *  鑾峰彇鎸囧畾鏃堕棿鍐呯殑鎵�鏈夊綍鍍忔枃浠�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙凤紝浼犲叆<=0鐨勫�煎垯涓洪粯璁ゅ��
+ *  @param beginTime    寮�濮嬫椂闂达紝浼犲叆nil鍒欎负褰撳ぉ00:00:00
+ *  @param endTime      缁撴潫鏃堕棿锛屼紶鍏il鍒欎负褰撳ぉ23:59:59
+ *  @param rectype      鍥炴斁婧愶紝0-绯荤粺鑷姩閫夋嫨锛�1-浜戝瓨鍌紝2-鏈湴褰曞儚銆傞潪蹇呴�夛紝榛樿涓�0锛屼紶鍏ヨ礋鍊煎垯涓洪粯璁ゅ��
+ *  @param bizType       璁惧褰掑睘涓氬姟鏉ユ簮
+ *  @param platFormId  骞冲彴ID
+ *  @param completion   鍥炶皟block records:EzvizRecordFileInfo鐨勬暟缁�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)searchRecordFile:(NSString *)deviceSerial
+                                  cameraNo:(NSString *)cameraNo
+                                 beginTime:(NSDate *)beginTime
+                                   endTime:(NSDate *)endTime
+                                   recType:(NSInteger)rectype
+                                   bizType:(NSString *)bizType
+                                platFormId:(NSString *)platFormId
+                                completion:(void (^)(id records, NSError *error))completion;
+
+#pragma mark - 璁惧鐩稿叧Api
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙峰拰璁惧楠岃瘉鐮佹坊鍔犺澶囨帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param verifyCode   璁惧楠岃瘉鐮�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘坊鍔犳垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)addDevice:(NSString *)deviceSerial
+                         verifyCode:(NSString *)verifyCode
+                         completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鑾峰彇鐢ㄦ埛鎵�鏈夌殑璁惧鍒楄〃
+ *
+ *  @param pageIndex  鍒嗛〉褰撳墠椤电爜锛堜粠0寮�濮嬶級
+ *  @param pageSize   鍒嗛〉姣忛〉鏁伴噺锛堝缓璁�20浠ュ唴锛�
+ *  @param completion 鍥炶皟block锛屾甯告椂杩斿洖EZDeviceInfo鐨勫璞℃暟缁勫拰璁惧鎬绘暟锛岄敊璇椂杩斿洖閿欒鐮�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getDeviceList:(NSInteger)pageIndex
+                               pageSize:(NSInteger)pageSize
+                             completion:(void (^)(NSArray *deviceList, NSInteger totalCount, NSError *error))completion;
+
+/**
+ *  鑾峰彇鍒嗕韩缁欑敤鎴风殑璁惧鍒楄〃鎺ュ彛
+ *
+ *  @param pageIndex  鍒嗛〉褰撳墠椤电爜锛堜粠0寮�濮嬶級
+ *  @param pageSize   鍒嗛〉姣忛〉鏁伴噺锛堝缓璁�20浠ュ唴锛�
+ *  @param completion 鍥炶皟block锛屾甯告椂杩斿洖EZDeviceInfo鐨勫璞℃暟缁勫拰璁惧鎬绘暟锛岄敊璇椂杩斿洖閿欒鐮�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getSharedDeviceList:(NSInteger)pageIndex
+                                     pageSize:(NSInteger)pageSize
+                                   completion:(void (^)(NSArray *deviceList, NSInteger totalCount, NSError *error))completion;
+
+/**
+ *  鏍规嵁搴忓垪鍙疯幏鍙栬澶囦俊鎭�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion 鍥炶皟block锛屾甯告椂杩斿洖EZDeviceInfo鐨勫璞★紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getDeviceInfo:(NSString *)deviceSerial
+                             completion:(void (^)(EZDeviceInfo *deviceInfo, NSError *error))completion;
+
+/**
+ *  鑾峰彇璁惧鐨勭増鏈俊鎭帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZDeviceVersion鐨勫璞′俊鎭紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getDeviceVersion:(NSString *)deviceSerial
+                                completion:(void (^)(EZDeviceVersion *version, NSError *error))completion;
+
+/**
+ *  閫氳繃璁惧楠岃瘉鐮佸紑鍏宠棰戝浘鐗囧姞瀵嗘帴鍙�
+ *
+ *  @param isEncrypt    鏄惁鍔犲瘑锛屽彧鏈塏O(鍏抽棴)鐨勬椂鍊欓渶瑕佽澶囬獙璇佺爜鐨勭浉鍏冲弬鏁�(vaildateCode)
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param verifyCode 璁惧楠岃瘉鐮�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘搷浣滄垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setDeviceEncryptStatus:(NSString *)deviceSerial
+                                      verifyCode:(NSString *)verifyCode
+                                         encrypt:(BOOL)isEncrypt
+                                      completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙蜂慨鏀硅澶囧悕绉版帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param deviceName   璁惧鍚嶇О
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀轰慨鏀规垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setDeviceName:(NSString *)deviceName
+                           deviceSerial:(NSString *)deviceSerial
+                             completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙峰垹闄ゅ綋鍓嶈处鍙风殑璁惧鎺ュ彛
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀哄垹闄ゆ垚鍔�
+ *  @see 璇ユ帴鍙d笌缁堢缁戝畾鍔熻兘鐩稿叧锛屼細閬囧埌鍒犻櫎鏃舵姤106002鐨勯敊璇紝璇峰叧闂粓绔粦瀹氫互鍚庡啀璇�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)deleteDevice:(NSString *)deviceSerial
+                            completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙疯幏鍙栧瓨鍌ㄤ粙璐ㄧ姸鎬�(濡傛槸鍚﹀垵濮嬪寲锛屾牸寮忓寲杩涘害绛�)
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZStorageInfo鐨勫璞℃暟缁勶紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getStorageStatus:(NSString *)deviceSerial
+                                completion:(void (^)(NSArray *storageStatus, NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙峰拰鍒嗗尯缂栧彿鏍煎紡鍖栧垎鍖猴紙SD鍗★級
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param storageIndex 鏌ヨ杩斿洖鐨勫垎鍖哄彿锛�0琛ㄧず鍏ㄩ儴鏍煎紡鍖栵紝鍙兘浼氭湁鍑犲潡纭洏鐨勬儏鍐�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖琛ㄧず璁剧疆鎴愬姛
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)formatStorage:(NSString *)deviceSerial
+                           storageIndex:(NSInteger)storageIndex
+                             completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙疯幏鍙栬澶囧崌绾ф椂鐨勮繘搴︾姸鎬�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZDeviceUpgradeStatus瀵硅薄锛岄敊璇椂杩斿洖閿欒鐮�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getDeviceUpgradeStatus:(NSString *)deviceSerial
+                                      completion:(void (^)(EZDeviceUpgradeStatus *status, NSError *error))completion;
+
+/**
+ *  閫氳繃璁惧搴忓垪鍙峰璁惧杩涜鍗囩骇鎿嶄綔锛屽墠鎻愭槸璇ヨ澶囨湁鏇存柊杞欢鐨勬彁绀�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖琛ㄧず鎿嶄綔鎴愬姛
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)upgradeDevice:(NSString *)deviceSerial
+                             completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鑾峰彇鎶撳彇鎽勫儚澶村浘鐗囩殑url鎺ュ彛
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖url鍦板潃淇℃伅锛岄敊璇椂杩斿洖閿欒鐮�
+ *  @see 璇ユ帴鍙f瘮杈冭�楁椂锛屼笉寤鸿杩涜鎵归噺璁惧鎶撳浘锛孲DK鍐呴儴鍙敮鎸�6涓猦ttp璇锋眰骞跺彂锛岃鎺ュ彛浼氭寔缁崰鐢╤ttp璇锋眰璧勬簮锛屽鏋滈亣鍒癶ttp璇锋眰寤舵椂宸ㄥぇ闂锛屼紭鍏堣�冭檻鎶撳浘鎺ュ彛骞跺彂閫犳垚鐨勯棶棰�,
+ *  鎶撳浘灏嗗湪鏈嶅姟鍣ㄧ淇濈暀2涓皬鏃�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)captureCamera:(NSString *)deviceSerial
+                               cameraNo:(NSInteger)cameraNo
+                             completion:(void (^)(NSString *url, NSError *error))completion;
+
+/**
+ *  璁剧疆璁惧閫氶亾鐨勬竻鏅板害
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param videoLevel   閫氶亾娓呮櫚搴︼紝0-娴佺晠锛�1-鍧囪 锛�2-楂樻竻锛�3-瓒呮竻
+ *  @param completion   鍥炶皟block锛屾棤error琛ㄧず璁剧疆鎴愬姛
+ *  @see 濡傛灉鏄鍦ㄦ挱鏀炬椂璋冪敤璇ユ帴鍙o紝璁剧疆娓呮櫚搴︽垚鍔熶互鍚庡繀椤昏EZPlayer璋冪敤stopRealPlay鍐嶈皟鐢╯tartRealPlay閲嶆柊鍙栨祦鎵嶆垚瀹屾垚鐢婚潰娓呮櫚搴︾殑鍒囨崲銆�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setVideoLevel:(NSString *)deviceSerial
+                               cameraNo:(NSInteger)cameraNo
+                             videoLevel:(EZVideoLevelType)videoLevel
+                             completion:(void (^)(NSError *error))completion;
+
+/**
+ *  璁惧璁剧疆甯冮槻鐘舵�侊紝鍏煎A1鍜孖PC璁惧鐨勫竷闃�
+ *
+ *  @param defence      甯冮槻鐘舵��, IPC甯冮槻鐘舵�佸彧鏈�0鍜�1锛孉1鏈�0:鐫$湢 8:鍦ㄥ 16:澶栧嚭
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖琛ㄧず璁剧疆鎴愬姛
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setDefence:(EZDefenceStatus)defence
+                        deviceSerial:(NSString *)deviceSerial
+                          completion:(void (^)(NSError *error))completion;
+
+#pragma mark - 浜戝彴鎺у埗Api
+
+/**
+ *  PTZ 鎺у埗鎺ュ彛
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param command      ptz鎺у埗鍛戒护
+ *  @param action       鎺у埗鍚姩/鍋滄
+ *  @param speed        浜戝彴閫熷害锛�0-鎱紝1-閫備腑锛�2-蹇�
+ *  @param resultBlock  鍥炶皟block锛屽綋error涓虹┖鏃惰〃绀烘搷浣滄垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)controlPTZ:(NSString *)deviceSerial
+                            cameraNo:(NSInteger)cameraNo
+                             command:(EZPTZCommand)command
+                              action:(EZPTZAction)action
+                               speed:(NSInteger)speed
+                              result:(void (^)(NSError *error))resultBlock;
+
+/**
+ *  鎽勫儚澶存樉绀烘帶鍒舵帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param command      鏄剧ず鎺у埗鍛戒护
+ *  @param resultBlock  鍥炶皟block锛屽綋error涓虹┖鏃惰〃绀烘搷浣滄垚鍔�
+ */
++ (void)controlVideoFlip:(NSString *)deviceSerial
+                cameraNo:(NSInteger)cameraNo
+                 command:(EZDisplayCommand)command
+                  result:(void (^)(NSError *error))resultBlock;
+
+#pragma mark - 浜戝瓨鍌ㄧ浉鍏矨pi
+
+/**
+ *  妫�鏌ュ浗瀹舵槸鍚︽敮鎸佷簯瀛樺偍鏈嶅姟
+ *
+ *  @param completion 鍥炶皟
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)isSupportCloundService:(void (^)(BOOL isSupport, NSError *error))completion;
+
+/**
+ *  鏌ヨ浜戝瓨鍌ㄨ澶囬�氶亾濂楅淇℃伅
+ *
+ *  @param deviceSerial     璁惧搴忓垪鍙�
+ *  @param channelNo            閫氶亾鍙�
+ *  @param completion          鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getCloundDevicePackageInfo:(NSString *)deviceSerial
+                                           channelNo:(NSInteger)channelNo
+                                          completion:(void (^)(EZDeviceCloudServiceInfo *serviceInfo, NSError *error))completion;
+
+/**
+ *  浜戝瓨鍌ㄥ姛鑳芥殏鍋滄仮澶�
+ *
+ *  @param deviceSerial     璁惧搴忓垪鍙�
+ *  @param channelNo            閫氶亾鍙�
+ *  @param enable                   NO-绂佺敤锛孻ES-鍚敤
+ *  @param completion          鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setCloundServiceActive:(NSString *)deviceSerial
+                                       channelNo:(NSInteger)channelNo
+                                          enable:(BOOL)enable
+                                      completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏌ヨ鏌愭湀涓湁瑙嗛鏂囦欢鐨勫ぉ(鏃ユ湡)
+ *
+ *  @param deviceSerial     璁惧搴忓垪鍙�
+ *  @param channelNo            閫氶亾鍙�
+ *  @param month                     鏌ヨ鏌愭湀鍏锋湁浜戝瓨鍌ㄧ殑鏃ユ湡锛屾牸寮忎负yyyyMM
+ *  @param completion          鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getCloudVideoDays:(NSString *)deviceSerial
+                                  channelNo:(NSInteger)channelNo
+                                      month:(NSString *)month
+                                 completion:(void (^)(NSArray<NSString *> *dayArray, NSError *error))completion;
+
+/**
+ *  鎸夎澶囬�氶亾鍒犻櫎鎵�鏈変簯瀛樺偍褰曞儚鐗囨
+ *
+ *  @param deviceSerial     璁惧搴忓垪鍙�
+ *  @param channelNo            閫氶亾鍙�
+ *  @param completion          鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)deleteAllCloudVideo:(NSString *)deviceSerial
+                                    channelNo:(NSInteger)channelNo
+                                   completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鍒犻櫎浜戝瓨鍌ㄥ綍鍍忕墖娈�
+ *
+ *  @param deviceSerial     璁惧搴忓垪鍙�
+ *  @param channelNo            閫氶亾鍙�
+ *  @param videos                   瑙嗛鏁扮粍锛堥檺鍒�30涓互鍐咃級
+ *  @param completion          鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)deleteCloudVideoFragment:(NSString *)deviceSerial
+                                         channelNo:(NSInteger)channelNo
+                                            videos:(NSArray *)videos
+                                        completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鎸夊ぉ澧為噺鏌ヨ浜戝瓨鍌ㄥ綍鍍忓垪琛ㄦ帴鍙�(姒傝淇℃伅)
+ *
+ *  @param deviceSerial     璁惧搴忓垪鍙�
+ *  @param channelNo            閫氶亾鍙�
+ *  @param videoType            褰曞儚绫诲瀷videoType
+ *  @param searchDate          鏌ユ壘鏂囦欢鏃ユ湡yyyy-MM-dd
+ *  @param maxCreateTime   鏌ユ壘鏂囦欢鐨勮捣濮嬫椂闂磞yyy-MM-dd HH:mm:ss锛岃淇濊瘉鍜宻earchDate鏄悓涓�澶╋紝鍚﹀垯鎶ラ敊銆傞粯璁や粠 yyyy-MM-dd 00:00:00寮�濮嬶紝闈炲繀濉紝鍙紶nil
+ *  @param completion          鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getIncrCloudVideos:(NSString *)deviceSerial
+                                   channelNo:(NSInteger)channelNo
+                                   videoType:(EZCloudVideoType)videoType
+                                  searchDate:(NSString *)searchDate
+                               maxCreateTime:(NSString *)maxCreateTime
+                                  completion:(void (^)(NSArray *abstractvideos, NSError *error))completion;
+
+/**
+ *  鏍规嵁鏂囦欢id鎵归噺鏌ヨ璇︽儏淇℃伅鎺ュ彛
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param channelNo        閫氶亾鍙�
+ *  @param videos               褰曞儚姒傝淇℃伅鏁扮粍
+ *  @param completion      鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getCloudVideoDetails:(NSString *)deviceSerial
+                                     channelNo:(NSInteger)channelNo
+                                        videos:(NSArray *)videos
+                                    completion:(void (^)(NSArray *couldRecords, NSError *error))completion;
+
+#pragma mark - 鍛婅鐩稿叧Api
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙疯幏鍙栧憡璀︿俊鎭垪琛紝璁惧搴忓垪鍙蜂负nil鏃舵煡璇㈡暣涓处鎴蜂笅鐨勫憡璀︿俊鎭垪琛�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param pageIndex    鍒嗛〉褰撳墠椤电爜锛堜粠0寮�濮嬶級
+ *  @param pageSize     鍒嗛〉姣忛〉鏁伴噺锛堝缓璁�20浠ュ唴锛�
+ *  @param beginTime    鎼滅储鏃堕棿鑼冨洿寮�濮嬫椂闂�
+ *  @param endTime      鎼滅储鏃堕棿鑼冨洿缁撴潫鏃堕棿
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZAlarmInfo鐨勫璞℃暟鎹拰鏌ヨ鏃堕棿鑼冨洿鍐呯殑鍛婅涓暟鐨勬�绘暟锛岄敊璇椂杩斿洖閿欒鐮�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getAlarmList:(NSString *)deviceSerial
+                             pageIndex:(NSInteger)pageIndex
+                              pageSize:(NSInteger)pageSize
+                             beginTime:(NSDate *)beginTime
+                               endTime:(NSDate *)endTime
+                            completion:(void (^)(NSArray *alarmList, NSInteger totalCount, NSError *error))completion;
+
+/**
+ *  鍛婅鍥剧墖瑙e瘑鏂规硶锛岃澶囧姞瀵�
+ *
+ *  @param data       闇�瑕佽В瀵嗙殑鏁版嵁
+ *  @param verifyCode 璁惧楠岃瘉鐮�
+ *
+ *  @return 瑙e瘑鐨凬SData瀵硅薄锛屽鏋滆繑鍥炵殑鏁版嵁鏄┖鐨勶紝璇锋鏌ュ瘑鐮佹槸鍚︽纭垨鑰呬紶鍏ョ殑鏁版嵁鏄惁姝g‘銆�
+ */
++ (NSData *)decryptData:(NSData *)data verifyCode:(NSString *)verifyCode;
+
+/**
+ *  鍛婅鍥剧墖瑙e瘑鏂规硶锛岃澶囧姞瀵�
+ *
+ *  @param data       闇�瑕佽В瀵嗙殑鏁版嵁
+ *  @param verifyCode 璁惧楠岃瘉鐮�
+ *  @param type 1:璁惧鍔犲瘑锛�2锛氬钩鍙板姞瀵�
+ *
+ *  @return 瑙e瘑鐨凬SData瀵硅薄锛屽鏋滆繑鍥炵殑鏁版嵁鏄┖鐨勶紝璇锋鏌ュ瘑鐮佹槸鍚︽纭垨鑰呬紶鍏ョ殑鏁版嵁鏄惁姝g‘銆�
+ */
++ (NSData *)decryptData:(NSData *)data verifyCode:(NSString *)verifyCode encryptType:(NSInteger)type;
+
+/**
+ *  璁剧疆鍛婅淇℃伅涓哄凡璇绘帴鍙�
+ *
+ *  @param alarmIds   鍛婅淇℃伅Id鏁扮粍(鍙互鍙湁涓�涓狪d)锛屾渶澶氫负10涓猧d,鍚﹀垯浼氭姤閿�
+ *  @param status     鍛婅娑堟伅鐘舵��
+ *  @param completion 鍥炶皟block锛宔rror涓虹┖鏃惰〃绀鸿缃垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setAlarmStatus:(NSArray *)alarmIds
+                             alarmStatus:(EZMessageStatus)status
+                              completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁alarmId鍒犻櫎鍛婅淇℃伅鎺ュ彛
+ *
+ *  @param alarmIds   鍛婅淇℃伅Id鏁扮粍(鍙互鍙湁涓�涓狪d)锛屾渶澶氫负10涓狪d锛屽惁鍒欎細鎶ラ敊
+ *  @param completion 鍥炶皟block锛宔rror涓虹┖鏃惰〃绀哄垹闄ゆ垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)deleteAlarm:(NSArray *)alarmIds
+                           completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙疯幏鍙栨湭璇绘秷鎭暟锛岃澶囧簭鍒楀彿涓虹┖鏃惰幏鍙栨墍鏈夎澶囩殑鏈娑堟伅鏁�
+ *
+ *  @param deviceSerial 闇�瑕佽幏鍙栫殑璁惧搴忓垪鍙凤紝涓虹┖鏃惰繑鍥炶处鎴蜂笅鎵�鏈夎澶囩殑鏈娑堟伅鏁�
+ *  @param type         娑堟伅绫诲瀷锛欵ZMessageTypeAlarm 鍛婅娑堟伅锛�1锛夛紝EZMessageTypeLeave 鐣欒█娑堟伅锛�2锛�
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖鏈鏁伴噺锛岄敊璇椂杩斿洖閿欒鐮�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getUnreadMessageCount:(NSString *)deviceSerial
+                                    messageType:(EZMessageType)type
+                                     completion:(void (^)(NSInteger count, NSError *error))completion;
+
+#pragma mark - 璇煶鐣欒█娑堟伅鏁版嵁Api
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙疯幏鍙栬澶囩殑鐣欒█娑堟伅鍒楄〃
+ *
+ *  @param deviceSerial 闇�瑕佽幏鍙栫殑璁惧搴忓垪鍙�
+ *  @param beginTime    寮�濮嬫椂闂�
+ *  @param endTime      缁撴潫鏃堕棿
+ *  @param pageIndex    鍒嗛〉椤电爜
+ *  @param pageSize     鍒嗛〉鍗曢〉鏁伴噺
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZLeaveMessage鐨勫璞℃暟缁勶紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getLeaveMessageList:(NSString *)deviceSerial
+                                    pageIndex:(NSInteger)pageIndex
+                                     pageSize:(NSInteger)pageSize
+                                    beginTime:(NSDate *)beginTime
+                                      endTime:(NSDate *)endTime
+                                   completion:(void (^)(NSArray *leaveMessageList, NSInteger totalCount, NSError *error))completion;
+
+/**
+ *  鏍规嵁leaveId璁剧疆鐣欒█娑堟伅鐘舵��
+ *
+ *  @param leaveIds   鐣欒█娑堟伅Id鏁扮粍(鏈�澶ф暟閲忎负10锛屽厑璁稿彧鏈�1涓�)
+ *  @param status     闇�瑕佽缃殑鐣欒█鐘舵�侊紝鐩墠鍙敮鎸� EZMessageStatusRead(宸茶)
+ *  @param completion 鍥炶皟block锛宔rror涓虹┖琛ㄧず璁剧疆鎴愬姛
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setLeaveMessageStatus:(NSArray *)leaveIds
+                                  messageStatus:(EZMessageStatus)status
+                                     completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁leaveId鍒犻櫎鐣欒█娑堟伅
+ *
+ *  @param leaveIds   鐣欒█娑堟伅Id鏁扮粍(鏈�澶ф暟閲忎负10锛屽厑璁稿彧鏈�1涓�)
+ *  @param completion 鍥炶皟block锛宔rror涓虹┖琛ㄧず鍒犻櫎鎴愬姛
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)deleteLeaveMessage:(NSArray *)leaveIds
+                                  completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁EZLeaveMessage瀵硅薄淇℃伅鑾峰彇璇煶鐣欒█娑堟伅鏁版嵁鎺ュ彛
+ *  @param message    鐣欒█娑堟伅瀵硅薄
+ *  @param completion 鍥炶皟block 锛坮esultCode = 1 琛ㄧず璇煶涓嬭浇鎴愬姛锛�-1琛ㄧず涓嬭浇澶辫触锛�
+ *
+ *  @return operation
+ */
++ (NSOperation *)getLeaveMessageData:(EZLeaveMessage *)message
+                          completion:(void (^)(NSData *data, NSInteger resultCode))completion;
+
+#pragma mark - VideoTalk瑙嗛閫氳瘽鐩稿叧Api
+
+/**
+ * 鑾峰彇鎵嬭〃鏈嶅姟鐩稿叧淇℃伅
+ * @param deviceId 璁惧搴忓垪鍙�
+ * @param completion operation
+ */
++ (void)requestGetWatchServerInfo:(NSString *)deviceId
+                       completion:(void (^)(id watchServerInfo, NSError *error))completion;
+
+#pragma mark - WiFi閰嶇綉鐩稿叧Api
+
+/**
+ *  灏濊瘯鏌ヨ璁惧淇℃伅锛岃澶嘩ifi閰嶇疆鍓嶆煡璇竴娆¤澶囩殑淇℃伅
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param deviceType 璁惧鍨嬪彿锛屾棤娉曡幏鍙栧埌璁惧鍨嬪彿鍒欏彲浼爊il
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZProbeDeviceInfo瀵硅薄锛岄敊璇爜杩斿洖閿欒鐮�
+ *  @see 鍏ㄦ柊鐨勮澶囨槸娌℃湁娉ㄥ唽鍒板钩鍙扮殑锛屾墍浠ヤ細鍑虹幇璁惧涓嶅瓨鍦ㄧ殑鎯呭喌锛岃澶噖ifi閰嶇疆鎴愬姛浠ュ悗浼氫笂鎶ユ暟鎹埌钀ょ煶浜戝钩鍙帮紝浠ュ悗姣忔鏌ヨ灏变笉浼氬嚭鐜拌澶囦笉瀛樺湪鐨勬儏鍐典簡銆�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)probeDeviceInfo:(NSString *)deviceSerial
+                               deviceType:(NSString *)deviceType
+                               completion:(void (^)(EZProbeDeviceInfo *deviceInfo, NSError *error))completion;
+
+/**
+ *  WiFi閰嶇疆寮�濮嬫帴鍙�
+ *
+ *  @param ssid         杩炴帴WiFi SSID
+ *  @param password     杩炴帴WiFi 瀵嗙爜
+ *  @param deviceSerial 杩炴帴WiFi鐨勮澶囩殑璁惧搴忓垪鍙�
+ *  @param statusBlock  杩斿洖杩炴帴璁惧鐨刉iFi閰嶇疆鐘舵��
+ *
+ *  @return YES/NO
+ */
++ (BOOL)startConfigWifi:(NSString *)ssid
+               password:(NSString *)password
+           deviceSerial:(NSString *)deviceSerial
+           deviceStatus:(void (^)(EZWifiConfigStatus status))statusBlock;
+
+/**
+ *  WiFi閰嶇疆寮�濮嬫帴鍙�
+ *
+ *  @param ssid         杩炴帴WiFi SSID
+ *  @param password     杩炴帴WiFi 瀵嗙爜
+ *  @param deviceSerial 杩炴帴WiFi鐨勮澶囩殑璁惧搴忓垪鍙�,鎵归噺閰嶇疆鏃跺~nil
+ *  @param mode         閰嶇綉鐨勬柟寮忥紝EZWiFiConfigMode涓垪涓剧殑妯″紡杩涜浠绘剰缁勫悎,渚嬪:EZWiFiConfigSmart|EZWiFiConfigWave
+ *  @param statusBlock  杩斿洖璁惧搴忓垪鍙蜂互鍙婂綋鍓嶈繛鎺ョ姸鎬�
+ *
+ *  @return YES/NO
+ */
++ (BOOL)startConfigWifi:(NSString *)ssid
+               password:(NSString *)password
+           deviceSerial:(NSString *)deviceSerial
+                   mode:(NSInteger)mode
+           deviceStatus:(void (^)(EZWifiConfigStatus status, NSString *deviceSerial))statusBlock;
+
+/**
+ *  @since 3.0.0
+ *  Wifi閰嶇疆鍋滄鎺ュ彛
+ *
+ *  @return YES/NO
+ */
++ (BOOL)stopConfigWifi;
+
+#pragma mark - AP閰嶇綉鐩稿叧Api
+
+/**
+ * AP閰嶇綉鎺ュ彛
+ *
+ * @param ssid WiFi鐨剆sid
+ * @param password WiFi鐨勫瘑鐮�
+ * @param deviceSerial 璁惧搴忓垪鍙�
+ * @param verifyCode 璁惧楠岃瘉鐮�
+ * @param callback 缁撴灉鍥炶皟锛屾敞鎰忥細杩斿洖YES浠呬粎浠h〃鎴愬姛灏哤iFi淇℃伅鍙戦�佺粰璁惧锛屼笉浠h〃璁惧閰嶇綉鎴愬姛
+ * @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)startAPConfigWifiWithSsid:(NSString *)ssid
+                         password:(NSString *)password
+                     deviceSerial:(NSString *)deviceSerial
+                       verifyCode:(NSString *)verifyCode
+                           result:(void (^)(BOOL ret))callback;
+
+/**
+ * AP閰嶇綉鎺ュ彛锛堟帹鑽愶紝v5.0鏂板锛屽皝瑁呬簡璁惧鐘舵�佽疆璇㈡楠わ級
+ *
+ * @param ssid WiFi鐨剆sid
+ * @param password WiFi鐨勫瘑鐮�
+ * @param deviceSerial 璁惧搴忓垪鍙�
+ * @param verifyCode 璁惧楠岃瘉鐮�
+ * @param statusBlock 缁撴灉鍥炶皟锛岃繑鍥為厤缃戣繃绋嬩腑鐨勫悇绉嶇姸鎬�
+ *
+ * @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)startAPConfigWifiWithSsid:(NSString *)ssid
+                         password:(NSString *)password
+                     deviceSerial:(NSString *)deviceSerial
+                       verifyCode:(NSString *)verifyCode
+                     deviceStatus:(void (^)(EZWifiConfigStatus status, NSString *deviceSerial))statusBlock;
+
+/**
+ * 鍋滄AP閰嶇綉
+ */
++ (void)stopAPConfigWifi;
+
+#pragma mark - 鎺ヨЕ寮忛厤缃� New AP Config
+
+/**
+ * 鑾峰彇鎺ヨЕ寮廇P閰嶇綉token
+ *
+ * @param completion 鍥炶皟
+ *
+ * @return operation
+ */
++ (NSURLSessionDataTask *)getNewApConfigToken:(void(^)(EZConfigTokenInfo *tokenInfo, NSError *error))completion;
+
+/**
+ * 寮�濮婲ewAP閰嶇綉锛堥渶杩炴帴璁惧鐑偣锛�
+ * @param token 閰嶇綉token
+ * @param ssid WiFi ssid
+ * @param password WiFi 瀵嗙爜
+ * @param lbsDomain lbs 鍩熷悕
+ * @param handler 鍥炶皟
+ *
+ * @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)startNewApConfigWithToken:(NSString *)token
+                             ssid:(NSString *)ssid
+                         password:(NSString *)password
+                        lbsDomain:(NSString *)lbsDomain
+                completionHandler:(void(^)(EZNewAPConfigStatus status, NSError *error))handler;
+
+/**
+ * 鑾峰彇璁惧鐘舵�侊紙闇�杩炴帴璁惧鐑偣锛�
+ *
+ * @param handler 鍥炶皟
+ */
++ (void)getAccessDeviceInfo:(void(^)(EZAPDevInfo *devInfo, NSError *error))handler;
+
+/**
+ * 鑾峰彇璁惧褰撳墠鍛ㄨ竟WiFi鍒楄〃锛屼笂闄�20涓紙闇�杩炴帴璁惧鐑偣锛�
+ *
+ * @param handler 鍥炶皟
+ */
++ (void)getAccessDeviceWifiList:(void(^)(NSArray<EZWiFiItemInfo*> *wifiList, NSError *error))handler;
+
+/**
+ * 鏌ヨ璁惧缁戝畾鐘舵��
+ * @param deviceSerial 璁惧搴忓垪鍙�
+ * @param completion 鍥炶皟block锛屾甯告椂杩斿洖EZProbeDeviceInfo瀵硅薄锛岄敊璇爜杩斿洖閿欒鐮�
+ *
+ * @return 鎴愬姛鎴栧け璐�
+ */
++ (NSURLSessionDataTask *)queryPlatformBindStatus:(NSString *)deviceSerial
+                                       completion:(void(^)(EZProbeDeviceInfo *deviceInfo, NSError *error))completion;
+
+/**
+ * 璁剧疆閰嶇綉璁惧缃戝叧鍦板潃 鍙��
+ * @param devRouteDomain 璁惧缃戝叧鍦板潃
+ */
++ (void)setDevRouteDomain:(NSString *)devRouteDomain;
+
+#pragma mark - 鐢ㄦ埛鐩稿叧Api
+
+/**
+ *  鑾峰彇鐢ㄦ埛鍩烘湰淇℃伅鐨勬帴鍙�
+ *
+ *  @param completion 鍥炶皟block锛� 姝e父鏃惰繑鍥濫ZUserInfo鐨勫璞★紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getUserInfo:(void (^)(EZUserInfo *userInfo, NSError *error))completion;
+
+#pragma mark - 鍏朵粬Api
+
+/**
+ *  鑾峰彇鍖哄煙鍒楄〃鎺ュ彛
+ *
+ *  @param completion 鍥炶皟block锛宎reaList涓殑鍏冪礌涓篍ZAreaInfo瀵硅薄
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getAreaList:(void (^)(NSArray *areaList, NSError *error))completion;
+
+/**
+ *  鑾峰彇缁堢锛堟墜鏈虹瓑锛夊敮涓�璇嗗埆鐮�
+ *
+ *  @return 缁堢鍞竴璇嗗埆鐮�
+ */
++ (NSString *)getTerminalId;
+
+/**
+ 鏍规嵁搴旂敤绫诲瀷鍒ゆ柇鏄惁瀹夎浜嗗搴旂殑搴旂敤
+ 
+ @param appType 搴旂敤绫诲瀷
+ @return YES:宸插畨瑁咃紝NO:娌℃湁瀹夎鎴栧畨瑁呯殑钀ょ煶APP鐗堟湰杩囦綆
+ */
+//+ (BOOL)isEzvizAppInstalledWithType:(EZAppType)appType;
+
+
+/**
+ 璺宠浆鍒版寚瀹氳悿鐭矨PP杩涜鎺堟潈鐧诲綍
+
+ @param appType 钀ょ煶APP绫诲瀷
+ @return 璺宠浆缁撴灉
+ */
+//+ (BOOL)ezvizLoginWithAppType:(EZAppType)appType;
+
+/**
+ 璺宠浆鍒版寚瀹欰PP鐨勬寚瀹氱晫闈�
+ 
+ @param pageType 鐣岄潰绫诲瀷
+ @param appType APP绫诲瀷
+ @return 璺宠浆缁撴灉
+ */
+//+ (BOOL)gotoEzvizAppPage:(EZAppPageType)pageType appType:(EZAppType)appType;
+
+#pragma mark - DDNS鐩稿叧
+
+/**
+ *  閫氳繃璁惧搴忓垪鍙峰拰璁惧鍩熷悕鑾峰彇璁惧ddns淇℃伅
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param domain 璁惧鍩熷悕
+ *  @param completion   鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getHiddnsDeviceInfo:(NSString *)deviceSerial
+                                       domain:(NSString *)domain
+                                   completion:(void (^)(EZHiddnsDeviceInfo *ddnsDeviceInfo, NSError *error))completion;
+
+/**
+ *  璇ユ帴鍙g敤浜庤缃澶嘾dns鍩熷悕锛屽寘鎷缃垎浜幏寰楃殑璁惧鐨刣dns鍩熷悕
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param domain 璁惧鍩熷悕,璁惧鍩熷悕瑙勫垯淇敼锛屼笉鑳戒负绌猴紝6-32浣嶏紝鍙互涓烘湰韬簭鍒楀彿锛屽寘鍚皬鍐欏瓧姣嶃�佹暟瀛椼��-锛岄浣嶅繀椤诲瓧姣嶏紝鏈綅涓嶈兘涓�-
+ *  @param completion   鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setHiddnsDomain:(NSString *)deviceSerial
+                                   domain:(NSString *)domain
+                               completion:(void (^)(NSError *error))completion;
+
+/**
+ *  璁剧疆璁惧鐨凞DNS鏄犲皠鏂瑰紡涓鸿嚜鍔ㄦ槧灏�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setHiddnsModeAuto:(NSString *)deviceSerial
+                                 completion:(void (^)(NSError *error))completion;
+
+/**
+ *  璁剧疆璁惧鐨凞DNS鏄犲皠鏂瑰紡涓烘墜鍔ㄦ槧灏�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param httpPort http绔彛鍙�
+ *  @param cmdPort 鏈嶅姟绔彛鍙�
+ *  @param completion   鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setHiddnsModeManual:(NSString *)deviceSerial
+                                     httpPort:(NSInteger)httpPort
+                                      cmdPort:(NSInteger)cmdPort
+                                   completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鑾峰彇褰撳墠璐﹀彿涓嬬殑鎵�鏈夎澶囩殑DDNS淇℃伅
+ *
+ *  @param pageIndex 鍒嗛〉璧峰椤碉紝浠�0寮�濮嬶紝榛樿涓�0
+ *  @param pageSize 鍒嗛〉澶у皬锛岄粯璁や负10锛屾渶澶т负50
+ *  @param completion   鍥炶皟block ddnsDeviceList涓璞′负EZHiddnsDeviceInfo
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getHiddnsDeviceList:(NSInteger)pageIndex
+                                     pageSize:(NSInteger)pageSize
+                                   completion:(void (^)(NSArray *ddnsDeviceList, NSInteger totalCount, NSError *error))completion;
+
+/**
+ *  鎶婂崟涓澶囩殑DDNS淇℃伅鍒嗕韩缁欏叾浠栬处鎴�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param account 琚垎浜处鎴凤紝鍙互鏄偖绠卞湴鍧�鎴栨墜鏈哄彿鐮侊紙鍖呭惈鍥藉浠g爜锛夋垨涓嶆槸鍏ㄦ暟瀛楃殑鐢ㄦ埛鍚�
+ *  @param completion   鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)shareHiddnsDevice:(NSString *)deviceSerial
+                                    account:(NSString *)account
+                                 completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鑾峰彇褰撳墠璐﹀彿涓嬬殑鎵�鏈夌殑鍏跺畠璐︽埛鍒嗕韩缁欒嚜宸辩殑璁惧DDNS淇℃伅
+ *
+ *  @param pageIndex 鍒嗛〉璧峰椤碉紝浠�0寮�濮嬶紝榛樿涓�0
+ *  @param pageSize 鍒嗛〉澶у皬锛岄粯璁や负10锛屾渶澶т负50
+ *  @param completion   鍥炶皟block ddnsDeviceList涓璞′负EZHiddnsDeviceInfo
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getShareHiddnsDeviceList:(NSInteger)pageIndex
+                                          pageSize:(NSInteger)pageSize
+                                        completion:(void (^)(NSArray *ddnsDeviceList, NSInteger totalCount, NSError *error))completion;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZHCNetDeviceInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZHCNetDeviceInfo.h
new file mode 100644
index 0000000..23946a9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZHCNetDeviceInfo.h
@@ -0,0 +1,36 @@
+//
+//  EZHCNetDeviceInfo.h
+//  EzvizOpenSDK
+//
+//  Created by linyong on 2017/9/15.
+//  Copyright 漏 2017骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface EZHCNetDeviceInfo : NSObject
+
+///鐧诲綍鍚巙ser id
+@property (nonatomic,assign) NSInteger userId;
+///妯℃嫙閫氶亾鏁�
+@property (nonatomic,assign) NSInteger channelCount;
+///妯℃嫙閫氶亾璧峰閫氶亾鍙�,0涓烘棤鏁堟灉
+@property (nonatomic,assign) NSInteger startChannelNo;
+///鏁板瓧閫氶亾鏁�
+@property (nonatomic,assign) NSInteger dChannelCount;
+///璧峰鏁板瓧閫氶亾鍙凤紝0涓烘棤鏁堟灉
+@property (nonatomic,assign) NSInteger dStartChannelNo;
+///鍛婅杈撳叆涓暟
+@property (nonatomic,assign) NSInteger byAlarmInPortNum;
+///鍛婅杈撳嚭涓暟
+@property (nonatomic,assign) NSInteger byAlarmOutPortNum;
+///纭洏涓暟
+@property (nonatomic,assign) NSInteger byDiskNum;
+///璁惧绫诲瀷
+@property (nonatomic,assign) NSInteger byDVRType;
+///闆堕�氶亾涓暟
+@property (nonatomic,assign) NSInteger byZeroChanNum;
+///璁惧璇煶閫氶亾鏁�
+@property (nonatomic,assign) NSInteger byAudioChanNum;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZHCNetDeviceSDK.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZHCNetDeviceSDK.h
new file mode 100644
index 0000000..fa3a71f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZHCNetDeviceSDK.h
@@ -0,0 +1,146 @@
+//
+//  EZHCNetDeviceSDK.h
+//  EzvizOpenSDK
+//
+//  Created by linyong on 2017/8/15.
+//  Copyright 漏 2017骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@class EZHCNetDeviceInfo, EZSADPDeviceInfo;
+
+typedef NS_ENUM(int, EZPTZCommandType) {
+    EZPTZCommandType_ZOOM_IN = 11,     /* 鐒﹁窛鍙樺ぇ(鍊嶇巼鍙樺ぇ) */
+    EZPTZCommandType_ZOOM_OUT = 12,    /* 鐒﹁窛鍙樺皬(鍊嶇巼鍙樺皬) */
+    EZPTZCommandType_UP = 21,          /* 浜戝彴涓婁话 */
+    EZPTZCommandType_DOWN,             /* 浜戝彴涓嬩刊 */
+    EZPTZCommandType_LEFT,             /* 浜戝彴宸﹁浆 */
+    EZPTZCommandType_RIGHT,            /* 浜戝彴鍙宠浆 */
+    EZPTZCommandType_UP_LEFT,          /* 浜戝彴涓婁话鍜屽乏杞� */
+    EZPTZCommandType_UP_RIGHT,         /* 浜戝彴涓婁话鍜屽彸杞� */
+    EZPTZCommandType_DOWN_LEFT,        /* 浜戝彴涓嬩刊鍜屽乏杞� */
+    EZPTZCommandType_DOWN_RIGHT,       /* 浜戝彴涓嬩刊鍜屽彸杞� */
+    EZPTZCommandType_PAN_AUTO,         /* 浜戝彴宸﹀彸鑷姩鎵弿 */
+    EZPTZCommandType_MAX               /* 瓒婄晫鏍囪瘑 */
+};
+
+typedef NS_ENUM(int, EZPTZActionType) {
+    EZPTZActionType_START = 0,      /* 寮�濮� */
+    EZPTZActionType_STOP,           /* 鍋滄 */
+    EZPTZActionType_MAX             /* 瓒婄晫鏍囪瘑 */
+};
+
+typedef NS_ENUM(int, EZEncryptType) {
+    EZEncryptType_OEMBlue = 0,              //钃濈簿鐏靛姞瀵�
+    EZEncryptType_OEMGreen,                 //缁垮法浜哄姞瀵�
+    EZEncryptType_normal                    //娌℃湁鍔犲瘑
+};
+
+@interface EZHCNetDeviceSDK : NSObject
+
+/**
+ 鍒濆鍖朣DK
+ */
++ (void)initSDK;
+
+/**
+ 寮�濮嬫悳绱㈠眬鍩熺綉璁惧
+
+ @param searchCallback 鎼滅储缁撴灉鍥炶皟锛屾瘡鎼滃埌涓�涓澶囬兘浼氬洖璋冧竴娆★紝璁惧淇℃伅EZSADPDeviceInfo
+ @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)startLocalSearch:(void(^)(EZSADPDeviceInfo *device,NSError *error))searchCallback;
+
+/**
+ 鍋滄鎼滅储
+
+ @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)stopLocalSearch;
+
+/**
+ 娓呴櫎缁撴灉锛岄噸鏂版悳绱紝鍓嶆彁鏄箣鍓嶅紑鍚繃鎼滅储
+ */
++ (void)research;
+
+/**
+ 鑾峰彇SADP鐗堟湰鍙�
+ */
++ (int)getSadpVersion;
+
+/**
+ 婵�娲昏澶囷紝璋冪敤stopLocalSearch鍚庡皢鏃犳硶婵�娲昏澶�
+
+ @param serial 璁惧搴忓垪鍙�
+ @param pwd 婵�娲诲瘑鐮�
+ @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)activeDeviceWithSerial:(NSString *)serial pwd:(NSString *)pwd;
+
+/**
+ 鐧诲綍灞�鍩熺綉璁惧
+
+ @param userName 鐢ㄦ埛鍚�
+ @param pwd 鐢ㄦ埛瀵嗙爜
+ @param ipAddr 璁惧ip鍦板潃
+ @param port 璁惧绔彛鍙�
+ @return 鐧诲綍閿欒鏃惰繑鍥瀗il
+ */
++ (EZHCNetDeviceInfo *)loginDeviceWithUerName:(NSString *)userName
+                                          pwd:(NSString *)pwd
+                                       ipAddr:(NSString *)ipAddr
+                                         port:(NSInteger)port;
+
+/**
+ 鐧诲嚭灞�鍩熺綉璁惧
+
+ @param userId 鐢ㄦ埛id
+ @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)logoutDeviceWithUserId:(NSInteger)userId;
+
+/**
+ 灞�鍩熺綉璁惧浜戝彴鎺у埗鎺ュ彛
+
+ @param userId 鐢ㄦ埛id
+ @param channelNo 閫氶亾鍙�
+ @param command 鍛戒护绫诲瀷 EZPTZCommandType
+ @param action 鍔ㄤ綔绫诲瀷 EZPTZActionType
+ @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)ptzControlWithUserId:(NSInteger)userId
+                   channelNo:(NSInteger)channelNo
+                     command:(EZPTZCommandType)command
+                      action:(EZPTZActionType)action;
+
+/**
+ 璁剧疆鍔犲瘑鏂瑰紡
+
+ @param encryptType 鍔犲瘑鏂瑰紡
+ @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)setEncryptType:(EZEncryptType)encryptType;
+
+/**
+ AP閰嶇綉鎺ュ彛
+
+ @param ssid WiFi鐨剆sid
+ @param password WiFi鐨勫瘑鐮�
+ @param deviceSerial 璁惧搴忓垪鍙�
+ @param verifyCode 璁惧楠岃瘉鐮�
+ @param callback 缁撴灉鍥炶皟
+ @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)startAPConfigWifiWithSsid:(NSString *)ssid
+                         password:(NSString *)password
+                     deviceSerial:(NSString *)deviceSerial
+                       verifyCode:(NSString *)verifyCode
+                           result:(void (^)(BOOL ret))callback;
+
+/**
+ 鍋滄AP閰嶇綉
+ */
++ (void)stopAPConfigWifi;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZHiddnsDeviceInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZHiddnsDeviceInfo.h
new file mode 100644
index 0000000..4627fa0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZHiddnsDeviceInfo.h
@@ -0,0 +1,84 @@
+//
+//  EZHiddnsDeviceInfo.h
+//  EzvizOpenSDK
+//
+//  Created by linyong on 2017/9/9.
+//  Copyright 漏 2017骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface EZHiddnsDeviceInfo : NSObject
+
+///璁惧鍩熷悕
+@property (nonatomic,copy) NSString *domain;
+
+///璁惧澶栫綉鍦板潃
+@property (nonatomic,copy) NSString *deviceIp;
+
+///璁惧鐭簭鍒楀彿
+@property (nonatomic,copy) NSString *subSerial;
+
+///璁惧闀垮簭鍒楀彿
+@property (nonatomic,copy) NSString *serial;
+
+///璁惧鍚嶇О
+@property (nonatomic,copy) NSString *deviceName;
+
+///鏄犲皠妯″紡锛�1-鎵嬪姩锛�0-鑷姩
+@property (nonatomic,assign) NSInteger upnpMappingMode;
+
+///鎵嬪姩鏄犲皠http绔彛锛寀pnpMappingMode=1鏃朵娇鐢�
+@property (nonatomic,assign) NSInteger mappingHiddnsHttpPort;
+
+///鏄犲皠http绔彛
+@property (nonatomic,assign) NSInteger hiddnsHttpPort;
+
+///鏄犲皠https绔彛
+@property (nonatomic,assign) NSInteger hiddnsHttpsPort;
+
+///鎵嬪姩鏄犲皠鏈嶅姟绔彛锛寀pnpMappingMode=1鏃朵娇鐢�
+@property (nonatomic,assign) NSInteger mappingHiddnsCmdPort;
+
+///鏄犲皠鏈嶅姟绔彛
+@property (nonatomic,assign) NSInteger hiddnsCmdPort;
+
+///鏄犲皠鍙栨祦绔彛
+@property (nonatomic,assign) NSInteger hiddnsRtspPort;
+
+/////璁惧灞�鍩熺綉IP鍦板潃
+//@property (nonatomic,copy) NSString *localIp;
+//
+/////鏈湴http绔彛
+//@property (nonatomic,assign) NSInteger localHiddnsHttpPort;
+//
+/////鏈湴https绔彛
+//@property (nonatomic,assign) NSInteger localHiddnsHttpsPort;
+//
+/////鏈湴鏈嶅姟绔彛
+//@property (nonatomic,assign) NSInteger localHiddnsCmdPort;
+//
+/////鏈湴鍙栨祦绔彛
+//@property (nonatomic,assign) NSInteger localHiddnsRtspPort;
+//
+/////澶栫綉Telenet绔彛
+//@property (nonatomic,assign) NSInteger cmdPort;
+//
+/////澶栫綉Http鐩戝惉鐨勭鍙PNP妫�娴嬩娇鐢�
+//@property (nonatomic,assign) NSInteger httpPort;
+//
+/////澶栫綉鎺ㄦ祦浣跨敤鐨勭洃鍚鍙�
+//@property (nonatomic,assign) NSInteger streamPort;
+//
+/////鍐呯綉Telent绔彛
+//@property (nonatomic,assign) NSInteger localCmdPort;
+//
+/////鍐呯綉Http鐩戝惉鐨勭鍙PNP妫�娴嬩娇鐢�
+//@property (nonatomic,assign) NSInteger localHttpPort;
+//
+/////鍐呯綉鎺ㄦ祦浣跨敤鐨勭洃鍚鍙�
+//@property (nonatomic,assign) NSInteger localStreamPort;
+
+
+@end
+
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZLeaveMessage.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZLeaveMessage.h
new file mode 100644
index 0000000..dbf5c62
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZLeaveMessage.h
@@ -0,0 +1,41 @@
+//
+//  EZLeaveMessage.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/12/11.
+//  Copyright 漏 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓虹暀瑷�娑堟伅瀵硅薄
+@interface EZLeaveMessage : NSObject
+
+/// 娑堟伅Id
+@property (nonatomic, copy) NSString *id;
+/// 璁惧搴忓垪鍙�
+@property (nonatomic, copy) NSString *deviceSerial;
+/// 璁惧鍚嶇О
+@property (nonatomic, copy) NSString *deviceName;
+/// 鐣欒█鏃堕暱锛堝崟浣嶏細绉掞級
+@property (nonatomic) NSInteger duration;
+/// 鐣欒█娑堟伅绫诲瀷锛�1-璇煶鐣欒█ 2-瑙嗛鐣欒█
+@property (nonatomic) NSInteger contentType;
+/// 鎺ユ敹or鍥炲锛�1-鐢ㄦ埛鎺ユ敹锛堣澶囧彂閫侊級2-鐢ㄦ埛鍥炲锛堝鎴风鍙戦�侊級
+@property (nonatomic) NSInteger messageDirection;
+/// 鍙戦�佺绫诲瀷锛�1鈥揊1璁惧 2鈥揥eb瀹㈡埛绔� 3鈥搃Phone瀹㈡埛绔� 4鈥搃Pad瀹㈡埛绔� 5鈥揳ndroid瀹㈡埛绔� 6鈥揳ndroidPad瀹㈡埛绔�
+@property (nonatomic) NSInteger senderType;
+/// 鍙戦�佺鍒悕
+@property (nonatomic, copy) NSString *senderName;
+/// 鐣欒█灏侀潰鎴浘鍦板潃
+@property (nonatomic, copy) NSString *messagePicUrl;
+/// 娑堟伅鐘舵�侊細0-鏈 1-宸茶 2-鍒犻櫎
+@property (nonatomic) NSInteger status;
+/// 浜戝瓨鍌ㄦ湇鍔″櫒鍦板潃锛岀洰鍓嶉粯璁や负姝︽眽浜戝瓨鍌紝鏍煎紡涓�:{鍩熷悕:绔彛}
+@property (nonatomic, copy) NSString *cloudServerUrl;
+/// 鍒涘缓鏃堕棿
+@property (nonatomic, strong) NSDate *createTime;
+/// 淇敼鏃堕棿
+@property (nonatomic, strong) NSDate *updateTIme;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZOpenSDK.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZOpenSDK.h
new file mode 100644
index 0000000..47fc8e3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZOpenSDK.h
@@ -0,0 +1,946 @@
+//
+//  EZOpenSDK.h
+//  EZOpenSDK
+//
+//  Created by JuneCheng on 2022/7/18.
+//
+
+#import <Foundation/Foundation.h>
+#import "EZConstants.h"
+#import "EZConstants_Auth.h"
+#import "EZConstants_WifiConfig.h"
+
+@class EZPlayer;
+@class EZDeviceInfo;
+@class EZAccessToken;
+@class EZCameraInfo;
+@class EZDeviceVersion;
+@class EZUserInfo;
+@class EZProbeDeviceInfo;
+@class EZDeviceUpgradeStatus;
+@class EZLeaveMessage;
+@class EZWiFiItemInfo, EZAPDevInfo, EZConfigTokenInfo;
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZOpenSDK : NSObject
+
+#pragma mark - Auth璁よ瘉鐩稿叧Api
+
+/**
+ *  瀹炰緥EZOpenSDK鎺ュ彛
+ *
+ *  @param appKey 浼犲叆鐢宠鐨刟ppKey
+ *
+ *  @return YES/NO
+ */
++ (BOOL)initLibWithAppKey:(NSString *)appKey;
+
+/**
+ *  鍒濆鍖栨帴鍙o紝鍙缃湇鍔″櫒锛屾捣澶栫敤鎴蜂娇鐢ㄨ鍒濆鍖栨柟娉�
+ *
+ *  @param appKey 浼犲叆鐢宠鐨刟ppKey
+ *  @param apiUrl apiUrl鍦板潃
+ *  @param authUrl auth鍦板潃
+ *
+ *  @return YES/NO
+ */
++ (BOOL)initLibWithAppKey:(NSString *)appKey
+                      url:(NSString *)apiUrl
+                  authUrl:(NSString *)authUrl;
+
+/**
+ *  閿�姣丒ZOpenSDK鎺ュ彛
+ *
+ *  @return YES/NO
+ */
++ (BOOL)destoryLib;
+
+/**
+ *  璁剧疆鏄惁鎵撳嵃debug鏃ュ織,闇�鍦ㄥ垵濮嬪寲sdk涔嬪墠璋冪敤
+ *
+ *  @param enable 鏄惁鎵撳嵃鏃ュ織锛岄粯璁ゅ叧闂�
+ *
+ *  @return YES/NO
+ */
++ (BOOL)setDebugLogEnable:(BOOL)enable;
+
+/**
+ *  璁剧疆debug鏃ュ織鍥炶皟,闇�鍦ㄥ垵濮嬪寲sdk涔嬪墠璋冪敤
+ *
+ *  @param logCallback 鏃ュ織鍥炶皟
+ */
++ (void)setDebugLogCallBack:(void(^)(NSString *logStr))logCallback;
+
+/**
+ *  鎵撳紑鎺堟潈鐧诲綍涓棿椤甸潰鎺ュ彛
+ *
+ *  @param block 鍥炶皟block
+*/
++ (void)openLoginPage:(void (^)(EZAccessToken *accessToken))block;
+
+/**
+ *  鎺堟潈鐧诲綍浠ュ悗缁橢ZOpenSDK璁剧疆accessToken鎺ュ彛
+ *
+ *  @param accessToken 鎺堟潈鐧诲綍鑾峰彇鐨刟ccessToken
+ */
++ (void)setAccessToken:(NSString *)accessToken;
+
+/**
+ *  璐︽埛娉ㄩ攢鎺ュ彛
+ *
+ *  @param completion 鍥炶皟block锛宔rror涓虹┖琛ㄧず鐧诲嚭鎴愬姛
+ */
++ (void)logout:(void (^)(NSError *error))completion;
+
+
+/**
+ 澶栭儴璺宠浆澶勭悊鏂规硶锛岄�傜敤浜巌OS9浠ヤ笂锛屽寘鎷琲OS9
+
+ @param url 璺宠浆杩囨潵鐨剈rl
+ @param options 鍙傛暟锛岄粯璁や负绌猴紝鐩墠鏈繘琛屽鐞嗭紝棰勭暀
+ @param delegate 濮旀墭
+ @return 缁撴灉
+ */
++ (BOOL)handleOpenUrl:(NSURL *)url options:(NSDictionary *)options delegate:(id<EZOpenSDKDelegate>)delegate;
+
+/**
+ *  鑾峰彇SDK鐗堟湰鍙锋帴鍙�
+ *
+ *  @return 鐗堟湰鍙�
+ */
++ (NSString *)getVersion;
+
+/**
+ *  鎵撳紑浜戝瓨鍌ㄤ腑闂撮〉
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param channelNo    璁惧閫氶亾鍙�
+ */
++ (void)openCloudPage:(NSString *)deviceSerial channelNo:(NSInteger)channelNo;
+
+/**
+ *  鎵撳紑淇敼瀵嗙爜涓棿椤�
+ *
+ *  @param completion 鍥炶皟block resultCode涓�0鏃惰〃绀轰慨鏀瑰瘑鐮佹垚鍔�
+ */
++ (void)openChangePasswordPage:(void (^)(NSInteger resultCode))completion;
+
+/**
+ 鏄惁宸茬粡鐧诲綍
+
+ @return YES锛氬凡缁忕櫥褰曪紱NO锛氭湭鐧诲綍
+ */
++ (BOOL)isLogin;
+
+/**
+ 鑾峰彇褰撳墠accessToken
+
+ @return accessToken
+ */
++ (NSString *)getAccesstoken;
+
+#pragma mark - 鎾斁鍣ㄥ垱寤篈pi
+
+/**
+ *  鏍规嵁cameraId鏋勯�燛ZPlayer瀵硅薄
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *
+ *  @return EZPlayer瀵硅薄
+ */
++ (EZPlayer *)createPlayerWithDeviceSerial:(NSString *)deviceSerial
+                                  cameraNo:(NSInteger)cameraNo;
+
+/**
+ *  鏍规嵁cameraId鏋勯�燛ZPlayer瀵硅薄锛坒or 鍥芥爣锛�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param strCameraNo     閫氶亾鍙�
+ *
+ *  @return EZPlayer瀵硅薄
+ */
++ (EZPlayer *)createPlayerWithDeviceSerial:(NSString *)deviceSerial
+                               strCameraNo:(NSString *)strCameraNo DEPRECATED_MSG_ATTRIBUTE("use createPlayerWithDeviceSerial:cameraNo: instead");
+
+/**
+ *  涓�涓〉闈㈠瓨鍦ㄥ涓棰戜娇鐢ㄦ渶灏忕殑鐮佹祦锛屾病鏈夊瓙鐮佹祦鐨勮瘽杩樻槸浣跨敤涓荤爜娴�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     铏氭嫙閫氶亾
+ *  @param useSubStream   鏄惁浣跨敤瀛愮爜娴�
+ *
+ *  @return EZPlayer瀵硅薄
+ */
++ (EZPlayer *)createPlayerWithDeviceSerial:(NSString *)deviceSerial
+                                  cameraNo:(NSInteger)cameraNo
+                              useSubStream:(BOOL)useSubStream;
+
+/**
+ *  鏍规嵁url鏋勯�燛ZPlayer瀵硅薄 锛堜富瑕佺敤鏉ュ鐞嗚棰戝箍鍦虹殑鎾斁锛�
+ *
+ *  @param url 鎾斁url锛岀洰鍓嶅彧鏀寔璇ュ崗璁細ysproto://vtm.ys7.com:8554/live?dev=531993276&chn=1&stream=1&cln=1&isp=0&biz=3
+ *
+ *  @return EZPlayer瀵硅薄
+ */
++ (EZPlayer *)createPlayerWithUrl:(NSString *)url;
+
+
+/**
+ *  閲婃斁EZPlayer瀵硅薄
+ *
+ *  @param player EZPlayer瀵硅薄
+ *
+ *  @return YES/NO
+ */
++ (BOOL)releasePlayer:(EZPlayer *)player;
+
+#pragma mark - 鍙栨祦鐩稿叧Api
+
+/**
+ *  璁剧疆p2p鍔熻兘鏄惁寮�鍚帴鍙o紝榛樿涓嶅紑鍚痯2p锛岀敤鎴疯嚜宸遍�夋嫨鏄惁寮�鍚�
+ *
+ *  @param enable p2p鏄惁寮�鍚�
+ */
++ (void)enableP2P:(BOOL)enable;
+
+/**
+ *  娓呴櫎鍙栨祦鏃剁殑缂撳瓨鏁版嵁
+ */
++ (void)clearStreamInfoCache;
+
+/**
+ *  鏄惁鏀寔鍥芥爣
+ *  @param enable YES or NO
+ */
++ (void)enableNationalStandard:(BOOL)enable;
+
+/**
+ *  鑾峰彇鎵�鏈夌殑p2p棰勮繛鎺ヨ澶囧簭鍒楀彿锛堝寘鎷鍦ㄨ繘琛岄鎿嶄綔鐨勪互鍙婇鎿嶄綔瀹屾垚鐨勶級
+ *
+ *  @return 璁惧搴忓垪鍙锋暟缁�
+ */
++ (NSArray<NSString *> *)getAllProcessedPreconnectSerials;
+
+/**
+ *  鑾峰彇鎵�鏈夋鍦ㄦ帓闃熺殑p2p棰勮繛鎺ヨ澶囧簭鍒楀彿锛堟寚杩樻病鏈夎繘琛岄鎿嶄綔鐨勶級
+ *
+ *  @return 璁惧搴忓垪鍙锋暟缁�
+ */
++ (NSArray<NSString *> *)getAllToDoPreconnectSerials;
+
+/**
+ *  瀵规煇涓�璁惧杩涜p2p棰勮繛鎺ユ搷浣�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ */
++ (void)startP2PPreconnect:(NSString *)deviceSerial;
+
+/**
+ *  瀵规煇涓�璁惧杩涜p2p棰勮繛鎺ユ竻闄ゆ搷浣�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ */
++ (void)clearP2PPreconnect:(NSString *)deviceSerial;
+
+#pragma mark - 褰曞儚鏌ヨApi
+
+/**
+ *  鏌ヨ浜戝瓨鍌ㄥ綍鍍忎俊鎭垪琛ㄦ帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param beginTime    鏌ヨ鏃堕棿鑼冨洿寮�濮嬫椂闂�
+ *  @param endTime      鏌ヨ鏃堕棿鑼冨洿缁撴潫鏃堕棿
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZCloudRecordFile鐨勫璞℃暟缁勶紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)searchRecordFileFromCloud:(NSString *)deviceSerial
+                                           cameraNo:(NSInteger)cameraNo
+                                          beginTime:(NSDate *)beginTime
+                                            endTime:(NSDate *)endTime
+                                         completion:(void (^)(NSArray *couldRecords, NSError *error))completion;
+
+/**
+ *  鏌ヨ杩滅▼SD鍗″瓨鍌ㄥ綍鍍忎俊鎭垪琛ㄦ帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param beginTime    鏌ヨ鏃堕棿鑼冨洿寮�濮嬫椂闂�
+ *  @param endTime      鏌ヨ鏃堕棿鑼冨洿缁撴潫鏃堕棿
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZDeviceRecordFile鐨勫璞℃暟缁勶紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)searchRecordFileFromDevice:(NSString *)deviceSerial
+                                            cameraNo:(NSInteger)cameraNo
+                                           beginTime:(NSDate *)beginTime
+                                             endTime:(NSDate *)endTime
+                                          completion:(void (^)(NSArray *deviceRecords, NSError *error))completion;
+
+/**
+ *  鏌ヨ杩滅▼SD鍗″瓨鍌ㄥ綍鍍忎俊鎭垪琛ㄦ帴鍙o紝鍚屼竴涓綍鍍忓彲浠ュ悓鏃舵槸瀹氭椂褰曞儚鍜屼簨浠跺綍鍍�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param beginTime    鏌ヨ鏃堕棿鑼冨洿寮�濮嬫椂闂�
+ *  @param endTime      鏌ヨ鏃堕棿鑼冨洿缁撴潫鏃堕棿
+ *  @param videoRecordType      褰曞儚绫诲瀷
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZDeviceRecordFile鐨勫璞℃暟缁勶紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)searchRecordFileFromDevice:(NSString *)deviceSerial
+                                            cameraNo:(NSInteger)cameraNo
+                                           beginTime:(NSDate *)beginTime
+                                             endTime:(NSDate *)endTime
+                                     videoRecordType:(EZVideoRecordType)videoRecordType
+                                          completion:(void (^)(NSArray *deviceRecords, NSError *error))completion;
+
+/**
+ *  鑾峰彇鎸囧畾鏃堕棿鍐呯殑鎵�鏈夊綍鍍忔枃浠�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙凤紝浼犲叆<=0鐨勫�煎垯涓洪粯璁ゅ��
+ *  @param beginTime    寮�濮嬫椂闂达紝浼犲叆nil鍒欎负褰撳ぉ00:00:00
+ *  @param endTime      缁撴潫鏃堕棿锛屼紶鍏il鍒欎负褰撳ぉ23:59:59
+ *  @param rectype      鍥炴斁婧愶紝0-绯荤粺鑷姩閫夋嫨锛�1-浜戝瓨鍌紝2-鏈湴褰曞儚銆傞潪蹇呴�夛紝榛樿涓�0锛屼紶鍏ヨ礋鍊煎垯涓洪粯璁ゅ��
+ *  @param bizType       璁惧褰掑睘涓氬姟鏉ユ簮
+ *  @param platFormId  骞冲彴ID
+ *  @param completion   鍥炶皟block records:EzvizRecordFileInfo鐨勬暟缁�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)searchRecordFile:(NSString *)deviceSerial
+                                  cameraNo:(NSString *)cameraNo
+                                 beginTime:(NSDate *)beginTime
+                                   endTime:(NSDate *)endTime
+                                   recType:(NSInteger)rectype
+                                   bizType:(NSString *)bizType
+                                platFormId:(NSString *)platFormId
+                                completion:(void (^)(id records, NSError *error))completion;
+
+#pragma mark - 璁惧鐩稿叧Api
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙峰拰璁惧楠岃瘉鐮佹坊鍔犺澶囨帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param verifyCode   璁惧楠岃瘉鐮�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘坊鍔犳垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)addDevice:(NSString *)deviceSerial
+                         verifyCode:(NSString *)verifyCode
+                         completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鑾峰彇鐢ㄦ埛鎵�鏈夌殑璁惧鍒楄〃
+ *
+ *  @param pageIndex  鍒嗛〉褰撳墠椤电爜锛堜粠0寮�濮嬶級
+ *  @param pageSize   鍒嗛〉姣忛〉鏁伴噺锛堝缓璁�20浠ュ唴锛�
+ *  @param completion 鍥炶皟block锛屾甯告椂杩斿洖EZDeviceInfo鐨勫璞℃暟缁勫拰璁惧鎬绘暟锛岄敊璇椂杩斿洖閿欒鐮�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getDeviceList:(NSInteger)pageIndex
+                               pageSize:(NSInteger)pageSize
+                             completion:(void (^)(NSArray *deviceList, NSInteger totalCount, NSError *error))completion;
+
+/**
+ *  鑾峰彇鍒嗕韩缁欑敤鎴风殑璁惧鍒楄〃鎺ュ彛
+ *
+ *  @param pageIndex  鍒嗛〉褰撳墠椤电爜锛堜粠0寮�濮嬶級
+ *  @param pageSize   鍒嗛〉姣忛〉鏁伴噺锛堝缓璁�20浠ュ唴锛�
+ *  @param completion 鍥炶皟block锛屾甯告椂杩斿洖EZDeviceInfo鐨勫璞℃暟缁勫拰璁惧鎬绘暟锛岄敊璇椂杩斿洖閿欒鐮�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getSharedDeviceList:(NSInteger)pageIndex
+                                     pageSize:(NSInteger)pageSize
+                                   completion:(void (^)(NSArray *deviceList, NSInteger totalCount, NSError *error))completion;
+
+/**
+ *  鏍规嵁搴忓垪鍙疯幏鍙栬澶囦俊鎭�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion 鍥炶皟block锛屾甯告椂杩斿洖EZDeviceInfo鐨勫璞★紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getDeviceInfo:(NSString *)deviceSerial
+                             completion:(void (^)(EZDeviceInfo *deviceInfo, NSError *error))completion;
+
+/**
+ *  鑾峰彇璁惧鐨勭増鏈俊鎭帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZDeviceVersion鐨勫璞′俊鎭紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getDeviceVersion:(NSString *)deviceSerial
+                                completion:(void (^)(EZDeviceVersion *version, NSError *error))completion;
+
+/**
+ *  閫氳繃璁惧楠岃瘉鐮佸紑鍏宠棰戝浘鐗囧姞瀵嗘帴鍙�
+ *
+ *  @param isEncrypt    鏄惁鍔犲瘑锛屽彧鏈塏O(鍏抽棴)鐨勬椂鍊欓渶瑕佽澶囬獙璇佺爜鐨勭浉鍏冲弬鏁�(vaildateCode)
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param verifyCode 璁惧楠岃瘉鐮�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘搷浣滄垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setDeviceEncryptStatus:(NSString *)deviceSerial
+                                      verifyCode:(NSString *)verifyCode
+                                         encrypt:(BOOL)isEncrypt
+                                      completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙蜂慨鏀硅澶囧悕绉版帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param deviceName   璁惧鍚嶇О
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀轰慨鏀规垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setDeviceName:(NSString *)deviceName
+                           deviceSerial:(NSString *)deviceSerial
+                             completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙峰垹闄ゅ綋鍓嶈处鍙风殑璁惧鎺ュ彛
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀哄垹闄ゆ垚鍔�
+ *  @see 璇ユ帴鍙d笌缁堢缁戝畾鍔熻兘鐩稿叧锛屼細閬囧埌鍒犻櫎鏃舵姤106002鐨勯敊璇紝璇峰叧闂粓绔粦瀹氫互鍚庡啀璇�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)deleteDevice:(NSString *)deviceSerial
+                            completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙疯幏鍙栧瓨鍌ㄤ粙璐ㄧ姸鎬�(濡傛槸鍚﹀垵濮嬪寲锛屾牸寮忓寲杩涘害绛�)
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZStorageInfo鐨勫璞℃暟缁勶紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getStorageStatus:(NSString *)deviceSerial
+                                completion:(void (^)(NSArray *storageStatus, NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙峰拰鍒嗗尯缂栧彿鏍煎紡鍖栧垎鍖猴紙SD鍗★級
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param storageIndex 鏌ヨ杩斿洖鐨勫垎鍖哄彿锛�0琛ㄧず鍏ㄩ儴鏍煎紡鍖栵紝鍙兘浼氭湁鍑犲潡纭洏鐨勬儏鍐�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖琛ㄧず璁剧疆鎴愬姛
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)formatStorage:(NSString *)deviceSerial
+                           storageIndex:(NSInteger)storageIndex
+                             completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙疯幏鍙栬澶囧崌绾ф椂鐨勮繘搴︾姸鎬�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZDeviceUpgradeStatus瀵硅薄锛岄敊璇椂杩斿洖閿欒鐮�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getDeviceUpgradeStatus:(NSString *)deviceSerial
+                                      completion:(void (^)(EZDeviceUpgradeStatus *status, NSError *error))completion;
+
+/**
+ *  閫氳繃璁惧搴忓垪鍙峰璁惧杩涜鍗囩骇鎿嶄綔锛屽墠鎻愭槸璇ヨ澶囨湁鏇存柊杞欢鐨勬彁绀�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖琛ㄧず鎿嶄綔鎴愬姛
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)upgradeDevice:(NSString *)deviceSerial
+                             completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鑾峰彇鎶撳彇鎽勫儚澶村浘鐗囩殑url鎺ュ彛
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖url鍦板潃淇℃伅锛岄敊璇椂杩斿洖閿欒鐮�
+ *  @see 璇ユ帴鍙f瘮杈冭�楁椂锛屼笉寤鸿杩涜鎵归噺璁惧鎶撳浘锛孲DK鍐呴儴鍙敮鎸�6涓猦ttp璇锋眰骞跺彂锛岃鎺ュ彛浼氭寔缁崰鐢╤ttp璇锋眰璧勬簮锛屽鏋滈亣鍒癶ttp璇锋眰寤舵椂宸ㄥぇ闂锛屼紭鍏堣�冭檻鎶撳浘鎺ュ彛骞跺彂閫犳垚鐨勯棶棰�,
+ *  鎶撳浘灏嗗湪鏈嶅姟鍣ㄧ淇濈暀2涓皬鏃�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)captureCamera:(NSString *)deviceSerial
+                               cameraNo:(NSInteger)cameraNo
+                             completion:(void (^)(NSString *url, NSError *error))completion;
+
+/**
+ *  璁剧疆璁惧閫氶亾鐨勬竻鏅板害
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param videoLevel   閫氶亾娓呮櫚搴︼紝0-娴佺晠锛�1-鍧囪 锛�2-楂樻竻锛�3-瓒呮竻
+ *  @param completion   鍥炶皟block锛屾棤error琛ㄧず璁剧疆鎴愬姛
+ *  @see 濡傛灉鏄鍦ㄦ挱鏀炬椂璋冪敤璇ユ帴鍙o紝璁剧疆娓呮櫚搴︽垚鍔熶互鍚庡繀椤昏EZPlayer璋冪敤stopRealPlay鍐嶈皟鐢╯tartRealPlay閲嶆柊鍙栨祦鎵嶆垚瀹屾垚鐢婚潰娓呮櫚搴︾殑鍒囨崲銆�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setVideoLevel:(NSString *)deviceSerial
+                               cameraNo:(NSInteger)cameraNo
+                             videoLevel:(EZVideoLevelType)videoLevel
+                             completion:(void (^)(NSError *error))completion;
+
+/**
+ *  璁惧璁剧疆甯冮槻鐘舵�侊紝鍏煎A1鍜孖PC璁惧鐨勫竷闃�
+ *
+ *  @param defence      甯冮槻鐘舵��, IPC甯冮槻鐘舵�佸彧鏈�0鍜�1锛孉1鏈�0:鐫$湢 8:鍦ㄥ 16:澶栧嚭
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖琛ㄧず璁剧疆鎴愬姛
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setDefence:(EZDefenceStatus)defence
+                        deviceSerial:(NSString *)deviceSerial
+                          completion:(void (^)(NSError *error))completion;
+
+#pragma mark - 浜戝彴鎺у埗Api
+
+/**
+ *  PTZ 鎺у埗鎺ュ彛
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param command      ptz鎺у埗鍛戒护
+ *  @param action       鎺у埗鍚姩/鍋滄
+ *  @param speed        浜戝彴閫熷害锛�0-鎱紝1-閫備腑锛�2-蹇�
+ *  @param resultBlock  鍥炶皟block锛屽綋error涓虹┖鏃惰〃绀烘搷浣滄垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)controlPTZ:(NSString *)deviceSerial
+                            cameraNo:(NSInteger)cameraNo
+                             command:(EZPTZCommand)command
+                              action:(EZPTZAction)action
+                               speed:(NSInteger)speed
+                              result:(void (^)(NSError *error))resultBlock;
+
+/**
+ *  鎽勫儚澶存樉绀烘帶鍒舵帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param command      鏄剧ず鎺у埗鍛戒护
+ *  @param resultBlock  鍥炶皟block锛屽綋error涓虹┖鏃惰〃绀烘搷浣滄垚鍔�
+ */
++ (void)controlVideoFlip:(NSString *)deviceSerial
+                cameraNo:(NSInteger)cameraNo
+                 command:(EZDisplayCommand)command
+                  result:(void (^)(NSError *error))resultBlock;
+
+#pragma mark - 鍛婅鐩稿叧Api
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙疯幏鍙栧憡璀︿俊鎭垪琛紝璁惧搴忓垪鍙蜂负nil鏃舵煡璇㈡暣涓处鎴蜂笅鐨勫憡璀︿俊鎭垪琛�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param pageIndex    鍒嗛〉褰撳墠椤电爜锛堜粠0寮�濮嬶級
+ *  @param pageSize     鍒嗛〉姣忛〉鏁伴噺锛堝缓璁�20浠ュ唴锛�
+ *  @param beginTime    鎼滅储鏃堕棿鑼冨洿寮�濮嬫椂闂�
+ *  @param endTime      鎼滅储鏃堕棿鑼冨洿缁撴潫鏃堕棿
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZAlarmInfo鐨勫璞℃暟鎹拰鏌ヨ鏃堕棿鑼冨洿鍐呯殑鍛婅涓暟鐨勬�绘暟锛岄敊璇椂杩斿洖閿欒鐮�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getAlarmList:(NSString *)deviceSerial
+                             pageIndex:(NSInteger)pageIndex
+                              pageSize:(NSInteger)pageSize
+                             beginTime:(NSDate *)beginTime
+                               endTime:(NSDate *)endTime
+                            completion:(void (^)(NSArray *alarmList, NSInteger totalCount, NSError *error))completion;
+
+/**
+ *  鍛婅鍥剧墖瑙e瘑鏂规硶锛岃澶囧姞瀵�
+ *
+ *  @param data       闇�瑕佽В瀵嗙殑鏁版嵁
+ *  @param verifyCode 璁惧楠岃瘉鐮�
+ *
+ *  @return 瑙e瘑鐨凬SData瀵硅薄锛屽鏋滆繑鍥炵殑鏁版嵁鏄┖鐨勶紝璇锋鏌ュ瘑鐮佹槸鍚︽纭垨鑰呬紶鍏ョ殑鏁版嵁鏄惁姝g‘銆�
+ */
++ (NSData *)decryptData:(NSData *)data verifyCode:(NSString *)verifyCode;
+
+/**
+ *  鍛婅鍥剧墖瑙e瘑鏂规硶锛岃澶囧姞瀵�
+ *
+ *  @param data       闇�瑕佽В瀵嗙殑鏁版嵁
+ *  @param verifyCode 璁惧楠岃瘉鐮�
+ *  @param type 1:璁惧鍔犲瘑锛�2锛氬钩鍙板姞瀵�
+ *
+ *  @return 瑙e瘑鐨凬SData瀵硅薄锛屽鏋滆繑鍥炵殑鏁版嵁鏄┖鐨勶紝璇锋鏌ュ瘑鐮佹槸鍚︽纭垨鑰呬紶鍏ョ殑鏁版嵁鏄惁姝g‘銆�
+ */
++ (NSData *)decryptData:(NSData *)data verifyCode:(NSString *)verifyCode encryptType:(NSInteger)type;
+
+/**
+ *  璁剧疆鍛婅淇℃伅涓哄凡璇绘帴鍙�
+ *
+ *  @param alarmIds   鍛婅淇℃伅Id鏁扮粍(鍙互鍙湁涓�涓狪d)锛屾渶澶氫负10涓猧d,鍚﹀垯浼氭姤閿�
+ *  @param status     鍛婅娑堟伅鐘舵��
+ *  @param completion 鍥炶皟block锛宔rror涓虹┖鏃惰〃绀鸿缃垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setAlarmStatus:(NSArray *)alarmIds
+                             alarmStatus:(EZMessageStatus)status
+                              completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁alarmId鍒犻櫎鍛婅淇℃伅鎺ュ彛
+ *
+ *  @param alarmIds   鍛婅淇℃伅Id鏁扮粍(鍙互鍙湁涓�涓狪d)锛屾渶澶氫负10涓狪d锛屽惁鍒欎細鎶ラ敊
+ *  @param completion 鍥炶皟block锛宔rror涓虹┖鏃惰〃绀哄垹闄ゆ垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)deleteAlarm:(NSArray *)alarmIds
+                           completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙疯幏鍙栨湭璇绘秷鎭暟锛岃澶囧簭鍒楀彿涓虹┖鏃惰幏鍙栨墍鏈夎澶囩殑鏈娑堟伅鏁�
+ *
+ *  @param deviceSerial 闇�瑕佽幏鍙栫殑璁惧搴忓垪鍙凤紝涓虹┖鏃惰繑鍥炶处鎴蜂笅鎵�鏈夎澶囩殑鏈娑堟伅鏁�
+ *  @param type         娑堟伅绫诲瀷锛欵ZMessageTypeAlarm 鍛婅娑堟伅锛�1锛夛紝EZMessageTypeLeave 鐣欒█娑堟伅锛�2锛�
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖鏈鏁伴噺锛岄敊璇椂杩斿洖閿欒鐮�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getUnreadMessageCount:(NSString *)deviceSerial
+                                    messageType:(EZMessageType)type
+                                     completion:(void (^)(NSInteger count, NSError *error))completion;
+
+#pragma mark - 璇煶鐣欒█娑堟伅鏁版嵁Api
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙疯幏鍙栬澶囩殑鐣欒█娑堟伅鍒楄〃
+ *
+ *  @param deviceSerial 闇�瑕佽幏鍙栫殑璁惧搴忓垪鍙�
+ *  @param beginTime    寮�濮嬫椂闂�
+ *  @param endTime      缁撴潫鏃堕棿
+ *  @param pageIndex    鍒嗛〉椤电爜
+ *  @param pageSize     鍒嗛〉鍗曢〉鏁伴噺
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZLeaveMessage鐨勫璞℃暟缁勶紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getLeaveMessageList:(NSString *)deviceSerial
+                                    pageIndex:(NSInteger)pageIndex
+                                     pageSize:(NSInteger)pageSize
+                                    beginTime:(NSDate *)beginTime
+                                      endTime:(NSDate *)endTime
+                                   completion:(void (^)(NSArray *leaveMessageList, NSInteger totalCount, NSError *error))completion;
+
+/**
+ *  鏍规嵁leaveId璁剧疆鐣欒█娑堟伅鐘舵��
+ *
+ *  @param leaveIds   鐣欒█娑堟伅Id鏁扮粍(鏈�澶ф暟閲忎负10锛屽厑璁稿彧鏈�1涓�)
+ *  @param status     闇�瑕佽缃殑鐣欒█鐘舵�侊紝鐩墠鍙敮鎸� EZMessageStatusRead(宸茶)
+ *  @param completion 鍥炶皟block锛宔rror涓虹┖琛ㄧず璁剧疆鎴愬姛
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setLeaveMessageStatus:(NSArray *)leaveIds
+                                  messageStatus:(EZMessageStatus)status
+                                     completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁leaveId鍒犻櫎鐣欒█娑堟伅
+ *
+ *  @param leaveIds   鐣欒█娑堟伅Id鏁扮粍(鏈�澶ф暟閲忎负10锛屽厑璁稿彧鏈�1涓�)
+ *  @param completion 鍥炶皟block锛宔rror涓虹┖琛ㄧず鍒犻櫎鎴愬姛
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)deleteLeaveMessage:(NSArray *)leaveIds
+                                  completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁EZLeaveMessage瀵硅薄淇℃伅鑾峰彇璇煶鐣欒█娑堟伅鏁版嵁鎺ュ彛
+ *  @param message    鐣欒█娑堟伅瀵硅薄
+ *  @param completion 鍥炶皟block 锛坮esultCode = 1 琛ㄧず璇煶涓嬭浇鎴愬姛锛�-1琛ㄧず涓嬭浇澶辫触锛�
+ *
+ *  @return operation
+ */
++ (NSOperation *)getLeaveMessageData:(EZLeaveMessage *)message
+                          completion:(void (^)(NSData *data, NSInteger resultCode))completion;
+
+#pragma mark - VideoTalk瑙嗛閫氳瘽鐩稿叧Api
+
+/**
+ * 鑾峰彇鎵嬭〃鏈嶅姟鐩稿叧淇℃伅
+ * @param deviceId 璁惧搴忓垪鍙�
+ * @param completion operation
+ */
++ (void)requestGetWatchServerInfo:(NSString *)deviceId
+                       completion:(void (^)(id watchServerInfo, NSError *error))completion;
+
+/**
+ * 鍒涘缓浼氳淇℃伅
+ * @param password 鑷畾涔夊瘑鐮�
+ * @param customId 寮�鍙戣�呰嚜瀹氫箟鐢ㄦ埛ID
+ * @param limit 闄愬埗鏈�澶т汉鏁� 鏈�澶�100
+ * @param completion operation
+ */
++ (void)requestCallingMeetingInfo:(NSString *)password
+                         customId:(NSInteger)customId
+                            limit:(NSInteger)limit
+                       completion:(void (^)(int32_t roomId, NSString *vtmAddress, NSString *clientid, NSInteger customId, NSString *controlServerAddress, NSError *error))completion;
+
+/**
+ * 鍔犲叆鏂硅幏鍙栦細璁俊鎭�
+ * @param roomId  鎴块棿鍙�
+ * @param customId 寮�鍙戣�呰嚜瀹氫箟鐢ㄦ埛ID
+ * @param completion operation
+ */
++ (void)requestCalledMeetingInfo:(NSString *)roomId
+                        customId:(NSInteger)customId
+                      completion:(void (^)(int32_t roomId, NSString *vtmAddress,NSString *clientid, NSInteger customId, NSString *controlServerAddress, NSError *error))completion;
+
+/**
+ *  閭�璇疯澶囪繘鍏ユ埧闂�
+ *  @param roomId                                鎴块棿鍙�
+ *  @param deviceSerial                   璁惧搴忓垪鍙�
+ *  @param channelNo                         閫氶亾鍙�
+ *  @param streamType                       涓诲瓙鐮佹祦 1-涓荤爜娴侊紝2-瀛愮爜娴侊紝mode涓�2鏃跺彲涓嶄紶
+ *  @param mode                                    鍔犲叆妯″紡 1-鍙屽悜闊宠棰戞ā寮忥紙榛樿锛夛紝2-瀵硅妯″紡
+ *  @param maxActiveSeconds         鍏ヤ細鏈�闀挎椂闂达紙绉掞級
+ *  @param completion                       鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)inviteDeviceEnterMeeting:(NSString *)roomId
+                                      deviceSerial:(NSString *)deviceSerial
+                                         channelNo:(NSInteger)channelNo
+                                        streamType:(NSInteger)streamType
+                                              mode:(NSInteger)mode
+                                  maxActiveSeconds:(NSInteger)maxActiveSeconds
+                                        completion:(void (^)(NSError *error))completion;
+
+/**
+ *  寮哄埗璁惧閫�鍑烘埧闂�
+ *  @param roomId                                鎴块棿鍙�
+ *  @param deviceSerial                   璁惧搴忓垪鍙�
+ *  @param channelNo                         閫氶亾鍙�
+ *  @param completion                       鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)kickoutDeviceMoveOutRoom:(NSString *)roomId
+                                      deviceSerial:(NSString *)deviceSerial
+                                         channelNo:(NSInteger)channelNo
+                                        completion:(void (^)(NSError *error))completion;
+
+#pragma mark - WiFi閰嶇綉鐩稿叧Api
+
+/**
+ *  灏濊瘯鏌ヨ璁惧淇℃伅锛岃澶嘩ifi閰嶇疆鍓嶆煡璇竴娆¤澶囩殑淇℃伅
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param deviceType 璁惧鍨嬪彿锛屾棤娉曡幏鍙栧埌璁惧鍨嬪彿鍒欏彲浼爊il
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZProbeDeviceInfo瀵硅薄锛岄敊璇爜杩斿洖閿欒鐮�
+ *  @see 鍏ㄦ柊鐨勮澶囨槸娌℃湁娉ㄥ唽鍒板钩鍙扮殑锛屾墍浠ヤ細鍑虹幇璁惧涓嶅瓨鍦ㄧ殑鎯呭喌锛岃澶噖ifi閰嶇疆鎴愬姛浠ュ悗浼氫笂鎶ユ暟鎹埌钀ょ煶浜戝钩鍙帮紝浠ュ悗姣忔鏌ヨ灏变笉浼氬嚭鐜拌澶囦笉瀛樺湪鐨勬儏鍐典簡銆�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)probeDeviceInfo:(NSString *)deviceSerial
+                               deviceType:(NSString *)deviceType
+                               completion:(void (^)(EZProbeDeviceInfo *deviceInfo, NSError *error))completion;
+
+/**
+ *  WiFi閰嶇疆寮�濮嬫帴鍙�
+ *
+ *  @param ssid         杩炴帴WiFi SSID
+ *  @param password     杩炴帴WiFi 瀵嗙爜
+ *  @param deviceSerial 杩炴帴WiFi鐨勮澶囩殑璁惧搴忓垪鍙�
+ *  @param statusBlock  杩斿洖杩炴帴璁惧鐨刉iFi閰嶇疆鐘舵��
+ *
+ *  @return YES/NO
+ */
++ (BOOL)startConfigWifi:(NSString *)ssid
+               password:(NSString *)password
+           deviceSerial:(NSString *)deviceSerial
+           deviceStatus:(void (^)(EZWifiConfigStatus status))statusBlock;
+
+/**
+ *  WiFi閰嶇疆寮�濮嬫帴鍙�
+ *
+ *  @param ssid         杩炴帴WiFi SSID
+ *  @param password     杩炴帴WiFi 瀵嗙爜
+ *  @param deviceSerial 杩炴帴WiFi鐨勮澶囩殑璁惧搴忓垪鍙�,鎵归噺閰嶇疆鏃跺~nil
+ *  @param mode         閰嶇綉鐨勬柟寮忥紝EZWiFiConfigMode涓垪涓剧殑妯″紡杩涜浠绘剰缁勫悎,渚嬪:EZWiFiConfigSmart|EZWiFiConfigWave
+ *  @param statusBlock  杩斿洖璁惧搴忓垪鍙蜂互鍙婂綋鍓嶈繛鎺ョ姸鎬�
+ *
+ *  @return YES/NO
+ */
++ (BOOL)startConfigWifi:(NSString *)ssid
+               password:(NSString *)password
+           deviceSerial:(NSString *)deviceSerial
+                   mode:(NSInteger)mode
+           deviceStatus:(void (^)(EZWifiConfigStatus status, NSString *deviceSerial))statusBlock;
+
+/**
+ *  WiFi閰嶇疆寮�濮嬫帴鍙�
+ *
+ *  @param ssid         杩炴帴WiFi SSID
+ *  @param password     杩炴帴WiFi 瀵嗙爜
+ *  @param deviceSerial 杩炴帴WiFi鐨勮澶囩殑璁惧搴忓垪鍙�,鎵归噺閰嶇疆鏃跺~nil
+ *  @param mode         閰嶇綉鐨勬柟寮忥紝EZWiFiConfigMode涓垪涓剧殑妯″紡杩涜浠绘剰缁勫悎,渚嬪:EZWiFiConfigSmart|EZWiFiConfigWave
+ *  @param apiUrl    鎸囧畾鍘诲摢涓钩鍙版煡璇�
+ *  @param statusBlock  杩斿洖璁惧搴忓垪鍙蜂互鍙婂綋鍓嶈繛鎺ョ姸鎬�
+ *
+ *  @return YES/NO
+ */
++ (BOOL)startConfigWifi:(NSString *)ssid
+               password:(NSString *)password
+           deviceSerial:(NSString *)deviceSerial
+                   mode:(NSInteger)mode
+                 apiUrl:(NSString *)apiUrl
+           deviceStatus:(void (^)(EZWifiConfigStatus status,NSString *deviceSerial))statusBlock;
+
+/**
+ *  @since 3.0.0
+ *  Wifi閰嶇疆鍋滄鎺ュ彛
+ *
+ *  @return YES/NO
+ */
++ (BOOL)stopConfigWifi;
+
+#pragma mark - AP閰嶇綉鐩稿叧Api
+
+/**
+ * AP閰嶇綉鎺ュ彛
+ *
+ * @param ssid WiFi鐨剆sid
+ * @param password WiFi鐨勫瘑鐮�
+ * @param deviceSerial 璁惧搴忓垪鍙�
+ * @param verifyCode 璁惧楠岃瘉鐮�
+ * @param callback 缁撴灉鍥炶皟锛屾敞鎰忥細杩斿洖YES浠呬粎浠h〃鎴愬姛灏哤iFi淇℃伅鍙戦�佺粰璁惧锛屼笉浠h〃璁惧閰嶇綉鎴愬姛
+ * @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)startAPConfigWifiWithSsid:(NSString *)ssid
+                         password:(NSString *)password
+                     deviceSerial:(NSString *)deviceSerial
+                       verifyCode:(NSString *)verifyCode
+                           result:(void (^)(BOOL ret))callback;
+
+/**
+ * AP閰嶇綉鎺ュ彛锛堟帹鑽愶紝v5.0鏂板锛屽皝瑁呬簡璁惧鐘舵�佽疆璇㈡楠わ級
+ *
+ * @param ssid WiFi鐨剆sid
+ * @param password WiFi鐨勫瘑鐮�
+ * @param deviceSerial 璁惧搴忓垪鍙�
+ * @param verifyCode 璁惧楠岃瘉鐮�
+ * @param statusBlock 缁撴灉鍥炶皟锛岃繑鍥為厤缃戣繃绋嬩腑鐨勫悇绉嶇姸鎬�
+ *
+ * @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)startAPConfigWifiWithSsid:(NSString *)ssid
+                         password:(NSString *)password
+                     deviceSerial:(NSString *)deviceSerial
+                       verifyCode:(NSString *)verifyCode
+                     deviceStatus:(void (^)(EZWifiConfigStatus status, NSString *deviceSerial))statusBlock;
+
+/**
+ * 鍋滄AP閰嶇綉
+ */
++ (void)stopAPConfigWifi;
+
+#pragma mark - 鎺ヨЕ寮忛厤缃� New AP Config
+
+/**
+ * 鑾峰彇鎺ヨЕ寮廇P閰嶇綉token
+ *
+ * @param completion 鍥炶皟
+ *
+ * @return operation
+ */
++ (NSURLSessionDataTask *)getNewApConfigToken:(void(^)(EZConfigTokenInfo *tokenInfo, NSError *error))completion;
+
+/**
+ * 寮�濮婲ewAP閰嶇綉锛堥渶杩炴帴璁惧鐑偣锛�
+ * @param token 閰嶇綉token
+ * @param ssid WiFi ssid
+ * @param password WiFi 瀵嗙爜
+ * @param lbsDomain lbs 鍩熷悕
+ * @param handler 鍥炶皟
+ *
+ * @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)startNewApConfigWithToken:(NSString *)token
+                             ssid:(NSString *)ssid
+                         password:(NSString *)password
+                        lbsDomain:(NSString *)lbsDomain
+                completionHandler:(void(^)(EZNewAPConfigStatus status, NSError *error))handler;
+
+/**
+ * 鑾峰彇璁惧鐘舵�侊紙闇�杩炴帴璁惧鐑偣锛�
+ *
+ * @param handler 鍥炶皟
+ */
++ (void)getAccessDeviceInfo:(void(^)(EZAPDevInfo *devInfo, NSError *error))handler;
+
+/**
+ * 鑾峰彇璁惧褰撳墠鍛ㄨ竟WiFi鍒楄〃锛屼笂闄�20涓紙闇�杩炴帴璁惧鐑偣锛�
+ *
+ * @param handler 鍥炶皟
+ */
++ (void)getAccessDeviceWifiList:(void(^)(NSArray<EZWiFiItemInfo*> *wifiList, NSError *error))handler;
+
+/**
+ * 鏌ヨ璁惧缁戝畾鐘舵��
+ * @param deviceSerial 璁惧搴忓垪鍙�
+ * @param completion 鍥炶皟block锛屾甯告椂杩斿洖EZProbeDeviceInfo瀵硅薄锛岄敊璇爜杩斿洖閿欒鐮�
+ *
+ * @return 鎴愬姛鎴栧け璐�
+ */
++ (NSURLSessionDataTask *)queryPlatformBindStatus:(NSString *)deviceSerial
+                                       completion:(void(^)(EZProbeDeviceInfo *deviceInfo, NSError *error))completion;
+
+/**
+ * 璁剧疆閰嶇綉璁惧缃戝叧鍦板潃 鍙��
+ * @param devRouteDomain 璁惧缃戝叧鍦板潃
+ */
++ (void)setDevRouteDomain:(NSString *)devRouteDomain;
+
+#pragma mark - 鐢ㄦ埛鐩稿叧Api
+
+/**
+ *  鑾峰彇鐢ㄦ埛鍩烘湰淇℃伅鐨勬帴鍙�
+ *
+ *  @param completion 鍥炶皟block锛� 姝e父鏃惰繑鍥濫ZUserInfo鐨勫璞★紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getUserInfo:(void (^)(EZUserInfo *userInfo, NSError *error))completion;
+
+#pragma mark - 鍏朵粬Api
+
+/**
+ *  鑾峰彇缁堢锛堟墜鏈虹瓑锛夊敮涓�璇嗗埆鐮�
+ *
+ *  @return 缁堢鍞竴璇嗗埆鐮�
+ */
++ (NSString *)getTerminalId;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZOpenSDKFramework.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZOpenSDKFramework.h
new file mode 100644
index 0000000..8f554ab
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZOpenSDKFramework.h
@@ -0,0 +1,54 @@
+//
+//  EZOpenSDKFramework.h
+//  EZOpenSDKFramework
+//
+//  Created by JuneCheng on 2022/7/23.
+//
+
+#ifndef EZOpenSDKFramework_h
+#define EZOpenSDKFramework_h
+
+#import <EZOpenSDKFramework/EZAccessToken.h>
+#import <EZOpenSDKFramework/EZAlarmInfo.h>
+#import <EZOpenSDKFramework/EZAreaInfo.h>
+#import <EZOpenSDKFramework/EZCameraInfo.h>
+#import <EZOpenSDKFramework/EZCloudRecordDownloadTask.h>
+#import <EZOpenSDKFramework/EZCloudRecordFile.h>
+#import <EZOpenSDKFramework/EZDetectorInfo.h>
+#import <EZOpenSDKFramework/EZDeviceCloudServiceInfo.h>
+#import <EZOpenSDKFramework/EZDeviceInfo.h>
+#import <EZOpenSDKFramework/EZDevicePtzAngleInfo.h>
+#import <EZOpenSDKFramework/EZDeviceRecordDownloadTask.h>
+#import <EZOpenSDKFramework/EZDeviceRecordFile.h>
+#import <EZOpenSDKFramework/EZDeviceUpgradeStatus.h>
+#import <EZOpenSDKFramework/EZDeviceVersion.h>
+#import <EZOpenSDKFramework/EZHCNetDeviceInfo.h>
+#import <EZOpenSDKFramework/EZHiddnsDeviceInfo.h>
+#import <EZOpenSDKFramework/EZLeaveMessage.h>
+#import <EZOpenSDKFramework/EZPlayerExParamInfo.h>
+#import <EZOpenSDKFramework/EZProbeDeviceInfo.h>
+#import <EZOpenSDKFramework/EZRecordDownloader.h>
+#import <EZOpenSDKFramework/EZRecordDownloadTask.h>
+#import <EZOpenSDKFramework/EZStorageInfo.h>
+#import <EZOpenSDKFramework/EZTokenKit.h>
+#import <EZOpenSDKFramework/EZUserInfo.h>
+#import <EZOpenSDKFramework/EZVideoQualityInfo.h>
+#import <EZOpenSDKFramework/EZVideoTransformer.h>
+#import <EZOpenSDKFramework/EzvizRecordFileInfo.h>
+#import <EZOpenSDKFramework/EzvizWatchServerInfo.h>
+
+#import <EZOpenSDKFramework/EZSADPDeviceInfo.h>
+#import <EZOpenSDKFramework/EZAPDevInfo.h>
+#import <EZOpenSDKFramework/EZConfigTokenInfo.h>
+#import <EZOpenSDKFramework/EZWiFiItemInfo.h>
+
+#import <EZOpenSDKFramework/EZConstants.h>
+#import <EZOpenSDKFramework/EZConstants_Auth.h>
+#import <EZOpenSDKFramework/EZConstants_WifiConfig.h>
+#import <EZOpenSDKFramework/EZOpenSDK.h>
+#import <EZOpenSDKFramework/EZGlobalSDK.h>
+#import <EZOpenSDKFramework/EZHCNetDeviceSDK.h>
+#import <EZOpenSDKFramework/EZPlayer.h>
+#import <EZOpenSDKFramework/EZStreamPlayer.h>
+
+#endif /* EZOpenSDKFramework_h */
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZPMPlayPrivateTokenInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZPMPlayPrivateTokenInfo.h
new file mode 100644
index 0000000..7d69b75
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZPMPlayPrivateTokenInfo.h
@@ -0,0 +1,22 @@
+//
+//  EZPMPlayPrivateTokenInfo.h
+//  EZPlay
+//
+//  Created by JuneCheng on 2022/11/24.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZPMPlayPrivateTokenInfo : NSObject
+
+@property (nonatomic, assign) BOOL enable;///<
+@property (nonatomic, copy) NSString *token;///<
+
+
+- (instancetype)initWithType:(NSInteger)type data:(NSData *)data;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZPlayer.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZPlayer.h
new file mode 100644
index 0000000..baea2e2
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZPlayer.h
@@ -0,0 +1,446 @@
+//
+//  EZPlayer.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/9/16.
+//  Copyright (c) 2015骞� Ezviz. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@class EZDeviceRecordFile;
+@class EZCloudRecordFile;
+@class EZPlayer;
+@class EZPlayerExParamInfo;
+@class EZDevicePtzAngleInfo;
+@class EZPMPlayPrivateTokenInfo;
+
+/**
+ *  棰勮娓呮櫚搴�
+ */
+typedef NS_ENUM(NSInteger, EZVideoQuality) {
+    EZVideoQualityLow    = 0,  //娴佺晠
+    EZVideoQualityMiddle = 1,  //鍧囪 
+    EZVideoQualityHigh   = 2   //楂樻竻
+};
+
+/* 鎾斁鍣‥ZPlayer鐨勭姸鎬佹秷鎭畾涔� */
+typedef NS_ENUM(NSInteger, EZMessageCode) {
+    PLAYER_REALPLAY_START = 1,        //鐩存挱寮�濮�
+    PLAYER_VIDEOLEVEL_CHANGE = 2,     //鐩存挱娴佹竻鏅板害鍒囨崲涓�
+    PLAYER_STREAM_RECONNECT = 3,      //鐩存挱娴佸彇娴佹鍦ㄩ噸杩�
+    PLAYER_VOICE_TALK_START = 4,      //瀵硅寮�濮�
+    PLAYER_VOICE_TALK_END = 5,        //瀵硅缁撴潫
+    PLAYER_STREAM_START = 10,         //褰曞儚鍙栨祦寮�濮�
+    PLAYER_PLAYBACK_START = 11,       //褰曞儚鍥炴斁寮�濮嬫挱鏀�
+    PLAYER_PLAYBACK_STOP = 12,        //褰曞儚鍥炴斁缁撴潫鎾斁
+    PLAYER_PLAYBACK_FINISHED = 13,    //褰曞儚鍥炴斁琚敤鎴峰己鍒朵腑鏂�
+    PLAYER_PLAYBACK_PAUSE = 14,       //褰曞儚鍥炴斁鏆傚仠
+    PLAYER_NET_CHANGED = 21,          //鎾斁鍣ㄦ娴嬪埌wifi鍙樻崲杩�
+    PLAYER_NO_NETWORK = 22,           //鎾斁鍣ㄦ娴嬪埌鏃犵綉缁�
+    PLAYER_CLOUD_IFRAME_CHANGED = 23, //浜戝瓨鍌ㄥ揩鏀炬椂锛岀敱鍏ㄥ抚蹇斁鍒囨崲鍒版娊甯у揩鏀剧殑鎻愮ず鍥炶皟
+    PLAYER_PLAYSPEED_LOWER = 24,      //浜戝瓨鍌ㄥ揩鏀炬椂鐨勯檷閫熼�氱煡(瀛樺湪涓ゆ闄嶉�燂細褰撳墠鍊嶉�熷ぇ浜�4鍊嶉�熸椂锛岄檷鍒�4鍊嶉�燂紱褰撳墠涓�4鍊嶉�熸椂锛岄檷涓�1鍊嶉��)
+};
+
+
+/**
+ *  鍥炴斁閫熺巼
+ */
+typedef NS_ENUM(NSInteger, EZPlaybackRate) {
+    EZOPENSDK_PLAY_RATE_1_16 = 9,  //浠�1/16鍊嶉�熷害鎾斁
+    EZOPENSDK_PLAY_RATE_1_8 = 7,   //浠�1/8鍊嶉�熷害鎾斁
+    EZOPENSDK_PLAY_RATE_1_4 = 5,   //浠�1/4鍊嶉�熷害鎾斁
+    EZOPENSDK_PLAY_RATE_1_2 = 3,   //浠�1/2鍊嶉�熸挱鏀�
+    EZOPENSDK_PLAY_RATE_1 = 1,     //浠ユ甯搁�熷害鎾斁
+    EZOPENSDK_PLAY_RATE_2 = 2,     //浠�2鍊嶉�熸挱鏀�
+    EZOPENSDK_PLAY_RATE_4 = 4,     //浠�4鍊嶉�熷害鎾斁
+    EZOPENSDK_PLAY_RATE_8 = 6,     //浠�8鍊嶉�熷害鎾斁
+    EZOPENSDK_PLAY_RATE_16 = 8,    //浠�16鍊嶉�熷害鎾斁
+    EZOPENSDK_PLAY_RATE_32 = 10,   //浠�32鍊嶉�熷害鎾斁
+};
+
+/// 钀ょ煶鎾斁鍣╠elegate鏂规硶
+@protocol EZPlayerDelegate <NSObject>
+
+@optional
+/**
+ *  鎾斁鍣ㄦ挱鏀惧け璐ラ敊璇洖璋�
+ *
+ *  @param player 鎾斁鍣ㄥ璞�
+ *  @param error  鎾斁鍣ㄩ敊璇�
+ */
+- (void)player:(EZPlayer *)player didPlayFailed:(NSError *)error;
+
+/**
+ *  鎾斁鍣ㄦ秷鎭洖璋�
+ *
+ *  @param player      鎾斁鍣ㄥ璞�
+ *  @param messageCode 鎾斁鍣ㄦ秷鎭爜锛岃瀵圭収EZOpenSDK澶存枃浠朵腑鐨凟ZMessageCode浣跨敤
+ */
+- (void)player:(EZPlayer *)player didReceivedMessage:(NSInteger)messageCode;
+
+/**
+ *  璇ユ柟娉曞簾寮冧簬v4.8.8鐗堟湰锛屽簳灞傚簱涓嶅啀鏀寔銆傝浣跨敤getStreamFlow鏂规硶
+ *  鏀跺埌鐨勬暟鎹暱搴︼紙姣忕璋冪敤涓�娆★級
+ *
+ *  @param player     鎾斁鍣ㄥ璞�
+ *  @param dataLength 鎾斁鍣ㄦ祦濯掍綋鏁版嵁鐨勯暱搴︼紙姣忕瀛楄妭鏁帮級
+ */
+- (void)player:(EZPlayer *)player didReceivedDataLength:(NSInteger)dataLength DEPRECATED_MSG_ATTRIBUTE("use getStreamFlow instead");
+
+/**
+ *  鏀跺埌鐨勭敾闈㈤暱瀹藉��
+ *
+ *  @param player 鎾斁鍣ㄥ璞�
+ *  @param height 楂樺害
+ *  @param width  瀹藉害
+ */
+- (void)player:(EZPlayer *)player didReceivedDisplayHeight:(NSInteger)height displayWidth:(NSInteger)width;
+
+/**
+ * 璁惧浜戝彴瑙掑害鏁版嵁鍥炶皟
+ *
+ * @param player 鎾斁鍣ㄥ璞�
+ * @param info 绉佹湁鏁版嵁
+ */
+- (void)player:(EZPlayer *)player didReceivedDevicePtzAngleInfo:(EZDevicePtzAngleInfo *)info;
+
+/**
+ * 鎾斁杩囩▼涓� 鍥炶皟瑙g爜鏁版嵁
+ * 閲嶈锛氳鍥炶皟浼氭瘮杈冮绻�(涓�绉掕嫢骞叉)锛屽悓鏃剁洿鎺ョ敱鎾斁搴撶嚎绋嬪洖璋冧笂鏉ワ紝璇峰嬁鍦ㄦ柟娉曚腑鍋氳�楁椂鎿嶄綔
+ * 閲嶈锛氬洖璋冪殑鏁版嵁鐨勫唴瀛樻槸鐢辨挱鏀惧簱鍐呴儴鍒嗛厤骞剁鐞嗙殑锛屽湪浣跨敤鏃讹紝璇峰悓姝ュ鐞嗗洖璋冪殑data锛涘闇�寮傛澶勭悊锛岃鎷疯礉璇ユ暟鎹�
+ *
+ * @param player 鎾斁鍣ㄥ璞�
+ * @param data 鎾斁搴撹В鐮佸嚭鐨勬暟鎹�
+ * @param width 瑙嗛瀹藉害
+ * @param height 瑙嗛楂樺害
+ */
+- (void)player:(EZPlayer *)player didDecodedData:(NSData *)data width:(NSInteger)width height:(NSInteger)height;
+
+/**
+ * 鍙栨祦鏁版嵁涓幏鍙栧紑闂╰oken鍥炶皟
+ *
+ * @param player 鎾斁鍣ㄥ璞�
+ * @param tokenInfo token瀵硅薄
+ */
+- (void)player:(EZPlayer *)player playPrivateTokenInfo:(EZPMPlayPrivateTokenInfo *)tokenInfo;
+
+@end
+
+/// 姝ょ被涓鸿悿鐭虫挱鏀惧櫒绫�
+@interface EZPlayer : NSObject
+
+/// EZPlayer鍏宠仈鐨刣elegate
+@property (nonatomic, weak) id<EZPlayerDelegate> delegate;
+
+/// 鏄惁璁╂挱鏀惧櫒澶勭悊杩涘叆鍚庡彴,YES:鑷姩澶勭悊;NO:涓嶅鐞�,榛樿涓篩ES
+@property (nonatomic, assign) BOOL backgroundModeByPlayer;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙峰拰閫氶亾鍙峰垱寤篍ZPlayer瀵硅薄
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *
+ *  @return EZPlayer瀵硅薄
+ */
++ (instancetype)createPlayerWithDeviceSerial:(NSString *)deviceSerial cameraNo:(NSInteger)cameraNo;
+//for 鍥芥爣
++ (instancetype)createPlayerWithDeviceSerial:(NSString *)deviceSerial strCameraNo:(NSString *)strCameraNo;
+/**
+ *  鏍规嵁url鏋勯�燛ZPlayer瀵硅薄 锛堜富瑕佺敤鏉ュ鐞嗚棰戝箍鍦虹殑鎾斁锛�
+ *
+ *  @param url 鎾斁url
+ *
+ *  @return EZPlayer瀵硅薄
+ */
++ (instancetype)createPlayerWithUrl:(NSString *)url;
+
+
+/**
+ 灞�鍩熺綉璁惧鍒涘缓鎾斁鍣ㄦ帴鍙�
+
+ @param userId 鐢ㄦ埛id锛岀櫥褰曞眬鍩熺綉璁惧鍚庤幏鍙�
+ @param cameraNo 閫氶亾鍙�
+ @param streamType 鐮佹祦绫诲瀷 1:涓荤爜娴� 2:瀛愮爜娴�
+ @return EZPlayer瀵硅薄
+ */
++ (instancetype)createPlayerWithUserId:(NSInteger)userId cameraNo:(NSInteger)cameraNo streamType:(NSInteger)streamType;
+
+/**
+ *  @since 4.19.2
+ *  涓�涓〉闈㈠瓨鍦ㄥ涓棰戜娇鐢ㄦ渶灏忕殑鐮佹祦锛屾病鏈夊瓙鐮佹祦鐨勮瘽杩樻槸浣跨敤涓荤爜娴�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     铏氭嫙閫氶亾
+ *  @param useSubStream   鏄惁浣跨敤瀛愮爜娴�
+ *
+ *  @return EZPlayer瀵硅薄
+ */
++ (instancetype)createPlayerWithDeviceSerial:(NSString *)deviceSerial cameraNo:(NSInteger)cameraNo useSubStream:(BOOL)useSubStream;
+
+/**
+ *  閿�姣丒ZPlayer
+ *
+ *  @return YES/NO;
+ */
+- (BOOL)destoryPlayer;
+
+/**
+ *  璁剧疆浣跨敤纭欢瑙g爜鍣ㄤ紭鍏堬紝闇�鍦╯tartRealPlay涔嬪墠璋冪敤
+ *
+ *  @param HDPriority 鏄惁纭В浼樺厛
+ */
+- (void)setHDPriority:(BOOL)HDPriority;
+
+/**
+ 鑾峰彇褰撳墠鐨勮蒋纭В鎯呭喌锛屽湪鐮佹祦姝e父鎾斁鍚庤皟鐢�
+ 
+ @return 1锛氳蒋瑙� 2锛氱‖瑙� 0锛氬嚭閿�
+ */
+- (int)getHDPriorityStatus;
+
+/**
+ *  璁剧疆璁惧褰掑睘涓氬姟鏉ユ簮锛岄渶瑕佸湪棰勮鍥炴斁鍓嶈皟鐢�  鍥芥爣璁惧浣跨敤
+ *
+ *  @param bizType 绫诲瀷       鍥芥爣涓� bizType='GB28181'
+ */
+- (void)setBizType:(NSString *)bizType;
+
+/**
+ *  骞冲彴id 鍥芥爣璁惧浣跨敤
+ *
+ *  @param platformId 绫诲瀷
+*/
+-(void)setPlatformId:(NSString *)platformId;
+
+/**
+ *  璁剧疆鎾斁鍣ㄧ殑view
+ *
+ *  @param playerView 鎾斁鍣╲iew
+ */
+- (void)setPlayerView:(UIView *)playerView;
+
+/**
+ *  鏄惁闈欓煶鎾斁锛宻tartRealPlay涔嬪墠璋冪敤
+ *
+ *  @param isSilencePlay 鏄惁闈欓煶鎾斁
+ */
+- (void)setSilencePlay:(BOOL)isSilencePlay;
+
+/**
+ *  寮�濮嬫挱鏀撅紝寮傛鎺ュ彛锛岃繑鍥炲�煎彧鏄〃绀烘搷浣滄垚鍔燂紝涓嶄唬琛ㄦ挱鏀炬垚鍔�
+ *
+ *  @return YES/NO
+ */
+- (BOOL)startRealPlay;
+
+/**
+ *  鍋滄鎾斁锛屽紓姝ユ帴鍙o紝杩斿洖鍊煎彧鏄〃绀烘搷浣滄垚鍔�
+ *
+ *  @return YES/NO
+ */
+- (BOOL)stopRealPlay;
+
+/**
+ *  璁剧疆鎾斁鍣ㄨВ鐮佸瘑鐮�
+ *
+ *  @param verifyCode 璁惧楠岃瘉鐮�
+ */
+- (void)setPlayVerifyCode:(NSString *)verifyCode;
+
+/**
+ *  寮�鍚0闊�
+ *
+ *  @return YES/NO
+ */
+- (BOOL)openSound;
+
+/**
+ *  鍏抽棴澹伴煶
+ *
+ *  @return YES/NO
+ */
+- (BOOL)closeSound;
+
+/**
+ 鑾峰彇鎾斁缁勪欢鍐呴儴鐨勬挱鏀惧簱鐨刾ort
+ 
+ @return 鎾斁搴撶殑port,鍙兘涓�-1锛堟棤鏁堝�硷級
+ */
+- (int)getInnerPlayerPort;
+
+/**
+ 鑾峰彇褰撳墠宸叉挱鏀剧殑鎬绘祦閲忥紝鍗曚綅瀛楄妭
+ eg.璁$畻姣忕鐨勬祦閲忥細
+ NSInteger a = [self getStreamFlow];
+ //1s鍚庤皟鐢�
+ NSInteger b = [self getStreamFlow];
+ NSInteger perSecondFlow = b - a;
+ 
+ @return 娴侀噺鍊�
+ */
+- (NSInteger)getStreamFlow;
+
+/**
+ *  寮�濮婽TS瀵硅锛屽紓姝ユ帴鍙o紝杩斿洖鍊煎彧鏄〃绀烘搷浣滄垚鍔燂紝涓嶄唬琛ㄦ挱鏀炬垚鍔�
+ *
+ *  @return YES/NO
+ */
+- (BOOL)startVoiceTalk;
+
+/**
+ *  寮�濮婽TS瀵硅锛屽紓姝ユ帴鍙o紝杩斿洖鍊煎彧鏄〃绀烘搷浣滄垚鍔燂紝涓嶄唬琛ㄦ挱鏀炬垚鍔�
+ *  閽堝浜嶯VR瀵硅浣跨敤
+ *  @return YES/NO
+ */
+- (BOOL)startVoiceTalkNeedVoiceChannel:(BOOL)needVoiceChannel;
+
+/**
+ *  寮�濮婹os瀵硅锛屽紓姝ユ帴鍙o紝杩斿洖鍊煎彧鏄〃绀烘搷浣滄垚鍔燂紝涓嶄唬琛ㄦ挱鏀炬垚鍔�
+ *
+ *  @return YES/NO
+ */
+- (BOOL)startVoiceTalkByQos;
+
+/**
+ *  鍋滄瀵硅锛屽紓姝ユ帴鍙o紝杩斿洖鍊煎彧鏄〃绀烘搷浣滄垚鍔�
+ *
+ *  @return YES/NO
+ */
+- (BOOL)stopVoiceTalk;
+
+/**
+ 棰勮鏃跺紑濮嬫湰鍦板綍鍍忛褰曞埗鍔熻兘锛屽紓姝ユ柟娉�
+ 
+ @param path 鏂囦欢瀛樺偍璺緞
+ @return YES/NO
+ */
+- (BOOL)startLocalRecordWithPathExt:(NSString *)path;
+
+
+/**
+ 缁撴潫鏈湴褰曞儚棰勫綍鍒讹紝骞剁敓鎴恗p4褰曞埗鏂囦欢锛屽紓姝ユ柟娉�
+ 
+ @param complete 鎿嶄綔鏄惁鎴愬姛 YES/NO
+ */
+- (void)stopLocalRecordExt:(void (^)(BOOL ret))complete;
+
+
+/**
+ *  鍗婂弻宸ュ璁蹭笓鐢ㄦ帴鍙o紝鏄惁鍒囨崲鍒板惉璇寸姸鎬�
+ *
+ *  @param isPressed 鏄惁鍙鐘舵��
+ *
+ *  @return YES/NO
+ */
+- (BOOL)audioTalkPressed:(BOOL)isPressed;
+
+/**
+ *  寮�濮嬩簯瀛樺偍杩滅▼鍥炴斁锛屽紓姝ユ帴鍙o紝杩斿洖鍊煎彧鏄〃绀烘搷浣滄垚鍔燂紝涓嶄唬琛ㄦ挱鏀炬垚鍔�
+ *  @param cloudFile 浜戝瓨鍌ㄦ枃浠朵俊鎭�
+ *
+ *  @return YES/NO
+ */
+- (BOOL)startPlaybackFromCloud:(EZCloudRecordFile *)cloudFile;
+
+/**
+ *  寮�濮嬭繙绋婼D鍗″洖鏀撅紝寮傛鎺ュ彛锛岃繑鍥炲�煎彧鏄〃绀烘搷浣滄垚鍔燂紝涓嶄唬琛ㄦ挱鏀炬垚鍔�
+ *
+ *  @param deviceFile SD鍗℃枃浠朵俊鎭�
+ *
+ *  @return YES/NO
+ */
+- (BOOL)startPlaybackFromDevice:(EZDeviceRecordFile *)deviceFile;
+
+/**
+ *  鏆傚仠杩滅▼鍥炴斁鎾斁
+ */
+- (BOOL)pausePlayback;
+
+/**
+ *  缁х画杩滅▼鍥炴斁鎾斁
+ */
+- (BOOL)resumePlayback;
+
+/**
+ *  鏍规嵁鍋忕Щ鏃堕棿鎾斁
+ *
+ *  @param offsetTime 褰曞儚鍋忕Щ鏃堕棿
+ */
+- (void)seekPlayback:(NSDate *)offsetTime;
+
+/**
+ *  鑾峰彇褰撳墠鎾斁鏃堕棿杩涘害
+ *
+ *  @return 鎾斁杩涘害鐨凬SDate鏁版嵁
+ */
+- (NSDate *)getOSDTime;
+
+/**
+ *  鍋滄杩滅▼鍥炴斁
+ */
+- (BOOL)stopPlayback;
+
+/**
+ *  鐩存挱鐢婚潰鎶撳浘
+ *
+ *  @param quality 鎶撳浘璐ㄩ噺锛�0锝�100锛�,鏁板�艰秺澶у浘鐗囪川閲忚秺濂斤紝鍥剧墖澶у皬瓒婂ぇ
+ *
+ *  @return image
+ */
+- (UIImage *)capturePicture:(NSInteger)quality;
+
+/**
+ 鑾峰彇鍐呴儴鎾斁鍣ㄥ彞鏌勩�傚缓璁瘡娆′娇鐢ㄦ挱鏀惧櫒鍙ユ焺鏃跺潎璋冪敤姝ゆ柟娉曡幏鍙栵紝骞惰繘琛屾湁鏁堟�у垽鏂��
+
+ @return 灏忎簬0涓烘棤鏁堝�硷紝澶т簬绛変簬0涓烘湁鏁堝��
+ */
+- (int)getPlayPort;
+
+/**
+ 鑾峰彇褰撳墠鍙栨祦鏂瑰紡锛�
+
+ @return 褰撳墠鍙栨祦绫诲瀷
+ */
+- (int)getStreamFetchType;
+
+/**
+sd鍗″強浜戝瓨鍌ㄥ�嶉�熷洖鏀炬帴鍙�
+1.鏀寔鎶藉抚蹇斁鐨勮澶囨渶楂樻敮鎸�16鍊嶉�熷揩鏀撅紙鎵�鏈夊彇娴佹柟寮忥紝鍖呮嫭P2P锛�
+2.涓嶆敮鎸佹娊甯у揩鏀剧殑璁惧锛屼粎鏀寔鍐呭缃戠洿杩炲揩鏀撅紝鏈�楂樻敮鎸�8鍊�
+3.HCNetSDK鍙栨祦娌℃湁蹇斁姒傚康锛屽叏閫熸帹娴侊紝鍙敼鍙樻挱鏀惧簱閫熺巼
+4.娉ㄦ剰鍖哄埆锛�
+   鑰丼D鍗″洖鏀句互鍙奌CNetSDK鍥炴斁锛岃缃畬閫氳繃杩斿洖鍊艰繑鍥炴垚鍔熻繕鏄け璐ワ紝娌℃湁鍏朵粬娑堟伅
+   鏂板崗璁殑浜戝瓨鍌ㄥ洖鏀句互鍙婃敮鎸乻eek銆乧ontinue鐨勮澶嘾鏂癝D鍗″洖鏀撅紝璁剧疆瀹岄�氳繃杩斿洖鍊艰繑鍥炴垚鍔熻繕鏄け璐ワ紝濡傛灉鎴愬姛锛�
+   鍒欏悗缁繕鏈変竴鏉ZVideoPlayerMessageStart寮傛娑堟伅琛ㄧず鎴愬姛鍐嶆鍙栨祦
+   杩斿洖鍏朵粬閿欒鐮佽〃绀哄け璐� (鏂板崗璁簯瀛樺偍鍜屾柊SD鍗″洖鏀捐繑鍥濫Z_ERROR_NEED_RETRY 琛ㄧず闇�瑕侀噸璇曪級
+
+@param rate    鍥炴斁閫熷害锛屽叿浣撳弬鑰� EZ_PLAY_BACK_RATE
+@param mode 鍥炴斁鏃剁殑鎶藉抚鎺у埗锛屽綋鍓嶄粎浜戝瓨鍌ㄦ敮鎸併��0锛� 4鍊嶉�熷叏甯э紝8鍊嶉�熶互涓婃娊甯�   1锛氭娊甯�   2锛氬叏甯�  锛堝璁惧鍥炴斁褰撳墠涓嶆敮鎸侊紝浼犲叆0鍗冲彲锛�
+@return YES/NO
+ */
+- (BOOL)setPlaybackRate:(EZPlaybackRate) rate mode:(NSUInteger)mode;
+
+/**
+ 璁剧疆鍏ㄥ弻宸ュ璁叉椂鐨勬ā寮�,瀵硅鎴愬姛鍚庤皟鐢�
+ 
+ @param routeToSpeaker YES:浣跨敤鎵0鍣� NO:浣跨敤鍚瓛
+ */
+- (void)changeTalkingRouteMode:(BOOL)routeToSpeaker;
+
+/// //鎵╁睍鍙傛暟 UIKit涓撶敤
+/// @param exParamInfo EZPlayerExParamInfo
+- (void)setExParamInfo:(EZPlayerExParamInfo *)exParamInfo;
+
+/**
+ * 璁剧疆鎵撳紑鎾斁搴撶殑鏅鸿兘鍒嗘瀽锛屽綋鍓嶆俯鎰熺浉鏈虹殑妗嗘浣跨敤浜嗚鏅鸿兘鍒嗘瀽鏁版嵁锛岄瑙堟垚鍔熷悗璋冪敤锛屽湪鎾斁杩囩▼涓殢鏃跺紑鍏�
+ *
+ * @param enable YES锛氬紑  NO锛氬叧
+ *
+ * @return 杩斿洖鐘舵��
+ */
+- (BOOL)setIntelAnalysis:(BOOL)enable;
+
+@end
+
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZPlayerExParamInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZPlayerExParamInfo.h
new file mode 100644
index 0000000..1fe1a86
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZPlayerExParamInfo.h
@@ -0,0 +1,34 @@
+//
+//  EZPlayerExParamInfo.h
+//  EzvizOpenSDK
+//
+//  Created by linyong on 2018/4/2.
+//  Copyright 漏 2018骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+typedef enum
+{
+    EZPLAYER_STREAM_DEFAULT = 0,//榛樿
+    EZPLAYER_STREAM_MAIN,//涓荤爜娴�
+    EZPLAYER_STREAM_SUB,//瀛愮爜娴�
+    EZPLAYER_STREAM_MAX
+}EZPlayerStreamType;
+
+typedef enum
+{
+    EZPLAYER_TRANS_DEFAULT = 0, //榛樿
+    EZPLAYER_TRANS_EZVIZ,//钀ょ煶绉佹湁娴佸獟浣�
+    EZPLAYER_TRANS_RTMP,//RTMP
+    EZPLAYER_TRANS_MAX
+}EZPlayerTransportType;
+
+@interface EZPlayerExParamInfo : NSObject
+
+@property (nonatomic,copy) NSString *vtduIp; ///vtdu鏈嶅姟鍣╥p
+@property (nonatomic,assign) NSInteger vtduPort; //vtdu绔彛鍙�
+@property (nonatomic) EZPlayerStreamType streamMode; ///榛樿涓�0锛屼富鐮佹祦涓�1锛屽瓙鐮佹祦涓�2
+@property (nonatomic,assign) EZPlayerTransportType protocolType; ///浼犺緭鍗忚锛岄粯璁や负0
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZProbeDeviceInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZProbeDeviceInfo.h
new file mode 100644
index 0000000..18e7369
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZProbeDeviceInfo.h
@@ -0,0 +1,47 @@
+//
+//  EZProbeDeviceInfo.h
+//  EZWiFiConfigSDK
+//
+//  Created by DeJohn Dong on 15/12/11.
+//  Copyright 漏 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓烘煡璇㈣澶囦俊鎭璞★紙璁惧娣诲姞鍓嶄娇鐢級
+@interface EZProbeDeviceInfo : NSObject
+
+/// 灞曠ず鍚嶇О
+@property (nonatomic, copy) NSString *displayName;
+/// 璁惧澶х被鍚�
+@property (nonatomic, copy) NSString *category;
+/// 璁惧鍨嬪彿鍚�
+@property (nonatomic, copy) NSString *model;
+/// 璁惧鐭簭鍒楀彿
+@property (nonatomic, copy) NSString *subSerial;
+/// 璁惧闀垮簭鍒楀彿
+@property (nonatomic, copy) NSString *fullSerial;
+/// 璁惧鍦ㄧ嚎鐘舵�侊紝1-鍦ㄧ嚎锛屽叾浠�-涓嶅湪绾�
+@property (nonatomic) NSInteger status;
+/// 璁惧鍥剧墖
+@property (nonatomic, copy) NSString *defaultPicPath;
+/// 鏄惁鏀寔wifi锛�0-涓嶆敮鎸侊紝1-鏀寔锛�2-鏀寔甯serId鐨勬柊鐨剋ifi閰嶇疆鏂瑰紡锛�3-鏀寔smartwifi
+@property (nonatomic) NSInteger supportWifi;
+/// 鏄惁鏀寔AP閰嶇綉锛�2-鏀寔AP锛屽叾浠栧�间负涓嶆敮鎸丄P閰嶇綉
+@property (nonatomic) NSInteger supportAP;
+/// 鏄惁鏀寔澹版尝閰嶇疆,0-涓嶆敮鎸侊紝1-鏀寔
+@property (nonatomic) NSInteger supportSoundWave;
+/// 鏄惁鏀寔浜戝瓨鍌紝0-涓嶆敮鎸侊紝1-鏀寔
+@property (nonatomic) NSInteger supportCloud;
+/// 璁惧鍗忚鐗堟湰
+@property (nonatomic, copy) NSString *releaseVersion;
+/// 璁惧鐗堟湰
+@property (nonatomic, copy) NSString *version;
+/// 鍙敤浜庢坊鍔犵殑閫氶亾鏁�
+@property (nonatomic) NSInteger availiableChannelCount;
+/// N1锛孯1锛孉1绛夎澶囧叧鑱旂殑璁惧鏁�
+@property (nonatomic) NSInteger relatedDeviceCount;
+/// 鑳藉姏闆�
+@property (nonatomic, copy) NSString *supportExt;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRTCCameraParam.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRTCCameraParam.h
new file mode 100644
index 0000000..503a5b8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRTCCameraParam.h
@@ -0,0 +1,38 @@
+//
+//  EZMediaSessionVideoParam.h
+//  EZBAVClient
+//
+//  Created by kanhaiping on 2018/7/13.
+//  Copyright 漏 2018骞� hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <AVFoundation/AVFoundation.h>
+
+@interface EZRTCCameraParam : NSObject
+
+
+/// 鎽勫儚澶撮噰闆嗛噰闆嗙敾闈㈢殑榛樿璁剧疆锛屾瘮濡侫VCaptureSessionPreset1280x720锛岃浼犲叆AVCaptureSessionPreset640x480 浠ヤ笂鐨勫垎杈ㄧ巼
+//@property (nonatomic, strong) AVCaptureSessionPreset resolutionPreset;
+
+/// 鏈�缁堣緭鍑虹殑鐢婚潰鐨勫
+//@property (nonatomic, assign) NSInteger pixelWidth;
+//
+///// 鏈�缁堣緭鍑虹殑鐢婚潰鐨勯珮
+//@property (nonatomic, assign) NSInteger pixelHeigth;
+
+/// 浼犲叆 AVCaptureVideoOrientation锛岄粯璁ょ珫灞�
+@property (nonatomic, assign) AVCaptureVideoOrientation videoOrientation;
+
+
+/// 鏄惁鏄悗缃憚鍍忓ご锛岄粯璁O
+@property (nonatomic, assign) BOOL isBackCameraSeleced;
+
+///// I甯ч棿闅� 榛樿4绉�
+//@property (nonatomic, assign) NSInteger encodeKeyFrameInterval;
+//
+///// 甯х巼
+//@property (nonatomic, assign) NSInteger fps;
+
++ (AVCaptureSessionPreset)resolutionPresetForWidth:(NSInteger)width andHeigth:(NSInteger)heigth andOri:(AVCaptureVideoOrientation)ori;
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRTCMediaSessionDefines.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRTCMediaSessionDefines.h
new file mode 100644
index 0000000..7c1a1bb
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRTCMediaSessionDefines.h
@@ -0,0 +1,107 @@
+//
+//  EZMediaSessionDefines.h
+//  H264 Encode and Decode
+//
+//  Created by kanhaiping on 2018/6/22.
+//  Copyright 漏 2018骞� AJB. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#define EZMediaSessionEncodeResolutionRatioHigh  1  //鍒嗚鲸鐜� 1锛�480*480 0锛�320*320
+#define EZMediaSessionDstVideoFPS (15)
+#define EZMediaSessionDstVideoMaxKeyFrameInterval (300)//鍗曚綅绉�
+
+#define EZMediaSessionSmallStreamWidth (320)
+#define EZMediaSessionSmallStreamHeight (320)
+
+#define EZMediaSessionDefaultStreamWidth (480)
+#define EZMediaSessionDefaultStreamHeight (480)
+
+#define EZMediaSessionDstVideoAverageBitRate480x480 (4 * 128 * 1024)//鍗曚綅 bps  //averageBPS
+#define EZMediaSessionDstVideoDataRateLimits480x480 (6 * 128 * 1024)//鍗曚綅 bps  //maxBPS
+#define EZMediaSessionDstVideoAverageBitRate320x320 (4 * 128 * 1024 * 5 / 8)//鍗曚綅 bps  //averageBPS
+#define EZMediaSessionDstVideoDataRateLimits320x320 (6 * 128 * 1024 * 5 / 8)//鍗曚綅 bps  //maxBPS
+
+
+typedef NS_OPTIONS(NSUInteger, EZMediaCaptureSessionType) {
+    EZMediaSessionCaptureNone = 1 << 0,
+    EZMediaSessionCaptureVideoType = 1 << 1,
+    EZMediaSessionCaptureAudioType = 1 << 2,
+    EZMediaSessionCaptureThumbnailType = 1 << 3,
+    EZMediaSessionCaptureShareScreenType = 1 << 4,
+
+};
+
+typedef NS_ENUM(NSUInteger, EZMediaSessionErrorBase) {
+    EZMediaSessionErrorUnknowError = 9000,
+    EZMediaSessionErrorNotReadyToSendData,
+    EZMediaSessionErrorCallSeqError,
+    EZMediaSessionErrorDuplicated,
+    EZMediaSessionErrorBaseAudioCapture = 10000,
+    EZMediaSessionErrorBaseVideoCapture = 20000,
+    EZMediaSessionErrorBaseAudioEncode = 30000,
+    EZMediaSessionErrorBaseVideoEncode = 40000,
+    EZMediaSessionErrorBaseStreamClient = 50000,
+    EZMediaSessionErrorBasePlayer = 60000,
+};
+
+typedef NS_ENUM(NSUInteger, EZAudioRecorderError) {
+    EZAudioRecorderErrorUnknown = EZMediaSessionErrorBaseAudioCapture,
+    EZAudioRecorderErrorInitError = 10100,
+    EZAudioRecorderErrorUnableToCreateSample,
+    EZAudioRecorderErrorStateError,
+    EZAudioRecorderErrorAuthorizeFailed = 10152,
+    EZAudioRecorderErrorStopError = 10200,
+};
+
+typedef NS_ENUM(NSUInteger, EZMediaCaptureError) {
+    EZMediaCaptureErrorUnknown = EZMediaSessionErrorBaseVideoCapture,
+    EZMediaCaptureErrorInitError = 20100,
+    EZMediaCaptureErrorAuthorizeFailed = 20153,
+    EZMediaCaptureErrorSwitchCameraError = 20200,
+    EZMediaCaptureErrorCroppedError = 20300,
+    EZMediaCaptureErrorRenderError = 20400,
+    EZMediaCaptureErrorScreenStartError = 20500,
+    EZMediaCaptureErrorScreenStopError,
+    EZMediaCaptureErrorScreenRecordError,
+    EZMediaCaptureErrorUnsupport,
+};
+
+typedef NS_ENUM(NSUInteger, EZAudioEncoderError) {
+    EZAudioEncoderErrorUnknown = EZMediaSessionErrorBaseAudioEncode,
+    EZAudioEncoderErrorFailToInitConverter = 30100,
+    EZAudioEncoderErrorFailToGetDataBuffer,
+    EZAudioEncoderErrorFailToEncodeBuffer,
+};
+
+typedef NS_ENUM(NSUInteger, EZVideoH264EncoderError) {
+    EZVideoH264EncoderErrorUnknown = EZMediaSessionErrorBaseVideoEncode,
+    EZVideoH264EncoderErrorInitFailed = 40100,
+    EZVideoH264EncoderErrorInvalidSample,
+    EZVideoH264EncoderErrorSampleNotReady,
+    EZVideoH264EncoderErrorNotRunning,
+    EZVideoH264EncoderErrorSetMaxBPSFailed,
+    EZVideoH264EncoderErrorSetAverageBPSFailed,
+    EZVideoH264EncoderErrorParamError,
+    EZVideoH264EncoderErrorEncodeFailed = 40200,
+};
+
+typedef NS_ENUM(NSUInteger, EZBAVStreamClientError) {
+    EZBAVStreamClientErrorUnknow = EZMediaSessionErrorBaseStreamClient,
+    EZBAVStreamClientErrorAudioEnableNotAllowed = EZMediaSessionErrorBaseStreamClient + 9000,
+    EZBAVStreamClientErrorShareEnableNotAllowed,
+
+};
+
+
+typedef NS_ENUM(NSUInteger, EZRTCAudioEncodeType) {
+    EZRTCAudioEncodeType_AAC,
+    EZRTCAudioEncodeType_Opus,
+};
+
+
+@interface EZRTCMediaSessionDefines : NSObject
+@end
+
+typedef void(^EZScreenShareResultBlock)(NSInteger ret);
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRTCSampleHandleManager.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRTCSampleHandleManager.h
new file mode 100644
index 0000000..f1d9a21
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRTCSampleHandleManager.h
@@ -0,0 +1,31 @@
+//
+//  FIAgoraSocketManager.h
+//  FIAgoraVideo
+//
+//  Created by flagadmin on 2020/5/7.
+//  Copyright 漏 2020 flagadmin. All rights reserved.
+//
+
+#import <ReplayKit/ReplayKit.h>
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef enum : NSUInteger {
+    EZSampleHandleManagerStateUnconnected,
+    EZSampleHandleManagerStateConnecting,
+    EZSampleHandleManagerStateConnected,
+    EZSampleHandleManagerStateStopped,
+} EZSampleHandleManagerState;
+
+
+@interface EZRTCSampleHandleManager : NSObject
++ (EZRTCSampleHandleManager *)sharedManager;
+@property (nonatomic, assign, readonly) EZSampleHandleManagerState state;
+- (void)setup;
+- (void)finish;
+- (void)sendVideoBuffer:(CMSampleBufferRef)sampleBuffer;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRTCVideoEncodeParam.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRTCVideoEncodeParam.h
new file mode 100644
index 0000000..b420fba
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRTCVideoEncodeParam.h
@@ -0,0 +1,30 @@
+//
+//  EZMediaSessionEncodeParam.h
+//  EZMediaSession
+//
+//  Created by kanhaiping on 2018/8/24.
+//  Copyright 漏 2018骞� hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@class EZRTCCameraParam;
+
+@interface EZRTCVideoEncodeParam : NSObject
+
+//濡傛灉缂栫爜鐨勭洰鏍囧楂樹负0锛屽垯缂栫爜杈撳嚭涓鸿緭鍏ョ殑鍘熷瀹介珮
+@property (nonatomic, assign) NSInteger pixelWidth;
+@property (nonatomic, assign) NSInteger pixelHeigth;
+@property (nonatomic, assign) NSInteger fps;
+@property (nonatomic, assign) NSInteger averageBPS;
+@property (nonatomic, assign, readonly) NSInteger maxBPS;
+@property (nonatomic, assign) NSInteger encodeKeyFrameInterval;//I甯ч棿闅旓紝鍗曚綅绉�
+
+//+ (EZRTCVideoEncodeParam *)encodeParamFromVideoParam:(EZRTCCameraParam *)videoParam;
++ (EZRTCVideoEncodeParam *)defaultEncodeParam;
++ (EZRTCVideoEncodeParam *)deviceWatchParam;
++ (EZRTCVideoEncodeParam *)deviceBabyRobotParam;
++ (EZRTCVideoEncodeParam *)encodeParamForScreenShare;
++ (EZRTCVideoEncodeParam *)encodeParamForGlobalScreenShare;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRecordCoverFetcherManager.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRecordCoverFetcherManager.h
new file mode 100644
index 0000000..c8bec6a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRecordCoverFetcherManager.h
@@ -0,0 +1,69 @@
+//
+//  EZRecordCoverFetcherManager.h
+//  EZPlay
+//
+//  Created by JuneCheng on 2022/12/19.
+//
+
+#import <Foundation/Foundation.h>
+@class EZDeviceRecordFile;
+
+// Fetcher鍒濆鍖栦唬鐞�
+@protocol RecordCoverFetcherDelegate<NSObject>
+
+@optional
+/**
+ * SD鍗″綍鍍忓皝闈㈡彁鍙栧櫒鍒濆鍖栨垚鍔熷洖璋�
+ */
+- (void)onFetcherInitSuccess;
+
+/**
+ * SD鍗″綍鍍忓皝闈㈡彁鍙栧櫒鍒濆鍖栧け璐ュ洖璋�
+ */
+- (void)onFetcherInitFailed;
+
+/**
+ * SD鍗″綍鍍忓皝闈㈡彁鍙栧皝闈㈡垚鍔熷洖璋�
+ */
+- (void)onGetCoverSuccess:(int)seq data:(NSData *_Nonnull)data;
+
+/**
+ * SD鍗″綍鍍忓皝闈㈡彁鍙栧皝闈㈠け璐ュ洖璋�
+ */
+- (void)onGetCoverFailed:(int)errorCode;
+
+@end
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZRecordCoverFetcherManager : NSObject
+
+
+@property (nonatomic, weak) id <RecordCoverFetcherDelegate> fetcherDelegate;
+
++ (instancetype)sharedInstance;
+
+/**
+ * 涓庤澶囧缓绔嬮摼鎺ワ紙鍥藉唴鏀寔锛屾捣澶栦笉鏀寔锛�
+ *
+ * @param   deviceSerial 璁惧搴忓垪鍙�
+ * @param   cameraNo 璁惧閫氶亾鍙�
+ */
+- (void)initFetcherWithDeviceSerial:(NSString *)deviceSerial cameraNo:(NSInteger)cameraNo;
+
+
+/**
+ * 鏂紑涓庤澶囩殑閾炬帴锛堝浗鍐呮敮鎸侊紝娴峰涓嶆敮鎸侊級
+ */
+- (void)stopFetcher;
+
+
+/**
+ * 璺熻澶囪姹係D鍗″綍鍍忓皝闈紙鍥藉唴鏀寔锛屾捣澶栦笉鏀寔锛�
+ */
+- (void)requestRecordCover:(NSArray<EZDeviceRecordFile *> *)recordFiles;
+
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRecordDownloadTask.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRecordDownloadTask.h
new file mode 100644
index 0000000..ba50a2a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRecordDownloadTask.h
@@ -0,0 +1,86 @@
+//
+//  EZRecordDownloadTask.h
+//  EZOpenSDK
+//
+//  Created by yuqian on 2019/7/2.
+//  Copyright 漏 2019 Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef NS_ENUM(NSInteger, EZRecordDownloaderStatus)
+{
+    EZRecordDownloaderStatusStart = 1,          //寮�濮嬩笅杞�
+    EZRecordDownloaderStatusFinish = 2,         //褰曞儚涓嬭浇缁撴潫
+    EZRecordDownloaderStatusMoreToken = 3,
+};
+
+typedef enum : NSUInteger {
+    EZRecordDownloadTaskWaitting,
+    EZRecordDownloadTaskDownloading,
+    EZRecordDownloadTaskCompleting,
+} EZRecordDownloadTaskStatus;
+
+@interface EZRecordDownloadTask : NSObject
+
+/**
+ 姣忎釜涓嬭浇浠诲姟鐨勫敮涓�鏍囪瘑
+ */
+@property (nonatomic, assign) NSUInteger taskID;
+
+
+@property (nonatomic, assign) EZRecordDownloadTaskStatus taskStatus;
+
+/**
+ 鏈湴瀛樻斁璺緞
+ */
+@property (nonatomic, strong) NSString *saveFilePath;
+
+/**
+ 缁撴潫鍥炶皟
+ */
+@property (nonatomic, copy) void(^finshed)(EZRecordDownloaderStatus statusCode);
+
+/**
+ 澶辫触鍥炶皟
+ */
+@property (nonatomic, copy) void(^failed)(NSError *error);
+
+/**
+ 宸蹭笅杞芥枃浠跺ぇ灏忓洖璋�
+ */
+@property (nonatomic, copy) void(^downloading)(NSUInteger downloadSize);
+
+/**
+ 寮�濮嬩笅杞�
+
+ @return 鎴愬姛0锛屽け璐�-1
+ */
+- (int)startRecordDownload;
+
+/**
+ 缁撴潫涓嬭浇锛屾竻鐞嗚祫婧�
+ */
+- (void)stopRecordDownload;
+
+/**
+ 璁剧疆涓嬭浇鍥炶皟
+ 
+ @param finshed 缁撴潫鍥炶皟
+ @param failed 澶辫触鍥炶皟
+ */
+- (void)setDownloadCallBackWithFinshed:(void(^)(EZRecordDownloaderStatus statusCode))finshed
+                                failed:(void(^)(NSError *error))failed;
+
+/**
+ 璁剧疆涓嬭浇杩涘害鍥炶皟
+ 
+ @param downloading 涓嬭浇鏂囦欢澶у皬鍥炶皟
+ */
+- (void)setDownloadCallBackWithDownloadSize:(void(^)(NSUInteger downloadSize))downloading;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRecordDownloader.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRecordDownloader.h
new file mode 100644
index 0000000..d815790
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZRecordDownloader.h
@@ -0,0 +1,49 @@
+//
+//  EZRecordDownloader.h
+//  EZOpenSDK
+//
+//  Created by yuqian on 2019/7/2.
+//  Copyright 漏 2019 Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class EZRecordDownloadTask;
+
+@interface EZRecordDownloader : NSObject
+
+
+/// 涓嬭浇浠诲姟闃熷垪
+@property (nonatomic, strong, readonly) NSMutableArray *tasks;
+
+/**
+ 鍒濆鍖栧崟渚�
+ 
+ @return 鍗曚緥
+ */
++ (instancetype) shareInstane;
+
+/**
+ 娣诲姞涓嬭浇浠诲姟锛屽苟寮�濮嬩笅杞�
+ 浠诲姟涓嬭浇骞跺彂鏁伴噺闄愬埗锛屾渶楂樻敮鎸� 10 涓换鍔″苟琛屼笅杞�
+ 璁惧褰曞儚涓嬭浇锛氫緷璧栬澶囨墍鏀寔鐨勬渶楂樿矾鏁伴檺鍒�
+ 
+ 
+ @param task 涓嬭浇浠诲姟
+ @return 鏄惁鍔犲叆闃熷垪鎴愬姛  0 寮�濮嬩笅杞� -1 浠诲姟涓虹┖   -2 浠诲姟宸插湪涓嬭浇 
+ */
+- (int) addDownloadTask:(EZRecordDownloadTask *)task;
+
+/**
+ 鍋滄涓嬭浇浠诲姟锛屽苟娓呴櫎涓嬭浇鍒楄〃涓殑浠诲姟銆備笅杞界粨鏉熸垨澶辫触鍧囪鎵ц锛屾竻鐞嗚祫婧�
+ 
+ @param task 涓嬭浇浠诲姟
+ @return 鏄惁绉婚櫎闃熷垪鎴愬姛
+ */
+- (int) stopDownloadTask:(EZRecordDownloadTask *)task;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZSADPDeviceInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZSADPDeviceInfo.h
new file mode 100644
index 0000000..7abbece
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZSADPDeviceInfo.h
@@ -0,0 +1,40 @@
+//
+//  EZSADPDeviceInfo.h
+//  EzvizOpenSDK
+//
+//  Created by linyong on 2017/8/15.
+//  Copyright 漏 2017骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface EZSADPDeviceInfo : NSObject
+
+///闀胯澶囧簭鍒楀彿
+@property (nonatomic,copy) NSString *deviceSerial;
+///璁惧mac鍦板潃
+@property (nonatomic,copy) NSString *deviceMac;
+///璁惧鏄惁婵�娲�
+@property (nonatomic,assign) BOOL actived;
+///璁惧鏈湴鍦板潃 IPV4
+@property (nonatomic,copy) NSString *localIp;
+///璁惧绔彛鍙�
+@property (nonatomic,assign) NSInteger localPort;
+///璁惧鏈湴鍦板潃 IPV6
+@property (nonatomic,copy) NSString *localIpV6;
+///http绔彛鍙�
+@property (nonatomic,assign) NSInteger httpPort;
+///璁惧绫诲瀷
+@property (nonatomic,assign) NSInteger deviceType;
+///璁惧绫诲瀷鎻忚堪
+@property (nonatomic,copy) NSString *deviceTypeDes;
+///璁惧鍥轰欢鐗堟湰鍙�
+@property (nonatomic,copy) NSString *firmwareVersion;
+///鎸変綅琛ㄧず,瀵瑰簲涓轰负1琛ㄧず鏀寔,0x01:鏄惁鏀寔Ipv6,0x02:鏄惁鏀寔淇敼Ipv6鍙傛暟,0x04:鏄惁鏀寔Dhcp,0x08:鏄惁鏀寔udp澶氭挱,0x10:鏄惁鍚姞瀵嗚妭鐐�,0x20:鏄惁鏀寔鎭㈠瀵嗙爜,0x40:鏄惁鏀寔閲嶇疆瀵嗙爜,0x80:鏄惁鏀寔鍚屾IPC瀵嗙爜
+@property (nonatomic,assign) NSInteger abilitySupport;
+///鏄惁鍚敤DHCP
+@property (nonatomic,assign) BOOL DHCPOn;
+///鏄惁鏄悿鐭宠澶�
+@property (nonatomic,assign) BOOL isEzvizDevice;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZStorageInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZStorageInfo.h
new file mode 100644
index 0000000..2393d5a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZStorageInfo.h
@@ -0,0 +1,23 @@
+//
+//  EZStorageInfo.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/12/15.
+//  Copyright 漏 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓鸿澶囧瓨鍌ㄤ俊鎭璞�
+@interface EZStorageInfo : NSObject
+
+/// 瀛樺偍浠嬭川绱㈠紩
+@property (nonatomic) NSInteger index;
+/// 瀛樺偍浠嬭川鍚嶇О
+@property (nonatomic, copy) NSString *name;
+/// 瀛樺偍浠嬭川鐘舵�侊紝0姝e父銆�1瀛樺偍浠嬭川閿欍��2鏈牸寮忓寲銆�3姝e湪鏍煎紡鍖�
+@property (nonatomic) NSInteger status;
+/// 瀛樺偍浠嬭川鏍煎紡鍖栬繘搴�
+@property (nonatomic) NSInteger formatRate;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZStreamPlayer.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZStreamPlayer.h
new file mode 100644
index 0000000..408ba05
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZStreamPlayer.h
@@ -0,0 +1,118 @@
+//
+//  EZStreamPlayer.h
+//  EZOpenSDKFramework
+//
+//  Created by yuqian on 2020/4/3.
+//  Copyright 漏 2020 Hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "EZDeviceRecordFile.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class EZStreamPlayer;
+
+typedef enum : NSUInteger {
+    EZStreamPlayerMsgTypeUnknown,              //鏃犳晥绫诲瀷
+    EZStreamPlayerMsgTypeRealPlayStart,        //寮�鍚瑙堟垚鍔�
+    EZStreamPlayerMsgTypeRealPlayClose,        //鍏抽棴棰勮鎴愬姛
+    EZStreamPlayerMsgTypePlayBackStart,        //寮�鍚澶囧洖鏀炬垚鍔�
+    EZStreamPlayerMsgTypePlayBackClose,        //鍏抽棴璁惧鍥炴斁鎴愬姛
+} EZStreamPlayerMsgType;
+
+typedef enum : NSUInteger {
+    EZStreamDataTypeUnknown,                   // 鏃犳晥绫诲瀷
+    EZStreamDataTypeHeader,                    // 鎺ユ敹娴佸ご
+    EZStreamDataTypeData,                      // 鎺ユ敹鏁版嵁
+    EZStreamDataTypeStreamEnd,                 // 娴佺粨鏉�
+}EZStreamDataType;
+
+
+@protocol EZStreamPlayerDelegate <NSObject>
+
+/**
+ *  鎾斁鍣ㄦ挱鏀惧け璐ラ敊璇洖璋�
+ *
+ *  @param player 鎾斁鍣ㄥ璞�
+ *  @param error  鎾斁鍣ㄩ敊璇�
+ */
+- (void)streamPlayer:(EZStreamPlayer *)player didPlayFailed:(NSError *)error;
+
+/**
+ *  鎾斁鍣ㄦ秷鎭洖璋�
+ *
+ *  @param player      鎾斁鍣ㄥ璞�
+ *  @param msgType 鎾斁鍣ㄦ秷鎭爜
+ */
+- (void)streamPlayer:(EZStreamPlayer *)player didReceivedMessage:(EZStreamPlayerMsgType)msgType;
+
+/**
+ *  鐮佹祦鍥炶皟
+ *
+ *  @param player     鎾斁鍣ㄥ璞�
+ *  @param dataType  鏁版嵁绫诲瀷
+ *  @param data        鐮佹祦鏁版嵁
+ *  @param dataLength  闀垮害
+ */
+- (void)streamPlayer:(EZStreamPlayer *)player didReceivedData:(EZStreamDataType)dataType data:(int8_t *)data length:(int)dataLength;
+
+@end
+
+@interface EZStreamPlayer : NSObject
+
+@property (nonatomic, weak) id<EZStreamPlayerDelegate>delegate;
+
+/// 鏄惁璁╂挱鏀惧櫒澶勭悊杩涘叆鍚庡彴,YES:鑷姩澶勭悊;NO:涓嶅鐞�,榛樿涓篩ES
+@property (nonatomic) BOOL backgroundModeByPlayer;
+
+
+/**
+*  鏍规嵁璁惧搴忓垪鍙峰拰閫氶亾鍙峰垱寤篍ZPlayer瀵硅薄
+*
+*  @param deviceSerial 璁惧搴忓垪鍙�
+*  @param cameraNo     閫氶亾鍙�
+*
+*  @return EZStreamPlayer瀵硅薄
+*/
++ (instancetype)createPlayerWithDeviceSerial:(NSString *)deviceSerial cameraNo:(NSInteger)cameraNo;
+
+/**
+ *  閿�姣丒ZPlayer
+ *
+ *  @return YES/NO;
+ */
+- (BOOL)destoryPlayer;
+
+/**
+ *  寮�濮嬫挱鏀撅紝寮傛鎺ュ彛锛岃繑鍥炲�煎彧鏄〃绀烘搷浣滄垚鍔燂紝涓嶄唬琛ㄦ挱鏀炬垚鍔�
+ *
+ *  @return YES/NO
+ */
+- (BOOL)startRealPlay;
+
+/**
+ *  鍋滄鎾斁锛屽紓姝ユ帴鍙�
+ *
+ */
+- (void)stopRealPlay;
+
+/**
+ *  寮�濮嬭澶囧洖鏀撅紝寮傛鎺ュ彛锛岃繑鍥炲�煎彧鏄〃绀烘搷浣滄垚鍔燂紝涓嶄唬琛ㄦ挱鏀炬垚鍔�
+ *
+ *  @param deviceFile SD鍗℃枃浠朵俊鎭�
+ *
+ *  @return YES/NO
+ */
+- (BOOL)startDevicePlayback:(EZDeviceRecordFile *)deviceFile;
+
+/// 缁撴潫璁惧鍥炴斁
+- (void)stopDevicePlayback;
+
+/// 璁剧疆璁惧楠岃瘉鐮侊紝鎾斁鍓嶈缃�
+/// @param verifyCode 璁惧楠岃瘉鐮�
+- (void)setVerifyCode:(NSString *)verifyCode;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZTokenKit.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZTokenKit.h
new file mode 100644
index 0000000..03f143f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZTokenKit.h
@@ -0,0 +1,40 @@
+//
+//  EzvizTokenKit.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/8/31.
+//  Copyright (c) 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface EZTokenKit : NSObject
+
+@property (nonatomic, readonly) NSString *token;  //鑾峰彇绗竴涓猼oken
+@property (nonatomic, readonly) NSInteger tokenCount; //褰撳墠tokenKit閲岃繕鏈夊灏憈oken鐨勬暟閲�
+
+/**
+ *  鍗曚緥鏂规硶
+ *
+ *  @return EZTokenKit瀵硅薄
+ */
++ (instancetype)sharedKit;
+
+/**
+ *  璁剧疆TokenList鏁扮粍
+ *
+ *  @param tokenList token鏁扮粍
+ */
+- (void)setTokens:(NSArray *)tokenList;
+
+/**
+ *  娓呯┖鏁扮粍
+ */
+- (void)clearTokens;
+
+/**
+ *  棰勫姞杞藉彇娴乼oken
+ */
+- (void)prepareToken:(void (^)(NSError *error))block;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZUserInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZUserInfo.h
new file mode 100644
index 0000000..dbfafe6
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZUserInfo.h
@@ -0,0 +1,23 @@
+//
+//  EZUserInfo.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/12/11.
+//  Copyright 漏 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓虹敤鎴蜂俊鎭璞�
+@interface EZUserInfo : NSObject
+
+/// 鐢ㄦ埛鍚�
+@property (nonatomic, copy) NSString *username;
+/// 鏄电О锛屾捣澶栫増鏈瀛楁涓虹┖
+@property (nonatomic, copy) NSString *nickname;
+/// 鐢ㄦ埛澶村儚鍦板潃锛屾捣澶栫増鏈瀛楁涓虹┖
+@property (nonatomic, copy) NSString *avatarUrl;
+/// 鐢ㄦ埛鍖哄煙domain
+@property (nonatomic, copy) NSString *areaDomain;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoQualityInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoQualityInfo.h
new file mode 100644
index 0000000..f392af7
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoQualityInfo.h
@@ -0,0 +1,23 @@
+//
+//  EZVideoQualityInfo.h
+//  EzvizOpenSDK
+//
+//  Created by linyong on 2017/2/28.
+//  Copyright 漏 2017骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓洪�氶亾鏀寔鐨勬竻鏅板害淇℃伅
+@interface EZVideoQualityInfo : NSObject
+
+/// 娓呮櫚搴﹀悕绉帮紝濡傝秴娓呫�侀珮娓呫�佸潎琛°�佹祦鐣呯瓑
+@property (nonatomic,copy) NSString *videoQualityName;
+
+/// 瑙嗛璐ㄩ噺锛�0-娴佺晠锛�1-鍧囪 锛�2-楂樻竻锛�3-瓒呮竻
+@property (nonatomic,assign) NSInteger videoLevel;
+
+/// 璇ユ竻鏅板害鎵�浣跨敤鐨勭爜娴佺被鍨嬶紝1涓轰富鐮佹祦锛�2涓哄瓙鐮佹祦
+@property (nonatomic,assign) NSInteger streamType;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalk.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalk.h
new file mode 100644
index 0000000..98fda05
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalk.h
@@ -0,0 +1,179 @@
+//
+//  EZBAVClient.h
+//  EZBAVClient
+//
+//  Created by kanhaiping on 2018/6/26.
+//  Copyright 漏 2018骞� hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+#import "EZBAVParam.h"
+#import "EZRTCMediaSessionDefines.h"
+#import "EZVideoTalkView.h"
+
+@class EZVideoTalk;
+@class EZRTCCameraParam;
+@class EZRTCVideoEncodeParam;
+
+@protocol EZVideoTalkDelegate<NSObject>
+
+@required
+/// 閿欒鍥炶皟
+/// @param client client
+/// @param errorCode 鍑洪敊鐨勯敊璇爜
+- (void)bavClient:(EZVideoTalk *)client didReceivedError:(int32_t)errorCode;
+
+/**
+ 鍥炶皟娑堟伅
+
+ @param client client
+ @param messageCode 娑堟伅鐮� 鍙傝EZBAVMessage
+ @param msg 闄勫姞淇℃伅锛�
+    濡傛灉鏄疎ZBAVMessagePeerEnteredRoom銆丒ZBAVMessagePeerLeaveRoom娑堟伅锛宮sg鏄疎ZRTCParticipantsInfo瀵硅薄
+    濡傛灉娑堟伅鏄� EZBAVMessageTransferData msg鏄� msg鏄瓧绗︿覆 @"瀹為檯鐨勯�忎紶娑堟伅"
+ */
+- (void)bavClient:(EZVideoTalk *)client didReceivedMessage:(int32_t)messageCode msg:(id)msg;
+
+
+@optional
+///**
+// 鍥炶皟娑堟伅 bavclient log鍥炶皟
+//
+// @param client client
+// @param msg 閫忎紶娑堟伅
+// */
+//- (void)bavClient:(EZVideoTalk *)client didReceivedBavClientLogMsg:(NSString*)msg;
+
+/**
+ 鏄剧ず鍥炶皟锛岄娆$敾闈㈠嚭鏉ヤ互鍙婂悗缁敾闈㈠昂瀵稿彂鐢熷彉鍖栨椂鍥炶皟
+
+ @param client client
+ @param width 鐢婚潰瀹藉害
+ @param height 鐢婚潰楂樺害
+ */
+- (void)bavClient:(EZVideoTalk *)client didDisplayWidth:(int32_t)width height:(int32_t)height;
+
+/**
+ 鎾斁鍗¢】
+ 
+ @param client client
+ @param delayTime 鍗¢】鏃堕棿
+ */
+- (void)bavClient:(EZVideoTalk *)client playDelayTime:(int32_t)delayTime;
+
+///**
+// 鎾斁鍗¢】缁熻
+//
+// @param client client
+// @param delayTimeStat 鍗¢】鏃堕棿
+// */
+//- (void)bavClient:(EZVideoTalk *)client playDelayTimeStatistics:(double)delayTimeStat;
+
+@end
+
+
+
+/// 鍙屽悜闊宠棰戦�氳瘽绫�
+/// 1.涓诲姩鍛煎彨
+/// A.鍙戣捣
+/// - init
+/// - enableCapture
+/// - start:param  role=0 reason=0 roomid=0
+/// B.閫氳瘽缁撴潫 璋冪敤 stop
+/// C.绛夊緟瀵规柟杩囩▼涓寕鏂� 璋冪敤stop
+/// 2.琚姩鏀跺埌鍛煎彨
+/// - init
+/// - enableCapture
+/// 灞曠ず鎺ュ惉鐣岄潰
+/// A.濡傛灉鎺ュ惉 璋冪敤 start锛歱aram role=1 reason=0 roomid=鏀跺埌鐨剅oomid 鎺ュ惉瀹岄�氳瘽涓寕鏂皟鐢╯top
+/// B.濡傛灉涓诲姩鎷掓帴 璋冪敤 start锛歱aram role=2 reason=101 roomid=鏀跺埌鐨剅oomid 鎷掓帴瀹屾垚鍚庣珛椹皟鐢╯top
+/// C.濡傛灉鏃犱汉鎺ュ惉 璋冪敤 start锛歱aram role=2 reason=102 roomid=鏀跺埌鐨剅oomid 瀹屾垚鍚庣珛椹皟鐢╯top
+@interface EZVideoTalk : NSObject
+
+@property (nonatomic, weak) id<EZVideoTalkDelegate> delegate;
+@property (nonatomic, assign, readonly) int32_t roomID;
+
+
+/**
+ 瀵硅鏃讹紝寮哄埗閲囩敤鎵0鍣ㄦ挱鏀惧0闊筹紝榛樿涓篩ES
+ */
+@property (nonatomic, assign) BOOL forceToSpeaker;
+
+
+/// 鍒濆鍖栬棰戦�氳瘽SDK瀵硅薄
+- (instancetype)init;
+
+
+
+/// 璁剧疆鏈湴鐨勯瑙堢獥鍙�
+/// @param localWin 绐楀彛window
+- (void)setLocalWindow:(EZVideoTalkView *)localWin;
+
+
+/// 鏈湴鎽勫儚澶村紑鍚�/鍏抽棴鎺ュ彛
+/// @param enable 鏄惁寮�鍚憚鍍忓ご
+- (NSInteger)enableVideoCapture:(BOOL)enable;
+
+
+/// 鏈湴楹﹀厠椋庡紑鍚�/鍏抽棴鎺ュ彛
+/// @param enable 鏄惁寮�鍚害鍏嬮
+- (NSInteger)enableAudioCatpure:(BOOL)enable;
+
+
+// 鏄惁寮�鍚睆骞曞叡浜�
+/// @param enable 鏄惁寮�鍚�
+/// @param block 涓荤嚎绋嬪洖璋冪粨鏋�
+- (void)enableScreenShare:(BOOL)enable andName:(NSString *)name withResultBlock:(EZScreenShareResultBlock)block;
+
+
+/// 鍙戣捣鍙屽悜闊宠棰戝璁诧紝鑰楁椂鎺ュ彛锛屾垚鍔熻繑鍥� noErr锛屽け璐ヨ繑鍥為敊璇爜
+/// @param param EZBAVParam
+- (int32_t)startWithParam:(EZBAVParam *)param;
+
+/// 璁剧疆杩滅▼绐楀彛锛�.濡傛灉璁剧疆闈炵┖瀵硅薄view锛屽繀椤诲湪涓荤嚎绋嬭皟鐢紙濡傛灉鏄缃垚nil锛屽彲浠ヤ笉鍦ㄤ富绾跨▼璋冪敤锛�
+/// @param window 鎾斁绐楀彛
+- (int32_t)setRemoteWindow:(UIView *)window;
+
+///  鍋滄鍙屽悜闊宠棰戝璁诧紝鎴愬姛杩斿洖 noErr锛屽け璐ヨ繑鍥為敊璇爜
+- (int32_t)stop;
+
+#pragma 闄勫姞鎺ュ彛
+
+/// 鍒囨崲瀵硅鏃朵娇鐢ㄧ殑鎽勫儚澶达紝榛樿閲囩敤鍓嶇疆 鍚屾鎺ュ彛
+/// @param backCameraSelected YES:閫夋嫨鍚庣疆锛孨O:閫夋嫨鍓嶇疆
+- (int32_t)switchCamera:(BOOL)backCameraSelected;
+
+
+/// 寮�鍏宠繙绋嬪0闊筹紝榛樿寮�
+/// @param open 寮�鍚�
+- (int32_t)enableRemoteSound:(BOOL)open;
+/// 寮傛鑾峰彇鏈湴鎶撳浘
+/// @param block 鎶撳浘鎴愬姛鍥炶皟锛屽け璐mage涓簄il
+//- (void)localScreenShotWithBlock:(void (^)(UIImage *image))block;
+
+/// 鑾峰彇杩滅鎶撳浘
+/// @param quality 鍘嬬缉璐ㄩ噺 0 ~ 100
+//- (UIImage *)remoteScreenShotWithQuality:(int)quality;
+
+/// 鏈湴褰曞埗
+/// @param path 鍐欏叆鐨勬矙鐩掕矾寰�
+//- (BOOL)startLocalVideoRecordWithPath:(NSString *)path;
+
+/// 鍋滄鏈湴褰曞埗
+//- (BOOL)stopLocalVideoRecord;
+
+/// 寮�濮嬭繙绔綍鍒� mp4
+/// @param path 鍐欏叆鐨勬矙鐩掕矾寰�
+//- (BOOL)startRemoteVideoRecordWithPath:(NSString *)path  forClient:(int32_t)clientID;
+
+
+/// 鍋滄杩滅褰曞埗
+//- (BOOL)stopRemoteVideoRecordForClient:(int32_t)clientID;
+
+
+/// 鍙戦�侀�忎紶娑堟伅鎺ュ彛锛屽悓姝ユ帴鍙o紝鍙兘鑰楁椂
+/// @param msg 娑堟伅鍐呭锛屾瘮濡俲son鏁版嵁
+- (int)sendTransferMsg:(NSString *)msg;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkComponent.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkComponent.h
new file mode 100644
index 0000000..2eaaa0e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkComponent.h
@@ -0,0 +1,23 @@
+//
+//  EZVideoTalkComponent.h
+//  EZOpenSDK
+//
+//  Created by JuneCheng on 2022/7/23.
+//
+
+#ifndef EZVideoTalkComponent_h
+#define EZVideoTalkComponent_h
+
+#import <EZOpenSDKFramework/EZBAVParam.h>
+#import <EZOpenSDKFramework/EZConferenceClient.h>
+#import <EZOpenSDKFramework/EZRTCCameraParam.h>
+#import <EZOpenSDKFramework/EZRTCMediaSessionDefines.h>
+#import <EZOpenSDKFramework/EZRTCSampleHandleManager.h>
+#import <EZOpenSDKFramework/EZRTCVideoEncodeParam.h>
+#import <EZOpenSDKFramework/EZVideoTalk.h>
+#import <EZOpenSDKFramework/EZVideoTalkGlobal.h>
+#import <EZOpenSDKFramework/EZVideoTalkSDK.h>
+#import <EZOpenSDKFramework/EZVideoTalkSDKDefines.h>
+#import <EZOpenSDKFramework/EZVideoTalkView.h>
+
+#endif /* EZVideoTalkComponent_h */
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkGlobal.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkGlobal.h
new file mode 100644
index 0000000..5517624
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkGlobal.h
@@ -0,0 +1,63 @@
+//
+//  EZVideoTalkGlobal.h
+//  EZVideoTalk
+//
+//  Created by yuqian on 2018/9/12.
+//  Copyright 漏 2018骞� hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "EZRTCMediaSessionDefines.h"
+
+@class EZRTCVideoEncodeParam;
+@class EZRTCCameraParam;
+
+@interface EZVideoTalkGlobal : NSObject
+
+/**
+ 鏃ュ織璁剧疆
+ 
+ @param enable 鏄惁鎵撳嵃鏃ュ織
+ @param logCallback 鏃ュ織鍥炶皟锛屼笂灞傝嚜瀹氫箟澶勭悊
+ */
++ (void)setDebugLogEnable:(BOOL)enable withLogCallback:(void(^)(NSString *logStr))logCallback;
+
+
+/**
+ 鎵撳紑瀵圭鐮佹祦鎶撳彇
+
+ @param enble 鏄惁鎵撳紑
+ */
++(void)setDebugVideoLog:(BOOL)enble;
+
+
+/**
+ 鑾峰彇sdk鐗堟湰淇℃伅
+
+ @return 鐗堟湰鍙�
+ */
++ (NSString*)getVersion;
+
+
+
+/// 璁剧疆閲囬泦鐨勬憚鍍忓ご鍙傛暟锛屾瘮濡傞噰鐢ㄥ墠缃繕鏄悗缃紝鍦ㄥ彂璧蜂换浣曡棰戞搷浣滃墠璋冪敤鐢熸晥
+/// @param cameraParam 鎽勫儚澶村弬鏁�
++ (void)setCameraParam:(EZRTCCameraParam *)cameraParam;
+
+
+/// 璁剧疆閲囬泦鐨勮棰戠殑缂栫爜鍙傛暟锛屾瘮濡傞噰闆嗘渶缁堣緭鍑虹殑鍒嗚鲸鐜囥�佺爜鐜囩瓑
+/// @param encodeParam 缂栫爜鍙傛暟
++ (void)setVideoEncodeParam:(EZRTCVideoEncodeParam *)encodeParam;
+
+
+/// 璁剧疆閲囬泦鐨勮緟娴佺殑缂栫爜鍙傛暟锛屾瘮濡傞噰闆嗘渶缁堣緭鍑虹殑鍒嗚鲸鐜囥�佺爜鐜囩瓑
+/// @param encodeParam 缂栫爜鍙傛暟
++ (void)setSmallVideoEncodeParam:(EZRTCVideoEncodeParam *)encodeParam;
+
+
++ (EZRTCAudioEncodeType)audioEncodeType;
+
+/// 璁剧疆缂栫爜绫诲瀷锛屽湪瑙嗛閫氳瘽鍙戣捣鍓嶈缃湁鏁�
++ (void)setAudioEncodeType:(EZRTCAudioEncodeType)type;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkSDK.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkSDK.h
new file mode 100644
index 0000000..353e0c0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkSDK.h
@@ -0,0 +1,268 @@
+//
+//  EZVideoTalkSDK.h
+//  EZOpenSDK
+//
+//  Created by yuqian on 2020/3/14.
+//  Copyright 漏 2020 Hikvision. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+#import "EZRTCMediaSessionDefines.h"
+#import "EZBAVParam.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+
+@class EZVideoTalkSDK, EZMediaSessionVideoParam, EZVideoTalkView, EZBAVParam, EZConferenceParam;
+
+@protocol EZVideoTalkSDKDelegate<NSObject>
+
+- (void)videoTalk:(id)client didReceivedError:(int32_t)errorCode;
+
+/**
+ 鍥炶皟娑堟伅
+
+ @param client client
+ @param messageCode 娑堟伅鐮� 鍙傝EZBAVMessage
+ @param msg 閫忎紶娑堟伅锛�
+    濡傛灉鏄疎ZVideoTalkMessagePeerEnteredRoom鍜孍ZVideoTalkMessagePeerLeaveRoom娑堟伅锛宮sg鏄瘂@"clientID":@(9527),@"clientName":@"寮犱笁"}
+        濡傛灉娑堟伅鏄� EZVideoTalkMessageTransferData msg鏄� msg鏄瘂@"content":@"瀹為檯鐨勯�忎紶娑堟伅"}
+ */
+- (void)videoTalk:(id)client didReceivedMessage:(int32_t)messageCode msg:(id)msg;
+
+/// 鐢婚潰鏄剧ず鍥炶皟
+/// @param client client
+/// @param width 鐢婚潰鐨勫 鍍忕礌鍗曚綅
+/// @param height 鐢婚潰鐨勯珮 鍍忕礌鍗曚綅
+/// @param userID 鐢ㄦ埛id
+- (void)videoTalk:(id)client didDisplayWidth:(int32_t)width height:(int32_t)height ofRemoteClient:(NSString *)userID;
+
+@end
+
+@interface EZVideoTalkSDK : NSObject
+
+@property (nonatomic, weak) id<EZVideoTalkSDKDelegate> delegate;
+
+/// 鍔犲叆鐨勬埧闂村彿
+@property (nonatomic, assign, readonly) int32_t roomID;
+
+/**
+ 瀵硅鏃讹紝寮哄埗閲囩敤鎵0鍣ㄦ挱鏀惧0闊筹紝榛樿涓篩ES
+ */
+@property (nonatomic, assign) BOOL forceToSpeaker;
+
+- (instancetype)init;
+
+
+/// 璁剧疆鏈湴鐨勯瑙堢獥鍙�
+/// @param localWin 绐楀彛window
+- (void)setLocalWindow:(EZVideoTalkView *)localWin;
+
+
+/// 鏈湴鎽勫儚澶村紑鍚�/鍏抽棴鎺ュ彛
+/// @param enable 鏄惁寮�鍚憚鍍忓ご
+- (NSInteger)enableVideoCapture:(BOOL)enable;
+
+
+/// 鏈湴楹﹀厠椋庡紑鍚�/鍏抽棴鎺ュ彛
+/// @param enable 鏄惁寮�鍚害鍏嬮
+- (NSInteger)enableAudioCatpure:(BOOL)enable;
+
+
+/// 鏄惁寮�鍚睆骞曞叡浜�
+/// @param enable 鏄惁寮�鍚�
+- (NSInteger)enableScreenShare:(BOOL)enable withName:(NSString *)name;
+
+
+/// 鍙戣捣鍙屽悜闊宠棰戝璁诧紝鑰楁椂鎺ュ彛锛屾垚鍔熻繑鍥� noErr锛屽け璐ヨ繑鍥為敊璇爜
+/// @param param EZBAVParam
+- (int32_t)startWithParam:(EZBAVParam *)param;
+
+/// 璁剧疆杩滅▼绐楀彛锛�.濡傛灉璁剧疆闈炵┖瀵硅薄view锛屽繀椤诲湪涓荤嚎绋嬭皟鐢紙濡傛灉鏄缃垚nil锛屽彲浠ヤ笉鍦ㄤ富绾跨▼璋冪敤锛�
+/// @param window 鎾斁绐楀彛
+- (int32_t)setRemoteWindow:(UIView *)window;
+
+///  鍋滄鍙屽悜闊宠棰戝璁诧紝鎴愬姛杩斿洖 noErr锛屽け璐ヨ繑鍥為敊璇爜
+- (int32_t)stop;
+
+/// 鍒囨崲瀵硅鏃朵娇鐢ㄧ殑鎽勫儚澶达紝榛樿閲囩敤鍓嶇疆 鍚屾鎺ュ彛
+/// @param backCameraSelected YES:閫夋嫨鍚庣疆锛孨O:閫夋嫨鍓嶇疆
+- (int32_t)switchCamera:(BOOL)backCameraSelected;
+
+
+/// 寮�鍏宠繙绋嬪0闊筹紝榛樿寮�
+/// @param open 寮�鍚�
+- (int32_t)enableRemoteSound:(BOOL)open;
+
+#pragma mark - 鏃ュ織璋冭瘯
+/**
+ 鏃ュ織璁剧疆
+ 
+ @param enable 鏄惁鎵撳嵃鏃ュ織
+ @param logCallback 鏃ュ織鍥炶皟锛屼笂灞傝嚜瀹氫箟澶勭悊
+ */
++ (void)setDebugLogEnable:(BOOL)enable withLogCallback:(void(^)(NSString *logStr))logCallback;
+
+/**
+ 鎵撳紑瀵圭鐮佹祦鎶撳彇
+
+ @param enble 鏄惁鎵撳紑
+ */
++(void)setDebugVideoLog:(BOOL)enble;
+
+/**
+ 鑾峰彇sdk鐗堟湰淇℃伅
+
+ @return 鐗堟湰鍙�
+ */
++ (NSString*)getVersion;
+
+@end
+
+
+@interface EZRTCClient : NSObject
+
+@property (nonatomic, weak) id<EZVideoTalkSDKDelegate> delegate;
+
+/// 鍔犲叆鐨勬埧闂村彿
+@property (nonatomic, assign, readonly) int32_t roomID;
+
+/**
+ 瀵硅鏃讹紝寮哄埗閲囩敤鎵0鍣ㄦ挱鏀惧0闊筹紝榛樿涓篩ES
+ */
+@property (nonatomic, assign) BOOL forceToSpeaker;
+
+
+/// 鍒濆鍖栬棰戦�氳瘽SDK瀵硅薄
+- (instancetype)init;
+
+
+/// 鍔犲叆浼氳锛堟柊鎺ュ彛锛�
+/// @param roomId 鎴块棿鍙�
+/// @param password 瀵嗙爜
+/// @param userID 鐢ㄦ埛鑷畾涔塈D
+- (void)enterRoom:(int32_t)roomId
+     withPassword:(NSString *)password
+       withUserID:(NSString *)userID
+       withAppId:(NSString *)appId;
+
+
+/// 閫�鍑轰細璁�
+- (NSInteger)exitRoom;
+
+
+/// 瑙f暎浼氳锛岃В鏁e悗锛屽叾浠栦笌浼氳�呬細鏀跺埌浼氳琚В鏁f秷鎭�
+- (void)dissolveRoom;
+
+/// 鏈湴鎽勫儚澶村紑鍚�/鍏抽棴鎺ュ彛.
+/// @param enable 鏄惁寮�鍚憚鍍忓ご
+- (NSInteger)enableLocalVideo:(BOOL)enable;
+
+/// 璁剧疆鏈湴鐨勯瑙堢獥鍙�
+/// @param localWin 绐楀彛window
+- (void)setLocalView:(EZVideoTalkView *)localWin;
+
+/// 鏄惁寮�鍚緟娴侊紝杈呮祦鍒嗚鲸鐜囨洿浣庛�佺爜鐜囨洿灏�
+/// @param enable 鏄惁寮�鍚�
+- (NSInteger)enableLocalSmallVideo:(BOOL)enable;
+
+/// 鏈湴楹﹀厠椋庡紑鍚�/鍏抽棴鎺ュ彛
+/// @param enable 鏄惁寮�鍚害鍏嬮
+/// @param block 涓荤嚎绋嬪洖璋冪粨鏋�
+- (void)enableLocalAudio:(BOOL)enable withResultBlock:(EZAudioOpenResultBlock)block;
+
+/// 寮�鍚睆骞曞叡浜�
+/// @param name 鍏变韩鍚嶇О
+/// @param resultBlock 灞忓箷鍏变韩缁撴灉鍥炶皟
+/// @param didFinishBlock 灞忓箷鍏变韩缁撴潫鍥炶皟锛屽湪姝e父鐨勫睆骞曞叡浜粨鏉熺粨鏉熷悗鍥炶皟
+- (void)startScreenShareWithName:(NSString *)name
+                 withResultBlock:(EZScreenShareResultBlock)resultBlock
+                   andEndedBlock:(dispatch_block_t)didFinishBlock;
+
+
+/// 缁撴潫灞忓箷鍏变韩
+- (void)stopScreenShare;
+
+
+/// 璁剧疆杩滅▼绐楀彛锛�1.蹇呴』鍦ㄦ嬁鍒拌繙绔鎴风鍔犲叆鐨勬秷鎭悗璁剧疆锛�2.蹇呴』鍦ㄤ富绾跨▼璋冪敤
+/// @param window 鎾斁绐楀彛
+/// @param clientID 鍔犲叆鐨勫鎴风鐨処D
+/// @param streamType 1瑙嗛 2闊抽 4灏忔祦
+- (int32_t)setRemoteView:(nullable UIView *)window ofUser:(NSString *)userID withStream:(NSInteger)streamType;
+
+/// 璁剧疆瑙傜湅灞忓箷鍏变韩鐨勭獥鍙�,蹇呴』鍦ㄤ富绾跨▼璋冪敤
+/// @param view 绐楀彛
+- (int32_t)setScreenShareView:(UIView *_Nullable)view;
+
+/// 鍒囨崲瀵硅鏃朵娇鐢ㄧ殑鎽勫儚澶达紝榛樿閲囩敤鍓嶇疆 鍚屾鎺ュ彛
+/// @param backCameraSelected YES:閫夋嫨鍚庣疆锛孨O:閫夋嫨鍓嶇疆
+- (int32_t)switchCamera:(BOOL)backCameraSelected;
+
+#pragma mark - 褰曞埗鐩稿叧鎺ュ彛
+/// 寮�濮嬫埧闂磋棰戜細璁綍鍒�
+/// @param roomId 鎴块棿鍙�
+/// @param customId 寮�鍙戣�呰嚜瀹氫箟鐢ㄦ埛ID
+/// @param recUsers 闇�瑕佸綍鍒剁殑鎴块棿鍙備笌鑰卛d
+/// @param projectId 浜戝瓨鍌ㄩ」鐩甀D
+/// @param fileId 浜戝瓨鍌ㄦ枃浠跺悕
+/// @param completion operation
++ (void)requestStartRecordRoomId:(NSString *)roomId
+                        customId:(NSInteger)customId
+                        recUsers:(NSArray *)recUsers
+                       projectId:(NSString *)projectId
+                          fileId:(NSString *)fileId
+                      completion:(void (^)(bool success, NSError *error))completion;
+
+/// 鍋滄鎴块棿瑙嗛浼氳褰曞埗
+/// @param roomId 鎴块棿鍙�
+/// @param customId 寮�鍙戣�呰嚜瀹氫箟鐢ㄦ埛ID
+/// @param completion operation
++ (void)requestStopRecordRoomId:(NSString *)roomId
+                       customId:(NSInteger)customId
+                     completion:(void (^)(bool success, NSError *error))completion;
+
+/// 鑾峰彇鏂囦欢涓嬭浇鍦板潃
+/// @param projectId 椤圭洰ID
+/// @param fileId 鏂囦欢ID
+/// @param completion operation
++ (void)requestGetRecordFileProjectId:(NSString *)projectId
+                               fileId:(NSString *)fileId
+                           completion:(void (^)(id responseObject, NSError *error))completion;
+
+
+/// 鏂板缓椤圭洰鎺ュ彛
+/// @param projectId 椤圭洰ID
+/// @param projectName 椤圭洰鍚嶇О
+/// @param expireDays 椤圭洰瀛樺偍瀵硅薄杩囨湡澶╂暟 榛樿姘镐笉杩囨湡
+/// @param completion operation
++ (void)requestCreateProjectId:(NSString *)projectId
+                   projectName:(NSString *)projectName
+                    expireDays:(NSInteger )expireDays
+                    completion:(void (^)(bool success, NSError *error))completion;
+
+
+
+#pragma mark - 4.16.3 鏂扮殑浼氭帶鎺ュ彛
+/// 棰勮浼氳鎺ュ彛
+/// @param customId 涓绘寔浜虹敤鎴穒d锛堝紑鍙戣�呰嚜瀹氫箟鐨勭敤鎴穒d锛�
+/// @param password 鎴块棿瀵嗙爜锛堣嫢涓嶄紶鎴栦负绌哄垯璁や负鎴块棿鍏紑銆佹棤瀵嗙爜锛�
+/// @param limit 鎴块棿浜烘暟闄愬埗锛�<100锛屼笉浼犲垯榛樿100锛�
+/// @param beginTime 姣鏃堕棿鎴筹紝浼氳棰勮寮�濮嬫椂闂达紙>=褰撳墠鏃堕棿锛�
+/// @param endTime 姣鏃堕棿鎴筹紝浼氳棰勮缁撴潫鏃堕棿锛�>beginTime涓�<涓冨ぉ鍚庣殑鏃堕棿鎴筹級
+/// @param completion completion
++ (NSURLSessionDataTask *)orderMeetingWithCustomId:(NSString *)customId
+                                          password:(NSString *)password
+                                             limit:(NSInteger)limit
+                                         beginTime:(long)beginTime
+                                           endTime:(long)endTime
+                                        completion:(void (^)(int32_t roomId, NSInteger limit, NSError *error))completion;
+
+
+
+@end
+
+
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkSDKDefines.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkSDKDefines.h
new file mode 100644
index 0000000..c3347aa
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkSDKDefines.h
@@ -0,0 +1,17 @@
+//
+//  EZVideoTalkSDKDefines.h
+//  EzvizOpenSDK
+//
+//  Created by Harper Kan on 2021/7/5.
+//  Copyright 漏 2021 Hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZVideoTalkSDKDefines : NSObject
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkView.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkView.h
new file mode 100644
index 0000000..1ab4653
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkView.h
@@ -0,0 +1,18 @@
+//
+//  EZVideoTalkView.h
+//  EZVideoTalk
+//
+//  Created by Harper Kan on 2020/12/5.
+//  Copyright 漏 2020 hikvision. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import <AVFoundation/AVFoundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZVideoTalkView : UIView
+- (AVSampleBufferDisplayLayer *)videoLayer;
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTransformer.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTransformer.h
new file mode 100644
index 0000000..61c9126
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZVideoTransformer.h
@@ -0,0 +1,39 @@
+//
+//  EZVideoTransformer.h
+//  EZOpenSDK
+//
+//  Created by yuqian on 2019/6/17.
+//  Copyright 漏 2019 Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef enum {
+    
+    EZVideoTransformerTypeMP4,
+    
+} EZVideoTransformerType;
+
+@interface EZVideoTransformer : NSObject
+
+/// 鏈湴PS鏂囦欢杞崲涓篗P4鏂囦欢
+/// @param psPath ps鏂囦欢璺緞
+/// @param targetPath mp4鏂囦欢璺緞
+/// @param type 杞崲绫诲瀷
+/// @param key 璁惧楠岃瘉鐮�
+/// @param succBlock 鎴愬姛鍥炶皟
+/// @param processBlock 杩涘害鍥炶皟
+/// @param failBlock 澶辫触鍥炶皟
++ (void)videoTransFormerPSPath:(NSString *)psPath
+                        toPath:(NSString *)targetPath
+                          type:(EZVideoTransformerType)type
+                       withKey:(NSString *)key
+                     succBlock:(void (^)())succBlock
+                  processBlock:(void(^)(int rate))processBlock
+                     failBlock:(void(^)(int errCode))failBlock;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZWiFiItemInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZWiFiItemInfo.h
new file mode 100644
index 0000000..3ea2418
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EZWiFiItemInfo.h
@@ -0,0 +1,21 @@
+//
+//  EZWiFiItemInfo.h
+//  EZWiFiConfigSDK
+//
+//  Created by yuqian on 2020/7/28.
+//  Copyright 漏 2020 com.ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZWiFiItemInfo : NSObject
+
+@property (nonatomic, copy) NSString *ssid;             /*蹇呭~,SSID,string*/
+@property (nonatomic, assign) NSInteger signalStrength;   /*蹇呭~,淇″彿寮哄害,"-100-0",int锛屾暟鍊艰秺澶т俊鍙疯秺寮�*/
+@property (nonatomic, copy) NSString *securityMode;     /*鍙��,瀹夊叏妯″紡: "open,WEP,WPA-personal,WPA2-personal,WPA-WPA2-personal,WPA2-enterprise",string*/
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EzvizRecordFileInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EzvizRecordFileInfo.h
new file mode 100644
index 0000000..38db6dc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EzvizRecordFileInfo.h
@@ -0,0 +1,47 @@
+//
+//  EzvizRecordFileInfo.h
+//  EzvizOpenSDK
+//
+//  Created by linyong on 2017/5/5.
+//  Copyright 漏 2017骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+///褰曞儚鏂囦欢淇℃伅
+@interface EzvizRecordFileInfo : NSObject
+
+///璁惧搴忓垪鍙�
+@property (nonatomic,copy) NSString *deviceSerial;
+
+///璁惧閫氶亾鍙�
+@property (nonatomic,assign) NSInteger channelNo;
+
+///鍥炴斁婧愶紝0-绯荤粺鑷姩閫夋嫨锛�1-浜戝瓨鍌紝2-鏈湴褰曞儚
+@property (nonatomic,assign) NSInteger recType;
+
+///鏂囦欢寮�濮嬫椂闂�
+@property (nonatomic,strong) NSDate *startTime;
+
+///鏂囦欢缁撴潫鏃堕棿
+@property (nonatomic,strong) NSDate *endTime;
+
+///鏂囦欢绫诲瀷0锛氱洰褰�1锛氳棰戞枃浠�2锛氬浘鐗囨枃浠�3锛氶煶棰戞枃浠�
+@property (nonatomic,assign) NSInteger fileType;
+
+///鏄惁鍔犲瘑0--涓嶅姞瀵�,1--鍔犲瘑
+@property (nonatomic,assign) NSInteger crypt;
+
+///楠岃瘉鐮丮D5鍊�
+@property (nonatomic,copy) NSString *keyChecksum;
+
+///鏂囦欢ID
+@property (nonatomic,copy) NSString *fileId;
+
+///灏侀潰鍥剧墖鍦板潃
+@property (nonatomic,copy) NSString *coverPic;
+
+///涓嬭浇璺緞
+@property (nonatomic,copy) NSString *downloadPath;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EzvizWatchServerInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EzvizWatchServerInfo.h
new file mode 100644
index 0000000..acaf6d6
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/EzvizWatchServerInfo.h
@@ -0,0 +1,26 @@
+//
+//  EzvizWatchServerInfo.h
+//  EzvizOpenSDK
+//
+//  Created by yuqian on 2020/3/2.
+//  Copyright 漏 2020 Hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EzvizWatchServerInfo : NSObject
+
+@property (nonatomic, copy) NSString *domain;
+@property (nonatomic, copy) NSString *externalIp;
+@property (nonatomic, assign) int 	forceStreamType;
+@property (nonatomic, copy) NSString *idcType;
+@property (nonatomic, copy) NSString *internalIp;
+@property (nonatomic, assign) int isBackup;
+@property (nonatomic, copy) NSString *memo;
+@property (nonatomic, assign) int port;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/Sadp.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/Sadp.h
new file mode 100644
index 0000000..a6ec76d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Headers/Sadp.h
@@ -0,0 +1,557 @@
+#ifndef _SADP_H_
+#define _SADP_H_
+
+
+#if defined _WIN32 || defined _WIN64
+#define CSADP_API  extern "C" __declspec(dllimport)
+#elif defined __linux__ || defined __APPLE__
+#define CSADP_API  extern "C"
+#endif
+
+#if defined _WIN32 || defined _WIN64
+#define CALLBACK __stdcall
+#elif defined __linux__ || defined __APPLE__
+#define CALLBACK  
+#endif
+
+#define     BOOL int
+
+//消息操作的类型
+#define SADP_ADD          1         //增加一设备
+#define SADP_UPDATE       2         //更新设备
+#define SADP_DEC          3         //设备下线
+#define SADP_RESTART      4         //设备重新启动
+#define SADP_UPDATEFAIL   5         //设备更新失败
+
+//外部命令码
+#define SADP_GET_DEVICE_CODE                1   //获取设备码,对应结构体SADP_SAFE_CODE
+#define SADP_GET_ENCRYPT_STRING             2   //获取加密串,对应结构体SADP_ENCRYPT_STRING
+#define SADP_GET_DEVICE_TYPE_UNLOCK_CODE    3   //获取设备类型解禁码,对应的结构体SADP_TYPE_UNLOCK_CODE
+#define SADP_SET_DEVICE_CUSTOM_TYPE         4   //设置设备自定义型号,对应的结构体SADP_CUSTOM_DEVICE_TYPE
+#define SADP_GET_GUID                       5   //获取GUID
+#define SADP_GET_SECURITY_QUESTION          6   //获取安全问题
+#define SADP_SET_SECURITY_QUESTION          7   //设置安全问题
+#define SADP_SET_HCPLATFORM_STATUS          8   //设置HCPLATFORM状态
+#define SADP_SET_VERIFICATION_CODE          9   //设置验证码(验证码用于萤石接入、预览、控制的唯一密码)
+#define SADP_GET_BIND_LIST                  12  //获取绑定设备列表
+#define SADP_SET_BIND_LIST                  13  //设置绑定设备列表
+#define SADP_RESTORE_INACTIVE               14  //恢复未激活
+#define SADP_SET_WIFI_REGION                15  //设置wifi区域
+#define SADP_SET_CHANNEL_DEFAULT_PASSWORD   16  //设置通道默认密码
+#define SADP_GET_SELF_CHECK                 17  //获取设备自检状态
+#define SADP_DISK_LOCATE                    18  //坏盘定位
+#define SADP_EHOME_ENABLE                   19  //EHome使能
+#define SADP_SET_USER_MAILBOX               20  //设置用户邮箱
+#define SADP_GET_QR_CODES                   21  //获取二维码数据
+#define SADP_GET_PASSWORD_RESET_TYPE        27  //获取重置密码方式参数
+
+
+
+#define SADP_MAX_VERIFICATION_CODE_LEN  12   //最大验证码长度
+#define MAX_PASS_LEN                    16   //设备最大密码长度
+#define MAX_QUESTION_LIST_LEN           32   //最多问题列表个数
+#define SADP_MAX_BIND_NUM               32   //最大绑定设备个数
+#define MAX_CPU_LEN                     32   //CPU长度
+#define MAX_MEMORY_LEN                  32   //内存长度
+#define MAX_USERNAME_LEN                32   //用户名最大长度
+#define SADP_MAX_SERIALNO_LEN           64   //最大设备序列号长度
+#define MAX_DEVICE_CODE                 128  //设备返回码长度,暂定最大128
+#define MAX_MAILBOX_LEN                 128  //邮箱长度,暂定最大128
+#define MAX_GUID_LEN                    128  //GUID长度
+#define MAX_EXCHANGE_CODE               256  //交换码长度
+#define MAX_ENCRYPT_CODE                256  //设备返回码加密后长度
+#define MAX_UNLOCK_CODE_KEY             256  //解禁密钥
+#define MAX_QR_CODES                    256  //二维码数据长度,暂定最大256
+#define MAX_ANSWER_LEN                  256  //最大答案长度
+#define MAX_UNLOCK_CODE_RANDOM_LEN      256  //解禁码随机串
+#define MAX_FILE_PATH_LEN               260  //文件最大路径长度
+
+
+
+
+// 错误码
+#define SADP_ERROR_BASE                 2000
+#define SADP_NOERROR                    0                     // 没有错误
+#define SADP_ALLOC_RESOURCE_ERROR       (SADP_ERROR_BASE+1)   // 资源分配错误
+#define SADP_NOT_START_ERROR            (SADP_ERROR_BASE+2)   // SADP未启动
+#define SADP_NO_ADAPTER_ERROR           (SADP_ERROR_BASE+3)   // 无网卡
+#define SADP_GET_ADAPTER_FAIL_ERROR     (SADP_ERROR_BASE+4)   // 获取网卡信息失败
+#define SADP_PARAMETER_ERROR            (SADP_ERROR_BASE+5)   // 参数错误
+#define SADP_OPEN_ADAPTER_FAIL_ERROR    (SADP_ERROR_BASE+6)   // 打开网卡失败
+#define SADP_SEND_PACKET_FAIL_ERROR     (SADP_ERROR_BASE+7)   // 发送数据失败
+#define SADP_SYSTEM_CALL_ERROR          (SADP_ERROR_BASE+8)   // 系统接口调用失败
+#define SADP_DEVICE_DENY                (SADP_ERROR_BASE+9)   // 设备拒绝处理
+#define SADP_NPF_INSTALL_ERROR          (SADP_ERROR_BASE+10)  // 安装NPF服务失败
+#define SADP_TIMEOUT                    (SADP_ERROR_BASE+11)  // 设备超时
+#define SADP_CREATE_SOCKET_ERROR        (SADP_ERROR_BASE+12)  // 创建socket失败
+#define SADP_BIND_SOCKET_ERROR          (SADP_ERROR_BASE+13)  // 绑定socket失败
+#define SADP_JOIN_MULTI_CAST_ERROR      (SADP_ERROR_BASE+14)  // 加入多播组失败
+#define SADP_NETWORK_SEND_ERROR         (SADP_ERROR_BASE+15)  // 发送出错
+#define SADP_NETWORK_RECV_ERROR         (SADP_ERROR_BASE+16)  // 接收出错
+#define SADP_XML_PARSE_ERROR            (SADP_ERROR_BASE+17)  // 多播XML解析出错
+#define SADP_LOCKED                     (SADP_ERROR_BASE+18)  // 设备锁定
+#define SADP_NOT_ACTIVATED              (SADP_ERROR_BASE+19)  // 设备未激活
+#define SADP_RISK_PASSWORD              (SADP_ERROR_BASE+20)  // 风险高的密码
+#define SADP_HAS_ACTIVATED              (SADP_ERROR_BASE+21)  // 设备已激活
+#define SADP_EMPTY_ENCRYPT_STRING       (SADP_ERROR_BASE+22)  // 加密串为空
+#define SADP_EXPORT_FILE_OVERDUE        (SADP_ERROR_BASE+23)  // 导出文件超期
+#define SADP_PASSWORD_ERROR             (SADP_ERROR_BASE+24)  // 密码错误
+#define SADP_LONG_SECURITY_ANSWER       (SADP_ERROR_BASE+25)  // 安全问题答案太长
+#define SADP_INVALID_GUID               (SADP_ERROR_BASE+26)  // 无效的GUID
+#define SADP_ANSWER_ERROR               (SADP_ERROR_BASE+27)  // 答案错误
+#define SADP_QUESTION_NUM_ERR           (SADP_ERROR_BASE+28)  // 安全问题个数配置错误
+#define SADP_LOAD_WPCAP_FAIL            (SADP_ERROR_BASE+30)  // 加载Wpcap失败
+#define SADP_ILLEGAL_VERIFICATION_CODE  (SADP_ERROR_BASE+33)  // 非法验证码
+#define SADP_BIND_ERROR_DEV             (SADP_ERROR_BASE+34)  // 绑定错误的设备
+#define SADP_EXTED_MAX_BIND_NUM         (SADP_ERROR_BASE+35)  // 超过最大绑定个数
+#define SADP_MAILBOX_NOT_EXIST          (SADP_ERROR_BASE+36)  // 邮箱不存在
+#define SADP_MAILBOX_NOT_SET            (SADP_ERROR_BASE+38)  // [add] <2019/01/08> by yangzheng 邮箱重置密码未设置邮箱
+#define SADP_INVALID_RESET_CODE         (SADP_ERROR_BASE+39)    // 重置密码  重置口令错误
+
+
+//SADP设备过滤规则类型
+//按位表示,为1表示过滤,0表示不过滤;
+//bit 1:是否过滤萤石;bit 2:是否过滤OEM;
+#define SADP_DISPLAY_ALL           0            //显示所有设备
+#define SADP_FILTER_EZVIZ          0x01         //过滤萤石设备
+#define SADP_FILTER_OEM            0x02         //过滤OEM设备
+#define SADP_FILTER_EZVIZ_OEM      0x03         //同时过滤萤石和OEM设备
+#define SADP_ONLY_DISPLAY_OEM      0xfffffffd   //仅显示OEM设备,对应结构体SADP_DISPLAY_OEM_CFG
+#define SADP_ONLY_DISPLAY_EZVIZ    0xfffffffe   //仅显示萤石设备
+// 结构体
+
+typedef struct tagSADP_DEVICE_INFO
+{
+    char            szSeries[12];          //设备系列(保留)
+    char            szSerialNO[48];        //设备序列号
+    char            szMAC[20];             //设备物理地址
+    char            szIPv4Address[16];     //设备IPv4地址
+    char            szIPv4SubnetMask[16];  //设备IPv4子网掩码
+    unsigned int    dwDeviceType;          //设备类型,具体数值代表的设备型号
+    unsigned int    dwPort;                //设备网络SDK服务端口号(默认8000)
+    unsigned int    dwNumberOfEncoders;    //设备编码器个数,即设备编码通道个数。对于解码器,其值设为0
+    unsigned int    dwNumberOfHardDisk;    //设备硬盘数目
+    char            szDeviceSoftwareVersion[48];  //设备软件版本号
+    char            szDSPVersion[48];      //设备DSP版本号
+    char            szBootTime[48];        //开机时间
+    int             iResult;               
+                    //信息类型: 1.设备上线  2.设备更新  3.设备下线  4.设备重启  5.设备更新失败
+                    //SADP_ADD        1   新设备上线,之前在SADP库列表中未出现的设备
+                    //SADP_UPDATE     2   在线的设备的网络参数或者某些状态改变
+                    //SADP_DEC        3   设备下线,设备自动发送下线消息或120秒内检测不到设备
+                    //SADP_RESTART    4   之前SADP库列表中出现过之后下线的设备再次上线
+                    //SADP_UPDATEFAIL 5   设备更新失败
+    char            szDevDesc[24];         //设备类型描述 与dwDeviceType对应
+    char            szOEMinfo[24];         //OEM产商信息
+    char            szIPv4Gateway[16];     //IPv4网关
+    char            szIPv6Address[46];     //IPv6地址
+    char            szIPv6Gateway[46];     //IPv6网关
+    unsigned char   byIPv6MaskLen;         //IPv6子网前缀长度
+    unsigned char   bySupport;           
+                    //按位表示,对应为为1表示支持
+                    //0x01:是否支持Ipv6
+                    //0x02:是否支持修改Ipv6参数
+                    //0x04:是否支持Dhcp	
+                    //0x08:是否支持udp多播 
+                    //0x10:是否含加密节点
+                    //0x20:是否支持恢复密码
+                    //0x40:是否支持重置密码
+                    //0x80:是否支持同步IPC密码
+    unsigned char   byDhcpEnabled;         //Dhcp状态, 0 不启用 1 启用
+    unsigned char   byDeviceAbility;       //设备能力
+                                           //0:设备不支持“‘设备类型描述’ 'OEM厂商' 'IPv4网关' ‘IPv6地址’ 'IPv6网关' ‘IPv6子网前缀’‘DHCP’”  
+                                           //1:支持上诉功能
+    unsigned short  wHttpPort;             //Http 端口
+    unsigned short  wDigitalChannelNum;    //数字通道数
+    char            szCmsIPv4[16];         //CMS注册服务器IPv4地址
+    unsigned short  wCmsPort;              //CMS注册服务器监听端口
+    unsigned char   byOEMCode;             //0-基线设备 1-OEM设备
+    unsigned char   byActivated;           //设备是否激活;0-激活,1-未激活(老的设备都是已激活状态)
+    char            szBaseDesc[24];        //基线短型号,不随定制而修改的型号,用于萤石平台进行型号对比
+    unsigned char   bySupport1; 
+                    //按位表示,  1表示支持,0表示不支持
+                    //0x01:是否支持重置密码方式2 
+                    //0x02;是否支持设备锁定功能
+                    //0x04:是否支持导入GUID重置密码
+                    //0x08:是否支持安全问题重置密码
+                    //0x10:是否支持OEM更换Logo
+                    //0x20:是否支持绑定操作
+                    //0x40:是否支持恢复未激活
+                    //0x80:是否支持wifi信号增强模式
+    unsigned char   byHCPlatform;          //是否支持HCPlatform 0-保留, 1-支持, 2-不支持   
+    unsigned char   byEnableHCPlatform;    //是否启用HCPlatform  0-保留, 1-启用, 2-不启用
+    unsigned char   byEZVIZCode;           //0-基线设备, 1-萤石设备
+    unsigned int    dwDetailOEMCode;       //详细OEMCode信息:oemcode由客户序号(可变位,从1开始,1~429496)+菜单风格(2位)+区域号(2位)三部分构成。	
+                                           //规则说明:oemcode最大值为4294967295,最多是十位数。
+                                           //0: 老设备
+                                           //1: 新基线设备
+                                           //10101: 有具体OEM code的为OEM设备
+    unsigned char   byModifyVerificationCode; //是否修改验证码 0-保留, 1-修改验证码, 2-不修改验证码
+    unsigned char   byMaxBindNum;          //支持绑定的最大个数(目前只有NVR支持该字段)
+    unsigned short  wOEMCommandPort;       //OEM命令端口
+    unsigned char   bySupportWifiRegion;
+                    //设备支持的wifi区域列表,按位表示,1表示支持,0表示不支持
+                    //0x01:是否支持default(默认功率和北美一致)
+                    //0x02:是否支持china
+                    //0x04:是否支持nothAmerica
+                    //0x08:是否支持japan
+                    //0x10:是否支持europe
+                    //0x20:是否支持world
+    unsigned char   byEnableWifiEnhancement;//是否启用wifi增强模式,0-不启用,1-启用
+    unsigned char   byWifiRegion;           //设备当前区域,0-default,1-china,2-nothAmerica,3-japan,4-europe,5-world
+    unsigned char   bySupport2; 
+                    //按位表示,  1表示支持,0表示不支持
+                    //0x01:是否支持通道默认密码配置(该密码用于nvr添加IPC, 默认使用的是nvr admin密码,会单独保存在本地)
+                    //0x02:是否支持邮箱重置密码
+                    //0x04:是否支持未激活配置SSID和Password
+}SADP_DEVICE_INFO, *LPSADP_DEVICE_INFO;
+
+typedef struct tagSADP_DEVICE_INFO_V40
+{
+    SADP_DEVICE_INFO struSadpDeviceInfo;
+    unsigned char   byLicensed;          //设备是否授权:0-保留,1-设备未授权,2-设备已授权
+    unsigned char   bySystemMode;        //系统模式 0-保留,1-单控,2-双控,3-单机集群,4-双控集群
+    unsigned char   byControllerType;    //控制器类型 0-保留,1-A控,2-B控
+    char            szEhmoeVersion[16];  //Ehmoe版本号
+    unsigned char   bySpecificDeviceType;//设备类型,1-中性设备  2-海康设备
+    unsigned int    dwSDKOverTLSPort;    //私有协议中 SDK Over TLS 命令端口
+    unsigned char   bySecurityMode;      //设备安全模式:0-standard,1-high-A,2-high-B,3-custom
+    unsigned char   bySDKServerStatus;   //设备SDK服务状态, 0-开启,1-关闭
+    unsigned char   bySDKOverTLSServerStatus;         //设备SDKOverTLS服务状态, 0-关闭,1-开启
+    char            szUserName[MAX_USERNAME_LEN + 1]; //管理员用户的用户名(设备安全模式在非标准模式下是允许用户设置管理员用户的用户名,标准模式默认为admin)
+    char            szWifiMAC[20];       //设备所连wifi的Mac地址
+    unsigned char   byDataFromMulticast; //0-链路 1-多播
+    unsigned char   bySupportEzvizUnbind; //是否支持萤石解绑 0-不支持 1-支持
+    unsigned char   bySupportCodeEncrypt; //是否支持重置口令AES128_ECB解密  0-不支持 1-支持
+    unsigned char   bySupportPasswordResetType; //是否支持获取密码重置方式参数  0-不支持 1-支持
+    unsigned char   byEZVIZBindStatus; //设备萤石云绑定状态,0-未知,1-已绑定,2-未绑定
+    char            szPhysicalAccessVerification[16]; //设备支持的物理接触式添加方式,1#AP配网传递,2#用户令牌(用户token)绑定,3#物理按键接触,4#扫码绑定(设备token)
+    unsigned char   byRes[411];
+}SADP_DEVICE_INFO_V40, *LPSADP_DEVICE_INFO_V40;
+
+//待修改的设备网络参数
+typedef struct tagSADP_DEV_NET_PARAM
+{
+    char            szIPv4Address[16];      // IPv4地址
+    char            szIPv4SubNetMask[16];   // IPv4子网掩码
+    char            szIPv4Gateway[16];      // IPv4网关
+    char            szIPv6Address[128];     // IPv6地址
+    char            szIPv6Gateway[128];     // IPv6网关
+    unsigned short  wPort;                  // 设备网络SDK服务端口号(默认8000)
+    unsigned char   byIPv6MaskLen;          // IPv6掩码长度
+    unsigned char   byDhcpEnable;           // DHCP使能
+    unsigned short  wHttpPort;              // HTTP端口
+    unsigned int    dwSDKOverTLSPort;       // 私有协议中 SDK Over TLS 命令端口
+    unsigned char   byRes[122];
+}SADP_DEV_NET_PARAM, *LPSADP_DEV_NET_PARAM;
+
+
+//设备返回网络参数信息
+typedef struct tagSADP_DEV_RET_NET_PARAM
+{
+    unsigned char   byRetryModifyTime;  //剩余可尝试修改网络参数次数
+    unsigned char   bySurplusLockTime;  //剩余时间,单位:分钟,用户锁定时此参数有效
+    unsigned char   byRes[126];
+}SADP_DEV_RET_NET_PARAM, *LPSADP_DEV_RET_NET_PARAM;
+
+// CMS参数
+typedef struct tagSADP_CMS_PARAM
+{
+    char            szPUID[32];         // 预分配的PUID
+    char            szPassword[16];     // 设置的登录密码
+    char            szCmsIPv4[16];      // CMS服务器IPv4地址
+    char            szCmsIPv6[128];     // CMS服务器IPv6地址
+    unsigned short  wCmsPort;           // CMS服务器监听端口
+    unsigned char   byRes[30];
+}SADP_CMS_PARAM, *LPSADP_CMS_PARAM;
+
+//设备安全码,对应配置命令SADP_GET_DEVICE_CODE,接口SADP_GetDeviceConfig
+typedef struct tagSADP_SAFE_CODE
+{
+    unsigned int    dwCodeSize;
+    char            szDeviceCode[MAX_DEVICE_CODE];
+    unsigned char   byRes[128];
+}SADP_SAFE_CODE, *LPSADP_SAFE_CODE;
+
+//设备二维码
+typedef struct tagSADP_QR_CODES
+{
+    unsigned int    dwCodeSize;
+    unsigned int    dwMailBoxSize;
+    unsigned int    dwServiceMailBoxSize;
+    char            szQrCodes[MAX_QR_CODES];
+    char            szMailBoxAddr[MAX_MAILBOX_LEN];         //要设置的邮箱地址
+    char            szServiceMailBoxAddr[MAX_MAILBOX_LEN];  //服务的邮箱地址
+    unsigned char   byRes[128];
+}SADP_QR_CODES, *LPSADP_QR_CODES;
+
+//加密串结构体,对应配置命令SADP_GET_ENCRYPT_STRING,接口SADP_GetDeviceConfig
+typedef struct tagSADP_ENCRYPT_STRING
+{
+    unsigned int    dwEncryptStringSize;               //加密串长度
+    char            szEncryptString[MAX_ENCRYPT_CODE]; //加密串内容
+    unsigned char   byRes[128];
+}SADP_ENCRYPT_STRING, *LPSADP_ENCRYPT_STRING;
+//恢复/重置密码结构体
+typedef struct tagSADP_RESET_PARAM
+{
+    char            szCode[MAX_ENCRYPT_CODE];     //日期转换过的特殊字符串或加密工具加密后的字符串 - 为兼容老接口
+    char            szAuthFile[MAX_FILE_PATH_LEN];//重置授权文件
+    char            szPassword[MAX_PASS_LEN];     //用户密码
+    unsigned char   byEnableSyncIPCPW;            //是否启用同步IPC密码。0 - 不启用, 1- 启用
+    unsigned char   byRes[511];
+}SADP_RESET_PARAM, *LSADP_RESET_PARAM;
+
+//显示OEM配置结构体
+typedef struct tagSADP_DISPLAY_OEM_CFG
+{
+    unsigned int    dwDisplayOEM;   //0-显示所有OEM,其它值为要显示的某一种类型的OEMCode,具体详见dwDetailOEMCode	
+    unsigned char   byRes[32];      //保留
+}SADP_DISPLAY_OEM_CFG, *LPSADP_DISPLAY_OEM_CFG;
+
+typedef struct tagSADP_TYPE_UNLOCK_CODE
+{
+    unsigned int   dwCodeSize;
+    char           szDeviceTypeUnlockCode[MAX_UNLOCK_CODE_RANDOM_LEN/*256*/];//设备型号解禁码
+    unsigned char  byRes[128];
+}SADP_TYPE_UNLOCK_CODE, *LPSADP_TYPE_UNLOCK_CODE;
+
+typedef struct tagSADP_CUSTOM_DEVICE_TYPE
+{
+    unsigned int   dwCodeSize;
+    char           szDeviceTypeSecretKey[MAX_UNLOCK_CODE_KEY/*256*/];//类型解禁秘钥
+    unsigned char  byRes[128];
+}SADP_CUSTOM_DEVICE_TYPE, *LPSADP_CUSTOM_DEVICE_TYPE;
+
+//获取GUID参数结构体
+typedef struct tagSADP_GUID_FILE_COND
+{
+    char           szPassword[MAX_PASS_LEN];  //用户密码
+    unsigned char  byRes[128];
+}SADP_GUID_FILE_COND, *LPSADP_GUID_FILE_COND;
+
+//GUID结构体
+typedef struct tagSADP_GUID_FILE
+{
+    unsigned int    dwGUIDSize;
+    char            szGUID[MAX_GUID_LEN];
+    unsigned char   byRetryGUIDTime;    //剩余可导入/导出GUID次数
+    unsigned char   bySurplusLockTime;  //剩余时间,单位:分钟,用户锁定时此参数有效
+    unsigned char   byRes[254];
+}SADP_GUID_FILE, *LPSADP_GUID_FILE;
+
+typedef struct tagSADP_SINGLE_SECURITY_QUESTION_CFG
+{
+    unsigned int    dwSize;
+    unsigned int    dwId;//序号
+    char            szAnswer[MAX_ANSWER_LEN/*256*/];//答案,只在设置时有效,获取时无效
+    unsigned char   byMark;//标记该序号的问题是否被设置  0-未设置 1-已设置
+    unsigned char   byRes[127];
+}SADP_SINGLE_SECURITY_QUESTION_CFG, *LPSADP_SINGLE_SECURITY_QUESTION_CFG;
+
+typedef struct tagSADP_SECURITY_QUESTION_CFG
+{
+    unsigned int   dwSize;
+    SADP_SINGLE_SECURITY_QUESTION_CFG  struSecurityQuestion[MAX_QUESTION_LIST_LEN/*32*/];//安全问题列表
+    char           szPassword[MAX_PASS_LEN];  //用户密码
+    unsigned char  byRes[512];
+}SADP_SECURITY_QUESTION_CFG, *LPSADP_SECURITY_QUESTION_CFG;
+
+typedef struct tagSADP_SECURITY_QUESTION
+{
+    unsigned char   byRetryAnswerTime;  //剩余可设置安全问题次数
+    unsigned char   bySurplusLockTime;  //剩余时间,单位:分钟,用户锁定时此参数有效
+    unsigned char   byRes[254];
+}SADP_SECURITY_QUESTION, *LPSADP_SECURITY_QUESTION;
+
+typedef struct tagSADP_RESET_PARAM_V40
+{
+    unsigned int    dwSize;
+    unsigned char   byResetType;              //密码重置类型 0-保留,1- 通过设备序列号恢复默认密码,2-导入/导出文件重置密码,3-二维码重置, 4-GUID重置,5-安全问题重置 6-邮箱重置密码
+    unsigned char   byEnableSyncIPCPW;        //是否同时将密码启用为NVR同步IPC密码。0 - 不启用, 1- 启用
+    unsigned char   byRes2[2];                //保留
+    char            szPassword[MAX_PASS_LEN]; //用户密码
+    char            szCode[MAX_ENCRYPT_CODE]; //日期转换过的特殊字符串或加密工具加密后的字符串 - byResetType 为1、3时有效
+    char            szAuthFile[MAX_FILE_PATH_LEN];//重置授权文件, byResetType 为2时有效
+    char            szGUID[MAX_GUID_LEN];     //GUID, byResetType 为4时有效
+    SADP_SECURITY_QUESTION_CFG struSecurityQuestionCfg;//安全问题结构体, byResetType 为5时有效
+    unsigned char   byRes[512];
+}SADP_RESET_PARAM_V40, *LPSADP_RESET_PARAM_V40;
+
+typedef struct tagSADP_RET_RESET_PARAM_V40
+{
+    unsigned char   byRetryGUIDTime;    //剩余可设置次数
+    unsigned char   bySurplusLockTime;  //剩余时间,单位:分钟,用户锁定时此参数有效
+    unsigned char   bRetryTimeValid; //byRetryGUIDTime字段是否有效  0-无效,1-有效
+    unsigned char   bLockTimeValid; //bySurplusLockTime字段是否有效  0-无效,1-有效
+    unsigned char   byRes[252];
+}SADP_RET_RESET_PARAM_V40, *LPSADP_RET_RESET_PARAM_V40;
+
+//HCPlatform状态
+typedef struct tagSADP_HCPLATFORM_STATUS_INFO
+{
+    unsigned int    dwSize;
+    unsigned char   byEnableHCPlatform;        //是否启用HCPlatform。0 - 保留, 1- 启用, 2-不启用
+    unsigned char   byRes[3];                  //保留
+    char            szPassword[MAX_PASS_LEN];  //用户密码
+    unsigned char   byRes2[128];
+}SADP_HCPLATFORM_STATUS_INFO, *LPSADP_HCPLATFORM_STATUS_INFO;
+
+typedef struct tagSADP_USER_MAILBOX
+{
+    unsigned int    dwSize;
+    char            szPassword[MAX_PASS_LEN];        //设备admin用户密码
+    char            szMailBoxAddr[MAX_MAILBOX_LEN];  //预留邮箱地址,用于接收密码服务器返回的安全码
+    unsigned char   byRes[128];
+}SADP_USER_MAILBOX, *LPSADP_USER_MAILBOX;
+//设备验证码
+typedef struct tagSADP_VERIFICATION_CODE_INFO
+{
+    unsigned int    dwSize;
+    char            szVerificationCode[SADP_MAX_VERIFICATION_CODE_LEN];  //验证码(验证码用于萤石接入、预览、控制的唯一密码)
+    char            szPassword[MAX_PASS_LEN];  //用户密码
+    unsigned char   byRes[128];
+}SADP_VERIFICATION_CODE_INFO, *LPSADP_VERIFICATION_CODE_INFO;
+
+//设备锁定信息
+typedef struct tagSADP_DEV_LOCK_INFO
+{
+    unsigned char   byRetryTime;       //剩余可尝试次数
+    unsigned char   bySurplusLockTime; //剩余时间,单位:分钟,用户锁定时此参数有效
+    unsigned char   byRes[126];
+}SADP_DEV_LOCK_INFO, *LPSADP_DEV_LOCK_INFO;
+
+//被绑定设备信息结构体
+typedef struct tagSADP_BIND_INFO
+{
+    char            szSerialNO[SADP_MAX_SERIALNO_LEN]; //被绑定设备的序列号
+    unsigned char   byiBind; //设备是否绑定 0-未绑定;1-已绑定
+    unsigned char   byRes[127];
+}SADP_BIND_INFO, *LPSADP_BIND_INFO;
+
+typedef struct tagSADP_BIND_LIST
+{
+    SADP_BIND_INFO   struBindInfo[SADP_MAX_BIND_NUM]; //绑定设备信息列表
+    char             szPassword[MAX_PASS_LEN]; //用户密码
+    unsigned char    byUnbindAll; //是否解绑所有设备 0-不解绑所有设备;1-解绑所有设备
+    unsigned char    byRes[127];
+}SADP_BIND_LIST, *LPSADP_BIND_LIST;
+
+typedef struct tagSADP_INACTIVE_INFO
+{
+    char             szPassword[MAX_PASS_LEN];  //用户密码
+    unsigned char    byRes[128];
+}SADP_INACTIVE_INFO, *LPSADP_INACTIVE_INFO;
+
+//wifi Region
+typedef struct tagSADP_WIFI_REGION_INFO
+{
+    unsigned char   byMode;                  //模式,0-保留,1-wifi区域配置模式,2-wifi增强模式
+    unsigned char   byWifiRegion;            //wifi区域,当byMode为1时,该字段有效。0 -default, 1- china, 2-nothAmerica,3-japan,4-europe,5-world
+    unsigned char   byWifiEnhancementEnabled;//是否启用wifi增强模式,当byMode为2时,该字段有效 0 -不启用, 1- 启用
+    unsigned char   byRes;                   //保留
+    char            szPassword[MAX_PASS_LEN];//用户密码
+    unsigned char   byRes2[128];
+}SADP_WIFI_REGION_INFO, *LPSADP_WIFI_REGION_INFO;
+
+//通道默认密码信息
+typedef struct tagSADP_CHANNEL_DEFAULT_PASSWORD
+{
+    char             szPassword[MAX_PASS_LEN]; //设备admin用户密码
+    char             szChannelDefaultPassword[MAX_PASS_LEN]; //通道默认密码(用户NVR激活,添加IPC)
+    unsigned char    byRes[128];
+}SADP_CHANNEL_DEFAULT_PASSWORD, *LPSADP_CHANNEL_DEFAULT_PASSWORD;
+
+
+//设备自检状态结构体
+typedef struct tagSADP_SELF_CHECK_STATE
+{
+    unsigned int    dwSize;
+    int             dwTotalDisk;               //磁盘总数(默认值为-1)
+    int             dwGoodDisk;                //好盘数(默认值为-1)
+    char            szCPU[MAX_CPU_LEN];        //CPU
+    char            szMemory[MAX_MEMORY_LEN];  //内存
+    unsigned char   byProgress;                //自检进度,0-100
+    unsigned char   byTemperatureState;        //温度状态,0-无效;1-正常;2-异常
+    unsigned char   byFanState;                //风扇状态,0-无效;1-正常;2-异常
+    unsigned char   byPowerState;              //电源状态,0-无效;1-正常;2-异常
+    unsigned char   bySASConnectState;         //SAS连接状态,0-无效;1-连接;2-未连接
+    char            byTotalNetworkPort;        //网口总数(默认值为-1)
+    char            byConnectNetworkPort;      //网口连接数(默认值为-1)
+    unsigned char   byRes[129];
+}SADP_SELF_CHECK_STATE, *LPSADP_SELF_CHECK_STATE;
+
+//EHome使能参数
+typedef struct tagSADP_EHOME_ENABLE_PARAM
+{
+    unsigned int    dwSize;
+    char            szDevID[MAX_PASS_LEN];     //设备ID
+    char            szEhomeKey[MAX_PASS_LEN];  //Ehome Key
+    char            szPassword[MAX_PASS_LEN];  //设备密码
+    unsigned char   byRes[64];
+}SADP_EHOME_ENABLE_PARAM, *LPSADP_EHOME_ENABLE_PARAM;
+
+//WIFI参数配置结构体
+typedef struct tagSADP_WIFI_CONFIG_PARAM
+{
+    unsigned int    dwSize;
+    char            szSSID[SADP_MAX_SERIALNO_LEN];      //SSID
+    char            szPassword[SADP_MAX_SERIALNO_LEN];  //Password
+    unsigned char   byWifiMode;  //wifi模式,0-默认,1-Station, 2-AP
+    unsigned char   byRes[64];
+}SADP_WIFI_CONFIG_PARAM, *LPSADP_WIFI_CONFIG_PARAM;
+
+//已配置重置密码类型参数配置结构体
+typedef struct tagSADP_PASSWORD_RESET_TYPE_PARAM
+{
+    unsigned int    dwSize;
+    unsigned char   byEnable;  //0-未配置  1-(GUID,安全问题,安全邮箱,HC)配置过一种或多种 
+    unsigned char   byGuidEnabled;  //0-未导出过GUID  1-导出过GUID
+    unsigned char   bySecurityQuestionEnabled;  //0-未配置过安全问题  1-配置过安全问题
+    unsigned char   bySecurityMailBoxEnabled;  //0-未配置过安全邮箱  1-配置过安全邮箱
+    unsigned char   byHikConnectEnabled;  //0-未绑定HikConnect账号  1-绑定过HikConnect账号
+    unsigned char   byRes1[3];
+    unsigned char   byRes[64];
+}SADP_PASSWORD_RESET_TYPE_PARAM, *LPSADP_PASSWORD_RESET_TYPE_PARAM;
+
+
+// 接口
+typedef void (CALLBACK *PDEVICE_FIND_CALLBACK)(const SADP_DEVICE_INFO *lpDeviceInfo, void *pUserData);
+CSADP_API BOOL CALLBACK SADP_Start_V30(PDEVICE_FIND_CALLBACK pDeviceFindCallBack, int bInstallNPF = 0, void* pUserData = NULL);
+typedef void (CALLBACK *PDEVICE_FIND_CALLBACK_V40)(const SADP_DEVICE_INFO_V40 *lpDeviceInfo, void *pUserData);
+CSADP_API BOOL CALLBACK SADP_Start_V40(PDEVICE_FIND_CALLBACK_V40 pDeviceFindCallBack, int bInstallNPF = 0, void* pUserData = NULL);
+CSADP_API BOOL CALLBACK SADP_SendInquiry(void);
+CSADP_API BOOL CALLBACK SADP_Stop(void);
+CSADP_API BOOL CALLBACK SADP_ModifyDeviceNetParam(const char* sMAC, const char* sPassword, const SADP_DEV_NET_PARAM *lpNetParam);
+CSADP_API unsigned int CALLBACK SADP_GetSadpVersion(void);
+CSADP_API BOOL CALLBACK SADP_SetLogToFile(int nLogLevel=0, char const *strLogDir = NULL, int bAutoDel = 1);		
+CSADP_API unsigned int CALLBACK SADP_GetLastError(void);
+CSADP_API BOOL CALLBACK SADP_ResetDefaultPasswd(const char* sDevSerialNO, const char* sCommand);
+CSADP_API BOOL CALLBACK SADP_SetCMSInfo(const char* sMac, const SADP_CMS_PARAM *lpCmsParam);
+CSADP_API BOOL CALLBACK SADP_Clearup(void);
+CSADP_API void CALLBACK SADP_SetAutoRequestInterval(unsigned int dwInterval); //设置自动搜索时间间隔(单位秒,为0则不自动请求,默认60s)
+
+CSADP_API BOOL CALLBACK SADP_GetDeviceConfig(const char* sDevSerialNO, unsigned int dwCommand, void* lpInBuffer, unsigned int  dwinBuffSize, void *lpOutBuffer, unsigned int  dwOutBuffSize);
+CSADP_API BOOL CALLBACK SADP_SetDeviceConfig(const char* sDevSerialNO, unsigned int dwCommand, void* lpInBuffer, unsigned int  dwInBuffSize, void* lpOutBuffer, unsigned int  dwOutBuffSize);
+CSADP_API BOOL CALLBACK SADP_GetDeviceConfigByMAC(const char* sDevMAC, unsigned int dwCommand, void* lpInBuffer, unsigned int  dwinBuffSize, void *lpOutBuffer, unsigned int  dwOutBuffSize);
+//激活设备
+CSADP_API BOOL CALLBACK SADP_ActivateDevice(const char* sDevSerialNO, const char* sCommand);
+
+//重置密码接口,兼容之前的恢复默认密码接口
+CSADP_API BOOL CALLBACK SADP_ResetPasswd(const char* sDevSerialNO, const SADP_RESET_PARAM *pResetParam);
+//重置密码接口V40,兼容之前的SADP_ResetPasswd
+CSADP_API BOOL CALLBACK SADP_ResetPasswd_V40(const char* sDevSerialNO, const SADP_RESET_PARAM_V40 *pResetParam, SADP_RET_RESET_PARAM_V40 *pRetResetParam);
+
+
+//设置设备过滤规则
+//dwFilterRule,按位表示,为1表示过滤,全0表示不过滤;0x01:过滤萤石设备;0x02:过滤OEM设备;0x03:过滤萤和OEM设备;0xfffffffe:仅显示萤石设备;0xfffffffd:仅显示OEM设备
+CSADP_API BOOL CALLBACK SADP_SetDeviceFilterRule( unsigned int dwFilterRule, const void *lpInBuff, unsigned int dwInBuffLen);
+//修改网络参数V40
+CSADP_API BOOL CALLBACK SADP_ModifyDeviceNetParam_V40(const char* sMAC, const char* sPassword, const SADP_DEV_NET_PARAM *lpNetParam, SADP_DEV_RET_NET_PARAM *lpRetNetParam, unsigned int  dwOutBuffSize);
+//点灯
+CSADP_API BOOL CALLBACK SADP_SendLamp(const char* sMAC, unsigned int dwCommand);
+#endif
+
+
+
+
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Info.plist b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Info.plist
new file mode 100644
index 0000000..7d15dcc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Info.plist
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Modules/module.modulemap b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Modules/module.modulemap
new file mode 100644
index 0000000..b77c28a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/EZOpenSDKFramework.framework/Modules/module.modulemap
@@ -0,0 +1,6 @@
+framework module EZOpenSDKFramework {
+  umbrella header "EZOpenSDKFramework.h"
+
+  export *
+  module * { export * }
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASCompositeConstraint.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASCompositeConstraint.h
new file mode 100755
index 0000000..934c6f1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASCompositeConstraint.h
@@ -0,0 +1,26 @@
+//
+//  MASCompositeConstraint.h
+//  Masonry
+//
+//  Created by Jonas Budelmann on 21/07/13.
+//  Copyright (c) 2013 cloudling. All rights reserved.
+//
+
+#import "MASConstraint.h"
+#import "MASUtilities.h"
+
+/**
+ *	A group of MASConstraint objects
+ */
+@interface MASCompositeConstraint : MASConstraint
+
+/**
+ *	Creates a composite with a predefined array of children
+ *
+ *	@param	children	child MASConstraints
+ *
+ *	@return	a composite constraint
+ */
+- (id)initWithChildren:(NSArray *)children;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASCompositeConstraint.m b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASCompositeConstraint.m
new file mode 100755
index 0000000..2002a40
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASCompositeConstraint.m
@@ -0,0 +1,183 @@
+//
+//  MASCompositeConstraint.m
+//  Masonry
+//
+//  Created by Jonas Budelmann on 21/07/13.
+//  Copyright (c) 2013 cloudling. All rights reserved.
+//
+
+#import "MASCompositeConstraint.h"
+#import "MASConstraint+Private.h"
+
+@interface MASCompositeConstraint () <MASConstraintDelegate>
+
+@property (nonatomic, strong) id mas_key;
+@property (nonatomic, strong) NSMutableArray *childConstraints;
+
+@end
+
+@implementation MASCompositeConstraint
+
+- (id)initWithChildren:(NSArray *)children {
+    self = [super init];
+    if (!self) return nil;
+
+    _childConstraints = [children mutableCopy];
+    for (MASConstraint *constraint in _childConstraints) {
+        constraint.delegate = self;
+    }
+
+    return self;
+}
+
+#pragma mark - MASConstraintDelegate
+
+- (void)constraint:(MASConstraint *)constraint shouldBeReplacedWithConstraint:(MASConstraint *)replacementConstraint {
+    NSUInteger index = [self.childConstraints indexOfObject:constraint];
+    NSAssert(index != NSNotFound, @"Could not find constraint %@", constraint);
+    [self.childConstraints replaceObjectAtIndex:index withObject:replacementConstraint];
+}
+
+- (MASConstraint *)constraint:(MASConstraint __unused *)constraint addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute {
+    id<MASConstraintDelegate> strongDelegate = self.delegate;
+    MASConstraint *newConstraint = [strongDelegate constraint:self addConstraintWithLayoutAttribute:layoutAttribute];
+    newConstraint.delegate = self;
+    [self.childConstraints addObject:newConstraint];
+    return newConstraint;
+}
+
+#pragma mark - NSLayoutConstraint multiplier proxies 
+
+- (MASConstraint * (^)(CGFloat))multipliedBy {
+    return ^id(CGFloat multiplier) {
+        for (MASConstraint *constraint in self.childConstraints) {
+            constraint.multipliedBy(multiplier);
+        }
+        return self;
+    };
+}
+
+- (MASConstraint * (^)(CGFloat))dividedBy {
+    return ^id(CGFloat divider) {
+        for (MASConstraint *constraint in self.childConstraints) {
+            constraint.dividedBy(divider);
+        }
+        return self;
+    };
+}
+
+#pragma mark - MASLayoutPriority proxy
+
+- (MASConstraint * (^)(MASLayoutPriority))priority {
+    return ^id(MASLayoutPriority priority) {
+        for (MASConstraint *constraint in self.childConstraints) {
+            constraint.priority(priority);
+        }
+        return self;
+    };
+}
+
+#pragma mark - NSLayoutRelation proxy
+
+- (MASConstraint * (^)(id, NSLayoutRelation))equalToWithRelation {
+    return ^id(id attr, NSLayoutRelation relation) {
+        for (MASConstraint *constraint in self.childConstraints.copy) {
+            constraint.equalToWithRelation(attr, relation);
+        }
+        return self;
+    };
+}
+
+#pragma mark - attribute chaining
+
+- (MASConstraint *)addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute {
+    [self constraint:self addConstraintWithLayoutAttribute:layoutAttribute];
+    return self;
+}
+
+#pragma mark - Animator proxy
+
+#if TARGET_OS_MAC && !(TARGET_OS_IPHONE || TARGET_OS_TV)
+
+- (MASConstraint *)animator {
+    for (MASConstraint *constraint in self.childConstraints) {
+        [constraint animator];
+    }
+    return self;
+}
+
+#endif
+
+#pragma mark - debug helpers
+
+- (MASConstraint * (^)(id))key {
+    return ^id(id key) {
+        self.mas_key = key;
+        int i = 0;
+        for (MASConstraint *constraint in self.childConstraints) {
+            constraint.key([NSString stringWithFormat:@"%@[%d]", key, i++]);
+        }
+        return self;
+    };
+}
+
+#pragma mark - NSLayoutConstraint constant setters
+
+- (void)setInsets:(MASEdgeInsets)insets {
+    for (MASConstraint *constraint in self.childConstraints) {
+        constraint.insets = insets;
+    }
+}
+
+- (void)setInset:(CGFloat)inset {
+    for (MASConstraint *constraint in self.childConstraints) {
+        constraint.inset = inset;
+    }
+}
+
+- (void)setOffset:(CGFloat)offset {
+    for (MASConstraint *constraint in self.childConstraints) {
+        constraint.offset = offset;
+    }
+}
+
+- (void)setSizeOffset:(CGSize)sizeOffset {
+    for (MASConstraint *constraint in self.childConstraints) {
+        constraint.sizeOffset = sizeOffset;
+    }
+}
+
+- (void)setCenterOffset:(CGPoint)centerOffset {
+    for (MASConstraint *constraint in self.childConstraints) {
+        constraint.centerOffset = centerOffset;
+    }
+}
+
+#pragma mark - MASConstraint
+
+- (void)activate {
+    for (MASConstraint *constraint in self.childConstraints) {
+        [constraint activate];
+    }
+}
+
+- (void)deactivate {
+    for (MASConstraint *constraint in self.childConstraints) {
+        [constraint deactivate];
+    }
+}
+
+- (void)install {
+    for (MASConstraint *constraint in self.childConstraints) {
+        constraint.updateExisting = self.updateExisting;
+        [constraint install];
+    }
+}
+
+- (void)uninstall {
+    for (MASConstraint *constraint in self.childConstraints) {
+        [constraint uninstall];
+    }
+}
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASConstraint+Private.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASConstraint+Private.h
new file mode 100755
index 0000000..ee0fd96
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASConstraint+Private.h
@@ -0,0 +1,66 @@
+//
+//  MASConstraint+Private.h
+//  Masonry
+//
+//  Created by Nick Tymchenko on 29/04/14.
+//  Copyright (c) 2014 cloudling. All rights reserved.
+//
+
+#import "MASConstraint.h"
+
+@protocol MASConstraintDelegate;
+
+
+@interface MASConstraint ()
+
+/**
+ *  Whether or not to check for an existing constraint instead of adding constraint
+ */
+@property (nonatomic, assign) BOOL updateExisting;
+
+/**
+ *	Usually MASConstraintMaker but could be a parent MASConstraint
+ */
+@property (nonatomic, weak) id<MASConstraintDelegate> delegate;
+
+/**
+ *  Based on a provided value type, is equal to calling:
+ *  NSNumber - setOffset:
+ *  NSValue with CGPoint - setPointOffset:
+ *  NSValue with CGSize - setSizeOffset:
+ *  NSValue with MASEdgeInsets - setInsets:
+ */
+- (void)setLayoutConstantWithValue:(NSValue *)value;
+
+@end
+
+
+@interface MASConstraint (Abstract)
+
+/**
+ *	Sets the constraint relation to given NSLayoutRelation
+ *  returns a block which accepts one of the following:
+ *    MASViewAttribute, UIView, NSValue, NSArray
+ *  see readme for more details.
+ */
+- (MASConstraint * (^)(id, NSLayoutRelation))equalToWithRelation;
+
+/**
+ *	Override to set a custom chaining behaviour
+ */
+- (MASConstraint *)addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute;
+
+@end
+
+
+@protocol MASConstraintDelegate <NSObject>
+
+/**
+ *	Notifies the delegate when the constraint needs to be replaced with another constraint. For example
+ *  A MASViewConstraint may turn into a MASCompositeConstraint when an array is passed to one of the equality blocks
+ */
+- (void)constraint:(MASConstraint *)constraint shouldBeReplacedWithConstraint:(MASConstraint *)replacementConstraint;
+
+- (MASConstraint *)constraint:(MASConstraint *)constraint addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASConstraint.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASConstraint.h
new file mode 100755
index 0000000..3eaa8a1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASConstraint.h
@@ -0,0 +1,272 @@
+//
+//  MASConstraint.h
+//  Masonry
+//
+//  Created by Jonas Budelmann on 22/07/13.
+//  Copyright (c) 2013 cloudling. All rights reserved.
+//
+
+#import "MASUtilities.h"
+
+/**
+ *	Enables Constraints to be created with chainable syntax
+ *  Constraint can represent single NSLayoutConstraint (MASViewConstraint) 
+ *  or a group of NSLayoutConstraints (MASComposisteConstraint)
+ */
+@interface MASConstraint : NSObject
+
+// Chaining Support
+
+/**
+ *	Modifies the NSLayoutConstraint constant,
+ *  only affects MASConstraints in which the first item's NSLayoutAttribute is one of the following
+ *  NSLayoutAttributeTop, NSLayoutAttributeLeft, NSLayoutAttributeBottom, NSLayoutAttributeRight
+ */
+- (MASConstraint * (^)(MASEdgeInsets insets))insets;
+
+/**
+ *	Modifies the NSLayoutConstraint constant,
+ *  only affects MASConstraints in which the first item's NSLayoutAttribute is one of the following
+ *  NSLayoutAttributeTop, NSLayoutAttributeLeft, NSLayoutAttributeBottom, NSLayoutAttributeRight
+ */
+- (MASConstraint * (^)(CGFloat inset))inset;
+
+/**
+ *	Modifies the NSLayoutConstraint constant,
+ *  only affects MASConstraints in which the first item's NSLayoutAttribute is one of the following
+ *  NSLayoutAttributeWidth, NSLayoutAttributeHeight
+ */
+- (MASConstraint * (^)(CGSize offset))sizeOffset;
+
+/**
+ *	Modifies the NSLayoutConstraint constant,
+ *  only affects MASConstraints in which the first item's NSLayoutAttribute is one of the following
+ *  NSLayoutAttributeCenterX, NSLayoutAttributeCenterY
+ */
+- (MASConstraint * (^)(CGPoint offset))centerOffset;
+
+/**
+ *	Modifies the NSLayoutConstraint constant
+ */
+- (MASConstraint * (^)(CGFloat offset))offset;
+
+/**
+ *  Modifies the NSLayoutConstraint constant based on a value type
+ */
+- (MASConstraint * (^)(NSValue *value))valueOffset;
+
+/**
+ *	Sets the NSLayoutConstraint multiplier property
+ */
+- (MASConstraint * (^)(CGFloat multiplier))multipliedBy;
+
+/**
+ *	Sets the NSLayoutConstraint multiplier to 1.0/dividedBy
+ */
+- (MASConstraint * (^)(CGFloat divider))dividedBy;
+
+/**
+ *	Sets the NSLayoutConstraint priority to a float or MASLayoutPriority
+ */
+- (MASConstraint * (^)(MASLayoutPriority priority))priority;
+
+/**
+ *	Sets the NSLayoutConstraint priority to MASLayoutPriorityLow
+ */
+- (MASConstraint * (^)(void))priorityLow;
+
+/**
+ *	Sets the NSLayoutConstraint priority to MASLayoutPriorityMedium
+ */
+- (MASConstraint * (^)(void))priorityMedium;
+
+/**
+ *	Sets the NSLayoutConstraint priority to MASLayoutPriorityHigh
+ */
+- (MASConstraint * (^)(void))priorityHigh;
+
+/**
+ *	Sets the constraint relation to NSLayoutRelationEqual
+ *  returns a block which accepts one of the following:
+ *    MASViewAttribute, UIView, NSValue, NSArray
+ *  see readme for more details.
+ */
+- (MASConstraint * (^)(id attr))equalTo;
+
+/**
+ *	Sets the constraint relation to NSLayoutRelationGreaterThanOrEqual
+ *  returns a block which accepts one of the following:
+ *    MASViewAttribute, UIView, NSValue, NSArray
+ *  see readme for more details.
+ */
+- (MASConstraint * (^)(id attr))greaterThanOrEqualTo;
+
+/**
+ *	Sets the constraint relation to NSLayoutRelationLessThanOrEqual
+ *  returns a block which accepts one of the following:
+ *    MASViewAttribute, UIView, NSValue, NSArray
+ *  see readme for more details.
+ */
+- (MASConstraint * (^)(id attr))lessThanOrEqualTo;
+
+/**
+ *	Optional semantic property which has no effect but improves the readability of constraint
+ */
+- (MASConstraint *)with;
+
+/**
+ *	Optional semantic property which has no effect but improves the readability of constraint
+ */
+- (MASConstraint *)and;
+
+/**
+ *	Creates a new MASCompositeConstraint with the called attribute and reciever
+ */
+- (MASConstraint *)left;
+- (MASConstraint *)top;
+- (MASConstraint *)right;
+- (MASConstraint *)bottom;
+- (MASConstraint *)leading;
+- (MASConstraint *)trailing;
+- (MASConstraint *)width;
+- (MASConstraint *)height;
+- (MASConstraint *)centerX;
+- (MASConstraint *)centerY;
+- (MASConstraint *)baseline;
+
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
+
+- (MASConstraint *)firstBaseline;
+- (MASConstraint *)lastBaseline;
+
+#endif
+
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000)
+
+- (MASConstraint *)leftMargin;
+- (MASConstraint *)rightMargin;
+- (MASConstraint *)topMargin;
+- (MASConstraint *)bottomMargin;
+- (MASConstraint *)leadingMargin;
+- (MASConstraint *)trailingMargin;
+- (MASConstraint *)centerXWithinMargins;
+- (MASConstraint *)centerYWithinMargins;
+
+#endif
+
+
+/**
+ *	Sets the constraint debug name
+ */
+- (MASConstraint * (^)(id key))key;
+
+// NSLayoutConstraint constant Setters
+// for use outside of mas_updateConstraints/mas_makeConstraints blocks
+
+/**
+ *	Modifies the NSLayoutConstraint constant,
+ *  only affects MASConstraints in which the first item's NSLayoutAttribute is one of the following
+ *  NSLayoutAttributeTop, NSLayoutAttributeLeft, NSLayoutAttributeBottom, NSLayoutAttributeRight
+ */
+- (void)setInsets:(MASEdgeInsets)insets;
+
+/**
+ *	Modifies the NSLayoutConstraint constant,
+ *  only affects MASConstraints in which the first item's NSLayoutAttribute is one of the following
+ *  NSLayoutAttributeTop, NSLayoutAttributeLeft, NSLayoutAttributeBottom, NSLayoutAttributeRight
+ */
+- (void)setInset:(CGFloat)inset;
+
+/**
+ *	Modifies the NSLayoutConstraint constant,
+ *  only affects MASConstraints in which the first item's NSLayoutAttribute is one of the following
+ *  NSLayoutAttributeWidth, NSLayoutAttributeHeight
+ */
+- (void)setSizeOffset:(CGSize)sizeOffset;
+
+/**
+ *	Modifies the NSLayoutConstraint constant,
+ *  only affects MASConstraints in which the first item's NSLayoutAttribute is one of the following
+ *  NSLayoutAttributeCenterX, NSLayoutAttributeCenterY
+ */
+- (void)setCenterOffset:(CGPoint)centerOffset;
+
+/**
+ *	Modifies the NSLayoutConstraint constant
+ */
+- (void)setOffset:(CGFloat)offset;
+
+
+// NSLayoutConstraint Installation support
+
+#if TARGET_OS_MAC && !(TARGET_OS_IPHONE || TARGET_OS_TV)
+/**
+ *  Whether or not to go through the animator proxy when modifying the constraint
+ */
+@property (nonatomic, copy, readonly) MASConstraint *animator;
+#endif
+
+/**
+ *  Activates an NSLayoutConstraint if it's supported by an OS. 
+ *  Invokes install otherwise.
+ */
+- (void)activate;
+
+/**
+ *  Deactivates previously installed/activated NSLayoutConstraint.
+ */
+- (void)deactivate;
+
+/**
+ *	Creates a NSLayoutConstraint and adds it to the appropriate view.
+ */
+- (void)install;
+
+/**
+ *	Removes previously installed NSLayoutConstraint
+ */
+- (void)uninstall;
+
+@end
+
+
+/**
+ *  Convenience auto-boxing macros for MASConstraint methods.
+ *
+ *  Defining MAS_SHORTHAND_GLOBALS will turn on auto-boxing for default syntax.
+ *  A potential drawback of this is that the unprefixed macros will appear in global scope.
+ */
+#define mas_equalTo(...)                 equalTo(MASBoxValue((__VA_ARGS__)))
+#define mas_greaterThanOrEqualTo(...)    greaterThanOrEqualTo(MASBoxValue((__VA_ARGS__)))
+#define mas_lessThanOrEqualTo(...)       lessThanOrEqualTo(MASBoxValue((__VA_ARGS__)))
+
+#define mas_offset(...)                  valueOffset(MASBoxValue((__VA_ARGS__)))
+
+
+#ifdef MAS_SHORTHAND_GLOBALS
+
+#define equalTo(...)                     mas_equalTo(__VA_ARGS__)
+#define greaterThanOrEqualTo(...)        mas_greaterThanOrEqualTo(__VA_ARGS__)
+#define lessThanOrEqualTo(...)           mas_lessThanOrEqualTo(__VA_ARGS__)
+
+#define offset(...)                      mas_offset(__VA_ARGS__)
+
+#endif
+
+
+@interface MASConstraint (AutoboxingSupport)
+
+/**
+ *  Aliases to corresponding relation methods (for shorthand macros)
+ *  Also needed to aid autocompletion
+ */
+- (MASConstraint * (^)(id attr))mas_equalTo;
+- (MASConstraint * (^)(id attr))mas_greaterThanOrEqualTo;
+- (MASConstraint * (^)(id attr))mas_lessThanOrEqualTo;
+
+/**
+ *  A dummy method to aid autocompletion
+ */
+- (MASConstraint * (^)(id offset))mas_offset;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASConstraint.m b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASConstraint.m
new file mode 100755
index 0000000..52de590
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASConstraint.m
@@ -0,0 +1,301 @@
+//
+//  MASConstraint.m
+//  Masonry
+//
+//  Created by Nick Tymchenko on 1/20/14.
+//
+
+#import "MASConstraint.h"
+#import "MASConstraint+Private.h"
+
+#define MASMethodNotImplemented() \
+    @throw [NSException exceptionWithName:NSInternalInconsistencyException \
+                                   reason:[NSString stringWithFormat:@"You must override %@ in a subclass.", NSStringFromSelector(_cmd)] \
+                                 userInfo:nil]
+
+@implementation MASConstraint
+
+#pragma mark - Init
+
+- (id)init {
+	NSAssert(![self isMemberOfClass:[MASConstraint class]], @"MASConstraint is an abstract class, you should not instantiate it directly.");
+	return [super init];
+}
+
+#pragma mark - NSLayoutRelation proxies
+
+- (MASConstraint * (^)(id))equalTo {
+    return ^id(id attribute) {
+        return self.equalToWithRelation(attribute, NSLayoutRelationEqual);
+    };
+}
+
+- (MASConstraint * (^)(id))mas_equalTo {
+    return ^id(id attribute) {
+        return self.equalToWithRelation(attribute, NSLayoutRelationEqual);
+    };
+}
+
+- (MASConstraint * (^)(id))greaterThanOrEqualTo {
+    return ^id(id attribute) {
+        return self.equalToWithRelation(attribute, NSLayoutRelationGreaterThanOrEqual);
+    };
+}
+
+- (MASConstraint * (^)(id))mas_greaterThanOrEqualTo {
+    return ^id(id attribute) {
+        return self.equalToWithRelation(attribute, NSLayoutRelationGreaterThanOrEqual);
+    };
+}
+
+- (MASConstraint * (^)(id))lessThanOrEqualTo {
+    return ^id(id attribute) {
+        return self.equalToWithRelation(attribute, NSLayoutRelationLessThanOrEqual);
+    };
+}
+
+- (MASConstraint * (^)(id))mas_lessThanOrEqualTo {
+    return ^id(id attribute) {
+        return self.equalToWithRelation(attribute, NSLayoutRelationLessThanOrEqual);
+    };
+}
+
+#pragma mark - MASLayoutPriority proxies
+
+- (MASConstraint * (^)(void))priorityLow {
+    return ^id{
+        self.priority(MASLayoutPriorityDefaultLow);
+        return self;
+    };
+}
+
+- (MASConstraint * (^)(void))priorityMedium {
+    return ^id{
+        self.priority(MASLayoutPriorityDefaultMedium);
+        return self;
+    };
+}
+
+- (MASConstraint * (^)(void))priorityHigh {
+    return ^id{
+        self.priority(MASLayoutPriorityDefaultHigh);
+        return self;
+    };
+}
+
+#pragma mark - NSLayoutConstraint constant proxies
+
+- (MASConstraint * (^)(MASEdgeInsets))insets {
+    return ^id(MASEdgeInsets insets){
+        self.insets = insets;
+        return self;
+    };
+}
+
+- (MASConstraint * (^)(CGFloat))inset {
+    return ^id(CGFloat inset){
+        self.inset = inset;
+        return self;
+    };
+}
+
+- (MASConstraint * (^)(CGSize))sizeOffset {
+    return ^id(CGSize offset) {
+        self.sizeOffset = offset;
+        return self;
+    };
+}
+
+- (MASConstraint * (^)(CGPoint))centerOffset {
+    return ^id(CGPoint offset) {
+        self.centerOffset = offset;
+        return self;
+    };
+}
+
+- (MASConstraint * (^)(CGFloat))offset {
+    return ^id(CGFloat offset){
+        self.offset = offset;
+        return self;
+    };
+}
+
+- (MASConstraint * (^)(NSValue *value))valueOffset {
+    return ^id(NSValue *offset) {
+        NSAssert([offset isKindOfClass:NSValue.class], @"expected an NSValue offset, got: %@", offset);
+        [self setLayoutConstantWithValue:offset];
+        return self;
+    };
+}
+
+- (MASConstraint * (^)(id offset))mas_offset {
+    // Will never be called due to macro
+    return nil;
+}
+
+#pragma mark - NSLayoutConstraint constant setter
+
+- (void)setLayoutConstantWithValue:(NSValue *)value {
+    if ([value isKindOfClass:NSNumber.class]) {
+        self.offset = [(NSNumber *)value doubleValue];
+    } else if (strcmp(value.objCType, @encode(CGPoint)) == 0) {
+        CGPoint point;
+        [value getValue:&point];
+        self.centerOffset = point;
+    } else if (strcmp(value.objCType, @encode(CGSize)) == 0) {
+        CGSize size;
+        [value getValue:&size];
+        self.sizeOffset = size;
+    } else if (strcmp(value.objCType, @encode(MASEdgeInsets)) == 0) {
+        MASEdgeInsets insets;
+        [value getValue:&insets];
+        self.insets = insets;
+    } else {
+        NSAssert(NO, @"attempting to set layout constant with unsupported value: %@", value);
+    }
+}
+
+#pragma mark - Semantic properties
+
+- (MASConstraint *)with {
+    return self;
+}
+
+- (MASConstraint *)and {
+    return self;
+}
+
+#pragma mark - Chaining
+
+- (MASConstraint *)addConstraintWithLayoutAttribute:(NSLayoutAttribute __unused)layoutAttribute {
+    MASMethodNotImplemented();
+}
+
+- (MASConstraint *)left {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeLeft];
+}
+
+- (MASConstraint *)top {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeTop];
+}
+
+- (MASConstraint *)right {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeRight];
+}
+
+- (MASConstraint *)bottom {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeBottom];
+}
+
+- (MASConstraint *)leading {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeLeading];
+}
+
+- (MASConstraint *)trailing {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeTrailing];
+}
+
+- (MASConstraint *)width {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeWidth];
+}
+
+- (MASConstraint *)height {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeHeight];
+}
+
+- (MASConstraint *)centerX {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeCenterX];
+}
+
+- (MASConstraint *)centerY {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeCenterY];
+}
+
+- (MASConstraint *)baseline {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeBaseline];
+}
+
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
+
+- (MASConstraint *)firstBaseline {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeFirstBaseline];
+}
+- (MASConstraint *)lastBaseline {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeLastBaseline];
+}
+
+#endif
+
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000)
+
+- (MASConstraint *)leftMargin {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeLeftMargin];
+}
+
+- (MASConstraint *)rightMargin {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeRightMargin];
+}
+
+- (MASConstraint *)topMargin {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeTopMargin];
+}
+
+- (MASConstraint *)bottomMargin {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeBottomMargin];
+}
+
+- (MASConstraint *)leadingMargin {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeLeadingMargin];
+}
+
+- (MASConstraint *)trailingMargin {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeTrailingMargin];
+}
+
+- (MASConstraint *)centerXWithinMargins {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeCenterXWithinMargins];
+}
+
+- (MASConstraint *)centerYWithinMargins {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeCenterYWithinMargins];
+}
+
+#endif
+
+#pragma mark - Abstract
+
+- (MASConstraint * (^)(CGFloat multiplier))multipliedBy { MASMethodNotImplemented(); }
+
+- (MASConstraint * (^)(CGFloat divider))dividedBy { MASMethodNotImplemented(); }
+
+- (MASConstraint * (^)(MASLayoutPriority priority))priority { MASMethodNotImplemented(); }
+
+- (MASConstraint * (^)(id, NSLayoutRelation))equalToWithRelation { MASMethodNotImplemented(); }
+
+- (MASConstraint * (^)(id key))key { MASMethodNotImplemented(); }
+
+- (void)setInsets:(MASEdgeInsets __unused)insets { MASMethodNotImplemented(); }
+
+- (void)setInset:(CGFloat __unused)inset { MASMethodNotImplemented(); }
+
+- (void)setSizeOffset:(CGSize __unused)sizeOffset { MASMethodNotImplemented(); }
+
+- (void)setCenterOffset:(CGPoint __unused)centerOffset { MASMethodNotImplemented(); }
+
+- (void)setOffset:(CGFloat __unused)offset { MASMethodNotImplemented(); }
+
+#if TARGET_OS_MAC && !(TARGET_OS_IPHONE || TARGET_OS_TV)
+
+- (MASConstraint *)animator { MASMethodNotImplemented(); }
+
+#endif
+
+- (void)activate { MASMethodNotImplemented(); }
+
+- (void)deactivate { MASMethodNotImplemented(); }
+
+- (void)install { MASMethodNotImplemented(); }
+
+- (void)uninstall { MASMethodNotImplemented(); }
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASConstraintMaker.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASConstraintMaker.h
new file mode 100755
index 0000000..d9b58f4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASConstraintMaker.h
@@ -0,0 +1,146 @@
+//
+//  MASConstraintMaker.h
+//  Masonry
+//
+//  Created by Jonas Budelmann on 20/07/13.
+//  Copyright (c) 2013 cloudling. All rights reserved.
+//
+
+#import "MASConstraint.h"
+#import "MASUtilities.h"
+
+typedef NS_OPTIONS(NSInteger, MASAttribute) {
+    MASAttributeLeft = 1 << NSLayoutAttributeLeft,
+    MASAttributeRight = 1 << NSLayoutAttributeRight,
+    MASAttributeTop = 1 << NSLayoutAttributeTop,
+    MASAttributeBottom = 1 << NSLayoutAttributeBottom,
+    MASAttributeLeading = 1 << NSLayoutAttributeLeading,
+    MASAttributeTrailing = 1 << NSLayoutAttributeTrailing,
+    MASAttributeWidth = 1 << NSLayoutAttributeWidth,
+    MASAttributeHeight = 1 << NSLayoutAttributeHeight,
+    MASAttributeCenterX = 1 << NSLayoutAttributeCenterX,
+    MASAttributeCenterY = 1 << NSLayoutAttributeCenterY,
+    MASAttributeBaseline = 1 << NSLayoutAttributeBaseline,
+    
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
+    
+    MASAttributeFirstBaseline = 1 << NSLayoutAttributeFirstBaseline,
+    MASAttributeLastBaseline = 1 << NSLayoutAttributeLastBaseline,
+    
+#endif
+    
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000)
+    
+    MASAttributeLeftMargin = 1 << NSLayoutAttributeLeftMargin,
+    MASAttributeRightMargin = 1 << NSLayoutAttributeRightMargin,
+    MASAttributeTopMargin = 1 << NSLayoutAttributeTopMargin,
+    MASAttributeBottomMargin = 1 << NSLayoutAttributeBottomMargin,
+    MASAttributeLeadingMargin = 1 << NSLayoutAttributeLeadingMargin,
+    MASAttributeTrailingMargin = 1 << NSLayoutAttributeTrailingMargin,
+    MASAttributeCenterXWithinMargins = 1 << NSLayoutAttributeCenterXWithinMargins,
+    MASAttributeCenterYWithinMargins = 1 << NSLayoutAttributeCenterYWithinMargins,
+
+#endif
+    
+};
+
+/**
+ *  Provides factory methods for creating MASConstraints.
+ *  Constraints are collected until they are ready to be installed
+ *
+ */
+@interface MASConstraintMaker : NSObject
+
+/**
+ *	The following properties return a new MASViewConstraint
+ *  with the first item set to the makers associated view and the appropriate MASViewAttribute
+ */
+@property (nonatomic, strong, readonly) MASConstraint *left;
+@property (nonatomic, strong, readonly) MASConstraint *top;
+@property (nonatomic, strong, readonly) MASConstraint *right;
+@property (nonatomic, strong, readonly) MASConstraint *bottom;
+@property (nonatomic, strong, readonly) MASConstraint *leading;
+@property (nonatomic, strong, readonly) MASConstraint *trailing;
+@property (nonatomic, strong, readonly) MASConstraint *width;
+@property (nonatomic, strong, readonly) MASConstraint *height;
+@property (nonatomic, strong, readonly) MASConstraint *centerX;
+@property (nonatomic, strong, readonly) MASConstraint *centerY;
+@property (nonatomic, strong, readonly) MASConstraint *baseline;
+
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
+
+@property (nonatomic, strong, readonly) MASConstraint *firstBaseline;
+@property (nonatomic, strong, readonly) MASConstraint *lastBaseline;
+
+#endif
+
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000)
+
+@property (nonatomic, strong, readonly) MASConstraint *leftMargin;
+@property (nonatomic, strong, readonly) MASConstraint *rightMargin;
+@property (nonatomic, strong, readonly) MASConstraint *topMargin;
+@property (nonatomic, strong, readonly) MASConstraint *bottomMargin;
+@property (nonatomic, strong, readonly) MASConstraint *leadingMargin;
+@property (nonatomic, strong, readonly) MASConstraint *trailingMargin;
+@property (nonatomic, strong, readonly) MASConstraint *centerXWithinMargins;
+@property (nonatomic, strong, readonly) MASConstraint *centerYWithinMargins;
+
+#endif
+
+/**
+ *  Returns a block which creates a new MASCompositeConstraint with the first item set
+ *  to the makers associated view and children corresponding to the set bits in the
+ *  MASAttribute parameter. Combine multiple attributes via binary-or.
+ */
+@property (nonatomic, strong, readonly) MASConstraint *(^attributes)(MASAttribute attrs);
+
+/**
+ *	Creates a MASCompositeConstraint with type MASCompositeConstraintTypeEdges
+ *  which generates the appropriate MASViewConstraint children (top, left, bottom, right)
+ *  with the first item set to the makers associated view
+ */
+@property (nonatomic, strong, readonly) MASConstraint *edges;
+
+/**
+ *	Creates a MASCompositeConstraint with type MASCompositeConstraintTypeSize
+ *  which generates the appropriate MASViewConstraint children (width, height)
+ *  with the first item set to the makers associated view
+ */
+@property (nonatomic, strong, readonly) MASConstraint *size;
+
+/**
+ *	Creates a MASCompositeConstraint with type MASCompositeConstraintTypeCenter
+ *  which generates the appropriate MASViewConstraint children (centerX, centerY)
+ *  with the first item set to the makers associated view
+ */
+@property (nonatomic, strong, readonly) MASConstraint *center;
+
+/**
+ *  Whether or not to check for an existing constraint instead of adding constraint
+ */
+@property (nonatomic, assign) BOOL updateExisting;
+
+/**
+ *  Whether or not to remove existing constraints prior to installing
+ */
+@property (nonatomic, assign) BOOL removeExisting;
+
+/**
+ *	initialises the maker with a default view
+ *
+ *	@param	view	any MASConstraint are created with this view as the first item
+ *
+ *	@return	a new MASConstraintMaker
+ */
+- (id)initWithView:(MAS_VIEW *)view;
+
+/**
+ *	Calls install method on any MASConstraints which have been created by this maker
+ *
+ *	@return	an array of all the installed MASConstraints
+ */
+- (NSArray *)install;
+
+- (MASConstraint * (^)(dispatch_block_t))group;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASConstraintMaker.m b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASConstraintMaker.m
new file mode 100755
index 0000000..f11492a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASConstraintMaker.m
@@ -0,0 +1,273 @@
+//
+//  MASConstraintMaker.m
+//  Masonry
+//
+//  Created by Jonas Budelmann on 20/07/13.
+//  Copyright (c) 2013 cloudling. All rights reserved.
+//
+
+#import "MASConstraintMaker.h"
+#import "MASViewConstraint.h"
+#import "MASCompositeConstraint.h"
+#import "MASConstraint+Private.h"
+#import "MASViewAttribute.h"
+#import "View+MASAdditions.h"
+
+@interface MASConstraintMaker () <MASConstraintDelegate>
+
+@property (nonatomic, weak) MAS_VIEW *view;
+@property (nonatomic, strong) NSMutableArray *constraints;
+
+@end
+
+@implementation MASConstraintMaker
+
+- (id)initWithView:(MAS_VIEW *)view {
+    self = [super init];
+    if (!self) return nil;
+    
+    self.view = view;
+    self.constraints = NSMutableArray.new;
+    
+    return self;
+}
+
+- (NSArray *)install {
+    if (self.removeExisting) {
+        NSArray *installedConstraints = [MASViewConstraint installedConstraintsForView:self.view];
+        for (MASConstraint *constraint in installedConstraints) {
+            [constraint uninstall];
+        }
+    }
+    NSArray *constraints = self.constraints.copy;
+    for (MASConstraint *constraint in constraints) {
+        constraint.updateExisting = self.updateExisting;
+        [constraint install];
+    }
+    [self.constraints removeAllObjects];
+    return constraints;
+}
+
+#pragma mark - MASConstraintDelegate
+
+- (void)constraint:(MASConstraint *)constraint shouldBeReplacedWithConstraint:(MASConstraint *)replacementConstraint {
+    NSUInteger index = [self.constraints indexOfObject:constraint];
+    NSAssert(index != NSNotFound, @"Could not find constraint %@", constraint);
+    [self.constraints replaceObjectAtIndex:index withObject:replacementConstraint];
+}
+
+- (MASConstraint *)constraint:(MASConstraint *)constraint addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute {
+    MASViewAttribute *viewAttribute = [[MASViewAttribute alloc] initWithView:self.view layoutAttribute:layoutAttribute];
+    MASViewConstraint *newConstraint = [[MASViewConstraint alloc] initWithFirstViewAttribute:viewAttribute];
+    if ([constraint isKindOfClass:MASViewConstraint.class]) {
+        //replace with composite constraint
+        NSArray *children = @[constraint, newConstraint];
+        MASCompositeConstraint *compositeConstraint = [[MASCompositeConstraint alloc] initWithChildren:children];
+        compositeConstraint.delegate = self;
+        [self constraint:constraint shouldBeReplacedWithConstraint:compositeConstraint];
+        return compositeConstraint;
+    }
+    if (!constraint) {
+        newConstraint.delegate = self;
+        [self.constraints addObject:newConstraint];
+    }
+    return newConstraint;
+}
+
+- (MASConstraint *)addConstraintWithAttributes:(MASAttribute)attrs {
+    __unused MASAttribute anyAttribute = (MASAttributeLeft | MASAttributeRight | MASAttributeTop | MASAttributeBottom | MASAttributeLeading
+                                          | MASAttributeTrailing | MASAttributeWidth | MASAttributeHeight | MASAttributeCenterX
+                                          | MASAttributeCenterY | MASAttributeBaseline
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
+                                          | MASAttributeFirstBaseline | MASAttributeLastBaseline
+#endif
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000)
+                                          | MASAttributeLeftMargin | MASAttributeRightMargin | MASAttributeTopMargin | MASAttributeBottomMargin
+                                          | MASAttributeLeadingMargin | MASAttributeTrailingMargin | MASAttributeCenterXWithinMargins
+                                          | MASAttributeCenterYWithinMargins
+#endif
+                                          );
+    
+    NSAssert((attrs & anyAttribute) != 0, @"You didn't pass any attribute to make.attributes(...)");
+    
+    NSMutableArray *attributes = [NSMutableArray array];
+    
+    if (attrs & MASAttributeLeft) [attributes addObject:self.view.mas_left];
+    if (attrs & MASAttributeRight) [attributes addObject:self.view.mas_right];
+    if (attrs & MASAttributeTop) [attributes addObject:self.view.mas_top];
+    if (attrs & MASAttributeBottom) [attributes addObject:self.view.mas_bottom];
+    if (attrs & MASAttributeLeading) [attributes addObject:self.view.mas_leading];
+    if (attrs & MASAttributeTrailing) [attributes addObject:self.view.mas_trailing];
+    if (attrs & MASAttributeWidth) [attributes addObject:self.view.mas_width];
+    if (attrs & MASAttributeHeight) [attributes addObject:self.view.mas_height];
+    if (attrs & MASAttributeCenterX) [attributes addObject:self.view.mas_centerX];
+    if (attrs & MASAttributeCenterY) [attributes addObject:self.view.mas_centerY];
+    if (attrs & MASAttributeBaseline) [attributes addObject:self.view.mas_baseline];
+    
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
+    
+    if (attrs & MASAttributeFirstBaseline) [attributes addObject:self.view.mas_firstBaseline];
+    if (attrs & MASAttributeLastBaseline) [attributes addObject:self.view.mas_lastBaseline];
+    
+#endif
+    
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000)
+    
+    if (attrs & MASAttributeLeftMargin) [attributes addObject:self.view.mas_leftMargin];
+    if (attrs & MASAttributeRightMargin) [attributes addObject:self.view.mas_rightMargin];
+    if (attrs & MASAttributeTopMargin) [attributes addObject:self.view.mas_topMargin];
+    if (attrs & MASAttributeBottomMargin) [attributes addObject:self.view.mas_bottomMargin];
+    if (attrs & MASAttributeLeadingMargin) [attributes addObject:self.view.mas_leadingMargin];
+    if (attrs & MASAttributeTrailingMargin) [attributes addObject:self.view.mas_trailingMargin];
+    if (attrs & MASAttributeCenterXWithinMargins) [attributes addObject:self.view.mas_centerXWithinMargins];
+    if (attrs & MASAttributeCenterYWithinMargins) [attributes addObject:self.view.mas_centerYWithinMargins];
+    
+#endif
+    
+    NSMutableArray *children = [NSMutableArray arrayWithCapacity:attributes.count];
+    
+    for (MASViewAttribute *a in attributes) {
+        [children addObject:[[MASViewConstraint alloc] initWithFirstViewAttribute:a]];
+    }
+    
+    MASCompositeConstraint *constraint = [[MASCompositeConstraint alloc] initWithChildren:children];
+    constraint.delegate = self;
+    [self.constraints addObject:constraint];
+    return constraint;
+}
+
+#pragma mark - standard Attributes
+
+- (MASConstraint *)addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute {
+    return [self constraint:nil addConstraintWithLayoutAttribute:layoutAttribute];
+}
+
+- (MASConstraint *)left {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeLeft];
+}
+
+- (MASConstraint *)top {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeTop];
+}
+
+- (MASConstraint *)right {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeRight];
+}
+
+- (MASConstraint *)bottom {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeBottom];
+}
+
+- (MASConstraint *)leading {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeLeading];
+}
+
+- (MASConstraint *)trailing {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeTrailing];
+}
+
+- (MASConstraint *)width {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeWidth];
+}
+
+- (MASConstraint *)height {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeHeight];
+}
+
+- (MASConstraint *)centerX {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeCenterX];
+}
+
+- (MASConstraint *)centerY {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeCenterY];
+}
+
+- (MASConstraint *)baseline {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeBaseline];
+}
+
+- (MASConstraint *(^)(MASAttribute))attributes {
+    return ^(MASAttribute attrs){
+        return [self addConstraintWithAttributes:attrs];
+    };
+}
+
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
+
+- (MASConstraint *)firstBaseline {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeFirstBaseline];
+}
+
+- (MASConstraint *)lastBaseline {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeLastBaseline];
+}
+
+#endif
+
+
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000)
+
+- (MASConstraint *)leftMargin {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeLeftMargin];
+}
+
+- (MASConstraint *)rightMargin {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeRightMargin];
+}
+
+- (MASConstraint *)topMargin {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeTopMargin];
+}
+
+- (MASConstraint *)bottomMargin {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeBottomMargin];
+}
+
+- (MASConstraint *)leadingMargin {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeLeadingMargin];
+}
+
+- (MASConstraint *)trailingMargin {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeTrailingMargin];
+}
+
+- (MASConstraint *)centerXWithinMargins {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeCenterXWithinMargins];
+}
+
+- (MASConstraint *)centerYWithinMargins {
+    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeCenterYWithinMargins];
+}
+
+#endif
+
+
+#pragma mark - composite Attributes
+
+- (MASConstraint *)edges {
+    return [self addConstraintWithAttributes:MASAttributeTop | MASAttributeLeft | MASAttributeRight | MASAttributeBottom];
+}
+
+- (MASConstraint *)size {
+    return [self addConstraintWithAttributes:MASAttributeWidth | MASAttributeHeight];
+}
+
+- (MASConstraint *)center {
+    return [self addConstraintWithAttributes:MASAttributeCenterX | MASAttributeCenterY];
+}
+
+#pragma mark - grouping
+
+- (MASConstraint *(^)(dispatch_block_t group))group {
+    return ^id(dispatch_block_t group) {
+        NSInteger previousCount = self.constraints.count;
+        group();
+
+        NSArray *children = [self.constraints subarrayWithRange:NSMakeRange(previousCount, self.constraints.count - previousCount)];
+        MASCompositeConstraint *constraint = [[MASCompositeConstraint alloc] initWithChildren:children];
+        constraint.delegate = self;
+        return constraint;
+    };
+}
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASLayoutConstraint.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASLayoutConstraint.h
new file mode 100755
index 0000000..699041c
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASLayoutConstraint.h
@@ -0,0 +1,22 @@
+//
+//  MASLayoutConstraint.h
+//  Masonry
+//
+//  Created by Jonas Budelmann on 3/08/13.
+//  Copyright (c) 2013 Jonas Budelmann. All rights reserved.
+//
+
+#import "MASUtilities.h"
+
+/**
+ *	When you are debugging or printing the constraints attached to a view this subclass
+ *  makes it easier to identify which constraints have been created via Masonry
+ */
+@interface MASLayoutConstraint : NSLayoutConstraint
+
+/**
+ *	a key to associate with this constraint
+ */
+@property (nonatomic, strong) id mas_key;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASLayoutConstraint.m b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASLayoutConstraint.m
new file mode 100755
index 0000000..3483f02
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASLayoutConstraint.m
@@ -0,0 +1,13 @@
+//
+//  MASLayoutConstraint.m
+//  Masonry
+//
+//  Created by Jonas Budelmann on 3/08/13.
+//  Copyright (c) 2013 Jonas Budelmann. All rights reserved.
+//
+
+#import "MASLayoutConstraint.h"
+
+@implementation MASLayoutConstraint
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASUtilities.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASUtilities.h
new file mode 100755
index 0000000..1dbfd93
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASUtilities.h
@@ -0,0 +1,136 @@
+//
+//  MASUtilities.h
+//  Masonry
+//
+//  Created by Jonas Budelmann on 19/08/13.
+//  Copyright (c) 2013 Jonas Budelmann. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+
+
+#if TARGET_OS_IPHONE || TARGET_OS_TV
+
+    #import <UIKit/UIKit.h>
+    #define MAS_VIEW UIView
+    #define MAS_VIEW_CONTROLLER UIViewController
+    #define MASEdgeInsets UIEdgeInsets
+
+    typedef UILayoutPriority MASLayoutPriority;
+    static const MASLayoutPriority MASLayoutPriorityRequired = UILayoutPriorityRequired;
+    static const MASLayoutPriority MASLayoutPriorityDefaultHigh = UILayoutPriorityDefaultHigh;
+    static const MASLayoutPriority MASLayoutPriorityDefaultMedium = 500;
+    static const MASLayoutPriority MASLayoutPriorityDefaultLow = UILayoutPriorityDefaultLow;
+    static const MASLayoutPriority MASLayoutPriorityFittingSizeLevel = UILayoutPriorityFittingSizeLevel;
+
+#elif TARGET_OS_MAC
+
+    #import <AppKit/AppKit.h>
+    #define MAS_VIEW NSView
+    #define MASEdgeInsets NSEdgeInsets
+
+    typedef NSLayoutPriority MASLayoutPriority;
+    static const MASLayoutPriority MASLayoutPriorityRequired = NSLayoutPriorityRequired;
+    static const MASLayoutPriority MASLayoutPriorityDefaultHigh = NSLayoutPriorityDefaultHigh;
+    static const MASLayoutPriority MASLayoutPriorityDragThatCanResizeWindow = NSLayoutPriorityDragThatCanResizeWindow;
+    static const MASLayoutPriority MASLayoutPriorityDefaultMedium = 501;
+    static const MASLayoutPriority MASLayoutPriorityWindowSizeStayPut = NSLayoutPriorityWindowSizeStayPut;
+    static const MASLayoutPriority MASLayoutPriorityDragThatCannotResizeWindow = NSLayoutPriorityDragThatCannotResizeWindow;
+    static const MASLayoutPriority MASLayoutPriorityDefaultLow = NSLayoutPriorityDefaultLow;
+    static const MASLayoutPriority MASLayoutPriorityFittingSizeCompression = NSLayoutPriorityFittingSizeCompression;
+
+#endif
+
+/**
+ *	Allows you to attach keys to objects matching the variable names passed.
+ *
+ *  view1.mas_key = @"view1", view2.mas_key = @"view2";
+ *
+ *  is equivalent to:
+ *
+ *  MASAttachKeys(view1, view2);
+ */
+#define MASAttachKeys(...)                                                        \
+    {                                                                             \
+        NSDictionary *keyPairs = NSDictionaryOfVariableBindings(__VA_ARGS__);     \
+        for (id key in keyPairs.allKeys) {                                        \
+            id obj = keyPairs[key];                                               \
+            NSAssert([obj respondsToSelector:@selector(setMas_key:)],             \
+                     @"Cannot attach mas_key to %@", obj);                        \
+            [obj setMas_key:key];                                                 \
+        }                                                                         \
+    }
+
+/**
+ *  Used to create object hashes
+ *  Based on http://www.mikeash.com/pyblog/friday-qa-2010-06-18-implementing-equality-and-hashing.html
+ */
+#define MAS_NSUINT_BIT (CHAR_BIT * sizeof(NSUInteger))
+#define MAS_NSUINTROTATE(val, howmuch) ((((NSUInteger)val) << howmuch) | (((NSUInteger)val) >> (MAS_NSUINT_BIT - howmuch)))
+
+/**
+ *  Given a scalar or struct value, wraps it in NSValue
+ *  Based on EXPObjectify: https://github.com/specta/expecta
+ */
+static inline id _MASBoxValue(const char *type, ...) {
+    va_list v;
+    va_start(v, type);
+    id obj = nil;
+    if (strcmp(type, @encode(id)) == 0) {
+        id actual = va_arg(v, id);
+        obj = actual;
+    } else if (strcmp(type, @encode(CGPoint)) == 0) {
+        CGPoint actual = (CGPoint)va_arg(v, CGPoint);
+        obj = [NSValue value:&actual withObjCType:type];
+    } else if (strcmp(type, @encode(CGSize)) == 0) {
+        CGSize actual = (CGSize)va_arg(v, CGSize);
+        obj = [NSValue value:&actual withObjCType:type];
+    } else if (strcmp(type, @encode(MASEdgeInsets)) == 0) {
+        MASEdgeInsets actual = (MASEdgeInsets)va_arg(v, MASEdgeInsets);
+        obj = [NSValue value:&actual withObjCType:type];
+    } else if (strcmp(type, @encode(double)) == 0) {
+        double actual = (double)va_arg(v, double);
+        obj = [NSNumber numberWithDouble:actual];
+    } else if (strcmp(type, @encode(float)) == 0) {
+        float actual = (float)va_arg(v, double);
+        obj = [NSNumber numberWithFloat:actual];
+    } else if (strcmp(type, @encode(int)) == 0) {
+        int actual = (int)va_arg(v, int);
+        obj = [NSNumber numberWithInt:actual];
+    } else if (strcmp(type, @encode(long)) == 0) {
+        long actual = (long)va_arg(v, long);
+        obj = [NSNumber numberWithLong:actual];
+    } else if (strcmp(type, @encode(long long)) == 0) {
+        long long actual = (long long)va_arg(v, long long);
+        obj = [NSNumber numberWithLongLong:actual];
+    } else if (strcmp(type, @encode(short)) == 0) {
+        short actual = (short)va_arg(v, int);
+        obj = [NSNumber numberWithShort:actual];
+    } else if (strcmp(type, @encode(char)) == 0) {
+        char actual = (char)va_arg(v, int);
+        obj = [NSNumber numberWithChar:actual];
+    } else if (strcmp(type, @encode(bool)) == 0) {
+        bool actual = (bool)va_arg(v, int);
+        obj = [NSNumber numberWithBool:actual];
+    } else if (strcmp(type, @encode(unsigned char)) == 0) {
+        unsigned char actual = (unsigned char)va_arg(v, unsigned int);
+        obj = [NSNumber numberWithUnsignedChar:actual];
+    } else if (strcmp(type, @encode(unsigned int)) == 0) {
+        unsigned int actual = (unsigned int)va_arg(v, unsigned int);
+        obj = [NSNumber numberWithUnsignedInt:actual];
+    } else if (strcmp(type, @encode(unsigned long)) == 0) {
+        unsigned long actual = (unsigned long)va_arg(v, unsigned long);
+        obj = [NSNumber numberWithUnsignedLong:actual];
+    } else if (strcmp(type, @encode(unsigned long long)) == 0) {
+        unsigned long long actual = (unsigned long long)va_arg(v, unsigned long long);
+        obj = [NSNumber numberWithUnsignedLongLong:actual];
+    } else if (strcmp(type, @encode(unsigned short)) == 0) {
+        unsigned short actual = (unsigned short)va_arg(v, unsigned int);
+        obj = [NSNumber numberWithUnsignedShort:actual];
+    }
+    va_end(v);
+    return obj;
+}
+
+#define MASBoxValue(value) _MASBoxValue(@encode(__typeof__((value))), (value))
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASViewAttribute.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASViewAttribute.h
new file mode 100755
index 0000000..601c25d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASViewAttribute.h
@@ -0,0 +1,49 @@
+//
+//  MASViewAttribute.h
+//  Masonry
+//
+//  Created by Jonas Budelmann on 21/07/13.
+//  Copyright (c) 2013 cloudling. All rights reserved.
+//
+
+#import "MASUtilities.h"
+
+/**
+ *  An immutable tuple which stores the view and the related NSLayoutAttribute.
+ *  Describes part of either the left or right hand side of a constraint equation
+ */
+@interface MASViewAttribute : NSObject
+
+/**
+ *  The view which the reciever relates to. Can be nil if item is not a view.
+ */
+@property (nonatomic, weak, readonly) MAS_VIEW *view;
+
+/**
+ *  The item which the reciever relates to.
+ */
+@property (nonatomic, weak, readonly) id item;
+
+/**
+ *  The attribute which the reciever relates to
+ */
+@property (nonatomic, assign, readonly) NSLayoutAttribute layoutAttribute;
+
+/**
+ *  Convenience initializer.
+ */
+- (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute;
+
+/**
+ *  The designated initializer.
+ */
+- (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute;
+
+/**
+ *	Determine whether the layoutAttribute is a size attribute
+ *
+ *	@return	YES if layoutAttribute is equal to NSLayoutAttributeWidth or NSLayoutAttributeHeight
+ */
+- (BOOL)isSizeAttribute;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASViewAttribute.m b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASViewAttribute.m
new file mode 100755
index 0000000..e573e8b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASViewAttribute.m
@@ -0,0 +1,46 @@
+//
+//  MASViewAttribute.m
+//  Masonry
+//
+//  Created by Jonas Budelmann on 21/07/13.
+//  Copyright (c) 2013 cloudling. All rights reserved.
+//
+
+#import "MASViewAttribute.h"
+
+@implementation MASViewAttribute
+
+- (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute {
+    self = [self initWithView:view item:view layoutAttribute:layoutAttribute];
+    return self;
+}
+
+- (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute {
+    self = [super init];
+    if (!self) return nil;
+    
+    _view = view;
+    _item = item;
+    _layoutAttribute = layoutAttribute;
+    
+    return self;
+}
+
+- (BOOL)isSizeAttribute {
+    return self.layoutAttribute == NSLayoutAttributeWidth
+        || self.layoutAttribute == NSLayoutAttributeHeight;
+}
+
+- (BOOL)isEqual:(MASViewAttribute *)viewAttribute {
+    if ([viewAttribute isKindOfClass:self.class]) {
+        return self.view == viewAttribute.view
+            && self.layoutAttribute == viewAttribute.layoutAttribute;
+    }
+    return [super isEqual:viewAttribute];
+}
+
+- (NSUInteger)hash {
+    return MAS_NSUINTROTATE([self.view hash], MAS_NSUINT_BIT / 2) ^ self.layoutAttribute;
+}
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASViewConstraint.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASViewConstraint.h
new file mode 100755
index 0000000..ec390d1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASViewConstraint.h
@@ -0,0 +1,48 @@
+//
+//  MASViewConstraint.h
+//  Masonry
+//
+//  Created by Jonas Budelmann on 20/07/13.
+//  Copyright (c) 2013 cloudling. All rights reserved.
+//
+
+#import "MASViewAttribute.h"
+#import "MASConstraint.h"
+#import "MASLayoutConstraint.h"
+#import "MASUtilities.h"
+
+/**
+ *  A single constraint.
+ *  Contains the attributes neccessary for creating a NSLayoutConstraint and adding it to the appropriate view
+ */
+@interface MASViewConstraint : MASConstraint <NSCopying>
+
+/**
+ *	First item/view and first attribute of the NSLayoutConstraint
+ */
+@property (nonatomic, strong, readonly) MASViewAttribute *firstViewAttribute;
+
+/**
+ *	Second item/view and second attribute of the NSLayoutConstraint
+ */
+@property (nonatomic, strong, readonly) MASViewAttribute *secondViewAttribute;
+
+/**
+ *	initialises the MASViewConstraint with the first part of the equation
+ *
+ *	@param	firstViewAttribute	view.mas_left, view.mas_width etc.
+ *
+ *	@return	a new view constraint
+ */
+- (id)initWithFirstViewAttribute:(MASViewAttribute *)firstViewAttribute;
+
+/**
+ *  Returns all MASViewConstraints installed with this view as a first item.
+ *
+ *  @param  view  A view to retrieve constraints for.
+ *
+ *  @return An array of MASViewConstraints.
+ */
++ (NSArray *)installedConstraintsForView:(MAS_VIEW *)view;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASViewConstraint.m b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASViewConstraint.m
new file mode 100755
index 0000000..173eec1
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/MASViewConstraint.m
@@ -0,0 +1,401 @@
+//
+//  MASViewConstraint.m
+//  Masonry
+//
+//  Created by Jonas Budelmann on 20/07/13.
+//  Copyright (c) 2013 cloudling. All rights reserved.
+//
+
+#import "MASViewConstraint.h"
+#import "MASConstraint+Private.h"
+#import "MASCompositeConstraint.h"
+#import "MASLayoutConstraint.h"
+#import "View+MASAdditions.h"
+#import <objc/runtime.h>
+
+@interface MAS_VIEW (MASConstraints)
+
+@property (nonatomic, readonly) NSMutableSet *mas_installedConstraints;
+
+@end
+
+@implementation MAS_VIEW (MASConstraints)
+
+static char kInstalledConstraintsKey;
+
+- (NSMutableSet *)mas_installedConstraints {
+    NSMutableSet *constraints = objc_getAssociatedObject(self, &kInstalledConstraintsKey);
+    if (!constraints) {
+        constraints = [NSMutableSet set];
+        objc_setAssociatedObject(self, &kInstalledConstraintsKey, constraints, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+    }
+    return constraints;
+}
+
+@end
+
+
+@interface MASViewConstraint ()
+
+@property (nonatomic, strong, readwrite) MASViewAttribute *secondViewAttribute;
+@property (nonatomic, weak) MAS_VIEW *installedView;
+@property (nonatomic, weak) MASLayoutConstraint *layoutConstraint;
+@property (nonatomic, assign) NSLayoutRelation layoutRelation;
+@property (nonatomic, assign) MASLayoutPriority layoutPriority;
+@property (nonatomic, assign) CGFloat layoutMultiplier;
+@property (nonatomic, assign) CGFloat layoutConstant;
+@property (nonatomic, assign) BOOL hasLayoutRelation;
+@property (nonatomic, strong) id mas_key;
+@property (nonatomic, assign) BOOL useAnimator;
+
+@end
+
+@implementation MASViewConstraint
+
+- (id)initWithFirstViewAttribute:(MASViewAttribute *)firstViewAttribute {
+    self = [super init];
+    if (!self) return nil;
+    
+    _firstViewAttribute = firstViewAttribute;
+    self.layoutPriority = MASLayoutPriorityRequired;
+    self.layoutMultiplier = 1;
+    
+    return self;
+}
+
+#pragma mark - NSCoping
+
+- (id)copyWithZone:(NSZone __unused *)zone {
+    MASViewConstraint *constraint = [[MASViewConstraint alloc] initWithFirstViewAttribute:self.firstViewAttribute];
+    constraint.layoutConstant = self.layoutConstant;
+    constraint.layoutRelation = self.layoutRelation;
+    constraint.layoutPriority = self.layoutPriority;
+    constraint.layoutMultiplier = self.layoutMultiplier;
+    constraint.delegate = self.delegate;
+    return constraint;
+}
+
+#pragma mark - Public
+
++ (NSArray *)installedConstraintsForView:(MAS_VIEW *)view {
+    return [view.mas_installedConstraints allObjects];
+}
+
+#pragma mark - Private
+
+- (void)setLayoutConstant:(CGFloat)layoutConstant {
+    _layoutConstant = layoutConstant;
+
+#if TARGET_OS_MAC && !(TARGET_OS_IPHONE || TARGET_OS_TV)
+    if (self.useAnimator) {
+        [self.layoutConstraint.animator setConstant:layoutConstant];
+    } else {
+        self.layoutConstraint.constant = layoutConstant;
+    }
+#else
+    self.layoutConstraint.constant = layoutConstant;
+#endif
+}
+
+- (void)setLayoutRelation:(NSLayoutRelation)layoutRelation {
+    _layoutRelation = layoutRelation;
+    self.hasLayoutRelation = YES;
+}
+
+- (BOOL)supportsActiveProperty {
+    return [self.layoutConstraint respondsToSelector:@selector(isActive)];
+}
+
+- (BOOL)isActive {
+    BOOL active = YES;
+    if ([self supportsActiveProperty]) {
+        active = [self.layoutConstraint isActive];
+    }
+
+    return active;
+}
+
+- (BOOL)hasBeenInstalled {
+    return (self.layoutConstraint != nil) && [self isActive];
+}
+
+- (void)setSecondViewAttribute:(id)secondViewAttribute {
+    if ([secondViewAttribute isKindOfClass:NSValue.class]) {
+        [self setLayoutConstantWithValue:secondViewAttribute];
+    } else if ([secondViewAttribute isKindOfClass:MAS_VIEW.class]) {
+        _secondViewAttribute = [[MASViewAttribute alloc] initWithView:secondViewAttribute layoutAttribute:self.firstViewAttribute.layoutAttribute];
+    } else if ([secondViewAttribute isKindOfClass:MASViewAttribute.class]) {
+        _secondViewAttribute = secondViewAttribute;
+    } else {
+        NSAssert(NO, @"attempting to add unsupported attribute: %@", secondViewAttribute);
+    }
+}
+
+#pragma mark - NSLayoutConstraint multiplier proxies
+
+- (MASConstraint * (^)(CGFloat))multipliedBy {
+    return ^id(CGFloat multiplier) {
+        NSAssert(!self.hasBeenInstalled,
+                 @"Cannot modify constraint multiplier after it has been installed");
+        
+        self.layoutMultiplier = multiplier;
+        return self;
+    };
+}
+
+
+- (MASConstraint * (^)(CGFloat))dividedBy {
+    return ^id(CGFloat divider) {
+        NSAssert(!self.hasBeenInstalled,
+                 @"Cannot modify constraint multiplier after it has been installed");
+
+        self.layoutMultiplier = 1.0/divider;
+        return self;
+    };
+}
+
+#pragma mark - MASLayoutPriority proxy
+
+- (MASConstraint * (^)(MASLayoutPriority))priority {
+    return ^id(MASLayoutPriority priority) {
+        NSAssert(!self.hasBeenInstalled,
+                 @"Cannot modify constraint priority after it has been installed");
+        
+        self.layoutPriority = priority;
+        return self;
+    };
+}
+
+#pragma mark - NSLayoutRelation proxy
+
+- (MASConstraint * (^)(id, NSLayoutRelation))equalToWithRelation {
+    return ^id(id attribute, NSLayoutRelation relation) {
+        if ([attribute isKindOfClass:NSArray.class]) {
+            NSAssert(!self.hasLayoutRelation, @"Redefinition of constraint relation");
+            NSMutableArray *children = NSMutableArray.new;
+            for (id attr in attribute) {
+                MASViewConstraint *viewConstraint = [self copy];
+                viewConstraint.layoutRelation = relation;
+                viewConstraint.secondViewAttribute = attr;
+                [children addObject:viewConstraint];
+            }
+            MASCompositeConstraint *compositeConstraint = [[MASCompositeConstraint alloc] initWithChildren:children];
+            compositeConstraint.delegate = self.delegate;
+            [self.delegate constraint:self shouldBeReplacedWithConstraint:compositeConstraint];
+            return compositeConstraint;
+        } else {
+            NSAssert(!self.hasLayoutRelation || self.layoutRelation == relation && [attribute isKindOfClass:NSValue.class], @"Redefinition of constraint relation");
+            self.layoutRelation = relation;
+            self.secondViewAttribute = attribute;
+            return self;
+        }
+    };
+}
+
+#pragma mark - Semantic properties
+
+- (MASConstraint *)with {
+    return self;
+}
+
+- (MASConstraint *)and {
+    return self;
+}
+
+#pragma mark - attribute chaining
+
+- (MASConstraint *)addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute {
+    NSAssert(!self.hasLayoutRelation, @"Attributes should be chained before defining the constraint relation");
+
+    return [self.delegate constraint:self addConstraintWithLayoutAttribute:layoutAttribute];
+}
+
+#pragma mark - Animator proxy
+
+#if TARGET_OS_MAC && !(TARGET_OS_IPHONE || TARGET_OS_TV)
+
+- (MASConstraint *)animator {
+    self.useAnimator = YES;
+    return self;
+}
+
+#endif
+
+#pragma mark - debug helpers
+
+- (MASConstraint * (^)(id))key {
+    return ^id(id key) {
+        self.mas_key = key;
+        return self;
+    };
+}
+
+#pragma mark - NSLayoutConstraint constant setters
+
+- (void)setInsets:(MASEdgeInsets)insets {
+    NSLayoutAttribute layoutAttribute = self.firstViewAttribute.layoutAttribute;
+    switch (layoutAttribute) {
+        case NSLayoutAttributeLeft:
+        case NSLayoutAttributeLeading:
+            self.layoutConstant = insets.left;
+            break;
+        case NSLayoutAttributeTop:
+            self.layoutConstant = insets.top;
+            break;
+        case NSLayoutAttributeBottom:
+            self.layoutConstant = -insets.bottom;
+            break;
+        case NSLayoutAttributeRight:
+        case NSLayoutAttributeTrailing:
+            self.layoutConstant = -insets.right;
+            break;
+        default:
+            break;
+    }
+}
+
+- (void)setInset:(CGFloat)inset {
+    [self setInsets:(MASEdgeInsets){.top = inset, .left = inset, .bottom = inset, .right = inset}];
+}
+
+- (void)setOffset:(CGFloat)offset {
+    self.layoutConstant = offset;
+}
+
+- (void)setSizeOffset:(CGSize)sizeOffset {
+    NSLayoutAttribute layoutAttribute = self.firstViewAttribute.layoutAttribute;
+    switch (layoutAttribute) {
+        case NSLayoutAttributeWidth:
+            self.layoutConstant = sizeOffset.width;
+            break;
+        case NSLayoutAttributeHeight:
+            self.layoutConstant = sizeOffset.height;
+            break;
+        default:
+            break;
+    }
+}
+
+- (void)setCenterOffset:(CGPoint)centerOffset {
+    NSLayoutAttribute layoutAttribute = self.firstViewAttribute.layoutAttribute;
+    switch (layoutAttribute) {
+        case NSLayoutAttributeCenterX:
+            self.layoutConstant = centerOffset.x;
+            break;
+        case NSLayoutAttributeCenterY:
+            self.layoutConstant = centerOffset.y;
+            break;
+        default:
+            break;
+    }
+}
+
+#pragma mark - MASConstraint
+
+- (void)activate {
+    [self install];
+}
+
+- (void)deactivate {
+    [self uninstall];
+}
+
+- (void)install {
+    if (self.hasBeenInstalled) {
+        return;
+    }
+    
+    if ([self supportsActiveProperty] && self.layoutConstraint) {
+        self.layoutConstraint.active = YES;
+        [self.firstViewAttribute.view.mas_installedConstraints addObject:self];
+        return;
+    }
+    
+    MAS_VIEW *firstLayoutItem = self.firstViewAttribute.item;
+    NSLayoutAttribute firstLayoutAttribute = self.firstViewAttribute.layoutAttribute;
+    MAS_VIEW *secondLayoutItem = self.secondViewAttribute.item;
+    NSLayoutAttribute secondLayoutAttribute = self.secondViewAttribute.layoutAttribute;
+
+    // alignment attributes must have a secondViewAttribute
+    // therefore we assume that is refering to superview
+    // eg make.left.equalTo(@10)
+    if (!self.firstViewAttribute.isSizeAttribute && !self.secondViewAttribute) {
+        secondLayoutItem = self.firstViewAttribute.view.superview;
+        secondLayoutAttribute = firstLayoutAttribute;
+    }
+    
+    MASLayoutConstraint *layoutConstraint
+        = [MASLayoutConstraint constraintWithItem:firstLayoutItem
+                                        attribute:firstLayoutAttribute
+                                        relatedBy:self.layoutRelation
+                                           toItem:secondLayoutItem
+                                        attribute:secondLayoutAttribute
+                                       multiplier:self.layoutMultiplier
+                                         constant:self.layoutConstant];
+    
+    layoutConstraint.priority = self.layoutPriority;
+    layoutConstraint.mas_key = self.mas_key;
+    
+    if (self.secondViewAttribute.view) {
+        MAS_VIEW *closestCommonSuperview = [self.firstViewAttribute.view mas_closestCommonSuperview:self.secondViewAttribute.view];
+        NSAssert(closestCommonSuperview,
+                 @"couldn't find a common superview for %@ and %@",
+                 self.firstViewAttribute.view, self.secondViewAttribute.view);
+        self.installedView = closestCommonSuperview;
+    } else if (self.firstViewAttribute.isSizeAttribute) {
+        self.installedView = self.firstViewAttribute.view;
+    } else {
+        self.installedView = self.firstViewAttribute.view.superview;
+    }
+
+
+    MASLayoutConstraint *existingConstraint = nil;
+    if (self.updateExisting) {
+        existingConstraint = [self layoutConstraintSimilarTo:layoutConstraint];
+    }
+    if (existingConstraint) {
+        // just update the constant
+        existingConstraint.constant = layoutConstraint.constant;
+        self.layoutConstraint = existingConstraint;
+    } else {
+        [self.installedView addConstraint:layoutConstraint];
+        self.layoutConstraint = layoutConstraint;
+        [firstLayoutItem.mas_installedConstraints addObject:self];
+    }
+}
+
+- (MASLayoutConstraint *)layoutConstraintSimilarTo:(MASLayoutConstraint *)layoutConstraint {
+    // check if any constraints are the same apart from the only mutable property constant
+
+    // go through constraints in reverse as we do not want to match auto-resizing or interface builder constraints
+    // and they are likely to be added first.
+    for (NSLayoutConstraint *existingConstraint in self.installedView.constraints.reverseObjectEnumerator) {
+        if (![existingConstraint isKindOfClass:MASLayoutConstraint.class]) continue;
+        if (existingConstraint.firstItem != layoutConstraint.firstItem) continue;
+        if (existingConstraint.secondItem != layoutConstraint.secondItem) continue;
+        if (existingConstraint.firstAttribute != layoutConstraint.firstAttribute) continue;
+        if (existingConstraint.secondAttribute != layoutConstraint.secondAttribute) continue;
+        if (existingConstraint.relation != layoutConstraint.relation) continue;
+        if (existingConstraint.multiplier != layoutConstraint.multiplier) continue;
+        if (existingConstraint.priority != layoutConstraint.priority) continue;
+
+        return (id)existingConstraint;
+    }
+    return nil;
+}
+
+- (void)uninstall {
+    if ([self supportsActiveProperty]) {
+        self.layoutConstraint.active = NO;
+        [self.firstViewAttribute.view.mas_installedConstraints removeObject:self];
+        return;
+    }
+    
+    [self.installedView removeConstraint:self.layoutConstraint];
+    self.layoutConstraint = nil;
+    self.installedView = nil;
+    
+    [self.firstViewAttribute.view.mas_installedConstraints removeObject:self];
+}
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/Masonry.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/Masonry.h
new file mode 100755
index 0000000..d1bd579
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/Masonry.h
@@ -0,0 +1,29 @@
+//
+//  Masonry.h
+//  Masonry
+//
+//  Created by Jonas Budelmann on 20/07/13.
+//  Copyright (c) 2013 cloudling. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+//! Project version number for Masonry.
+FOUNDATION_EXPORT double MasonryVersionNumber;
+
+//! Project version string for Masonry.
+FOUNDATION_EXPORT const unsigned char MasonryVersionString[];
+
+#import "MASUtilities.h"
+#import "View+MASAdditions.h"
+#import "View+MASShorthandAdditions.h"
+#import "ViewController+MASAdditions.h"
+#import "NSArray+MASAdditions.h"
+#import "NSArray+MASShorthandAdditions.h"
+#import "MASConstraint.h"
+#import "MASCompositeConstraint.h"
+#import "MASViewAttribute.h"
+#import "MASViewConstraint.h"
+#import "MASConstraintMaker.h"
+#import "MASLayoutConstraint.h"
+#import "NSLayoutConstraint+MASDebugAdditions.h"
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/NSArray+MASAdditions.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/NSArray+MASAdditions.h
new file mode 100755
index 0000000..587618d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/NSArray+MASAdditions.h
@@ -0,0 +1,72 @@
+//
+//  NSArray+MASAdditions.h
+//
+//
+//  Created by Daniel Hammond on 11/26/13.
+//
+//
+
+#import "MASUtilities.h"
+#import "MASConstraintMaker.h"
+#import "MASViewAttribute.h"
+
+typedef NS_ENUM(NSUInteger, MASAxisType) {
+    MASAxisTypeHorizontal,
+    MASAxisTypeVertical
+};
+
+@interface NSArray (MASAdditions)
+
+/**
+ *  Creates a MASConstraintMaker with each view in the callee.
+ *  Any constraints defined are added to the view or the appropriate superview once the block has finished executing on each view
+ *
+ *  @param block scope within which you can build up the constraints which you wish to apply to each view.
+ *
+ *  @return Array of created MASConstraints
+ */
+- (NSArray *)mas_makeConstraints:(void (NS_NOESCAPE ^)(MASConstraintMaker *make))block;
+
+/**
+ *  Creates a MASConstraintMaker with each view in the callee.
+ *  Any constraints defined are added to each view or the appropriate superview once the block has finished executing on each view.
+ *  If an existing constraint exists then it will be updated instead.
+ *
+ *  @param block scope within which you can build up the constraints which you wish to apply to each view.
+ *
+ *  @return Array of created/updated MASConstraints
+ */
+- (NSArray *)mas_updateConstraints:(void (NS_NOESCAPE ^)(MASConstraintMaker *make))block;
+
+/**
+ *  Creates a MASConstraintMaker with each view in the callee.
+ *  Any constraints defined are added to each view or the appropriate superview once the block has finished executing on each view.
+ *  All constraints previously installed for the views will be removed.
+ *
+ *  @param block scope within which you can build up the constraints which you wish to apply to each view.
+ *
+ *  @return Array of created/updated MASConstraints
+ */
+- (NSArray *)mas_remakeConstraints:(void (NS_NOESCAPE ^)(MASConstraintMaker *make))block;
+
+/**
+ *  distribute with fixed spacing
+ *
+ *  @param axisType     which axis to distribute items along
+ *  @param fixedSpacing the spacing between each item
+ *  @param leadSpacing  the spacing before the first item and the container
+ *  @param tailSpacing  the spacing after the last item and the container
+ */
+- (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedSpacing:(CGFloat)fixedSpacing leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing;
+
+/**
+ *  distribute with fixed item size
+ *
+ *  @param axisType        which axis to distribute items along
+ *  @param fixedItemLength the fixed length of each item
+ *  @param leadSpacing     the spacing before the first item and the container
+ *  @param tailSpacing     the spacing after the last item and the container
+ */
+- (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedItemLength:(CGFloat)fixedItemLength leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/NSArray+MASAdditions.m b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/NSArray+MASAdditions.m
new file mode 100755
index 0000000..831d8cd
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/NSArray+MASAdditions.m
@@ -0,0 +1,162 @@
+//
+//  NSArray+MASAdditions.m
+//  
+//
+//  Created by Daniel Hammond on 11/26/13.
+//
+//
+
+#import "NSArray+MASAdditions.h"
+#import "View+MASAdditions.h"
+
+@implementation NSArray (MASAdditions)
+
+- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *make))block {
+    NSMutableArray *constraints = [NSMutableArray array];
+    for (MAS_VIEW *view in self) {
+        NSAssert([view isKindOfClass:[MAS_VIEW class]], @"All objects in the array must be views");
+        [constraints addObjectsFromArray:[view mas_makeConstraints:block]];
+    }
+    return constraints;
+}
+
+- (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *make))block {
+    NSMutableArray *constraints = [NSMutableArray array];
+    for (MAS_VIEW *view in self) {
+        NSAssert([view isKindOfClass:[MAS_VIEW class]], @"All objects in the array must be views");
+        [constraints addObjectsFromArray:[view mas_updateConstraints:block]];
+    }
+    return constraints;
+}
+
+- (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block {
+    NSMutableArray *constraints = [NSMutableArray array];
+    for (MAS_VIEW *view in self) {
+        NSAssert([view isKindOfClass:[MAS_VIEW class]], @"All objects in the array must be views");
+        [constraints addObjectsFromArray:[view mas_remakeConstraints:block]];
+    }
+    return constraints;
+}
+
+- (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedSpacing:(CGFloat)fixedSpacing leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing {
+    if (self.count < 2) {
+        NSAssert(self.count>1,@"views to distribute need to bigger than one");
+        return;
+    }
+    
+    MAS_VIEW *tempSuperView = [self mas_commonSuperviewOfViews];
+    if (axisType == MASAxisTypeHorizontal) {
+        MAS_VIEW *prev;
+        for (int i = 0; i < self.count; i++) {
+            MAS_VIEW *v = self[i];
+            [v mas_makeConstraints:^(MASConstraintMaker *make) {
+                if (prev) {
+                    make.width.equalTo(prev);
+                    make.left.equalTo(prev.mas_right).offset(fixedSpacing);
+                    if (i == self.count - 1) {//last one
+                        make.right.equalTo(tempSuperView).offset(-tailSpacing);
+                    }
+                }
+                else {//first one
+                    make.left.equalTo(tempSuperView).offset(leadSpacing);
+                }
+                
+            }];
+            prev = v;
+        }
+    }
+    else {
+        MAS_VIEW *prev;
+        for (int i = 0; i < self.count; i++) {
+            MAS_VIEW *v = self[i];
+            [v mas_makeConstraints:^(MASConstraintMaker *make) {
+                if (prev) {
+                    make.height.equalTo(prev);
+                    make.top.equalTo(prev.mas_bottom).offset(fixedSpacing);
+                    if (i == self.count - 1) {//last one
+                        make.bottom.equalTo(tempSuperView).offset(-tailSpacing);
+                    }                    
+                }
+                else {//first one
+                    make.top.equalTo(tempSuperView).offset(leadSpacing);
+                }
+                
+            }];
+            prev = v;
+        }
+    }
+}
+
+- (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedItemLength:(CGFloat)fixedItemLength leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing {
+    if (self.count < 2) {
+        NSAssert(self.count>1,@"views to distribute need to bigger than one");
+        return;
+    }
+    
+    MAS_VIEW *tempSuperView = [self mas_commonSuperviewOfViews];
+    if (axisType == MASAxisTypeHorizontal) {
+        MAS_VIEW *prev;
+        for (int i = 0; i < self.count; i++) {
+            MAS_VIEW *v = self[i];
+            [v mas_makeConstraints:^(MASConstraintMaker *make) {
+                make.width.equalTo(@(fixedItemLength));
+                if (prev) {
+                    if (i == self.count - 1) {//last one
+                        make.right.equalTo(tempSuperView).offset(-tailSpacing);
+                    }
+                    else {
+                        CGFloat offset = (1-(i/((CGFloat)self.count-1)))*(fixedItemLength+leadSpacing)-i*tailSpacing/(((CGFloat)self.count-1));
+                        make.right.equalTo(tempSuperView).multipliedBy(i/((CGFloat)self.count-1)).with.offset(offset);
+                    }
+                }
+                else {//first one
+                    make.left.equalTo(tempSuperView).offset(leadSpacing);
+                }
+            }];
+            prev = v;
+        }
+    }
+    else {
+        MAS_VIEW *prev;
+        for (int i = 0; i < self.count; i++) {
+            MAS_VIEW *v = self[i];
+            [v mas_makeConstraints:^(MASConstraintMaker *make) {
+                make.height.equalTo(@(fixedItemLength));
+                if (prev) {
+                    if (i == self.count - 1) {//last one
+                        make.bottom.equalTo(tempSuperView).offset(-tailSpacing);
+                    }
+                    else {
+                        CGFloat offset = (1-(i/((CGFloat)self.count-1)))*(fixedItemLength+leadSpacing)-i*tailSpacing/(((CGFloat)self.count-1));
+                        make.bottom.equalTo(tempSuperView).multipliedBy(i/((CGFloat)self.count-1)).with.offset(offset);
+                    }
+                }
+                else {//first one
+                    make.top.equalTo(tempSuperView).offset(leadSpacing);
+                }
+            }];
+            prev = v;
+        }
+    }
+}
+
+- (MAS_VIEW *)mas_commonSuperviewOfViews
+{
+    MAS_VIEW *commonSuperview = nil;
+    MAS_VIEW *previousView = nil;
+    for (id object in self) {
+        if ([object isKindOfClass:[MAS_VIEW class]]) {
+            MAS_VIEW *view = (MAS_VIEW *)object;
+            if (previousView) {
+                commonSuperview = [view mas_closestCommonSuperview:commonSuperview];
+            } else {
+                commonSuperview = view;
+            }
+            previousView = view;
+        }
+    }
+    NSAssert(commonSuperview, @"Can't constrain views that do not share a common superview. Make sure that all the views in this array have been added into the same view hierarchy.");
+    return commonSuperview;
+}
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/NSArray+MASShorthandAdditions.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/NSArray+MASShorthandAdditions.h
new file mode 100755
index 0000000..8b47369
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/NSArray+MASShorthandAdditions.h
@@ -0,0 +1,41 @@
+//
+//  NSArray+MASShorthandAdditions.h
+//  Masonry
+//
+//  Created by Jonas Budelmann on 22/07/13.
+//  Copyright (c) 2013 Jonas Budelmann. All rights reserved.
+//
+
+#import "NSArray+MASAdditions.h"
+
+#ifdef MAS_SHORTHAND
+
+/**
+ *	Shorthand array additions without the 'mas_' prefixes,
+ *  only enabled if MAS_SHORTHAND is defined
+ */
+@interface NSArray (MASShorthandAdditions)
+
+- (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *make))block;
+- (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *make))block;
+- (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *make))block;
+
+@end
+
+@implementation NSArray (MASShorthandAdditions)
+
+- (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *))block {
+    return [self mas_makeConstraints:block];
+}
+
+- (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *))block {
+    return [self mas_updateConstraints:block];
+}
+
+- (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *))block {
+    return [self mas_remakeConstraints:block];
+}
+
+@end
+
+#endif
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/NSLayoutConstraint+MASDebugAdditions.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/NSLayoutConstraint+MASDebugAdditions.h
new file mode 100755
index 0000000..1279b4f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/NSLayoutConstraint+MASDebugAdditions.h
@@ -0,0 +1,16 @@
+//
+//  NSLayoutConstraint+MASDebugAdditions.h
+//  Masonry
+//
+//  Created by Jonas Budelmann on 3/08/13.
+//  Copyright (c) 2013 Jonas Budelmann. All rights reserved.
+//
+
+#import "MASUtilities.h"
+
+/**
+ *	makes debug and log output of NSLayoutConstraints more readable
+ */
+@interface NSLayoutConstraint (MASDebugAdditions)
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/NSLayoutConstraint+MASDebugAdditions.m b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/NSLayoutConstraint+MASDebugAdditions.m
new file mode 100755
index 0000000..ab539a2
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/NSLayoutConstraint+MASDebugAdditions.m
@@ -0,0 +1,146 @@
+//
+//  NSLayoutConstraint+MASDebugAdditions.m
+//  Masonry
+//
+//  Created by Jonas Budelmann on 3/08/13.
+//  Copyright (c) 2013 Jonas Budelmann. All rights reserved.
+//
+
+#import "NSLayoutConstraint+MASDebugAdditions.h"
+#import "MASConstraint.h"
+#import "MASLayoutConstraint.h"
+
+@implementation NSLayoutConstraint (MASDebugAdditions)
+
+#pragma mark - description maps
+
++ (NSDictionary *)layoutRelationDescriptionsByValue {
+    static dispatch_once_t once;
+    static NSDictionary *descriptionMap;
+    dispatch_once(&once, ^{
+        descriptionMap = @{
+            @(NSLayoutRelationEqual)                : @"==",
+            @(NSLayoutRelationGreaterThanOrEqual)   : @">=",
+            @(NSLayoutRelationLessThanOrEqual)      : @"<=",
+        };
+    });
+    return descriptionMap;
+}
+
++ (NSDictionary *)layoutAttributeDescriptionsByValue {
+    static dispatch_once_t once;
+    static NSDictionary *descriptionMap;
+    dispatch_once(&once, ^{
+        descriptionMap = @{
+            @(NSLayoutAttributeTop)      : @"top",
+            @(NSLayoutAttributeLeft)     : @"left",
+            @(NSLayoutAttributeBottom)   : @"bottom",
+            @(NSLayoutAttributeRight)    : @"right",
+            @(NSLayoutAttributeLeading)  : @"leading",
+            @(NSLayoutAttributeTrailing) : @"trailing",
+            @(NSLayoutAttributeWidth)    : @"width",
+            @(NSLayoutAttributeHeight)   : @"height",
+            @(NSLayoutAttributeCenterX)  : @"centerX",
+            @(NSLayoutAttributeCenterY)  : @"centerY",
+            @(NSLayoutAttributeBaseline) : @"baseline",
+            
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
+            @(NSLayoutAttributeFirstBaseline) : @"firstBaseline",
+            @(NSLayoutAttributeLastBaseline) : @"lastBaseline",
+#endif
+            
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000)
+            @(NSLayoutAttributeLeftMargin)           : @"leftMargin",
+            @(NSLayoutAttributeRightMargin)          : @"rightMargin",
+            @(NSLayoutAttributeTopMargin)            : @"topMargin",
+            @(NSLayoutAttributeBottomMargin)         : @"bottomMargin",
+            @(NSLayoutAttributeLeadingMargin)        : @"leadingMargin",
+            @(NSLayoutAttributeTrailingMargin)       : @"trailingMargin",
+            @(NSLayoutAttributeCenterXWithinMargins) : @"centerXWithinMargins",
+            @(NSLayoutAttributeCenterYWithinMargins) : @"centerYWithinMargins",
+#endif
+            
+        };
+    
+    });
+    return descriptionMap;
+}
+
+
++ (NSDictionary *)layoutPriorityDescriptionsByValue {
+    static dispatch_once_t once;
+    static NSDictionary *descriptionMap;
+    dispatch_once(&once, ^{
+#if TARGET_OS_IPHONE || TARGET_OS_TV
+        descriptionMap = @{
+            @(MASLayoutPriorityDefaultHigh)      : @"high",
+            @(MASLayoutPriorityDefaultLow)       : @"low",
+            @(MASLayoutPriorityDefaultMedium)    : @"medium",
+            @(MASLayoutPriorityRequired)         : @"required",
+            @(MASLayoutPriorityFittingSizeLevel) : @"fitting size",
+        };
+#elif TARGET_OS_MAC
+        descriptionMap = @{
+            @(MASLayoutPriorityDefaultHigh)                 : @"high",
+            @(MASLayoutPriorityDragThatCanResizeWindow)     : @"drag can resize window",
+            @(MASLayoutPriorityDefaultMedium)               : @"medium",
+            @(MASLayoutPriorityWindowSizeStayPut)           : @"window size stay put",
+            @(MASLayoutPriorityDragThatCannotResizeWindow)  : @"drag cannot resize window",
+            @(MASLayoutPriorityDefaultLow)                  : @"low",
+            @(MASLayoutPriorityFittingSizeCompression)      : @"fitting size",
+            @(MASLayoutPriorityRequired)                    : @"required",
+        };
+#endif
+    });
+    return descriptionMap;
+}
+
+#pragma mark - description override
+
++ (NSString *)descriptionForObject:(id)obj {
+    if ([obj respondsToSelector:@selector(mas_key)] && [obj mas_key]) {
+        return [NSString stringWithFormat:@"%@:%@", [obj class], [obj mas_key]];
+    }
+    return [NSString stringWithFormat:@"%@:%p", [obj class], obj];
+}
+
+- (NSString *)description {
+    NSMutableString *description = [[NSMutableString alloc] initWithString:@"<"];
+
+    [description appendString:[self.class descriptionForObject:self]];
+
+    [description appendFormat:@" %@", [self.class descriptionForObject:self.firstItem]];
+    if (self.firstAttribute != NSLayoutAttributeNotAnAttribute) {
+        [description appendFormat:@".%@", self.class.layoutAttributeDescriptionsByValue[@(self.firstAttribute)]];
+    }
+
+    [description appendFormat:@" %@", self.class.layoutRelationDescriptionsByValue[@(self.relation)]];
+
+    if (self.secondItem) {
+        [description appendFormat:@" %@", [self.class descriptionForObject:self.secondItem]];
+    }
+    if (self.secondAttribute != NSLayoutAttributeNotAnAttribute) {
+        [description appendFormat:@".%@", self.class.layoutAttributeDescriptionsByValue[@(self.secondAttribute)]];
+    }
+    
+    if (self.multiplier != 1) {
+        [description appendFormat:@" * %g", self.multiplier];
+    }
+    
+    if (self.secondAttribute == NSLayoutAttributeNotAnAttribute) {
+        [description appendFormat:@" %g", self.constant];
+    } else {
+        if (self.constant) {
+            [description appendFormat:@" %@ %g", (self.constant < 0 ? @"-" : @"+"), ABS(self.constant)];
+        }
+    }
+
+    if (self.priority != MASLayoutPriorityRequired) {
+        [description appendFormat:@" ^%@", self.class.layoutPriorityDescriptionsByValue[@(self.priority)] ?: [NSNumber numberWithDouble:self.priority]];
+    }
+
+    [description appendString:@">"];
+    return description;
+}
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/View+MASAdditions.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/View+MASAdditions.h
new file mode 100755
index 0000000..f7343d2
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/View+MASAdditions.h
@@ -0,0 +1,111 @@
+//
+//  UIView+MASAdditions.h
+//  Masonry
+//
+//  Created by Jonas Budelmann on 20/07/13.
+//  Copyright (c) 2013 cloudling. All rights reserved.
+//
+
+#import "MASUtilities.h"
+#import "MASConstraintMaker.h"
+#import "MASViewAttribute.h"
+
+/**
+ *	Provides constraint maker block
+ *  and convience methods for creating MASViewAttribute which are view + NSLayoutAttribute pairs
+ */
+@interface MAS_VIEW (MASAdditions)
+
+/**
+ *	following properties return a new MASViewAttribute with current view and appropriate NSLayoutAttribute
+ */
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_left;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_top;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_right;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_bottom;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_leading;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_trailing;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_width;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_height;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_centerX;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_centerY;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_baseline;
+@property (nonatomic, strong, readonly) MASViewAttribute *(^mas_attribute)(NSLayoutAttribute attr);
+
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
+
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_firstBaseline;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_lastBaseline;
+
+#endif
+
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000)
+
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_leftMargin;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_rightMargin;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_topMargin;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomMargin;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_leadingMargin;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_trailingMargin;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_centerXWithinMargins;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_centerYWithinMargins;
+
+#endif
+
+#if (__IPHONE_OS_VERSION_MAX_ALLOWED >= 110000) || (__TV_OS_VERSION_MAX_ALLOWED >= 110000)
+
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuide API_AVAILABLE(ios(11.0),tvos(11.0));
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideTop API_AVAILABLE(ios(11.0),tvos(11.0));
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideBottom API_AVAILABLE(ios(11.0),tvos(11.0));
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideLeft API_AVAILABLE(ios(11.0),tvos(11.0));
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_safeAreaLayoutGuideRight API_AVAILABLE(ios(11.0),tvos(11.0));
+
+#endif
+
+/**
+ *	a key to associate with this view
+ */
+@property (nonatomic, strong) id mas_key;
+
+/**
+ *	Finds the closest common superview between this view and another view
+ *
+ *	@param	view	other view
+ *
+ *	@return	returns nil if common superview could not be found
+ */
+- (instancetype)mas_closestCommonSuperview:(MAS_VIEW *)view;
+
+/**
+ *  Creates a MASConstraintMaker with the callee view.
+ *  Any constraints defined are added to the view or the appropriate superview once the block has finished executing
+ *
+ *  @param block scope within which you can build up the constraints which you wish to apply to the view.
+ *
+ *  @return Array of created MASConstraints
+ */
+- (NSArray *)mas_makeConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *make))block;
+
+/**
+ *  Creates a MASConstraintMaker with the callee view.
+ *  Any constraints defined are added to the view or the appropriate superview once the block has finished executing.
+ *  If an existing constraint exists then it will be updated instead.
+ *
+ *  @param block scope within which you can build up the constraints which you wish to apply to the view.
+ *
+ *  @return Array of created/updated MASConstraints
+ */
+- (NSArray *)mas_updateConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *make))block;
+
+/**
+ *  Creates a MASConstraintMaker with the callee view.
+ *  Any constraints defined are added to the view or the appropriate superview once the block has finished executing.
+ *  All constraints previously installed for the view will be removed.
+ *
+ *  @param block scope within which you can build up the constraints which you wish to apply to the view.
+ *
+ *  @return Array of created/updated MASConstraints
+ */
+- (NSArray *)mas_remakeConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *make))block;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/View+MASAdditions.m b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/View+MASAdditions.m
new file mode 100755
index 0000000..4fa07b4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/View+MASAdditions.m
@@ -0,0 +1,186 @@
+//
+//  UIView+MASAdditions.m
+//  Masonry
+//
+//  Created by Jonas Budelmann on 20/07/13.
+//  Copyright (c) 2013 cloudling. All rights reserved.
+//
+
+#import "View+MASAdditions.h"
+#import <objc/runtime.h>
+
+@implementation MAS_VIEW (MASAdditions)
+
+- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *))block {
+    self.translatesAutoresizingMaskIntoConstraints = NO;
+    MASConstraintMaker *constraintMaker = [[MASConstraintMaker alloc] initWithView:self];
+    block(constraintMaker);
+    return [constraintMaker install];
+}
+
+- (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *))block {
+    self.translatesAutoresizingMaskIntoConstraints = NO;
+    MASConstraintMaker *constraintMaker = [[MASConstraintMaker alloc] initWithView:self];
+    constraintMaker.updateExisting = YES;
+    block(constraintMaker);
+    return [constraintMaker install];
+}
+
+- (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block {
+    self.translatesAutoresizingMaskIntoConstraints = NO;
+    MASConstraintMaker *constraintMaker = [[MASConstraintMaker alloc] initWithView:self];
+    constraintMaker.removeExisting = YES;
+    block(constraintMaker);
+    return [constraintMaker install];
+}
+
+#pragma mark - NSLayoutAttribute properties
+
+- (MASViewAttribute *)mas_left {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeLeft];
+}
+
+- (MASViewAttribute *)mas_top {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeTop];
+}
+
+- (MASViewAttribute *)mas_right {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeRight];
+}
+
+- (MASViewAttribute *)mas_bottom {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeBottom];
+}
+
+- (MASViewAttribute *)mas_leading {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeLeading];
+}
+
+- (MASViewAttribute *)mas_trailing {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeTrailing];
+}
+
+- (MASViewAttribute *)mas_width {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeWidth];
+}
+
+- (MASViewAttribute *)mas_height {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeHeight];
+}
+
+- (MASViewAttribute *)mas_centerX {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeCenterX];
+}
+
+- (MASViewAttribute *)mas_centerY {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeCenterY];
+}
+
+- (MASViewAttribute *)mas_baseline {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeBaseline];
+}
+
+- (MASViewAttribute *(^)(NSLayoutAttribute))mas_attribute
+{
+    return ^(NSLayoutAttribute attr) {
+        return [[MASViewAttribute alloc] initWithView:self layoutAttribute:attr];
+    };
+}
+
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
+
+- (MASViewAttribute *)mas_firstBaseline {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeFirstBaseline];
+}
+- (MASViewAttribute *)mas_lastBaseline {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeLastBaseline];
+}
+
+#endif
+
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000)
+
+- (MASViewAttribute *)mas_leftMargin {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeLeftMargin];
+}
+
+- (MASViewAttribute *)mas_rightMargin {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeRightMargin];
+}
+
+- (MASViewAttribute *)mas_topMargin {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeTopMargin];
+}
+
+- (MASViewAttribute *)mas_bottomMargin {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeBottomMargin];
+}
+
+- (MASViewAttribute *)mas_leadingMargin {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeLeadingMargin];
+}
+
+- (MASViewAttribute *)mas_trailingMargin {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeTrailingMargin];
+}
+
+- (MASViewAttribute *)mas_centerXWithinMargins {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeCenterXWithinMargins];
+}
+
+- (MASViewAttribute *)mas_centerYWithinMargins {
+    return [[MASViewAttribute alloc] initWithView:self layoutAttribute:NSLayoutAttributeCenterYWithinMargins];
+}
+
+#endif
+
+#if (__IPHONE_OS_VERSION_MAX_ALLOWED >= 110000) || (__TV_OS_VERSION_MAX_ALLOWED >= 110000)
+
+- (MASViewAttribute *)mas_safeAreaLayoutGuide {
+    return [[MASViewAttribute alloc] initWithView:self item:self.safeAreaLayoutGuide layoutAttribute:NSLayoutAttributeBottom];
+}
+- (MASViewAttribute *)mas_safeAreaLayoutGuideTop {
+    return [[MASViewAttribute alloc] initWithView:self item:self.safeAreaLayoutGuide layoutAttribute:NSLayoutAttributeTop];
+}
+- (MASViewAttribute *)mas_safeAreaLayoutGuideBottom {
+    return [[MASViewAttribute alloc] initWithView:self item:self.safeAreaLayoutGuide layoutAttribute:NSLayoutAttributeBottom];
+}
+- (MASViewAttribute *)mas_safeAreaLayoutGuideLeft {
+    return [[MASViewAttribute alloc] initWithView:self item:self.safeAreaLayoutGuide layoutAttribute:NSLayoutAttributeLeft];
+}
+- (MASViewAttribute *)mas_safeAreaLayoutGuideRight {
+    return [[MASViewAttribute alloc] initWithView:self item:self.safeAreaLayoutGuide layoutAttribute:NSLayoutAttributeRight];
+}
+
+#endif
+
+#pragma mark - associated properties
+
+- (id)mas_key {
+    return objc_getAssociatedObject(self, @selector(mas_key));
+}
+
+- (void)setMas_key:(id)key {
+    objc_setAssociatedObject(self, @selector(mas_key), key, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+}
+
+#pragma mark - heirachy
+
+- (instancetype)mas_closestCommonSuperview:(MAS_VIEW *)view {
+    MAS_VIEW *closestCommonSuperview = nil;
+
+    MAS_VIEW *secondViewSuperview = view;
+    while (!closestCommonSuperview && secondViewSuperview) {
+        MAS_VIEW *firstViewSuperview = self;
+        while (!closestCommonSuperview && firstViewSuperview) {
+            if (secondViewSuperview == firstViewSuperview) {
+                closestCommonSuperview = secondViewSuperview;
+            }
+            firstViewSuperview = firstViewSuperview.superview;
+        }
+        secondViewSuperview = secondViewSuperview.superview;
+    }
+    return closestCommonSuperview;
+}
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/View+MASShorthandAdditions.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/View+MASShorthandAdditions.h
new file mode 100755
index 0000000..1c19a94
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/View+MASShorthandAdditions.h
@@ -0,0 +1,133 @@
+//
+//  UIView+MASShorthandAdditions.h
+//  Masonry
+//
+//  Created by Jonas Budelmann on 22/07/13.
+//  Copyright (c) 2013 Jonas Budelmann. All rights reserved.
+//
+
+#import "View+MASAdditions.h"
+
+#ifdef MAS_SHORTHAND
+
+/**
+ *	Shorthand view additions without the 'mas_' prefixes,
+ *  only enabled if MAS_SHORTHAND is defined
+ */
+@interface MAS_VIEW (MASShorthandAdditions)
+
+@property (nonatomic, strong, readonly) MASViewAttribute *left;
+@property (nonatomic, strong, readonly) MASViewAttribute *top;
+@property (nonatomic, strong, readonly) MASViewAttribute *right;
+@property (nonatomic, strong, readonly) MASViewAttribute *bottom;
+@property (nonatomic, strong, readonly) MASViewAttribute *leading;
+@property (nonatomic, strong, readonly) MASViewAttribute *trailing;
+@property (nonatomic, strong, readonly) MASViewAttribute *width;
+@property (nonatomic, strong, readonly) MASViewAttribute *height;
+@property (nonatomic, strong, readonly) MASViewAttribute *centerX;
+@property (nonatomic, strong, readonly) MASViewAttribute *centerY;
+@property (nonatomic, strong, readonly) MASViewAttribute *baseline;
+@property (nonatomic, strong, readonly) MASViewAttribute *(^attribute)(NSLayoutAttribute attr);
+
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
+
+@property (nonatomic, strong, readonly) MASViewAttribute *firstBaseline;
+@property (nonatomic, strong, readonly) MASViewAttribute *lastBaseline;
+
+#endif
+
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000)
+
+@property (nonatomic, strong, readonly) MASViewAttribute *leftMargin;
+@property (nonatomic, strong, readonly) MASViewAttribute *rightMargin;
+@property (nonatomic, strong, readonly) MASViewAttribute *topMargin;
+@property (nonatomic, strong, readonly) MASViewAttribute *bottomMargin;
+@property (nonatomic, strong, readonly) MASViewAttribute *leadingMargin;
+@property (nonatomic, strong, readonly) MASViewAttribute *trailingMargin;
+@property (nonatomic, strong, readonly) MASViewAttribute *centerXWithinMargins;
+@property (nonatomic, strong, readonly) MASViewAttribute *centerYWithinMargins;
+
+#endif
+
+#if (__IPHONE_OS_VERSION_MAX_ALLOWED >= 110000) || (__TV_OS_VERSION_MAX_ALLOWED >= 110000)
+
+@property (nonatomic, strong, readonly) MASViewAttribute *safeAreaLayoutGuideTop API_AVAILABLE(ios(11.0),tvos(11.0));
+@property (nonatomic, strong, readonly) MASViewAttribute *safeAreaLayoutGuideBottom API_AVAILABLE(ios(11.0),tvos(11.0));
+@property (nonatomic, strong, readonly) MASViewAttribute *safeAreaLayoutGuideLeft API_AVAILABLE(ios(11.0),tvos(11.0));
+@property (nonatomic, strong, readonly) MASViewAttribute *safeAreaLayoutGuideRight API_AVAILABLE(ios(11.0),tvos(11.0));
+
+#endif
+
+- (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *make))block;
+- (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *make))block;
+- (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *make))block;
+
+@end
+
+#define MAS_ATTR_FORWARD(attr)  \
+- (MASViewAttribute *)attr {    \
+    return [self mas_##attr];   \
+}
+
+@implementation MAS_VIEW (MASShorthandAdditions)
+
+MAS_ATTR_FORWARD(top);
+MAS_ATTR_FORWARD(left);
+MAS_ATTR_FORWARD(bottom);
+MAS_ATTR_FORWARD(right);
+MAS_ATTR_FORWARD(leading);
+MAS_ATTR_FORWARD(trailing);
+MAS_ATTR_FORWARD(width);
+MAS_ATTR_FORWARD(height);
+MAS_ATTR_FORWARD(centerX);
+MAS_ATTR_FORWARD(centerY);
+MAS_ATTR_FORWARD(baseline);
+
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000) || (__MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
+
+MAS_ATTR_FORWARD(firstBaseline);
+MAS_ATTR_FORWARD(lastBaseline);
+
+#endif
+
+#if (__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 9000)
+
+MAS_ATTR_FORWARD(leftMargin);
+MAS_ATTR_FORWARD(rightMargin);
+MAS_ATTR_FORWARD(topMargin);
+MAS_ATTR_FORWARD(bottomMargin);
+MAS_ATTR_FORWARD(leadingMargin);
+MAS_ATTR_FORWARD(trailingMargin);
+MAS_ATTR_FORWARD(centerXWithinMargins);
+MAS_ATTR_FORWARD(centerYWithinMargins);
+
+#endif
+
+#if (__IPHONE_OS_VERSION_MAX_ALLOWED >= 110000) || (__TV_OS_VERSION_MAX_ALLOWED >= 110000)
+
+MAS_ATTR_FORWARD(safeAreaLayoutGuideTop);
+MAS_ATTR_FORWARD(safeAreaLayoutGuideBottom);
+MAS_ATTR_FORWARD(safeAreaLayoutGuideLeft);
+MAS_ATTR_FORWARD(safeAreaLayoutGuideRight);
+
+#endif
+
+- (MASViewAttribute *(^)(NSLayoutAttribute))attribute {
+    return [self mas_attribute];
+}
+
+- (NSArray *)makeConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *))block {
+    return [self mas_makeConstraints:block];
+}
+
+- (NSArray *)updateConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *))block {
+    return [self mas_updateConstraints:block];
+}
+
+- (NSArray *)remakeConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *))block {
+    return [self mas_remakeConstraints:block];
+}
+
+@end
+
+#endif
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/ViewController+MASAdditions.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/ViewController+MASAdditions.h
new file mode 100755
index 0000000..79fd1fa
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/ViewController+MASAdditions.h
@@ -0,0 +1,30 @@
+//
+//  UIViewController+MASAdditions.h
+//  Masonry
+//
+//  Created by Craig Siemens on 2015-06-23.
+//
+//
+
+#import "MASUtilities.h"
+#import "MASConstraintMaker.h"
+#import "MASViewAttribute.h"
+
+#ifdef MAS_VIEW_CONTROLLER
+
+@interface MAS_VIEW_CONTROLLER (MASAdditions)
+
+/**
+ *	following properties return a new MASViewAttribute with appropriate UILayoutGuide and NSLayoutAttribute
+ */
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuide;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuide;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideTop;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideBottom;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideTop;
+@property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideBottom;
+
+
+@end
+
+#endif
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/ViewController+MASAdditions.m b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/ViewController+MASAdditions.m
new file mode 100755
index 0000000..2f5139f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/ThirdParties/Masonry/ViewController+MASAdditions.m
@@ -0,0 +1,39 @@
+//
+//  UIViewController+MASAdditions.m
+//  Masonry
+//
+//  Created by Craig Siemens on 2015-06-23.
+//
+//
+
+#import "ViewController+MASAdditions.h"
+
+#ifdef MAS_VIEW_CONTROLLER
+
+@implementation MAS_VIEW_CONTROLLER (MASAdditions)
+
+- (MASViewAttribute *)mas_topLayoutGuide {
+    return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom];
+}
+- (MASViewAttribute *)mas_topLayoutGuideTop {
+    return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeTop];
+}
+- (MASViewAttribute *)mas_topLayoutGuideBottom {
+    return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom];
+}
+
+- (MASViewAttribute *)mas_bottomLayoutGuide {
+    return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop];
+}
+- (MASViewAttribute *)mas_bottomLayoutGuideTop {
+    return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop];
+}
+- (MASViewAttribute *)mas_bottomLayoutGuideBottom {
+    return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeBottom];
+}
+
+
+
+@end
+
+#endif
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/com.hri.hpc.mobile.ios.player.metallib b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/com.hri.hpc.mobile.ios.player.metallib
new file mode 100644
index 0000000..927d741
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/com.hri.hpc.mobile.ios.player.metallib
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZConstants.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZConstants.h
new file mode 100644
index 0000000..edc3b24
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZConstants.h
@@ -0,0 +1,222 @@
+//
+//  EZConstants.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 16/7/20.
+//  Copyright 漏 2016骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+//钀ょ煶寮�鏀惧钩鍙板鎵樻柟娉�
+@protocol EZOpenSDKDelegate <NSObject>
+
+@optional
+
+/**
+ 钀ょ煶鐧诲綍鏄惁鎴愬姛
+ 
+ @param result 鏄惁鎴愬姛
+ */
+- (void)ezvizLoginResult:(BOOL)result;
+
+@end
+
+/* EZOpenSDK鐨勯敊璇畾涔� */
+typedef NS_ENUM(NSInteger, EZErrorCode) {
+    /**
+     *  瀵硅閿欒鐮�
+     */
+    EZ_DEVICE_TTS_REQUEST_TIMEOUT = 360001,           //瀹㈡埛绔姹傝秴鏃�
+    EZ_DEVICE_TTS_TALKING_TIMEOUT = 360002,           //瀵硅鍙戣捣瓒呮椂
+    EZ_DEVICE_TTS_DEVICE_CONNECT_ERROR = 360003,      //TTS鐨勮澶囩鍙戠敓閿欒
+    EZ_DEVICE_TTS_INTER_ERROR = 360004,               //TTS鍐呴儴鍙戠敓閿欒
+    EZ_DEVICE_TTS_SEND_ERROR = 360005,                //瀹㈡埛绔彂閫佺殑娑堟伅閿欒
+    EZ_DEVICE_TTS_RECEIVE_ERROR = 360006,             //瀹㈡埛绔帴鏀跺彂鐢熼敊璇�
+    EZ_DEVICE_TTS_CLOSE_CONNECT = 360007,             //TTS鍏抽棴浜嗕笌瀹㈡埛绔殑杩炴帴
+    EZ_DEVICE_TTS_TALKING = 360010,                   //璁惧姝e湪瀵硅涓�
+    EZ_DEVICE_TTS_PRIVACY_PROTECT = 360013,           //璁惧寮�鍚簡闅愮淇濇姢
+    EZ_DEVICE_TTS_INIT_ERROR = 360102,                //TTS鍒濆鍖栧け璐�
+    
+    
+    /**
+     *  鍙栨祦閿欒鐮�
+     */
+    EZ_DEVICE_IS_PRIVACY_PROTECTING = 380011,         //璁惧闅愮淇濇姢涓�
+    EZ_DEVICE_CONNECT_COUNT_LIMIT = 380045,           //璁惧鐩磋繛鍙栨祦杩炴帴鏁伴噺杩囧ぇ
+    EZ_DEVICE_COMMAND_NOT_SUPPORT = 380047,           //璁惧涓嶆敮鎸佽鍛戒护
+    EZ_DEVICE_CAS_TALKING = 380077,                   //璁惧姝e湪瀵硅涓�
+    EZ_DEVICE_CAS_REC_ERROR = 380102,                 //鏁版嵁鎺ユ敹寮傚父
+    EZ_DEVICE_CAS_PARSE_ERROR = 380205,               //璁惧妫�娴嬪叆鍙傚紓甯�
+    EZ_PLAY_TIMEOUT = 380209,                         //缃戠粶杩炴帴瓒呮椂
+    EZ_DEVICE_TIMEOUT = 380212,                       //璁惧绔綉缁滆繛鎺ヨ秴鏃�
+    EZ_STREAM_CLIENT_TIMEOUT = 390038,                //鍚屾椂`390037`鎵嬫満缃戠粶寮曡捣鐨勫彇娴佽秴鏃�
+    EZ_STREAM_CLIENT_NOT_FIND_FILE = 395402,          //鍥炴斁鎵句笉鍒板綍鍍忔枃浠讹紝妫�鏌ヤ紶鍏ョ殑鍥炴斁鏂囦欢鏄惁姝g‘
+    EZ_STREAM_CLIENT_OFFLINE = 395404,                //璁惧涓嶅湪绾�
+    EZ_STREAM_CLIENT_TOKEN_INVALID = 395406,          //鍙栨祦token楠岃瘉澶辨晥
+    EZ_STREAM_CLIENT_PRIVACY_PROTECT = 395409,        //棰勮寮�鍚殣绉佷繚鎶�,鍙互鍦ㄨ悿鐭充簯APP涓叧闂�
+    EZ_STREAM_CLIENT_DEVICE_COUNT_LIMIT = 395410,     //璁惧杩炴帴鏁拌繃澶�,鏈夎繃澶氱殑缁堢姝e湪瀵硅璁惧杩涜鍙栨祦鎿嶄綔
+    EZ_STREAM_CLIENT_TOKEN_LIMIT  = 395411,           //token鏃犳潈闄�
+    EZ_STREAM_CLIENT_CAMERANO_ERROR = 395415,         //璁惧閫氶亾閿�
+    EZ_STREAM_CLIENT_TYPE_UNSUPPORT = 395451,         //璁惧涓嶆敮鎸佺殑鐮佹祦绫诲瀷
+    EZ_STREAM_CLIENT_CONNECT_SERVER_ERROR = 395452,   //璁惧杩炴帴棰勮娴佸獟浣撴湇鍔″櫒澶辫触
+    EZ_STREAM_CLIENT_SESSION_NOT_EXIST = 395454,      //浼氳瘽涓嶅瓨鍦�
+    EZ_STREAM_CLIENT_SAME_REQUEST = 395491,           //鐩稿悓璇锋眰姝e湪澶勭悊锛屾嫆缁濇湰娆″鐞�
+    EZ_STREAM_CLIENT_INNER_ERROR = 395500,            //娴佸獟浣撴湇鍔″櫒鍐呴儴澶勭悊閿欒
+    EZ_STREAM_CLIENT_NO_SOURCE = 395544,              //璁惧杩斿洖鏃犺棰戞簮
+    EZ_STREAM_CLIENT_VIDEO_OUT_SHARE_TIME = 395545,   //瑙嗛鍒嗕韩鏃堕棿宸茬粡缁撴潫
+    EZ_STREAM_CLIENT_LIMIT = 395546,                  //璁惧鍙栨祦鍙楀埌闄愬埗锛屽崌绾т紒涓氱増鍙斁寮�闄愬埗
+    EZ_STREAM_CLIENT_DEVICE_OUT_SHARE_TIME = 395600,  //鍒嗕韩璁惧涓嶅湪鍒嗕韩鏃堕棿鍐�
+    
+    /**
+     *  HTTP 閿欒鐮�
+     */
+    EZ_HTTPS_PARAM_ERROR = 110001,                    //璇锋眰鍙傛暟閿欒
+    EZ_HTTPS_ACCESS_TOKEN_INVALID = 110002,           //AccessToken鏃犳晥
+    EZ_HTTPS_ACCESS_TOKEN_EXPIRE = 110003,            //AccessToken杩囨湡
+    EZ_HTTPS_REGIST_USER_NOT_EXSIT = 110004,          //娉ㄥ唽鐢ㄦ埛涓嶅瓨鍦�
+    EZ_HTTPS_APPKEY_ERROR = 110005,                   //AppKey寮傚父
+    EZ_HTTPS_IP_LIMIT = 110006,                       //ip鍙楅檺
+    EZ_HTTPS_INVOKE_LIMIT = 110007,                   //璋冪敤娆℃暟杈惧埌涓婇檺
+    EZ_HTTPS_USER_BINDED = 110012,                    //绗笁鏂硅处鎴蜂笌钀ょ煶璐﹀彿宸茬粡缁戝畾
+    EZ_HTTPS_APPKEY_IS_NULL = 110017,                 //AppKey涓嶅瓨鍦�
+    EZ_HTTPS_APPKEY_NOT_MATCHED = 110018,             //AppKey涓嶅尮閰嶏紝璇锋鏌ユ湇鍔$璁剧疆鐨刟ppKey鏄惁鍜孲DK浣跨敤鐨刟ppKey涓�鑷�
+    EZ_HTTPS_CAMERA_NOT_EXISTS = 120001,              //閫氶亾涓嶅瓨鍦紝璇锋鏌ユ憚鍍忓ご璁惧鏄惁閲嶆柊娣诲姞杩�
+    EZ_HTTPS_DEVICE_NOT_EXISTS = 120002,              //璁惧涓嶅瓨鍦�
+    EZ_HTTPS_DEVICE_NETWORK_ANOMALY = 120006,         //缃戠粶寮傚父
+    EZ_HTTPS_DEVICE_OFFLINE = 120007,                 //璁惧涓嶅湪绾�
+    EZ_HTTPS_DEIVCE_RESPONSE_TIMEOUT = 120008,        //璁惧璇锋眰鍝嶅簲瓒呮椂寮傚父
+    EZ_HTTPS_DEVICE_VALICATECODE_ERROR = 120010,      //璁惧楠岃瘉鐮侀敊璇�
+    EZ_HTTPS_ILLEGAL_DEVICE_SERIAL = 120014,          //涓嶅悎娉曠殑搴忓垪鍙�
+    EZ_HTTPS_DEVICE_STORAGE_FORMATTING = 120016,      //璁惧姝e湪鏍煎紡鍖栫鐩�
+    EZ_HTTPS_DEVICE_ADDED_MYSELF = 120017,            //鍚宍120020`璁惧宸茬粡琚嚜宸辨坊鍔�
+    EZ_HTTPS_USER_NOT_OWN_THIS_DEVICE = 120018,       //璇ョ敤鎴蜂笉鎷ユ湁璇ヨ澶�
+    EZ_HTTPS_DEVICE_UNSUPPORT_CLOUD = 120019,         //璁惧涓嶆敮鎸佷簯瀛樺偍鏈嶅姟
+    EZ_HTTPS_DEVICE_ONLINE_ADDED = 120020,            //璁惧鍦ㄧ嚎锛岃鑷繁娣诲姞
+    EZ_HTTPS_DEVICE_ONLINE_NOT_ADDED = 120021,        //璁惧鍦ㄧ嚎锛屾湭琚敤鎴锋坊鍔�
+    EZ_HTTPS_DEVICE_ONLINE_IS_ADDED = 120022,         //璁惧鍦ㄧ嚎锛屽凡缁忚鍒殑鐢ㄦ埛娣诲姞
+    EZ_HTTPS_DEVICE_OFFLINE_NOT_ADDED = 120023,       //璁惧涓嶅湪绾匡紝鏈鐢ㄦ埛娣诲姞
+    EZ_HTTPS_DEVICE_OFFLINE_IS_ADDED = 120024,        //璁惧涓嶅湪绾匡紝宸茬粡琚埆鐨勭敤鎴锋坊鍔�
+    EZ_HTTPS_DEVICE_OFFLINE_IS_ADDED_MYSELF = 120029, //璁惧涓嶅湪绾匡紝浣嗘槸宸茬粡琚嚜宸辨坊鍔�
+    EZ_HTTPS_DEVICE_BUNDEL_STATUS_ON = 120031,        //鍚屾椂`106002`閿欒鐮佷篃鏄紝璁惧寮�鍚簡缁堢缁戝畾锛岃鍒拌悿鐭充簯瀹㈡埛绔叧闂粓绔粦瀹�
+    EZ_HTTPS_OPERATE_LEAVE_MSG_FAIL = 120202,         //鎿嶄綔鐣欒█娑堟伅澶辫触
+    EZ_HTTPS_SERVER_DATA_ERROR = 149999,              //鏁版嵁寮傚父
+    EZ_HTTPS_SERVER_ERROR = 150000,                   //鏈嶅姟鍣ㄥ紓甯�
+    EZ_HTTPS_CLOUD_DELETE_ALL_EXCEPT_LAST = 150002,   //浜戝瓨鍌ㄨ棰戝垹闄ゅ畬鎴愶紝闄や簡鏈�鍚庝竴涓湪褰曞埗鐨勮棰戞棤娉曞垹闄�
+    EZ_HTTPS_DEVICE_PTZ_NOT_SUPPORT = 160000,         //璁惧涓嶆敮鎸佷簯鍙版帶鍒�
+    EZ_HTTPS_DEVICE_PTZ_NO_PERMISSION = 160001,       //鐢ㄦ埛娌℃湁鏉冮檺鎿嶄綔浜戝彴鎺у埗
+    EZ_HTTPS_DEVICE_PTZ_UPPER_LIMIT = 160002,         //浜戝彴杈惧埌涓婇檺浣嶏紙椤堕儴锛�
+    EZ_HTTPS_DEVICE_PTZ_FLOOR_LIMIT = 160003,         //浜戝彴杈惧埌涓嬮檺浣嶏紙搴曢儴锛�
+    EZ_HTTPS_DEVICE_PTZ_LEFT_LIMIT = 160004,          //浜戝彴杈惧埌宸﹂檺浣嶏紙鏈�宸﹁竟锛�
+    EZ_HTTPS_DEVICE_PTZ_RIGHT_LIMIT = 160005,         //浜戝彴杈惧埌鍙抽檺浣嶏紙鏈�鍙宠竟锛�
+    EZ_HTTPS_DEVICE_PTZ_FAILED = 160006,              //浜戝彴鎿嶄綔澶辫触
+    EZ_HTTPS_DEVICE_PTZ_RESETING = 160009,            //浜戝彴姝e湪璋冪敤棰勭疆鐐�
+    EZ_HTTPS_DEVICE_COMMAND_NOT_SUPPORT = 160020,     //璁惧鎶撳浘澶辫触锛屼笉鏀寔鎶撳浘
+    
+    /**
+     *  鎺ュ彛 閿欒鐮�(SDK鏈湴鏍¢獙)
+     */
+    EZ_SDK_PARAM_ERROR = 400002,                      //鎺ュ彛鍙傛暟閿欒
+    EZ_SDK_NOT_SUPPORT_TALK = 400025,                 //璁惧涓嶆敮鎸佸璁�
+    EZ_SDK_TIMEOUT = 400034,                          //鏃犳挱鏀総oken锛岃stop鍐峴tart鎾斁鍣�
+    EZ_SDK_NEED_VALIDATECODE = 400035,                //闇�瑕佽澶囬獙璇佺爜
+    EZ_SDK_VALIDATECODE_NOT_MATCH = 400036,           //璁惧楠岃瘉鐮佷笉鍖归厤
+    EZ_SDK_DECODE_TIMEOUT = 400041,                   //瑙g爜瓒呮椂锛屽彲鑳芥槸楠岃瘉鐮侀敊璇�
+    EZ_SDK_STREAM_TIMEOUT = 400015,                   //鍙栨祦瓒呮椂,璇锋鏌ユ墜鏈虹綉缁�
+    EZ_SDK_PLAYBACK_STREAM_TIMEOUT = 400409,          //鍥炴斁鍙栨祦瓒呮椂,璇锋鏌ユ墜鏈虹綉缁�
+    
+    /**
+     *  NPC鍙栨祦閿欒鐮�
+     */
+    EZ_NPC_CLIENT_PARAMETER_ERROR = 500001,           //鍙傛暟閿欒
+    EZ_NPC_CLIENT_ORDER_ERROR = 500002,               //璋冪敤椤哄簭鍑洪敊
+    EZ_NPC_CLIENT_MEMORY_ERROR = 500003,              //鍒嗛厤鍐呭瓨澶辫触
+    EZ_NPC_CLIENT_BUFFER_OVERFLOW_ERROR = 500004,     //缂撳啿鍖烘孩鍑�
+    EZ_NPC_CLIENT_SYSTEM_NO_SUPPORT_ERROR = 500005,   //绯荤粺涓嶆敮鎸�
+    EZ_NPC_CLIENT_INVALID_PORT_ERROR = 500006,        //鏃犳晥绔彛
+    EZ_NPC_CLIENT_STREAM_CLOSE_ERROR = 500101,        //娴佸叧闂�
+    EZ_NPC_CLIENT_TRACK_CLOSE_ERROR = 500102,         //TRACK_CLOSE
+    EZ_NPC_CLIENT_NPCCREATE_ERROR = 500103,           //鍒涘缓澶辫触
+    EZ_NPC_CLIENT_TRSCREATE_ERROR = 500104,           //TRSCREATE_ERROR
+    EZ_NPC_CLIENT_FAIL_UNKNOWN_ERROR = 509999,        //FAIL_UNKNOWN
+};
+
+/* 璁惧ptz鍛戒护锛屽畾涔夌殑鍊间笌Android瀹氫箟鐨勪笉涓�鏍凤紝SDK浼氬湪鍐呴儴浼氬仛涓�灞傝浆鎹� */
+typedef NS_OPTIONS(NSUInteger, EZPTZCommand) {
+    EZPTZCommandLeft            = 1 << 0, //鍚戝乏鏃嬭浆
+    EZPTZCommandRight           = 1 << 1, //鍚戝彸鏃嬭浆
+    EZPTZCommandUp              = 1 << 2, //鍚戜笂鏃嬭浆
+    EZPTZCommandDown            = 1 << 3, //鍚戜笅鏃嬭浆
+    EZPTZCommandZoomIn          = 1 << 4, //闀滃ご鎷夎繘
+    EZPTZCommandZoomOut         = 1 << 5, //闀滃ご鎷夎繙
+};
+
+/*
+ * 璁惧鏄剧ず鍛戒护
+ */
+typedef NS_OPTIONS(NSUInteger, EZDisplayCommand) {
+    EZDisplayCommandCenter          = 1 << 0, //鏄剧ず涓棿
+};
+
+/**
+ *  璁惧ptz鍔ㄤ綔鍛戒护
+ */
+typedef NS_ENUM(NSInteger, EZPTZAction) {
+    EZPTZActionStart = 1, //ptz寮�濮�
+    EZPTZActionStop = 2   //ptz鍋滄
+};
+
+/* 娑堟伅鐘舵�� */
+typedef NS_ENUM(NSInteger, EZMessageStatus) {
+    EZMessageStatusRead = 1,    //宸茶
+};
+
+/* 娑堟伅绫诲瀷 */
+typedef NS_ENUM(NSInteger, EZMessageType)
+{
+    EZMessageTypeAlarm = 1,   //鍛婅绫诲瀷
+    EZMessageTypeLeave,       //鐣欒█绫诲瀷
+};
+
+/* 鐣欒█娑堟伅绫诲瀷 */
+typedef NS_ENUM(NSInteger, EZLeaveMessageType)
+{
+    EZLeaveMessageTypeAll,    //鍏ㄩ儴
+    EZLeaveMessageTypeVoice,  //璇煶绫�
+    EZLeaveMessageTypeVideo,  //瑙嗛绫�
+};
+
+/* 璁惧甯冮槻鐘舵�佹灇涓剧被鍨� */
+typedef NS_ENUM(NSInteger, EZDefenceStatus) {
+    EZDefenceStatusOffOrSleep     = 0,  //A1璁惧鐫$湢妯″紡鎴栬�呴潪A1璁惧鐨勬挙闃茬姸鎬�
+    EZDefenceStatusOn             = 1,  //闈濧1璁惧鐨勫竷闃茬姸鎬�
+    EZDefenceStatusAtHome         = 8,  //A1鍦ㄥ妯″紡
+    EZDefenceStatusOuter          = 16, //A1澶栧嚭妯″紡
+};
+
+/* 閫氶亾娓呮櫚搴︼紝璇锋敞鎰忎笉鏄墍鏈夎澶囬兘鏈夎繖浜涙竻鏅板害鐨勶紝璇锋牴鎹疄闄呭満鏅娇鐢� */
+typedef NS_ENUM(NSInteger, EZVideoLevelType) {
+    EZVideoLevelLow       = 0,  //娴佺晠
+    EZVideoLevelMiddle    = 1,  //鍧囪 
+    EZVideoLevelHigh      = 2,  //楂樻竻
+    EZVideoLevelSuperHigh = 3   //瓒呮竻
+};
+
+/* 褰曞儚绫诲瀷 */
+typedef NS_ENUM(NSUInteger, EZVideoRecordType) {
+    EZVideoRecordTypeAll,     // 鎵�鏈夌被鍨�
+    EZVideoRecordTypeCMR,     // 瀹氭椂褰曞儚
+    EZVideoRecordTypeEvent    // 浜嬩欢绫诲瀷
+};
+
+/* 浜戝瓨鍌ㄥ綍鍍忕被鍨� */
+typedef NS_ENUM(NSInteger, EZCloudVideoType) {
+    EZCloudVideoTypeAll = -1,   // 鍏ㄩ儴褰曞儚
+    EZCloudVideoTypeSeries = 1, // 杩炵画褰曞儚
+    EZCloudVideoTypeAct = 2     // 娲诲姩褰曞儚
+};
+
+/// 寮�鏀惧钩鍙板父閲忕被
+@interface EZConstants : NSObject
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZConstants_Auth.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZConstants_Auth.h
new file mode 100644
index 0000000..1d70767
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZConstants_Auth.h
@@ -0,0 +1,52 @@
+//
+//  EZConstants_Auth.h
+//  Auth
+//
+//  Created by JuneCheng on 2022/5/18.
+//
+
+#import <Foundation/Foundation.h>
+
+// 钀ょ煶寮�鏀惧钩鍙板鎵樻柟娉�
+@protocol EZAuthSDKDelegate <NSObject>
+
+@optional
+
+/**
+ 钀ょ煶鐧诲綍鏄惁鎴愬姛
+ 
+ @param result 鏄惁鎴愬姛
+ */
+- (void)ezvizLoginResult:(BOOL)result;
+
+@end
+
+/* 钀ょ煶鐮斿彂鐨凙PP */
+typedef NS_ENUM(NSInteger, EZAppType) {
+    EZEzviz                 = 0,  // 钀ょ煶浜戣棰戝浗鍐呯増
+    EZEzvizInternational    = 1,  // 钀ょ煶浜戣棰戞捣澶栫増
+    EZHIKConnect            = 2,  // HIK-Connect
+};
+
+/* 钀ょ煶璐熻矗鐮斿彂鐨凙PP */
+typedef NS_ENUM(NSInteger, EZAppPageType) {
+    EZPageDeviceList        = 0,  // 璁惧鍒楄〃椤甸潰
+    EZPageAlarmList         = 1,  // 鍛婅娑堟伅鍒楄〃椤甸潰
+};
+
+///闇�瑕佽繘琛岄噸鏂扮櫥褰曠殑閫氱煡锛岃閫氱煡瑙﹀彂棰戠巼涓�5骞翠竴娆★紝闇�鍦⊿DK鍒濆鍖栫洃鍚�
+extern const NSNotificationName EZNeedReloginNotification;
+
+///閿欒瑙e喅鏂规KEY
+extern NSErrorUserInfoKey const EZErrorSolutionKey;
+
+///閿欒妯″潡閿欒鐮並EY
+extern NSErrorUserInfoKey const EZErrorModuleCodeKey;
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZConstants_Auth : NSObject
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZConstants_WifiConfig.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZConstants_WifiConfig.h
new file mode 100644
index 0000000..97dd69d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZConstants_WifiConfig.h
@@ -0,0 +1,36 @@
+//
+//  EZConstants_WifiConfig.h
+//  WifiConfig
+//
+//  Created by JuneCheng on 2022/5/6.
+//
+
+#ifndef EZConstants_WifiConfig_h
+#define EZConstants_WifiConfig_h
+
+/* 閰嶇綉鏂瑰紡 */
+typedef NS_ENUM(NSInteger, EZWiFiConfigMode) {
+    EZWiFiConfigSmart        = 1 << 0,  // smart config
+    EZWiFiConfigWave         = 1 << 1,  // 澹版尝閰嶇綉
+};
+
+/* WiFi閰嶇疆璁惧鐘舵�� */
+typedef NS_ENUM(NSInteger, EZWifiConfigStatus) {
+    DEVICE_WIFI_CONNECTING = 1,   //璁惧姝e湪杩炴帴WiFi
+    DEVICE_WIFI_CONNECTED = 2,    //璁惧杩炴帴WiFi鎴愬姛  (宸插簾寮� v4.16.0)
+    DEVICE_PLATFORM_REGISTED = 3, //璁惧娉ㄥ唽骞冲彴鎴愬姛
+    DEVICE_ACCOUNT_BINDED = 4,    //璁惧宸茬粡缁戝畾璐︽埛  (宸插簾寮� v4.16.0)
+    DEVICE_WIFI_SENT_SUCCESS = 5, //鍚戣澶囧彂閫乄iFi淇℃伅鎴愬姛
+    DEVICE_WIFI_SENT_FAILED = 6,  //鍚戣澶囧彂閫乄iFi淇℃伅澶辫触
+    DEVICE_PLATFORM_REGIST_FAILED = 7, //璁惧娉ㄥ唽骞冲彴澶辫触锛岃疆璇�20娆★紝20娆℃湭鏌ヨ鍒拌澶囦笂绾胯涓烘敞鍐屽钩鍙板け璐�
+};
+
+/* New AP閰嶇綉璁惧鐘舵�� */
+typedef NS_ENUM(NSInteger, EZNewAPConfigStatus) {
+    EZNewAPConfigStatusConnectSuccess          = 104,    // 杩炴帴鎴愬姛
+    EZNewAPConfigStatusUnknow                  = 105,    // 鏈煡閿欒
+    EZNewAPConfigStatusPasswordError           = 106,    // 瀵嗙爜閿欒
+    EZNewAPConfigStatusNoAPFound               = 201,    // 鏈壘鍒皐ifi鐑偣
+};
+
+#endif /* EZConstants_WifiConfig_h */
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZGlobalSDK.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZGlobalSDK.h
new file mode 100644
index 0000000..90f7cc9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZGlobalSDK.h
@@ -0,0 +1,1059 @@
+//
+//  EZGlobalSDK.h
+//  EZOpenSDK
+//
+//  Created by JuneCheng on 2022/7/18.
+//
+
+#import <Foundation/Foundation.h>
+#import "EZConstants.h"
+#import "EZConstants_Auth.h"
+#import "EZConstants_WifiConfig.h"
+
+@class EZAccessToken;
+@class EZPlayer;
+@class EZUserInfo;
+@class EZDeviceVersion;
+@class EZDeviceInfo;
+@class EZProbeDeviceInfo;
+@class EZDeviceUpgradeStatus;
+@class EZLeaveMessage;
+@class EZHiddnsDeviceInfo;
+@class EZDeviceCloudServiceInfo;
+@class EZWiFiItemInfo, EZAPDevInfo, EZConfigTokenInfo;
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZGlobalSDK : NSObject
+
+#pragma mark - Auth璁よ瘉鐩稿叧Api
+
+/**
+ *  瀹炰緥EZOpenSDK鎺ュ彛
+ *
+ *  @param appKey 浼犲叆鐢宠鐨刟ppKey
+ *
+ *  @return YES/NO
+ */
++ (BOOL)initLibWithAppKey:(NSString *)appKey;
+
+/**
+ *  鍒濆鍖栨帴鍙o紝鍙缃湇鍔″櫒锛屾捣澶栫敤鎴蜂娇鐢ㄨ鍒濆鍖栨柟娉�
+ *
+ *  @param appKey 浼犲叆鐢宠鐨刟ppKey
+ *  @param apiUrl apiUrl鍦板潃
+ *  @param authUrl auth鍦板潃
+ *
+ *  @return YES/NO
+ */
++ (BOOL)initLibWithAppKey:(NSString *)appKey
+                      url:(NSString *)apiUrl
+                  authUrl:(NSString *)authUrl;
+
+/**
+ *  閿�姣丒ZOpenSDK鎺ュ彛
+ *
+ *  @return YES/NO
+ */
++ (BOOL)destoryLib;
+
+/**
+ *  璁剧疆鏄惁鎵撳嵃debug鏃ュ織,闇�鍦ㄥ垵濮嬪寲sdk涔嬪墠璋冪敤
+ *
+ *  @param enable 鏄惁鎵撳嵃鏃ュ織锛岄粯璁ゅ叧闂�
+ *
+ *  @return YES/NO
+ */
++ (BOOL)setDebugLogEnable:(BOOL)enable;
+
+/**
+ *  璁剧疆debug鏃ュ織鍥炶皟,闇�鍦ㄥ垵濮嬪寲sdk涔嬪墠璋冪敤
+ *
+ *  @param logCallback 鏃ュ織鍥炶皟
+ */
++ (void)setDebugLogCallBack:(void(^)(NSString *logStr))logCallback;
+
+/**
+ *  鎵撳紑鎺堟潈鐧诲綍涓棿椤甸潰鎺ュ彛
+ *
+ *  @param areaId areaId
+ *  @param block 鍥炶皟block
+*/
++ (void)openLoginPage:(NSString *)areaId
+           completion:(void (^)(EZAccessToken *accessToken))block;
+
+/**
+ *  鎺堟潈鐧诲綍浠ュ悗缁橢ZOpenSDK璁剧疆accessToken鎺ュ彛
+ *
+ *  @param accessToken 鎺堟潈鐧诲綍鑾峰彇鐨刟ccessToken
+ */
++ (void)setAccessToken:(NSString *)accessToken;
+
+/**
+ *  璐︽埛娉ㄩ攢鎺ュ彛
+ *
+ *  @param completion 鍥炶皟block锛宔rror涓虹┖琛ㄧず鐧诲嚭鎴愬姛
+ */
++ (void)logout:(void (^)(NSError *error))completion;
+
+
+/**
+ 澶栭儴璺宠浆澶勭悊鏂规硶锛岄�傜敤浜巌OS9浠ヤ笂锛屽寘鎷琲OS9
+
+ @param url 璺宠浆杩囨潵鐨剈rl
+ @param options 鍙傛暟锛岄粯璁や负绌猴紝鐩墠鏈繘琛屽鐞嗭紝棰勭暀
+ @param delegate 濮旀墭
+ @return 缁撴灉
+ */
++ (BOOL)handleOpenUrl:(NSURL *)url options:(NSDictionary *)options delegate:(id<EZAuthSDKDelegate>)delegate;
+
+/**
+ *  鑾峰彇SDK鐗堟湰鍙锋帴鍙�
+ *
+ *  @return 鐗堟湰鍙�
+ */
++ (NSString *)getVersion;
+
+/**
+ *  鎵撳紑浜戝瓨鍌ㄤ腑闂撮〉
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param channelNo    璁惧閫氶亾鍙�
+ */
++ (void)openCloudPage:(NSString *)deviceSerial channelNo:(NSInteger)channelNo;
+
+/**
+ *  鎵撳紑淇敼瀵嗙爜涓棿椤�
+ *
+ *  @param completion 鍥炶皟block resultCode涓�0鏃惰〃绀轰慨鏀瑰瘑鐮佹垚鍔�
+ */
++ (void)openChangePasswordPage:(void (^)(NSInteger resultCode))completion;
+
+/**
+ 鏄惁宸茬粡鐧诲綍
+
+ @return YES锛氬凡缁忕櫥褰曪紱NO锛氭湭鐧诲綍
+ */
++ (BOOL)isLogin;
+
+/**
+ 鑾峰彇褰撳墠accessToken
+
+ @return accessToken
+ */
++ (NSString *)getAccesstoken;
+
+#pragma mark - 鎾斁鍣ㄥ垱寤篈pi
+
+/**
+ *  鏍规嵁cameraId鏋勯�燛ZPlayer瀵硅薄
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *
+ *  @return EZPlayer瀵硅薄
+ */
++ (EZPlayer *)createPlayerWithDeviceSerial:(NSString *)deviceSerial
+                                  cameraNo:(NSInteger)cameraNo;
+
+/**
+ *  涓�涓〉闈㈠瓨鍦ㄥ涓棰戜娇鐢ㄦ渶灏忕殑鐮佹祦锛屾病鏈夊瓙鐮佹祦鐨勮瘽杩樻槸浣跨敤涓荤爜娴�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     铏氭嫙閫氶亾
+ *  @param useSubStream   鏄惁浣跨敤瀛愮爜娴�
+ *
+ *  @return EZPlayer瀵硅薄
+ */
++ (EZPlayer *)createPlayerWithDeviceSerial:(NSString *)deviceSerial
+                                  cameraNo:(NSInteger)cameraNo
+                              useSubStream:(BOOL)useSubStream;
+
+/**
+ *  鏍规嵁url鏋勯�燛ZPlayer瀵硅薄 锛堜富瑕佺敤鏉ュ鐞嗚棰戝箍鍦虹殑鎾斁锛�
+ *
+ *  @param url 鎾斁url锛岀洰鍓嶅彧鏀寔璇ュ崗璁細ysproto://vtm.ys7.com:8554/live?dev=531993276&chn=1&stream=1&cln=1&isp=0&biz=3
+ *
+ *  @return EZPlayer瀵硅薄
+ */
++ (EZPlayer *)createPlayerWithUrl:(NSString *)url;
+
+
+/**
+ *  閲婃斁EZPlayer瀵硅薄
+ *
+ *  @param player EZPlayer瀵硅薄
+ *
+ *  @return YES/NO
+ */
++ (BOOL)releasePlayer:(EZPlayer *)player;
+
+#pragma mark - 鍙栨祦鐩稿叧Api
+
+/**
+ *  璁剧疆p2p鍔熻兘鏄惁寮�鍚帴鍙o紝榛樿涓嶅紑鍚痯2p锛岀敤鎴疯嚜宸遍�夋嫨鏄惁寮�鍚�
+ *
+ *  @param enable p2p鏄惁寮�鍚�
+ */
++ (void)enableP2P:(BOOL)enable;
+
+/**
+ *  娓呴櫎鍙栨祦鏃剁殑缂撳瓨鏁版嵁
+ */
++ (void)clearStreamInfoCache;
+
+/**
+ *  鏄惁鏀寔鍥芥爣
+ *  @param enable YES or NO
+ */
++ (void)enableNationalStandard:(BOOL)enable;
+
+#pragma mark - 褰曞儚鏌ヨApi
+
+/**
+ *  鏌ヨ浜戝瓨鍌ㄥ綍鍍忎俊鎭垪琛ㄦ帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param beginTime    鏌ヨ鏃堕棿鑼冨洿寮�濮嬫椂闂�
+ *  @param endTime      鏌ヨ鏃堕棿鑼冨洿缁撴潫鏃堕棿
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZCloudRecordFile鐨勫璞℃暟缁勶紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)searchRecordFileFromCloud:(NSString *)deviceSerial
+                                           cameraNo:(NSInteger)cameraNo
+                                          beginTime:(NSDate *)beginTime
+                                            endTime:(NSDate *)endTime
+                                         completion:(void (^)(NSArray *couldRecords, NSError *error))completion;
+
+/**
+ *  鏌ヨ杩滅▼SD鍗″瓨鍌ㄥ綍鍍忎俊鎭垪琛ㄦ帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param beginTime    鏌ヨ鏃堕棿鑼冨洿寮�濮嬫椂闂�
+ *  @param endTime      鏌ヨ鏃堕棿鑼冨洿缁撴潫鏃堕棿
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZDeviceRecordFile鐨勫璞℃暟缁勶紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)searchRecordFileFromDevice:(NSString *)deviceSerial
+                                            cameraNo:(NSInteger)cameraNo
+                                           beginTime:(NSDate *)beginTime
+                                             endTime:(NSDate *)endTime
+                                          completion:(void (^)(NSArray *deviceRecords, NSError *error))completion;
+
+/**
+ *  鑾峰彇鎸囧畾鏃堕棿鍐呯殑鎵�鏈夊綍鍍忔枃浠�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙凤紝浼犲叆<=0鐨勫�煎垯涓洪粯璁ゅ��
+ *  @param beginTime    寮�濮嬫椂闂达紝浼犲叆nil鍒欎负褰撳ぉ00:00:00
+ *  @param endTime      缁撴潫鏃堕棿锛屼紶鍏il鍒欎负褰撳ぉ23:59:59
+ *  @param rectype      鍥炴斁婧愶紝0-绯荤粺鑷姩閫夋嫨锛�1-浜戝瓨鍌紝2-鏈湴褰曞儚銆傞潪蹇呴�夛紝榛樿涓�0锛屼紶鍏ヨ礋鍊煎垯涓洪粯璁ゅ��
+ *  @param bizType       璁惧褰掑睘涓氬姟鏉ユ簮
+ *  @param platFormId  骞冲彴ID
+ *  @param completion   鍥炶皟block records:EzvizRecordFileInfo鐨勬暟缁�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)searchRecordFile:(NSString *)deviceSerial
+                                  cameraNo:(NSString *)cameraNo
+                                 beginTime:(NSDate *)beginTime
+                                   endTime:(NSDate *)endTime
+                                   recType:(NSInteger)rectype
+                                   bizType:(NSString *)bizType
+                                platFormId:(NSString *)platFormId
+                                completion:(void (^)(id records, NSError *error))completion;
+
+#pragma mark - 璁惧鐩稿叧Api
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙峰拰璁惧楠岃瘉鐮佹坊鍔犺澶囨帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param verifyCode   璁惧楠岃瘉鐮�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘坊鍔犳垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)addDevice:(NSString *)deviceSerial
+                         verifyCode:(NSString *)verifyCode
+                         completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鑾峰彇鐢ㄦ埛鎵�鏈夌殑璁惧鍒楄〃
+ *
+ *  @param pageIndex  鍒嗛〉褰撳墠椤电爜锛堜粠0寮�濮嬶級
+ *  @param pageSize   鍒嗛〉姣忛〉鏁伴噺锛堝缓璁�20浠ュ唴锛�
+ *  @param completion 鍥炶皟block锛屾甯告椂杩斿洖EZDeviceInfo鐨勫璞℃暟缁勫拰璁惧鎬绘暟锛岄敊璇椂杩斿洖閿欒鐮�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getDeviceList:(NSInteger)pageIndex
+                               pageSize:(NSInteger)pageSize
+                             completion:(void (^)(NSArray *deviceList, NSInteger totalCount, NSError *error))completion;
+
+/**
+ *  鑾峰彇鍒嗕韩缁欑敤鎴风殑璁惧鍒楄〃鎺ュ彛
+ *
+ *  @param pageIndex  鍒嗛〉褰撳墠椤电爜锛堜粠0寮�濮嬶級
+ *  @param pageSize   鍒嗛〉姣忛〉鏁伴噺锛堝缓璁�20浠ュ唴锛�
+ *  @param completion 鍥炶皟block锛屾甯告椂杩斿洖EZDeviceInfo鐨勫璞℃暟缁勫拰璁惧鎬绘暟锛岄敊璇椂杩斿洖閿欒鐮�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getSharedDeviceList:(NSInteger)pageIndex
+                                     pageSize:(NSInteger)pageSize
+                                   completion:(void (^)(NSArray *deviceList, NSInteger totalCount, NSError *error))completion;
+
+/**
+ *  鏍规嵁搴忓垪鍙疯幏鍙栬澶囦俊鎭�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion 鍥炶皟block锛屾甯告椂杩斿洖EZDeviceInfo鐨勫璞★紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getDeviceInfo:(NSString *)deviceSerial
+                             completion:(void (^)(EZDeviceInfo *deviceInfo, NSError *error))completion;
+
+/**
+ *  鑾峰彇璁惧鐨勭増鏈俊鎭帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZDeviceVersion鐨勫璞′俊鎭紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getDeviceVersion:(NSString *)deviceSerial
+                                completion:(void (^)(EZDeviceVersion *version, NSError *error))completion;
+
+/**
+ *  閫氳繃璁惧楠岃瘉鐮佸紑鍏宠棰戝浘鐗囧姞瀵嗘帴鍙�
+ *
+ *  @param isEncrypt    鏄惁鍔犲瘑锛屽彧鏈塏O(鍏抽棴)鐨勬椂鍊欓渶瑕佽澶囬獙璇佺爜鐨勭浉鍏冲弬鏁�(vaildateCode)
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param verifyCode 璁惧楠岃瘉鐮�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘搷浣滄垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setDeviceEncryptStatus:(NSString *)deviceSerial
+                                      verifyCode:(NSString *)verifyCode
+                                         encrypt:(BOOL)isEncrypt
+                                      completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙蜂慨鏀硅澶囧悕绉版帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param deviceName   璁惧鍚嶇О
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀轰慨鏀规垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setDeviceName:(NSString *)deviceName
+                           deviceSerial:(NSString *)deviceSerial
+                             completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙峰垹闄ゅ綋鍓嶈处鍙风殑璁惧鎺ュ彛
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀哄垹闄ゆ垚鍔�
+ *  @see 璇ユ帴鍙d笌缁堢缁戝畾鍔熻兘鐩稿叧锛屼細閬囧埌鍒犻櫎鏃舵姤106002鐨勯敊璇紝璇峰叧闂粓绔粦瀹氫互鍚庡啀璇�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)deleteDevice:(NSString *)deviceSerial
+                            completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙疯幏鍙栧瓨鍌ㄤ粙璐ㄧ姸鎬�(濡傛槸鍚﹀垵濮嬪寲锛屾牸寮忓寲杩涘害绛�)
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZStorageInfo鐨勫璞℃暟缁勶紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getStorageStatus:(NSString *)deviceSerial
+                                completion:(void (^)(NSArray *storageStatus, NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙峰拰鍒嗗尯缂栧彿鏍煎紡鍖栧垎鍖猴紙SD鍗★級
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param storageIndex 鏌ヨ杩斿洖鐨勫垎鍖哄彿锛�0琛ㄧず鍏ㄩ儴鏍煎紡鍖栵紝鍙兘浼氭湁鍑犲潡纭洏鐨勬儏鍐�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖琛ㄧず璁剧疆鎴愬姛
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)formatStorage:(NSString *)deviceSerial
+                           storageIndex:(NSInteger)storageIndex
+                             completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙疯幏鍙栬澶囧崌绾ф椂鐨勮繘搴︾姸鎬�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZDeviceUpgradeStatus瀵硅薄锛岄敊璇椂杩斿洖閿欒鐮�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getDeviceUpgradeStatus:(NSString *)deviceSerial
+                                      completion:(void (^)(EZDeviceUpgradeStatus *status, NSError *error))completion;
+
+/**
+ *  閫氳繃璁惧搴忓垪鍙峰璁惧杩涜鍗囩骇鎿嶄綔锛屽墠鎻愭槸璇ヨ澶囨湁鏇存柊杞欢鐨勬彁绀�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖琛ㄧず鎿嶄綔鎴愬姛
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)upgradeDevice:(NSString *)deviceSerial
+                             completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鑾峰彇鎶撳彇鎽勫儚澶村浘鐗囩殑url鎺ュ彛
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖url鍦板潃淇℃伅锛岄敊璇椂杩斿洖閿欒鐮�
+ *  @see 璇ユ帴鍙f瘮杈冭�楁椂锛屼笉寤鸿杩涜鎵归噺璁惧鎶撳浘锛孲DK鍐呴儴鍙敮鎸�6涓猦ttp璇锋眰骞跺彂锛岃鎺ュ彛浼氭寔缁崰鐢╤ttp璇锋眰璧勬簮锛屽鏋滈亣鍒癶ttp璇锋眰寤舵椂宸ㄥぇ闂锛屼紭鍏堣�冭檻鎶撳浘鎺ュ彛骞跺彂閫犳垚鐨勯棶棰�,
+ *  鎶撳浘灏嗗湪鏈嶅姟鍣ㄧ淇濈暀2涓皬鏃�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)captureCamera:(NSString *)deviceSerial
+                               cameraNo:(NSInteger)cameraNo
+                             completion:(void (^)(NSString *url, NSError *error))completion;
+
+/**
+ *  璁剧疆璁惧閫氶亾鐨勬竻鏅板害
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param videoLevel   閫氶亾娓呮櫚搴︼紝0-娴佺晠锛�1-鍧囪 锛�2-楂樻竻锛�3-瓒呮竻
+ *  @param completion   鍥炶皟block锛屾棤error琛ㄧず璁剧疆鎴愬姛
+ *  @see 濡傛灉鏄鍦ㄦ挱鏀炬椂璋冪敤璇ユ帴鍙o紝璁剧疆娓呮櫚搴︽垚鍔熶互鍚庡繀椤昏EZPlayer璋冪敤stopRealPlay鍐嶈皟鐢╯tartRealPlay閲嶆柊鍙栨祦鎵嶆垚瀹屾垚鐢婚潰娓呮櫚搴︾殑鍒囨崲銆�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setVideoLevel:(NSString *)deviceSerial
+                               cameraNo:(NSInteger)cameraNo
+                             videoLevel:(EZVideoLevelType)videoLevel
+                             completion:(void (^)(NSError *error))completion;
+
+/**
+ *  璁惧璁剧疆甯冮槻鐘舵�侊紝鍏煎A1鍜孖PC璁惧鐨勫竷闃�
+ *
+ *  @param defence      甯冮槻鐘舵��, IPC甯冮槻鐘舵�佸彧鏈�0鍜�1锛孉1鏈�0:鐫$湢 8:鍦ㄥ 16:澶栧嚭
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖琛ㄧず璁剧疆鎴愬姛
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setDefence:(EZDefenceStatus)defence
+                        deviceSerial:(NSString *)deviceSerial
+                          completion:(void (^)(NSError *error))completion;
+
+#pragma mark - 浜戝彴鎺у埗Api
+
+/**
+ *  PTZ 鎺у埗鎺ュ彛
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param command      ptz鎺у埗鍛戒护
+ *  @param action       鎺у埗鍚姩/鍋滄
+ *  @param speed        浜戝彴閫熷害锛�0-鎱紝1-閫備腑锛�2-蹇�
+ *  @param resultBlock  鍥炶皟block锛屽綋error涓虹┖鏃惰〃绀烘搷浣滄垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)controlPTZ:(NSString *)deviceSerial
+                            cameraNo:(NSInteger)cameraNo
+                             command:(EZPTZCommand)command
+                              action:(EZPTZAction)action
+                               speed:(NSInteger)speed
+                              result:(void (^)(NSError *error))resultBlock;
+
+/**
+ *  鎽勫儚澶存樉绀烘帶鍒舵帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param command      鏄剧ず鎺у埗鍛戒护
+ *  @param resultBlock  鍥炶皟block锛屽綋error涓虹┖鏃惰〃绀烘搷浣滄垚鍔�
+ */
++ (void)controlVideoFlip:(NSString *)deviceSerial
+                cameraNo:(NSInteger)cameraNo
+                 command:(EZDisplayCommand)command
+                  result:(void (^)(NSError *error))resultBlock;
+
+#pragma mark - 浜戝瓨鍌ㄧ浉鍏矨pi
+
+/**
+ *  妫�鏌ュ浗瀹舵槸鍚︽敮鎸佷簯瀛樺偍鏈嶅姟
+ *
+ *  @param completion 鍥炶皟
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)isSupportCloundService:(void (^)(BOOL isSupport, NSError *error))completion;
+
+/**
+ *  鏌ヨ浜戝瓨鍌ㄨ澶囬�氶亾濂楅淇℃伅
+ *
+ *  @param deviceSerial     璁惧搴忓垪鍙�
+ *  @param channelNo            閫氶亾鍙�
+ *  @param completion          鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getCloundDevicePackageInfo:(NSString *)deviceSerial
+                                           channelNo:(NSInteger)channelNo
+                                          completion:(void (^)(EZDeviceCloudServiceInfo *serviceInfo, NSError *error))completion;
+
+/**
+ *  浜戝瓨鍌ㄥ姛鑳芥殏鍋滄仮澶�
+ *
+ *  @param deviceSerial     璁惧搴忓垪鍙�
+ *  @param channelNo            閫氶亾鍙�
+ *  @param enable                   NO-绂佺敤锛孻ES-鍚敤
+ *  @param completion          鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setCloundServiceActive:(NSString *)deviceSerial
+                                       channelNo:(NSInteger)channelNo
+                                          enable:(BOOL)enable
+                                      completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏌ヨ鏌愭湀涓湁瑙嗛鏂囦欢鐨勫ぉ(鏃ユ湡)
+ *
+ *  @param deviceSerial     璁惧搴忓垪鍙�
+ *  @param channelNo            閫氶亾鍙�
+ *  @param month                     鏌ヨ鏌愭湀鍏锋湁浜戝瓨鍌ㄧ殑鏃ユ湡锛屾牸寮忎负yyyyMM
+ *  @param completion          鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getCloudVideoDays:(NSString *)deviceSerial
+                                  channelNo:(NSInteger)channelNo
+                                      month:(NSString *)month
+                                 completion:(void (^)(NSArray<NSString *> *dayArray, NSError *error))completion;
+
+/**
+ *  鎸夎澶囬�氶亾鍒犻櫎鎵�鏈変簯瀛樺偍褰曞儚鐗囨
+ *
+ *  @param deviceSerial     璁惧搴忓垪鍙�
+ *  @param channelNo            閫氶亾鍙�
+ *  @param completion          鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)deleteAllCloudVideo:(NSString *)deviceSerial
+                                    channelNo:(NSInteger)channelNo
+                                   completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鍒犻櫎浜戝瓨鍌ㄥ綍鍍忕墖娈�
+ *
+ *  @param deviceSerial     璁惧搴忓垪鍙�
+ *  @param channelNo            閫氶亾鍙�
+ *  @param videos                   瑙嗛鏁扮粍锛堥檺鍒�30涓互鍐咃級
+ *  @param completion          鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)deleteCloudVideoFragment:(NSString *)deviceSerial
+                                         channelNo:(NSInteger)channelNo
+                                            videos:(NSArray *)videos
+                                        completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鎸夊ぉ澧為噺鏌ヨ浜戝瓨鍌ㄥ綍鍍忓垪琛ㄦ帴鍙�(姒傝淇℃伅)
+ *
+ *  @param deviceSerial     璁惧搴忓垪鍙�
+ *  @param channelNo            閫氶亾鍙�
+ *  @param videoType            褰曞儚绫诲瀷videoType
+ *  @param searchDate          鏌ユ壘鏂囦欢鏃ユ湡yyyy-MM-dd
+ *  @param maxCreateTime   鏌ユ壘鏂囦欢鐨勮捣濮嬫椂闂磞yyy-MM-dd HH:mm:ss锛岃淇濊瘉鍜宻earchDate鏄悓涓�澶╋紝鍚﹀垯鎶ラ敊銆傞粯璁や粠 yyyy-MM-dd 00:00:00寮�濮嬶紝闈炲繀濉紝鍙紶nil
+ *  @param completion          鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getIncrCloudVideos:(NSString *)deviceSerial
+                                   channelNo:(NSInteger)channelNo
+                                   videoType:(EZCloudVideoType)videoType
+                                  searchDate:(NSString *)searchDate
+                               maxCreateTime:(NSString *)maxCreateTime
+                                  completion:(void (^)(NSArray *abstractvideos, NSError *error))completion;
+
+/**
+ *  鏍规嵁鏂囦欢id鎵归噺鏌ヨ璇︽儏淇℃伅鎺ュ彛
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param channelNo        閫氶亾鍙�
+ *  @param videos               褰曞儚姒傝淇℃伅鏁扮粍
+ *  @param completion      鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getCloudVideoDetails:(NSString *)deviceSerial
+                                     channelNo:(NSInteger)channelNo
+                                        videos:(NSArray *)videos
+                                    completion:(void (^)(NSArray *couldRecords, NSError *error))completion;
+
+#pragma mark - 鍛婅鐩稿叧Api
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙疯幏鍙栧憡璀︿俊鎭垪琛紝璁惧搴忓垪鍙蜂负nil鏃舵煡璇㈡暣涓处鎴蜂笅鐨勫憡璀︿俊鎭垪琛�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param pageIndex    鍒嗛〉褰撳墠椤电爜锛堜粠0寮�濮嬶級
+ *  @param pageSize     鍒嗛〉姣忛〉鏁伴噺锛堝缓璁�20浠ュ唴锛�
+ *  @param beginTime    鎼滅储鏃堕棿鑼冨洿寮�濮嬫椂闂�
+ *  @param endTime      鎼滅储鏃堕棿鑼冨洿缁撴潫鏃堕棿
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZAlarmInfo鐨勫璞℃暟鎹拰鏌ヨ鏃堕棿鑼冨洿鍐呯殑鍛婅涓暟鐨勬�绘暟锛岄敊璇椂杩斿洖閿欒鐮�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getAlarmList:(NSString *)deviceSerial
+                             pageIndex:(NSInteger)pageIndex
+                              pageSize:(NSInteger)pageSize
+                             beginTime:(NSDate *)beginTime
+                               endTime:(NSDate *)endTime
+                            completion:(void (^)(NSArray *alarmList, NSInteger totalCount, NSError *error))completion;
+
+/**
+ *  鍛婅鍥剧墖瑙e瘑鏂规硶锛岃澶囧姞瀵�
+ *
+ *  @param data       闇�瑕佽В瀵嗙殑鏁版嵁
+ *  @param verifyCode 璁惧楠岃瘉鐮�
+ *
+ *  @return 瑙e瘑鐨凬SData瀵硅薄锛屽鏋滆繑鍥炵殑鏁版嵁鏄┖鐨勶紝璇锋鏌ュ瘑鐮佹槸鍚︽纭垨鑰呬紶鍏ョ殑鏁版嵁鏄惁姝g‘銆�
+ */
++ (NSData *)decryptData:(NSData *)data verifyCode:(NSString *)verifyCode;
+
+/**
+ *  鍛婅鍥剧墖瑙e瘑鏂规硶锛岃澶囧姞瀵�
+ *
+ *  @param data       闇�瑕佽В瀵嗙殑鏁版嵁
+ *  @param verifyCode 璁惧楠岃瘉鐮�
+ *  @param type 1:璁惧鍔犲瘑锛�2锛氬钩鍙板姞瀵�
+ *
+ *  @return 瑙e瘑鐨凬SData瀵硅薄锛屽鏋滆繑鍥炵殑鏁版嵁鏄┖鐨勶紝璇锋鏌ュ瘑鐮佹槸鍚︽纭垨鑰呬紶鍏ョ殑鏁版嵁鏄惁姝g‘銆�
+ */
++ (NSData *)decryptData:(NSData *)data verifyCode:(NSString *)verifyCode encryptType:(NSInteger)type;
+
+/**
+ *  璁剧疆鍛婅淇℃伅涓哄凡璇绘帴鍙�
+ *
+ *  @param alarmIds   鍛婅淇℃伅Id鏁扮粍(鍙互鍙湁涓�涓狪d)锛屾渶澶氫负10涓猧d,鍚﹀垯浼氭姤閿�
+ *  @param status     鍛婅娑堟伅鐘舵��
+ *  @param completion 鍥炶皟block锛宔rror涓虹┖鏃惰〃绀鸿缃垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setAlarmStatus:(NSArray *)alarmIds
+                             alarmStatus:(EZMessageStatus)status
+                              completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁alarmId鍒犻櫎鍛婅淇℃伅鎺ュ彛
+ *
+ *  @param alarmIds   鍛婅淇℃伅Id鏁扮粍(鍙互鍙湁涓�涓狪d)锛屾渶澶氫负10涓狪d锛屽惁鍒欎細鎶ラ敊
+ *  @param completion 鍥炶皟block锛宔rror涓虹┖鏃惰〃绀哄垹闄ゆ垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)deleteAlarm:(NSArray *)alarmIds
+                           completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙疯幏鍙栨湭璇绘秷鎭暟锛岃澶囧簭鍒楀彿涓虹┖鏃惰幏鍙栨墍鏈夎澶囩殑鏈娑堟伅鏁�
+ *
+ *  @param deviceSerial 闇�瑕佽幏鍙栫殑璁惧搴忓垪鍙凤紝涓虹┖鏃惰繑鍥炶处鎴蜂笅鎵�鏈夎澶囩殑鏈娑堟伅鏁�
+ *  @param type         娑堟伅绫诲瀷锛欵ZMessageTypeAlarm 鍛婅娑堟伅锛�1锛夛紝EZMessageTypeLeave 鐣欒█娑堟伅锛�2锛�
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖鏈鏁伴噺锛岄敊璇椂杩斿洖閿欒鐮�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getUnreadMessageCount:(NSString *)deviceSerial
+                                    messageType:(EZMessageType)type
+                                     completion:(void (^)(NSInteger count, NSError *error))completion;
+
+#pragma mark - 璇煶鐣欒█娑堟伅鏁版嵁Api
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙疯幏鍙栬澶囩殑鐣欒█娑堟伅鍒楄〃
+ *
+ *  @param deviceSerial 闇�瑕佽幏鍙栫殑璁惧搴忓垪鍙�
+ *  @param beginTime    寮�濮嬫椂闂�
+ *  @param endTime      缁撴潫鏃堕棿
+ *  @param pageIndex    鍒嗛〉椤电爜
+ *  @param pageSize     鍒嗛〉鍗曢〉鏁伴噺
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZLeaveMessage鐨勫璞℃暟缁勶紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getLeaveMessageList:(NSString *)deviceSerial
+                                    pageIndex:(NSInteger)pageIndex
+                                     pageSize:(NSInteger)pageSize
+                                    beginTime:(NSDate *)beginTime
+                                      endTime:(NSDate *)endTime
+                                   completion:(void (^)(NSArray *leaveMessageList, NSInteger totalCount, NSError *error))completion;
+
+/**
+ *  鏍规嵁leaveId璁剧疆鐣欒█娑堟伅鐘舵��
+ *
+ *  @param leaveIds   鐣欒█娑堟伅Id鏁扮粍(鏈�澶ф暟閲忎负10锛屽厑璁稿彧鏈�1涓�)
+ *  @param status     闇�瑕佽缃殑鐣欒█鐘舵�侊紝鐩墠鍙敮鎸� EZMessageStatusRead(宸茶)
+ *  @param completion 鍥炶皟block锛宔rror涓虹┖琛ㄧず璁剧疆鎴愬姛
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setLeaveMessageStatus:(NSArray *)leaveIds
+                                  messageStatus:(EZMessageStatus)status
+                                     completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁leaveId鍒犻櫎鐣欒█娑堟伅
+ *
+ *  @param leaveIds   鐣欒█娑堟伅Id鏁扮粍(鏈�澶ф暟閲忎负10锛屽厑璁稿彧鏈�1涓�)
+ *  @param completion 鍥炶皟block锛宔rror涓虹┖琛ㄧず鍒犻櫎鎴愬姛
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)deleteLeaveMessage:(NSArray *)leaveIds
+                                  completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁EZLeaveMessage瀵硅薄淇℃伅鑾峰彇璇煶鐣欒█娑堟伅鏁版嵁鎺ュ彛
+ *  @param message    鐣欒█娑堟伅瀵硅薄
+ *  @param completion 鍥炶皟block 锛坮esultCode = 1 琛ㄧず璇煶涓嬭浇鎴愬姛锛�-1琛ㄧず涓嬭浇澶辫触锛�
+ *
+ *  @return operation
+ */
++ (NSOperation *)getLeaveMessageData:(EZLeaveMessage *)message
+                          completion:(void (^)(NSData *data, NSInteger resultCode))completion;
+
+#pragma mark - VideoTalk瑙嗛閫氳瘽鐩稿叧Api
+
+/**
+ * 鑾峰彇鎵嬭〃鏈嶅姟鐩稿叧淇℃伅
+ * @param deviceId 璁惧搴忓垪鍙�
+ * @param completion operation
+ */
++ (void)requestGetWatchServerInfo:(NSString *)deviceId
+                       completion:(void (^)(id watchServerInfo, NSError *error))completion;
+
+#pragma mark - WiFi閰嶇綉鐩稿叧Api
+
+/**
+ *  灏濊瘯鏌ヨ璁惧淇℃伅锛岃澶嘩ifi閰嶇疆鍓嶆煡璇竴娆¤澶囩殑淇℃伅
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param deviceType 璁惧鍨嬪彿锛屾棤娉曡幏鍙栧埌璁惧鍨嬪彿鍒欏彲浼爊il
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZProbeDeviceInfo瀵硅薄锛岄敊璇爜杩斿洖閿欒鐮�
+ *  @see 鍏ㄦ柊鐨勮澶囨槸娌℃湁娉ㄥ唽鍒板钩鍙扮殑锛屾墍浠ヤ細鍑虹幇璁惧涓嶅瓨鍦ㄧ殑鎯呭喌锛岃澶噖ifi閰嶇疆鎴愬姛浠ュ悗浼氫笂鎶ユ暟鎹埌钀ょ煶浜戝钩鍙帮紝浠ュ悗姣忔鏌ヨ灏变笉浼氬嚭鐜拌澶囦笉瀛樺湪鐨勬儏鍐典簡銆�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)probeDeviceInfo:(NSString *)deviceSerial
+                               deviceType:(NSString *)deviceType
+                               completion:(void (^)(EZProbeDeviceInfo *deviceInfo, NSError *error))completion;
+
+/**
+ *  WiFi閰嶇疆寮�濮嬫帴鍙�
+ *
+ *  @param ssid         杩炴帴WiFi SSID
+ *  @param password     杩炴帴WiFi 瀵嗙爜
+ *  @param deviceSerial 杩炴帴WiFi鐨勮澶囩殑璁惧搴忓垪鍙�
+ *  @param statusBlock  杩斿洖杩炴帴璁惧鐨刉iFi閰嶇疆鐘舵��
+ *
+ *  @return YES/NO
+ */
++ (BOOL)startConfigWifi:(NSString *)ssid
+               password:(NSString *)password
+           deviceSerial:(NSString *)deviceSerial
+           deviceStatus:(void (^)(EZWifiConfigStatus status))statusBlock;
+
+/**
+ *  WiFi閰嶇疆寮�濮嬫帴鍙�
+ *
+ *  @param ssid         杩炴帴WiFi SSID
+ *  @param password     杩炴帴WiFi 瀵嗙爜
+ *  @param deviceSerial 杩炴帴WiFi鐨勮澶囩殑璁惧搴忓垪鍙�,鎵归噺閰嶇疆鏃跺~nil
+ *  @param mode         閰嶇綉鐨勬柟寮忥紝EZWiFiConfigMode涓垪涓剧殑妯″紡杩涜浠绘剰缁勫悎,渚嬪:EZWiFiConfigSmart|EZWiFiConfigWave
+ *  @param statusBlock  杩斿洖璁惧搴忓垪鍙蜂互鍙婂綋鍓嶈繛鎺ョ姸鎬�
+ *
+ *  @return YES/NO
+ */
++ (BOOL)startConfigWifi:(NSString *)ssid
+               password:(NSString *)password
+           deviceSerial:(NSString *)deviceSerial
+                   mode:(NSInteger)mode
+           deviceStatus:(void (^)(EZWifiConfigStatus status, NSString *deviceSerial))statusBlock;
+
+/**
+ *  @since 3.0.0
+ *  Wifi閰嶇疆鍋滄鎺ュ彛
+ *
+ *  @return YES/NO
+ */
++ (BOOL)stopConfigWifi;
+
+#pragma mark - AP閰嶇綉鐩稿叧Api
+
+/**
+ * AP閰嶇綉鎺ュ彛
+ *
+ * @param ssid WiFi鐨剆sid
+ * @param password WiFi鐨勫瘑鐮�
+ * @param deviceSerial 璁惧搴忓垪鍙�
+ * @param verifyCode 璁惧楠岃瘉鐮�
+ * @param callback 缁撴灉鍥炶皟锛屾敞鎰忥細杩斿洖YES浠呬粎浠h〃鎴愬姛灏哤iFi淇℃伅鍙戦�佺粰璁惧锛屼笉浠h〃璁惧閰嶇綉鎴愬姛
+ * @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)startAPConfigWifiWithSsid:(NSString *)ssid
+                         password:(NSString *)password
+                     deviceSerial:(NSString *)deviceSerial
+                       verifyCode:(NSString *)verifyCode
+                           result:(void (^)(BOOL ret))callback;
+
+/**
+ * AP閰嶇綉鎺ュ彛锛堟帹鑽愶紝v5.0鏂板锛屽皝瑁呬簡璁惧鐘舵�佽疆璇㈡楠わ級
+ *
+ * @param ssid WiFi鐨剆sid
+ * @param password WiFi鐨勫瘑鐮�
+ * @param deviceSerial 璁惧搴忓垪鍙�
+ * @param verifyCode 璁惧楠岃瘉鐮�
+ * @param statusBlock 缁撴灉鍥炶皟锛岃繑鍥為厤缃戣繃绋嬩腑鐨勫悇绉嶇姸鎬�
+ *
+ * @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)startAPConfigWifiWithSsid:(NSString *)ssid
+                         password:(NSString *)password
+                     deviceSerial:(NSString *)deviceSerial
+                       verifyCode:(NSString *)verifyCode
+                     deviceStatus:(void (^)(EZWifiConfigStatus status, NSString *deviceSerial))statusBlock;
+
+/**
+ * 鍋滄AP閰嶇綉
+ */
++ (void)stopAPConfigWifi;
+
+#pragma mark - 鎺ヨЕ寮忛厤缃� New AP Config
+
+/**
+ * 鑾峰彇鎺ヨЕ寮廇P閰嶇綉token
+ *
+ * @param completion 鍥炶皟
+ *
+ * @return operation
+ */
++ (NSURLSessionDataTask *)getNewApConfigToken:(void(^)(EZConfigTokenInfo *tokenInfo, NSError *error))completion;
+
+/**
+ * 寮�濮婲ewAP閰嶇綉锛堥渶杩炴帴璁惧鐑偣锛�
+ * @param token 閰嶇綉token
+ * @param ssid WiFi ssid
+ * @param password WiFi 瀵嗙爜
+ * @param lbsDomain lbs 鍩熷悕
+ * @param handler 鍥炶皟
+ *
+ * @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)startNewApConfigWithToken:(NSString *)token
+                             ssid:(NSString *)ssid
+                         password:(NSString *)password
+                        lbsDomain:(NSString *)lbsDomain
+                completionHandler:(void(^)(EZNewAPConfigStatus status, NSError *error))handler;
+
+/**
+ * 鑾峰彇璁惧鐘舵�侊紙闇�杩炴帴璁惧鐑偣锛�
+ *
+ * @param handler 鍥炶皟
+ */
++ (void)getAccessDeviceInfo:(void(^)(EZAPDevInfo *devInfo, NSError *error))handler;
+
+/**
+ * 鑾峰彇璁惧褰撳墠鍛ㄨ竟WiFi鍒楄〃锛屼笂闄�20涓紙闇�杩炴帴璁惧鐑偣锛�
+ *
+ * @param handler 鍥炶皟
+ */
++ (void)getAccessDeviceWifiList:(void(^)(NSArray<EZWiFiItemInfo*> *wifiList, NSError *error))handler;
+
+/**
+ * 鏌ヨ璁惧缁戝畾鐘舵��
+ * @param deviceSerial 璁惧搴忓垪鍙�
+ * @param completion 鍥炶皟block锛屾甯告椂杩斿洖EZProbeDeviceInfo瀵硅薄锛岄敊璇爜杩斿洖閿欒鐮�
+ *
+ * @return 鎴愬姛鎴栧け璐�
+ */
++ (NSURLSessionDataTask *)queryPlatformBindStatus:(NSString *)deviceSerial
+                                       completion:(void(^)(EZProbeDeviceInfo *deviceInfo, NSError *error))completion;
+
+/**
+ * 璁剧疆閰嶇綉璁惧缃戝叧鍦板潃 鍙��
+ * @param devRouteDomain 璁惧缃戝叧鍦板潃
+ */
++ (void)setDevRouteDomain:(NSString *)devRouteDomain;
+
+#pragma mark - 鐢ㄦ埛鐩稿叧Api
+
+/**
+ *  鑾峰彇鐢ㄦ埛鍩烘湰淇℃伅鐨勬帴鍙�
+ *
+ *  @param completion 鍥炶皟block锛� 姝e父鏃惰繑鍥濫ZUserInfo鐨勫璞★紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getUserInfo:(void (^)(EZUserInfo *userInfo, NSError *error))completion;
+
+#pragma mark - 鍏朵粬Api
+
+/**
+ *  鑾峰彇鍖哄煙鍒楄〃鎺ュ彛
+ *
+ *  @param completion 鍥炶皟block锛宎reaList涓殑鍏冪礌涓篍ZAreaInfo瀵硅薄
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getAreaList:(void (^)(NSArray *areaList, NSError *error))completion;
+
+/**
+ *  鑾峰彇缁堢锛堟墜鏈虹瓑锛夊敮涓�璇嗗埆鐮�
+ *
+ *  @return 缁堢鍞竴璇嗗埆鐮�
+ */
++ (NSString *)getTerminalId;
+
+/**
+ 鏍规嵁搴旂敤绫诲瀷鍒ゆ柇鏄惁瀹夎浜嗗搴旂殑搴旂敤
+ 
+ @param appType 搴旂敤绫诲瀷
+ @return YES:宸插畨瑁咃紝NO:娌℃湁瀹夎鎴栧畨瑁呯殑钀ょ煶APP鐗堟湰杩囦綆
+ */
+//+ (BOOL)isEzvizAppInstalledWithType:(EZAppType)appType;
+
+
+/**
+ 璺宠浆鍒版寚瀹氳悿鐭矨PP杩涜鎺堟潈鐧诲綍
+
+ @param appType 钀ょ煶APP绫诲瀷
+ @return 璺宠浆缁撴灉
+ */
+//+ (BOOL)ezvizLoginWithAppType:(EZAppType)appType;
+
+/**
+ 璺宠浆鍒版寚瀹欰PP鐨勬寚瀹氱晫闈�
+ 
+ @param pageType 鐣岄潰绫诲瀷
+ @param appType APP绫诲瀷
+ @return 璺宠浆缁撴灉
+ */
+//+ (BOOL)gotoEzvizAppPage:(EZAppPageType)pageType appType:(EZAppType)appType;
+
+#pragma mark - DDNS鐩稿叧
+
+/**
+ *  閫氳繃璁惧搴忓垪鍙峰拰璁惧鍩熷悕鑾峰彇璁惧ddns淇℃伅
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param domain 璁惧鍩熷悕
+ *  @param completion   鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getHiddnsDeviceInfo:(NSString *)deviceSerial
+                                       domain:(NSString *)domain
+                                   completion:(void (^)(EZHiddnsDeviceInfo *ddnsDeviceInfo, NSError *error))completion;
+
+/**
+ *  璇ユ帴鍙g敤浜庤缃澶嘾dns鍩熷悕锛屽寘鎷缃垎浜幏寰楃殑璁惧鐨刣dns鍩熷悕
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param domain 璁惧鍩熷悕,璁惧鍩熷悕瑙勫垯淇敼锛屼笉鑳戒负绌猴紝6-32浣嶏紝鍙互涓烘湰韬簭鍒楀彿锛屽寘鍚皬鍐欏瓧姣嶃�佹暟瀛椼��-锛岄浣嶅繀椤诲瓧姣嶏紝鏈綅涓嶈兘涓�-
+ *  @param completion   鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setHiddnsDomain:(NSString *)deviceSerial
+                                   domain:(NSString *)domain
+                               completion:(void (^)(NSError *error))completion;
+
+/**
+ *  璁剧疆璁惧鐨凞DNS鏄犲皠鏂瑰紡涓鸿嚜鍔ㄦ槧灏�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setHiddnsModeAuto:(NSString *)deviceSerial
+                                 completion:(void (^)(NSError *error))completion;
+
+/**
+ *  璁剧疆璁惧鐨凞DNS鏄犲皠鏂瑰紡涓烘墜鍔ㄦ槧灏�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param httpPort http绔彛鍙�
+ *  @param cmdPort 鏈嶅姟绔彛鍙�
+ *  @param completion   鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setHiddnsModeManual:(NSString *)deviceSerial
+                                     httpPort:(NSInteger)httpPort
+                                      cmdPort:(NSInteger)cmdPort
+                                   completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鑾峰彇褰撳墠璐﹀彿涓嬬殑鎵�鏈夎澶囩殑DDNS淇℃伅
+ *
+ *  @param pageIndex 鍒嗛〉璧峰椤碉紝浠�0寮�濮嬶紝榛樿涓�0
+ *  @param pageSize 鍒嗛〉澶у皬锛岄粯璁や负10锛屾渶澶т负50
+ *  @param completion   鍥炶皟block ddnsDeviceList涓璞′负EZHiddnsDeviceInfo
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getHiddnsDeviceList:(NSInteger)pageIndex
+                                     pageSize:(NSInteger)pageSize
+                                   completion:(void (^)(NSArray *ddnsDeviceList, NSInteger totalCount, NSError *error))completion;
+
+/**
+ *  鎶婂崟涓澶囩殑DDNS淇℃伅鍒嗕韩缁欏叾浠栬处鎴�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param account 琚垎浜处鎴凤紝鍙互鏄偖绠卞湴鍧�鎴栨墜鏈哄彿鐮侊紙鍖呭惈鍥藉浠g爜锛夋垨涓嶆槸鍏ㄦ暟瀛楃殑鐢ㄦ埛鍚�
+ *  @param completion   鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)shareHiddnsDevice:(NSString *)deviceSerial
+                                    account:(NSString *)account
+                                 completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鑾峰彇褰撳墠璐﹀彿涓嬬殑鎵�鏈夌殑鍏跺畠璐︽埛鍒嗕韩缁欒嚜宸辩殑璁惧DDNS淇℃伅
+ *
+ *  @param pageIndex 鍒嗛〉璧峰椤碉紝浠�0寮�濮嬶紝榛樿涓�0
+ *  @param pageSize 鍒嗛〉澶у皬锛岄粯璁や负10锛屾渶澶т负50
+ *  @param completion   鍥炶皟block ddnsDeviceList涓璞′负EZHiddnsDeviceInfo
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getShareHiddnsDeviceList:(NSInteger)pageIndex
+                                          pageSize:(NSInteger)pageSize
+                                        completion:(void (^)(NSArray *ddnsDeviceList, NSInteger totalCount, NSError *error))completion;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZHCNetDeviceSDK.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZHCNetDeviceSDK.h
new file mode 100644
index 0000000..fa3a71f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZHCNetDeviceSDK.h
@@ -0,0 +1,146 @@
+//
+//  EZHCNetDeviceSDK.h
+//  EzvizOpenSDK
+//
+//  Created by linyong on 2017/8/15.
+//  Copyright 漏 2017骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@class EZHCNetDeviceInfo, EZSADPDeviceInfo;
+
+typedef NS_ENUM(int, EZPTZCommandType) {
+    EZPTZCommandType_ZOOM_IN = 11,     /* 鐒﹁窛鍙樺ぇ(鍊嶇巼鍙樺ぇ) */
+    EZPTZCommandType_ZOOM_OUT = 12,    /* 鐒﹁窛鍙樺皬(鍊嶇巼鍙樺皬) */
+    EZPTZCommandType_UP = 21,          /* 浜戝彴涓婁话 */
+    EZPTZCommandType_DOWN,             /* 浜戝彴涓嬩刊 */
+    EZPTZCommandType_LEFT,             /* 浜戝彴宸﹁浆 */
+    EZPTZCommandType_RIGHT,            /* 浜戝彴鍙宠浆 */
+    EZPTZCommandType_UP_LEFT,          /* 浜戝彴涓婁话鍜屽乏杞� */
+    EZPTZCommandType_UP_RIGHT,         /* 浜戝彴涓婁话鍜屽彸杞� */
+    EZPTZCommandType_DOWN_LEFT,        /* 浜戝彴涓嬩刊鍜屽乏杞� */
+    EZPTZCommandType_DOWN_RIGHT,       /* 浜戝彴涓嬩刊鍜屽彸杞� */
+    EZPTZCommandType_PAN_AUTO,         /* 浜戝彴宸﹀彸鑷姩鎵弿 */
+    EZPTZCommandType_MAX               /* 瓒婄晫鏍囪瘑 */
+};
+
+typedef NS_ENUM(int, EZPTZActionType) {
+    EZPTZActionType_START = 0,      /* 寮�濮� */
+    EZPTZActionType_STOP,           /* 鍋滄 */
+    EZPTZActionType_MAX             /* 瓒婄晫鏍囪瘑 */
+};
+
+typedef NS_ENUM(int, EZEncryptType) {
+    EZEncryptType_OEMBlue = 0,              //钃濈簿鐏靛姞瀵�
+    EZEncryptType_OEMGreen,                 //缁垮法浜哄姞瀵�
+    EZEncryptType_normal                    //娌℃湁鍔犲瘑
+};
+
+@interface EZHCNetDeviceSDK : NSObject
+
+/**
+ 鍒濆鍖朣DK
+ */
++ (void)initSDK;
+
+/**
+ 寮�濮嬫悳绱㈠眬鍩熺綉璁惧
+
+ @param searchCallback 鎼滅储缁撴灉鍥炶皟锛屾瘡鎼滃埌涓�涓澶囬兘浼氬洖璋冧竴娆★紝璁惧淇℃伅EZSADPDeviceInfo
+ @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)startLocalSearch:(void(^)(EZSADPDeviceInfo *device,NSError *error))searchCallback;
+
+/**
+ 鍋滄鎼滅储
+
+ @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)stopLocalSearch;
+
+/**
+ 娓呴櫎缁撴灉锛岄噸鏂版悳绱紝鍓嶆彁鏄箣鍓嶅紑鍚繃鎼滅储
+ */
++ (void)research;
+
+/**
+ 鑾峰彇SADP鐗堟湰鍙�
+ */
++ (int)getSadpVersion;
+
+/**
+ 婵�娲昏澶囷紝璋冪敤stopLocalSearch鍚庡皢鏃犳硶婵�娲昏澶�
+
+ @param serial 璁惧搴忓垪鍙�
+ @param pwd 婵�娲诲瘑鐮�
+ @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)activeDeviceWithSerial:(NSString *)serial pwd:(NSString *)pwd;
+
+/**
+ 鐧诲綍灞�鍩熺綉璁惧
+
+ @param userName 鐢ㄦ埛鍚�
+ @param pwd 鐢ㄦ埛瀵嗙爜
+ @param ipAddr 璁惧ip鍦板潃
+ @param port 璁惧绔彛鍙�
+ @return 鐧诲綍閿欒鏃惰繑鍥瀗il
+ */
++ (EZHCNetDeviceInfo *)loginDeviceWithUerName:(NSString *)userName
+                                          pwd:(NSString *)pwd
+                                       ipAddr:(NSString *)ipAddr
+                                         port:(NSInteger)port;
+
+/**
+ 鐧诲嚭灞�鍩熺綉璁惧
+
+ @param userId 鐢ㄦ埛id
+ @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)logoutDeviceWithUserId:(NSInteger)userId;
+
+/**
+ 灞�鍩熺綉璁惧浜戝彴鎺у埗鎺ュ彛
+
+ @param userId 鐢ㄦ埛id
+ @param channelNo 閫氶亾鍙�
+ @param command 鍛戒护绫诲瀷 EZPTZCommandType
+ @param action 鍔ㄤ綔绫诲瀷 EZPTZActionType
+ @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)ptzControlWithUserId:(NSInteger)userId
+                   channelNo:(NSInteger)channelNo
+                     command:(EZPTZCommandType)command
+                      action:(EZPTZActionType)action;
+
+/**
+ 璁剧疆鍔犲瘑鏂瑰紡
+
+ @param encryptType 鍔犲瘑鏂瑰紡
+ @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)setEncryptType:(EZEncryptType)encryptType;
+
+/**
+ AP閰嶇綉鎺ュ彛
+
+ @param ssid WiFi鐨剆sid
+ @param password WiFi鐨勫瘑鐮�
+ @param deviceSerial 璁惧搴忓垪鍙�
+ @param verifyCode 璁惧楠岃瘉鐮�
+ @param callback 缁撴灉鍥炶皟
+ @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)startAPConfigWifiWithSsid:(NSString *)ssid
+                         password:(NSString *)password
+                     deviceSerial:(NSString *)deviceSerial
+                       verifyCode:(NSString *)verifyCode
+                           result:(void (^)(BOOL ret))callback;
+
+/**
+ 鍋滄AP閰嶇綉
+ */
++ (void)stopAPConfigWifi;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZOpenSDK.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZOpenSDK.h
new file mode 100644
index 0000000..47fc8e3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZOpenSDK.h
@@ -0,0 +1,946 @@
+//
+//  EZOpenSDK.h
+//  EZOpenSDK
+//
+//  Created by JuneCheng on 2022/7/18.
+//
+
+#import <Foundation/Foundation.h>
+#import "EZConstants.h"
+#import "EZConstants_Auth.h"
+#import "EZConstants_WifiConfig.h"
+
+@class EZPlayer;
+@class EZDeviceInfo;
+@class EZAccessToken;
+@class EZCameraInfo;
+@class EZDeviceVersion;
+@class EZUserInfo;
+@class EZProbeDeviceInfo;
+@class EZDeviceUpgradeStatus;
+@class EZLeaveMessage;
+@class EZWiFiItemInfo, EZAPDevInfo, EZConfigTokenInfo;
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZOpenSDK : NSObject
+
+#pragma mark - Auth璁よ瘉鐩稿叧Api
+
+/**
+ *  瀹炰緥EZOpenSDK鎺ュ彛
+ *
+ *  @param appKey 浼犲叆鐢宠鐨刟ppKey
+ *
+ *  @return YES/NO
+ */
++ (BOOL)initLibWithAppKey:(NSString *)appKey;
+
+/**
+ *  鍒濆鍖栨帴鍙o紝鍙缃湇鍔″櫒锛屾捣澶栫敤鎴蜂娇鐢ㄨ鍒濆鍖栨柟娉�
+ *
+ *  @param appKey 浼犲叆鐢宠鐨刟ppKey
+ *  @param apiUrl apiUrl鍦板潃
+ *  @param authUrl auth鍦板潃
+ *
+ *  @return YES/NO
+ */
++ (BOOL)initLibWithAppKey:(NSString *)appKey
+                      url:(NSString *)apiUrl
+                  authUrl:(NSString *)authUrl;
+
+/**
+ *  閿�姣丒ZOpenSDK鎺ュ彛
+ *
+ *  @return YES/NO
+ */
++ (BOOL)destoryLib;
+
+/**
+ *  璁剧疆鏄惁鎵撳嵃debug鏃ュ織,闇�鍦ㄥ垵濮嬪寲sdk涔嬪墠璋冪敤
+ *
+ *  @param enable 鏄惁鎵撳嵃鏃ュ織锛岄粯璁ゅ叧闂�
+ *
+ *  @return YES/NO
+ */
++ (BOOL)setDebugLogEnable:(BOOL)enable;
+
+/**
+ *  璁剧疆debug鏃ュ織鍥炶皟,闇�鍦ㄥ垵濮嬪寲sdk涔嬪墠璋冪敤
+ *
+ *  @param logCallback 鏃ュ織鍥炶皟
+ */
++ (void)setDebugLogCallBack:(void(^)(NSString *logStr))logCallback;
+
+/**
+ *  鎵撳紑鎺堟潈鐧诲綍涓棿椤甸潰鎺ュ彛
+ *
+ *  @param block 鍥炶皟block
+*/
++ (void)openLoginPage:(void (^)(EZAccessToken *accessToken))block;
+
+/**
+ *  鎺堟潈鐧诲綍浠ュ悗缁橢ZOpenSDK璁剧疆accessToken鎺ュ彛
+ *
+ *  @param accessToken 鎺堟潈鐧诲綍鑾峰彇鐨刟ccessToken
+ */
++ (void)setAccessToken:(NSString *)accessToken;
+
+/**
+ *  璐︽埛娉ㄩ攢鎺ュ彛
+ *
+ *  @param completion 鍥炶皟block锛宔rror涓虹┖琛ㄧず鐧诲嚭鎴愬姛
+ */
++ (void)logout:(void (^)(NSError *error))completion;
+
+
+/**
+ 澶栭儴璺宠浆澶勭悊鏂规硶锛岄�傜敤浜巌OS9浠ヤ笂锛屽寘鎷琲OS9
+
+ @param url 璺宠浆杩囨潵鐨剈rl
+ @param options 鍙傛暟锛岄粯璁や负绌猴紝鐩墠鏈繘琛屽鐞嗭紝棰勭暀
+ @param delegate 濮旀墭
+ @return 缁撴灉
+ */
++ (BOOL)handleOpenUrl:(NSURL *)url options:(NSDictionary *)options delegate:(id<EZOpenSDKDelegate>)delegate;
+
+/**
+ *  鑾峰彇SDK鐗堟湰鍙锋帴鍙�
+ *
+ *  @return 鐗堟湰鍙�
+ */
++ (NSString *)getVersion;
+
+/**
+ *  鎵撳紑浜戝瓨鍌ㄤ腑闂撮〉
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param channelNo    璁惧閫氶亾鍙�
+ */
++ (void)openCloudPage:(NSString *)deviceSerial channelNo:(NSInteger)channelNo;
+
+/**
+ *  鎵撳紑淇敼瀵嗙爜涓棿椤�
+ *
+ *  @param completion 鍥炶皟block resultCode涓�0鏃惰〃绀轰慨鏀瑰瘑鐮佹垚鍔�
+ */
++ (void)openChangePasswordPage:(void (^)(NSInteger resultCode))completion;
+
+/**
+ 鏄惁宸茬粡鐧诲綍
+
+ @return YES锛氬凡缁忕櫥褰曪紱NO锛氭湭鐧诲綍
+ */
++ (BOOL)isLogin;
+
+/**
+ 鑾峰彇褰撳墠accessToken
+
+ @return accessToken
+ */
++ (NSString *)getAccesstoken;
+
+#pragma mark - 鎾斁鍣ㄥ垱寤篈pi
+
+/**
+ *  鏍规嵁cameraId鏋勯�燛ZPlayer瀵硅薄
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *
+ *  @return EZPlayer瀵硅薄
+ */
++ (EZPlayer *)createPlayerWithDeviceSerial:(NSString *)deviceSerial
+                                  cameraNo:(NSInteger)cameraNo;
+
+/**
+ *  鏍规嵁cameraId鏋勯�燛ZPlayer瀵硅薄锛坒or 鍥芥爣锛�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param strCameraNo     閫氶亾鍙�
+ *
+ *  @return EZPlayer瀵硅薄
+ */
++ (EZPlayer *)createPlayerWithDeviceSerial:(NSString *)deviceSerial
+                               strCameraNo:(NSString *)strCameraNo DEPRECATED_MSG_ATTRIBUTE("use createPlayerWithDeviceSerial:cameraNo: instead");
+
+/**
+ *  涓�涓〉闈㈠瓨鍦ㄥ涓棰戜娇鐢ㄦ渶灏忕殑鐮佹祦锛屾病鏈夊瓙鐮佹祦鐨勮瘽杩樻槸浣跨敤涓荤爜娴�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     铏氭嫙閫氶亾
+ *  @param useSubStream   鏄惁浣跨敤瀛愮爜娴�
+ *
+ *  @return EZPlayer瀵硅薄
+ */
++ (EZPlayer *)createPlayerWithDeviceSerial:(NSString *)deviceSerial
+                                  cameraNo:(NSInteger)cameraNo
+                              useSubStream:(BOOL)useSubStream;
+
+/**
+ *  鏍规嵁url鏋勯�燛ZPlayer瀵硅薄 锛堜富瑕佺敤鏉ュ鐞嗚棰戝箍鍦虹殑鎾斁锛�
+ *
+ *  @param url 鎾斁url锛岀洰鍓嶅彧鏀寔璇ュ崗璁細ysproto://vtm.ys7.com:8554/live?dev=531993276&chn=1&stream=1&cln=1&isp=0&biz=3
+ *
+ *  @return EZPlayer瀵硅薄
+ */
++ (EZPlayer *)createPlayerWithUrl:(NSString *)url;
+
+
+/**
+ *  閲婃斁EZPlayer瀵硅薄
+ *
+ *  @param player EZPlayer瀵硅薄
+ *
+ *  @return YES/NO
+ */
++ (BOOL)releasePlayer:(EZPlayer *)player;
+
+#pragma mark - 鍙栨祦鐩稿叧Api
+
+/**
+ *  璁剧疆p2p鍔熻兘鏄惁寮�鍚帴鍙o紝榛樿涓嶅紑鍚痯2p锛岀敤鎴疯嚜宸遍�夋嫨鏄惁寮�鍚�
+ *
+ *  @param enable p2p鏄惁寮�鍚�
+ */
++ (void)enableP2P:(BOOL)enable;
+
+/**
+ *  娓呴櫎鍙栨祦鏃剁殑缂撳瓨鏁版嵁
+ */
++ (void)clearStreamInfoCache;
+
+/**
+ *  鏄惁鏀寔鍥芥爣
+ *  @param enable YES or NO
+ */
++ (void)enableNationalStandard:(BOOL)enable;
+
+/**
+ *  鑾峰彇鎵�鏈夌殑p2p棰勮繛鎺ヨ澶囧簭鍒楀彿锛堝寘鎷鍦ㄨ繘琛岄鎿嶄綔鐨勪互鍙婇鎿嶄綔瀹屾垚鐨勶級
+ *
+ *  @return 璁惧搴忓垪鍙锋暟缁�
+ */
++ (NSArray<NSString *> *)getAllProcessedPreconnectSerials;
+
+/**
+ *  鑾峰彇鎵�鏈夋鍦ㄦ帓闃熺殑p2p棰勮繛鎺ヨ澶囧簭鍒楀彿锛堟寚杩樻病鏈夎繘琛岄鎿嶄綔鐨勶級
+ *
+ *  @return 璁惧搴忓垪鍙锋暟缁�
+ */
++ (NSArray<NSString *> *)getAllToDoPreconnectSerials;
+
+/**
+ *  瀵规煇涓�璁惧杩涜p2p棰勮繛鎺ユ搷浣�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ */
++ (void)startP2PPreconnect:(NSString *)deviceSerial;
+
+/**
+ *  瀵规煇涓�璁惧杩涜p2p棰勮繛鎺ユ竻闄ゆ搷浣�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ */
++ (void)clearP2PPreconnect:(NSString *)deviceSerial;
+
+#pragma mark - 褰曞儚鏌ヨApi
+
+/**
+ *  鏌ヨ浜戝瓨鍌ㄥ綍鍍忎俊鎭垪琛ㄦ帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param beginTime    鏌ヨ鏃堕棿鑼冨洿寮�濮嬫椂闂�
+ *  @param endTime      鏌ヨ鏃堕棿鑼冨洿缁撴潫鏃堕棿
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZCloudRecordFile鐨勫璞℃暟缁勶紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)searchRecordFileFromCloud:(NSString *)deviceSerial
+                                           cameraNo:(NSInteger)cameraNo
+                                          beginTime:(NSDate *)beginTime
+                                            endTime:(NSDate *)endTime
+                                         completion:(void (^)(NSArray *couldRecords, NSError *error))completion;
+
+/**
+ *  鏌ヨ杩滅▼SD鍗″瓨鍌ㄥ綍鍍忎俊鎭垪琛ㄦ帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param beginTime    鏌ヨ鏃堕棿鑼冨洿寮�濮嬫椂闂�
+ *  @param endTime      鏌ヨ鏃堕棿鑼冨洿缁撴潫鏃堕棿
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZDeviceRecordFile鐨勫璞℃暟缁勶紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)searchRecordFileFromDevice:(NSString *)deviceSerial
+                                            cameraNo:(NSInteger)cameraNo
+                                           beginTime:(NSDate *)beginTime
+                                             endTime:(NSDate *)endTime
+                                          completion:(void (^)(NSArray *deviceRecords, NSError *error))completion;
+
+/**
+ *  鏌ヨ杩滅▼SD鍗″瓨鍌ㄥ綍鍍忎俊鎭垪琛ㄦ帴鍙o紝鍚屼竴涓綍鍍忓彲浠ュ悓鏃舵槸瀹氭椂褰曞儚鍜屼簨浠跺綍鍍�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param beginTime    鏌ヨ鏃堕棿鑼冨洿寮�濮嬫椂闂�
+ *  @param endTime      鏌ヨ鏃堕棿鑼冨洿缁撴潫鏃堕棿
+ *  @param videoRecordType      褰曞儚绫诲瀷
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZDeviceRecordFile鐨勫璞℃暟缁勶紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)searchRecordFileFromDevice:(NSString *)deviceSerial
+                                            cameraNo:(NSInteger)cameraNo
+                                           beginTime:(NSDate *)beginTime
+                                             endTime:(NSDate *)endTime
+                                     videoRecordType:(EZVideoRecordType)videoRecordType
+                                          completion:(void (^)(NSArray *deviceRecords, NSError *error))completion;
+
+/**
+ *  鑾峰彇鎸囧畾鏃堕棿鍐呯殑鎵�鏈夊綍鍍忔枃浠�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙凤紝浼犲叆<=0鐨勫�煎垯涓洪粯璁ゅ��
+ *  @param beginTime    寮�濮嬫椂闂达紝浼犲叆nil鍒欎负褰撳ぉ00:00:00
+ *  @param endTime      缁撴潫鏃堕棿锛屼紶鍏il鍒欎负褰撳ぉ23:59:59
+ *  @param rectype      鍥炴斁婧愶紝0-绯荤粺鑷姩閫夋嫨锛�1-浜戝瓨鍌紝2-鏈湴褰曞儚銆傞潪蹇呴�夛紝榛樿涓�0锛屼紶鍏ヨ礋鍊煎垯涓洪粯璁ゅ��
+ *  @param bizType       璁惧褰掑睘涓氬姟鏉ユ簮
+ *  @param platFormId  骞冲彴ID
+ *  @param completion   鍥炶皟block records:EzvizRecordFileInfo鐨勬暟缁�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)searchRecordFile:(NSString *)deviceSerial
+                                  cameraNo:(NSString *)cameraNo
+                                 beginTime:(NSDate *)beginTime
+                                   endTime:(NSDate *)endTime
+                                   recType:(NSInteger)rectype
+                                   bizType:(NSString *)bizType
+                                platFormId:(NSString *)platFormId
+                                completion:(void (^)(id records, NSError *error))completion;
+
+#pragma mark - 璁惧鐩稿叧Api
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙峰拰璁惧楠岃瘉鐮佹坊鍔犺澶囨帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param verifyCode   璁惧楠岃瘉鐮�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘坊鍔犳垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)addDevice:(NSString *)deviceSerial
+                         verifyCode:(NSString *)verifyCode
+                         completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鑾峰彇鐢ㄦ埛鎵�鏈夌殑璁惧鍒楄〃
+ *
+ *  @param pageIndex  鍒嗛〉褰撳墠椤电爜锛堜粠0寮�濮嬶級
+ *  @param pageSize   鍒嗛〉姣忛〉鏁伴噺锛堝缓璁�20浠ュ唴锛�
+ *  @param completion 鍥炶皟block锛屾甯告椂杩斿洖EZDeviceInfo鐨勫璞℃暟缁勫拰璁惧鎬绘暟锛岄敊璇椂杩斿洖閿欒鐮�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getDeviceList:(NSInteger)pageIndex
+                               pageSize:(NSInteger)pageSize
+                             completion:(void (^)(NSArray *deviceList, NSInteger totalCount, NSError *error))completion;
+
+/**
+ *  鑾峰彇鍒嗕韩缁欑敤鎴风殑璁惧鍒楄〃鎺ュ彛
+ *
+ *  @param pageIndex  鍒嗛〉褰撳墠椤电爜锛堜粠0寮�濮嬶級
+ *  @param pageSize   鍒嗛〉姣忛〉鏁伴噺锛堝缓璁�20浠ュ唴锛�
+ *  @param completion 鍥炶皟block锛屾甯告椂杩斿洖EZDeviceInfo鐨勫璞℃暟缁勫拰璁惧鎬绘暟锛岄敊璇椂杩斿洖閿欒鐮�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getSharedDeviceList:(NSInteger)pageIndex
+                                     pageSize:(NSInteger)pageSize
+                                   completion:(void (^)(NSArray *deviceList, NSInteger totalCount, NSError *error))completion;
+
+/**
+ *  鏍规嵁搴忓垪鍙疯幏鍙栬澶囦俊鎭�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion 鍥炶皟block锛屾甯告椂杩斿洖EZDeviceInfo鐨勫璞★紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getDeviceInfo:(NSString *)deviceSerial
+                             completion:(void (^)(EZDeviceInfo *deviceInfo, NSError *error))completion;
+
+/**
+ *  鑾峰彇璁惧鐨勭増鏈俊鎭帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZDeviceVersion鐨勫璞′俊鎭紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getDeviceVersion:(NSString *)deviceSerial
+                                completion:(void (^)(EZDeviceVersion *version, NSError *error))completion;
+
+/**
+ *  閫氳繃璁惧楠岃瘉鐮佸紑鍏宠棰戝浘鐗囧姞瀵嗘帴鍙�
+ *
+ *  @param isEncrypt    鏄惁鍔犲瘑锛屽彧鏈塏O(鍏抽棴)鐨勬椂鍊欓渶瑕佽澶囬獙璇佺爜鐨勭浉鍏冲弬鏁�(vaildateCode)
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param verifyCode 璁惧楠岃瘉鐮�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀烘搷浣滄垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setDeviceEncryptStatus:(NSString *)deviceSerial
+                                      verifyCode:(NSString *)verifyCode
+                                         encrypt:(BOOL)isEncrypt
+                                      completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙蜂慨鏀硅澶囧悕绉版帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param deviceName   璁惧鍚嶇О
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀轰慨鏀规垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setDeviceName:(NSString *)deviceName
+                           deviceSerial:(NSString *)deviceSerial
+                             completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙峰垹闄ゅ綋鍓嶈处鍙风殑璁惧鎺ュ彛
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖鏃惰〃绀哄垹闄ゆ垚鍔�
+ *  @see 璇ユ帴鍙d笌缁堢缁戝畾鍔熻兘鐩稿叧锛屼細閬囧埌鍒犻櫎鏃舵姤106002鐨勯敊璇紝璇峰叧闂粓绔粦瀹氫互鍚庡啀璇�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)deleteDevice:(NSString *)deviceSerial
+                            completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙疯幏鍙栧瓨鍌ㄤ粙璐ㄧ姸鎬�(濡傛槸鍚﹀垵濮嬪寲锛屾牸寮忓寲杩涘害绛�)
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZStorageInfo鐨勫璞℃暟缁勶紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getStorageStatus:(NSString *)deviceSerial
+                                completion:(void (^)(NSArray *storageStatus, NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙峰拰鍒嗗尯缂栧彿鏍煎紡鍖栧垎鍖猴紙SD鍗★級
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param storageIndex 鏌ヨ杩斿洖鐨勫垎鍖哄彿锛�0琛ㄧず鍏ㄩ儴鏍煎紡鍖栵紝鍙兘浼氭湁鍑犲潡纭洏鐨勬儏鍐�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖琛ㄧず璁剧疆鎴愬姛
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)formatStorage:(NSString *)deviceSerial
+                           storageIndex:(NSInteger)storageIndex
+                             completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙疯幏鍙栬澶囧崌绾ф椂鐨勮繘搴︾姸鎬�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZDeviceUpgradeStatus瀵硅薄锛岄敊璇椂杩斿洖閿欒鐮�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getDeviceUpgradeStatus:(NSString *)deviceSerial
+                                      completion:(void (^)(EZDeviceUpgradeStatus *status, NSError *error))completion;
+
+/**
+ *  閫氳繃璁惧搴忓垪鍙峰璁惧杩涜鍗囩骇鎿嶄綔锛屽墠鎻愭槸璇ヨ澶囨湁鏇存柊杞欢鐨勬彁绀�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖琛ㄧず鎿嶄綔鎴愬姛
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)upgradeDevice:(NSString *)deviceSerial
+                             completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鑾峰彇鎶撳彇鎽勫儚澶村浘鐗囩殑url鎺ュ彛
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖url鍦板潃淇℃伅锛岄敊璇椂杩斿洖閿欒鐮�
+ *  @see 璇ユ帴鍙f瘮杈冭�楁椂锛屼笉寤鸿杩涜鎵归噺璁惧鎶撳浘锛孲DK鍐呴儴鍙敮鎸�6涓猦ttp璇锋眰骞跺彂锛岃鎺ュ彛浼氭寔缁崰鐢╤ttp璇锋眰璧勬簮锛屽鏋滈亣鍒癶ttp璇锋眰寤舵椂宸ㄥぇ闂锛屼紭鍏堣�冭檻鎶撳浘鎺ュ彛骞跺彂閫犳垚鐨勯棶棰�,
+ *  鎶撳浘灏嗗湪鏈嶅姟鍣ㄧ淇濈暀2涓皬鏃�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)captureCamera:(NSString *)deviceSerial
+                               cameraNo:(NSInteger)cameraNo
+                             completion:(void (^)(NSString *url, NSError *error))completion;
+
+/**
+ *  璁剧疆璁惧閫氶亾鐨勬竻鏅板害
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param videoLevel   閫氶亾娓呮櫚搴︼紝0-娴佺晠锛�1-鍧囪 锛�2-楂樻竻锛�3-瓒呮竻
+ *  @param completion   鍥炶皟block锛屾棤error琛ㄧず璁剧疆鎴愬姛
+ *  @see 濡傛灉鏄鍦ㄦ挱鏀炬椂璋冪敤璇ユ帴鍙o紝璁剧疆娓呮櫚搴︽垚鍔熶互鍚庡繀椤昏EZPlayer璋冪敤stopRealPlay鍐嶈皟鐢╯tartRealPlay閲嶆柊鍙栨祦鎵嶆垚瀹屾垚鐢婚潰娓呮櫚搴︾殑鍒囨崲銆�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setVideoLevel:(NSString *)deviceSerial
+                               cameraNo:(NSInteger)cameraNo
+                             videoLevel:(EZVideoLevelType)videoLevel
+                             completion:(void (^)(NSError *error))completion;
+
+/**
+ *  璁惧璁剧疆甯冮槻鐘舵�侊紝鍏煎A1鍜孖PC璁惧鐨勫竷闃�
+ *
+ *  @param defence      甯冮槻鐘舵��, IPC甯冮槻鐘舵�佸彧鏈�0鍜�1锛孉1鏈�0:鐫$湢 8:鍦ㄥ 16:澶栧嚭
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param completion   鍥炶皟block锛宔rror涓虹┖琛ㄧず璁剧疆鎴愬姛
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setDefence:(EZDefenceStatus)defence
+                        deviceSerial:(NSString *)deviceSerial
+                          completion:(void (^)(NSError *error))completion;
+
+#pragma mark - 浜戝彴鎺у埗Api
+
+/**
+ *  PTZ 鎺у埗鎺ュ彛
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param command      ptz鎺у埗鍛戒护
+ *  @param action       鎺у埗鍚姩/鍋滄
+ *  @param speed        浜戝彴閫熷害锛�0-鎱紝1-閫備腑锛�2-蹇�
+ *  @param resultBlock  鍥炶皟block锛屽綋error涓虹┖鏃惰〃绀烘搷浣滄垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)controlPTZ:(NSString *)deviceSerial
+                            cameraNo:(NSInteger)cameraNo
+                             command:(EZPTZCommand)command
+                              action:(EZPTZAction)action
+                               speed:(NSInteger)speed
+                              result:(void (^)(NSError *error))resultBlock;
+
+/**
+ *  鎽勫儚澶存樉绀烘帶鍒舵帴鍙�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *  @param command      鏄剧ず鎺у埗鍛戒护
+ *  @param resultBlock  鍥炶皟block锛屽綋error涓虹┖鏃惰〃绀烘搷浣滄垚鍔�
+ */
++ (void)controlVideoFlip:(NSString *)deviceSerial
+                cameraNo:(NSInteger)cameraNo
+                 command:(EZDisplayCommand)command
+                  result:(void (^)(NSError *error))resultBlock;
+
+#pragma mark - 鍛婅鐩稿叧Api
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙疯幏鍙栧憡璀︿俊鎭垪琛紝璁惧搴忓垪鍙蜂负nil鏃舵煡璇㈡暣涓处鎴蜂笅鐨勫憡璀︿俊鎭垪琛�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param pageIndex    鍒嗛〉褰撳墠椤电爜锛堜粠0寮�濮嬶級
+ *  @param pageSize     鍒嗛〉姣忛〉鏁伴噺锛堝缓璁�20浠ュ唴锛�
+ *  @param beginTime    鎼滅储鏃堕棿鑼冨洿寮�濮嬫椂闂�
+ *  @param endTime      鎼滅储鏃堕棿鑼冨洿缁撴潫鏃堕棿
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZAlarmInfo鐨勫璞℃暟鎹拰鏌ヨ鏃堕棿鑼冨洿鍐呯殑鍛婅涓暟鐨勬�绘暟锛岄敊璇椂杩斿洖閿欒鐮�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getAlarmList:(NSString *)deviceSerial
+                             pageIndex:(NSInteger)pageIndex
+                              pageSize:(NSInteger)pageSize
+                             beginTime:(NSDate *)beginTime
+                               endTime:(NSDate *)endTime
+                            completion:(void (^)(NSArray *alarmList, NSInteger totalCount, NSError *error))completion;
+
+/**
+ *  鍛婅鍥剧墖瑙e瘑鏂规硶锛岃澶囧姞瀵�
+ *
+ *  @param data       闇�瑕佽В瀵嗙殑鏁版嵁
+ *  @param verifyCode 璁惧楠岃瘉鐮�
+ *
+ *  @return 瑙e瘑鐨凬SData瀵硅薄锛屽鏋滆繑鍥炵殑鏁版嵁鏄┖鐨勶紝璇锋鏌ュ瘑鐮佹槸鍚︽纭垨鑰呬紶鍏ョ殑鏁版嵁鏄惁姝g‘銆�
+ */
++ (NSData *)decryptData:(NSData *)data verifyCode:(NSString *)verifyCode;
+
+/**
+ *  鍛婅鍥剧墖瑙e瘑鏂规硶锛岃澶囧姞瀵�
+ *
+ *  @param data       闇�瑕佽В瀵嗙殑鏁版嵁
+ *  @param verifyCode 璁惧楠岃瘉鐮�
+ *  @param type 1:璁惧鍔犲瘑锛�2锛氬钩鍙板姞瀵�
+ *
+ *  @return 瑙e瘑鐨凬SData瀵硅薄锛屽鏋滆繑鍥炵殑鏁版嵁鏄┖鐨勶紝璇锋鏌ュ瘑鐮佹槸鍚︽纭垨鑰呬紶鍏ョ殑鏁版嵁鏄惁姝g‘銆�
+ */
++ (NSData *)decryptData:(NSData *)data verifyCode:(NSString *)verifyCode encryptType:(NSInteger)type;
+
+/**
+ *  璁剧疆鍛婅淇℃伅涓哄凡璇绘帴鍙�
+ *
+ *  @param alarmIds   鍛婅淇℃伅Id鏁扮粍(鍙互鍙湁涓�涓狪d)锛屾渶澶氫负10涓猧d,鍚﹀垯浼氭姤閿�
+ *  @param status     鍛婅娑堟伅鐘舵��
+ *  @param completion 鍥炶皟block锛宔rror涓虹┖鏃惰〃绀鸿缃垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setAlarmStatus:(NSArray *)alarmIds
+                             alarmStatus:(EZMessageStatus)status
+                              completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁alarmId鍒犻櫎鍛婅淇℃伅鎺ュ彛
+ *
+ *  @param alarmIds   鍛婅淇℃伅Id鏁扮粍(鍙互鍙湁涓�涓狪d)锛屾渶澶氫负10涓狪d锛屽惁鍒欎細鎶ラ敊
+ *  @param completion 鍥炶皟block锛宔rror涓虹┖鏃惰〃绀哄垹闄ゆ垚鍔�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)deleteAlarm:(NSArray *)alarmIds
+                           completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙疯幏鍙栨湭璇绘秷鎭暟锛岃澶囧簭鍒楀彿涓虹┖鏃惰幏鍙栨墍鏈夎澶囩殑鏈娑堟伅鏁�
+ *
+ *  @param deviceSerial 闇�瑕佽幏鍙栫殑璁惧搴忓垪鍙凤紝涓虹┖鏃惰繑鍥炶处鎴蜂笅鎵�鏈夎澶囩殑鏈娑堟伅鏁�
+ *  @param type         娑堟伅绫诲瀷锛欵ZMessageTypeAlarm 鍛婅娑堟伅锛�1锛夛紝EZMessageTypeLeave 鐣欒█娑堟伅锛�2锛�
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖鏈鏁伴噺锛岄敊璇椂杩斿洖閿欒鐮�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getUnreadMessageCount:(NSString *)deviceSerial
+                                    messageType:(EZMessageType)type
+                                     completion:(void (^)(NSInteger count, NSError *error))completion;
+
+#pragma mark - 璇煶鐣欒█娑堟伅鏁版嵁Api
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙疯幏鍙栬澶囩殑鐣欒█娑堟伅鍒楄〃
+ *
+ *  @param deviceSerial 闇�瑕佽幏鍙栫殑璁惧搴忓垪鍙�
+ *  @param beginTime    寮�濮嬫椂闂�
+ *  @param endTime      缁撴潫鏃堕棿
+ *  @param pageIndex    鍒嗛〉椤电爜
+ *  @param pageSize     鍒嗛〉鍗曢〉鏁伴噺
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZLeaveMessage鐨勫璞℃暟缁勶紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getLeaveMessageList:(NSString *)deviceSerial
+                                    pageIndex:(NSInteger)pageIndex
+                                     pageSize:(NSInteger)pageSize
+                                    beginTime:(NSDate *)beginTime
+                                      endTime:(NSDate *)endTime
+                                   completion:(void (^)(NSArray *leaveMessageList, NSInteger totalCount, NSError *error))completion;
+
+/**
+ *  鏍规嵁leaveId璁剧疆鐣欒█娑堟伅鐘舵��
+ *
+ *  @param leaveIds   鐣欒█娑堟伅Id鏁扮粍(鏈�澶ф暟閲忎负10锛屽厑璁稿彧鏈�1涓�)
+ *  @param status     闇�瑕佽缃殑鐣欒█鐘舵�侊紝鐩墠鍙敮鎸� EZMessageStatusRead(宸茶)
+ *  @param completion 鍥炶皟block锛宔rror涓虹┖琛ㄧず璁剧疆鎴愬姛
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)setLeaveMessageStatus:(NSArray *)leaveIds
+                                  messageStatus:(EZMessageStatus)status
+                                     completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁leaveId鍒犻櫎鐣欒█娑堟伅
+ *
+ *  @param leaveIds   鐣欒█娑堟伅Id鏁扮粍(鏈�澶ф暟閲忎负10锛屽厑璁稿彧鏈�1涓�)
+ *  @param completion 鍥炶皟block锛宔rror涓虹┖琛ㄧず鍒犻櫎鎴愬姛
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)deleteLeaveMessage:(NSArray *)leaveIds
+                                  completion:(void (^)(NSError *error))completion;
+
+/**
+ *  鏍规嵁EZLeaveMessage瀵硅薄淇℃伅鑾峰彇璇煶鐣欒█娑堟伅鏁版嵁鎺ュ彛
+ *  @param message    鐣欒█娑堟伅瀵硅薄
+ *  @param completion 鍥炶皟block 锛坮esultCode = 1 琛ㄧず璇煶涓嬭浇鎴愬姛锛�-1琛ㄧず涓嬭浇澶辫触锛�
+ *
+ *  @return operation
+ */
++ (NSOperation *)getLeaveMessageData:(EZLeaveMessage *)message
+                          completion:(void (^)(NSData *data, NSInteger resultCode))completion;
+
+#pragma mark - VideoTalk瑙嗛閫氳瘽鐩稿叧Api
+
+/**
+ * 鑾峰彇鎵嬭〃鏈嶅姟鐩稿叧淇℃伅
+ * @param deviceId 璁惧搴忓垪鍙�
+ * @param completion operation
+ */
++ (void)requestGetWatchServerInfo:(NSString *)deviceId
+                       completion:(void (^)(id watchServerInfo, NSError *error))completion;
+
+/**
+ * 鍒涘缓浼氳淇℃伅
+ * @param password 鑷畾涔夊瘑鐮�
+ * @param customId 寮�鍙戣�呰嚜瀹氫箟鐢ㄦ埛ID
+ * @param limit 闄愬埗鏈�澶т汉鏁� 鏈�澶�100
+ * @param completion operation
+ */
++ (void)requestCallingMeetingInfo:(NSString *)password
+                         customId:(NSInteger)customId
+                            limit:(NSInteger)limit
+                       completion:(void (^)(int32_t roomId, NSString *vtmAddress, NSString *clientid, NSInteger customId, NSString *controlServerAddress, NSError *error))completion;
+
+/**
+ * 鍔犲叆鏂硅幏鍙栦細璁俊鎭�
+ * @param roomId  鎴块棿鍙�
+ * @param customId 寮�鍙戣�呰嚜瀹氫箟鐢ㄦ埛ID
+ * @param completion operation
+ */
++ (void)requestCalledMeetingInfo:(NSString *)roomId
+                        customId:(NSInteger)customId
+                      completion:(void (^)(int32_t roomId, NSString *vtmAddress,NSString *clientid, NSInteger customId, NSString *controlServerAddress, NSError *error))completion;
+
+/**
+ *  閭�璇疯澶囪繘鍏ユ埧闂�
+ *  @param roomId                                鎴块棿鍙�
+ *  @param deviceSerial                   璁惧搴忓垪鍙�
+ *  @param channelNo                         閫氶亾鍙�
+ *  @param streamType                       涓诲瓙鐮佹祦 1-涓荤爜娴侊紝2-瀛愮爜娴侊紝mode涓�2鏃跺彲涓嶄紶
+ *  @param mode                                    鍔犲叆妯″紡 1-鍙屽悜闊宠棰戞ā寮忥紙榛樿锛夛紝2-瀵硅妯″紡
+ *  @param maxActiveSeconds         鍏ヤ細鏈�闀挎椂闂达紙绉掞級
+ *  @param completion                       鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)inviteDeviceEnterMeeting:(NSString *)roomId
+                                      deviceSerial:(NSString *)deviceSerial
+                                         channelNo:(NSInteger)channelNo
+                                        streamType:(NSInteger)streamType
+                                              mode:(NSInteger)mode
+                                  maxActiveSeconds:(NSInteger)maxActiveSeconds
+                                        completion:(void (^)(NSError *error))completion;
+
+/**
+ *  寮哄埗璁惧閫�鍑烘埧闂�
+ *  @param roomId                                鎴块棿鍙�
+ *  @param deviceSerial                   璁惧搴忓垪鍙�
+ *  @param channelNo                         閫氶亾鍙�
+ *  @param completion                       鍥炶皟block
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)kickoutDeviceMoveOutRoom:(NSString *)roomId
+                                      deviceSerial:(NSString *)deviceSerial
+                                         channelNo:(NSInteger)channelNo
+                                        completion:(void (^)(NSError *error))completion;
+
+#pragma mark - WiFi閰嶇綉鐩稿叧Api
+
+/**
+ *  灏濊瘯鏌ヨ璁惧淇℃伅锛岃澶嘩ifi閰嶇疆鍓嶆煡璇竴娆¤澶囩殑淇℃伅
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param deviceType 璁惧鍨嬪彿锛屾棤娉曡幏鍙栧埌璁惧鍨嬪彿鍒欏彲浼爊il
+ *  @param completion   鍥炶皟block锛屾甯告椂杩斿洖EZProbeDeviceInfo瀵硅薄锛岄敊璇爜杩斿洖閿欒鐮�
+ *  @see 鍏ㄦ柊鐨勮澶囨槸娌℃湁娉ㄥ唽鍒板钩鍙扮殑锛屾墍浠ヤ細鍑虹幇璁惧涓嶅瓨鍦ㄧ殑鎯呭喌锛岃澶噖ifi閰嶇疆鎴愬姛浠ュ悗浼氫笂鎶ユ暟鎹埌钀ょ煶浜戝钩鍙帮紝浠ュ悗姣忔鏌ヨ灏变笉浼氬嚭鐜拌澶囦笉瀛樺湪鐨勬儏鍐典簡銆�
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)probeDeviceInfo:(NSString *)deviceSerial
+                               deviceType:(NSString *)deviceType
+                               completion:(void (^)(EZProbeDeviceInfo *deviceInfo, NSError *error))completion;
+
+/**
+ *  WiFi閰嶇疆寮�濮嬫帴鍙�
+ *
+ *  @param ssid         杩炴帴WiFi SSID
+ *  @param password     杩炴帴WiFi 瀵嗙爜
+ *  @param deviceSerial 杩炴帴WiFi鐨勮澶囩殑璁惧搴忓垪鍙�
+ *  @param statusBlock  杩斿洖杩炴帴璁惧鐨刉iFi閰嶇疆鐘舵��
+ *
+ *  @return YES/NO
+ */
++ (BOOL)startConfigWifi:(NSString *)ssid
+               password:(NSString *)password
+           deviceSerial:(NSString *)deviceSerial
+           deviceStatus:(void (^)(EZWifiConfigStatus status))statusBlock;
+
+/**
+ *  WiFi閰嶇疆寮�濮嬫帴鍙�
+ *
+ *  @param ssid         杩炴帴WiFi SSID
+ *  @param password     杩炴帴WiFi 瀵嗙爜
+ *  @param deviceSerial 杩炴帴WiFi鐨勮澶囩殑璁惧搴忓垪鍙�,鎵归噺閰嶇疆鏃跺~nil
+ *  @param mode         閰嶇綉鐨勬柟寮忥紝EZWiFiConfigMode涓垪涓剧殑妯″紡杩涜浠绘剰缁勫悎,渚嬪:EZWiFiConfigSmart|EZWiFiConfigWave
+ *  @param statusBlock  杩斿洖璁惧搴忓垪鍙蜂互鍙婂綋鍓嶈繛鎺ョ姸鎬�
+ *
+ *  @return YES/NO
+ */
++ (BOOL)startConfigWifi:(NSString *)ssid
+               password:(NSString *)password
+           deviceSerial:(NSString *)deviceSerial
+                   mode:(NSInteger)mode
+           deviceStatus:(void (^)(EZWifiConfigStatus status, NSString *deviceSerial))statusBlock;
+
+/**
+ *  WiFi閰嶇疆寮�濮嬫帴鍙�
+ *
+ *  @param ssid         杩炴帴WiFi SSID
+ *  @param password     杩炴帴WiFi 瀵嗙爜
+ *  @param deviceSerial 杩炴帴WiFi鐨勮澶囩殑璁惧搴忓垪鍙�,鎵归噺閰嶇疆鏃跺~nil
+ *  @param mode         閰嶇綉鐨勬柟寮忥紝EZWiFiConfigMode涓垪涓剧殑妯″紡杩涜浠绘剰缁勫悎,渚嬪:EZWiFiConfigSmart|EZWiFiConfigWave
+ *  @param apiUrl    鎸囧畾鍘诲摢涓钩鍙版煡璇�
+ *  @param statusBlock  杩斿洖璁惧搴忓垪鍙蜂互鍙婂綋鍓嶈繛鎺ョ姸鎬�
+ *
+ *  @return YES/NO
+ */
++ (BOOL)startConfigWifi:(NSString *)ssid
+               password:(NSString *)password
+           deviceSerial:(NSString *)deviceSerial
+                   mode:(NSInteger)mode
+                 apiUrl:(NSString *)apiUrl
+           deviceStatus:(void (^)(EZWifiConfigStatus status,NSString *deviceSerial))statusBlock;
+
+/**
+ *  @since 3.0.0
+ *  Wifi閰嶇疆鍋滄鎺ュ彛
+ *
+ *  @return YES/NO
+ */
++ (BOOL)stopConfigWifi;
+
+#pragma mark - AP閰嶇綉鐩稿叧Api
+
+/**
+ * AP閰嶇綉鎺ュ彛
+ *
+ * @param ssid WiFi鐨剆sid
+ * @param password WiFi鐨勫瘑鐮�
+ * @param deviceSerial 璁惧搴忓垪鍙�
+ * @param verifyCode 璁惧楠岃瘉鐮�
+ * @param callback 缁撴灉鍥炶皟锛屾敞鎰忥細杩斿洖YES浠呬粎浠h〃鎴愬姛灏哤iFi淇℃伅鍙戦�佺粰璁惧锛屼笉浠h〃璁惧閰嶇綉鎴愬姛
+ * @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)startAPConfigWifiWithSsid:(NSString *)ssid
+                         password:(NSString *)password
+                     deviceSerial:(NSString *)deviceSerial
+                       verifyCode:(NSString *)verifyCode
+                           result:(void (^)(BOOL ret))callback;
+
+/**
+ * AP閰嶇綉鎺ュ彛锛堟帹鑽愶紝v5.0鏂板锛屽皝瑁呬簡璁惧鐘舵�佽疆璇㈡楠わ級
+ *
+ * @param ssid WiFi鐨剆sid
+ * @param password WiFi鐨勫瘑鐮�
+ * @param deviceSerial 璁惧搴忓垪鍙�
+ * @param verifyCode 璁惧楠岃瘉鐮�
+ * @param statusBlock 缁撴灉鍥炶皟锛岃繑鍥為厤缃戣繃绋嬩腑鐨勫悇绉嶇姸鎬�
+ *
+ * @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)startAPConfigWifiWithSsid:(NSString *)ssid
+                         password:(NSString *)password
+                     deviceSerial:(NSString *)deviceSerial
+                       verifyCode:(NSString *)verifyCode
+                     deviceStatus:(void (^)(EZWifiConfigStatus status, NSString *deviceSerial))statusBlock;
+
+/**
+ * 鍋滄AP閰嶇綉
+ */
++ (void)stopAPConfigWifi;
+
+#pragma mark - 鎺ヨЕ寮忛厤缃� New AP Config
+
+/**
+ * 鑾峰彇鎺ヨЕ寮廇P閰嶇綉token
+ *
+ * @param completion 鍥炶皟
+ *
+ * @return operation
+ */
++ (NSURLSessionDataTask *)getNewApConfigToken:(void(^)(EZConfigTokenInfo *tokenInfo, NSError *error))completion;
+
+/**
+ * 寮�濮婲ewAP閰嶇綉锛堥渶杩炴帴璁惧鐑偣锛�
+ * @param token 閰嶇綉token
+ * @param ssid WiFi ssid
+ * @param password WiFi 瀵嗙爜
+ * @param lbsDomain lbs 鍩熷悕
+ * @param handler 鍥炶皟
+ *
+ * @return 鎴愬姛鎴栧け璐�
+ */
++ (BOOL)startNewApConfigWithToken:(NSString *)token
+                             ssid:(NSString *)ssid
+                         password:(NSString *)password
+                        lbsDomain:(NSString *)lbsDomain
+                completionHandler:(void(^)(EZNewAPConfigStatus status, NSError *error))handler;
+
+/**
+ * 鑾峰彇璁惧鐘舵�侊紙闇�杩炴帴璁惧鐑偣锛�
+ *
+ * @param handler 鍥炶皟
+ */
++ (void)getAccessDeviceInfo:(void(^)(EZAPDevInfo *devInfo, NSError *error))handler;
+
+/**
+ * 鑾峰彇璁惧褰撳墠鍛ㄨ竟WiFi鍒楄〃锛屼笂闄�20涓紙闇�杩炴帴璁惧鐑偣锛�
+ *
+ * @param handler 鍥炶皟
+ */
++ (void)getAccessDeviceWifiList:(void(^)(NSArray<EZWiFiItemInfo*> *wifiList, NSError *error))handler;
+
+/**
+ * 鏌ヨ璁惧缁戝畾鐘舵��
+ * @param deviceSerial 璁惧搴忓垪鍙�
+ * @param completion 鍥炶皟block锛屾甯告椂杩斿洖EZProbeDeviceInfo瀵硅薄锛岄敊璇爜杩斿洖閿欒鐮�
+ *
+ * @return 鎴愬姛鎴栧け璐�
+ */
++ (NSURLSessionDataTask *)queryPlatformBindStatus:(NSString *)deviceSerial
+                                       completion:(void(^)(EZProbeDeviceInfo *deviceInfo, NSError *error))completion;
+
+/**
+ * 璁剧疆閰嶇綉璁惧缃戝叧鍦板潃 鍙��
+ * @param devRouteDomain 璁惧缃戝叧鍦板潃
+ */
++ (void)setDevRouteDomain:(NSString *)devRouteDomain;
+
+#pragma mark - 鐢ㄦ埛鐩稿叧Api
+
+/**
+ *  鑾峰彇鐢ㄦ埛鍩烘湰淇℃伅鐨勬帴鍙�
+ *
+ *  @param completion 鍥炶皟block锛� 姝e父鏃惰繑鍥濫ZUserInfo鐨勫璞★紝閿欒鏃惰繑鍥為敊璇爜
+ *
+ *  @return operation
+ */
++ (NSURLSessionDataTask *)getUserInfo:(void (^)(EZUserInfo *userInfo, NSError *error))completion;
+
+#pragma mark - 鍏朵粬Api
+
+/**
+ *  鑾峰彇缁堢锛堟墜鏈虹瓑锛夊敮涓�璇嗗埆鐮�
+ *
+ *  @return 缁堢鍞竴璇嗗埆鐮�
+ */
++ (NSString *)getTerminalId;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZPlayer.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZPlayer.h
new file mode 100644
index 0000000..baea2e2
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZPlayer.h
@@ -0,0 +1,446 @@
+//
+//  EZPlayer.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/9/16.
+//  Copyright (c) 2015骞� Ezviz. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@class EZDeviceRecordFile;
+@class EZCloudRecordFile;
+@class EZPlayer;
+@class EZPlayerExParamInfo;
+@class EZDevicePtzAngleInfo;
+@class EZPMPlayPrivateTokenInfo;
+
+/**
+ *  棰勮娓呮櫚搴�
+ */
+typedef NS_ENUM(NSInteger, EZVideoQuality) {
+    EZVideoQualityLow    = 0,  //娴佺晠
+    EZVideoQualityMiddle = 1,  //鍧囪 
+    EZVideoQualityHigh   = 2   //楂樻竻
+};
+
+/* 鎾斁鍣‥ZPlayer鐨勭姸鎬佹秷鎭畾涔� */
+typedef NS_ENUM(NSInteger, EZMessageCode) {
+    PLAYER_REALPLAY_START = 1,        //鐩存挱寮�濮�
+    PLAYER_VIDEOLEVEL_CHANGE = 2,     //鐩存挱娴佹竻鏅板害鍒囨崲涓�
+    PLAYER_STREAM_RECONNECT = 3,      //鐩存挱娴佸彇娴佹鍦ㄩ噸杩�
+    PLAYER_VOICE_TALK_START = 4,      //瀵硅寮�濮�
+    PLAYER_VOICE_TALK_END = 5,        //瀵硅缁撴潫
+    PLAYER_STREAM_START = 10,         //褰曞儚鍙栨祦寮�濮�
+    PLAYER_PLAYBACK_START = 11,       //褰曞儚鍥炴斁寮�濮嬫挱鏀�
+    PLAYER_PLAYBACK_STOP = 12,        //褰曞儚鍥炴斁缁撴潫鎾斁
+    PLAYER_PLAYBACK_FINISHED = 13,    //褰曞儚鍥炴斁琚敤鎴峰己鍒朵腑鏂�
+    PLAYER_PLAYBACK_PAUSE = 14,       //褰曞儚鍥炴斁鏆傚仠
+    PLAYER_NET_CHANGED = 21,          //鎾斁鍣ㄦ娴嬪埌wifi鍙樻崲杩�
+    PLAYER_NO_NETWORK = 22,           //鎾斁鍣ㄦ娴嬪埌鏃犵綉缁�
+    PLAYER_CLOUD_IFRAME_CHANGED = 23, //浜戝瓨鍌ㄥ揩鏀炬椂锛岀敱鍏ㄥ抚蹇斁鍒囨崲鍒版娊甯у揩鏀剧殑鎻愮ず鍥炶皟
+    PLAYER_PLAYSPEED_LOWER = 24,      //浜戝瓨鍌ㄥ揩鏀炬椂鐨勯檷閫熼�氱煡(瀛樺湪涓ゆ闄嶉�燂細褰撳墠鍊嶉�熷ぇ浜�4鍊嶉�熸椂锛岄檷鍒�4鍊嶉�燂紱褰撳墠涓�4鍊嶉�熸椂锛岄檷涓�1鍊嶉��)
+};
+
+
+/**
+ *  鍥炴斁閫熺巼
+ */
+typedef NS_ENUM(NSInteger, EZPlaybackRate) {
+    EZOPENSDK_PLAY_RATE_1_16 = 9,  //浠�1/16鍊嶉�熷害鎾斁
+    EZOPENSDK_PLAY_RATE_1_8 = 7,   //浠�1/8鍊嶉�熷害鎾斁
+    EZOPENSDK_PLAY_RATE_1_4 = 5,   //浠�1/4鍊嶉�熷害鎾斁
+    EZOPENSDK_PLAY_RATE_1_2 = 3,   //浠�1/2鍊嶉�熸挱鏀�
+    EZOPENSDK_PLAY_RATE_1 = 1,     //浠ユ甯搁�熷害鎾斁
+    EZOPENSDK_PLAY_RATE_2 = 2,     //浠�2鍊嶉�熸挱鏀�
+    EZOPENSDK_PLAY_RATE_4 = 4,     //浠�4鍊嶉�熷害鎾斁
+    EZOPENSDK_PLAY_RATE_8 = 6,     //浠�8鍊嶉�熷害鎾斁
+    EZOPENSDK_PLAY_RATE_16 = 8,    //浠�16鍊嶉�熷害鎾斁
+    EZOPENSDK_PLAY_RATE_32 = 10,   //浠�32鍊嶉�熷害鎾斁
+};
+
+/// 钀ょ煶鎾斁鍣╠elegate鏂规硶
+@protocol EZPlayerDelegate <NSObject>
+
+@optional
+/**
+ *  鎾斁鍣ㄦ挱鏀惧け璐ラ敊璇洖璋�
+ *
+ *  @param player 鎾斁鍣ㄥ璞�
+ *  @param error  鎾斁鍣ㄩ敊璇�
+ */
+- (void)player:(EZPlayer *)player didPlayFailed:(NSError *)error;
+
+/**
+ *  鎾斁鍣ㄦ秷鎭洖璋�
+ *
+ *  @param player      鎾斁鍣ㄥ璞�
+ *  @param messageCode 鎾斁鍣ㄦ秷鎭爜锛岃瀵圭収EZOpenSDK澶存枃浠朵腑鐨凟ZMessageCode浣跨敤
+ */
+- (void)player:(EZPlayer *)player didReceivedMessage:(NSInteger)messageCode;
+
+/**
+ *  璇ユ柟娉曞簾寮冧簬v4.8.8鐗堟湰锛屽簳灞傚簱涓嶅啀鏀寔銆傝浣跨敤getStreamFlow鏂规硶
+ *  鏀跺埌鐨勬暟鎹暱搴︼紙姣忕璋冪敤涓�娆★級
+ *
+ *  @param player     鎾斁鍣ㄥ璞�
+ *  @param dataLength 鎾斁鍣ㄦ祦濯掍綋鏁版嵁鐨勯暱搴︼紙姣忕瀛楄妭鏁帮級
+ */
+- (void)player:(EZPlayer *)player didReceivedDataLength:(NSInteger)dataLength DEPRECATED_MSG_ATTRIBUTE("use getStreamFlow instead");
+
+/**
+ *  鏀跺埌鐨勭敾闈㈤暱瀹藉��
+ *
+ *  @param player 鎾斁鍣ㄥ璞�
+ *  @param height 楂樺害
+ *  @param width  瀹藉害
+ */
+- (void)player:(EZPlayer *)player didReceivedDisplayHeight:(NSInteger)height displayWidth:(NSInteger)width;
+
+/**
+ * 璁惧浜戝彴瑙掑害鏁版嵁鍥炶皟
+ *
+ * @param player 鎾斁鍣ㄥ璞�
+ * @param info 绉佹湁鏁版嵁
+ */
+- (void)player:(EZPlayer *)player didReceivedDevicePtzAngleInfo:(EZDevicePtzAngleInfo *)info;
+
+/**
+ * 鎾斁杩囩▼涓� 鍥炶皟瑙g爜鏁版嵁
+ * 閲嶈锛氳鍥炶皟浼氭瘮杈冮绻�(涓�绉掕嫢骞叉)锛屽悓鏃剁洿鎺ョ敱鎾斁搴撶嚎绋嬪洖璋冧笂鏉ワ紝璇峰嬁鍦ㄦ柟娉曚腑鍋氳�楁椂鎿嶄綔
+ * 閲嶈锛氬洖璋冪殑鏁版嵁鐨勫唴瀛樻槸鐢辨挱鏀惧簱鍐呴儴鍒嗛厤骞剁鐞嗙殑锛屽湪浣跨敤鏃讹紝璇峰悓姝ュ鐞嗗洖璋冪殑data锛涘闇�寮傛澶勭悊锛岃鎷疯礉璇ユ暟鎹�
+ *
+ * @param player 鎾斁鍣ㄥ璞�
+ * @param data 鎾斁搴撹В鐮佸嚭鐨勬暟鎹�
+ * @param width 瑙嗛瀹藉害
+ * @param height 瑙嗛楂樺害
+ */
+- (void)player:(EZPlayer *)player didDecodedData:(NSData *)data width:(NSInteger)width height:(NSInteger)height;
+
+/**
+ * 鍙栨祦鏁版嵁涓幏鍙栧紑闂╰oken鍥炶皟
+ *
+ * @param player 鎾斁鍣ㄥ璞�
+ * @param tokenInfo token瀵硅薄
+ */
+- (void)player:(EZPlayer *)player playPrivateTokenInfo:(EZPMPlayPrivateTokenInfo *)tokenInfo;
+
+@end
+
+/// 姝ょ被涓鸿悿鐭虫挱鏀惧櫒绫�
+@interface EZPlayer : NSObject
+
+/// EZPlayer鍏宠仈鐨刣elegate
+@property (nonatomic, weak) id<EZPlayerDelegate> delegate;
+
+/// 鏄惁璁╂挱鏀惧櫒澶勭悊杩涘叆鍚庡彴,YES:鑷姩澶勭悊;NO:涓嶅鐞�,榛樿涓篩ES
+@property (nonatomic, assign) BOOL backgroundModeByPlayer;
+
+/**
+ *  鏍规嵁璁惧搴忓垪鍙峰拰閫氶亾鍙峰垱寤篍ZPlayer瀵硅薄
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     閫氶亾鍙�
+ *
+ *  @return EZPlayer瀵硅薄
+ */
++ (instancetype)createPlayerWithDeviceSerial:(NSString *)deviceSerial cameraNo:(NSInteger)cameraNo;
+//for 鍥芥爣
++ (instancetype)createPlayerWithDeviceSerial:(NSString *)deviceSerial strCameraNo:(NSString *)strCameraNo;
+/**
+ *  鏍规嵁url鏋勯�燛ZPlayer瀵硅薄 锛堜富瑕佺敤鏉ュ鐞嗚棰戝箍鍦虹殑鎾斁锛�
+ *
+ *  @param url 鎾斁url
+ *
+ *  @return EZPlayer瀵硅薄
+ */
++ (instancetype)createPlayerWithUrl:(NSString *)url;
+
+
+/**
+ 灞�鍩熺綉璁惧鍒涘缓鎾斁鍣ㄦ帴鍙�
+
+ @param userId 鐢ㄦ埛id锛岀櫥褰曞眬鍩熺綉璁惧鍚庤幏鍙�
+ @param cameraNo 閫氶亾鍙�
+ @param streamType 鐮佹祦绫诲瀷 1:涓荤爜娴� 2:瀛愮爜娴�
+ @return EZPlayer瀵硅薄
+ */
++ (instancetype)createPlayerWithUserId:(NSInteger)userId cameraNo:(NSInteger)cameraNo streamType:(NSInteger)streamType;
+
+/**
+ *  @since 4.19.2
+ *  涓�涓〉闈㈠瓨鍦ㄥ涓棰戜娇鐢ㄦ渶灏忕殑鐮佹祦锛屾病鏈夊瓙鐮佹祦鐨勮瘽杩樻槸浣跨敤涓荤爜娴�
+ *
+ *  @param deviceSerial 璁惧搴忓垪鍙�
+ *  @param cameraNo     铏氭嫙閫氶亾
+ *  @param useSubStream   鏄惁浣跨敤瀛愮爜娴�
+ *
+ *  @return EZPlayer瀵硅薄
+ */
++ (instancetype)createPlayerWithDeviceSerial:(NSString *)deviceSerial cameraNo:(NSInteger)cameraNo useSubStream:(BOOL)useSubStream;
+
+/**
+ *  閿�姣丒ZPlayer
+ *
+ *  @return YES/NO;
+ */
+- (BOOL)destoryPlayer;
+
+/**
+ *  璁剧疆浣跨敤纭欢瑙g爜鍣ㄤ紭鍏堬紝闇�鍦╯tartRealPlay涔嬪墠璋冪敤
+ *
+ *  @param HDPriority 鏄惁纭В浼樺厛
+ */
+- (void)setHDPriority:(BOOL)HDPriority;
+
+/**
+ 鑾峰彇褰撳墠鐨勮蒋纭В鎯呭喌锛屽湪鐮佹祦姝e父鎾斁鍚庤皟鐢�
+ 
+ @return 1锛氳蒋瑙� 2锛氱‖瑙� 0锛氬嚭閿�
+ */
+- (int)getHDPriorityStatus;
+
+/**
+ *  璁剧疆璁惧褰掑睘涓氬姟鏉ユ簮锛岄渶瑕佸湪棰勮鍥炴斁鍓嶈皟鐢�  鍥芥爣璁惧浣跨敤
+ *
+ *  @param bizType 绫诲瀷       鍥芥爣涓� bizType='GB28181'
+ */
+- (void)setBizType:(NSString *)bizType;
+
+/**
+ *  骞冲彴id 鍥芥爣璁惧浣跨敤
+ *
+ *  @param platformId 绫诲瀷
+*/
+-(void)setPlatformId:(NSString *)platformId;
+
+/**
+ *  璁剧疆鎾斁鍣ㄧ殑view
+ *
+ *  @param playerView 鎾斁鍣╲iew
+ */
+- (void)setPlayerView:(UIView *)playerView;
+
+/**
+ *  鏄惁闈欓煶鎾斁锛宻tartRealPlay涔嬪墠璋冪敤
+ *
+ *  @param isSilencePlay 鏄惁闈欓煶鎾斁
+ */
+- (void)setSilencePlay:(BOOL)isSilencePlay;
+
+/**
+ *  寮�濮嬫挱鏀撅紝寮傛鎺ュ彛锛岃繑鍥炲�煎彧鏄〃绀烘搷浣滄垚鍔燂紝涓嶄唬琛ㄦ挱鏀炬垚鍔�
+ *
+ *  @return YES/NO
+ */
+- (BOOL)startRealPlay;
+
+/**
+ *  鍋滄鎾斁锛屽紓姝ユ帴鍙o紝杩斿洖鍊煎彧鏄〃绀烘搷浣滄垚鍔�
+ *
+ *  @return YES/NO
+ */
+- (BOOL)stopRealPlay;
+
+/**
+ *  璁剧疆鎾斁鍣ㄨВ鐮佸瘑鐮�
+ *
+ *  @param verifyCode 璁惧楠岃瘉鐮�
+ */
+- (void)setPlayVerifyCode:(NSString *)verifyCode;
+
+/**
+ *  寮�鍚0闊�
+ *
+ *  @return YES/NO
+ */
+- (BOOL)openSound;
+
+/**
+ *  鍏抽棴澹伴煶
+ *
+ *  @return YES/NO
+ */
+- (BOOL)closeSound;
+
+/**
+ 鑾峰彇鎾斁缁勪欢鍐呴儴鐨勬挱鏀惧簱鐨刾ort
+ 
+ @return 鎾斁搴撶殑port,鍙兘涓�-1锛堟棤鏁堝�硷級
+ */
+- (int)getInnerPlayerPort;
+
+/**
+ 鑾峰彇褰撳墠宸叉挱鏀剧殑鎬绘祦閲忥紝鍗曚綅瀛楄妭
+ eg.璁$畻姣忕鐨勬祦閲忥細
+ NSInteger a = [self getStreamFlow];
+ //1s鍚庤皟鐢�
+ NSInteger b = [self getStreamFlow];
+ NSInteger perSecondFlow = b - a;
+ 
+ @return 娴侀噺鍊�
+ */
+- (NSInteger)getStreamFlow;
+
+/**
+ *  寮�濮婽TS瀵硅锛屽紓姝ユ帴鍙o紝杩斿洖鍊煎彧鏄〃绀烘搷浣滄垚鍔燂紝涓嶄唬琛ㄦ挱鏀炬垚鍔�
+ *
+ *  @return YES/NO
+ */
+- (BOOL)startVoiceTalk;
+
+/**
+ *  寮�濮婽TS瀵硅锛屽紓姝ユ帴鍙o紝杩斿洖鍊煎彧鏄〃绀烘搷浣滄垚鍔燂紝涓嶄唬琛ㄦ挱鏀炬垚鍔�
+ *  閽堝浜嶯VR瀵硅浣跨敤
+ *  @return YES/NO
+ */
+- (BOOL)startVoiceTalkNeedVoiceChannel:(BOOL)needVoiceChannel;
+
+/**
+ *  寮�濮婹os瀵硅锛屽紓姝ユ帴鍙o紝杩斿洖鍊煎彧鏄〃绀烘搷浣滄垚鍔燂紝涓嶄唬琛ㄦ挱鏀炬垚鍔�
+ *
+ *  @return YES/NO
+ */
+- (BOOL)startVoiceTalkByQos;
+
+/**
+ *  鍋滄瀵硅锛屽紓姝ユ帴鍙o紝杩斿洖鍊煎彧鏄〃绀烘搷浣滄垚鍔�
+ *
+ *  @return YES/NO
+ */
+- (BOOL)stopVoiceTalk;
+
+/**
+ 棰勮鏃跺紑濮嬫湰鍦板綍鍍忛褰曞埗鍔熻兘锛屽紓姝ユ柟娉�
+ 
+ @param path 鏂囦欢瀛樺偍璺緞
+ @return YES/NO
+ */
+- (BOOL)startLocalRecordWithPathExt:(NSString *)path;
+
+
+/**
+ 缁撴潫鏈湴褰曞儚棰勫綍鍒讹紝骞剁敓鎴恗p4褰曞埗鏂囦欢锛屽紓姝ユ柟娉�
+ 
+ @param complete 鎿嶄綔鏄惁鎴愬姛 YES/NO
+ */
+- (void)stopLocalRecordExt:(void (^)(BOOL ret))complete;
+
+
+/**
+ *  鍗婂弻宸ュ璁蹭笓鐢ㄦ帴鍙o紝鏄惁鍒囨崲鍒板惉璇寸姸鎬�
+ *
+ *  @param isPressed 鏄惁鍙鐘舵��
+ *
+ *  @return YES/NO
+ */
+- (BOOL)audioTalkPressed:(BOOL)isPressed;
+
+/**
+ *  寮�濮嬩簯瀛樺偍杩滅▼鍥炴斁锛屽紓姝ユ帴鍙o紝杩斿洖鍊煎彧鏄〃绀烘搷浣滄垚鍔燂紝涓嶄唬琛ㄦ挱鏀炬垚鍔�
+ *  @param cloudFile 浜戝瓨鍌ㄦ枃浠朵俊鎭�
+ *
+ *  @return YES/NO
+ */
+- (BOOL)startPlaybackFromCloud:(EZCloudRecordFile *)cloudFile;
+
+/**
+ *  寮�濮嬭繙绋婼D鍗″洖鏀撅紝寮傛鎺ュ彛锛岃繑鍥炲�煎彧鏄〃绀烘搷浣滄垚鍔燂紝涓嶄唬琛ㄦ挱鏀炬垚鍔�
+ *
+ *  @param deviceFile SD鍗℃枃浠朵俊鎭�
+ *
+ *  @return YES/NO
+ */
+- (BOOL)startPlaybackFromDevice:(EZDeviceRecordFile *)deviceFile;
+
+/**
+ *  鏆傚仠杩滅▼鍥炴斁鎾斁
+ */
+- (BOOL)pausePlayback;
+
+/**
+ *  缁х画杩滅▼鍥炴斁鎾斁
+ */
+- (BOOL)resumePlayback;
+
+/**
+ *  鏍规嵁鍋忕Щ鏃堕棿鎾斁
+ *
+ *  @param offsetTime 褰曞儚鍋忕Щ鏃堕棿
+ */
+- (void)seekPlayback:(NSDate *)offsetTime;
+
+/**
+ *  鑾峰彇褰撳墠鎾斁鏃堕棿杩涘害
+ *
+ *  @return 鎾斁杩涘害鐨凬SDate鏁版嵁
+ */
+- (NSDate *)getOSDTime;
+
+/**
+ *  鍋滄杩滅▼鍥炴斁
+ */
+- (BOOL)stopPlayback;
+
+/**
+ *  鐩存挱鐢婚潰鎶撳浘
+ *
+ *  @param quality 鎶撳浘璐ㄩ噺锛�0锝�100锛�,鏁板�艰秺澶у浘鐗囪川閲忚秺濂斤紝鍥剧墖澶у皬瓒婂ぇ
+ *
+ *  @return image
+ */
+- (UIImage *)capturePicture:(NSInteger)quality;
+
+/**
+ 鑾峰彇鍐呴儴鎾斁鍣ㄥ彞鏌勩�傚缓璁瘡娆′娇鐢ㄦ挱鏀惧櫒鍙ユ焺鏃跺潎璋冪敤姝ゆ柟娉曡幏鍙栵紝骞惰繘琛屾湁鏁堟�у垽鏂��
+
+ @return 灏忎簬0涓烘棤鏁堝�硷紝澶т簬绛変簬0涓烘湁鏁堝��
+ */
+- (int)getPlayPort;
+
+/**
+ 鑾峰彇褰撳墠鍙栨祦鏂瑰紡锛�
+
+ @return 褰撳墠鍙栨祦绫诲瀷
+ */
+- (int)getStreamFetchType;
+
+/**
+sd鍗″強浜戝瓨鍌ㄥ�嶉�熷洖鏀炬帴鍙�
+1.鏀寔鎶藉抚蹇斁鐨勮澶囨渶楂樻敮鎸�16鍊嶉�熷揩鏀撅紙鎵�鏈夊彇娴佹柟寮忥紝鍖呮嫭P2P锛�
+2.涓嶆敮鎸佹娊甯у揩鏀剧殑璁惧锛屼粎鏀寔鍐呭缃戠洿杩炲揩鏀撅紝鏈�楂樻敮鎸�8鍊�
+3.HCNetSDK鍙栨祦娌℃湁蹇斁姒傚康锛屽叏閫熸帹娴侊紝鍙敼鍙樻挱鏀惧簱閫熺巼
+4.娉ㄦ剰鍖哄埆锛�
+   鑰丼D鍗″洖鏀句互鍙奌CNetSDK鍥炴斁锛岃缃畬閫氳繃杩斿洖鍊艰繑鍥炴垚鍔熻繕鏄け璐ワ紝娌℃湁鍏朵粬娑堟伅
+   鏂板崗璁殑浜戝瓨鍌ㄥ洖鏀句互鍙婃敮鎸乻eek銆乧ontinue鐨勮澶嘾鏂癝D鍗″洖鏀撅紝璁剧疆瀹岄�氳繃杩斿洖鍊艰繑鍥炴垚鍔熻繕鏄け璐ワ紝濡傛灉鎴愬姛锛�
+   鍒欏悗缁繕鏈変竴鏉ZVideoPlayerMessageStart寮傛娑堟伅琛ㄧず鎴愬姛鍐嶆鍙栨祦
+   杩斿洖鍏朵粬閿欒鐮佽〃绀哄け璐� (鏂板崗璁簯瀛樺偍鍜屾柊SD鍗″洖鏀捐繑鍥濫Z_ERROR_NEED_RETRY 琛ㄧず闇�瑕侀噸璇曪級
+
+@param rate    鍥炴斁閫熷害锛屽叿浣撳弬鑰� EZ_PLAY_BACK_RATE
+@param mode 鍥炴斁鏃剁殑鎶藉抚鎺у埗锛屽綋鍓嶄粎浜戝瓨鍌ㄦ敮鎸併��0锛� 4鍊嶉�熷叏甯э紝8鍊嶉�熶互涓婃娊甯�   1锛氭娊甯�   2锛氬叏甯�  锛堝璁惧鍥炴斁褰撳墠涓嶆敮鎸侊紝浼犲叆0鍗冲彲锛�
+@return YES/NO
+ */
+- (BOOL)setPlaybackRate:(EZPlaybackRate) rate mode:(NSUInteger)mode;
+
+/**
+ 璁剧疆鍏ㄥ弻宸ュ璁叉椂鐨勬ā寮�,瀵硅鎴愬姛鍚庤皟鐢�
+ 
+ @param routeToSpeaker YES:浣跨敤鎵0鍣� NO:浣跨敤鍚瓛
+ */
+- (void)changeTalkingRouteMode:(BOOL)routeToSpeaker;
+
+/// //鎵╁睍鍙傛暟 UIKit涓撶敤
+/// @param exParamInfo EZPlayerExParamInfo
+- (void)setExParamInfo:(EZPlayerExParamInfo *)exParamInfo;
+
+/**
+ * 璁剧疆鎵撳紑鎾斁搴撶殑鏅鸿兘鍒嗘瀽锛屽綋鍓嶆俯鎰熺浉鏈虹殑妗嗘浣跨敤浜嗚鏅鸿兘鍒嗘瀽鏁版嵁锛岄瑙堟垚鍔熷悗璋冪敤锛屽湪鎾斁杩囩▼涓殢鏃跺紑鍏�
+ *
+ * @param enable YES锛氬紑  NO锛氬叧
+ *
+ * @return 杩斿洖鐘舵��
+ */
+- (BOOL)setIntelAnalysis:(BOOL)enable;
+
+@end
+
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZStreamPlayer.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZStreamPlayer.h
new file mode 100644
index 0000000..408ba05
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/EZStreamPlayer.h
@@ -0,0 +1,118 @@
+//
+//  EZStreamPlayer.h
+//  EZOpenSDKFramework
+//
+//  Created by yuqian on 2020/4/3.
+//  Copyright 漏 2020 Hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "EZDeviceRecordFile.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class EZStreamPlayer;
+
+typedef enum : NSUInteger {
+    EZStreamPlayerMsgTypeUnknown,              //鏃犳晥绫诲瀷
+    EZStreamPlayerMsgTypeRealPlayStart,        //寮�鍚瑙堟垚鍔�
+    EZStreamPlayerMsgTypeRealPlayClose,        //鍏抽棴棰勮鎴愬姛
+    EZStreamPlayerMsgTypePlayBackStart,        //寮�鍚澶囧洖鏀炬垚鍔�
+    EZStreamPlayerMsgTypePlayBackClose,        //鍏抽棴璁惧鍥炴斁鎴愬姛
+} EZStreamPlayerMsgType;
+
+typedef enum : NSUInteger {
+    EZStreamDataTypeUnknown,                   // 鏃犳晥绫诲瀷
+    EZStreamDataTypeHeader,                    // 鎺ユ敹娴佸ご
+    EZStreamDataTypeData,                      // 鎺ユ敹鏁版嵁
+    EZStreamDataTypeStreamEnd,                 // 娴佺粨鏉�
+}EZStreamDataType;
+
+
+@protocol EZStreamPlayerDelegate <NSObject>
+
+/**
+ *  鎾斁鍣ㄦ挱鏀惧け璐ラ敊璇洖璋�
+ *
+ *  @param player 鎾斁鍣ㄥ璞�
+ *  @param error  鎾斁鍣ㄩ敊璇�
+ */
+- (void)streamPlayer:(EZStreamPlayer *)player didPlayFailed:(NSError *)error;
+
+/**
+ *  鎾斁鍣ㄦ秷鎭洖璋�
+ *
+ *  @param player      鎾斁鍣ㄥ璞�
+ *  @param msgType 鎾斁鍣ㄦ秷鎭爜
+ */
+- (void)streamPlayer:(EZStreamPlayer *)player didReceivedMessage:(EZStreamPlayerMsgType)msgType;
+
+/**
+ *  鐮佹祦鍥炶皟
+ *
+ *  @param player     鎾斁鍣ㄥ璞�
+ *  @param dataType  鏁版嵁绫诲瀷
+ *  @param data        鐮佹祦鏁版嵁
+ *  @param dataLength  闀垮害
+ */
+- (void)streamPlayer:(EZStreamPlayer *)player didReceivedData:(EZStreamDataType)dataType data:(int8_t *)data length:(int)dataLength;
+
+@end
+
+@interface EZStreamPlayer : NSObject
+
+@property (nonatomic, weak) id<EZStreamPlayerDelegate>delegate;
+
+/// 鏄惁璁╂挱鏀惧櫒澶勭悊杩涘叆鍚庡彴,YES:鑷姩澶勭悊;NO:涓嶅鐞�,榛樿涓篩ES
+@property (nonatomic) BOOL backgroundModeByPlayer;
+
+
+/**
+*  鏍规嵁璁惧搴忓垪鍙峰拰閫氶亾鍙峰垱寤篍ZPlayer瀵硅薄
+*
+*  @param deviceSerial 璁惧搴忓垪鍙�
+*  @param cameraNo     閫氶亾鍙�
+*
+*  @return EZStreamPlayer瀵硅薄
+*/
++ (instancetype)createPlayerWithDeviceSerial:(NSString *)deviceSerial cameraNo:(NSInteger)cameraNo;
+
+/**
+ *  閿�姣丒ZPlayer
+ *
+ *  @return YES/NO;
+ */
+- (BOOL)destoryPlayer;
+
+/**
+ *  寮�濮嬫挱鏀撅紝寮傛鎺ュ彛锛岃繑鍥炲�煎彧鏄〃绀烘搷浣滄垚鍔燂紝涓嶄唬琛ㄦ挱鏀炬垚鍔�
+ *
+ *  @return YES/NO
+ */
+- (BOOL)startRealPlay;
+
+/**
+ *  鍋滄鎾斁锛屽紓姝ユ帴鍙�
+ *
+ */
+- (void)stopRealPlay;
+
+/**
+ *  寮�濮嬭澶囧洖鏀撅紝寮傛鎺ュ彛锛岃繑鍥炲�煎彧鏄〃绀烘搷浣滄垚鍔燂紝涓嶄唬琛ㄦ挱鏀炬垚鍔�
+ *
+ *  @param deviceFile SD鍗℃枃浠朵俊鎭�
+ *
+ *  @return YES/NO
+ */
+- (BOOL)startDevicePlayback:(EZDeviceRecordFile *)deviceFile;
+
+/// 缁撴潫璁惧鍥炴斁
+- (void)stopDevicePlayback;
+
+/// 璁剧疆璁惧楠岃瘉鐮侊紝鎾斁鍓嶈缃�
+/// @param verifyCode 璁惧楠岃瘉鐮�
+- (void)setVerifyCode:(NSString *)verifyCode;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZAPDevInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZAPDevInfo.h
new file mode 100644
index 0000000..d1b5e38
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZAPDevInfo.h
@@ -0,0 +1,23 @@
+//
+//  EZAPDevInfo.h
+//  EZWiFiConfigSDK
+//
+//  Created by yuqian on 2020/7/28.
+//  Copyright 漏 2020 com.ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZAPDevInfo : NSObject
+
+@property (nonatomic, copy) NSString *apVersion;//鐗堟湰锛屽綋鍓峚p鐗堟湰1.0
+@property (nonatomic, copy) NSString *devSubserial;//璁惧搴忓垪鍙凤紝鏈�澶�64
+@property (nonatomic, copy) NSString *devType;//璁惧鍨嬪彿锛屾渶澶�64
+@property (nonatomic, copy) NSString *devFirmwareversion;//璁惧鍥轰欢鐗堟湰鍙凤紝鏈�澶�64
+@property (nonatomic, copy) NSString *macAddr;//璁惧mac鍦板潃
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZAccessToken.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZAccessToken.h
new file mode 100644
index 0000000..21379c3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZAccessToken.h
@@ -0,0 +1,19 @@
+//
+//  EZAccessToken.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/10/19.
+//  Copyright 漏 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓鸿悿鐭冲紑鏀惧钩鍙版巿鏉冪櫥褰曚互鍚庣殑鍑瘉淇℃伅
+@interface EZAccessToken : NSObject
+
+/// accessToken 鐧诲綍鍑瘉
+@property (nonatomic, copy) NSString *accessToken;
+/// accessToken杩囨湡鐨勬椂闂寸偣,鐩稿浜�1970骞寸殑姣鏁�
+@property (nonatomic, assign) NSInteger expire;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZAlarmInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZAlarmInfo.h
new file mode 100644
index 0000000..9e763ef
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZAlarmInfo.h
@@ -0,0 +1,60 @@
+//
+//  EZAlarmInfo.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/9/16.
+//  Copyright (c) 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓哄憡璀︿俊鎭璞�
+@interface EZAlarmInfo : NSObject
+
+/// 鍛婅ID
+@property (nonatomic, copy) NSString *alarmId;
+/// 璁惧搴忓垪鍙�
+@property (nonatomic, copy) NSString *deviceSerial;
+/// 閫氶亾鍙�
+@property (nonatomic) NSInteger cameraNo;
+/// 鍛婅鍚嶇О
+@property (nonatomic, copy) NSString *alarmName;
+/// 鍛婅鍥剧墖
+@property (nonatomic, copy) NSString *alarmPicUrl;
+/// 鍛婅寮�濮嬫椂闂�
+@property (nonatomic, strong) NSDate *alarmStartTime;
+/// 鍛婅绫诲瀷
+@property (nonatomic) NSInteger alarmType;
+/// 鏄惁鍔犲瘑
+//@property (nonatomic) BOOL isEncrypt;
+
+
+/// 鍛婅鍥剧墖鍔犲瘑淇℃伅 crypt 0-涓嶇‘瀹� 1-璁惧鍔犲瘑 2-骞冲彴鍔犲瘑
+/// 濡傛灉鏄�2锛岃〃鏄庢槸骞冲彴鍔犲瘑鐨勫浘鐗囷紝璇蜂娇鐢ㄤ笅闈㈢殑checksum浣滀负瑙e瘑绉橀挜瑙e瘑鍥剧墖
+/// 濡傛灉鏄�1锛岃〃鏄庢槸璁惧鍔犲瘑鐨勫浘鐗囷紝璇蜂娇鐢ㄨ澶囩殑楠岃瘉鐮佷綔涓鸿В瀵嗙閽ヨВ瀵嗗浘鐗�
+/// 濡傛灉鏄�0锛岃〃鏄庢湭鐭ョ殑鍔犲瘑淇℃伅锛岃閫氳繃涓婇潰鎶ヨ鍥剧墖URL锛坅larmPicUrl锛変腑鐨� isEncrypted 瀛楁锛屽垽鏂浘鐗囨槸 0锛氭湭鍔犲瘑 1锛氳澶囧姞瀵�
+/// 鎶ヨ鍥剧墖鐨刄RL绀轰緥锛�
+/// https://whpic.ys7.com:8009/HIK_1447836214_458BEBDAE4AB6a6f_525400286893421023815?isEncrypted=1&isCloudStored=0
+/// https://www.ys7.com:9090/api/cloud?method=download&fid=5ed92258-8e0f-11e5-8000-c19249a52dcf&deviceSerialNo=504242549&isEncrypted=0&isCloudStored=1
+@property (nonatomic) NSInteger crypt;
+/// 鍛婅鍥剧墖骞冲彴鍔犲瘑鏃剁殑瀵嗛挜
+@property (nonatomic, copy) NSString *checksum;
+/// 鏄惁宸茶
+@property (nonatomic) BOOL isRead;
+/// 瀛樺偍绫诲瀷锛�0-鏃犲瓨鍌紝1-钀ょ煶锛�2-鐧惧害锛�4-sd鍗″瓨鍌紝5-钀ょ煶鍜宻d鍗★紝6-鐧惧害鍜宻d鍗�
+@property (nonatomic) NSInteger recState;
+/// 鍛婅褰曞儚缁撴潫鏃堕棿鏃堕棿寤跺悗鍋忕Щ閲忥紝閫氳繃alarmStartTime鍔犱笂寤跺悗鍋忕Щ閲忚幏寰楀憡璀﹀綍鍍忕殑鍏蜂綋缁撴潫鏃堕棿
+@property (nonatomic) NSInteger delayTime;
+/// 鍛婅褰曞儚寮�濮嬫椂闂存彁鍓嶅亸绉婚噺锛岄�氳繃alarmStartTime鍑忓幓鎻愬墠鍋忕Щ閲忚幏寰楀憡璀﹀綍鍍忕殑鍏蜂綋寮�濮嬫椂闂�
+@property (nonatomic) NSInteger preTime;
+/// 璁惧鍚嶇О
+@property (nonatomic, copy) NSString *deviceName;
+/// 璁惧澶х被
+@property (nonatomic, copy) NSString *category;
+
+/// 4530 鎵╁睍瀛楁
+@property (nonatomic, copy) NSString *customerType;
+/// 4530 鎵╁睍瀛楁
+@property (nonatomic, copy) NSString *customerInfo;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZAreaInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZAreaInfo.h
new file mode 100644
index 0000000..ebbd210
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZAreaInfo.h
@@ -0,0 +1,19 @@
+//
+//  EZAreaInfo.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 16/7/19.
+//  Copyright 漏 2016骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ゅ璞′负鍖哄煙瀵硅薄锛屾捣澶栧紑鏀惧钩鍙颁笓鐢ㄥ璞�
+@interface EZAreaInfo : NSObject
+
+@property (nonatomic) NSInteger id; ///鍖哄煙ID
+@property (nonatomic, copy) NSString *name; ///鍖哄煙鍚嶇О
+@property (nonatomic, copy) NSString *region; ///鍖哄煙鏍囪瘑
+@property (nonatomic) NSInteger telephoneCode; ///鍖哄煙鎵嬫満鍥介檯鍙�
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZCameraInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZCameraInfo.h
new file mode 100644
index 0000000..9054b1e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZCameraInfo.h
@@ -0,0 +1,35 @@
+//
+//  EZCameraInfo.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/9/15.
+//  Copyright (c) 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓洪�氶亾淇℃伅瀵硅薄
+@interface EZCameraInfo : NSObject
+
+/// 鎽勫儚澶村悕绉�
+@property (nonatomic, copy) NSString *cameraName;
+/// 閫氶亾鍙�
+@property (nonatomic) NSInteger cameraNo;
+/// 璁惧搴忓垪鍙�
+@property (nonatomic, copy) NSString *deviceSerial;
+/// 鍒嗕韩鐘舵�侊細0銆佹湭鍒嗕韩锛�1銆佸垎浜墍鏈夎�咃紝2銆佸垎浜帴鍙楄�咃紙琛ㄧず姝ゆ憚鍍忓ご鏄埆浜哄垎浜粰鎴戠殑锛�
+@property (nonatomic) NSInteger isShared;
+/// 閫氶亾灏侀潰
+@property (nonatomic, copy) NSString *cameraCover;
+/// 瑙嗛璐ㄩ噺锛�0-娴佺晠锛�1-鍧囪 锛�2-楂樻竻锛�3-瓒呮竻
+@property (nonatomic) NSInteger videoLevel;
+//鏉冮檺
+@property (nonatomic) NSInteger permission;
+/// 閫氶亾鏀寔鐨勬竻鏅板害淇℃伅鍒楄〃锛孍ZVideoQualityInfo瀵硅薄鍒楄〃銆�(/api/device/list 杩斿洖鐨�"videoQualityInfos" 鏈夎锛屼互/api/device/detail 鎺ュ彛杩斿洖涓哄噯)
+@property (nonatomic, strong) NSArray *videoQualityInfos;
+
+/// 璁惧鏄惁寮�鍚姞瀵�
+@property (nonatomic) BOOL isEncrypt;
+/// 璁惧鐘舵�侊紝1-鍦ㄧ嚎锛�2-涓嶅湪绾�
+@property (nonatomic) NSInteger status;
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZCloudRecordDownloadTask.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZCloudRecordDownloadTask.h
new file mode 100644
index 0000000..174ee40
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZCloudRecordDownloadTask.h
@@ -0,0 +1,34 @@
+//
+//  EZCloudRecordDownloadTask.h
+//  EZOpenSDK
+//
+//  Created by yuqian on 2019/7/2.
+//  Copyright 漏 2019 Ezviz. All rights reserved.
+//
+
+#import "EZRecordDownloadTask.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class EZCloudRecordFile;
+
+@interface EZCloudRecordDownloadTask : EZRecordDownloadTask
+
+/**
+ 浜戝瓨鍌ㄥ綍鍍忎笅杞戒换鍔″垵濮嬪寲銆�
+ 涓嬭浇鐨勫綍鍍忎负PS鏂囦欢锛屽闇�杞崲MP4锛岃鑷璋冪敤EZVideoTransformer绫荤殑杞皝瑁呮柟娉�
+ 
+ @param taskID 涓嬭浇浠诲姟鍞竴鏍囪瘑ID
+ @param recordFile 浜戝瓨鍌ㄥ綍鍍忔枃浠�
+ @param verifyCode 璁惧楠岃瘉鐮�
+ @param savePath 涓嬭浇瀛樺偍璺緞
+ @return 鍒濆鍖栨垚鍔熻繑鍥炲疄渚嬶紝澶辫触杩斿洖nil
+ */
+- (instancetype) initTaskWithID:(NSUInteger)taskID
+                cloudRecordFile:(EZCloudRecordFile *)recordFile
+                     verifyCode:(NSString *)verifyCode
+                       savePath:(NSString *)savePath;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZCloudRecordFile.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZCloudRecordFile.h
new file mode 100644
index 0000000..f8c693f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZCloudRecordFile.h
@@ -0,0 +1,36 @@
+//
+//  EZCloudFile.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/9/17.
+//  Copyright (c) 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓轰簯瀛樺偍褰曞儚鏂囦欢瀵硅薄
+@interface EZCloudRecordFile : NSObject
+
+/// 璁惧搴忓垪鍙�
+@property (nonatomic, copy) NSString *deviceSerial;
+/// 璁惧閫氶亾鍙�
+@property (nonatomic, assign) NSInteger cameraNo;
+/// 浜戝瓨鍌ㄥ綍鍍忔枃浠禝d
+@property (nonatomic, copy) NSString *fileId;
+/// 浜戝瓨鍌ㄥ綍鍍忔枃浠跺紑濮嬫椂闂�
+@property (nonatomic, strong) NSDate *startTime;
+/// 浜戝瓨鍌ㄥ綍鍍忔枃浠剁粨鏉熸椂闂�
+@property (nonatomic, strong) NSDate *stopTime;
+/// 浜戝瓨鍌ㄥ綍鍍忔埅鍥惧湴鍧�
+@property (nonatomic, copy) NSString *coverPic;
+/// 浜戝瓨鍌ㄥ綍鍍忎笅杞藉湴鍧�
+@property (nonatomic, copy) NSString *downloadPath;
+/// 浜戝瓨鍌ㄥ浘鐗囧姞瀵嗗瘑鐮侊紝濡傛灉鏄痆NSNull null]鎴栬�卬il鎸囬拡鍒欏浘鐗囦笉鍔犲瘑
+@property (nonatomic, copy) NSString *encryption;
+/// 鏂囦欢澶у皬
+@property (nonatomic, assign) NSUInteger fileSize;
+
+@property (nonatomic, assign) int32_t istorageVersion; //浜戝瓨鍌ㄧ被鍒�:1 鍗曟枃浠跺瓨鍌ㄦā寮忥紱2 杩炵画瀛樺偍妯″紡锛�3 寰呭畾
+@property (nonatomic, assign) int32_t videoType;//浜戝瓨鍌ㄥ綍鍍忕被鍨嬶紝榛樿涓�0锛岃〃绀轰笉灞炰簬浜戝瓨鍌ㄥ綍鍍�
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZConfigTokenInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZConfigTokenInfo.h
new file mode 100644
index 0000000..9b9a949
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZConfigTokenInfo.h
@@ -0,0 +1,21 @@
+//
+//  EZConfigTokenInfo.h
+//  EZWiFiConfigSDK
+//
+//  Created by yuqian on 2020/7/30.
+//  Copyright 漏 2020 com.ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZConfigTokenInfo : NSObject
+
+@property (nonatomic, copy) NSString *userId;
+@property (nonatomic, copy) NSString *token;
+@property (nonatomic, copy) NSString *lbsDomain;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDetectorInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDetectorInfo.h
new file mode 100644
index 0000000..9dd71bc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDetectorInfo.h
@@ -0,0 +1,41 @@
+//
+//  EZDetectorInfo.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 16/1/12.
+//  Copyright 漏 2016骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓烘帰娴嬪櫒淇℃伅瀵硅薄
+@interface EZDetectorInfo : NSObject
+
+/// 鎺㈡祴鍣ㄥ簭鍒楀彿
+@property (nonatomic, copy) NSString *detectorSerial;
+/// 鎺㈡祴鍣ㄧ姸鎬侊紝鎺㈡祴鍣ㄤ笌A1鏄惁杩為�氾細0-闈炶仈閫氾紝1-鑱旈��
+@property (nonatomic) NSInteger state;
+/// 鎺㈡祴鍣ㄧ被鍨�
+@property (nonatomic, copy) NSString *type;
+/// 鎺㈡祴鍣ㄥ悕绉�
+/*  V("V", "瑙嗛璁惧"), I("I", "鍛婅杈撳叆璁惧"), O("O", "鍛婅杈撳嚭璁惧"), PIR("PIR", "绾㈠鎺㈡祴鍣�"), FIRE("FIRE", "鐑熸劅鎺㈡祴鍣�"),MAGNETOMETER("MAGNETOMETER", "闂ㄧ浼犳劅鍣�"), GAS("GAS", "鍙噧姘斾綋"), WATERLOGGING("WATERLOGGING", "姘存蹈"),CALLHELP("CALLHELP", "绱ф�ユ寜閽�"), TELECONTROL("TELECONTROL", "閬ユ帶鍣�"), ALERTOR("ALERTOR", "鍛婅鍣�"),KEYBOARD("KEYBOARD", "閿洏"),CURTAIN("CURTAIN","骞曞笜"), MOVE_MAGNETOMETER("MOVE_MAGNETOMETER","鍗曚綋闂ㄧ")
+ */
+@property (nonatomic, copy) NSString *typeName;
+/// 鏂逛綅淇℃伅锛屽彲鐢ㄤ簬瀹㈡埛鑷畾涔夊悕绉�
+@property (nonatomic, copy) NSString *location;
+/// 闃插尯鏁呴殰鐘舵�侊紝0鎭㈠锛�1浜х敓
+@property (nonatomic) NSInteger faultZoneStatus;
+/// 鐢垫睜娆犲帇鐘舵�侊紝0鎭㈠锛�1浜х敓
+@property (nonatomic) NSInteger underVoltageStatus;
+/// 鏃犵嚎骞叉壈鐘舵�侊紝0鎭㈠锛�1浜х敓
+@property (nonatomic) NSInteger wirelessInterferenceStatus;
+/// 璁惧绂荤嚎鐘舵�侊紝0鎭㈠锛�1浜х敓
+@property (nonatomic) NSInteger offlineStatus;
+/// 鍦ㄥ妯″紡鏄惁寮�鍚�
+@property (nonatomic) BOOL atHomeEnable;
+/// 澶栧嚭妯″紡鏄惁寮�鍚�
+@property (nonatomic) BOOL outerEnable;
+/// 鐫$湢妯″紡鏄惁寮�鍚�
+@property (nonatomic) BOOL sleepEnable;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceCloudServiceInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceCloudServiceInfo.h
new file mode 100644
index 0000000..fffd93e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceCloudServiceInfo.h
@@ -0,0 +1,65 @@
+//
+//  EZDeviceCloudServiceInfo.h
+//  EzvizOpenSDK
+//
+//  Created by JuneCheng on 2022/1/4.
+//  Copyright 漏 2022 Hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+@class EZCloudServicePackageInfo;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// 浜戝瓨鍌ㄨ澶囬�氶亾濂楅淇℃伅
+@interface EZDeviceCloudServiceInfo : NSObject
+
+@property (nonatomic, copy) NSString *ownerId;///< 璁惧鎵�灞炵敤鎴风敤鎴峰悕
+@property (nonatomic, copy) NSString *serial;///< 璁惧搴忓垪鍙�
+@property (nonatomic, assign) NSInteger channelNo;///< 閫氶亾鍙�
+@property (nonatomic, copy) NSString *devicePicUrl;///< 璁惧鍥剧墖url
+@property (nonatomic, assign) NSInteger storageTime;///< 瀛樺偍鏃堕暱
+@property (nonatomic, assign) NSInteger storageTimeUnit;///< 瀛樺偍鏃堕暱鍗曚綅锛�1-澶╋紝2-鍛紝3-鏈堬紝4-骞�
+@property (nonatomic, copy) NSString *expireTime;///< 浜戝瓨鍌ㄦ湇鍔¤繃鏈熸椂闂�
+@property (nonatomic, copy) NSString *expireDate;///< 鍒版湡鏃堕棿锛� yyyy骞碝M鏈坉d鏃� 鏍煎紡
+@property (nonatomic, copy) NSString *devModel;///< 璁惧鍨嬪彿
+@property (nonatomic, copy) NSString *devName;///< 璁惧鍚嶇О
+@property (nonatomic, assign) NSInteger onlineStatus;///< 璁惧鍦ㄧ嚎鐘舵��
+@property (nonatomic, assign) NSInteger status;///< 浜戝瓨鍌ㄧ姸鎬� -2涓嶆敮鎸� -1鏈紑鍚� 0鏆傚仠 1寮�鍚� 2杩囨湡 4鎸囧畾鐢熸晥浜戝瓨鍌ㄥ緟鐢熸晥鐘舵��
+@property (nonatomic, assign) NSInteger expireDay;///< 褰撳墠璺濈杩囨湡鐨勬湁鏁堝ぉ鏁�
+@property (nonatomic, assign) NSInteger validDay;///< 鏈嶅姟鍙娇鐢ㄧ殑澶╂暟
+@property (nonatomic, copy) NSString *createTime;///< 鍒涘缓鏃堕棿
+@property (nonatomic, assign) BOOL designateDevice;///< 鏄惁鏄寚瀹氳澶�
+@property (nonatomic, assign) BOOL subscribe;///< 鏄惁鐢卞綋鍓嶈闃呭紑閫�
+@property (nonatomic, assign) BOOL supportSubscribe;///< 鏄惁鏀寔璁㈤槄浜戝瓨鍌�
+@property (nonatomic, assign) BOOL supportCard;///< 鏄惁鏀寔鐐瑰崱
+@property (nonatomic, assign) NSInteger openTryCloudShield;///< 鏄惁灞忚斀浜戝瓨鍌ㄨ瘯鐢� 1涓哄睆钄斤紝鍏朵粬涓烘湭灞忚斀
+@property (nonatomic, strong) NSArray<EZCloudServicePackageInfo *> *serviceList;///<
+
+@end
+
+
+@interface EZCloudServicePackageInfo : NSObject
+
+@property (nonatomic, assign) long serviceId;///<
+@property (nonatomic, assign) NSInteger productPayType;///< 浜у搧浠樿垂绫诲瀷锛�1浠樿垂 2 璇曠敤 3鍏嶈垂
+@property (nonatomic, assign) NSInteger storageTimeUnit;///< 瀛樺偍鏃堕暱鍗曚綅锛�1-澶� 2-鍛� 3-鏈� 4-骞� 5-灏忔椂
+@property (nonatomic, copy) NSString *expireTime;///< 杩囨湡鏃堕棿
+@property (nonatomic, assign) NSInteger forceBinding;///< 寮哄埗缁戝畾鐘舵�� 1-寮哄埗缁戝畾 2-鍙浆绉�
+@property (nonatomic, assign) NSInteger effectImmediately;///< 鏈嶅姟鏄惁绔嬪嵆鐢熸晥 1-绔嬪嵆鐢熸晥 2-寤惰繜鐢熸晥 3-鎸囧畾鏃ユ湡鐢熸晥
+@property (nonatomic, assign) NSInteger canFamilyDeviceNum;///< 鍙姞鍏ュ椁愯澶囨暟
+@property (nonatomic, assign) long familyServiceId;///< 瀹跺涵濂楅鏈嶅姟ID
+@property (nonatomic, assign) NSInteger serviceTime;///< 浜戝瓨鍌ㄤ娇鐢ㄦ椂闀�
+@property (nonatomic, assign) NSInteger addFamilyDeviceNum;///< 宸插姞鍏ュ椁愯澶囨暟
+@property (nonatomic, assign) NSInteger productCode;///< 浜у搧缂栧彿
+@property (nonatomic, assign) NSInteger buyNum;///< 璐拱鏁伴噺
+@property (nonatomic, copy) NSString *businessOrderNo;///< 璁㈠崟鍙凤細褰撳墠寮�閫氭湇鍔′笌璁㈠崟鍏宠仈
+@property (nonatomic, assign) NSInteger serviceTimeUnit;///< 浜戝瓨鍌ㄤ娇鐢ㄦ椂闀垮崟浣嶏細1-澶� 2-鍛� 3-鏈� 4-骞�
+@property (nonatomic, assign) NSInteger storageTime;///< 瀛樺偍鏃堕暱
+@property (nonatomic, assign) NSInteger serviceType;///< 濂楅绫诲瀷锛�2銆佸搴椁愶紝 1 or null涓烘櫘閫氬椁�
+@property (nonatomic, copy) NSString *effectTime;///< 鐢熸晥鏃堕棿
+@property (nonatomic, assign) NSInteger status;///< 鐘舵�侊細1 寰呬娇鐢� 2浣跨敤涓� 3宸蹭娇鐢�
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceInfo.h
new file mode 100644
index 0000000..da60bb4
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceInfo.h
@@ -0,0 +1,59 @@
+//
+//  EZDeviceInfo.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/9/16.
+//  Copyright (c) 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓鸿澶囦俊鎭璞�
+@interface EZDeviceInfo : NSObject
+
+/// 璁惧鍏宠仈鐨勯�氶亾淇℃伅
+@property (nonatomic, strong) NSArray *cameraInfo;
+/// 璁惧鍏宠仈鐨勯�氶亾鏁伴噺
+@property (nonatomic) NSInteger cameraNum;
+/// 鍏锋湁闃叉姢鑳藉姏鐨勮澶囧竷鎾ら槻鐘舵�侊細0-鐫$湢锛�8-鍦ㄥ锛�16-澶栧嚭锛屾櫘閫欼PC甯冩挙闃茬姸鎬侊細0-鎾ら槻锛�1-甯冮槻
+@property (nonatomic) NSInteger defence;
+/// 璁惧鍏宠仈鐨勬帰娴嬪櫒鏁伴噺
+@property (nonatomic) NSInteger detectorNum;
+/// 璁惧鍏宠仈鐨勬帰娴嬪櫒淇℃伅
+@property (nonatomic, strong) NSArray *detectorInfo;
+/// 璁惧鍥剧墖
+@property (nonatomic, copy) NSString *deviceCover;
+/// 璁惧鍚嶇О
+@property (nonatomic, copy) NSString *deviceName;
+/// 璁惧搴忓垪鍙�
+@property (nonatomic, copy) NSString *deviceSerial;
+/// 璁惧绫诲瀷
+@property (nonatomic, copy) NSString *deviceType;
+/// 璁惧鐗堟湰鍙�
+@property (nonatomic, copy) NSString *deviceVersion;
+/// 璁惧鍗忚鐗堟湰鍙风被鍨�  0:闈炲浗鏍� 6:鍥芥爣
+@property (nonatomic) NSInteger devProtoEnum;
+/// 璁惧鏄惁寮�鍚姞瀵�
+@property (nonatomic) BOOL isEncrypt;
+/// 璁惧鐘舵�侊紝1-鍦ㄧ嚎锛�2-涓嶅湪绾�
+@property (nonatomic) NSInteger status;
+/// 鏄惁鏀寔瀵硅 0-涓嶆敮鎸佸璁诧紝1-鏀寔鍏ㄥ弻宸ュ璁诧紝3-鏀寔鍗婂弻宸ュ璁诧紝4-鍚屾椂鏀寔鍏ㄥ弻宸ュ拰鍗婂弻宸�
+@property (nonatomic) NSInteger isSupportTalk;
+/// 鏄惁鏀寔浜戝彴鎺у埗
+@property (nonatomic) BOOL isSupportPTZ;
+/// 鏄惁鏀寔鏀惧ぇ
+@property (nonatomic) BOOL isSupportZoom;
+///鏄惁鏀寔鎻愮ず闊冲紑鍏�
+@property (nonatomic) BOOL isSupportAudioOnOff;
+/// 鏄惁鏀寔涓績闀滃儚缈昏浆
+@property (nonatomic) BOOL isSupportMirrorCenter;
+/// 鏄惁鏀寔澹版尝閰嶇綉
+@property (nonatomic) BOOL isSupportSoundWave;
+/// 鏄惁鏀寔鍊嶆暟鍥炴斁
+@property (nonatomic) BOOL isSupportPlaybackRate;
+/// 璁惧澶х被
+@property (nonatomic,copy) NSString *category;
+/// 娣诲姞鏃堕棿
+@property (nonatomic,strong) NSDate *addTime;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDevicePtzAngleInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDevicePtzAngleInfo.h
new file mode 100644
index 0000000..4437921
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDevicePtzAngleInfo.h
@@ -0,0 +1,47 @@
+//
+//  EZDevicePtzAngleInfo.h
+//  EzvizOpenSDK
+//
+//  Created by JuneCheng on 2022/4/27.
+//  Copyright 漏 2022 Hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZDevicePtzAngleInfo : NSObject
+
+/** 姘村钩鏂瑰悜璧风偣瑙掑害 */
+@property (readonly) NSInteger horizontalStartAngle;
+
+/** 姘村钩鏂瑰悜缁堢偣瑙掑害 */
+@property (readonly) NSInteger horizontalEndAngle;
+
+/** 姘村钩鏂瑰悜褰撳墠瑙掑害 */
+@property (readonly) NSInteger horizontalCurrentAngle;
+
+/** 鍨傜洿鏂瑰悜璧风偣瑙掑害 */
+@property (readonly) NSInteger verticalStartAngle;
+
+/** 鍨傜洿鏂瑰悜缁堢偣瑙掑害 */
+@property (readonly) NSInteger verticalEndAngle;
+
+/** 鍨傜洿鏂瑰悜褰撳墠瑙掑害 */
+@property (readonly) NSInteger verticalCurrentAngle;
+
+/** 鏂瑰悜 */
+@property (readonly) NSInteger orientation;
+
+/** 鐗堟湰鍙� */
+@property (readonly) NSInteger ptzCfgVersion;
+
+/** 鍒濆鍖� */
+- (instancetype)initWithType:(NSInteger)type data:(NSData *)data;
+
+- (float)horCurAngPercent;
+- (float)verCurAngPercent;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceRecordDownloadTask.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceRecordDownloadTask.h
new file mode 100644
index 0000000..adb8679
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceRecordDownloadTask.h
@@ -0,0 +1,39 @@
+//
+//  EZDeviceRecordDownloadTask.h
+//  EZOpenSDK
+//
+//  Created by yuqian on 2019/7/2.
+//  Copyright 漏 2019 Ezviz. All rights reserved.
+//
+
+#import "EZRecordDownloadTask.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class EZDeviceRecordFile;
+
+@interface EZDeviceRecordDownloadTask : EZRecordDownloadTask
+
+/**
+ sd鍗″綍鍍忎笅杞戒换鍔″垵濮嬪寲锛屽紓姝ユ柟娉�
+ 涓嬭浇鐨勫綍鍍忎负PS鏂囦欢锛屽闇�杞崲MP4锛岃鑷璋冪敤EZVideoTransformer绫荤殑杞皝瑁呮柟娉�
+ 
+ @param taskID 涓嬭浇浠诲姟鍞竴鏍囪瘑ID
+ @param recordFile 璁惧褰曞儚鏂囦欢
+ @param deviceSerial 璁惧搴忓垪鍙�
+ @param cameraNo 閫氶亾鍙�
+ @param verifyCode 璁惧楠岃瘉鐮�
+ @param savePath 涓嬭浇瀛樺偍璺緞
+ @param completion 瀹屾垚鍥炶皟锛屾垚鍔熻繑鍥瀟ask锛屽け璐ヨ繑鍥瀗il
+ */
+- (void) initTaskWithID:(NSUInteger)taskID
+   DeviceRecordFileInfo:(EZDeviceRecordFile *)recordFile
+           deviceSerial:(NSString *)deviceSerial
+               cameraNo:(NSInteger)cameraNo
+             verifyCode:(NSString *)verifyCode
+               savePath:(NSString *)savePath
+             completion:(void (^)(EZDeviceRecordDownloadTask *task))completion;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceRecordFile.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceRecordFile.h
new file mode 100644
index 0000000..b7a2867
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceRecordFile.h
@@ -0,0 +1,26 @@
+//
+//  EZDeviceRecordFile.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/9/17.
+//  Copyright (c) 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓鸿澶囧綍鍍忔枃浠朵俊鎭紙鍖呭惈SD鍗°�佸悗绔叧鑱旇澶囩殑褰曞儚锛�
+@interface EZDeviceRecordFile : NSObject
+
+/// 璁惧褰曞儚鏂囦欢鐨勫紑濮嬫椂闂�
+@property (nonatomic, strong) NSDate *startTime;
+/// 璁惧褰曞儚鏂囦欢鐨勭粨鏉熸椂闂�
+@property (nonatomic, strong) NSDate *stopTime;
+/// 鏂囦欢绫诲瀷 -2:UNKNOW -1:ALLEVENT 0:ALARM 1:TIMING 2:IO 3:CMR 4:event 5:all
+@property (nonatomic, assign) int type;
+@property (nonatomic, copy) NSString *channelType;
+
+
+@property (nonatomic, assign) int seq;
+@property (nonatomic, strong) NSData *imageData;///< 
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceUpgradeStatus.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceUpgradeStatus.h
new file mode 100644
index 0000000..06c173b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceUpgradeStatus.h
@@ -0,0 +1,19 @@
+//
+//  EZDeviceUpgradeStatus.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/12/21.
+//  Copyright 漏 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓鸿澶囧崌绾х姸鎬佸璞�
+@interface EZDeviceUpgradeStatus : NSObject
+
+/// 鍗囩骇杩涘害锛屼粎status_type涓哄崌绾х姸鎬佹椂鏈夋晥锛屽彇鍊艰寖鍥翠负1-100
+@property (nonatomic) NSInteger upgradeProgress;
+/// 鍗囩骇鐘舵�侊細 0锛氭鍦ㄥ崌绾� 1锛氳澶囬噸鍚� 2锛氬崌绾ф垚鍔� 3锛氬崌绾уけ璐�
+@property (nonatomic) NSInteger upgradeStatus;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceVersion.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceVersion.h
new file mode 100644
index 0000000..a49a31a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZDeviceVersion.h
@@ -0,0 +1,27 @@
+//
+//  EZDeviceVersion.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/12/10.
+//  Copyright 漏 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓鸿澶囩増鏈俊鎭璞�
+@interface EZDeviceVersion : NSObject
+
+/// 褰撳墠鐗堟湰
+@property (nonatomic, copy) NSString *currentVersion;
+/// 鏈�鏂扮増鏈�
+@property (nonatomic, copy) NSString *latestVersion;
+/// 鏄惁鍙互鏇存柊,娉細0-涓嶉渶瑕佸崌绾� 1-闇�瑕佸崌绾� 3-闇�瑕佸崌绾�1.7鐗堟湰浠ヤ笂
+@property (nonatomic) NSInteger isNeedUpgrade;
+/// 鏄惁姝e湪鍗囩骇,娉細0-涓嶅湪鍗囩骇 1-姝e湪鍗囩骇
+@property (nonatomic) NSInteger isUpgrading;
+/// 鍥轰欢涓嬭浇鍦板潃锛屽彧鏈夊彲浠ユ洿鏂版椂鎵嶄細鏈夊��
+@property (nonatomic, copy) NSString *downloadUrl;
+/// 鏇存柊鍐呭鎻忚堪
+@property (nonatomic, copy) NSString *upgradeDesc;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZHCNetDeviceInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZHCNetDeviceInfo.h
new file mode 100644
index 0000000..23946a9
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZHCNetDeviceInfo.h
@@ -0,0 +1,36 @@
+//
+//  EZHCNetDeviceInfo.h
+//  EzvizOpenSDK
+//
+//  Created by linyong on 2017/9/15.
+//  Copyright 漏 2017骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface EZHCNetDeviceInfo : NSObject
+
+///鐧诲綍鍚巙ser id
+@property (nonatomic,assign) NSInteger userId;
+///妯℃嫙閫氶亾鏁�
+@property (nonatomic,assign) NSInteger channelCount;
+///妯℃嫙閫氶亾璧峰閫氶亾鍙�,0涓烘棤鏁堟灉
+@property (nonatomic,assign) NSInteger startChannelNo;
+///鏁板瓧閫氶亾鏁�
+@property (nonatomic,assign) NSInteger dChannelCount;
+///璧峰鏁板瓧閫氶亾鍙凤紝0涓烘棤鏁堟灉
+@property (nonatomic,assign) NSInteger dStartChannelNo;
+///鍛婅杈撳叆涓暟
+@property (nonatomic,assign) NSInteger byAlarmInPortNum;
+///鍛婅杈撳嚭涓暟
+@property (nonatomic,assign) NSInteger byAlarmOutPortNum;
+///纭洏涓暟
+@property (nonatomic,assign) NSInteger byDiskNum;
+///璁惧绫诲瀷
+@property (nonatomic,assign) NSInteger byDVRType;
+///闆堕�氶亾涓暟
+@property (nonatomic,assign) NSInteger byZeroChanNum;
+///璁惧璇煶閫氶亾鏁�
+@property (nonatomic,assign) NSInteger byAudioChanNum;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZHiddnsDeviceInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZHiddnsDeviceInfo.h
new file mode 100644
index 0000000..4627fa0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZHiddnsDeviceInfo.h
@@ -0,0 +1,84 @@
+//
+//  EZHiddnsDeviceInfo.h
+//  EzvizOpenSDK
+//
+//  Created by linyong on 2017/9/9.
+//  Copyright 漏 2017骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface EZHiddnsDeviceInfo : NSObject
+
+///璁惧鍩熷悕
+@property (nonatomic,copy) NSString *domain;
+
+///璁惧澶栫綉鍦板潃
+@property (nonatomic,copy) NSString *deviceIp;
+
+///璁惧鐭簭鍒楀彿
+@property (nonatomic,copy) NSString *subSerial;
+
+///璁惧闀垮簭鍒楀彿
+@property (nonatomic,copy) NSString *serial;
+
+///璁惧鍚嶇О
+@property (nonatomic,copy) NSString *deviceName;
+
+///鏄犲皠妯″紡锛�1-鎵嬪姩锛�0-鑷姩
+@property (nonatomic,assign) NSInteger upnpMappingMode;
+
+///鎵嬪姩鏄犲皠http绔彛锛寀pnpMappingMode=1鏃朵娇鐢�
+@property (nonatomic,assign) NSInteger mappingHiddnsHttpPort;
+
+///鏄犲皠http绔彛
+@property (nonatomic,assign) NSInteger hiddnsHttpPort;
+
+///鏄犲皠https绔彛
+@property (nonatomic,assign) NSInteger hiddnsHttpsPort;
+
+///鎵嬪姩鏄犲皠鏈嶅姟绔彛锛寀pnpMappingMode=1鏃朵娇鐢�
+@property (nonatomic,assign) NSInteger mappingHiddnsCmdPort;
+
+///鏄犲皠鏈嶅姟绔彛
+@property (nonatomic,assign) NSInteger hiddnsCmdPort;
+
+///鏄犲皠鍙栨祦绔彛
+@property (nonatomic,assign) NSInteger hiddnsRtspPort;
+
+/////璁惧灞�鍩熺綉IP鍦板潃
+//@property (nonatomic,copy) NSString *localIp;
+//
+/////鏈湴http绔彛
+//@property (nonatomic,assign) NSInteger localHiddnsHttpPort;
+//
+/////鏈湴https绔彛
+//@property (nonatomic,assign) NSInteger localHiddnsHttpsPort;
+//
+/////鏈湴鏈嶅姟绔彛
+//@property (nonatomic,assign) NSInteger localHiddnsCmdPort;
+//
+/////鏈湴鍙栨祦绔彛
+//@property (nonatomic,assign) NSInteger localHiddnsRtspPort;
+//
+/////澶栫綉Telenet绔彛
+//@property (nonatomic,assign) NSInteger cmdPort;
+//
+/////澶栫綉Http鐩戝惉鐨勭鍙PNP妫�娴嬩娇鐢�
+//@property (nonatomic,assign) NSInteger httpPort;
+//
+/////澶栫綉鎺ㄦ祦浣跨敤鐨勭洃鍚鍙�
+//@property (nonatomic,assign) NSInteger streamPort;
+//
+/////鍐呯綉Telent绔彛
+//@property (nonatomic,assign) NSInteger localCmdPort;
+//
+/////鍐呯綉Http鐩戝惉鐨勭鍙PNP妫�娴嬩娇鐢�
+//@property (nonatomic,assign) NSInteger localHttpPort;
+//
+/////鍐呯綉鎺ㄦ祦浣跨敤鐨勭洃鍚鍙�
+//@property (nonatomic,assign) NSInteger localStreamPort;
+
+
+@end
+
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZLeaveMessage.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZLeaveMessage.h
new file mode 100644
index 0000000..dbf5c62
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZLeaveMessage.h
@@ -0,0 +1,41 @@
+//
+//  EZLeaveMessage.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/12/11.
+//  Copyright 漏 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓虹暀瑷�娑堟伅瀵硅薄
+@interface EZLeaveMessage : NSObject
+
+/// 娑堟伅Id
+@property (nonatomic, copy) NSString *id;
+/// 璁惧搴忓垪鍙�
+@property (nonatomic, copy) NSString *deviceSerial;
+/// 璁惧鍚嶇О
+@property (nonatomic, copy) NSString *deviceName;
+/// 鐣欒█鏃堕暱锛堝崟浣嶏細绉掞級
+@property (nonatomic) NSInteger duration;
+/// 鐣欒█娑堟伅绫诲瀷锛�1-璇煶鐣欒█ 2-瑙嗛鐣欒█
+@property (nonatomic) NSInteger contentType;
+/// 鎺ユ敹or鍥炲锛�1-鐢ㄦ埛鎺ユ敹锛堣澶囧彂閫侊級2-鐢ㄦ埛鍥炲锛堝鎴风鍙戦�侊級
+@property (nonatomic) NSInteger messageDirection;
+/// 鍙戦�佺绫诲瀷锛�1鈥揊1璁惧 2鈥揥eb瀹㈡埛绔� 3鈥搃Phone瀹㈡埛绔� 4鈥搃Pad瀹㈡埛绔� 5鈥揳ndroid瀹㈡埛绔� 6鈥揳ndroidPad瀹㈡埛绔�
+@property (nonatomic) NSInteger senderType;
+/// 鍙戦�佺鍒悕
+@property (nonatomic, copy) NSString *senderName;
+/// 鐣欒█灏侀潰鎴浘鍦板潃
+@property (nonatomic, copy) NSString *messagePicUrl;
+/// 娑堟伅鐘舵�侊細0-鏈 1-宸茶 2-鍒犻櫎
+@property (nonatomic) NSInteger status;
+/// 浜戝瓨鍌ㄦ湇鍔″櫒鍦板潃锛岀洰鍓嶉粯璁や负姝︽眽浜戝瓨鍌紝鏍煎紡涓�:{鍩熷悕:绔彛}
+@property (nonatomic, copy) NSString *cloudServerUrl;
+/// 鍒涘缓鏃堕棿
+@property (nonatomic, strong) NSDate *createTime;
+/// 淇敼鏃堕棿
+@property (nonatomic, strong) NSDate *updateTIme;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZPMPlayPrivateTokenInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZPMPlayPrivateTokenInfo.h
new file mode 100644
index 0000000..7d69b75
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZPMPlayPrivateTokenInfo.h
@@ -0,0 +1,22 @@
+//
+//  EZPMPlayPrivateTokenInfo.h
+//  EZPlay
+//
+//  Created by JuneCheng on 2022/11/24.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZPMPlayPrivateTokenInfo : NSObject
+
+@property (nonatomic, assign) BOOL enable;///<
+@property (nonatomic, copy) NSString *token;///<
+
+
+- (instancetype)initWithType:(NSInteger)type data:(NSData *)data;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZPlayerExParamInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZPlayerExParamInfo.h
new file mode 100644
index 0000000..1fe1a86
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZPlayerExParamInfo.h
@@ -0,0 +1,34 @@
+//
+//  EZPlayerExParamInfo.h
+//  EzvizOpenSDK
+//
+//  Created by linyong on 2018/4/2.
+//  Copyright 漏 2018骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+typedef enum
+{
+    EZPLAYER_STREAM_DEFAULT = 0,//榛樿
+    EZPLAYER_STREAM_MAIN,//涓荤爜娴�
+    EZPLAYER_STREAM_SUB,//瀛愮爜娴�
+    EZPLAYER_STREAM_MAX
+}EZPlayerStreamType;
+
+typedef enum
+{
+    EZPLAYER_TRANS_DEFAULT = 0, //榛樿
+    EZPLAYER_TRANS_EZVIZ,//钀ょ煶绉佹湁娴佸獟浣�
+    EZPLAYER_TRANS_RTMP,//RTMP
+    EZPLAYER_TRANS_MAX
+}EZPlayerTransportType;
+
+@interface EZPlayerExParamInfo : NSObject
+
+@property (nonatomic,copy) NSString *vtduIp; ///vtdu鏈嶅姟鍣╥p
+@property (nonatomic,assign) NSInteger vtduPort; //vtdu绔彛鍙�
+@property (nonatomic) EZPlayerStreamType streamMode; ///榛樿涓�0锛屼富鐮佹祦涓�1锛屽瓙鐮佹祦涓�2
+@property (nonatomic,assign) EZPlayerTransportType protocolType; ///浼犺緭鍗忚锛岄粯璁や负0
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZProbeDeviceInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZProbeDeviceInfo.h
new file mode 100644
index 0000000..18e7369
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZProbeDeviceInfo.h
@@ -0,0 +1,47 @@
+//
+//  EZProbeDeviceInfo.h
+//  EZWiFiConfigSDK
+//
+//  Created by DeJohn Dong on 15/12/11.
+//  Copyright 漏 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓烘煡璇㈣澶囦俊鎭璞★紙璁惧娣诲姞鍓嶄娇鐢級
+@interface EZProbeDeviceInfo : NSObject
+
+/// 灞曠ず鍚嶇О
+@property (nonatomic, copy) NSString *displayName;
+/// 璁惧澶х被鍚�
+@property (nonatomic, copy) NSString *category;
+/// 璁惧鍨嬪彿鍚�
+@property (nonatomic, copy) NSString *model;
+/// 璁惧鐭簭鍒楀彿
+@property (nonatomic, copy) NSString *subSerial;
+/// 璁惧闀垮簭鍒楀彿
+@property (nonatomic, copy) NSString *fullSerial;
+/// 璁惧鍦ㄧ嚎鐘舵�侊紝1-鍦ㄧ嚎锛屽叾浠�-涓嶅湪绾�
+@property (nonatomic) NSInteger status;
+/// 璁惧鍥剧墖
+@property (nonatomic, copy) NSString *defaultPicPath;
+/// 鏄惁鏀寔wifi锛�0-涓嶆敮鎸侊紝1-鏀寔锛�2-鏀寔甯serId鐨勬柊鐨剋ifi閰嶇疆鏂瑰紡锛�3-鏀寔smartwifi
+@property (nonatomic) NSInteger supportWifi;
+/// 鏄惁鏀寔AP閰嶇綉锛�2-鏀寔AP锛屽叾浠栧�间负涓嶆敮鎸丄P閰嶇綉
+@property (nonatomic) NSInteger supportAP;
+/// 鏄惁鏀寔澹版尝閰嶇疆,0-涓嶆敮鎸侊紝1-鏀寔
+@property (nonatomic) NSInteger supportSoundWave;
+/// 鏄惁鏀寔浜戝瓨鍌紝0-涓嶆敮鎸侊紝1-鏀寔
+@property (nonatomic) NSInteger supportCloud;
+/// 璁惧鍗忚鐗堟湰
+@property (nonatomic, copy) NSString *releaseVersion;
+/// 璁惧鐗堟湰
+@property (nonatomic, copy) NSString *version;
+/// 鍙敤浜庢坊鍔犵殑閫氶亾鏁�
+@property (nonatomic) NSInteger availiableChannelCount;
+/// N1锛孯1锛孉1绛夎澶囧叧鑱旂殑璁惧鏁�
+@property (nonatomic) NSInteger relatedDeviceCount;
+/// 鑳藉姏闆�
+@property (nonatomic, copy) NSString *supportExt;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZRecordCoverFetcherManager.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZRecordCoverFetcherManager.h
new file mode 100644
index 0000000..8c9e365
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZRecordCoverFetcherManager.h
@@ -0,0 +1,69 @@
+//
+//  EZRecordCoverFetcherManager.h
+//  EZPlay
+//
+//  Created by JuneCheng on 2022/12/19.
+//
+
+#import <Foundation/Foundation.h>
+@class EZDeviceRecordFile;
+
+// Fetcher鍒濆鍖栦唬鐞�
+@protocol RecordCoverFetcherDelegate<NSObject>
+
+@optional
+/**
+ * SD鍗″綍鍍忓皝闈㈡彁鍙栧櫒鍒濆鍖栨垚鍔熷洖璋�
+ */
+- (void)onFetcherInitSuccess;
+
+/**
+ * SD鍗″綍鍍忓皝闈㈡彁鍙栧櫒鍒濆鍖栧け璐ュ洖璋�
+ */
+- (void)onFetcherInitFailed;
+
+/**
+ * SD鍗″綍鍍忓皝闈㈡彁鍙栧皝闈㈡垚鍔熷洖璋�
+ */
+- (void)onGetCoverSuccess:(int)seq data:(NSData *_Nonnull)data;
+
+/**
+ * SD鍗″綍鍍忓皝闈㈡彁鍙栧皝闈㈠け璐ュ洖璋�
+ */
+- (void)onGetCoverFailed:(int)errorCode;
+
+@end
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZRecordCoverFetcherManager : NSObject
+
+
+@property (nonatomic, weak) id <RecordCoverFetcherDelegate> fetcherDelegate;
+
++ (instancetype)sharedInstance;
+
+/**
+ * 涓庤澶囧缓绔嬮摼鎺�
+ *
+ * @param   deviceSerial 璁惧搴忓垪鍙�
+ * @param   cameraNo 璁惧閫氶亾鍙�
+ */
+- (void)initFetcherWithDeviceSerial:(NSString *)deviceSerial cameraNo:(NSInteger)cameraNo;
+
+
+/**
+ * 鏂紑涓庤澶囩殑閾炬帴
+ */
+- (void)stopFetcher;
+
+
+/**
+ * 璺熻澶囪姹係D鍗″綍鍍忓皝闈�
+ */
+- (void)requestRecordCover:(NSArray<EZDeviceRecordFile *> *)recordFiles;
+
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZRecordDownloadTask.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZRecordDownloadTask.h
new file mode 100644
index 0000000..ba50a2a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZRecordDownloadTask.h
@@ -0,0 +1,86 @@
+//
+//  EZRecordDownloadTask.h
+//  EZOpenSDK
+//
+//  Created by yuqian on 2019/7/2.
+//  Copyright 漏 2019 Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef NS_ENUM(NSInteger, EZRecordDownloaderStatus)
+{
+    EZRecordDownloaderStatusStart = 1,          //寮�濮嬩笅杞�
+    EZRecordDownloaderStatusFinish = 2,         //褰曞儚涓嬭浇缁撴潫
+    EZRecordDownloaderStatusMoreToken = 3,
+};
+
+typedef enum : NSUInteger {
+    EZRecordDownloadTaskWaitting,
+    EZRecordDownloadTaskDownloading,
+    EZRecordDownloadTaskCompleting,
+} EZRecordDownloadTaskStatus;
+
+@interface EZRecordDownloadTask : NSObject
+
+/**
+ 姣忎釜涓嬭浇浠诲姟鐨勫敮涓�鏍囪瘑
+ */
+@property (nonatomic, assign) NSUInteger taskID;
+
+
+@property (nonatomic, assign) EZRecordDownloadTaskStatus taskStatus;
+
+/**
+ 鏈湴瀛樻斁璺緞
+ */
+@property (nonatomic, strong) NSString *saveFilePath;
+
+/**
+ 缁撴潫鍥炶皟
+ */
+@property (nonatomic, copy) void(^finshed)(EZRecordDownloaderStatus statusCode);
+
+/**
+ 澶辫触鍥炶皟
+ */
+@property (nonatomic, copy) void(^failed)(NSError *error);
+
+/**
+ 宸蹭笅杞芥枃浠跺ぇ灏忓洖璋�
+ */
+@property (nonatomic, copy) void(^downloading)(NSUInteger downloadSize);
+
+/**
+ 寮�濮嬩笅杞�
+
+ @return 鎴愬姛0锛屽け璐�-1
+ */
+- (int)startRecordDownload;
+
+/**
+ 缁撴潫涓嬭浇锛屾竻鐞嗚祫婧�
+ */
+- (void)stopRecordDownload;
+
+/**
+ 璁剧疆涓嬭浇鍥炶皟
+ 
+ @param finshed 缁撴潫鍥炶皟
+ @param failed 澶辫触鍥炶皟
+ */
+- (void)setDownloadCallBackWithFinshed:(void(^)(EZRecordDownloaderStatus statusCode))finshed
+                                failed:(void(^)(NSError *error))failed;
+
+/**
+ 璁剧疆涓嬭浇杩涘害鍥炶皟
+ 
+ @param downloading 涓嬭浇鏂囦欢澶у皬鍥炶皟
+ */
+- (void)setDownloadCallBackWithDownloadSize:(void(^)(NSUInteger downloadSize))downloading;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZRecordDownloader.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZRecordDownloader.h
new file mode 100644
index 0000000..d815790
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZRecordDownloader.h
@@ -0,0 +1,49 @@
+//
+//  EZRecordDownloader.h
+//  EZOpenSDK
+//
+//  Created by yuqian on 2019/7/2.
+//  Copyright 漏 2019 Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class EZRecordDownloadTask;
+
+@interface EZRecordDownloader : NSObject
+
+
+/// 涓嬭浇浠诲姟闃熷垪
+@property (nonatomic, strong, readonly) NSMutableArray *tasks;
+
+/**
+ 鍒濆鍖栧崟渚�
+ 
+ @return 鍗曚緥
+ */
++ (instancetype) shareInstane;
+
+/**
+ 娣诲姞涓嬭浇浠诲姟锛屽苟寮�濮嬩笅杞�
+ 浠诲姟涓嬭浇骞跺彂鏁伴噺闄愬埗锛屾渶楂樻敮鎸� 10 涓换鍔″苟琛屼笅杞�
+ 璁惧褰曞儚涓嬭浇锛氫緷璧栬澶囨墍鏀寔鐨勬渶楂樿矾鏁伴檺鍒�
+ 
+ 
+ @param task 涓嬭浇浠诲姟
+ @return 鏄惁鍔犲叆闃熷垪鎴愬姛  0 寮�濮嬩笅杞� -1 浠诲姟涓虹┖   -2 浠诲姟宸插湪涓嬭浇 
+ */
+- (int) addDownloadTask:(EZRecordDownloadTask *)task;
+
+/**
+ 鍋滄涓嬭浇浠诲姟锛屽苟娓呴櫎涓嬭浇鍒楄〃涓殑浠诲姟銆備笅杞界粨鏉熸垨澶辫触鍧囪鎵ц锛屾竻鐞嗚祫婧�
+ 
+ @param task 涓嬭浇浠诲姟
+ @return 鏄惁绉婚櫎闃熷垪鎴愬姛
+ */
+- (int) stopDownloadTask:(EZRecordDownloadTask *)task;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZSADPDeviceInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZSADPDeviceInfo.h
new file mode 100644
index 0000000..7abbece
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZSADPDeviceInfo.h
@@ -0,0 +1,40 @@
+//
+//  EZSADPDeviceInfo.h
+//  EzvizOpenSDK
+//
+//  Created by linyong on 2017/8/15.
+//  Copyright 漏 2017骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface EZSADPDeviceInfo : NSObject
+
+///闀胯澶囧簭鍒楀彿
+@property (nonatomic,copy) NSString *deviceSerial;
+///璁惧mac鍦板潃
+@property (nonatomic,copy) NSString *deviceMac;
+///璁惧鏄惁婵�娲�
+@property (nonatomic,assign) BOOL actived;
+///璁惧鏈湴鍦板潃 IPV4
+@property (nonatomic,copy) NSString *localIp;
+///璁惧绔彛鍙�
+@property (nonatomic,assign) NSInteger localPort;
+///璁惧鏈湴鍦板潃 IPV6
+@property (nonatomic,copy) NSString *localIpV6;
+///http绔彛鍙�
+@property (nonatomic,assign) NSInteger httpPort;
+///璁惧绫诲瀷
+@property (nonatomic,assign) NSInteger deviceType;
+///璁惧绫诲瀷鎻忚堪
+@property (nonatomic,copy) NSString *deviceTypeDes;
+///璁惧鍥轰欢鐗堟湰鍙�
+@property (nonatomic,copy) NSString *firmwareVersion;
+///鎸変綅琛ㄧず,瀵瑰簲涓轰负1琛ㄧず鏀寔,0x01:鏄惁鏀寔Ipv6,0x02:鏄惁鏀寔淇敼Ipv6鍙傛暟,0x04:鏄惁鏀寔Dhcp,0x08:鏄惁鏀寔udp澶氭挱,0x10:鏄惁鍚姞瀵嗚妭鐐�,0x20:鏄惁鏀寔鎭㈠瀵嗙爜,0x40:鏄惁鏀寔閲嶇疆瀵嗙爜,0x80:鏄惁鏀寔鍚屾IPC瀵嗙爜
+@property (nonatomic,assign) NSInteger abilitySupport;
+///鏄惁鍚敤DHCP
+@property (nonatomic,assign) BOOL DHCPOn;
+///鏄惁鏄悿鐭宠澶�
+@property (nonatomic,assign) BOOL isEzvizDevice;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZStorageInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZStorageInfo.h
new file mode 100644
index 0000000..2393d5a
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZStorageInfo.h
@@ -0,0 +1,23 @@
+//
+//  EZStorageInfo.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/12/15.
+//  Copyright 漏 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓鸿澶囧瓨鍌ㄤ俊鎭璞�
+@interface EZStorageInfo : NSObject
+
+/// 瀛樺偍浠嬭川绱㈠紩
+@property (nonatomic) NSInteger index;
+/// 瀛樺偍浠嬭川鍚嶇О
+@property (nonatomic, copy) NSString *name;
+/// 瀛樺偍浠嬭川鐘舵�侊紝0姝e父銆�1瀛樺偍浠嬭川閿欍��2鏈牸寮忓寲銆�3姝e湪鏍煎紡鍖�
+@property (nonatomic) NSInteger status;
+/// 瀛樺偍浠嬭川鏍煎紡鍖栬繘搴�
+@property (nonatomic) NSInteger formatRate;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZTokenKit.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZTokenKit.h
new file mode 100644
index 0000000..03f143f
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZTokenKit.h
@@ -0,0 +1,40 @@
+//
+//  EzvizTokenKit.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/8/31.
+//  Copyright (c) 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface EZTokenKit : NSObject
+
+@property (nonatomic, readonly) NSString *token;  //鑾峰彇绗竴涓猼oken
+@property (nonatomic, readonly) NSInteger tokenCount; //褰撳墠tokenKit閲岃繕鏈夊灏憈oken鐨勬暟閲�
+
+/**
+ *  鍗曚緥鏂规硶
+ *
+ *  @return EZTokenKit瀵硅薄
+ */
++ (instancetype)sharedKit;
+
+/**
+ *  璁剧疆TokenList鏁扮粍
+ *
+ *  @param tokenList token鏁扮粍
+ */
+- (void)setTokens:(NSArray *)tokenList;
+
+/**
+ *  娓呯┖鏁扮粍
+ */
+- (void)clearTokens;
+
+/**
+ *  棰勫姞杞藉彇娴乼oken
+ */
+- (void)prepareToken:(void (^)(NSError *error))block;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZUserInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZUserInfo.h
new file mode 100644
index 0000000..dbfafe6
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZUserInfo.h
@@ -0,0 +1,23 @@
+//
+//  EZUserInfo.h
+//  EzvizOpenSDK
+//
+//  Created by DeJohn Dong on 15/12/11.
+//  Copyright 漏 2015骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓虹敤鎴蜂俊鎭璞�
+@interface EZUserInfo : NSObject
+
+/// 鐢ㄦ埛鍚�
+@property (nonatomic, copy) NSString *username;
+/// 鏄电О锛屾捣澶栫増鏈瀛楁涓虹┖
+@property (nonatomic, copy) NSString *nickname;
+/// 鐢ㄦ埛澶村儚鍦板潃锛屾捣澶栫増鏈瀛楁涓虹┖
+@property (nonatomic, copy) NSString *avatarUrl;
+/// 鐢ㄦ埛鍖哄煙domain
+@property (nonatomic, copy) NSString *areaDomain;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoQualityInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoQualityInfo.h
new file mode 100644
index 0000000..f392af7
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoQualityInfo.h
@@ -0,0 +1,23 @@
+//
+//  EZVideoQualityInfo.h
+//  EzvizOpenSDK
+//
+//  Created by linyong on 2017/2/28.
+//  Copyright 漏 2017骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+/// 姝ょ被涓洪�氶亾鏀寔鐨勬竻鏅板害淇℃伅
+@interface EZVideoQualityInfo : NSObject
+
+/// 娓呮櫚搴﹀悕绉帮紝濡傝秴娓呫�侀珮娓呫�佸潎琛°�佹祦鐣呯瓑
+@property (nonatomic,copy) NSString *videoQualityName;
+
+/// 瑙嗛璐ㄩ噺锛�0-娴佺晠锛�1-鍧囪 锛�2-楂樻竻锛�3-瓒呮竻
+@property (nonatomic,assign) NSInteger videoLevel;
+
+/// 璇ユ竻鏅板害鎵�浣跨敤鐨勭爜娴佺被鍨嬶紝1涓轰富鐮佹祦锛�2涓哄瓙鐮佹祦
+@property (nonatomic,assign) NSInteger streamType;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZBAVParam.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZBAVParam.h
new file mode 100644
index 0000000..b3d1e94
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZBAVParam.h
@@ -0,0 +1,196 @@
+//
+//  EZBAVParam.h
+//  EZBAVClient
+//
+//  Created by kanhaiping on 2018/6/27.
+//  Copyright 漏 2018骞� hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+
+/*
+ typedef struct SBavDevInfo
+ {
+     YS_INT8            m_szDevSerial[STREAM_DEV_SERIAL_LEN + 1];                //蹇呭~    璁惧搴忓垪鍙�
+     YS_UINT32        m_sChannel;                                                //蹇呭~    閫氶亾鍙�
+     YS_INT16        m_sDevStreamType;                                        //蹇呭~    璁惧涓诲瓙鐮佺被鍨�
+     YS_INT8            m_szAuthToken[STREAM_TOKEN_LEN + 1];                    //蹇呭~    璁よ瘉token
+ }SBavDevInfo;
+ */
+
+@interface EZBAVDevInfo : NSObject
+@property (nonatomic, strong) NSString *serial; /**< 蹇呭~    璁惧搴忓垪鍙� */
+@property (nonatomic, assign) int32_t m_iChannel;//蹇呭~    閫氶亾鍙�
+@property (nonatomic, assign) int32_t m_iDevStreamType;//蹇呭~    璁惧涓诲瓙鐮佺被鍨�
+@property (nonatomic, strong) NSString *m_szAuthToken; /**< 蹇呭~    璁よ瘉token */
+@end
+/*
+ typedef struct
+ {
+     YS_UINT32        m_iRoomId;                                                //蹇呭~    闇�瑕佸姞鍏ユ埧闂村彿
+     YS_UINT32        m_uClientId;                                            //蹇呭~    鍔犲叆鏂筩lientId
+     YS_INT8            m_szCustomId[CUSTOMID_LEN + 1];                            //閫夋嫨    鍔犲叆鏂硅嚜瀹氫箟Id
+     YS_INT8            m_szPassword[STREAM_TOKEN_LEN + 1];                        //蹇呭~    鎴块棿瀵嗙爜
+     YS_UINT8        m_iCltType;                                                //蹇呭~    瀹㈡埛绔被鍨�
+     YS_UINT16        m_iStsPort;                                                //蹇呭~    杞彂鏈嶅姟绔彛
+     YS_INT8            m_szStsAddr[CLIENT_STREAM_SVR_ADDR_LEN + 1];            //蹇呭~    杞彂鏈嶅姟鍦板潃
+     YS_UINT16        m_iVcPort;                                                //蹇呭~    浼氭帶鏈嶅姟绔彛
+     YS_INT8            m_szVcAddr[CLIENT_STREAM_SVR_ADDR_LEN + 1];                //蹇呭~    浼氭帶鏈嶅姟鍦板潃
+     YS_INT8            m_szFilePath[FLIEPATH + 1];                                //閫夋嫨  鍐欐枃浠剁殑璺緞
+     YS_INT8            m_szExtensionParas[CLIENT_STREAM_EXTENSION_LEN + 1];    //閫夋嫨    鎵╁睍瀛楁淇℃伅
+ }EZConferenceParam;
+ */
+@interface EZRTCJoinParam : NSObject
+@property (nonatomic, assign) int32_t m_iRoomId; /**<蹇呭~    闇�瑕佸姞鍏ユ埧闂村彿 */
+@property (nonatomic, assign) int32_t m_uClientId; /**< 蹇呭~    鍔犲叆鏂筩lientId */
+@property (nonatomic, strong) NSString *m_szCustomId;  /**< 閫夋嫨    鍔犲叆鏂硅嚜瀹氫箟Id */
+@property (nonatomic, strong) NSString *m_szPassword;  /**< 閫夋嫨     鎴块棿瀵嗙爜 */
+@property (nonatomic, assign) int32_t m_iCltType; /**< 蹇呭~    瀹㈡埛绔被鍨� */
+@property (nonatomic, strong) NSString *m_szVcAddr;//蹇呭~    瑙嗛浼氳蹇呭~ 浼氭帶鏈嶅姟鍦板潃
+@property (nonatomic, assign) int32_t m_iVcPort;//蹇呭~    瑙嗛浼氳蹇呭~ 浼氭帶鏈嶅姟绔痥鍙�
+@property (nonatomic, strong) NSString *m_szStsAddr; /**< 蹇呭~    杞彂鏈嶅姟鍦板潃 */
+@property (nonatomic, assign) int32_t m_iStsPort; /**< 蹇呭~    杞彂鏈嶅姟绔彛 */
+@property (nonatomic, strong) NSString *m_szExtensionParas; /**< 閫夋嫨    鎵╁睍瀛楁淇℃伅 */
+
+@end
+
+
+@interface EZBAVParam : NSObject
+
+@property (nonatomic, assign) int32_t m_iCltRole; /**< 蹇呭~    0 鍙戣捣 1 鎺ュ彈 鍙戣捣绔~鍐�0 鎺ュ彈绔~鍐�1 鎷掔粷涓�2 */
+@property (nonatomic, assign) int32_t m_iStreamType;/**< 蹇呴��    0 闊宠棰� 1 瀵硅 2 浼氳*/
+//@property (nonatomic, assign) int32_t m_szIsNpq;/**< 閫夋嫨  0 涓嶈蛋NPQ锛岃蛋TCP 1 鏄疦PQ锛岃蛋UDP */
+@property (nonatomic, assign) int32_t m_iCltType; /**< 蹇呭~    瀹㈡埛绔被鍨� */
+
+@property (nonatomic, strong) NSString *m_szVcAddr;//蹇呭~    瑙嗛浼氳蹇呭~ 浼氭帶鏈嶅姟鍦板潃
+@property (nonatomic, assign) int32_t m_iVcPort;//蹇呭~    瑙嗛浼氳蹇呭~ 浼氭帶鏈嶅姟绔痥鍙�
+@property (nonatomic, strong) NSString *m_szStsAddr; /**< 蹇呭~    杞彂鏈嶅姟鍦板潃 */
+@property (nonatomic, assign) int32_t m_iStsPort; /**< 蹇呭~    杞彂鏈嶅姟绔彛 */
+
+@property (nonatomic, assign) int32_t m_iRoomId; /**< 閫夋嫨    闇�瑕佸姞鍏ユ埧闂村彿锛屽彧鏈夋帴鍙楃闇�瑕佸~鍐� */
+@property (nonatomic, assign) int32_t m_iClientId; //閫夊~  鍙戣捣or鍔犲叆鑰呯殑id
+@property (nonatomic, strong) NSString *m_szSelfId;  /**< 蹇呭~  鏍囪瘑Id */
+@property (nonatomic, assign) int32_t m_iReason; /**< 閫夋嫨  鍘熷洜 鎷掓帴鎺ュ惉101 鏃犱汉鎺ュ惉102 */
+
+//@property (nonatomic, assign) int32_t m_iMaxBitrate;/**< 蹇呭~    鐮佺巼鍙樺寲鑼冨洿鐨勬渶澶у�� */
+//
+//@property (nonatomic, assign) int32_t m_iMinBitrate;/**< 蹇呭~    鐮佺巼鍙樺寲鑼冨洿鐨勬渶灏忓�� */
+
+//@property (nonatomic, assign) int32_t m_iType;/**< 閫夋嫨  鍙傝�傿AV_QOS_TYPE */
+//
+//@property (nonatomic, assign) int32_t m_iVideo;/**< 閫夋嫨  鏄惁寮�鍚棰慟os 1 寮�鍚� 0 涓嶅紑鍚� */
+//
+//@property (nonatomic, assign) int32_t m_iAudio;/**< 閫夋嫨  鏄惁寮�鍚煶棰慟os 1 寮�鍚� 0 涓嶅紑鍚� */
+
+@property (nonatomic, assign) int32_t m_iAuthType; /**< 蹇呭~    璁よ瘉鏂瑰紡 */
+@property (nonatomic, strong) NSString *m_szAuthToken; /**< 蹇呭~    璁よ瘉token */
+
+
+
+@property (nonatomic, assign) int32_t m_iOtherCltType; /**< 閫夋嫨    鍙湁瀵圭鏄墜琛ㄧ闇�濉啓 */
+@property (nonatomic, strong) NSString *m_szOterId; /**< 閫夋嫨    鍙湁瀵圭鏄墜琛ㄧ闇�濉啓 */
+@property (nonatomic, assign) int32_t m_iChannel;//閫夊~  涓夋柟闊宠棰戞椂锛孖PC璁惧闇�瑕佸~鍐�
+@property (nonatomic, assign) int32_t m_iDevStreamType;//閫夊~  璁惧涓诲瓙鐮佹祦
+
+@property (nonatomic, strong) NSString *m_szExtensionParas; /**< 閫夋嫨    鎵╁睍瀛楁淇℃伅 */
+
+
+@end
+
+
+
+/// 涓庝細鑰呬俊鎭�
+@interface EZRTCParticipantsInfo : NSObject
+@property (nonatomic, assign) uint32_t m_uRoomId;
+@property (nonatomic, assign) uint32_t m_uClientId;
+@property (nonatomic, strong) NSString *m_sCustomId;
+@property (nonatomic, strong) NSString *m_szUserName;
+@property (nonatomic, assign) uint8_t m_iCltType; //鐢ㄤ互鍖哄垎鏄惁鏄澶� 111:璁惧 
+@property (nonatomic, assign) int8_t audioState;// 澹伴煶鍚敤鐘舵�� 0-鍏抽棴 1-鍚敤
+@property (nonatomic, assign) int8_t videoState;// 瑙嗛鍚敤鐘舵�� 0-鍏抽棴 1-涓绘祦 5-涓诲瓙娴�
+@property (nonatomic, assign) int8_t shareState;// 灞忓箷鍏变韩鍚敤鐘舵�� 0-鍏抽棴 1-鍚敤
+@property (nonatomic, assign) int8_t upNetState;//缃戠粶鐘舵��
+@property (nonatomic, assign) int8_t downNetState;//缃戠粶鐘舵��
+
+@end
+
+
+@interface EZRTCParticipantVolume : NSObject
+@property (nonatomic, assign) uint32_t m_uClientId;
+@property (nonatomic, strong) NSString *m_sCustomId;
+@property (nonatomic, assign) uint8_t m_sVolume;    //闊抽噺寮哄害0-10 10涓烘渶寮� 0涓烘渶寮�
+@end
+
+
+@interface EZRTCStatistic : NSObject
+@property (nonatomic, assign) int32_t type;//0锛氬瓙琛� 1锛氫富琛�
+@property (nonatomic, strong) NSDictionary *statisticInfo;
+@end
+
+///鏈湴鐨勯煶瑙嗛缁熻
+@interface EZRTCLocalStatistics : NSObject
+///瑙嗛鎸囨爣鍙傛暟
+@property (nonatomic, assign) uint32_t videoSentBitrate; //瑙嗛浼犺緭鐮佺巼(涓婅)
+@property (nonatomic, assign) uint32_t videoSentFrameRate; //甯х巼澶у皬
+@property (nonatomic, assign) uint16_t videoPacketLossRate; //瑙嗛涓㈠寘鐜�
+@property (nonatomic, assign) uint16_t videoStreamType; //娴佺被鍨�
+///闊抽鎸囨爣鍙傛暟
+@property (nonatomic, assign) uint32_t audioSentBitrate;//闊抽浼犺緭鐮佺巼
+@property (nonatomic, assign) uint16_t audioPacketLossRate;//闊抽涓㈠寘鐜�
+@end
+
+///杩滅鐨勯煶瑙嗛缁熻
+@interface  EZRTCRemoteStatistics : NSObject
+///瑙嗛鎸囨爣鍙傛暟
+@property (nonatomic, assign) uint32_t videoClientId; //杩滅瑙嗛clientId
+@property (nonatomic, assign) uint32_t videoReceivedBitrate;//杩滅瑙嗛浼犺緭鐮佺巼锛堜笅琛岋級
+@property (nonatomic, assign) uint32_t videoReceivedFrameRate;//杩滅甯х巼澶у皬
+@property (nonatomic, assign) uint16_t videoPacketLossRate;//杩滅瑙嗛涓㈠寘鐜�(涓嬭)
+@property (nonatomic, assign) uint16_t videoTotalFrozenTime;//杩滅瑙嗛鎬荤殑鍗¢】鏃堕暱
+@property (nonatomic, assign) uint16_t videoFrozenRate; //杩滅瑙嗛鍗¢】姣�
+@property (nonatomic, assign) uint16_t streamType; //杩滅娴佺被鍨�
+///闊抽鎸囨爣鍙傛暟
+@property (nonatomic, assign) uint32_t audioClientId; //杩滅闊抽clientId
+@property (nonatomic, assign) uint32_t audioReceivedBitrate;//杩滅闊抽浼犺緭鐮佺巼锛堜笅琛岋級
+@property (nonatomic, assign) uint16_t audioPacketLossRate;//杩滅闊抽涓㈠寘鐜�(涓嬭)
+@property (nonatomic, assign) uint16_t audioTotalFrozenTime;//杩滅闊抽鎬荤殑鍗¢】鏃堕暱
+@property (nonatomic, assign) uint16_t audioFrozenRate; //杩滅闊抽鍗¢】姣�
+
+@end
+
+@interface EZRTCVideoSize : NSObject
+
+@property (nonatomic, assign) int width;//瀹�
+@property (nonatomic, assign) int height;//楂�
+
+@end
+
+extern int32_t const EZBAVMessageRoomCreated;
+extern int32_t const EZBAVMessagePeerEnteredRoom;
+extern int32_t const EZBAVMessagePeerLeaveRoom;
+extern int32_t const EZBAVMessageStartInputData;
+//extern int32_t const EZBAVMessageOtherDisconnect;
+extern int32_t const EZBAVMessageTransferData;
+//extern int32_t const EZBAVMessageClientInfo;//鍏朵粬涓庝細瀹㈡埛绔俊鎭�
+extern int32_t const EZBAVMessageClientVolume;//鍏朵粬涓庝細瀹㈡埛绔煶閲�
+extern int32_t const EZBAVMessageClientAudioAvailable;
+extern int32_t const EZBAVMessageClientVideoAvailable;
+extern int32_t const EZBAVMessageNetworkQuality;
+extern int32_t const EZBAVMessageClientShareAvailable;
+extern int32_t const EZBAVMessageJoinRoomOK;
+extern int32_t const EZBAVMessageForcedQuit;
+extern int32_t const EZBAVMessageStatistic;
+
+extern int32_t const EZBAVForcedQuitReasonRepeatJoin;//宸插湪鍏朵粬鍦版柟鍔犲叆鎴块棿
+extern int32_t const EZBAVForcedQuitReasonMovedOut;//琚鐞嗗憳绉诲嚭鎴块棿
+extern int32_t const EZBAVForcedQuitReasonRoomDissolved;//鎴块棿瑙f暎
+
+extern int32_t const  EZBAVMessageLocalVideoStats;//缁熻鏈湴瑙嗛瀹炴椂鏁版嵁
+extern int32_t const  EZBAVMessageLocalAudioStats;//缁熻鏈湴闊抽瀹炴椂鏁版嵁
+extern int32_t const  EZBAVMessageRemoteVideoStats;//缁熻杩滅瑙嗛瀹炴椂鏁版嵁
+extern int32_t const  EZBAVMessageRemoteAudioStats;//缁熻杩滅闊抽瀹炴椂鏁版嵁
+
+
+
+typedef void(^EZAudioOpenResultBlock)(NSInteger ret);
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZConferenceClient.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZConferenceClient.h
new file mode 100644
index 0000000..43d478e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZConferenceClient.h
@@ -0,0 +1,238 @@
+//
+//  EZBAVClient.h
+//  EZBAVClient
+//
+//  Created by kanhaiping on 2018/6/26.
+//  Copyright 漏 2018骞� hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+#import "EZBAVParam.h"
+#import "EZRTCMediaSessionDefines.h"
+#import "EZVideoTalkView.h"
+
+
+
+@class EZConferenceClient;
+@class EZRTCCameraParam;
+@class EZRTCVideoEncodeParam;
+
+@protocol EZConferenceClientDelegate<NSObject>
+
+
+/// 閿欒鍥炶皟
+/// @param client client
+/// @param errorCode 鍑洪敊鐨勯敊璇爜
+- (void)bavClient:(EZConferenceClient *)client didReceivedError:(int32_t)errorCode;
+
+/**
+ 鍥炶皟娑堟伅
+
+ @param client client
+ @param messageCode 娑堟伅鐮� 鍙傝EZBAVMessage
+ @param msg 闄勫姞淇℃伅锛�
+    濡傛灉鏄疎ZBAVMessagePeerEnteredRoom锛宮sg鏄疎ZRTCParticipantsInfo瀵硅薄锛屼絾鏄彧鏈塵_uClientId銆乵_szUserName瀛楁鏈夋晥
+    濡傛灉鏄疎ZBAVMessagePeerLeaveRoom娑堟伅锛宮sg鏄疎ZRTCParticipantsInfo瀵硅薄锛屼絾鏄彧鏈塵_uClientId瀛楁鏈夋晥
+    濡傛灉鏄疎ZBAVMessageClientVolume娑堟伅锛宮sg鏄疎ZBAVParticipantVolume瀵硅薄
+    濡傛灉娑堟伅鏄� EZBAVMessageTransferData msg鏄� msg鏄瓧绗︿覆 @"瀹為檯鐨勯�忎紶娑堟伅"
+    濡傛灉娑堟伅鏄疎ZBAVMessageClientAudioAvailable锛宮sg鏄疎ZRTCParticipantsInfo瀵硅薄锛屼絾鏄彧鏈塵_uClientId鍜宎udioState瀛楁鏈夋晥
+    濡傛灉娑堟伅鏄疎ZBAVMessageClientVideoAvailable 锛宮sg鏄疎ZRTCParticipantsInfo瀵硅薄锛屼絾鏄彧鏈塵_uClientId鍜寁ideoState瀛楁鏈夋晥
+    濡傛灉娑堟伅鏄疎ZBAVMessageNetworkQuality 锛宮sg鏄疎ZRTCParticipantsInfo瀵硅薄锛屼絾鏄彧鏈塵_uClientId鍜宯etState瀛楁鏈夋晥
+    濡傛灉娑堟伅鏄疎ZBAVMessageJoinRoomOK 锛宮sg鏄痭il
+    濡傛灉娑堟伅鏄疎ZBAVMessageForcedQuit 锛宮sg鏄疦SNumber锛屾瘮濡侤(EZBAVForcedQuitReasonMovedOut)
+    濡傛灉娑堟伅鏄疎ZBAVMessageStatistic锛宮sg鏄疎ZRTCStatistic
+ 
+ */
+- (void)bavClient:(EZConferenceClient *)client didReceivedMessage:(int32_t)messageCode msg:(id)msg;
+
+@optional
+
+///**
+// 鍥炶皟娑堟伅 bavclient log鍥炶皟
+//
+// @param client client
+// @param msg 閫忎紶娑堟伅
+// */
+//- (void)bavClient:(EZVideoTalk *)client didReceivedBavClientLogMsg:(NSString*)msg;
+
+/**
+ 鏄剧ず鍥炶皟锛岄娆$敾闈㈠嚭鏉ヤ互鍙婂悗缁敾闈㈠昂瀵稿彂鐢熷彉鍖栨椂鍥炶皟
+
+ @param client client
+ @param width 鐢婚潰瀹藉害
+ @param height 鐢婚潰楂樺害
+ */
+- (void)bavClient:(EZConferenceClient *)client didDisplayWidth:(int32_t)width height:(int32_t)height ofRemoteClient:(int)clientID;
+
+/**
+ 鎾斁鍗¢】
+ 
+ @param client client
+ @param delayTime 鍗¢】鏃堕棿
+ */
+- (void)bavClient:(EZConferenceClient *)client playDelayTime:(int32_t)delayTime ofRemoteClient:(int)clientID;
+
+/**
+ 鎾斁鍗¢】缁熻
+ 
+ @param client client
+ @param delayTimeStat 鍗¢】鏃堕棿
+ */
+- (void)bavClient:(EZConferenceClient *)client playDelayTimeStatistics:(double)delayTimeStat ofRemoteClient:(int)clientID;
+
+/**
+ 鏈湴瑙嗛鏁版嵁鍥炶皟
+ 
+ @param localVideoStatistics 瑙嗛鐩稿叧鍙傛暟
+ @param width    瀹藉害
+ @param height  楂樺害
+ */
+- (void)onLocalVideoStats:(EZRTCLocalStatistics *)localVideoStatistics width:(int)width height:(int)height;
+
+/**
+ 鏈湴闊抽鏁版嵁鍥炶皟
+ 
+ @param localAudioStatistics 闊抽鐩稿叧鍙傛暟
+ */
+- (void)onLocalAudioStats:(EZRTCLocalStatistics *)localAudioStatistics;
+
+/**
+ 杩滅瑙嗛鏁版嵁鍥炶皟
+ 
+ @param remoteVideoStatistics 瑙嗛鐩稿叧鍙傛暟
+ @param width    瀹藉害
+ @param height  楂樺害
+ */
+- (void)onRemoteVideoStats:(EZRTCRemoteStatistics *)remoteVideoStatistics width:(int)width height:(int)height;
+
+/**
+ 杩滅闊抽鏁版嵁鍥炶皟
+ 
+ @param remoteAudioStatistics 闊抽鐩稿叧鍙傛暟
+ */
+- (void)onRemoteAudioStats:(EZRTCRemoteStatistics *)remoteAudioStatistics;
+
+
+@end
+
+@interface EZConferenceClient : NSObject
+
+@property (nonatomic, weak) id<EZConferenceClientDelegate> delegate;
+@property (nonatomic, assign, readonly) int32_t roomID;
+@property (nonatomic, assign, readonly) int32_t clientID;
+
+
+/**
+ 瀵硅鏃讹紝寮哄埗閲囩敤鎵0鍣ㄦ挱鏀惧0闊筹紝榛樿涓篩ES
+ */
+@property (nonatomic, assign) BOOL forceToSpeaker;
+
+
+/// 鍒濆鍖栬棰戦�氳瘽SDK瀵硅薄
+- (instancetype)init;
+
+/// 鍔犲叆浼氳锛堟柊鎺ュ彛锛�
+/// @param param 鍙傛暟
+- (NSInteger)enterRoom:(EZRTCJoinParam *)param;
+
+
+/// 閫�鍑轰細璁�
+- (NSInteger)exitRoom;
+
+
+/// 瑙f暎浼氳锛岃В鏁e悗锛屽叾浠栦笌浼氳�呬細鏀跺埌浼氳琚В鏁f秷鎭�
+- (void)dissolveRoom;
+
+/// 鏈湴鎽勫儚澶村紑鍚�/鍏抽棴鎺ュ彛
+/// @param enable 鏄惁寮�鍚憚鍍忓ご
+- (NSInteger)enableLocalVideo:(BOOL)enable;
+
+/// 璁剧疆鏈湴鐨勯瑙堢獥鍙�
+/// @param localWin 绐楀彛window
+- (void)setLocalView:(nullable EZVideoTalkView *)localWin;
+
+/// 鏈湴楹﹀厠椋庡紑鍚�/鍏抽棴鎺ュ彛
+/// @param enable 鏄惁寮�鍚害鍏嬮
+/// @param block 涓荤嚎绋嬪洖璋冪粨鏋�
+- (void)enableLocalAudio:(BOOL)enable withResultBlock:(EZAudioOpenResultBlock)block;
+
+/// 鏄惁寮�鍚緟娴侊紝杈呮祦鍒嗚鲸鐜囨洿浣庛�佺爜鐜囨洿灏�
+/// @param enable 鏄惁寮�鍚�
+/// @param encodeParam 缂栫爜鍙傛暟锛屽彲浠ヤ紶鍏il
+- (NSInteger)enableLocalSmallVideo:(BOOL)enable;
+
+
+/// 寮�鍚睆骞曞叡浜�
+/// @param name 鍏变韩鍚嶇О
+/// @param resultBlock 灞忓箷鍏变韩缁撴灉鍥炶皟
+/// @param didFinishBlock 灞忓箷鍏变韩缁撴潫鍥炶皟锛屽湪姝e父鐨勫睆骞曞叡浜粨鏉熺粨鏉熷悗鍥炶皟
+- (void)startScreenShareWithName:(NSString *)name
+                 withResultBlock:(EZScreenShareResultBlock)resultBlock
+                   andEndedBlock:(dispatch_block_t)didFinishBlock;
+
+
+/// 缁撴潫灞忓箷鍏变韩
+- (void)stopScreenShare;
+
+
+/// 璁剧疆杩滅▼绐楀彛锛�1.蹇呴』鍦ㄦ嬁鍒拌繙绔鎴风鍔犲叆鐨勬秷鎭悗璁剧疆锛�2.蹇呴』鍦ㄤ富绾跨▼璋冪敤
+/// @param window 鎾斁绐楀彛
+/// @param clientID 鍔犲叆鐨勫鎴风鐨処D
+/// @param streamType 1瑙嗛 4灏忔祦
+- (int32_t)setRemoteView:(nullable UIView *)window ofClient:(int32_t)clientID withStream:(NSInteger)streamType;
+
+/// 璁剧疆瑙傜湅灞忓箷鍏变韩鐨勭獥鍙�,蹇呴』鍦ㄤ富绾跨▼璋冪敤
+/// @param view 绐楀彛
+- (int32_t)setScreenShareView:(UIView *_Nullable)view;
+
+
+/// 閭�璇疯澶囧姞鍏ヤ細璁�
+/// @param dev 璁惧淇℃伅
+- (int32_t)inviteDev:(EZBAVDevInfo *_Nonnull)dev;
+
+
+/// 鍒囨崲瀵硅鏃朵娇鐢ㄧ殑鎽勫儚澶达紝榛樿閲囩敤鍓嶇疆 鍚屾鎺ュ彛
+/// @param backCameraSelected YES:閫夋嫨鍚庣疆锛孨O:閫夋嫨鍓嶇疆
+- (int32_t)switchCamera:(BOOL)backCameraSelected;
+
+
+- (EZRTCStatistic *_Nullable)getStatistic;
+
+#pragma 闄勫姞鎺ュ彛
+
+/// 寮�鍏充細璁腑鏌愪釜涓庝細鑰呯殑澹伴煶锛岄粯璁ゅ紑
+/// @param open YES:寮�锛孨O:鍏�
+- (int32_t)soundCtrl:(BOOL)open forClient:(int32_t)clientID;
+
+
+
+/// 寮傛鑾峰彇鏈湴鎶撳浘
+/// @param block 鎶撳浘鎴愬姛鍥炶皟锛屽け璐mage涓簄il
+//- (void)localScreenShotWithBlock:(void (^)(UIImage *image))block;
+
+/// 鑾峰彇杩滅鎶撳浘
+/// @param quality 鍘嬬缉璐ㄩ噺 0 ~ 100
+//- (UIImage *)remoteScreenShotWithQuality:(int)quality;
+
+/// 鏈湴褰曞埗
+/// @param path 鍐欏叆鐨勬矙鐩掕矾寰�
+- (BOOL)startLocalVideoRecordWithPath:(NSString *)path;
+
+/// 鍋滄鏈湴褰曞埗
+- (BOOL)stopLocalVideoRecord;
+
+/// 寮�濮嬭繙绔綍鍒� mp4
+/// @param path 鍐欏叆鐨勬矙鐩掕矾寰�
+- (BOOL)startRemoteVideoRecordWithPath:(NSString *)path  forClient:(int32_t)clientID;
+
+
+/// 鍋滄杩滅褰曞埗
+- (BOOL)stopRemoteVideoRecordForClient:(int32_t)clientID;
+
+
+/// 鍙戦�侀�忎紶娑堟伅鎺ュ彛锛屽悓姝ユ帴鍙o紝鍙兘鑰楁椂
+/// @param msg 娑堟伅鍐呭锛屾瘮濡俲son鏁版嵁
+- (int)sendTransferMsg:(NSString *)msg;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZRTCCameraParam.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZRTCCameraParam.h
new file mode 100644
index 0000000..503a5b8
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZRTCCameraParam.h
@@ -0,0 +1,38 @@
+//
+//  EZMediaSessionVideoParam.h
+//  EZBAVClient
+//
+//  Created by kanhaiping on 2018/7/13.
+//  Copyright 漏 2018骞� hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <AVFoundation/AVFoundation.h>
+
+@interface EZRTCCameraParam : NSObject
+
+
+/// 鎽勫儚澶撮噰闆嗛噰闆嗙敾闈㈢殑榛樿璁剧疆锛屾瘮濡侫VCaptureSessionPreset1280x720锛岃浼犲叆AVCaptureSessionPreset640x480 浠ヤ笂鐨勫垎杈ㄧ巼
+//@property (nonatomic, strong) AVCaptureSessionPreset resolutionPreset;
+
+/// 鏈�缁堣緭鍑虹殑鐢婚潰鐨勫
+//@property (nonatomic, assign) NSInteger pixelWidth;
+//
+///// 鏈�缁堣緭鍑虹殑鐢婚潰鐨勯珮
+//@property (nonatomic, assign) NSInteger pixelHeigth;
+
+/// 浼犲叆 AVCaptureVideoOrientation锛岄粯璁ょ珫灞�
+@property (nonatomic, assign) AVCaptureVideoOrientation videoOrientation;
+
+
+/// 鏄惁鏄悗缃憚鍍忓ご锛岄粯璁O
+@property (nonatomic, assign) BOOL isBackCameraSeleced;
+
+///// I甯ч棿闅� 榛樿4绉�
+//@property (nonatomic, assign) NSInteger encodeKeyFrameInterval;
+//
+///// 甯х巼
+//@property (nonatomic, assign) NSInteger fps;
+
++ (AVCaptureSessionPreset)resolutionPresetForWidth:(NSInteger)width andHeigth:(NSInteger)heigth andOri:(AVCaptureVideoOrientation)ori;
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZRTCMediaSessionDefines.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZRTCMediaSessionDefines.h
new file mode 100644
index 0000000..7c1a1bb
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZRTCMediaSessionDefines.h
@@ -0,0 +1,107 @@
+//
+//  EZMediaSessionDefines.h
+//  H264 Encode and Decode
+//
+//  Created by kanhaiping on 2018/6/22.
+//  Copyright 漏 2018骞� AJB. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#define EZMediaSessionEncodeResolutionRatioHigh  1  //鍒嗚鲸鐜� 1锛�480*480 0锛�320*320
+#define EZMediaSessionDstVideoFPS (15)
+#define EZMediaSessionDstVideoMaxKeyFrameInterval (300)//鍗曚綅绉�
+
+#define EZMediaSessionSmallStreamWidth (320)
+#define EZMediaSessionSmallStreamHeight (320)
+
+#define EZMediaSessionDefaultStreamWidth (480)
+#define EZMediaSessionDefaultStreamHeight (480)
+
+#define EZMediaSessionDstVideoAverageBitRate480x480 (4 * 128 * 1024)//鍗曚綅 bps  //averageBPS
+#define EZMediaSessionDstVideoDataRateLimits480x480 (6 * 128 * 1024)//鍗曚綅 bps  //maxBPS
+#define EZMediaSessionDstVideoAverageBitRate320x320 (4 * 128 * 1024 * 5 / 8)//鍗曚綅 bps  //averageBPS
+#define EZMediaSessionDstVideoDataRateLimits320x320 (6 * 128 * 1024 * 5 / 8)//鍗曚綅 bps  //maxBPS
+
+
+typedef NS_OPTIONS(NSUInteger, EZMediaCaptureSessionType) {
+    EZMediaSessionCaptureNone = 1 << 0,
+    EZMediaSessionCaptureVideoType = 1 << 1,
+    EZMediaSessionCaptureAudioType = 1 << 2,
+    EZMediaSessionCaptureThumbnailType = 1 << 3,
+    EZMediaSessionCaptureShareScreenType = 1 << 4,
+
+};
+
+typedef NS_ENUM(NSUInteger, EZMediaSessionErrorBase) {
+    EZMediaSessionErrorUnknowError = 9000,
+    EZMediaSessionErrorNotReadyToSendData,
+    EZMediaSessionErrorCallSeqError,
+    EZMediaSessionErrorDuplicated,
+    EZMediaSessionErrorBaseAudioCapture = 10000,
+    EZMediaSessionErrorBaseVideoCapture = 20000,
+    EZMediaSessionErrorBaseAudioEncode = 30000,
+    EZMediaSessionErrorBaseVideoEncode = 40000,
+    EZMediaSessionErrorBaseStreamClient = 50000,
+    EZMediaSessionErrorBasePlayer = 60000,
+};
+
+typedef NS_ENUM(NSUInteger, EZAudioRecorderError) {
+    EZAudioRecorderErrorUnknown = EZMediaSessionErrorBaseAudioCapture,
+    EZAudioRecorderErrorInitError = 10100,
+    EZAudioRecorderErrorUnableToCreateSample,
+    EZAudioRecorderErrorStateError,
+    EZAudioRecorderErrorAuthorizeFailed = 10152,
+    EZAudioRecorderErrorStopError = 10200,
+};
+
+typedef NS_ENUM(NSUInteger, EZMediaCaptureError) {
+    EZMediaCaptureErrorUnknown = EZMediaSessionErrorBaseVideoCapture,
+    EZMediaCaptureErrorInitError = 20100,
+    EZMediaCaptureErrorAuthorizeFailed = 20153,
+    EZMediaCaptureErrorSwitchCameraError = 20200,
+    EZMediaCaptureErrorCroppedError = 20300,
+    EZMediaCaptureErrorRenderError = 20400,
+    EZMediaCaptureErrorScreenStartError = 20500,
+    EZMediaCaptureErrorScreenStopError,
+    EZMediaCaptureErrorScreenRecordError,
+    EZMediaCaptureErrorUnsupport,
+};
+
+typedef NS_ENUM(NSUInteger, EZAudioEncoderError) {
+    EZAudioEncoderErrorUnknown = EZMediaSessionErrorBaseAudioEncode,
+    EZAudioEncoderErrorFailToInitConverter = 30100,
+    EZAudioEncoderErrorFailToGetDataBuffer,
+    EZAudioEncoderErrorFailToEncodeBuffer,
+};
+
+typedef NS_ENUM(NSUInteger, EZVideoH264EncoderError) {
+    EZVideoH264EncoderErrorUnknown = EZMediaSessionErrorBaseVideoEncode,
+    EZVideoH264EncoderErrorInitFailed = 40100,
+    EZVideoH264EncoderErrorInvalidSample,
+    EZVideoH264EncoderErrorSampleNotReady,
+    EZVideoH264EncoderErrorNotRunning,
+    EZVideoH264EncoderErrorSetMaxBPSFailed,
+    EZVideoH264EncoderErrorSetAverageBPSFailed,
+    EZVideoH264EncoderErrorParamError,
+    EZVideoH264EncoderErrorEncodeFailed = 40200,
+};
+
+typedef NS_ENUM(NSUInteger, EZBAVStreamClientError) {
+    EZBAVStreamClientErrorUnknow = EZMediaSessionErrorBaseStreamClient,
+    EZBAVStreamClientErrorAudioEnableNotAllowed = EZMediaSessionErrorBaseStreamClient + 9000,
+    EZBAVStreamClientErrorShareEnableNotAllowed,
+
+};
+
+
+typedef NS_ENUM(NSUInteger, EZRTCAudioEncodeType) {
+    EZRTCAudioEncodeType_AAC,
+    EZRTCAudioEncodeType_Opus,
+};
+
+
+@interface EZRTCMediaSessionDefines : NSObject
+@end
+
+typedef void(^EZScreenShareResultBlock)(NSInteger ret);
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZRTCSampleHandleManager.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZRTCSampleHandleManager.h
new file mode 100644
index 0000000..f1d9a21
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZRTCSampleHandleManager.h
@@ -0,0 +1,31 @@
+//
+//  FIAgoraSocketManager.h
+//  FIAgoraVideo
+//
+//  Created by flagadmin on 2020/5/7.
+//  Copyright 漏 2020 flagadmin. All rights reserved.
+//
+
+#import <ReplayKit/ReplayKit.h>
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef enum : NSUInteger {
+    EZSampleHandleManagerStateUnconnected,
+    EZSampleHandleManagerStateConnecting,
+    EZSampleHandleManagerStateConnected,
+    EZSampleHandleManagerStateStopped,
+} EZSampleHandleManagerState;
+
+
+@interface EZRTCSampleHandleManager : NSObject
++ (EZRTCSampleHandleManager *)sharedManager;
+@property (nonatomic, assign, readonly) EZSampleHandleManagerState state;
+- (void)setup;
+- (void)finish;
+- (void)sendVideoBuffer:(CMSampleBufferRef)sampleBuffer;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZRTCVideoEncodeParam.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZRTCVideoEncodeParam.h
new file mode 100644
index 0000000..b420fba
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZRTCVideoEncodeParam.h
@@ -0,0 +1,30 @@
+//
+//  EZMediaSessionEncodeParam.h
+//  EZMediaSession
+//
+//  Created by kanhaiping on 2018/8/24.
+//  Copyright 漏 2018骞� hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@class EZRTCCameraParam;
+
+@interface EZRTCVideoEncodeParam : NSObject
+
+//濡傛灉缂栫爜鐨勭洰鏍囧楂樹负0锛屽垯缂栫爜杈撳嚭涓鸿緭鍏ョ殑鍘熷瀹介珮
+@property (nonatomic, assign) NSInteger pixelWidth;
+@property (nonatomic, assign) NSInteger pixelHeigth;
+@property (nonatomic, assign) NSInteger fps;
+@property (nonatomic, assign) NSInteger averageBPS;
+@property (nonatomic, assign, readonly) NSInteger maxBPS;
+@property (nonatomic, assign) NSInteger encodeKeyFrameInterval;//I甯ч棿闅旓紝鍗曚綅绉�
+
+//+ (EZRTCVideoEncodeParam *)encodeParamFromVideoParam:(EZRTCCameraParam *)videoParam;
++ (EZRTCVideoEncodeParam *)defaultEncodeParam;
++ (EZRTCVideoEncodeParam *)deviceWatchParam;
++ (EZRTCVideoEncodeParam *)deviceBabyRobotParam;
++ (EZRTCVideoEncodeParam *)encodeParamForScreenShare;
++ (EZRTCVideoEncodeParam *)encodeParamForGlobalScreenShare;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZVideoTalk.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZVideoTalk.h
new file mode 100644
index 0000000..98fda05
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZVideoTalk.h
@@ -0,0 +1,179 @@
+//
+//  EZBAVClient.h
+//  EZBAVClient
+//
+//  Created by kanhaiping on 2018/6/26.
+//  Copyright 漏 2018骞� hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+#import "EZBAVParam.h"
+#import "EZRTCMediaSessionDefines.h"
+#import "EZVideoTalkView.h"
+
+@class EZVideoTalk;
+@class EZRTCCameraParam;
+@class EZRTCVideoEncodeParam;
+
+@protocol EZVideoTalkDelegate<NSObject>
+
+@required
+/// 閿欒鍥炶皟
+/// @param client client
+/// @param errorCode 鍑洪敊鐨勯敊璇爜
+- (void)bavClient:(EZVideoTalk *)client didReceivedError:(int32_t)errorCode;
+
+/**
+ 鍥炶皟娑堟伅
+
+ @param client client
+ @param messageCode 娑堟伅鐮� 鍙傝EZBAVMessage
+ @param msg 闄勫姞淇℃伅锛�
+    濡傛灉鏄疎ZBAVMessagePeerEnteredRoom銆丒ZBAVMessagePeerLeaveRoom娑堟伅锛宮sg鏄疎ZRTCParticipantsInfo瀵硅薄
+    濡傛灉娑堟伅鏄� EZBAVMessageTransferData msg鏄� msg鏄瓧绗︿覆 @"瀹為檯鐨勯�忎紶娑堟伅"
+ */
+- (void)bavClient:(EZVideoTalk *)client didReceivedMessage:(int32_t)messageCode msg:(id)msg;
+
+
+@optional
+///**
+// 鍥炶皟娑堟伅 bavclient log鍥炶皟
+//
+// @param client client
+// @param msg 閫忎紶娑堟伅
+// */
+//- (void)bavClient:(EZVideoTalk *)client didReceivedBavClientLogMsg:(NSString*)msg;
+
+/**
+ 鏄剧ず鍥炶皟锛岄娆$敾闈㈠嚭鏉ヤ互鍙婂悗缁敾闈㈠昂瀵稿彂鐢熷彉鍖栨椂鍥炶皟
+
+ @param client client
+ @param width 鐢婚潰瀹藉害
+ @param height 鐢婚潰楂樺害
+ */
+- (void)bavClient:(EZVideoTalk *)client didDisplayWidth:(int32_t)width height:(int32_t)height;
+
+/**
+ 鎾斁鍗¢】
+ 
+ @param client client
+ @param delayTime 鍗¢】鏃堕棿
+ */
+- (void)bavClient:(EZVideoTalk *)client playDelayTime:(int32_t)delayTime;
+
+///**
+// 鎾斁鍗¢】缁熻
+//
+// @param client client
+// @param delayTimeStat 鍗¢】鏃堕棿
+// */
+//- (void)bavClient:(EZVideoTalk *)client playDelayTimeStatistics:(double)delayTimeStat;
+
+@end
+
+
+
+/// 鍙屽悜闊宠棰戦�氳瘽绫�
+/// 1.涓诲姩鍛煎彨
+/// A.鍙戣捣
+/// - init
+/// - enableCapture
+/// - start:param  role=0 reason=0 roomid=0
+/// B.閫氳瘽缁撴潫 璋冪敤 stop
+/// C.绛夊緟瀵规柟杩囩▼涓寕鏂� 璋冪敤stop
+/// 2.琚姩鏀跺埌鍛煎彨
+/// - init
+/// - enableCapture
+/// 灞曠ず鎺ュ惉鐣岄潰
+/// A.濡傛灉鎺ュ惉 璋冪敤 start锛歱aram role=1 reason=0 roomid=鏀跺埌鐨剅oomid 鎺ュ惉瀹岄�氳瘽涓寕鏂皟鐢╯top
+/// B.濡傛灉涓诲姩鎷掓帴 璋冪敤 start锛歱aram role=2 reason=101 roomid=鏀跺埌鐨剅oomid 鎷掓帴瀹屾垚鍚庣珛椹皟鐢╯top
+/// C.濡傛灉鏃犱汉鎺ュ惉 璋冪敤 start锛歱aram role=2 reason=102 roomid=鏀跺埌鐨剅oomid 瀹屾垚鍚庣珛椹皟鐢╯top
+@interface EZVideoTalk : NSObject
+
+@property (nonatomic, weak) id<EZVideoTalkDelegate> delegate;
+@property (nonatomic, assign, readonly) int32_t roomID;
+
+
+/**
+ 瀵硅鏃讹紝寮哄埗閲囩敤鎵0鍣ㄦ挱鏀惧0闊筹紝榛樿涓篩ES
+ */
+@property (nonatomic, assign) BOOL forceToSpeaker;
+
+
+/// 鍒濆鍖栬棰戦�氳瘽SDK瀵硅薄
+- (instancetype)init;
+
+
+
+/// 璁剧疆鏈湴鐨勯瑙堢獥鍙�
+/// @param localWin 绐楀彛window
+- (void)setLocalWindow:(EZVideoTalkView *)localWin;
+
+
+/// 鏈湴鎽勫儚澶村紑鍚�/鍏抽棴鎺ュ彛
+/// @param enable 鏄惁寮�鍚憚鍍忓ご
+- (NSInteger)enableVideoCapture:(BOOL)enable;
+
+
+/// 鏈湴楹﹀厠椋庡紑鍚�/鍏抽棴鎺ュ彛
+/// @param enable 鏄惁寮�鍚害鍏嬮
+- (NSInteger)enableAudioCatpure:(BOOL)enable;
+
+
+// 鏄惁寮�鍚睆骞曞叡浜�
+/// @param enable 鏄惁寮�鍚�
+/// @param block 涓荤嚎绋嬪洖璋冪粨鏋�
+- (void)enableScreenShare:(BOOL)enable andName:(NSString *)name withResultBlock:(EZScreenShareResultBlock)block;
+
+
+/// 鍙戣捣鍙屽悜闊宠棰戝璁诧紝鑰楁椂鎺ュ彛锛屾垚鍔熻繑鍥� noErr锛屽け璐ヨ繑鍥為敊璇爜
+/// @param param EZBAVParam
+- (int32_t)startWithParam:(EZBAVParam *)param;
+
+/// 璁剧疆杩滅▼绐楀彛锛�.濡傛灉璁剧疆闈炵┖瀵硅薄view锛屽繀椤诲湪涓荤嚎绋嬭皟鐢紙濡傛灉鏄缃垚nil锛屽彲浠ヤ笉鍦ㄤ富绾跨▼璋冪敤锛�
+/// @param window 鎾斁绐楀彛
+- (int32_t)setRemoteWindow:(UIView *)window;
+
+///  鍋滄鍙屽悜闊宠棰戝璁诧紝鎴愬姛杩斿洖 noErr锛屽け璐ヨ繑鍥為敊璇爜
+- (int32_t)stop;
+
+#pragma 闄勫姞鎺ュ彛
+
+/// 鍒囨崲瀵硅鏃朵娇鐢ㄧ殑鎽勫儚澶达紝榛樿閲囩敤鍓嶇疆 鍚屾鎺ュ彛
+/// @param backCameraSelected YES:閫夋嫨鍚庣疆锛孨O:閫夋嫨鍓嶇疆
+- (int32_t)switchCamera:(BOOL)backCameraSelected;
+
+
+/// 寮�鍏宠繙绋嬪0闊筹紝榛樿寮�
+/// @param open 寮�鍚�
+- (int32_t)enableRemoteSound:(BOOL)open;
+/// 寮傛鑾峰彇鏈湴鎶撳浘
+/// @param block 鎶撳浘鎴愬姛鍥炶皟锛屽け璐mage涓簄il
+//- (void)localScreenShotWithBlock:(void (^)(UIImage *image))block;
+
+/// 鑾峰彇杩滅鎶撳浘
+/// @param quality 鍘嬬缉璐ㄩ噺 0 ~ 100
+//- (UIImage *)remoteScreenShotWithQuality:(int)quality;
+
+/// 鏈湴褰曞埗
+/// @param path 鍐欏叆鐨勬矙鐩掕矾寰�
+//- (BOOL)startLocalVideoRecordWithPath:(NSString *)path;
+
+/// 鍋滄鏈湴褰曞埗
+//- (BOOL)stopLocalVideoRecord;
+
+/// 寮�濮嬭繙绔綍鍒� mp4
+/// @param path 鍐欏叆鐨勬矙鐩掕矾寰�
+//- (BOOL)startRemoteVideoRecordWithPath:(NSString *)path  forClient:(int32_t)clientID;
+
+
+/// 鍋滄杩滅褰曞埗
+//- (BOOL)stopRemoteVideoRecordForClient:(int32_t)clientID;
+
+
+/// 鍙戦�侀�忎紶娑堟伅鎺ュ彛锛屽悓姝ユ帴鍙o紝鍙兘鑰楁椂
+/// @param msg 娑堟伅鍐呭锛屾瘮濡俲son鏁版嵁
+- (int)sendTransferMsg:(NSString *)msg;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZVideoTalkGlobal.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZVideoTalkGlobal.h
new file mode 100644
index 0000000..5517624
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZVideoTalkGlobal.h
@@ -0,0 +1,63 @@
+//
+//  EZVideoTalkGlobal.h
+//  EZVideoTalk
+//
+//  Created by yuqian on 2018/9/12.
+//  Copyright 漏 2018骞� hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "EZRTCMediaSessionDefines.h"
+
+@class EZRTCVideoEncodeParam;
+@class EZRTCCameraParam;
+
+@interface EZVideoTalkGlobal : NSObject
+
+/**
+ 鏃ュ織璁剧疆
+ 
+ @param enable 鏄惁鎵撳嵃鏃ュ織
+ @param logCallback 鏃ュ織鍥炶皟锛屼笂灞傝嚜瀹氫箟澶勭悊
+ */
++ (void)setDebugLogEnable:(BOOL)enable withLogCallback:(void(^)(NSString *logStr))logCallback;
+
+
+/**
+ 鎵撳紑瀵圭鐮佹祦鎶撳彇
+
+ @param enble 鏄惁鎵撳紑
+ */
++(void)setDebugVideoLog:(BOOL)enble;
+
+
+/**
+ 鑾峰彇sdk鐗堟湰淇℃伅
+
+ @return 鐗堟湰鍙�
+ */
++ (NSString*)getVersion;
+
+
+
+/// 璁剧疆閲囬泦鐨勬憚鍍忓ご鍙傛暟锛屾瘮濡傞噰鐢ㄥ墠缃繕鏄悗缃紝鍦ㄥ彂璧蜂换浣曡棰戞搷浣滃墠璋冪敤鐢熸晥
+/// @param cameraParam 鎽勫儚澶村弬鏁�
++ (void)setCameraParam:(EZRTCCameraParam *)cameraParam;
+
+
+/// 璁剧疆閲囬泦鐨勮棰戠殑缂栫爜鍙傛暟锛屾瘮濡傞噰闆嗘渶缁堣緭鍑虹殑鍒嗚鲸鐜囥�佺爜鐜囩瓑
+/// @param encodeParam 缂栫爜鍙傛暟
++ (void)setVideoEncodeParam:(EZRTCVideoEncodeParam *)encodeParam;
+
+
+/// 璁剧疆閲囬泦鐨勮緟娴佺殑缂栫爜鍙傛暟锛屾瘮濡傞噰闆嗘渶缁堣緭鍑虹殑鍒嗚鲸鐜囥�佺爜鐜囩瓑
+/// @param encodeParam 缂栫爜鍙傛暟
++ (void)setSmallVideoEncodeParam:(EZRTCVideoEncodeParam *)encodeParam;
+
+
++ (EZRTCAudioEncodeType)audioEncodeType;
+
+/// 璁剧疆缂栫爜绫诲瀷锛屽湪瑙嗛閫氳瘽鍙戣捣鍓嶈缃湁鏁�
++ (void)setAudioEncodeType:(EZRTCAudioEncodeType)type;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZVideoTalkSDK.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZVideoTalkSDK.h
new file mode 100644
index 0000000..353e0c0
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZVideoTalkSDK.h
@@ -0,0 +1,268 @@
+//
+//  EZVideoTalkSDK.h
+//  EZOpenSDK
+//
+//  Created by yuqian on 2020/3/14.
+//  Copyright 漏 2020 Hikvision. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+#import "EZRTCMediaSessionDefines.h"
+#import "EZBAVParam.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+
+@class EZVideoTalkSDK, EZMediaSessionVideoParam, EZVideoTalkView, EZBAVParam, EZConferenceParam;
+
+@protocol EZVideoTalkSDKDelegate<NSObject>
+
+- (void)videoTalk:(id)client didReceivedError:(int32_t)errorCode;
+
+/**
+ 鍥炶皟娑堟伅
+
+ @param client client
+ @param messageCode 娑堟伅鐮� 鍙傝EZBAVMessage
+ @param msg 閫忎紶娑堟伅锛�
+    濡傛灉鏄疎ZVideoTalkMessagePeerEnteredRoom鍜孍ZVideoTalkMessagePeerLeaveRoom娑堟伅锛宮sg鏄瘂@"clientID":@(9527),@"clientName":@"寮犱笁"}
+        濡傛灉娑堟伅鏄� EZVideoTalkMessageTransferData msg鏄� msg鏄瘂@"content":@"瀹為檯鐨勯�忎紶娑堟伅"}
+ */
+- (void)videoTalk:(id)client didReceivedMessage:(int32_t)messageCode msg:(id)msg;
+
+/// 鐢婚潰鏄剧ず鍥炶皟
+/// @param client client
+/// @param width 鐢婚潰鐨勫 鍍忕礌鍗曚綅
+/// @param height 鐢婚潰鐨勯珮 鍍忕礌鍗曚綅
+/// @param userID 鐢ㄦ埛id
+- (void)videoTalk:(id)client didDisplayWidth:(int32_t)width height:(int32_t)height ofRemoteClient:(NSString *)userID;
+
+@end
+
+@interface EZVideoTalkSDK : NSObject
+
+@property (nonatomic, weak) id<EZVideoTalkSDKDelegate> delegate;
+
+/// 鍔犲叆鐨勬埧闂村彿
+@property (nonatomic, assign, readonly) int32_t roomID;
+
+/**
+ 瀵硅鏃讹紝寮哄埗閲囩敤鎵0鍣ㄦ挱鏀惧0闊筹紝榛樿涓篩ES
+ */
+@property (nonatomic, assign) BOOL forceToSpeaker;
+
+- (instancetype)init;
+
+
+/// 璁剧疆鏈湴鐨勯瑙堢獥鍙�
+/// @param localWin 绐楀彛window
+- (void)setLocalWindow:(EZVideoTalkView *)localWin;
+
+
+/// 鏈湴鎽勫儚澶村紑鍚�/鍏抽棴鎺ュ彛
+/// @param enable 鏄惁寮�鍚憚鍍忓ご
+- (NSInteger)enableVideoCapture:(BOOL)enable;
+
+
+/// 鏈湴楹﹀厠椋庡紑鍚�/鍏抽棴鎺ュ彛
+/// @param enable 鏄惁寮�鍚害鍏嬮
+- (NSInteger)enableAudioCatpure:(BOOL)enable;
+
+
+/// 鏄惁寮�鍚睆骞曞叡浜�
+/// @param enable 鏄惁寮�鍚�
+- (NSInteger)enableScreenShare:(BOOL)enable withName:(NSString *)name;
+
+
+/// 鍙戣捣鍙屽悜闊宠棰戝璁诧紝鑰楁椂鎺ュ彛锛屾垚鍔熻繑鍥� noErr锛屽け璐ヨ繑鍥為敊璇爜
+/// @param param EZBAVParam
+- (int32_t)startWithParam:(EZBAVParam *)param;
+
+/// 璁剧疆杩滅▼绐楀彛锛�.濡傛灉璁剧疆闈炵┖瀵硅薄view锛屽繀椤诲湪涓荤嚎绋嬭皟鐢紙濡傛灉鏄缃垚nil锛屽彲浠ヤ笉鍦ㄤ富绾跨▼璋冪敤锛�
+/// @param window 鎾斁绐楀彛
+- (int32_t)setRemoteWindow:(UIView *)window;
+
+///  鍋滄鍙屽悜闊宠棰戝璁诧紝鎴愬姛杩斿洖 noErr锛屽け璐ヨ繑鍥為敊璇爜
+- (int32_t)stop;
+
+/// 鍒囨崲瀵硅鏃朵娇鐢ㄧ殑鎽勫儚澶达紝榛樿閲囩敤鍓嶇疆 鍚屾鎺ュ彛
+/// @param backCameraSelected YES:閫夋嫨鍚庣疆锛孨O:閫夋嫨鍓嶇疆
+- (int32_t)switchCamera:(BOOL)backCameraSelected;
+
+
+/// 寮�鍏宠繙绋嬪0闊筹紝榛樿寮�
+/// @param open 寮�鍚�
+- (int32_t)enableRemoteSound:(BOOL)open;
+
+#pragma mark - 鏃ュ織璋冭瘯
+/**
+ 鏃ュ織璁剧疆
+ 
+ @param enable 鏄惁鎵撳嵃鏃ュ織
+ @param logCallback 鏃ュ織鍥炶皟锛屼笂灞傝嚜瀹氫箟澶勭悊
+ */
++ (void)setDebugLogEnable:(BOOL)enable withLogCallback:(void(^)(NSString *logStr))logCallback;
+
+/**
+ 鎵撳紑瀵圭鐮佹祦鎶撳彇
+
+ @param enble 鏄惁鎵撳紑
+ */
++(void)setDebugVideoLog:(BOOL)enble;
+
+/**
+ 鑾峰彇sdk鐗堟湰淇℃伅
+
+ @return 鐗堟湰鍙�
+ */
++ (NSString*)getVersion;
+
+@end
+
+
+@interface EZRTCClient : NSObject
+
+@property (nonatomic, weak) id<EZVideoTalkSDKDelegate> delegate;
+
+/// 鍔犲叆鐨勬埧闂村彿
+@property (nonatomic, assign, readonly) int32_t roomID;
+
+/**
+ 瀵硅鏃讹紝寮哄埗閲囩敤鎵0鍣ㄦ挱鏀惧0闊筹紝榛樿涓篩ES
+ */
+@property (nonatomic, assign) BOOL forceToSpeaker;
+
+
+/// 鍒濆鍖栬棰戦�氳瘽SDK瀵硅薄
+- (instancetype)init;
+
+
+/// 鍔犲叆浼氳锛堟柊鎺ュ彛锛�
+/// @param roomId 鎴块棿鍙�
+/// @param password 瀵嗙爜
+/// @param userID 鐢ㄦ埛鑷畾涔塈D
+- (void)enterRoom:(int32_t)roomId
+     withPassword:(NSString *)password
+       withUserID:(NSString *)userID
+       withAppId:(NSString *)appId;
+
+
+/// 閫�鍑轰細璁�
+- (NSInteger)exitRoom;
+
+
+/// 瑙f暎浼氳锛岃В鏁e悗锛屽叾浠栦笌浼氳�呬細鏀跺埌浼氳琚В鏁f秷鎭�
+- (void)dissolveRoom;
+
+/// 鏈湴鎽勫儚澶村紑鍚�/鍏抽棴鎺ュ彛.
+/// @param enable 鏄惁寮�鍚憚鍍忓ご
+- (NSInteger)enableLocalVideo:(BOOL)enable;
+
+/// 璁剧疆鏈湴鐨勯瑙堢獥鍙�
+/// @param localWin 绐楀彛window
+- (void)setLocalView:(EZVideoTalkView *)localWin;
+
+/// 鏄惁寮�鍚緟娴侊紝杈呮祦鍒嗚鲸鐜囨洿浣庛�佺爜鐜囨洿灏�
+/// @param enable 鏄惁寮�鍚�
+- (NSInteger)enableLocalSmallVideo:(BOOL)enable;
+
+/// 鏈湴楹﹀厠椋庡紑鍚�/鍏抽棴鎺ュ彛
+/// @param enable 鏄惁寮�鍚害鍏嬮
+/// @param block 涓荤嚎绋嬪洖璋冪粨鏋�
+- (void)enableLocalAudio:(BOOL)enable withResultBlock:(EZAudioOpenResultBlock)block;
+
+/// 寮�鍚睆骞曞叡浜�
+/// @param name 鍏变韩鍚嶇О
+/// @param resultBlock 灞忓箷鍏变韩缁撴灉鍥炶皟
+/// @param didFinishBlock 灞忓箷鍏变韩缁撴潫鍥炶皟锛屽湪姝e父鐨勫睆骞曞叡浜粨鏉熺粨鏉熷悗鍥炶皟
+- (void)startScreenShareWithName:(NSString *)name
+                 withResultBlock:(EZScreenShareResultBlock)resultBlock
+                   andEndedBlock:(dispatch_block_t)didFinishBlock;
+
+
+/// 缁撴潫灞忓箷鍏变韩
+- (void)stopScreenShare;
+
+
+/// 璁剧疆杩滅▼绐楀彛锛�1.蹇呴』鍦ㄦ嬁鍒拌繙绔鎴风鍔犲叆鐨勬秷鎭悗璁剧疆锛�2.蹇呴』鍦ㄤ富绾跨▼璋冪敤
+/// @param window 鎾斁绐楀彛
+/// @param clientID 鍔犲叆鐨勫鎴风鐨処D
+/// @param streamType 1瑙嗛 2闊抽 4灏忔祦
+- (int32_t)setRemoteView:(nullable UIView *)window ofUser:(NSString *)userID withStream:(NSInteger)streamType;
+
+/// 璁剧疆瑙傜湅灞忓箷鍏变韩鐨勭獥鍙�,蹇呴』鍦ㄤ富绾跨▼璋冪敤
+/// @param view 绐楀彛
+- (int32_t)setScreenShareView:(UIView *_Nullable)view;
+
+/// 鍒囨崲瀵硅鏃朵娇鐢ㄧ殑鎽勫儚澶达紝榛樿閲囩敤鍓嶇疆 鍚屾鎺ュ彛
+/// @param backCameraSelected YES:閫夋嫨鍚庣疆锛孨O:閫夋嫨鍓嶇疆
+- (int32_t)switchCamera:(BOOL)backCameraSelected;
+
+#pragma mark - 褰曞埗鐩稿叧鎺ュ彛
+/// 寮�濮嬫埧闂磋棰戜細璁綍鍒�
+/// @param roomId 鎴块棿鍙�
+/// @param customId 寮�鍙戣�呰嚜瀹氫箟鐢ㄦ埛ID
+/// @param recUsers 闇�瑕佸綍鍒剁殑鎴块棿鍙備笌鑰卛d
+/// @param projectId 浜戝瓨鍌ㄩ」鐩甀D
+/// @param fileId 浜戝瓨鍌ㄦ枃浠跺悕
+/// @param completion operation
++ (void)requestStartRecordRoomId:(NSString *)roomId
+                        customId:(NSInteger)customId
+                        recUsers:(NSArray *)recUsers
+                       projectId:(NSString *)projectId
+                          fileId:(NSString *)fileId
+                      completion:(void (^)(bool success, NSError *error))completion;
+
+/// 鍋滄鎴块棿瑙嗛浼氳褰曞埗
+/// @param roomId 鎴块棿鍙�
+/// @param customId 寮�鍙戣�呰嚜瀹氫箟鐢ㄦ埛ID
+/// @param completion operation
++ (void)requestStopRecordRoomId:(NSString *)roomId
+                       customId:(NSInteger)customId
+                     completion:(void (^)(bool success, NSError *error))completion;
+
+/// 鑾峰彇鏂囦欢涓嬭浇鍦板潃
+/// @param projectId 椤圭洰ID
+/// @param fileId 鏂囦欢ID
+/// @param completion operation
++ (void)requestGetRecordFileProjectId:(NSString *)projectId
+                               fileId:(NSString *)fileId
+                           completion:(void (^)(id responseObject, NSError *error))completion;
+
+
+/// 鏂板缓椤圭洰鎺ュ彛
+/// @param projectId 椤圭洰ID
+/// @param projectName 椤圭洰鍚嶇О
+/// @param expireDays 椤圭洰瀛樺偍瀵硅薄杩囨湡澶╂暟 榛樿姘镐笉杩囨湡
+/// @param completion operation
++ (void)requestCreateProjectId:(NSString *)projectId
+                   projectName:(NSString *)projectName
+                    expireDays:(NSInteger )expireDays
+                    completion:(void (^)(bool success, NSError *error))completion;
+
+
+
+#pragma mark - 4.16.3 鏂扮殑浼氭帶鎺ュ彛
+/// 棰勮浼氳鎺ュ彛
+/// @param customId 涓绘寔浜虹敤鎴穒d锛堝紑鍙戣�呰嚜瀹氫箟鐨勭敤鎴穒d锛�
+/// @param password 鎴块棿瀵嗙爜锛堣嫢涓嶄紶鎴栦负绌哄垯璁や负鎴块棿鍏紑銆佹棤瀵嗙爜锛�
+/// @param limit 鎴块棿浜烘暟闄愬埗锛�<100锛屼笉浼犲垯榛樿100锛�
+/// @param beginTime 姣鏃堕棿鎴筹紝浼氳棰勮寮�濮嬫椂闂达紙>=褰撳墠鏃堕棿锛�
+/// @param endTime 姣鏃堕棿鎴筹紝浼氳棰勮缁撴潫鏃堕棿锛�>beginTime涓�<涓冨ぉ鍚庣殑鏃堕棿鎴筹級
+/// @param completion completion
++ (NSURLSessionDataTask *)orderMeetingWithCustomId:(NSString *)customId
+                                          password:(NSString *)password
+                                             limit:(NSInteger)limit
+                                         beginTime:(long)beginTime
+                                           endTime:(long)endTime
+                                        completion:(void (^)(int32_t roomId, NSInteger limit, NSError *error))completion;
+
+
+
+@end
+
+
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZVideoTalkSDKDefines.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZVideoTalkSDKDefines.h
new file mode 100644
index 0000000..c3347aa
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZVideoTalkSDKDefines.h
@@ -0,0 +1,17 @@
+//
+//  EZVideoTalkSDKDefines.h
+//  EzvizOpenSDK
+//
+//  Created by Harper Kan on 2021/7/5.
+//  Copyright 漏 2021 Hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZVideoTalkSDKDefines : NSObject
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZVideoTalkView.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZVideoTalkView.h
new file mode 100644
index 0000000..1ab4653
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTalk/EZVideoTalkView.h
@@ -0,0 +1,18 @@
+//
+//  EZVideoTalkView.h
+//  EZVideoTalk
+//
+//  Created by Harper Kan on 2020/12/5.
+//  Copyright 漏 2020 hikvision. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import <AVFoundation/AVFoundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZVideoTalkView : UIView
+- (AVSampleBufferDisplayLayer *)videoLayer;
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTransformer.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTransformer.h
new file mode 100644
index 0000000..61c9126
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZVideoTransformer.h
@@ -0,0 +1,39 @@
+//
+//  EZVideoTransformer.h
+//  EZOpenSDK
+//
+//  Created by yuqian on 2019/6/17.
+//  Copyright 漏 2019 Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef enum {
+    
+    EZVideoTransformerTypeMP4,
+    
+} EZVideoTransformerType;
+
+@interface EZVideoTransformer : NSObject
+
+/// 鏈湴PS鏂囦欢杞崲涓篗P4鏂囦欢
+/// @param psPath ps鏂囦欢璺緞
+/// @param targetPath mp4鏂囦欢璺緞
+/// @param type 杞崲绫诲瀷
+/// @param key 璁惧楠岃瘉鐮�
+/// @param succBlock 鎴愬姛鍥炶皟
+/// @param processBlock 杩涘害鍥炶皟
+/// @param failBlock 澶辫触鍥炶皟
++ (void)videoTransFormerPSPath:(NSString *)psPath
+                        toPath:(NSString *)targetPath
+                          type:(EZVideoTransformerType)type
+                       withKey:(NSString *)key
+                     succBlock:(void (^)())succBlock
+                  processBlock:(void(^)(int rate))processBlock
+                     failBlock:(void(^)(int errCode))failBlock;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZWiFiItemInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZWiFiItemInfo.h
new file mode 100644
index 0000000..3ea2418
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EZWiFiItemInfo.h
@@ -0,0 +1,21 @@
+//
+//  EZWiFiItemInfo.h
+//  EZWiFiConfigSDK
+//
+//  Created by yuqian on 2020/7/28.
+//  Copyright 漏 2020 com.ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZWiFiItemInfo : NSObject
+
+@property (nonatomic, copy) NSString *ssid;             /*蹇呭~,SSID,string*/
+@property (nonatomic, assign) NSInteger signalStrength;   /*蹇呭~,淇″彿寮哄害,"-100-0",int锛屾暟鍊艰秺澶т俊鍙疯秺寮�*/
+@property (nonatomic, copy) NSString *securityMode;     /*鍙��,瀹夊叏妯″紡: "open,WEP,WPA-personal,WPA2-personal,WPA-WPA2-personal,WPA2-enterprise",string*/
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EzvizRecordFileInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EzvizRecordFileInfo.h
new file mode 100644
index 0000000..38db6dc
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EzvizRecordFileInfo.h
@@ -0,0 +1,47 @@
+//
+//  EzvizRecordFileInfo.h
+//  EzvizOpenSDK
+//
+//  Created by linyong on 2017/5/5.
+//  Copyright 漏 2017骞� Ezviz. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+///褰曞儚鏂囦欢淇℃伅
+@interface EzvizRecordFileInfo : NSObject
+
+///璁惧搴忓垪鍙�
+@property (nonatomic,copy) NSString *deviceSerial;
+
+///璁惧閫氶亾鍙�
+@property (nonatomic,assign) NSInteger channelNo;
+
+///鍥炴斁婧愶紝0-绯荤粺鑷姩閫夋嫨锛�1-浜戝瓨鍌紝2-鏈湴褰曞儚
+@property (nonatomic,assign) NSInteger recType;
+
+///鏂囦欢寮�濮嬫椂闂�
+@property (nonatomic,strong) NSDate *startTime;
+
+///鏂囦欢缁撴潫鏃堕棿
+@property (nonatomic,strong) NSDate *endTime;
+
+///鏂囦欢绫诲瀷0锛氱洰褰�1锛氳棰戞枃浠�2锛氬浘鐗囨枃浠�3锛氶煶棰戞枃浠�
+@property (nonatomic,assign) NSInteger fileType;
+
+///鏄惁鍔犲瘑0--涓嶅姞瀵�,1--鍔犲瘑
+@property (nonatomic,assign) NSInteger crypt;
+
+///楠岃瘉鐮丮D5鍊�
+@property (nonatomic,copy) NSString *keyChecksum;
+
+///鏂囦欢ID
+@property (nonatomic,copy) NSString *fileId;
+
+///灏侀潰鍥剧墖鍦板潃
+@property (nonatomic,copy) NSString *coverPic;
+
+///涓嬭浇璺緞
+@property (nonatomic,copy) NSString *downloadPath;
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EzvizWatchServerInfo.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EzvizWatchServerInfo.h
new file mode 100644
index 0000000..acaf6d6
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/EzvizWatchServerInfo.h
@@ -0,0 +1,26 @@
+//
+//  EzvizWatchServerInfo.h
+//  EzvizOpenSDK
+//
+//  Created by yuqian on 2020/3/2.
+//  Copyright 漏 2020 Hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EzvizWatchServerInfo : NSObject
+
+@property (nonatomic, copy) NSString *domain;
+@property (nonatomic, copy) NSString *externalIp;
+@property (nonatomic, assign) int 	forceStreamType;
+@property (nonatomic, copy) NSString *idcType;
+@property (nonatomic, copy) NSString *internalIp;
+@property (nonatomic, assign) int isBackup;
+@property (nonatomic, copy) NSString *memo;
+@property (nonatomic, assign) int port;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/Sadp.h b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/Sadp.h
new file mode 100644
index 0000000..a6ec76d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/include/modules/Sadp.h
@@ -0,0 +1,557 @@
+#ifndef _SADP_H_
+#define _SADP_H_
+
+
+#if defined _WIN32 || defined _WIN64
+#define CSADP_API  extern "C" __declspec(dllimport)
+#elif defined __linux__ || defined __APPLE__
+#define CSADP_API  extern "C"
+#endif
+
+#if defined _WIN32 || defined _WIN64
+#define CALLBACK __stdcall
+#elif defined __linux__ || defined __APPLE__
+#define CALLBACK  
+#endif
+
+#define     BOOL int
+
+//消息操作的类型
+#define SADP_ADD          1         //增加一设备
+#define SADP_UPDATE       2         //更新设备
+#define SADP_DEC          3         //设备下线
+#define SADP_RESTART      4         //设备重新启动
+#define SADP_UPDATEFAIL   5         //设备更新失败
+
+//外部命令码
+#define SADP_GET_DEVICE_CODE                1   //获取设备码,对应结构体SADP_SAFE_CODE
+#define SADP_GET_ENCRYPT_STRING             2   //获取加密串,对应结构体SADP_ENCRYPT_STRING
+#define SADP_GET_DEVICE_TYPE_UNLOCK_CODE    3   //获取设备类型解禁码,对应的结构体SADP_TYPE_UNLOCK_CODE
+#define SADP_SET_DEVICE_CUSTOM_TYPE         4   //设置设备自定义型号,对应的结构体SADP_CUSTOM_DEVICE_TYPE
+#define SADP_GET_GUID                       5   //获取GUID
+#define SADP_GET_SECURITY_QUESTION          6   //获取安全问题
+#define SADP_SET_SECURITY_QUESTION          7   //设置安全问题
+#define SADP_SET_HCPLATFORM_STATUS          8   //设置HCPLATFORM状态
+#define SADP_SET_VERIFICATION_CODE          9   //设置验证码(验证码用于萤石接入、预览、控制的唯一密码)
+#define SADP_GET_BIND_LIST                  12  //获取绑定设备列表
+#define SADP_SET_BIND_LIST                  13  //设置绑定设备列表
+#define SADP_RESTORE_INACTIVE               14  //恢复未激活
+#define SADP_SET_WIFI_REGION                15  //设置wifi区域
+#define SADP_SET_CHANNEL_DEFAULT_PASSWORD   16  //设置通道默认密码
+#define SADP_GET_SELF_CHECK                 17  //获取设备自检状态
+#define SADP_DISK_LOCATE                    18  //坏盘定位
+#define SADP_EHOME_ENABLE                   19  //EHome使能
+#define SADP_SET_USER_MAILBOX               20  //设置用户邮箱
+#define SADP_GET_QR_CODES                   21  //获取二维码数据
+#define SADP_GET_PASSWORD_RESET_TYPE        27  //获取重置密码方式参数
+
+
+
+#define SADP_MAX_VERIFICATION_CODE_LEN  12   //最大验证码长度
+#define MAX_PASS_LEN                    16   //设备最大密码长度
+#define MAX_QUESTION_LIST_LEN           32   //最多问题列表个数
+#define SADP_MAX_BIND_NUM               32   //最大绑定设备个数
+#define MAX_CPU_LEN                     32   //CPU长度
+#define MAX_MEMORY_LEN                  32   //内存长度
+#define MAX_USERNAME_LEN                32   //用户名最大长度
+#define SADP_MAX_SERIALNO_LEN           64   //最大设备序列号长度
+#define MAX_DEVICE_CODE                 128  //设备返回码长度,暂定最大128
+#define MAX_MAILBOX_LEN                 128  //邮箱长度,暂定最大128
+#define MAX_GUID_LEN                    128  //GUID长度
+#define MAX_EXCHANGE_CODE               256  //交换码长度
+#define MAX_ENCRYPT_CODE                256  //设备返回码加密后长度
+#define MAX_UNLOCK_CODE_KEY             256  //解禁密钥
+#define MAX_QR_CODES                    256  //二维码数据长度,暂定最大256
+#define MAX_ANSWER_LEN                  256  //最大答案长度
+#define MAX_UNLOCK_CODE_RANDOM_LEN      256  //解禁码随机串
+#define MAX_FILE_PATH_LEN               260  //文件最大路径长度
+
+
+
+
+// 错误码
+#define SADP_ERROR_BASE                 2000
+#define SADP_NOERROR                    0                     // 没有错误
+#define SADP_ALLOC_RESOURCE_ERROR       (SADP_ERROR_BASE+1)   // 资源分配错误
+#define SADP_NOT_START_ERROR            (SADP_ERROR_BASE+2)   // SADP未启动
+#define SADP_NO_ADAPTER_ERROR           (SADP_ERROR_BASE+3)   // 无网卡
+#define SADP_GET_ADAPTER_FAIL_ERROR     (SADP_ERROR_BASE+4)   // 获取网卡信息失败
+#define SADP_PARAMETER_ERROR            (SADP_ERROR_BASE+5)   // 参数错误
+#define SADP_OPEN_ADAPTER_FAIL_ERROR    (SADP_ERROR_BASE+6)   // 打开网卡失败
+#define SADP_SEND_PACKET_FAIL_ERROR     (SADP_ERROR_BASE+7)   // 发送数据失败
+#define SADP_SYSTEM_CALL_ERROR          (SADP_ERROR_BASE+8)   // 系统接口调用失败
+#define SADP_DEVICE_DENY                (SADP_ERROR_BASE+9)   // 设备拒绝处理
+#define SADP_NPF_INSTALL_ERROR          (SADP_ERROR_BASE+10)  // 安装NPF服务失败
+#define SADP_TIMEOUT                    (SADP_ERROR_BASE+11)  // 设备超时
+#define SADP_CREATE_SOCKET_ERROR        (SADP_ERROR_BASE+12)  // 创建socket失败
+#define SADP_BIND_SOCKET_ERROR          (SADP_ERROR_BASE+13)  // 绑定socket失败
+#define SADP_JOIN_MULTI_CAST_ERROR      (SADP_ERROR_BASE+14)  // 加入多播组失败
+#define SADP_NETWORK_SEND_ERROR         (SADP_ERROR_BASE+15)  // 发送出错
+#define SADP_NETWORK_RECV_ERROR         (SADP_ERROR_BASE+16)  // 接收出错
+#define SADP_XML_PARSE_ERROR            (SADP_ERROR_BASE+17)  // 多播XML解析出错
+#define SADP_LOCKED                     (SADP_ERROR_BASE+18)  // 设备锁定
+#define SADP_NOT_ACTIVATED              (SADP_ERROR_BASE+19)  // 设备未激活
+#define SADP_RISK_PASSWORD              (SADP_ERROR_BASE+20)  // 风险高的密码
+#define SADP_HAS_ACTIVATED              (SADP_ERROR_BASE+21)  // 设备已激活
+#define SADP_EMPTY_ENCRYPT_STRING       (SADP_ERROR_BASE+22)  // 加密串为空
+#define SADP_EXPORT_FILE_OVERDUE        (SADP_ERROR_BASE+23)  // 导出文件超期
+#define SADP_PASSWORD_ERROR             (SADP_ERROR_BASE+24)  // 密码错误
+#define SADP_LONG_SECURITY_ANSWER       (SADP_ERROR_BASE+25)  // 安全问题答案太长
+#define SADP_INVALID_GUID               (SADP_ERROR_BASE+26)  // 无效的GUID
+#define SADP_ANSWER_ERROR               (SADP_ERROR_BASE+27)  // 答案错误
+#define SADP_QUESTION_NUM_ERR           (SADP_ERROR_BASE+28)  // 安全问题个数配置错误
+#define SADP_LOAD_WPCAP_FAIL            (SADP_ERROR_BASE+30)  // 加载Wpcap失败
+#define SADP_ILLEGAL_VERIFICATION_CODE  (SADP_ERROR_BASE+33)  // 非法验证码
+#define SADP_BIND_ERROR_DEV             (SADP_ERROR_BASE+34)  // 绑定错误的设备
+#define SADP_EXTED_MAX_BIND_NUM         (SADP_ERROR_BASE+35)  // 超过最大绑定个数
+#define SADP_MAILBOX_NOT_EXIST          (SADP_ERROR_BASE+36)  // 邮箱不存在
+#define SADP_MAILBOX_NOT_SET            (SADP_ERROR_BASE+38)  // [add] <2019/01/08> by yangzheng 邮箱重置密码未设置邮箱
+#define SADP_INVALID_RESET_CODE         (SADP_ERROR_BASE+39)    // 重置密码  重置口令错误
+
+
+//SADP设备过滤规则类型
+//按位表示,为1表示过滤,0表示不过滤;
+//bit 1:是否过滤萤石;bit 2:是否过滤OEM;
+#define SADP_DISPLAY_ALL           0            //显示所有设备
+#define SADP_FILTER_EZVIZ          0x01         //过滤萤石设备
+#define SADP_FILTER_OEM            0x02         //过滤OEM设备
+#define SADP_FILTER_EZVIZ_OEM      0x03         //同时过滤萤石和OEM设备
+#define SADP_ONLY_DISPLAY_OEM      0xfffffffd   //仅显示OEM设备,对应结构体SADP_DISPLAY_OEM_CFG
+#define SADP_ONLY_DISPLAY_EZVIZ    0xfffffffe   //仅显示萤石设备
+// 结构体
+
+typedef struct tagSADP_DEVICE_INFO
+{
+    char            szSeries[12];          //设备系列(保留)
+    char            szSerialNO[48];        //设备序列号
+    char            szMAC[20];             //设备物理地址
+    char            szIPv4Address[16];     //设备IPv4地址
+    char            szIPv4SubnetMask[16];  //设备IPv4子网掩码
+    unsigned int    dwDeviceType;          //设备类型,具体数值代表的设备型号
+    unsigned int    dwPort;                //设备网络SDK服务端口号(默认8000)
+    unsigned int    dwNumberOfEncoders;    //设备编码器个数,即设备编码通道个数。对于解码器,其值设为0
+    unsigned int    dwNumberOfHardDisk;    //设备硬盘数目
+    char            szDeviceSoftwareVersion[48];  //设备软件版本号
+    char            szDSPVersion[48];      //设备DSP版本号
+    char            szBootTime[48];        //开机时间
+    int             iResult;               
+                    //信息类型: 1.设备上线  2.设备更新  3.设备下线  4.设备重启  5.设备更新失败
+                    //SADP_ADD        1   新设备上线,之前在SADP库列表中未出现的设备
+                    //SADP_UPDATE     2   在线的设备的网络参数或者某些状态改变
+                    //SADP_DEC        3   设备下线,设备自动发送下线消息或120秒内检测不到设备
+                    //SADP_RESTART    4   之前SADP库列表中出现过之后下线的设备再次上线
+                    //SADP_UPDATEFAIL 5   设备更新失败
+    char            szDevDesc[24];         //设备类型描述 与dwDeviceType对应
+    char            szOEMinfo[24];         //OEM产商信息
+    char            szIPv4Gateway[16];     //IPv4网关
+    char            szIPv6Address[46];     //IPv6地址
+    char            szIPv6Gateway[46];     //IPv6网关
+    unsigned char   byIPv6MaskLen;         //IPv6子网前缀长度
+    unsigned char   bySupport;           
+                    //按位表示,对应为为1表示支持
+                    //0x01:是否支持Ipv6
+                    //0x02:是否支持修改Ipv6参数
+                    //0x04:是否支持Dhcp	
+                    //0x08:是否支持udp多播 
+                    //0x10:是否含加密节点
+                    //0x20:是否支持恢复密码
+                    //0x40:是否支持重置密码
+                    //0x80:是否支持同步IPC密码
+    unsigned char   byDhcpEnabled;         //Dhcp状态, 0 不启用 1 启用
+    unsigned char   byDeviceAbility;       //设备能力
+                                           //0:设备不支持“‘设备类型描述’ 'OEM厂商' 'IPv4网关' ‘IPv6地址’ 'IPv6网关' ‘IPv6子网前缀’‘DHCP’”  
+                                           //1:支持上诉功能
+    unsigned short  wHttpPort;             //Http 端口
+    unsigned short  wDigitalChannelNum;    //数字通道数
+    char            szCmsIPv4[16];         //CMS注册服务器IPv4地址
+    unsigned short  wCmsPort;              //CMS注册服务器监听端口
+    unsigned char   byOEMCode;             //0-基线设备 1-OEM设备
+    unsigned char   byActivated;           //设备是否激活;0-激活,1-未激活(老的设备都是已激活状态)
+    char            szBaseDesc[24];        //基线短型号,不随定制而修改的型号,用于萤石平台进行型号对比
+    unsigned char   bySupport1; 
+                    //按位表示,  1表示支持,0表示不支持
+                    //0x01:是否支持重置密码方式2 
+                    //0x02;是否支持设备锁定功能
+                    //0x04:是否支持导入GUID重置密码
+                    //0x08:是否支持安全问题重置密码
+                    //0x10:是否支持OEM更换Logo
+                    //0x20:是否支持绑定操作
+                    //0x40:是否支持恢复未激活
+                    //0x80:是否支持wifi信号增强模式
+    unsigned char   byHCPlatform;          //是否支持HCPlatform 0-保留, 1-支持, 2-不支持   
+    unsigned char   byEnableHCPlatform;    //是否启用HCPlatform  0-保留, 1-启用, 2-不启用
+    unsigned char   byEZVIZCode;           //0-基线设备, 1-萤石设备
+    unsigned int    dwDetailOEMCode;       //详细OEMCode信息:oemcode由客户序号(可变位,从1开始,1~429496)+菜单风格(2位)+区域号(2位)三部分构成。	
+                                           //规则说明:oemcode最大值为4294967295,最多是十位数。
+                                           //0: 老设备
+                                           //1: 新基线设备
+                                           //10101: 有具体OEM code的为OEM设备
+    unsigned char   byModifyVerificationCode; //是否修改验证码 0-保留, 1-修改验证码, 2-不修改验证码
+    unsigned char   byMaxBindNum;          //支持绑定的最大个数(目前只有NVR支持该字段)
+    unsigned short  wOEMCommandPort;       //OEM命令端口
+    unsigned char   bySupportWifiRegion;
+                    //设备支持的wifi区域列表,按位表示,1表示支持,0表示不支持
+                    //0x01:是否支持default(默认功率和北美一致)
+                    //0x02:是否支持china
+                    //0x04:是否支持nothAmerica
+                    //0x08:是否支持japan
+                    //0x10:是否支持europe
+                    //0x20:是否支持world
+    unsigned char   byEnableWifiEnhancement;//是否启用wifi增强模式,0-不启用,1-启用
+    unsigned char   byWifiRegion;           //设备当前区域,0-default,1-china,2-nothAmerica,3-japan,4-europe,5-world
+    unsigned char   bySupport2; 
+                    //按位表示,  1表示支持,0表示不支持
+                    //0x01:是否支持通道默认密码配置(该密码用于nvr添加IPC, 默认使用的是nvr admin密码,会单独保存在本地)
+                    //0x02:是否支持邮箱重置密码
+                    //0x04:是否支持未激活配置SSID和Password
+}SADP_DEVICE_INFO, *LPSADP_DEVICE_INFO;
+
+typedef struct tagSADP_DEVICE_INFO_V40
+{
+    SADP_DEVICE_INFO struSadpDeviceInfo;
+    unsigned char   byLicensed;          //设备是否授权:0-保留,1-设备未授权,2-设备已授权
+    unsigned char   bySystemMode;        //系统模式 0-保留,1-单控,2-双控,3-单机集群,4-双控集群
+    unsigned char   byControllerType;    //控制器类型 0-保留,1-A控,2-B控
+    char            szEhmoeVersion[16];  //Ehmoe版本号
+    unsigned char   bySpecificDeviceType;//设备类型,1-中性设备  2-海康设备
+    unsigned int    dwSDKOverTLSPort;    //私有协议中 SDK Over TLS 命令端口
+    unsigned char   bySecurityMode;      //设备安全模式:0-standard,1-high-A,2-high-B,3-custom
+    unsigned char   bySDKServerStatus;   //设备SDK服务状态, 0-开启,1-关闭
+    unsigned char   bySDKOverTLSServerStatus;         //设备SDKOverTLS服务状态, 0-关闭,1-开启
+    char            szUserName[MAX_USERNAME_LEN + 1]; //管理员用户的用户名(设备安全模式在非标准模式下是允许用户设置管理员用户的用户名,标准模式默认为admin)
+    char            szWifiMAC[20];       //设备所连wifi的Mac地址
+    unsigned char   byDataFromMulticast; //0-链路 1-多播
+    unsigned char   bySupportEzvizUnbind; //是否支持萤石解绑 0-不支持 1-支持
+    unsigned char   bySupportCodeEncrypt; //是否支持重置口令AES128_ECB解密  0-不支持 1-支持
+    unsigned char   bySupportPasswordResetType; //是否支持获取密码重置方式参数  0-不支持 1-支持
+    unsigned char   byEZVIZBindStatus; //设备萤石云绑定状态,0-未知,1-已绑定,2-未绑定
+    char            szPhysicalAccessVerification[16]; //设备支持的物理接触式添加方式,1#AP配网传递,2#用户令牌(用户token)绑定,3#物理按键接触,4#扫码绑定(设备token)
+    unsigned char   byRes[411];
+}SADP_DEVICE_INFO_V40, *LPSADP_DEVICE_INFO_V40;
+
+//待修改的设备网络参数
+typedef struct tagSADP_DEV_NET_PARAM
+{
+    char            szIPv4Address[16];      // IPv4地址
+    char            szIPv4SubNetMask[16];   // IPv4子网掩码
+    char            szIPv4Gateway[16];      // IPv4网关
+    char            szIPv6Address[128];     // IPv6地址
+    char            szIPv6Gateway[128];     // IPv6网关
+    unsigned short  wPort;                  // 设备网络SDK服务端口号(默认8000)
+    unsigned char   byIPv6MaskLen;          // IPv6掩码长度
+    unsigned char   byDhcpEnable;           // DHCP使能
+    unsigned short  wHttpPort;              // HTTP端口
+    unsigned int    dwSDKOverTLSPort;       // 私有协议中 SDK Over TLS 命令端口
+    unsigned char   byRes[122];
+}SADP_DEV_NET_PARAM, *LPSADP_DEV_NET_PARAM;
+
+
+//设备返回网络参数信息
+typedef struct tagSADP_DEV_RET_NET_PARAM
+{
+    unsigned char   byRetryModifyTime;  //剩余可尝试修改网络参数次数
+    unsigned char   bySurplusLockTime;  //剩余时间,单位:分钟,用户锁定时此参数有效
+    unsigned char   byRes[126];
+}SADP_DEV_RET_NET_PARAM, *LPSADP_DEV_RET_NET_PARAM;
+
+// CMS参数
+typedef struct tagSADP_CMS_PARAM
+{
+    char            szPUID[32];         // 预分配的PUID
+    char            szPassword[16];     // 设置的登录密码
+    char            szCmsIPv4[16];      // CMS服务器IPv4地址
+    char            szCmsIPv6[128];     // CMS服务器IPv6地址
+    unsigned short  wCmsPort;           // CMS服务器监听端口
+    unsigned char   byRes[30];
+}SADP_CMS_PARAM, *LPSADP_CMS_PARAM;
+
+//设备安全码,对应配置命令SADP_GET_DEVICE_CODE,接口SADP_GetDeviceConfig
+typedef struct tagSADP_SAFE_CODE
+{
+    unsigned int    dwCodeSize;
+    char            szDeviceCode[MAX_DEVICE_CODE];
+    unsigned char   byRes[128];
+}SADP_SAFE_CODE, *LPSADP_SAFE_CODE;
+
+//设备二维码
+typedef struct tagSADP_QR_CODES
+{
+    unsigned int    dwCodeSize;
+    unsigned int    dwMailBoxSize;
+    unsigned int    dwServiceMailBoxSize;
+    char            szQrCodes[MAX_QR_CODES];
+    char            szMailBoxAddr[MAX_MAILBOX_LEN];         //要设置的邮箱地址
+    char            szServiceMailBoxAddr[MAX_MAILBOX_LEN];  //服务的邮箱地址
+    unsigned char   byRes[128];
+}SADP_QR_CODES, *LPSADP_QR_CODES;
+
+//加密串结构体,对应配置命令SADP_GET_ENCRYPT_STRING,接口SADP_GetDeviceConfig
+typedef struct tagSADP_ENCRYPT_STRING
+{
+    unsigned int    dwEncryptStringSize;               //加密串长度
+    char            szEncryptString[MAX_ENCRYPT_CODE]; //加密串内容
+    unsigned char   byRes[128];
+}SADP_ENCRYPT_STRING, *LPSADP_ENCRYPT_STRING;
+//恢复/重置密码结构体
+typedef struct tagSADP_RESET_PARAM
+{
+    char            szCode[MAX_ENCRYPT_CODE];     //日期转换过的特殊字符串或加密工具加密后的字符串 - 为兼容老接口
+    char            szAuthFile[MAX_FILE_PATH_LEN];//重置授权文件
+    char            szPassword[MAX_PASS_LEN];     //用户密码
+    unsigned char   byEnableSyncIPCPW;            //是否启用同步IPC密码。0 - 不启用, 1- 启用
+    unsigned char   byRes[511];
+}SADP_RESET_PARAM, *LSADP_RESET_PARAM;
+
+//显示OEM配置结构体
+typedef struct tagSADP_DISPLAY_OEM_CFG
+{
+    unsigned int    dwDisplayOEM;   //0-显示所有OEM,其它值为要显示的某一种类型的OEMCode,具体详见dwDetailOEMCode	
+    unsigned char   byRes[32];      //保留
+}SADP_DISPLAY_OEM_CFG, *LPSADP_DISPLAY_OEM_CFG;
+
+typedef struct tagSADP_TYPE_UNLOCK_CODE
+{
+    unsigned int   dwCodeSize;
+    char           szDeviceTypeUnlockCode[MAX_UNLOCK_CODE_RANDOM_LEN/*256*/];//设备型号解禁码
+    unsigned char  byRes[128];
+}SADP_TYPE_UNLOCK_CODE, *LPSADP_TYPE_UNLOCK_CODE;
+
+typedef struct tagSADP_CUSTOM_DEVICE_TYPE
+{
+    unsigned int   dwCodeSize;
+    char           szDeviceTypeSecretKey[MAX_UNLOCK_CODE_KEY/*256*/];//类型解禁秘钥
+    unsigned char  byRes[128];
+}SADP_CUSTOM_DEVICE_TYPE, *LPSADP_CUSTOM_DEVICE_TYPE;
+
+//获取GUID参数结构体
+typedef struct tagSADP_GUID_FILE_COND
+{
+    char           szPassword[MAX_PASS_LEN];  //用户密码
+    unsigned char  byRes[128];
+}SADP_GUID_FILE_COND, *LPSADP_GUID_FILE_COND;
+
+//GUID结构体
+typedef struct tagSADP_GUID_FILE
+{
+    unsigned int    dwGUIDSize;
+    char            szGUID[MAX_GUID_LEN];
+    unsigned char   byRetryGUIDTime;    //剩余可导入/导出GUID次数
+    unsigned char   bySurplusLockTime;  //剩余时间,单位:分钟,用户锁定时此参数有效
+    unsigned char   byRes[254];
+}SADP_GUID_FILE, *LPSADP_GUID_FILE;
+
+typedef struct tagSADP_SINGLE_SECURITY_QUESTION_CFG
+{
+    unsigned int    dwSize;
+    unsigned int    dwId;//序号
+    char            szAnswer[MAX_ANSWER_LEN/*256*/];//答案,只在设置时有效,获取时无效
+    unsigned char   byMark;//标记该序号的问题是否被设置  0-未设置 1-已设置
+    unsigned char   byRes[127];
+}SADP_SINGLE_SECURITY_QUESTION_CFG, *LPSADP_SINGLE_SECURITY_QUESTION_CFG;
+
+typedef struct tagSADP_SECURITY_QUESTION_CFG
+{
+    unsigned int   dwSize;
+    SADP_SINGLE_SECURITY_QUESTION_CFG  struSecurityQuestion[MAX_QUESTION_LIST_LEN/*32*/];//安全问题列表
+    char           szPassword[MAX_PASS_LEN];  //用户密码
+    unsigned char  byRes[512];
+}SADP_SECURITY_QUESTION_CFG, *LPSADP_SECURITY_QUESTION_CFG;
+
+typedef struct tagSADP_SECURITY_QUESTION
+{
+    unsigned char   byRetryAnswerTime;  //剩余可设置安全问题次数
+    unsigned char   bySurplusLockTime;  //剩余时间,单位:分钟,用户锁定时此参数有效
+    unsigned char   byRes[254];
+}SADP_SECURITY_QUESTION, *LPSADP_SECURITY_QUESTION;
+
+typedef struct tagSADP_RESET_PARAM_V40
+{
+    unsigned int    dwSize;
+    unsigned char   byResetType;              //密码重置类型 0-保留,1- 通过设备序列号恢复默认密码,2-导入/导出文件重置密码,3-二维码重置, 4-GUID重置,5-安全问题重置 6-邮箱重置密码
+    unsigned char   byEnableSyncIPCPW;        //是否同时将密码启用为NVR同步IPC密码。0 - 不启用, 1- 启用
+    unsigned char   byRes2[2];                //保留
+    char            szPassword[MAX_PASS_LEN]; //用户密码
+    char            szCode[MAX_ENCRYPT_CODE]; //日期转换过的特殊字符串或加密工具加密后的字符串 - byResetType 为1、3时有效
+    char            szAuthFile[MAX_FILE_PATH_LEN];//重置授权文件, byResetType 为2时有效
+    char            szGUID[MAX_GUID_LEN];     //GUID, byResetType 为4时有效
+    SADP_SECURITY_QUESTION_CFG struSecurityQuestionCfg;//安全问题结构体, byResetType 为5时有效
+    unsigned char   byRes[512];
+}SADP_RESET_PARAM_V40, *LPSADP_RESET_PARAM_V40;
+
+typedef struct tagSADP_RET_RESET_PARAM_V40
+{
+    unsigned char   byRetryGUIDTime;    //剩余可设置次数
+    unsigned char   bySurplusLockTime;  //剩余时间,单位:分钟,用户锁定时此参数有效
+    unsigned char   bRetryTimeValid; //byRetryGUIDTime字段是否有效  0-无效,1-有效
+    unsigned char   bLockTimeValid; //bySurplusLockTime字段是否有效  0-无效,1-有效
+    unsigned char   byRes[252];
+}SADP_RET_RESET_PARAM_V40, *LPSADP_RET_RESET_PARAM_V40;
+
+//HCPlatform状态
+typedef struct tagSADP_HCPLATFORM_STATUS_INFO
+{
+    unsigned int    dwSize;
+    unsigned char   byEnableHCPlatform;        //是否启用HCPlatform。0 - 保留, 1- 启用, 2-不启用
+    unsigned char   byRes[3];                  //保留
+    char            szPassword[MAX_PASS_LEN];  //用户密码
+    unsigned char   byRes2[128];
+}SADP_HCPLATFORM_STATUS_INFO, *LPSADP_HCPLATFORM_STATUS_INFO;
+
+typedef struct tagSADP_USER_MAILBOX
+{
+    unsigned int    dwSize;
+    char            szPassword[MAX_PASS_LEN];        //设备admin用户密码
+    char            szMailBoxAddr[MAX_MAILBOX_LEN];  //预留邮箱地址,用于接收密码服务器返回的安全码
+    unsigned char   byRes[128];
+}SADP_USER_MAILBOX, *LPSADP_USER_MAILBOX;
+//设备验证码
+typedef struct tagSADP_VERIFICATION_CODE_INFO
+{
+    unsigned int    dwSize;
+    char            szVerificationCode[SADP_MAX_VERIFICATION_CODE_LEN];  //验证码(验证码用于萤石接入、预览、控制的唯一密码)
+    char            szPassword[MAX_PASS_LEN];  //用户密码
+    unsigned char   byRes[128];
+}SADP_VERIFICATION_CODE_INFO, *LPSADP_VERIFICATION_CODE_INFO;
+
+//设备锁定信息
+typedef struct tagSADP_DEV_LOCK_INFO
+{
+    unsigned char   byRetryTime;       //剩余可尝试次数
+    unsigned char   bySurplusLockTime; //剩余时间,单位:分钟,用户锁定时此参数有效
+    unsigned char   byRes[126];
+}SADP_DEV_LOCK_INFO, *LPSADP_DEV_LOCK_INFO;
+
+//被绑定设备信息结构体
+typedef struct tagSADP_BIND_INFO
+{
+    char            szSerialNO[SADP_MAX_SERIALNO_LEN]; //被绑定设备的序列号
+    unsigned char   byiBind; //设备是否绑定 0-未绑定;1-已绑定
+    unsigned char   byRes[127];
+}SADP_BIND_INFO, *LPSADP_BIND_INFO;
+
+typedef struct tagSADP_BIND_LIST
+{
+    SADP_BIND_INFO   struBindInfo[SADP_MAX_BIND_NUM]; //绑定设备信息列表
+    char             szPassword[MAX_PASS_LEN]; //用户密码
+    unsigned char    byUnbindAll; //是否解绑所有设备 0-不解绑所有设备;1-解绑所有设备
+    unsigned char    byRes[127];
+}SADP_BIND_LIST, *LPSADP_BIND_LIST;
+
+typedef struct tagSADP_INACTIVE_INFO
+{
+    char             szPassword[MAX_PASS_LEN];  //用户密码
+    unsigned char    byRes[128];
+}SADP_INACTIVE_INFO, *LPSADP_INACTIVE_INFO;
+
+//wifi Region
+typedef struct tagSADP_WIFI_REGION_INFO
+{
+    unsigned char   byMode;                  //模式,0-保留,1-wifi区域配置模式,2-wifi增强模式
+    unsigned char   byWifiRegion;            //wifi区域,当byMode为1时,该字段有效。0 -default, 1- china, 2-nothAmerica,3-japan,4-europe,5-world
+    unsigned char   byWifiEnhancementEnabled;//是否启用wifi增强模式,当byMode为2时,该字段有效 0 -不启用, 1- 启用
+    unsigned char   byRes;                   //保留
+    char            szPassword[MAX_PASS_LEN];//用户密码
+    unsigned char   byRes2[128];
+}SADP_WIFI_REGION_INFO, *LPSADP_WIFI_REGION_INFO;
+
+//通道默认密码信息
+typedef struct tagSADP_CHANNEL_DEFAULT_PASSWORD
+{
+    char             szPassword[MAX_PASS_LEN]; //设备admin用户密码
+    char             szChannelDefaultPassword[MAX_PASS_LEN]; //通道默认密码(用户NVR激活,添加IPC)
+    unsigned char    byRes[128];
+}SADP_CHANNEL_DEFAULT_PASSWORD, *LPSADP_CHANNEL_DEFAULT_PASSWORD;
+
+
+//设备自检状态结构体
+typedef struct tagSADP_SELF_CHECK_STATE
+{
+    unsigned int    dwSize;
+    int             dwTotalDisk;               //磁盘总数(默认值为-1)
+    int             dwGoodDisk;                //好盘数(默认值为-1)
+    char            szCPU[MAX_CPU_LEN];        //CPU
+    char            szMemory[MAX_MEMORY_LEN];  //内存
+    unsigned char   byProgress;                //自检进度,0-100
+    unsigned char   byTemperatureState;        //温度状态,0-无效;1-正常;2-异常
+    unsigned char   byFanState;                //风扇状态,0-无效;1-正常;2-异常
+    unsigned char   byPowerState;              //电源状态,0-无效;1-正常;2-异常
+    unsigned char   bySASConnectState;         //SAS连接状态,0-无效;1-连接;2-未连接
+    char            byTotalNetworkPort;        //网口总数(默认值为-1)
+    char            byConnectNetworkPort;      //网口连接数(默认值为-1)
+    unsigned char   byRes[129];
+}SADP_SELF_CHECK_STATE, *LPSADP_SELF_CHECK_STATE;
+
+//EHome使能参数
+typedef struct tagSADP_EHOME_ENABLE_PARAM
+{
+    unsigned int    dwSize;
+    char            szDevID[MAX_PASS_LEN];     //设备ID
+    char            szEhomeKey[MAX_PASS_LEN];  //Ehome Key
+    char            szPassword[MAX_PASS_LEN];  //设备密码
+    unsigned char   byRes[64];
+}SADP_EHOME_ENABLE_PARAM, *LPSADP_EHOME_ENABLE_PARAM;
+
+//WIFI参数配置结构体
+typedef struct tagSADP_WIFI_CONFIG_PARAM
+{
+    unsigned int    dwSize;
+    char            szSSID[SADP_MAX_SERIALNO_LEN];      //SSID
+    char            szPassword[SADP_MAX_SERIALNO_LEN];  //Password
+    unsigned char   byWifiMode;  //wifi模式,0-默认,1-Station, 2-AP
+    unsigned char   byRes[64];
+}SADP_WIFI_CONFIG_PARAM, *LPSADP_WIFI_CONFIG_PARAM;
+
+//已配置重置密码类型参数配置结构体
+typedef struct tagSADP_PASSWORD_RESET_TYPE_PARAM
+{
+    unsigned int    dwSize;
+    unsigned char   byEnable;  //0-未配置  1-(GUID,安全问题,安全邮箱,HC)配置过一种或多种 
+    unsigned char   byGuidEnabled;  //0-未导出过GUID  1-导出过GUID
+    unsigned char   bySecurityQuestionEnabled;  //0-未配置过安全问题  1-配置过安全问题
+    unsigned char   bySecurityMailBoxEnabled;  //0-未配置过安全邮箱  1-配置过安全邮箱
+    unsigned char   byHikConnectEnabled;  //0-未绑定HikConnect账号  1-绑定过HikConnect账号
+    unsigned char   byRes1[3];
+    unsigned char   byRes[64];
+}SADP_PASSWORD_RESET_TYPE_PARAM, *LPSADP_PASSWORD_RESET_TYPE_PARAM;
+
+
+// 接口
+typedef void (CALLBACK *PDEVICE_FIND_CALLBACK)(const SADP_DEVICE_INFO *lpDeviceInfo, void *pUserData);
+CSADP_API BOOL CALLBACK SADP_Start_V30(PDEVICE_FIND_CALLBACK pDeviceFindCallBack, int bInstallNPF = 0, void* pUserData = NULL);
+typedef void (CALLBACK *PDEVICE_FIND_CALLBACK_V40)(const SADP_DEVICE_INFO_V40 *lpDeviceInfo, void *pUserData);
+CSADP_API BOOL CALLBACK SADP_Start_V40(PDEVICE_FIND_CALLBACK_V40 pDeviceFindCallBack, int bInstallNPF = 0, void* pUserData = NULL);
+CSADP_API BOOL CALLBACK SADP_SendInquiry(void);
+CSADP_API BOOL CALLBACK SADP_Stop(void);
+CSADP_API BOOL CALLBACK SADP_ModifyDeviceNetParam(const char* sMAC, const char* sPassword, const SADP_DEV_NET_PARAM *lpNetParam);
+CSADP_API unsigned int CALLBACK SADP_GetSadpVersion(void);
+CSADP_API BOOL CALLBACK SADP_SetLogToFile(int nLogLevel=0, char const *strLogDir = NULL, int bAutoDel = 1);		
+CSADP_API unsigned int CALLBACK SADP_GetLastError(void);
+CSADP_API BOOL CALLBACK SADP_ResetDefaultPasswd(const char* sDevSerialNO, const char* sCommand);
+CSADP_API BOOL CALLBACK SADP_SetCMSInfo(const char* sMac, const SADP_CMS_PARAM *lpCmsParam);
+CSADP_API BOOL CALLBACK SADP_Clearup(void);
+CSADP_API void CALLBACK SADP_SetAutoRequestInterval(unsigned int dwInterval); //设置自动搜索时间间隔(单位秒,为0则不自动请求,默认60s)
+
+CSADP_API BOOL CALLBACK SADP_GetDeviceConfig(const char* sDevSerialNO, unsigned int dwCommand, void* lpInBuffer, unsigned int  dwinBuffSize, void *lpOutBuffer, unsigned int  dwOutBuffSize);
+CSADP_API BOOL CALLBACK SADP_SetDeviceConfig(const char* sDevSerialNO, unsigned int dwCommand, void* lpInBuffer, unsigned int  dwInBuffSize, void* lpOutBuffer, unsigned int  dwOutBuffSize);
+CSADP_API BOOL CALLBACK SADP_GetDeviceConfigByMAC(const char* sDevMAC, unsigned int dwCommand, void* lpInBuffer, unsigned int  dwinBuffSize, void *lpOutBuffer, unsigned int  dwOutBuffSize);
+//激活设备
+CSADP_API BOOL CALLBACK SADP_ActivateDevice(const char* sDevSerialNO, const char* sCommand);
+
+//重置密码接口,兼容之前的恢复默认密码接口
+CSADP_API BOOL CALLBACK SADP_ResetPasswd(const char* sDevSerialNO, const SADP_RESET_PARAM *pResetParam);
+//重置密码接口V40,兼容之前的SADP_ResetPasswd
+CSADP_API BOOL CALLBACK SADP_ResetPasswd_V40(const char* sDevSerialNO, const SADP_RESET_PARAM_V40 *pResetParam, SADP_RET_RESET_PARAM_V40 *pRetResetParam);
+
+
+//设置设备过滤规则
+//dwFilterRule,按位表示,为1表示过滤,全0表示不过滤;0x01:过滤萤石设备;0x02:过滤OEM设备;0x03:过滤萤和OEM设备;0xfffffffe:仅显示萤石设备;0xfffffffd:仅显示OEM设备
+CSADP_API BOOL CALLBACK SADP_SetDeviceFilterRule( unsigned int dwFilterRule, const void *lpInBuff, unsigned int dwInBuffLen);
+//修改网络参数V40
+CSADP_API BOOL CALLBACK SADP_ModifyDeviceNetParam_V40(const char* sMAC, const char* sPassword, const SADP_DEV_NET_PARAM *lpNetParam, SADP_DEV_RET_NET_PARAM *lpRetNetParam, unsigned int  dwOutBuffSize);
+//点灯
+CSADP_API BOOL CALLBACK SADP_SendLamp(const char* sMAC, unsigned int dwCommand);
+#endif
+
+
+
+
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/openssl/libcrypto.a b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/openssl/libcrypto.a
new file mode 100644
index 0000000..ad3d482
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/openssl/libcrypto.a
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/openssl/libssl.a b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/openssl/libssl.a
new file mode 100644
index 0000000..342610d
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZOpenSDK/openssl/libssl.a
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZSupportViewController.xib b/EZDemo/HDLEZDemo/HDLEZDemo/EZSupportViewController.xib
new file mode 100644
index 0000000..751f46b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZSupportViewController.xib
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina4_7" orientation="portrait">
+        <adaptation id="fullscreen"/>
+    </device>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="EZSupportViewController">
+            <connections>
+                <outlet property="accessTokenInput" destination="Ret-Ci-Qwy" id="6Wy-Nt-vgj"/>
+                <outlet property="apiUrlInput" destination="HYD-Qc-ara" id="voa-Mq-Oeo"/>
+                <outlet property="appKeyInput" destination="E06-eY-jdx" id="6uE-bj-RLz"/>
+                <outlet property="authUrlInput" destination="jnJ-tU-OwK" id="fEQ-oC-D6k"/>
+                <outlet property="devSerialInput" destination="FYZ-2O-EKk" id="6el-DI-d08"/>
+                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
+            </connections>
+        </placeholder>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="accessToken" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Ret-Ci-Qwy">
+                    <rect key="frame" x="16" y="166" width="343" height="31"/>
+                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="31" id="HdA-as-9nY"/>
+                    </constraints>
+                    <nil key="textColor"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                    <textInputTraits key="textInputTraits" keyboardType="alphabet"/>
+                </textField>
+                <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="appKey" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="E06-eY-jdx">
+                    <rect key="frame" x="16" y="100" width="343" height="31"/>
+                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="31" id="a8Q-kc-nqJ"/>
+                    </constraints>
+                    <nil key="textColor"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                    <textInputTraits key="textInputTraits" keyboardType="alphabet"/>
+                </textField>
+                <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="apiUrl" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="HYD-Qc-ara">
+                    <rect key="frame" x="16" y="232" width="343" height="31"/>
+                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="31" id="eTr-er-TmP"/>
+                    </constraints>
+                    <nil key="textColor"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                    <textInputTraits key="textInputTraits" keyboardType="alphabet"/>
+                </textField>
+                <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="authUrl" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="jnJ-tU-OwK">
+                    <rect key="frame" x="16" y="298" width="343" height="31"/>
+                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="31" id="RiO-NY-8Rx"/>
+                    </constraints>
+                    <nil key="textColor"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                    <textInputTraits key="textInputTraits" keyboardType="alphabet"/>
+                </textField>
+                <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="LBx-Cz-520">
+                    <rect key="frame" x="21" y="415" width="36" height="30"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="30" id="PXu-zf-WmW"/>
+                        <constraint firstAttribute="width" constant="36" id="RZM-XY-n5g"/>
+                    </constraints>
+                    <state key="normal" title="test2"/>
+                    <connections>
+                        <action selector="test2BtnClick:" destination="-1" eventType="touchUpInside" id="Kk9-K6-VSA"/>
+                    </connections>
+                </button>
+                <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="devSerial" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="FYZ-2O-EKk">
+                    <rect key="frame" x="16" y="364" width="343" height="31"/>
+                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="31" id="JQH-HR-7q4"/>
+                    </constraints>
+                    <nil key="textColor"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                    <textInputTraits key="textInputTraits" keyboardType="alphabet"/>
+                </textField>
+                <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="VIF-a2-qrT">
+                    <rect key="frame" x="107" y="415" width="47" height="30"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="47" id="1h3-oc-Eru"/>
+                        <constraint firstAttribute="height" constant="30" id="usb-PH-EeN"/>
+                    </constraints>
+                    <state key="normal" title="test"/>
+                    <connections>
+                        <action selector="testBtnClick:" destination="-1" eventType="touchUpInside" id="qQt-NV-OSI"/>
+                    </connections>
+                </button>
+            </subviews>
+            <color key="backgroundColor" red="0.93178934010000003" green="0.93178934010000003" blue="0.93178934010000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+            <constraints>
+                <constraint firstAttribute="trailing" secondItem="HYD-Qc-ara" secondAttribute="trailing" constant="16" id="3m1-je-rD3"/>
+                <constraint firstAttribute="trailing" secondItem="Ret-Ci-Qwy" secondAttribute="trailing" constant="16" id="799-WM-9zV"/>
+                <constraint firstItem="VIF-a2-qrT" firstAttribute="top" secondItem="LBx-Cz-520" secondAttribute="top" id="8Mg-CR-ySV"/>
+                <constraint firstItem="jnJ-tU-OwK" firstAttribute="top" secondItem="HYD-Qc-ara" secondAttribute="bottom" constant="35" id="DHX-zu-BLO"/>
+                <constraint firstItem="HYD-Qc-ara" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="16" id="Hhs-AA-MEa"/>
+                <constraint firstItem="LBx-Cz-520" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="21" id="Ht9-Ix-ZkV"/>
+                <constraint firstAttribute="trailing" secondItem="E06-eY-jdx" secondAttribute="trailing" constant="16" id="IQv-5l-nai"/>
+                <constraint firstItem="Ret-Ci-Qwy" firstAttribute="top" secondItem="E06-eY-jdx" secondAttribute="bottom" constant="35" id="NFY-Wz-XOO"/>
+                <constraint firstItem="E06-eY-jdx" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="16" id="UYd-lu-cKh"/>
+                <constraint firstItem="LBx-Cz-520" firstAttribute="top" secondItem="FYZ-2O-EKk" secondAttribute="bottom" constant="20" id="VB3-g1-C7O"/>
+                <constraint firstItem="FYZ-2O-EKk" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="16" id="aPD-Ia-QB5"/>
+                <constraint firstAttribute="trailing" secondItem="jnJ-tU-OwK" secondAttribute="trailing" constant="16" id="aia-RZ-H0f"/>
+                <constraint firstAttribute="trailing" secondItem="FYZ-2O-EKk" secondAttribute="trailing" constant="16" id="bur-Th-fYL"/>
+                <constraint firstItem="VIF-a2-qrT" firstAttribute="leading" secondItem="LBx-Cz-520" secondAttribute="trailing" constant="50" id="ggG-ZK-YTi"/>
+                <constraint firstItem="E06-eY-jdx" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" constant="100" id="iR1-qc-A7u"/>
+                <constraint firstItem="Ret-Ci-Qwy" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="16" id="izx-ky-v2e"/>
+                <constraint firstItem="HYD-Qc-ara" firstAttribute="top" secondItem="Ret-Ci-Qwy" secondAttribute="bottom" constant="35" id="s2l-pc-gTb"/>
+                <constraint firstItem="FYZ-2O-EKk" firstAttribute="top" secondItem="jnJ-tU-OwK" secondAttribute="bottom" constant="35" id="uM7-Q3-fUS"/>
+                <constraint firstItem="jnJ-tU-OwK" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="16" id="xya-Bi-ize"/>
+            </constraints>
+            <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
+            <point key="canvasLocation" x="31.5" y="55.5"/>
+        </view>
+    </objects>
+</document>
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/EZVideoTalkViewcontroller.xib b/EZDemo/HDLEZDemo/HDLEZDemo/EZVideoTalkViewcontroller.xib
new file mode 100644
index 0000000..904768e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/EZVideoTalkViewcontroller.xib
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina5_9" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment version="2304" identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <viewController id="333-bP-4tK" customClass="EZVideoTalkViewcontroller">
+            <view key="view" contentMode="scaleToFill" id="gVE-8I-I5v">
+                <rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
+                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                <subviews>
+                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3UU-E8-PbA">
+                        <rect key="frame" x="20" y="64" width="160" height="160"/>
+                        <color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                        <constraints>
+                            <constraint firstAttribute="width" secondItem="3UU-E8-PbA" secondAttribute="height" multiplier="1:1" id="KZI-Vj-YuK"/>
+                        </constraints>
+                    </view>
+                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="WIQ-jm-6gc">
+                        <rect key="frame" x="195" y="64" width="160" height="160"/>
+                        <color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    </view>
+                    <button opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="249" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="9ko-k4-F0N">
+                        <rect key="frame" x="20" y="302" width="85" height="30"/>
+                        <color key="backgroundColor" red="0.80782043147208116" green="0.80782043147208116" blue="0.80782043147208116" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <state key="normal" title="鍒涘缓鎴块棿">
+                            <color key="titleColor" red="0.14395621827411165" green="0.14395621827411165" blue="0.14395621827411165" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        </state>
+                        <userDefinedRuntimeAttributes>
+                            <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                                <integer key="value" value="5"/>
+                            </userDefinedRuntimeAttribute>
+                            <userDefinedRuntimeAttribute type="boolean" keyPath="layer.maskToBounds" value="YES"/>
+                        </userDefinedRuntimeAttributes>
+                        <connections>
+                            <action selector="createRoomAction:" destination="333-bP-4tK" eventType="touchUpInside" id="rAq-LO-B2O"/>
+                        </connections>
+                    </button>
+                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qiF-2z-Rwj">
+                        <rect key="frame" x="145" y="302" width="85" height="30"/>
+                        <color key="backgroundColor" red="0.80782043150000005" green="0.80782043150000005" blue="0.80782043150000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <state key="normal" title="鍔犲叆鎴块棿">
+                            <color key="titleColor" red="0.14395621829999999" green="0.14395621829999999" blue="0.14395621829999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        </state>
+                        <userDefinedRuntimeAttributes>
+                            <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                                <integer key="value" value="5"/>
+                            </userDefinedRuntimeAttribute>
+                            <userDefinedRuntimeAttribute type="boolean" keyPath="layer.maskToBounds" value="YES"/>
+                        </userDefinedRuntimeAttributes>
+                        <connections>
+                            <action selector="enterRoomAction:" destination="333-bP-4tK" eventType="touchUpInside" id="8cc-2n-Wa1"/>
+                        </connections>
+                    </button>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="鎴块棿ID锛�" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jc8-E1-NYw">
+                        <rect key="frame" x="19.999999999999996" y="254" width="60.666666666666657" height="18"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                        <nil key="textColor"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="鍔犲叆鎴块棿锛岃杈撳叆鎴块棿鍙�" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="6Wf-7i-TE6">
+                        <rect key="frame" x="82.666666666666686" y="248" width="177" height="30"/>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="30" id="4Af-wy-cNH"/>
+                            <constraint firstAttribute="width" constant="177" id="zPe-13-EDE"/>
+                        </constraints>
+                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                        <textInputTraits key="textInputTraits"/>
+                    </textField>
+                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YO9-MU-r4L">
+                        <rect key="frame" x="270" y="302" width="85" height="30"/>
+                        <color key="backgroundColor" red="0.80782043150000005" green="0.80782043150000005" blue="0.80782043150000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <state key="normal" title="绂诲紑鎴块棿">
+                            <color key="titleColor" red="0.14395621829999999" green="0.14395621829999999" blue="0.14395621829999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        </state>
+                        <userDefinedRuntimeAttributes>
+                            <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                                <integer key="value" value="5"/>
+                            </userDefinedRuntimeAttribute>
+                            <userDefinedRuntimeAttribute type="boolean" keyPath="layer.maskToBounds" value="YES"/>
+                        </userDefinedRuntimeAttributes>
+                        <connections>
+                            <action selector="leaveRoomAction:" destination="333-bP-4tK" eventType="touchUpInside" id="r0y-ug-Dd0"/>
+                        </connections>
+                    </button>
+                </subviews>
+                <viewLayoutGuide key="safeArea" id="gRk-Lv-awz"/>
+                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                <constraints>
+                    <constraint firstItem="YO9-MU-r4L" firstAttribute="height" secondItem="9ko-k4-F0N" secondAttribute="height" id="3hn-CA-7hn"/>
+                    <constraint firstItem="3UU-E8-PbA" firstAttribute="leading" secondItem="gRk-Lv-awz" secondAttribute="leading" constant="20" id="4Rd-ZV-SEq"/>
+                    <constraint firstItem="jc8-E1-NYw" firstAttribute="leading" secondItem="3UU-E8-PbA" secondAttribute="leading" id="5Ph-1I-GYi"/>
+                    <constraint firstItem="jc8-E1-NYw" firstAttribute="top" secondItem="3UU-E8-PbA" secondAttribute="bottom" constant="30" id="5un-n4-tsE"/>
+                    <constraint firstItem="WIQ-jm-6gc" firstAttribute="width" secondItem="3UU-E8-PbA" secondAttribute="width" id="6pz-XQ-YH8"/>
+                    <constraint firstItem="3UU-E8-PbA" firstAttribute="top" secondItem="gRk-Lv-awz" secondAttribute="top" constant="20" id="D1Z-n7-5F7"/>
+                    <constraint firstItem="gRk-Lv-awz" firstAttribute="trailing" secondItem="WIQ-jm-6gc" secondAttribute="trailing" constant="20" id="DLx-1Y-YOI"/>
+                    <constraint firstItem="qiF-2z-Rwj" firstAttribute="height" secondItem="9ko-k4-F0N" secondAttribute="height" id="GGf-Pf-he1"/>
+                    <constraint firstItem="9ko-k4-F0N" firstAttribute="leading" secondItem="jc8-E1-NYw" secondAttribute="leading" id="JcU-Y7-n28"/>
+                    <constraint firstItem="qiF-2z-Rwj" firstAttribute="centerX" secondItem="gVE-8I-I5v" secondAttribute="centerX" id="Jvs-by-qqb"/>
+                    <constraint firstItem="WIQ-jm-6gc" firstAttribute="height" secondItem="3UU-E8-PbA" secondAttribute="height" id="M1e-gm-WWT"/>
+                    <constraint firstItem="YO9-MU-r4L" firstAttribute="centerY" secondItem="9ko-k4-F0N" secondAttribute="centerY" id="Pbs-Av-LUm"/>
+                    <constraint firstItem="WIQ-jm-6gc" firstAttribute="top" secondItem="gRk-Lv-awz" secondAttribute="top" constant="20" id="Pv2-Fu-uwh"/>
+                    <constraint firstItem="qiF-2z-Rwj" firstAttribute="centerY" secondItem="9ko-k4-F0N" secondAttribute="centerY" id="U1m-8i-Tl2"/>
+                    <constraint firstItem="6Wf-7i-TE6" firstAttribute="leading" secondItem="jc8-E1-NYw" secondAttribute="trailing" constant="2" id="V3y-Bh-c5S"/>
+                    <constraint firstItem="qiF-2z-Rwj" firstAttribute="width" secondItem="9ko-k4-F0N" secondAttribute="width" id="eZX-NQ-URt"/>
+                    <constraint firstItem="WIQ-jm-6gc" firstAttribute="leading" secondItem="3UU-E8-PbA" secondAttribute="trailing" constant="15" id="eeG-AH-wkx"/>
+                    <constraint firstItem="YO9-MU-r4L" firstAttribute="width" secondItem="9ko-k4-F0N" secondAttribute="width" id="hVc-Un-xou"/>
+                    <constraint firstItem="YO9-MU-r4L" firstAttribute="leading" secondItem="qiF-2z-Rwj" secondAttribute="trailing" constant="40" id="mAl-ZD-eC4"/>
+                    <constraint firstItem="YO9-MU-r4L" firstAttribute="trailing" secondItem="WIQ-jm-6gc" secondAttribute="trailing" id="mch-yY-ckS"/>
+                    <constraint firstItem="9ko-k4-F0N" firstAttribute="top" secondItem="jc8-E1-NYw" secondAttribute="bottom" constant="30" id="qwt-j1-p09"/>
+                    <constraint firstItem="6Wf-7i-TE6" firstAttribute="centerY" secondItem="jc8-E1-NYw" secondAttribute="centerY" id="r2S-JH-0Bo"/>
+                    <constraint firstItem="qiF-2z-Rwj" firstAttribute="leading" secondItem="9ko-k4-F0N" secondAttribute="trailing" constant="40" id="rkn-HZ-QQp"/>
+                </constraints>
+            </view>
+            <connections>
+                <outlet property="localView" destination="3UU-E8-PbA" id="JEa-Cq-Kuk"/>
+                <outlet property="remoteView" destination="WIQ-jm-6gc" id="cAE-MJ-SlZ"/>
+                <outlet property="roomIDTextField" destination="6Wf-7i-TE6" id="V5o-D0-lEL"/>
+            </connections>
+            <point key="canvasLocation" x="-143.19999999999999" y="131.52709359605913"/>
+        </viewController>
+    </objects>
+    <resources>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/HDLEZDemo.entitlements b/EZDemo/HDLEZDemo/HDLEZDemo/HDLEZDemo.entitlements
new file mode 100644
index 0000000..7021e63
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/HDLEZDemo.entitlements
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>com.apple.developer.networking.HotspotConfiguration</key>
+	<true/>
+	<key>com.apple.developer.networking.wifi-info</key>
+	<true/>
+</dict>
+</plist>
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/HDLEZDemo.xcdatamodeld/.xccurrentversion b/EZDemo/HDLEZDemo/HDLEZDemo/HDLEZDemo.xcdatamodeld/.xccurrentversion
new file mode 100644
index 0000000..7d19b6b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/HDLEZDemo.xcdatamodeld/.xccurrentversion
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>_XCCurrentVersionName</key>
+	<string>HDLEZDemo.xcdatamodel</string>
+</dict>
+</plist>
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/HDLEZDemo.xcdatamodeld/HDLEZDemo.xcdatamodel/contents b/EZDemo/HDLEZDemo/HDLEZDemo/HDLEZDemo.xcdatamodeld/HDLEZDemo.xcdatamodel/contents
new file mode 100644
index 0000000..d7e92b3
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/HDLEZDemo.xcdatamodeld/HDLEZDemo.xcdatamodel/contents
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="1" systemVersion="11A491" minimumToolsVersion="Automatic" sourceLanguage="Objective-C" usedWithCloudKit="false" userDefinedModelVersionIdentifier="">
+    <elements/>
+</model>
\ No newline at end of file
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/Info.plist b/EZDemo/HDLEZDemo/HDLEZDemo/Info.plist
new file mode 100644
index 0000000..1666eda
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/Info.plist
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>privacy</key>
+	<string></string>
+	<key>NSMicrophoneUsageDescription</key>
+	<string>楹﹀厠椋�</string>
+	<key>NSAppTransportSecurity</key>
+	<dict>
+		<key>NSAllowsArbitraryLoads</key>
+		<true/>
+	</dict>
+</dict>
+</plist>
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/SceneDelegate.h b/EZDemo/HDLEZDemo/HDLEZDemo/SceneDelegate.h
new file mode 100644
index 0000000..b0df8db
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/SceneDelegate.h
@@ -0,0 +1,15 @@
+//
+//  SceneDelegate.h
+//  HDLEZDemo
+//
+//  Created by 闄堝惎鎵� on 2023/3/2.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface SceneDelegate : UIResponder <UIWindowSceneDelegate>
+
+@property (strong, nonatomic) UIWindow * window;
+
+@end
+
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/SceneDelegate.m b/EZDemo/HDLEZDemo/HDLEZDemo/SceneDelegate.m
new file mode 100644
index 0000000..3e5954b
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/SceneDelegate.m
@@ -0,0 +1,61 @@
+//
+//  SceneDelegate.m
+//  HDLEZDemo
+//
+//  Created by 闄堝惎鎵� on 2023/3/2.
+//
+
+#import "SceneDelegate.h"
+#import "AppDelegate.h"
+
+@interface SceneDelegate ()
+
+@end
+
+@implementation SceneDelegate
+
+
+- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
+    // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
+    // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
+    // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
+}
+
+
+- (void)sceneDidDisconnect:(UIScene *)scene {
+    // Called as the scene is being released by the system.
+    // This occurs shortly after the scene enters the background, or when its session is discarded.
+    // Release any resources associated with this scene that can be re-created the next time the scene connects.
+    // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
+}
+
+
+- (void)sceneDidBecomeActive:(UIScene *)scene {
+    // Called when the scene has moved from an inactive state to an active state.
+    // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
+}
+
+
+- (void)sceneWillResignActive:(UIScene *)scene {
+    // Called when the scene will move from an active state to an inactive state.
+    // This may occur due to temporary interruptions (ex. an incoming phone call).
+}
+
+
+- (void)sceneWillEnterForeground:(UIScene *)scene {
+    // Called as the scene transitions from the background to the foreground.
+    // Use this method to undo the changes made on entering the background.
+}
+
+
+- (void)sceneDidEnterBackground:(UIScene *)scene {
+    // Called as the scene transitions from the foreground to the background.
+    // Use this method to save data, release shared resources, and store enough scene-specific state information
+    // to restore the scene back to its current state.
+
+    // Save changes in the application's managed object context when the application transitions to the background.
+    [(AppDelegate *)UIApplication.sharedApplication.delegate saveContext];
+}
+
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/ViewController.h b/EZDemo/HDLEZDemo/HDLEZDemo/ViewController.h
new file mode 100644
index 0000000..1b928ed
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/ViewController.h
@@ -0,0 +1,20 @@
+//
+//  ViewController.h
+//  HDLEZDemo
+//
+//  Created by 闄堝惎鎵� on 2023/3/2.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface ViewController : UIViewController
+
+- (IBAction)toDeviceList:(id)sender;
+- (IBAction)toTempView:(id)sender;
+- (IBAction)toDoorCamera:(id)sender;
+- (IBAction)toDeviceMsgListV:(id)sender;
+- (IBAction)addDeviceWithoutConfirm:(id)sender;
+
+- (IBAction)addDevice:(id)sender;
+@end
+
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/ViewController.m b/EZDemo/HDLEZDemo/HDLEZDemo/ViewController.m
new file mode 100644
index 0000000..b882b5e
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/ViewController.m
@@ -0,0 +1,72 @@
+//
+//  ViewController.m
+//  HDLEZDemo
+//
+//  Created by 闄堝惎鎵� on 2023/3/2.
+//
+
+#import "ViewController.h"
+#import "EZSDK.h"
+
+//钀ょ煶闂ㄩ攣spk
+#define HDLEZ_DOOR_SPK  @"security.door.ezviz"
+#define HDLEZ_DEVICEID  @"1644223814848573441"
+//#define HDLEZ_DEVICESERIAL @"K36229010"
+#define HDLEZ_DEVICESERIAL @"J92513662"
+
+@interface ViewController ()<EZSDKDelegate>
+
+@end
+
+@implementation ViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    [self.navigationController.navigationBar setHidden:YES];
+//    [self.navigationController setNavigationBarHidden:YES];
+    // Do any additional setup after loading the view.
+}
+
+
+- (IBAction)addDevice:(id)sender {
+    [EZSDK sharedInstance].delegate=self;
+    [EZSDK sharedInstance].connectTipModels=@[@"CS-DP1-4A1WPFBSR-C"];
+    [[EZSDK sharedInstance] addEzvizMonitorWithDeviceType:HDLEZ_DOOR_SPK];
+}
+
+- (IBAction)addDeviceWithoutConfirm:(id)sender {
+    [EZSDK sharedInstance].delegate=self;
+//    [EZSDK sharedInstance].connectTipModels=@[@"CS-DP1-4A1WPFBSR-C"];
+    [EZSDK sharedInstance].connectTipModels=@[@"DP1"];
+    [[EZSDK sharedInstance] addEzvizMonitorWithDeviceType:@""];
+}
+
+- (IBAction)toDeviceMsgListV:(id)sender {
+    [[EZSDK sharedInstance] toDeviceMsgListView:HDLEZ_DEVICEID];
+}
+
+- (IBAction)toDoorCamera:(id)sender {
+    [[EZSDK sharedInstance] PlayWithDeviceSerial:HDLEZ_DEVICESERIAL deviceId:HDLEZ_DEVICEID deviceType:HDLEZ_DOOR_SPK];
+}
+
+- (IBAction)toTempView:(id)sender {
+    [[EZSDK sharedInstance] toTemPassView:HDLEZ_DEVICEID];
+}
+
+- (IBAction)toDeviceList:(id)sender {
+    
+//    [[EZSDK sharedInstance] initLibWithAppKey:@"1aa98a90489b4838b966b57018b4b04b" globalAppKey:@"1aa98a90489b4838b966b57018b4b04b"];
+//    [[EZSDK sharedInstance] setHDlAccessToken:@"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI4YmRhYzFhZWQyMDA0YjRjYjU5YzUwMzJkOGYwOTY4MiIsImNvbXBhbnlJZCI6IjAiLCJyb2xlIjoiIiwiaGVhZGVyUHJlZml4IjoiQmVhcmVyICIsInVzZXJBY2NvdW50Ijoid3hyIiwidGVuYW50SWQiOiIyMCIsInVzZXJUeXBlIjoiVVNFUl9DIiwidG9rZW5UeXBlIjoiYWNjZXNzX3Rva2VuIiwidXNlck5hbWUiOiJ3eHIiLCJ1c2VyRGF0YVJpZ2h0IjoiMSIsIm9wZW5BcHBsaWNhdGlvbklkIjoiMCIsInVzZXJJZCI6IjEzOTIwMzU1NjgyMDQ0MjMxNjkiLCJleHAiOjE2Nzc3MzYxNDEsIm5iZiI6MTY3NzcyODk0MX0.TkDChEQCB86A6GL3gDp5qRcUT1iHGrVj14qEhYz_BQP-b_k7Fcbc0P5vmqKjtaYxIci6v1JAm1MB8uIU0Zkk5IHEK4VFO0AGsckUUc9WkRnGYLZSRQCF3JmgUORjAvT683WBB21tCkr0yl9qFPDVCWosRgzWd8Xba5hHOaEwEUs" refreshToken:@"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI1NmFiYTYxOWZlMzY0YzlhYTE1ZGI3NWRhODcyMDg1OCIsImNvbXBhbnlJZCI6IjAiLCJoZWFkZXJQcmVmaXgiOiJCZWFyZXIgIiwidGVuYW50SWQiOiIyMCIsInRva2VuVHlwZSI6InJlZnJlc2hfdG9rZW4iLCJvcGVuQXBwbGljYXRpb25JZCI6IjAiLCJ1c2VySWQiOiIxMzkyMDM1NTY4MjA0NDIzMTY5IiwiZXhwIjoxNjc4MzMzNzQxLCJuYmYiOjE2Nzc3Mjg5NDF9.Eio31PWNOHB1lWgp3hS7XFyN9omDlA7DfcpQqeVh84_Nwf5wpyCMmuPBBFGbtSXgyo0rto7UpEiOdIKnUk4M9RkkFLZzpyM24yAbh5K90coC7z2yI76mmxpX7BfhTyL1tSuh7iL2lmRjPZLw3yAOHSVKl876Po6U-I-K4GobWyg"];
+//    [[EZSDK sharedInstance] setRequestHttpsHostAndPlatform:@"https://test-gz.hdlcontrol.com" platform:1 homeId:@"1547099040465408002"];
+//    [[EZSDK sharedInstance] setEZAccessToken:@"ra.bk6nv8e42hy8dwuxbtfc2goa6j7y10qz-4jnfz6nk91-0y7082q-zqruuxors"];
+
+//    [[EZSDK sharedInstance] go2EZvizMonitor];
+//    [[EZSDK sharedInstance] toEZDeviceListViewWithFilterTypes:@[@"Y3000FV",@"DL20VC",@"DL31FS",@"DL30F",@"DL30",@"Y3000F"]];//@"DL30V"銆乊3000FVS
+    [[EZSDK sharedInstance] toEZDeviceListViewWithFilterTypes:@[]];
+}
+
+//娣诲姞璁惧鎴愬姛
+-(void)addDeviceSuccessed{
+    NSLog(@"娣诲姞璁惧鎴愬姛浜�");
+}
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/include/EZSDK/EZSDK.h b/EZDemo/HDLEZDemo/HDLEZDemo/include/EZSDK/EZSDK.h
new file mode 100644
index 0000000..3532d07
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/include/EZSDK/EZSDK.h
@@ -0,0 +1,113 @@
+//
+//  EZSDK.h
+//  EZSDK
+//
+//  Created by 闄堝槈涔� on 2021/1/27.
+//
+
+#import <Foundation/Foundation.h>
+//#import <EZOpenSDKFramework/EZDeviceInfo.h>
+#import <EZOpenSDKFramework/EZDeviceInfo.h>
+
+
+
+@protocol EZSDKDelegate <NSObject>
+
+/*娣诲姞璁惧鎴愬姛
+ @param deviceSerial 璁惧搴忓垪鍙�
+ */
+-(void)addDeviceSuccessed:(NSString*)deviceSerial;
+
+@end
+
+@interface EZSDK : NSObject
+
+@property (nonatomic, weak) id<EZSDKDelegate> delegate;//浠g悊
+
+@property (nonatomic, strong) NSArray  *connectTipModels;//闇�瑕侀厤缃戞彁绀虹殑绫诲瀷锛堜笉鑳介�氳繃app绔厤缃戠殑璁惧绫诲瀷锛�
+
+
+///sharedInstance
++ (instancetype)sharedInstance;
+
+/**
+ 鍒濆鍖朣DK
+ 浼犲叆鍥藉唴鐗坘ey 鍜屾捣澶栫増globalAppKey
+ */
+- (BOOL)initLibWithAppKey:(NSString *)appKey globalAppKey:(NSString *)globalAppKey;
+/**
+ 璁剧疆SDK鐨刟ccessToken
+ */
+- (void)setEZAccessToken:(NSString *) accessToken;
+/**
+ 璁剧疆HDLSDK鐨刟ccessToken
+ */
+- (void)setHDlAccessToken:(NSString *)accessToken refreshToken:(NSString *) refreshToken;
+/**
+ 璁剧疆SDK鐨勬渤涓滄帴鍙g殑requestHttpsHost鍜屽钩鍙� 鏍囪瘑锛�1.on+(榛樿) 2.evoyo
+ */
+- (void)setRequestHttpsHostAndPlatform:(NSString *) requestHttpsHost platform:(int)platform homeId:(NSString *)homeId;
+
+/**
+ 鐩存帴璺宠浆鍒拌悿鐭虫憚鍍忓ご鍒楄〃
+ */
+- (void)go2EZvizMonitor;
+
+/**
+ 鐩存帴璺宠浆鍒拌悿鐭虫憚鍍忓ご鍒楄〃(绛涙帀闂ㄩ攣璁惧)
+ @param filterTepes 杩囨护鍨嬪彿鏁扮粍
+ */
+- (void)toEZDeviceListViewWithFilterTypes:(NSArray*)filterTepes;
+
+/**
+ 璺宠浆娣诲姞娣诲姞璁惧
+ */
+- (void)addEzvizMonitor;
+
+/**
+ 璺宠浆娣诲姞娣诲姞璁惧
+ @param deviceType 璁惧spk(鐢ㄤ簬鍖哄垎鏄惁涓洪棬閿�)
+ */
+- (void)addEzvizMonitorWithDeviceType:(NSString *)deviceType;
+
+/**
+ 鏌ョ湅瑙嗛鐩戞帶鐩存挱
+ */
+- (void)Play:(EZDeviceInfo*)deviceInfo;
+
+/// 鎸囧畾搴忓垪鍙� 鏌ョ湅瑙嗛鐩戞帶鐩存挱
+/// @param deviceSerial 搴忓垪鍙�
+- (void)PlayWithDeviceSerial:(NSString *)deviceSerial;
+
+/**
+ 鏍规嵁spk杩涘叆闂ㄩ攣瑙嗛
+ @param deviceSerial 搴忓垪鍙�
+ @param deviceId 璁惧id
+ @param deviceType 璁惧spk(鐢ㄤ簬鍖哄垎鏄惁涓洪棬閿�)
+ */
+-(void)PlayWithDeviceSerial:(NSString *)deviceSerial deviceId:(NSString*)deviceId deviceType:(NSString *)deviceType;
+
+/**
+ 鎵撳紑鎽勫儚澶磋缃〉闈�
+ */
+- (void)setting:(EZDeviceInfo*)deviceInfo;
+/**
+ 鍥炴斁鎾斁鍘嗗彶
+ */
+- (void)playBackVideo:(EZDeviceInfo*)deviceInfo;
+
+////鏌ョ湅鍛婅淇℃伅
+//- (void)goToEZMessagePhotoVC:(EZAlarmInfo*)alarmInfo;
+
+/**涓存椂瀵嗙爜椤�
+ @param deviceId 璁惧id
+ */
+- (void)toTemPassView:(NSString*)deviceId;
+
+/**璁惧鍘嗗彶璁板綍椤�
+ @param deviceId 璁惧id
+ */
+- (void)toDeviceMsgListView:(NSString*)deviceId;
+
+
+@end
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/libEZSDK.a b/EZDemo/HDLEZDemo/HDLEZDemo/libEZSDK.a
new file mode 100644
index 0000000..9d85218
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/libEZSDK.a
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/libHDLLCNVRSDK.a b/EZDemo/HDLEZDemo/HDLEZDemo/libHDLLCNVRSDK.a
new file mode 100644
index 0000000..0325e23
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/libHDLLCNVRSDK.a
Binary files differ
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/main.m b/EZDemo/HDLEZDemo/HDLEZDemo/main.m
new file mode 100644
index 0000000..6e52c87
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/main.m
@@ -0,0 +1,18 @@
+//
+//  main.m
+//  HDLEZDemo
+//
+//  Created by 闄堝惎鎵� on 2023/3/2.
+//
+
+#import <UIKit/UIKit.h>
+#import "AppDelegate.h"
+
+int main(int argc, char * argv[]) {
+    NSString * appDelegateClassName;
+    @autoreleasepool {
+        // Setup code that might create autoreleased objects goes here.
+        appDelegateClassName = NSStringFromClass([AppDelegate class]);
+    }
+    return UIApplicationMain(argc, argv, nil, appDelegateClassName);
+}
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/resources/en.lproj/AddDevice.strings b/EZDemo/HDLEZDemo/HDLEZDemo/resources/en.lproj/AddDevice.strings
new file mode 100644
index 0000000..f58a2be
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/resources/en.lproj/AddDevice.strings
@@ -0,0 +1,25 @@
+"5rP-JO-eZs.text" = "Searching for device information. Please wait...";
+"8qO-si-Tda.text" = "Network disconnected.";
+"KAV-Sk-wEc.text" = "Password";
+"Qbm-8l-KeG.normalTitle" = "Add";
+"R5v-Qf-L5p.text" = "For dual-brand route, connecting the camera to the Wi-Fi with 5G frequency brand is not allowed.";
+"bPa-tw-WRa.placeholder" = "9-bit serial No. on the device.";
+"hA9-0Y-3Qf.normalTitle" = "Next";
+"jzO-DN-MQp.text" = "Device QR Code";
+"x6F-l5-dhJ.normalTitle" = "Next";
+"xrj-ZU-1Ue.text" = "Network";
+
+"0PQ-gp-JOK.text" = "The Wi-Fi to be connected is as follows:";
+"2fV-EH-7VO.text" = "1";
+"BBf-mw-P8e.text" = "password:";
+"SyB-zd-gzt.text" = "2";
+"bzO-cY-bUs.text" = "SSID:";
+"iaq-GW-DZt.normalTitle" = "Copy Password";
+"hOb-L4-rkc.normalTitle" = "Enter System Setting";
+"hz9-ZE-6rg.text" = "Please connect the phone to the Wi-Fi of device by the following steps";
+"j8t-kq-eaK.placeholder" = "verify code";
+"utk-BE-uLK.text" = "3";
+"RaQ-FQ-QZ1.normalTitle" = "Retry";
+"mDU-NX-CXb.normalTitle" = "Done";
+"b2S-tK-xqv.normalTitle" = "add device";
+"spS-wV-76P.text" = "Adding device,please wait...";
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/resources/en.lproj/EZMain.strings b/EZDemo/HDLEZDemo/HDLEZDemo/resources/en.lproj/EZMain.strings
new file mode 100644
index 0000000..39b9b39
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/resources/en.lproj/EZMain.strings
@@ -0,0 +1,51 @@
+
+"0SD-HE-m6y.text" = "9:00";
+"4Eh-hh-84T.normalTitle" = "Intercom";
+"4ol-dw-GX9.normalTitle" = "Update";
+"68c-It-TWh.text" = "00:00";
+"6Za-cr-nzm.title" = "Cancel";
+"6yZ-4A-Vvl.title" = "Delete";
+"8Y3-zX-Cnw.text" = "Device Name";
+"9VU-hP-zCR.normalTitle" = "API D";
+"9VV-np-Xv9.text" = "123456789";
+"AUI-sk-GM6.text" = "PIR Event Occurred";
+"Bu9-Qz-3Ij.normalTitle" = "Video in SD Card";
+"E3a-LC-jG1.normalTitle" = "Cloud Storage";
+"EOh-Lf-fJU.title" = "Item";
+"ESG-x4-J8R.text" = "00:00";
+"EWl-dl-v7z.normalTitle" = "LAN D";
+"F62-D9-UTh.segmentTitles[0]" = "Me";
+"F62-D9-UTh.segmentTitles[1]" = "Share";
+"IqR-oy-XmU.text" = "  00:00";
+"JEB-Q6-XNh.normalTitle" = "HD";
+"Jqc-fA-IF7.normalTitle" = "Add to EZVIZ Group";
+"MZk-cJ-Fkp.normalTitle" = "Video Recorded on Alarm";
+"QVM-WI-RUj.text" = "2015/11/18 19:12:22";
+"SpQ-pQ-wyI.text" = "From: 123456789";
+"TXG-Z3-M8g.title" = "Log Out";
+"UHi-Q3-DiS.text" = "9:00";
+"UlQ-aK-1VP.normalTitle" = "Fluent";
+"WSh-Ao-McO.normalTitle" = "Balance";
+"Yrc-c9-rvb.text" = "  00:00";
+"arc-1g-3CP.text" = "00:00";
+"cQF-0W-PL0.title" = "OK";
+"ckd-hd-wtP.text" = "Updating...";
+"eaB-Su-wjk.title" = "Test";
+"es2-2O-C6T.normalTitle" = "Record";
+"fUI-tR-jyG.normalTitle" = "PTZ";
+"oq1-TQ-afe.text" = "PIR Event";
+"p2R-3f-bRm.normalTitle" = "Internet D";
+"pg3-8C-ucI.text" = "No data.";
+"r1W-d8-Rg7.placeholder" = "Input the device name.";
+"ruu-Hg-3Tx.text" = "00:00";
+"skK-Ar-y6h.normalTitle" = "HD";
+"tHi-Fa-i4d.title" = "Mark as Read";
+"u19-7q-vxu.text" = "No message.";
+"uxM-3S-gu1.normalTitle" = "Capture";
+"wEO-O3-gSJ.normalTitle" = "Picture";
+"xQS-rQ-Xez.normalTitle" = "Video";
+"xdQ-Ec-12V.normalTitle" = "Save";
+"xj6-wT-AiB.text" = "Up to 50 characters are allowed.";
+"xta-Lo-bjB.text" = "From: C2mini";
+"yuu-Ju-MKr.text" = "C2S";
+
diff --git a/EZDemo/HDLEZDemo/HDLEZDemo/resources/en.lproj/Localizable.strings b/EZDemo/HDLEZDemo/HDLEZDemo/resources/en.lproj/Localizable.strings
new file mode 100644
index 0000000..2099044
--- /dev/null
+++ b/EZDemo/HDLEZDemo/HDLEZDemo/resources/en.lproj/Localizable.strings
@@ -0,0 +1,226 @@
+
+"done"="OK";
+"cancel"="Cancel";
+"retry"="Try Again";
+"alert_title"="Prompt";
+"delete"="Delete";
+"complete"="Completed";
+"push_slider_msg"="Handle the notification by yourself.";
+
+"api_mirror_test"="Image Flipping API Test";
+"api_getting_device_list"="Getting the device list...";
+"api_get_device_list_fail"="Getting device list failed.";
+"api_flip_over"="The device channel image is flipping...";
+"api_flip_over_result"="Result";
+"ad_scan_qr_title"="Scan QR Code";
+"ad_allow_camera"="Allow device to access your camera on Settings-Privacy-Camera on your iPhone.";
+"ad_not_support_scan"="This QR code is not supported. Input manually.";
+"ad_result_title"="Result";
+"ad_adding_msg"="Adding. Please wait...";
+"ad_connect_net"="Connect to Network";
+"ad_add"="Add";
+"ad_restart_title"="Reboot";
+"ad_restart_tip"="Long press Reset on the device for 10 seconds, and wait for about 30 seconds until the device is rebooted.";
+"ad_restart_done"="Rebooted.";
+"ad_get_device_info_msg"="Searching for device information. Please wait...";
+"ad_already_added"="This device is already added.";
+"ad_added_by_others"="This device is already added.";
+"get_info_fail"="Searching for failed. Poor network.";
+"ad_input_manual"="Manual Input";
+
+"ad_result_verify_local_lock"="Please verify the added primary user fingerprint, key or sensor card within 2 minutes. Click the Verified button after verification";
+"ad_verified"="Verified";
+
+"device_camera_list_title"="Device Channel List";
+"device_input_vierify_code"="Input the device verification code.";
+"device_verify_code_wrong"="Incorrect verification code.";
+"device_scan_function_tip"="For iOS 7.0 or lower system, please realize the code scanning function by yourself.";
+"device_upgrade_title"="Upgrade Device ";
+"device_upgrade_success"="Upgraded.";
+"device_upgrading"="Upgrading.";
+"device_modify_name_title"="Edit Device Name";
+"device_quality_high"="HD";
+"device_quality_median"="Balance";
+"device_quality_low"="Fluent";
+"device_quality_super"="UHD";
+"device_play_fail"="Playing failed.";
+"device_input_verify_code"="Input the password of video or picture.";
+"device_verify_code_tip"="Your video is encrypted. Enter the password to view. The initial password is the verification code on the camera label. If there is no verification code, enter <i>ABCDEF</i> (password is case-sensitive).";
+"device_tip_title"="Prompt";
+"device_verify_code_wrong"="Incorrect device password.";
+"device_restart_talk"="Enabling two-way audio. Please wait...";
+"device_save_gallery"="Saved to the albums.";
+"device_analogue_camera"="Analog Channel";
+"device_digital_camera"="Digital Channel";
+"device_lan_device_list_title"="LAN Device List";
+"device_active_device"="Activate Device";
+"device_set_pw_tip"="Set the password with 8 to 16 characters.";
+"device_set_pw"="Set Password";
+"device_pw_empty"="The password is required.";
+"device_pw_length_error"="Invalid password length.";
+"device_active_fail"="Activation failed.";
+"device_login_fail"="Login failed.";
+"device_login_device"="Log in to Device";
+"device_input_account_pw"="Input the user name and password.";
+"device_account"="User Name";
+"device_password"="Password";
+"device_account_pw_empty"="The user name or password is required.";
+"device_lan_preview_title"="Live View via LAN";
+"device_add_device_qr_code"="Device QR Code";
+
+"device_open"="Open";
+"device_open_success"="Success to open the door!";
+"device_please_input_door_password"="Input the unlock password";
+"device_history"="History";
+"device_his_no_more_data"="No more data";
+"device_temp_pass"="Temporary password";
+"device_temp_year"=".";
+"device_temp_month"=".";
+"device_temp_date"=".";
+"device_temp_left"="Left";
+"device_temp_times"="times";
+"device_temp_save"="Save";
+"device_temp_valid_date"="Term of validity";
+"device_temp_valid_begin"="Begin";
+"device_temp_valid_end"="End";
+"device_temp_use_times"="Use times";
+"device_temp_user"="User";
+"device_temp_please_select"="Please select";
+"device_temp_unlimited_times"="Unlimited";
+"device_temp_sure"="Sure";
+"device_temp_cancle"="Cancle";
+"device_temp_please_input"="Please input";
+"device_temp_input_use_count_describe"="Enter an integer from 1 to 100. Null means unlimited times";
+"device_temp_input_pure_number"="Please enter a pure number";
+"device_temp_input_valid_number"="Please enter a number between 1-100";
+"device_temp_unit_year"="Y";
+"device_temp_unit_month"="M";
+"device_temp_unit_date"="D";
+"device_temp_unit_hour"="h";
+"device_temp_unit_minute"="m";
+"device_temp_please_input_user_name"="Please input a user name";
+"device_temp_please_select_begin_time"="Please select the start time";
+"device_temp_please_select_end_time"="Please select the end time";
+"device_temp_please_end_time_should_later"="The end time cannot be earlier than the start time";
+"device_temp_unlimited_use_times"="Unlimited times";
+"device_temp_total"="Total ";
+"device_temp_copied"="Copied";
+"device_temp_long_tap_copy"="Long press to copy";
+"device_temp_sure_to_delete"="Are you sure to delete the temporary password?";
+
+"dmessage_title"="Message";
+"message_read"="Mark as Read";
+"message_deleting"="Deleting. Please wait...";
+"message_count_limit"="Up to 10 messages are allowed.";
+"message_setting"="Marking as read. Please wait...";
+"message_sunday"="Sunday";
+"message_monday"="Monday";
+"message_tuesday"="Tuesday";
+"message_wednesday"="Wednesday";
+"message_thursday"="Thursday";
+"message_friday"="Friday";
+"message_saturday"="Saturday";
+"message_today"="Today";
+"message_from"="From";
+"message_detail"="Details";
+"message_file_search_fail"="Searching for files failed.";
+"message_square_test"="Video Gallery Type Test";
+
+"setting_device_set_title"="Set Device";
+"setting_device_name"="Device Name";
+"setting_device_serial"="Serial No.";
+"setting_device_version"="Current Version";
+"setting_device_new_version"="Latest Version";
+"setting_defense_status"="Privacy Mask Status:";
+"setting_sleep_mode"="Sleepy Mode";
+"setting_home_mode"="At-Home Mode";
+"setting_out_mode"="Outdoor Mode";
+"setting_ignore_code"="Encrypting video or picture is not supported by security control panel.";
+"setting_action_detect"="Motion Detection Alarm";
+"setting_secure_code"="Encrypt Video and Picture";
+"setting_cloud_storage"="Cloud Storage";
+"setting_hardware_decoding" = "Hardware decoding";
+"setting_opration_fail"="Operation failed.";
+"setting_opration_success"="Completed.";
+"setting_switching"="Switching. Please wait...";
+"setting_device_security_check"="Security Authentication";
+"setting_input_code_plz"="Input the device verification code (6 characters on the device label).";
+"wifi_add_device_title"="Step 3, add device.";
+"wifi_connecting_net"="Connecting to Wi-Fi. Please wait.";
+"wifi_register_server"="Register Server";
+"wifi_bind_account"="Bind your account";
+"wifi_already_configed"="The Wi-Fi is configured.";
+"wifi_registering_server"="Registering the server.";
+"wifi_bind_account_result"="Link to your account to finish.";
+"wifi_already_registered_server"="Registered to the EZVIZ platform.";
+"wifi_config_fail"="Setting Wi-Fi failed. Try again or return to check the Wi-Fi password.";
+"wifi_register_fail"="Wi-Fi is configured, but login failed. Check the network and try again.";
+"wifi_bind_fail"="Wi-Fi is configured, but blinding account failed. Try again.";
+"wifi_add_fail"="Adding failed.";
+"wifi_add_success"="Added";
+"wifi_connecting_net"="Connecting to Wi-Fi.";
+"wifi_connect_wifi_title"="Step 2, connect to Wi-Fi.";
+"wifi_prepare_title"="Step 1, prepare for the device.";
+"wifi_device_power_tip"="Wait for about 30 seconds until the device is rebooted after the device is power on.";
+"wifi_device_start_ready"="The device is already started and it is the first time to configure with network.";
+"wifi_config_wifi_ago"="This device is configured with network before.";
+
+"wifi_config_seria_num"="9-digit serial number on the device body";
+"wifi_config_verify_code"="Verification Code";
+"wifi_config_connected"="Connected";
+"wifi_config_select_set_param"="Select \"Set Parameters\"";
+"wifi_config_select_wifi"="Select \"Wi Fi\"";
+"wifi_config_net_work"="Configure Network";
+"wifi_config_name"="Name:";
+"wifi_config_copy_pwd"="Copy Pwd";
+"wifi_config_to_setting"="To Setting";
+"wifi_config_step_three"="Return to the app, wait for the device to connect, and automatically proceed to the next step after success.";
+"wifi_config_tip"="Please connect your phone to your device Wi Fi by following these steps:";
+"wifi_config_step_three_tip"="(Note: If the device WIFI name is not prefixed with \"EZVIZ\", please copy the password and manually modify the password prefix based on the new prefix name and connect. For example, \"SoftAP_XXXXXXX\")";
+"wifi_config_not_connected"="Not connected";
+"wifi_config_step_2_tips"="The Wi Fi information of the devices to be connected is as follows:";
+"wifi_config_step_2_tips"="If you are using a dual frequency router, please do not connect the camera to Wi Fi in the 5G frequency band";
+"wifi_config_step_2_next_step"="Next Step";
+"wifi_config_step_2_net"="Net:";
+"wifi_config_step_2_password"="Pwd:";
+
+"ui_last_update"="Last Updated:";
+"ui_last_update_empty"="Last Updated: No record.";
+"ui_just_now"="Recently";
+"ui_min_ago"="minute(s) ago";
+"ui_hour_ago"="hour(s) ago";
+"ui_day_ago"="day(s) ago";
+"ui_month_ago"="month(s) ago";
+"ui_year_ago"="year(s) ago";
+
+//鏂板
+"device_mine"="Me";
+"device_shared"="Share";
+
+//4.8.3鏂板
+"no_mic_permission" = "No microphone permissions";
+"not_support_talk" = "Equipment does not support intercom";
+
+//ap閰嶇綉鏂板
+"wifi_info_no_wifi_msg" = "please connect Wi-Fi";
+"wifi_info_setting" = "setting";
+"wifi_mode_select_msg" = "select config mode";
+"wifi_mode_ap" = "AP config(blue shining)";
+"wifi_mode_normal" = "normal config(blue red shining)";
+"wifi_mode_wifi_connect" = "connect Wi-Fi of device";
+"wifi_step_two_msg" = "Enter Wi-Fi setting of iPhone,connect Wi-Fi:%@ with password above.";
+"wifi_ap_add_device_title"="adding device";
+"wifi_mode_sound"="sound config(blue red shining)";
+"wifi_mode_line"="line connect";
+
+"璇峰紑鍚畾浣嶆湇鍔�"="Please turn on Location.";
+"瀹氫綅鏈嶅姟鏈紑鍚紝璇疯繘鍏ョ郴缁燂蓟璁剧疆锛�> [闅愮] > [瀹氫綅鏈嶅姟]涓墦寮�寮�鍏筹紝骞跺厑璁镐娇鐢ㄥ畾浣嶆湇鍔�"="Location is off. Please go to [Settings]> [Privacy] > [Location Services] to enable it.";
+"绔嬪嵆寮�鍚�"="Enable now";
+"鏆備笉"="Later";
+
+//2021-01-27 鏂板
+"Devicelist"="Device list";
+"Logout"="Log Out";
+
+//閫氱敤
+"hdl_ez_common_no_data"="No Data";
diff --git a/EZSDK.IOS/EZSDK.IOS/EZSDK.IOS.csproj b/EZSDK.IOS/EZSDK.IOS/EZSDK.IOS.csproj
index f5ace78..52055a1 100644
--- a/EZSDK.IOS/EZSDK.IOS/EZSDK.IOS.csproj
+++ b/EZSDK.IOS/EZSDK.IOS/EZSDK.IOS.csproj
@@ -81,6 +81,8 @@
     <BundleResource Include="Resources\hdl_ez_wifi_connect_step1%403x.png" />
     <BundleResource Include="Resources\hdl_ez_wifi_connect_step2%402x.png" />
     <BundleResource Include="Resources\hdl_ez_wifi_connect_step2%403x.png" />
+    <BundleResource Include="Resources\hdl_ez_add_device_success%403x.png" />
+    <BundleResource Include="Resources\hdl_ez_add_device_success%402x.png" />
   </ItemGroup>
   <Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.ObjCBinding.CSharp.targets" />
 </Project>
\ No newline at end of file
diff --git a/EZSDK.IOS/EZSDK.IOS/Library/lib/EZOpenSDKFramework.framework/Info.plist b/EZSDK.IOS/EZSDK.IOS/Library/lib/EZOpenSDKFramework.framework/Info.plist
index 7d15dcc..5a43f71 100644
--- a/EZSDK.IOS/EZSDK.IOS/Library/lib/EZOpenSDKFramework.framework/Info.plist
+++ b/EZSDK.IOS/EZSDK.IOS/Library/lib/EZOpenSDKFramework.framework/Info.plist
Binary files differ
diff --git a/EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a b/EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a
index 8d7f06d..0467cbc 100644
--- a/EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a
+++ b/EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a
Binary files differ
diff --git a/EZSDK.IOS/EZSDK.IOS/Properties/AssemblyInfo.cs b/EZSDK.IOS/EZSDK.IOS/Properties/AssemblyInfo.cs
index 591b381..02f62f0 100644
--- a/EZSDK.IOS/EZSDK.IOS/Properties/AssemblyInfo.cs
+++ b/EZSDK.IOS/EZSDK.IOS/Properties/AssemblyInfo.cs
@@ -25,7 +25,7 @@
 // The form "{Major}.{Minor}.*" will automatically update the build and revision,
 // and "{Major}.{Minor}.{Build}.*" will update just the revision.
 
-[assembly: AssemblyVersion("1.6.2")]
+[assembly: AssemblyVersion("1.6.9")]
 
 // The following attributes are used to specify the signing key for the assembly,
 // if desired. See the Mono documentation for more information about signing.
diff --git a/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_add_device_success@2x.png b/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_add_device_success@2x.png
new file mode 100644
index 0000000..ff75690
--- /dev/null
+++ b/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_add_device_success@2x.png
Binary files differ
diff --git a/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_add_device_success@3x.png b/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_add_device_success@3x.png
new file mode 100644
index 0000000..285ac69
--- /dev/null
+++ b/EZSDK.IOS/EZSDK.IOS/Resources/hdl_ez_add_device_success@3x.png
Binary files differ
diff --git a/EZSDK/EZSDK.xcodeproj/project.pbxproj b/EZSDK/EZSDK.xcodeproj/project.pbxproj
index 41e05c3..6961447 100644
--- a/EZSDK/EZSDK.xcodeproj/project.pbxproj
+++ b/EZSDK/EZSDK.xcodeproj/project.pbxproj
@@ -1707,10 +1707,12 @@
 				GCC_NO_COMMON_BLOCKS = YES;
 				GCC_PREFIX_HEADER = "$(PROJECT_DIR)/EZSDK/EZ/PrefixHeader.pch";
 				HEADER_SEARCH_PATHS = "$(inherited)";
+				IPHONEOS_DEPLOYMENT_TARGET = 12.2;
 				LIBRARY_SEARCH_PATHS = (
 					"$(PROJECT_DIR)/EZSDK/EZ/Venders/openssl/lib",
 					"$(PROJECT_DIR)/EZSDK/SDK",
 				);
+				ONLY_ACTIVE_ARCH = NO;
 				OTHER_CFLAGS = "-mfpu=neon";
 				OTHER_LDFLAGS = "-ObjC";
 				PRODUCT_NAME = "$(TARGET_NAME)";
@@ -1735,10 +1737,12 @@
 				GCC_NO_COMMON_BLOCKS = YES;
 				GCC_PREFIX_HEADER = "$(PROJECT_DIR)/EZSDK/EZ/PrefixHeader.pch";
 				HEADER_SEARCH_PATHS = "$(inherited)";
+				IPHONEOS_DEPLOYMENT_TARGET = 12.2;
 				LIBRARY_SEARCH_PATHS = (
 					"$(PROJECT_DIR)/EZSDK/EZ/Venders/openssl/lib",
 					"$(PROJECT_DIR)/EZSDK/SDK",
 				);
+				ONLY_ACTIVE_ARCH = NO;
 				OTHER_CFLAGS = "-mfpu=neon";
 				OTHER_LDFLAGS = "-ObjC";
 				PRODUCT_NAME = "$(TARGET_NAME)";
diff --git a/EZSDK/EZSDK.xcodeproj/xcshareddata/xcschemes/EZSDK.xcscheme b/EZSDK/EZSDK.xcodeproj/xcshareddata/xcschemes/EZSDK.xcscheme
index 0f9297c..8643394 100644
--- a/EZSDK/EZSDK.xcodeproj/xcshareddata/xcschemes/EZSDK.xcscheme
+++ b/EZSDK/EZSDK.xcodeproj/xcshareddata/xcschemes/EZSDK.xcscheme
@@ -31,7 +31,7 @@
       </Testables>
    </TestAction>
    <LaunchAction
-      buildConfiguration = "Debug"
+      buildConfiguration = "Release"
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
       launchStyle = "0"
diff --git a/EZSDK/EZSDK/EZ/Global/EZHttpUtil.m b/EZSDK/EZSDK/EZ/Global/EZHttpUtil.m
index 71d32d8..e258090 100644
--- a/EZSDK/EZSDK/EZ/Global/EZHttpUtil.m
+++ b/EZSDK/EZSDK/EZ/Global/EZHttpUtil.m
@@ -35,7 +35,7 @@
 #define SECRET_KEY @"WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss"
 
 
-#define TIME_OUT 15.0f
+#define TIME_OUT 30.0f
 
 @implementation EZHttpUtil
 
@@ -58,7 +58,7 @@
  *  @param block 鍥炶皟block
  */
 - (void)getChildToken:(void (^)(NSString *accessToken))block{
-    
+
     //2.璁剧疆璇锋眰鍙傛暟
     NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
     [parameters setValue: [NSString stringWithFormat:@"%d", [GlobalKit shareKit].hdlPlatform] forKey:@"platform"];
@@ -134,6 +134,21 @@
             if ([EZSDK sharedInstance].delegate&&[[EZSDK sharedInstance].delegate respondsToSelector:@selector(addDeviceSuccessed:)]) {
 //                HDLEZLog(@"娣诲姞璁惧璁惧鎴愬姛鍥炶皟:%@",parameters[@"deviceSerial"]);
                 [[EZSDK sharedInstance].delegate addDeviceSuccessed:parameters[@"deviceSerial"]];
+//
+//                //璁剧疆璁惧鍘绘帀楠岃瘉鐮�
+//                [EZOPENSDK setDeviceEncryptStatus:deviceSerial
+//                                       verifyCode:verifyCode
+//                                          encrypt:NO
+//                                       completion:^(NSError *error) {
+//                                            if (error)
+//                                            {
+//
+//                                            }
+//                                            else
+//                                            {
+//                                            }
+//
+//                }];
             }
         }
         
diff --git a/EZSDK/EZSDK/EZ/UIViewControllers/EZAPConfigResultViewController.m b/EZSDK/EZSDK/EZ/UIViewControllers/EZAPConfigResultViewController.m
index fa4f1e7..e1edb28 100644
--- a/EZSDK/EZSDK/EZ/UIViewControllers/EZAPConfigResultViewController.m
+++ b/EZSDK/EZSDK/EZ/UIViewControllers/EZAPConfigResultViewController.m
@@ -74,6 +74,13 @@
     [self.doneBtn setTitle:HDLEZLocallizedString(@"complete") forState:UIControlStateNormal];
     [self.retryBtn setTitle:HDLEZLocallizedString(@"retry") forState:UIControlStateNormal];
     self.msgLabel.text=HDLEZLocallizedString(@"ad_adding_msg");
+    
+    
+    //閲嶈鎴愬姛鍥�
+    [self.successImageView mas_updateConstraints:^(MASConstraintMaker *make) {
+        make.height.width.mas_equalTo(80);
+    }];
+    self.successImageView.image=[UIImage imageNamed:@"hdl_ez_add_device_success"];
 }
 
 #pragma mark - actions
diff --git a/EZSDK/EZSDK/EZ/UIViewControllers/EZAPWiFiConfigViewController.m b/EZSDK/EZSDK/EZ/UIViewControllers/EZAPWiFiConfigViewController.m
index 0dd3e3d..cf24575 100644
--- a/EZSDK/EZSDK/EZ/UIViewControllers/EZAPWiFiConfigViewController.m
+++ b/EZSDK/EZSDK/EZ/UIViewControllers/EZAPWiFiConfigViewController.m
@@ -69,7 +69,7 @@
 - (void) initSubviews
 {
     self.processingIndicator.hidden = YES;
-
+    
 //    self.devicWifiName = [NSString stringWithFormat:@"EZVIZ_%@",[GlobalKit shareKit].deviceSerialNo];
     self.devicWifiName = [NSString stringWithFormat:@"%@_%@",[GlobalKit shareKit].WiFiConfigPrefix,[GlobalKit shareKit].deviceSerialNo];
     self.wifiNameLabel.text = self.devicWifiName;
diff --git a/EZSDK/EZSDK/EZ/UIViewControllers/EZAddByQRCodeViewController.m b/EZSDK/EZSDK/EZ/UIViewControllers/EZAddByQRCodeViewController.m
index 1648a23..94e8e17 100644
--- a/EZSDK/EZSDK/EZ/UIViewControllers/EZAddByQRCodeViewController.m
+++ b/EZSDK/EZSDK/EZ/UIViewControllers/EZAddByQRCodeViewController.m
@@ -32,7 +32,7 @@
 
 - (void)dealloc
 {
-    
+
 }
 
 - (void)viewDidLoad {
diff --git a/EZSDK/EZSDK/EZ/UIViewControllers/EZDeviceResultViewController.m b/EZSDK/EZSDK/EZ/UIViewControllers/EZDeviceResultViewController.m
index a3ebc31..aaa61ed 100644
--- a/EZSDK/EZSDK/EZ/UIViewControllers/EZDeviceResultViewController.m
+++ b/EZSDK/EZSDK/EZ/UIViewControllers/EZDeviceResultViewController.m
@@ -63,6 +63,9 @@
     self.actionButton.hidden = YES;
     
     [self doSearchDevice];
+    
+    //闅愯棌鐘舵�佸浘
+    self.resultImageView.hidden=YES;
 }
 
 - (void)didReceiveMemoryWarning {
@@ -216,7 +219,7 @@
                     deviceType:[GlobalKit shareKit].deviceModel
                     completion:^(EZProbeDeviceInfo *deviceInfo, NSError *error) {
                         NSLog(@"deviceInfo = %@, error = %@", deviceInfo, error);
-                        self.resultBackgroudImageView.hidden = NO;
+//                        self.resultBackgroudImageView.hidden = NO;
                         self.resultImageView.image = [UIImage imageNamed:@"device_default"];
                         self.resultLabel.text = [GlobalKit shareKit].deviceSerialNo;
 
diff --git a/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m b/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m
index 2167f96..7835c22 100644
--- a/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m
+++ b/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m
@@ -94,6 +94,8 @@
 
 @property (nonatomic, copy) NSString *streamToken;
 
+@property (nonatomic, strong) UIView *doorPlayerView;//闂ㄩ攣鎾斁view
+
 @end
 
 @implementation EZLivePlayViewController
@@ -240,6 +242,21 @@
 //    }
 }
 
+/*娣诲姞闂ㄩ攣鎾斁view
+ */
+-(UIView*)doorPlayerView{
+    if (!_doorPlayerView) {
+        _doorPlayerView=[[UIView alloc] init];
+        [_playerView addSubview:_doorPlayerView];
+        [_doorPlayerView mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.centerX.equalTo(_playerView.mas_centerX);
+            make.top.bottom.equalTo(_playerView);
+            make.width.mas_equalTo(_doorPlayerView.mas_height).multipliedBy(1);
+        }];
+    }
+    return _doorPlayerView;
+}
+
 - (void)viewDidAppear:(BOOL)animated {
     [super viewDidAppear:animated];
     self.navigationController.navigationBar.hidden = NO;//2021-02-01
@@ -288,11 +305,15 @@
 /*鑾峰彇璁惧淇℃伅
  */
 -(void)getDeviceInfo{
+    __weak __typeof(self)weakSelf = self;
     //鑾峰彇璁惧淇℃伅
     [EZOpenSDK getDeviceInfo:self.deviceSerial completion:^(EZDeviceInfo *deviceInfo, NSError *error) {
         if(error)
         {
-            NSLog(@"EZ 鏌ヨ璁惧淇℃伅澶辫触");
+            NSLog(@"EZ 鏌ヨ璁惧淇℃伅澶辫触:%@",error);
+            [weakSelf.view makeToast:error.userInfo[@"NSLocalizedDescription"]
+                            duration:1.5
+                            position:@"center"];
             return;
         }
         if (deviceInfo) {
@@ -372,7 +393,11 @@
         [_player setPlayVerifyCode:verifyCode];
         [_talkPlayer setPlayVerifyCode:verifyCode];
     }
-    [_player setPlayerView:_playerView];
+//    if ([GlobalKit shareKit].deviceType==HDLEZDeviceType_Door) {//涓洪棬閿佹椂
+        [_player setPlayerView:self.doorPlayerView];
+//    }else{
+//        [_player setPlayerView:_playerView];
+//    }
     BOOL hdStatus = [[NSUserDefaults standardUserDefaults] boolForKey:[NSString stringWithFormat:@"EZVideoPlayHardDecodingStatus_%@", self.deviceInfo.deviceSerial]];
     [_player setHDPriority:hdStatus];
     [_player startRealPlay];
@@ -450,7 +475,7 @@
         __weak __typeof(self)weakSelf = self;
         [[EZHttpUtil sharedManager] authLockByHDL:content deviceId:self.deviceId  completion:^(ResponseData * _Nonnull responseData) {
             if (responseData.success) {
-                [[EZHttpUtil sharedManager] remoteOpenByHDL:self.streamToken deviceId:self.deviceId completion:^(ResponseData * _Nonnull responseData) {
+                [[EZHttpUtil sharedManager] remoteOpenByHDL:weakSelf.streamToken deviceId:weakSelf.deviceId completion:^(ResponseData * _Nonnull responseData) {
                     [MBProgressHUD hideHUDForView:weakSelf.view animated:YES];
                     if (responseData.success) {
                         [weakSelf.view makeToast:HDLEZLocallizedString(@"device_open_success")
@@ -581,21 +606,25 @@
 }
 
 
-///**
-// *  鏀跺埌鐨勭敾闈㈤暱瀹藉��
-// *
-// *  @param player 鎾斁鍣ㄥ璞�
-// *  @param height 楂樺害
-// *  @param width  瀹藉害
-// */
-//- (void)player:(EZPlayer *)player didReceivedDisplayHeight:(NSInteger)height displayWidth:(NSInteger)width{
+/**
+ *  鏀跺埌鐨勭敾闈㈤暱瀹藉��
+ *
+ *  @param player 鎾斁鍣ㄥ璞�
+ *  @param height 楂樺害
+ *  @param width  瀹藉害
+ */
+- (void)player:(EZPlayer *)player didReceivedDisplayHeight:(NSInteger)height displayWidth:(NSInteger)width{
 //    HDLEZLog(@"鐢婚潰闀匡細%ld锛屽锛�%ld",(long)height,(long)width);
-//    CGFloat playerVH=self.playerView.frame.size.height;
-//    CGFloat playerVW=playerVH*(width/height);
-//    self.playerView.frame=CGRectMake(0, 0, 50, 50);
-//    HDLEZLog(@"playerView鐨刦rame锛�%f",self.playerView.frame.size.width);
-//
-//}
+    CGFloat playerVH=self.playerView.frame.size.height;
+//    HDLEZLog(@"楂橈細%ld",(long)playerVH);
+    CGFloat ratio=((CGFloat)width)/((CGFloat)height);
+//    HDLEZLog(@"姣斾緥锛�%f",ratio);
+    CGFloat playerVW=playerVH*ratio;
+//    HDLEZLog(@"瀹斤細%ld",(long)playerVW);
+    [self.doorPlayerView mas_updateConstraints:^(MASConstraintMaker *make) {
+        make.width.mas_equalTo(_doorPlayerView.mas_height).multipliedBy(ratio);
+    }];
+}
 
 
 - (void)player:(EZPlayer *)player didPlayFailed:(NSError *)error
diff --git a/EZSDK/EZSDK/EZ/UIViewControllers/EZWifiConfigViewController.m b/EZSDK/EZSDK/EZ/UIViewControllers/EZWifiConfigViewController.m
index 90c2019..99162d9 100644
--- a/EZSDK/EZSDK/EZ/UIViewControllers/EZWifiConfigViewController.m
+++ b/EZSDK/EZSDK/EZ/UIViewControllers/EZWifiConfigViewController.m
@@ -591,14 +591,21 @@
             self.animationImageView.animationImages = nil;
             //璋冩暣鍥剧墖楂樺害
             
-            self.animationImageView.image = [UIImage imageNamed:@"addDevice_success"];//鎴愬姛鏍囩ず鍥剧墖
-            
-            [self.animationImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
-                make.top.mas_equalTo(@90);
-                make.leading.trailing.mas_equalTo(@0);
-                make.height.mas_equalTo(@(185 * [UIScreen mainScreen].bounds.size.width/320.0f));
+//            self.animationImageView.image = [UIImage imageNamed:@"addDevice_success"];//鎴愬姛鏍囩ず鍥剧墖
+            self.animationImageView.image = [UIImage imageNamed:@"hdl_ez_add_device_success"];//鎴愬姛鏍囩ず鍥剧墖
+            [self.animationImageView mas_updateConstraints:^(MASConstraintMaker *make) {
+                make.top.mas_equalTo(@100);
+                make.leading.mas_equalTo(([UIScreen mainScreen].bounds.size.width-80)/2);
+                make.trailing.mas_equalTo(-([UIScreen mainScreen].bounds.size.width-80)/2);
+                make.height.mas_equalTo(80);
             }];
             
+//            [self.animationImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
+//                make.top.mas_equalTo(@90);
+//                make.leading.trailing.mas_equalTo(@0);
+//                make.height.mas_equalTo(@(185 * [UIScreen mainScreen].bounds.size.width/320.0f));
+//            }];
+            
             [self.view addSubview:self.completionLabel];
             
             [self.completionLabel mas_makeConstraints:^(MASConstraintMaker *make) {
diff --git a/EZSDK/EZSDK/EZ/UIViewControllers/EZWifiTipsViewController.m b/EZSDK/EZSDK/EZ/UIViewControllers/EZWifiTipsViewController.m
index 90b097b..8b10e59 100644
--- a/EZSDK/EZSDK/EZ/UIViewControllers/EZWifiTipsViewController.m
+++ b/EZSDK/EZSDK/EZ/UIViewControllers/EZWifiTipsViewController.m
@@ -46,9 +46,9 @@
         make.leading.mas_equalTo(@10);
         make.trailing.mas_equalTo(@-10);
         if([UIScreen mainScreen].bounds.size.height == 480.0){
-            make.top.mas_equalTo(@10);
+            make.top.mas_equalTo(10+50);
         }else{
-            make.top.mas_equalTo(@99);
+            make.top.mas_equalTo(99+50);
         }
         make.height.mas_equalTo(@50);
     }];
@@ -56,8 +56,9 @@
     [self.view addSubview:self.deviceImageView];
     [self.deviceImageView mas_makeConstraints:^(MASConstraintMaker *make) {
         make.top.mas_equalTo(self.tipsLabel.mas_bottom).offset(19);
-        make.width.mas_equalTo(@174);
-        make.height.mas_equalTo(@199);
+//        make.width.mas_equalTo(@174);
+//        make.height.mas_equalTo(@199);
+        make.width.height.mas_equalTo(0);
         make.centerX.mas_equalTo(self.view.mas_centerX);
     }];
     
@@ -78,6 +79,8 @@
     }];
     
     [self checkDevice];
+    
+    self.deviceImageView.hidden=YES;
 }
 
 - (void)didReceiveMemoryWarning {
@@ -104,7 +107,7 @@
     [self.exceptionButton setTitle:NSLocalizedString(@"wifi_config_wifi_ago", @"杩欏彴璁惧浠ュ墠閰嶈繃缃戠粶") forState:UIControlStateNormal];
     
     NSMutableAttributedString *attributeStr = [[NSMutableAttributedString alloc] initWithString:self.tipsLabel.text];
-    [attributeStr addAttributes:@{NSForegroundColorAttributeName:[UIColor dd_hexStringToColor:@"0xff4000"],NSFontAttributeName:[UIFont boldSystemFontOfSize:16.0f]} range:[self.tipsLabel.text rangeOfString:@"30"]];
+    [attributeStr addAttributes:@{NSForegroundColorAttributeName:[UIColor dd_hexStringToColor:@"0xff4000"],NSFontAttributeName:[UIFont boldSystemFontOfSize:18.0f]} range:[self.tipsLabel.text rangeOfString:@"30"]];
     self.tipsLabel.attributedText = attributeStr;
 }
 
@@ -201,9 +204,9 @@
     {
         _tipsLabel = [[UILabel alloc] initWithFrame:CGRectZero];
         _tipsLabel.backgroundColor = [UIColor clearColor];
-        _tipsLabel.font = [UIFont systemFontOfSize:16.0f];
+        _tipsLabel.font = [UIFont systemFontOfSize:18.0f];
         _tipsLabel.textColor = [UIColor dd_hexStringToColor:@"0x333333"];
-        _tipsLabel.numberOfLines = 2;
+        _tipsLabel.numberOfLines = 3;
         _tipsLabel.textAlignment = NSTextAlignmentCenter;
     }
     return _tipsLabel;
diff --git a/EZSDK/EZSDK/EZ/Venders/SDWebImage/SDWebImageDownloader.m b/EZSDK/EZSDK/EZ/Venders/SDWebImage/SDWebImageDownloader.m
index 1fdcfc9..f03f829 100644
--- a/EZSDK/EZSDK/EZ/Venders/SDWebImage/SDWebImageDownloader.m
+++ b/EZSDK/EZSDK/EZ/Venders/SDWebImage/SDWebImageDownloader.m
@@ -73,7 +73,7 @@
         _HTTPHeaders = [@{@"Accept": @"image/*;q=0.8"} mutableCopy];
 #endif
         _barrierQueue = dispatch_queue_create("com.hackemist.SDWebImageDownloaderBarrierQueue", DISPATCH_QUEUE_CONCURRENT);
-        _downloadTimeout = 15.0;
+        _downloadTimeout = 30.0;
     }
     return self;
 }
@@ -119,7 +119,7 @@
     [self addProgressCallback:progressBlock completedBlock:completedBlock forURL:url createCallback:^{
         NSTimeInterval timeoutInterval = wself.downloadTimeout;
         if (timeoutInterval == 0.0) {
-            timeoutInterval = 15.0;
+            timeoutInterval = 30.0;
         }
 
         // In order to prevent from potential duplicate caching (NSURLCache + SDImageCache) we disable the cache for image requests if told otherwise
diff --git a/EZSDK/EZSDK/EZSDK.m b/EZSDK/EZSDK/EZSDK.m
index 91fa7ce..ae54994 100644
--- a/EZSDK/EZSDK/EZSDK.m
+++ b/EZSDK/EZSDK/EZSDK.m
@@ -51,11 +51,11 @@
         if (!LanguageIsChinese) {
             //娴峰鐗�
             isHavelibInit = [EZGlobalSDK initLibWithAppKey:globalAppKey];
-            NSLog(@"娴峰鐗坘ey--%@",globalAppKey);
+            HDLEZLog(@"娴峰鐗坘ey--%@",globalAppKey);
         }else{
             isHavelibInit = [EZOpenSDK initLibWithAppKey:appKey];
             [[GlobalKit shareKit] setHdlAppKey:appKey];
-            NSLog(@"鍥藉唴鐗坘ey--%@", appKey);
+            HDLEZLog(@"鍥藉唴鐗坘ey--%@", appKey);
         }
         [EZHCNetDeviceSDK initSDK];
         [EZOPENSDK enableP2P:YES];
@@ -229,6 +229,9 @@
  @param deviceType 璁惧spk(鐢ㄤ簬鍖哄垎鏄惁涓洪棬閿�)
  */
 -(void)PlayWithDeviceSerial:(NSString *)deviceSerial deviceId:(NSString*)deviceId deviceType:(NSString *)deviceType{
+    if ([[self getCurrentVC] isKindOfClass:[EZLivePlayViewController class]]) {//闃叉閲嶅杩涘叆
+        return;
+    }
     [GlobalKit shareKit].deviceType=[deviceType isEqualToString:HDLEZ_DOOR_SPK] ? HDLEZDeviceType_Door : HDLEZDeviceType_Default;
     UIStoryboard *ezMainStoryBoard = [UIStoryboard storyboardWithName:@"EZMain" bundle:nil];
     EZLivePlayViewController *vc = [ezMainStoryBoard instantiateViewControllerWithIdentifier:@"EZLivePlayViewController"];

--
Gitblit v1.8.0