first commit

This commit is contained in:
yezhiqiu
2025-09-30 10:01:20 +08:00
commit 0214fb09ed
1862 changed files with 119528 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
package com.abbidot.tracker
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.Assert.*
/**
* Instrumented test, which will execute on an Android device.
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
@Test
fun useAppContext() { // Context of the app under test.
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assertEquals("com.abbidot.tracker", appContext.packageName)
}
}

View File

@@ -0,0 +1,610 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!-- <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" /> -->
<!-- <uses-permission android:name="android.permission.READ_CALL_LOG" /> -->
<!-- 联网权限 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH" /> <!-- 访问网络状态 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" /> <!-- 拍照权限 -->
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.CAMERA" /> <!-- 百度地图 start -->
<!-- 这个权限用于进行网络定位 -->
<!--
// 清单文件中所注册的权限 maxSdkVersion 大小不符合最低要求,分为以下两种情况:
// 1. 如果你的项目中注册了该属性,请根据报错提示修改 maxSdkVersion 属性值或者删除 maxSdkVersion 属性
// 2. 如果你明明没有注册过 maxSdkVersion 属性,可以检查一下编译完成的 apk 包中是否有该属性,如果里面存在,证明框架的判断是没有问题的
// 一般是第三方 sdk 或者框架在清单文件中注册了 <uses-permission android:name="xxx" android:maxSdkVersion="xx"/> 导致的
// 解决方式也很简单,通过在项目中注册 <uses-permission android:name="xxx" tools:node="replace"/> 即可替换掉原先的配置
-->
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION"
tools:node="replace" /> <!-- 用于访问wifi网络信息wifi信息会用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 这个权限用于获取wifi的获取权限wifi信息会用来进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission
android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
tools:ignore="ProtectedPermissions" /> <!-- 允许程序读取底层系统日志文件 -->
<uses-permission
android:name="android.permission.READ_LOGS"
tools:ignore="ProtectedPermissions" /> <!-- 允许使用PowerManager的 WakeLocks保持进程在休眠时从屏幕消失 -->
<uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- 允许程序读取或写入系统设置 -->
<uses-permission
android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" /> <!-- android 9.0上使用前台服务,需要添加权限 -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <!-- 用于读取手机当前的状态 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 读取缓存数据 -->
<!-- 蓝牙扫描权限 -->
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <!-- 获取模拟定位信息 -->
<uses-permission
android:name="android.permission.ACCESS_MOCK_LOCATION"
tools:ignore="MockLocation,ProtectedPermissions" />
<permission
android:name="android.permission.INTERACT_ACROSS_USERS_FULL"
android:protectionLevel="signature" /> <!-- *******************************************************极光推送start************************************************************************* -->
<!-- Required -->
<permission
android:name="${applicationId}.permission.JPUSH_MESSAGE"
android:protectionLevel="signature" /> <!-- Optional. Required for location feature -->
<uses-permission android:name="${applicationId}.permission.JPUSH_MESSAGE" /> <!-- 为了提高sdk识别唯一用户的能力保证消息推送的精准送达建议集成以下权限可选 -->
<!-- <uses-permission -->
<!-- android:name="android.permission.QUERY_ALL_PACKAGES" -->
<!-- tools:ignore="QueryAllPackagesPermission" /> -->
<!-- 如您需要接入地理围栏业务,建议集成以下权限(可选) -->
<uses-permission android:name="android.permission.GET_TASKS" /> <!-- 如您需要对应设备通知相关的能力,建议集成以下权限(可选) -->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <!-- 华为角标 -->
<uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE" /> <!-- VIVO角标权限 -->
<uses-permission android:name="com.vivo.notification.permission.BADGE_ICON" /> <!-- 允许访问振动设备 -->
<uses-permission android:name="android.permission.VIBRATE" /> <!-- **************************************极光推送end********************************************* -->
<!-- 权限是第三方应用使用的可以用tools:node="remove"进行删除权限。隐私权限,方便上架谷歌市场 -->
<!-- 没有使用后台获取位置Android 10.0 新增的权限),只选择《仅在使用中允许》 -->
<uses-permission
android:name="android.permission.ACCESS_BACKGROUND_LOCATION"
tools:node="remove" />
<uses-permission
android:name="android.permission.QUERY_ALL_PACKAGES"
tools:node="remove" />
<uses-permission
android:name="com.android.permission.GET_INSTALLED_APPS"
tools:node="remove" />
<uses-permission
android:name="android.permission.REQUEST_INSTALL_PACKAGES"
tools:node="remove" /> <!-- Android 13上一新增运行时权限 -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> <!-- 通知权限 -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" /> <!-- Android 12新增权限适配 -->
<uses-permission
android:name="android.permission.BLUETOOTH_SCAN"
android:usesPermissionFlags="neverForLocation"
tools:targetApi="s" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <!-- BLUETOOTH permissions are added by lib_dfu module. -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" /> <!-- 指定微信包名 -->
<queries>
<package android:name="com.tencent.mm" />
</queries>
<application
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@mipmap/logo_abbidot"
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/logo_abbidot"
android:supportsRtl="true"
android:theme="@style/Theme.Tracker"
android:usesCleartextTraffic="true"
tools:replace="android:supportsRtl"
tools:targetApi="n">
<activity
android:name=".ui.activity.device.set.PowerOffActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.DeleteTracker2Activity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.DeleteTracker1Activity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.wifi.AddWifiPasswordActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.data.SharePetActivityActivity"
android:exported="false"
android:hardwareAccelerated="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.account.EmailAddressActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.account.ChangeNameActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.set.AdvancedSetActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.pet.PetWeightActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.subscribe.RequestRefundActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.subscribe.SubscriptionHistoryActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.pet.ShowInviteDeviceActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.help.HelpCreatePetFenceActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.help.HelpTrackerBatteryActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.help.HelpTrackerStatusActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.help.HelpActiveTrackerActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.help.HelpPowerOnOffActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.help.HowWorkActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.subscribe.ChoosePlanActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.account.ChangeEmailSuccessActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.account.ChangeEmailActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.account.UserProfileActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.AddPairedSuccessActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.account.SignupSuccessActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.set.PermissionsSetActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.set.LiveDurationSetActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.set.TrackingDurationSetActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.pet.first.FirstSetPetTypeActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.wifi.PowerSavingSetActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.set.NotificationsSetActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.subscribe.MySubscriptionActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.pet.first.FirstPetProfileActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.pet.first.FirstSetPetWeightActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.pet.first.FirstSetPetHeightActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.pet.first.FirstMeasurementUnitsActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.wifi.AddWifiPowerZone3Activity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.wifi.AddWifiPowerZone2Activity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.wifi.AddWifiPowerZone1Activity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.subscribe.SubscriptionDetailActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.set.FirstPermissionsActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.subscribe.PaymentSuccessActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.subscribe.AddCreditCardPaymentActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.subscribe.PaymentMethodActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.subscribe.SureSubscriptionPlanActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.subscribe.SubscriptionPlanActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.AddNewTracker4Activity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.AddNewTracker3Activity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.AddNewTracker2Activity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.AddNewTracker1Activity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.MyTrackerV2Activity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.fences.EditSafeZoneActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.fences.EditNoGoZoneActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.fences.PreviewFencesZoneActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.account.ResetPasswordSuccessActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.account.ForgotPasswordV2Activity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.account.LoginV2Activity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.account.CreateAccountV2Activity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.SayHelloActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.pet.BadgeDetailActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.pet.BadgesListActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.pet.FamilyMembersActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.pet.PetHeightActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.pet.PetProfileActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.pet.InviteFamilyActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.data.DataBoardActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.fences.AddAndEditFencesZoneBaseActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.fences.AddSafeZoneActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.fences.AddNoGoZoneActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.fences.VirtualFencesActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.wifi.EditWifiPowerZoneActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.map.LiveActivityV2"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.data.MoreSleepActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.data.MoreActivityActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.account.NotificationV2Activity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.HomeV2Activity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.set.AboutActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.account.recharge.cn.RechargeHistoryCNActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.account.recharge.cn.RechargeDeviceDetailCNActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.account.recharge.cn.RechargeOrderDetailCNActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.account.recharge.cn.RechargeAmountCNActivity"
android:screenOrientation="portrait" />
<activity
android:name=".deprecated.ui.activity.LoginRegisterCNActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.DebugActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.MyCropImageActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.WebViewActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.account.recharge.AddCreditCardActivity"
android:screenOrientation="portrait" />
<activity
android:name=".deprecated.ui.activity.profile.recharge.PaymentResultActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.account.recharge.PaymentMethodPayPalActivity"
android:exported="true"
android:launchMode="singleTask"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="${applicationId}.braintree" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
<activity
android:name=".ui.activity.help.FeedbackActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.account.recharge.PaymentMethodStripeActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.map.MapLiveActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.map.HomeMapNavigationActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.data.HistoryDataActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.device.set.LedLightActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.account.FencesAddActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.SwipeActionActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.DetailActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.SplashActivity"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@style/my_splash_theme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name=".service.DfuService"
android:exported="false"
android:foregroundServiceType="connectedDevice">
<intent-filter>
<action android:name="no.nordicsemi.android.action.DFU_UPLOAD" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service> <!-- 微信登录 -->
<activity
android:name=".wxapi.WXEntryActivity"
android:exported="true"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:taskAffinity="${applicationId}"
android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <!-- 微信支付 -->
<activity
android:name=".wxapi.WXPayEntryActivity"
android:exported="true"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:taskAffinity="${applicationId}"
android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <!-- 支付宝客户端调用和H5页面调用 -->
<activity
android:name="com.alipay.sdk.app.H5PayActivity"
android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:exported="false"
android:screenOrientation="behind"
android:windowSoftInputMode="adjustResize|stateHidden"
tools:replace="android:configChanges" /> <!-- 支付宝客户端调用和H5页面调用 -->
<activity
android:name="com.alipay.sdk.app.H5AuthActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind"
android:windowSoftInputMode="adjustResize|stateHidden"
tools:replace="android:configChanges" /> <!-- 百度地图 -->
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="${BAIDU_MAP_KEY}" />
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" /> <!-- 谷歌地图 -->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="${GOOGLE_MAP_KEY}" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider> <!-- LogcatActivity 默认是跟随手机屏幕方向的,如果你需要固定竖屏方向 -->
<activity
android:name="com.hjq.logcat.LogcatActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:launchMode="singleInstance"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
android:windowSoftInputMode="stateHidden"
tools:ignore="LockedOrientationActivity"
tools:node="replace" /> <!-- **************************************极光推送start********************************************* -->
<service
android:name=".service.MyJPushService"
android:enabled="true"
android:exported="false"
android:process=":pushcore">
<intent-filter>
<action android:name="cn.jiguang.user.service.action" />
</intent-filter>
</service>
<receiver
android:name=".receiver.MyJPushMessageReceiver"
android:exported="true">
<intent-filter>
<action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
<category android:name="${applicationId}" />
</intent-filter>
</receiver> <!-- **************************************极光推送end********************************************* -->
<meta-data
android:name="com.abbidot.metadata.bugly.key"
android:value="${BUGLY_KEY}" />
<meta-data
android:name="com.abbidot.metadata.mapbox.access.token"
android:value="${MAPBOX_ACCESS_TOKEN}" />
<meta-data
android:name="com.abbidot.metadata.http.request.key"
android:value="${HTTP_REQUEST_KEY}" /> <!-- **************************************Stripe支付start********************************************* -->
<!-- <meta-data -->
<!-- android:name="com.stripe.example.metadata.backend_url" -->
<!-- android:value="${BACKEND_URL}" /> -->
<!-- <meta-data -->
<!-- android:name="com.stripe.example.metadata.publishable_key" -->
<!-- android:value="${PUBLISHABLE_KEY}" /> -->
<meta-data
android:name="com.abbidot.metadata.stripe.release.key"
android:value="${STRIPE_RELEASE_KEY}" />
<meta-data
android:name="com.abbidot.metadata.stripe.test.key"
android:value="${STRIPE_TEST_KEY}" />
</application>
</manifest>

View File

@@ -0,0 +1,42 @@
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=gb2312" ><meta name=ProgId content=Word.Document ><meta name=Generator content="Microsoft Word 14" ><meta name=Originator content="Microsoft Word 14" ><title></title></head>
<body>
<div>
<h3>Annual Replacement Protection Plan - Terms & Conditions</h3>
<h4>1. Plan Coverage & Pricing</h4>
<p>Annual Fee: $12.90 per year</p>
<p>Coverage: Provides one free replacement per year for a damaged ABBIDOT Tracker</p>
<p>Multi-Year Coverage:</p>
<p>Purchasing 1 year entitles you to 1 replacement claim.</p>
<p>Purchasing 2 years entitles you to 2 replacement claims (one per year).</p>
<p>This pattern continues for longer plans (e.g., 3 years = 3 claims, one per year).</p>
<h4>2. Claim Process</h4>
<p>To file a claim, submit the following via the ABBIDOT Support Portal:</p>
<p>Proof of damage/loss (e.g., photos, police report for lost devices).</p>
<p>Original purchase receipt and protection plan confirmation.</p>
<p>All claims are subject to verification. Fraudulent claims will result in plan termination without refund.</p>
<h4>3.Cases Not Covered:</h4>
<p>Intentional Damage - Verified cases of deliberate destruction</p>
<p>Unauthorized Modifications - Damage caused by self-disassembly or non-official alterations</p>
<h4>4. Replacement Terms</h4>
<p>Replacements may include refurbished or new devices (same or equivalent model).</p>
<p>Customer covers any applicable shipping fees unless otherwise stated.</p>
<p>Manual Refund (After 48 Hours): For subscriptions older than 48 hours but within 1 month, refunds require manual approval. Eligibility: Only applicable to annual (1-year) subscriptions.</p>
<h4>5. Cancellation & Refunds</h4>
<p>Full refunds available within 48 hours of purchase.</p>
<p>By purchasing this plan, you agree to these terms. </p>
<p>For claims, contact: support@abbidot.com.</p>
</div>
</body></html>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"nm":"Main Scene","ddd":0,"h":200,"w":380,"meta":{"g":"@lottiefiles/creator 1.31.1"},"layers":[{"ty":4,"nm":"Shape Layer 3","sr":1,"st":0,"op":360,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[-284,92,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[50,50],"t":17},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[75,75],"t":31},{"s":[50,50],"t":47}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[312,100],"t":17},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[312,60],"t":31},{"s":[312,100],"t":47}],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[25],"t":17},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[100],"t":31},{"s":[25],"t":47}],"ix":11}},"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":1,"cix":2,"np":3,"it":[{"ty":"el","bm":0,"hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"s":{"a":0,"k":[120,120],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.0078,0.2863,0.298],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-284,92],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":1},{"ty":4,"nm":"Shape Layer 2","sr":1,"st":0,"op":360,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[-284,92,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[50,50],"t":9},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[75,75],"t":23},{"s":[50,50],"t":39}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[192,100],"t":9},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[192,60],"t":23},{"s":[192,100],"t":39}],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[25],"t":9},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[100],"t":23},{"s":[25],"t":39}],"ix":11}},"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":1,"cix":2,"np":3,"it":[{"ty":"el","bm":0,"hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"s":{"a":0,"k":[120,120],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.0078,0.2863,0.298],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-284,92],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":2},{"ty":4,"nm":"Shape Layer 1","sr":1,"st":0,"op":360,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[-284,92,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[50,50],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[75,75],"t":14},{"s":[50,50],"t":30}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[72,100],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[72,60],"t":14},{"s":[72,100],"t":30}],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[25],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[100],"t":14},{"s":[25],"t":30}],"ix":11}},"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":1,"cix":2,"np":3,"it":[{"ty":"el","bm":0,"hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"s":{"a":0,"k":[120,120],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.0078,0.2863,0.298],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-284,92],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":3}],"v":"5.7.0","fr":60,"op":81,"ip":0,"assets":[]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"v":"5.5.9","fr":60,"ip":0,"op":60,"w":20,"h":35,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":14,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":42,"s":[100]},{"t":56,"s":[4]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[10,28.636363636363626,0],"ix":2},"a":{"a":0,"k":[6.75,2.25,0],"ix":1},"s":{"a":0,"k":[90.9090909090909,92.10526315789475,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.552,0],[0,0],[0,-0.553],[0,0],[0.553,0],[0,0],[0,0.553],[0,0]],"o":[[0,0],[0.553,0],[0,0],[0,0.553],[0,0],[-0.552,0],[0,0],[0,-0.553]],"v":[[-5.5,-2],[5.5,-2],[6.5,-1],[6.5,1],[5.5,2],[-5.5,2],[-6.5,1],[-6.5,-1]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.9137254901960784,0.8509803921568627,0.08235294117647059,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[6.75,2.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Layer 2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[10,17.72727272727273,0],"ix":2},"a":{"a":0,"k":[12,19.5,0],"ix":1},"s":{"a":0,"k":[90.9090909090909,92.10526315789475,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.104,0],[0,0],[0,-1.104],[0,0],[1.104,0],[0,0],[0,1.104],[0,0]],"o":[[0,0],[1.104,0],[0,0],[0,1.104],[0,0],[-1.104,0],[0,0],[0,-1.104]],"v":[[-8,-15.5],[8,-15.5],[10,-13.5],[10,13.5],[8,15.5],[-8,15.5],[-10,13.5],[-10,-13.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.9137254901960784,0.8509803921568627,0.08235294117647059,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[12,21.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[14,1.5],[10,1.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.9137254901960784,0.8509803921568627,0.08235294117647059,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"bm":0}],"markers":[]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,469 @@
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=gb2312" ><meta name=ProgId content=Word.Document ><meta name=Generator content="Microsoft Word 14" ><meta name=Originator content="Microsoft Word 14" ><title></title><!--[if gte mso 9]><xml><o:DocumentProperties><o:Author>Administrator</o:Author><o:LastAuthor>Administrator</o:LastAuthor><o:Revision>1</o:Revision><o:Pages>3</o:Pages><o:Characters>3201</o:Characters></o:DocumentProperties><o:CustomDocumentProperties><o:KSOProductBuildVer dt:dt="string" >2052-11.1.0.11875</o:KSOProductBuildVer><o:ICV dt:dt="string" >C04E27608BE34562B8408B8D5F23791D</o:ICV></o:CustomDocumentProperties></xml><![endif]--><!--[if gte mso 9]><xml><o:OfficeDocumentSettings></o:OfficeDocumentSettings></xml><![endif]--><!--[if gte mso 9]><xml><w:WordDocument><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery><w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery><w:DocumentKind>DocumentNotSpecified</w:DocumentKind><w:DrawingGridVerticalSpacing>7.8 <20><></w:DrawingGridVerticalSpacing><w:View>Web</w:View><w:Compatibility><w:AdjustLineHeightInTable/><w:DontGrowAutofit/><w:BalanceSingleByteDoubleByteWidth/><w:DoNotExpandShiftReturn/><w:UseFELayout/></w:Compatibility><w:Zoom>0</w:Zoom></w:WordDocument></xml><![endif]--><!--[if gte mso 9]><xml><w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="260" >
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 7" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 8" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 9" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 7" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 8" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 9" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 7" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 8" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 9" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Normal Indent" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="footnote text" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="annotation text" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="header" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="footer" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index heading" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="caption" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="table of figures" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="envelope address" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="envelope return" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="footnote reference" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="annotation reference" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="line number" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="page number" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="endnote reference" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="endnote text" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="table of authorities" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="macro" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toa heading" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Bullet" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Number" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Bullet 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Bullet 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Bullet 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Bullet 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Number 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Number 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Number 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Number 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Closing" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Signature" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" UnhideWhenUsed="false" Name="Default Paragraph Font" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text Indent" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Continue" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Continue 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Continue 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Continue 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Continue 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Message Header" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Salutation" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Date" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text First Indent" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text First Indent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Note Heading" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text Indent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text Indent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Block Text" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Hyperlink" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="FollowedHyperlink" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Document Map" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Plain Text" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="E-mail Signature" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Normal (Web)" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Acronym" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Address" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Cite" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Code" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Definition" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Keyboard" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Preformatted" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Sample" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Typewriter" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Variable" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" UnhideWhenUsed="false" Name="Normal Table" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="annotation subject" ></w:LsdException>
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="No List" ></w:LsdException>
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="1 / a / i" ></w:LsdException>
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="1 / 1.1 / 1.1.1" ></w:LsdException>
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="Article / Section" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Simple 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Simple 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Simple 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Classic 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Classic 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Classic 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Classic 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Colorful 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Colorful 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Colorful 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Columns 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Columns 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Columns 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Columns 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Columns 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 7" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 8" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 7" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 8" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table 3D effects 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table 3D effects 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table 3D effects 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Contemporary" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Elegant" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Professional" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Subtle 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Subtle 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Web 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Web 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Web 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Balloon Text" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Theme" ></w:LsdException>
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="Placeholder Text" ></w:LsdException>
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="No Spacing" ></w:LsdException>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading" ></w:LsdException>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List" ></w:LsdException>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid" ></w:LsdException>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List" ></w:LsdException>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading" ></w:LsdException>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List" ></w:LsdException>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid" ></w:LsdException>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="List Paragraph" ></w:LsdException>
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="Quote" ></w:LsdException>
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="Intense Quote" ></w:LsdException>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6" ></w:LsdException>
</w:LatentStyles></xml><![endif]--><style>
@font-face{
font-family:"Times New Roman";
}
@font-face{
font-family:"<22><><EFBFBD><EFBFBD>";
}
@font-face{
font-family:"Wingdings";
}
@font-face{
font-family:"Calibri";
}
p.MsoNormal{
mso-style-name:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
mso-style-parent:"";
margin:0pt;
margin-bottom:.0001pt;
mso-pagination:none;
text-align:justify;
text-justify:inter-ideograph;
font-family:Calibri;
mso-fareast-font-family:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';
font-size:10.5000pt;
mso-font-kerning:1.0000pt;
}
span.10{
font-family:'Times New Roman';
}
span.msoIns{
mso-style-type:export-only;
mso-style-name:"";
text-decoration:underline;
text-underline:single;
color:blue;
}
span.msoDel{
mso-style-type:export-only;
mso-style-name:"";
text-decoration:line-through;
color:red;
}
table.MsoNormalTable{
mso-style-name:<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
mso-style-parent:"";
mso-style-noshow:yes;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-padding-alt:0.0000pt 5.4000pt 0.0000pt 5.4000pt;
mso-para-margin:0pt;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-family:'Times New Roman';
font-size:10.0000pt;
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;
}
@page{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}@page Section0{
margin-top:72.0000pt;
margin-bottom:72.0000pt;
margin-left:90.0000pt;
margin-right:90.0000pt;
size:595.3000pt 841.9000pt;
layout-grid:15.6000pt;
mso-header-margin:42.5500pt;
mso-footer-margin:49.6000pt;
}
div.Section0{page:Section0;}</style></head><body style="tab-interval:21pt;text-justify-trim:punctuation;" ><!--StartFragment--><div class="Section0" style="layout-grid:15.6000pt;" >
<p><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>򡰱<EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǡ<EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>ʽ<EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ƽ̨<C6BD><EFBFBD><E1BDBB><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8>İ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>ܱ<EFBFBD>׼<EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ͬ<EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD>й¶<D0B9>κθ<CEBA><CEB8><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD>ĵ<EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD></p>
<p><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾ǿ<EFBFBD>ҽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>˽Ȿ<EFBFBD><EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ƽ̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߺ<EFBFBD>ʵ<EFBFBD><EFBFBD>Ӧ<EFBFBD>á<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>Ҫʱ<EFBFBD>ɲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><EFBFBD>¡<EFBFBD><EFBFBD>޶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0755-86352225<32><35></p>
<p><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣʹ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><EFBFBD>ɡ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
<p><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>޸ı<EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><EFBFBD><EFBFBD>֮ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD></p>
<h3>һ<EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></h3>
<p>(1<><31><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA>û<EFBFBD><C3BB><EFBFBD><E1B9A9><EFBFBD><EFBFBD><EFBFBD>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1>õ<EFBFBD><C3B5><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>ܰ<EFBFBD><DCB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3>û<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><E1BDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ф<EFBFBD><D0A4><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ա<EFBFBD><D5A1><EFBFBD><EFBFBD>ߡ<EFBFBD><DFA1><EFBFBD><EFBFBD>ء<EFBFBD><D8A1>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EBA1A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>罻ý<E7BDBB><C3BD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD>ͥ<EFBFBD><CDA5>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵȸ<CFB5><C8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>п<EFBFBD><D0BF><EFBFBD>֧<EFBFBD><D6A7>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD></p>
<p>(2<><32><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><C7BD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD>ǵķ<C7B5><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒʱ<C6B7><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1>û<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>ܱ<EFBFBD><DCB1>ɼ<EFBFBD><C9BC>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ϵͳ<CFB5><CDB3><EFBFBD>͡<EFBFBD><CDA1>豸ʶ<E8B1B8><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IP <20><>ַ<EFBFBD><D6B7> MAC <20><>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GPS <20><>λ<EFBFBD>á<EFBFBD><C3A1><EFBFBD><EEB6AF><EFBFBD>ݡ<EFBFBD><DDA1>˶<EFBFBD><CBB6><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD>Ϊƫ<CEAA>á<EFBFBD><C3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD><D5B3><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD><EFBFBD>֡<EFBFBD>ͼƬ<CDBC><C6AC>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD></p>
<p>(3<><33><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><D5BE>ý<EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>񣨡<EFBFBD><F1A3A8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ƽ̨<C6BD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>΢<EFBFBD>š<EFBFBD><C5A1>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD>ܱ<EFBFBD><DCB1>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>ܽ<EFBFBD><DCBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ƽ̨<C6BD><EFBFBD><E1B9A9><EFBFBD><EFBFBD><EFBFBD>ǵĻ<C7B5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD>ܰ<EFBFBD><DCB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>̡<EFBFBD><CCA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB6AF><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><E1B1BB>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD>ֻҪ<D6BB><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC></p>
<p>(4<><34><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6>ض<EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><DAB9>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع涨<D8B9><E6B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>18<31><38><EFBFBD><EFBFBD><EAA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>ͬ<EFBFBD><CDAC>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7>ͬ<EFBFBD><EFBFBD><E2B1BE>˽<EFBFBD><CBBD><EFBFBD>ߡ<EFBFBD></p>
<h3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></h3>
<p><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD>İ<EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD>׼<EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD>ܱ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD></p>
<p>(1<><31>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7>(2<><32><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD></p>
<p>(3)<29><><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7>񡢲<EFBFBD>Ʒ<EFBFBD>ͻ<CDBB>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD>ͨ<EFBFBD><CDA8></p>
<p>(4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB6AF><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2></p>
<p>(5<><35>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒʹ<C6B7><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><CBBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><CBBE><EFBFBD><EFBFBD><EBB1BE>˾<EFBFBD><CBBE><EFBFBD><EFBFBD>ֱ<EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD>ӿ<EFBFBD><D3BF>ƹ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ش<EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>ڲ<EFBFBD>ʹ<EFBFBD>á<EFBFBD></p>
<h3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ</h3>
<p>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ά<EFBFBD>ֺ͸<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD>ڲ<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>Ϊ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD>ܻὫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD>ݸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
<p>(1<><31><EFBFBD>ڱ<EFBFBD><DAB1>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><C2A3><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>ܻὫ<DCBB><E1BDAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>κα<CEBA><CEB1><EFBFBD>˾<EFBFBD><CBBE>Ȩ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>̻<EFBFBD><CCBB>ⲿ<EFBFBD><E2B2BF>Ӧ<EFBFBD>̣<EFBFBD><CCA3>Դٽ<D4B4><D9BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<D2BB><D0A9>˾<EFBFBD><CBBE><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><D2BA>й<EFBFBD>֮<EFBFBD><D6AE><EFBFBD>Ĺ<EFBFBD><C4B9>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪Ϥ<D6AA><CFA4>ͬ<EFBFBD><EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿ<EFBFBD><C9BF>ܲ<EFBFBD><DCB2><EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD>ˡ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
<p>(2<><32><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>ܽ<EFBFBD><DCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><E1B9A9><EFBFBD>Ա㿪չ<E3BFAA><D5B9><EFBFBD>ǵ<EFBFBD>ҵ<EFBFBD>񣬵<EFBFBD><F1A3ACB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>κδ<CEBA><CEB4><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><CBBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><CBBE>Ȩʹ<C8A8>øõ<C3B8><C3B5><EFBFBD><EFBFBD>Ϻͣ<CFBA><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD><EFBFBD>ǽ<EFBFBD><C7BD>ɷ<EFBFBD><C9B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4B9A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3>Ҳ<EFBFBD><D2B2><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ŀ<EFBFBD>Ķ<EFBFBD>ʹ<EFBFBD>á<EFBFBD></p>
<p>(3<><33><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>ܻ<EFBFBD><DCBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD>ϽȨ<CFBD><C8A8>˾<EFBFBD><CBBE><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EEA1A2><EFBFBD>շ<EFBFBD><D5B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϊִ<CEAA><D6B4><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD>߻<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7>Υ<EFBFBD><CEA5><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA1B7><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD><CFBD>з<EFBFBD><D0B7>ɿ<EFBFBD><C9BF></p>
<p>(4<><34><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><C7BD>з<EFBFBD><D0B7><EFBFBD>թ<EFBFBD><D5A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC>͵<EFBFBD><CDB5><EFBFBD>ְȨ<D6B0><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><CBBE><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><CBBE><EFBFBD><EFBFBD><EFBFBD>򡢷<EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵķ<CFB5><C4B7>ɳ<EFBFBD><C9B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>Ҫ<EFBFBD><EFBFBD><E1B9A9></p>
<p>(5<><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>ռ<EFBFBD><D5BC>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾֮<CBBE><D6AE>ת<EFBFBD>ƻ򴢴档<F2B4A2B4><E6A1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊͬ<CEAA><EFBFBD><E2B2A2>Ȩ<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><C2B6>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD></p>
<p>(6<><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>򲿷<EFBFBD><F2B2BFB7>ʲ<EFBFBD><CAB2><EFBFBD><EFBFBD>ۡ<EFBFBD>ת<EFBFBD>á<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ŷ<EFBFBD>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD></p>
<h3><EFBFBD>ġ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></h3>
<p>(1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ض<EFBFBD><D8B6>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EEB6AF><CAB1><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><E2B9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<D2BB><D0A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ܰ<EFBFBD><DCB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3>к<EFBFBD>ͷ<EFBFBD><CDB7>ͼƬ<CDBC><C6AC></p>
<p>(2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><E2B9B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><CBBD><EFBFBD>á<EFBFBD></p>
<p>(3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>˽<EFBFBD><CBBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵİ<DDB5>ȫ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>Ρ<EFBFBD></p>
<p>(4<><34><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD>dz<EFBFBD><C7B3><EFBFBD><EFBFBD>ƹ㱾<C6B9><E3B1BE>˾<EFBFBD><CBBE>Ʒ<EFBFBD><C6B7>Ŀ<EFBFBD>Ŀ<EFBFBD><C4BF>ܻ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD></p>
<h3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></h3>
<p>(1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵİ<DDB5>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>Ƿdz<C7B7><C7B3><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Ȩ<EFBFBD>ĽӴ<C4BD><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ö<EFBFBD><C3B6>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>ʩ<EFBFBD><CAA9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>ȫ<EFBFBD><C8AB></p>
<p>(2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ҵ<EFBFBD><D2B5>׼<EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>ȫ<EFBFBD><C8AB>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ӵ洢<D3B4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD><DEB7><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><E1B9A9><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰٷ<DDB0>֮<EFBFBD>ٰ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD></p>
<p>(3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ر<EFBFBD><D8B1>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD>ϢͨѶ<CDA8><D1B6>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1>رն<D8B1>λ<EFBFBD><CEBB><EFBFBD>ܵȣ<DCB5><C8A3><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD><CBBF>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>һЩ<D2BB><D0A9><EFBFBD><EFBFBD><EFBFBD>͹<EFBFBD><CDB9>ܿ<EFBFBD><DCBF><EFBFBD><EFBFBD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
<p>(4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>(5<><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><CBBE><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ײ<EFBFBD><D7B2>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>ƽ̨<C6BD><CCA8><EFBFBD>Դٽ<D4B4><D9BD><EFBFBD><EFBFBD>ӽ<EFBFBD><D3BD>׵<EFBFBD><D7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
<p>(6<><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>¼<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC>ġ<EFBFBD></p>
<p>(7<><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κκ<CEBA><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ񾭹<C7B7><F1BEADB9><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><E2A1A3><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޶<EFBFBD><DEB6>ڣ<EFBFBD><DAA3>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κλ<CEBA><CEBB><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Ȩʹ<C8A8><CAB9><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й¶<D0B9><C2B6><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
<p>(8<><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ס<EFBFBD><D7A1><EFBFBD>κι<CEBA><CEB9>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>ơ<EFBFBD><C6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>˽<EFBFBD><CBBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ɹ涨<C9B9><E6B6A8><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD>ͣ<EFBFBD>ú<EFBFBD><C3BA><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽҪ<CABD><D2AA><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ʸ<EFBFBD><CAB8><EFBFBD></p>
<h3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>񹤾߰<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD>SDK<EFBFBD><EFBFBD><EFBFBD><EFBFBD></h3>
<p>Bugly(<28><>ѶBugly)</p>
<p><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD> Ϊ<>˿<EFBFBD><CBBF>ٶ<EFBFBD>λӦ<CEBB>ò<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>⻹ԭCrash<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Crash<73>豸ͳ<E8B1B8><CDB3></p>
<p><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>Crash<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Crash<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>̶߳<EFBFBD>ջ<EFBFBD><EFBFBD>ROM/RAM/SD<53><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>Ե<EFBFBD>״̬<D7B4><CCAC>App<70><70>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2>IMEI<45><49><EFBFBD>豸ʶ<E8B1B8><CAB6><EFBFBD><EFBFBD></p>
<p><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>https://privacy.qq.com/document/preview/fc748b3d96224fdb825ea79e132c1a56</p>
<p><EFBFBD>ٶȶ<EFBFBD>λ</p>
<p><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD> <20><><EFBFBD><EFBFBD>ʵ<EFBFBD>ֶ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
<p><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>Android ID<49><44>IDFA<46><41>IDFV<46><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD><CEB3><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ϵͳ<CFB5><CDB3>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><EFBFBD><E6B1BE><EFBFBD>Ʒ<E8B1B8>Ƽ<EFBFBD><C6BC>ͺš<CDBA><C5A1><EFBFBD><E8B1B8><EFBFBD>ã<EFBFBD><C3A3><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
<p><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>https://lbs.baidu.com/index.php?title=openprivacy#service-page-anchor-0-0</p>
<p><EFBFBD>ٶȵ<EFBFBD>ͼ</p>
<p><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD> <20>ڵ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><ECBCA3><EFBFBD><EFBFBD></p>
<p><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>Android ID<49><44>IDFA<46><41>IDFV<46><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD><CEB3><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>д<EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>ô洢<C3B4><E6B4A2>Ϣ<EFBFBD><CFA2></p>
<p><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>https://lbs.baidu.com/index.php?title=openprivacy#service-page-anchor-0-1</p>
<p>QQ<EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
<p><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD> QQ<51><51>Ȩ<EFBFBD><C8A8>¼<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD></p>
<p><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>Android ID<49><44>IDFA<46><41>IDFV<46><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3>Ϣ<EFBFBD><CFA2><EFBFBD>ڴ濨Ȩ<E6BFA8>޺<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>б<EFBFBD><D0B1><EFBFBD>Ϣ<EFBFBD><CFA2></p>
<p><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>https://wiki.connect.qq.com/qq%e4%ba%92%e8%81%94sdk%e9%9a%90%e7%a7%81%e4%bf%9d%e6%8a%a4%e5%a3%b0%e6%98%8e</p>
<p>΢<EFBFBD><EFBFBD></p>
<p><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD> ΢<><CEA2><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8>¼<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD></p>
<p><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>Android ID<49><44>IDFA<46><41>IDFV<46><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3>Ϣ<EFBFBD><CFA2><EFBFBD>ڴ濨Ȩ<E6BFA8>޺<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>б<EFBFBD><D0B1><EFBFBD>Ϣ<EFBFBD><CFA2></p>
<p><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8</p>
<p>mapbox</p>
<p><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD>߹滮</p>
<p><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>Android ID<49><44>IDFA<46><41>IDFV<46><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3>Ϣ<EFBFBD><CFA2><EFBFBD>ڴ濨Ȩ<E6BFA8><C8A8>,<2C><>γ<EFBFBD><CEB3><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2></p>
<p><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>https://www.mapbox.com/legal/privacy</p>
<p><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>ơ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
<p><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>û<EFBFBD><EFBFBD>豸Ψһ<EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ</p>
<p><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>Android ID<49><44>IMEI<45><49>IDFA<46><41>IDFV<46><56><EFBFBD>豸MAC<41><43>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3>Ϣ<EFBFBD><CFA2><EFBFBD>Ѱ<EFBFBD>װAPP<50><50>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>д<EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>ô洢<C3B4><E6B4A2>Ϣ<EFBFBD><CFA2></p>
<p><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>https://www.jiguang.cn/license/privacy</p>
<h3><EFBFBD>ߡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></h3>
<p><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD>ɴ˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></p>
<p><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0755-86352225 <20><></p>
</div><!--EndFragment--></body></html>

View File

@@ -0,0 +1,72 @@
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=gb2312" ><meta name=ProgId content=Word.Document ><meta name=Generator content="Microsoft Word 14" ><meta name=Originator content="Microsoft Word 14" ><title></title></head>
<body>
<div>
<p>At ABBI PET INC, we respect and are committed to protecting your privacy. This Privacy Policy outlines how we collect, use, safeguard, and keep your information confidential when you use our mobile application ("App").</p>
<h3>1. Information We Collect</h3>
<ul>
<li>Personal Information: When you create an account, we may collect personal information such as your name, email address, and phone number.</li>
<li>Pet Information: We collect information about your pets, including their name, age, breed, and weight, to provide tailored services.</li>
<li>Usage Data: We collect information on how you interact with our App, such as the features you use and the time spent on the App.</li>
<li>Device Information: We may collect information about the device you use to access the App, including the device type, operating system, and unique device identifiers.</li>
<li>Location Data: With your permission, we may collect and process information about your device<63><65>s location and your pet's location to provide location-based services.</li>
</ul>
<h3>2. How We Use Your Information</h3>
<ul>
<li>To Provide and Improve Our Services: We use your information to operate and improve the App and our services.</li>
<li>To Communicate with You: We may use your information to send you updates, newsletters, marketing materials, and other information that may be of interest to you.</li>
<li>To Personalize Your Experience: We use your information to tailor the content and services we offer to better meet your needs and preferences.</li>
<li>To Ensure Security and Compliance: We use your information to ensure the security of our App and compliance with applicable laws and regulations.</li>
</ul>
<h3>3. Data Confidentiality and Security</h3>
<ul>
<li>Data Encryption: We use industry-standard encryption protocols to protect your personal information during transmission and storage.</li>
<li>Access Controls: Access to your personal information is restricted to authorized personnel only, and we implement strict access controls to prevent unauthorized access.</li>
<li>Data Minimization: We only collect and retain the minimum amount of personal information necessary to provide our services.</li>
<li>Regular Audits: We conduct regular security audits and assessments to ensure our data protection measures are up to date and effective.</li>
</ul>
<h3>4. Sharing Your Information</h3>
<ul>
<li>Service Providers: We may share your information with third-party service providers who perform services on our behalf, such as hosting, data analysis, and customer support. These service providers are contractually obligated to keep your information confidential and secure.</li>
<li>Legal Requirements: We may disclose your information if required by law or in response to a legal request.</li>
<li>Business Transfers: In the event of a merger, acquisition, or sale of all or a portion of our assets, your information may be transferred to the new owner, subject to the same data protection commitments.</li>
</ul>
<h3>5. Your Choices</h3>
<ul>
<li>Account Information: You can update or delete your account information through the App's settings.</li>
<li>Marketing Communications: You can opt-out of receiving marketing communications from us by following the unsubscribe instructions in those communications or by contacting us directly.</li>
<li>Location Data: You can disable location services through your device settings, but this may affect certain features of the App.</li>
</ul>
<h3>6. Security</h3>
<p>We take reasonable measures to protect your information from unauthorized access, use, or disclosure. However, no method of transmission over the Internet or method of electronic storage is 100% secure.</p>
<h3>7. Children's Privacy</h3>
<p>Our App is not intended for use by children under the age of 13, and we do not knowingly collect personal information from children under 13. If we become aware that we have collected personal information from a child under 13, we will take steps to delete that information.</p>
<h3>8. Changes to This Privacy Policy</h3>
<p>We may update this Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy within the App. You are advised to review this Privacy Policy periodically for any changes.</p>
<h3>9. Contact Us</h3>
<p>If you have any questions about this Privacy Policy, please contact us at:</p>
<p>ABBI PET INC</p>
<p>10700 Richmond Ave Suite 143</p>
<p>Houston, TX 77042</p>
<p>Email: support@abbidot.com</p>
</div>
</body></html>

View File

@@ -0,0 +1,24 @@
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=gb2312" ><meta name=ProgId content=Word.Document ><meta name=Generator content="Microsoft Word 14" ><meta name=Originator content="Microsoft Word 14" ><title></title></head>
<body>
<div>
<h3>ABBIDOT Tracker Subscription Terms and Conditions
</h3>
<p>1.Subscription Plans Users can choose between Basic and Prime plans. Basic plan subscribers can upgrade to Prime at any time. Prime plan subscribers can't change to Basic plan.
<p>2.Refund Policy Automatic Refund (Within 48 Hours): Full refund available if canceled within 48 hours of subscription. Processed automatically without manual review. Manual Refund (After 48 Hours): For subscriptions older than 48 hours but within 1 month, refunds require manual approval. Eligibility: Only applicable to annual (1-year) subscriptions. Refunds may be prorated based on usage. No Refund After 1 Month: Subscriptions active for over 1 month are non-refundable.</p>
<p>3.Pausing Subscription & Number Retention Users may pause their subscription. Number Retention: Paused numbers can be retained for up to 1 year. A small fee will apply for number retention during the pause period. Failure to reactivate within 1 year may result in number release.</p>
<p>4.Modifications ABBIDOT reserves the right to update these terms. Users will be notified of changes. By subscribing, you agree to these terms.</p>
<p>For support contact:</p>
<p>support@abbidot.com</p>
</div>
</body></html>

View File

@@ -0,0 +1,476 @@
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=gb2312" ><meta name=ProgId content=Word.Document ><meta name=Generator content="Microsoft Word 14" ><meta name=Originator content="Microsoft Word 14" ><title></title><!--[if gte mso 9]><xml><o:DocumentProperties><o:Author>Administrator</o:Author><o:LastAuthor>Administrator</o:LastAuthor><o:Revision>1</o:Revision><o:Pages>4</o:Pages><o:Characters>4655</o:Characters></o:DocumentProperties><o:CustomDocumentProperties><o:KSOProductBuildVer dt:dt="string" >2052-11.1.0.11875</o:KSOProductBuildVer><o:ICV dt:dt="string" >FBB05287C6EE4A78BF914DBD714C3B04</o:ICV></o:CustomDocumentProperties></xml><![endif]--><!--[if gte mso 9]><xml><o:OfficeDocumentSettings></o:OfficeDocumentSettings></xml><![endif]--><!--[if gte mso 9]><xml><w:WordDocument><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery><w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery><w:DocumentKind>DocumentNotSpecified</w:DocumentKind><w:DrawingGridVerticalSpacing>7.8 <20><></w:DrawingGridVerticalSpacing><w:View>Web</w:View><w:Compatibility><w:AdjustLineHeightInTable/><w:DontGrowAutofit/><w:BalanceSingleByteDoubleByteWidth/><w:DoNotExpandShiftReturn/><w:UseFELayout/></w:Compatibility><w:Zoom>0</w:Zoom></w:WordDocument></xml><![endif]--><!--[if gte mso 9]><xml><w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="260" >
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 7" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 8" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="heading 9" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 7" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 8" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index 9" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 7" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 8" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toc 9" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Normal Indent" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="footnote text" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="annotation text" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="header" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="footer" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="index heading" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" QFormat="true" Name="caption" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="table of figures" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="envelope address" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="envelope return" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="footnote reference" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="annotation reference" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="line number" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="page number" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="endnote reference" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="endnote text" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="table of authorities" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="macro" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="toa heading" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Bullet" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Number" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Bullet 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Bullet 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Bullet 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Bullet 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Number 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Number 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Number 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Number 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Closing" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Signature" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" UnhideWhenUsed="false" Name="Default Paragraph Font" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text Indent" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Continue" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Continue 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Continue 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Continue 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="List Continue 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Message Header" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Salutation" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Date" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text First Indent" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text First Indent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Note Heading" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text Indent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Body Text Indent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Block Text" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Hyperlink" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="FollowedHyperlink" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Document Map" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Plain Text" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="E-mail Signature" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Normal (Web)" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Acronym" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Address" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Cite" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Code" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Definition" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Keyboard" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Preformatted" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Sample" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Typewriter" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="HTML Variable" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" UnhideWhenUsed="false" Name="Normal Table" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="annotation subject" ></w:LsdException>
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="No List" ></w:LsdException>
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="1 / a / i" ></w:LsdException>
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="1 / 1.1 / 1.1.1" ></w:LsdException>
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="Article / Section" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Simple 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Simple 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Simple 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Classic 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Classic 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Classic 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Classic 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Colorful 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Colorful 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Colorful 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Columns 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Columns 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Columns 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Columns 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Columns 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 7" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid 8" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 7" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table List 8" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table 3D effects 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table 3D effects 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table 3D effects 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Contemporary" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Elegant" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Professional" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Subtle 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Subtle 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Web 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Web 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Web 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Balloon Text" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid" ></w:LsdException>
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" Name="Table Theme" ></w:LsdException>
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="Placeholder Text" ></w:LsdException>
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="No Spacing" ></w:LsdException>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading" ></w:LsdException>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List" ></w:LsdException>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid" ></w:LsdException>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List" ></w:LsdException>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading" ></w:LsdException>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List" ></w:LsdException>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid" ></w:LsdException>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="List Paragraph" ></w:LsdException>
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="Quote" ></w:LsdException>
<w:LsdException Locked="false" Priority="99" SemiHidden="false" Name="Intense Quote" ></w:LsdException>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1" ></w:LsdException>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2" ></w:LsdException>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3" ></w:LsdException>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4" ></w:LsdException>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5" ></w:LsdException>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6" ></w:LsdException>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6" ></w:LsdException>
</w:LatentStyles></xml><![endif]--><style>
@font-face{
font-family:"Times New Roman";
}
@font-face{
font-family:"<22><><EFBFBD><EFBFBD>";
}
@font-face{
font-family:"Wingdings";
}
@font-face{
font-family:"Calibri";
}
p.MsoNormal{
mso-style-name:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
mso-style-parent:"";
margin:0pt;
margin-bottom:.0001pt;
mso-pagination:none;
text-align:justify;
text-justify:inter-ideograph;
font-family:Calibri;
mso-fareast-font-family:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';
font-size:10.5000pt;
mso-font-kerning:1.0000pt;
}
span.10{
font-family:'Times New Roman';
}
span.msoIns{
mso-style-type:export-only;
mso-style-name:"";
text-decoration:underline;
text-underline:single;
color:blue;
}
span.msoDel{
mso-style-type:export-only;
mso-style-name:"";
text-decoration:line-through;
color:red;
}
table.MsoNormalTable{
mso-style-name:<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
mso-style-parent:"";
mso-style-noshow:yes;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-padding-alt:0.0000pt 5.4000pt 0.0000pt 5.4000pt;
mso-para-margin:0pt;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-family:'Times New Roman';
font-size:10.0000pt;
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;
}
@page{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}@page Section0{
margin-top:72.0000pt;
margin-bottom:72.0000pt;
margin-left:90.0000pt;
margin-right:90.0000pt;
size:595.3000pt 841.9000pt;
layout-grid:15.6000pt;
mso-header-margin:42.5500pt;
mso-footer-margin:49.6000pt;
}
div.Section0{page:Section0;}</style></head><body style="tab-interval:21pt;text-justify-trim:punctuation;" ><!--StartFragment--><div class="Section0" style="layout-grid:15.6000pt;" ><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD></font>ABBIDOT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD>лʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD></font><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>򡰱<EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD>Ʒ<EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒǰ<EFBFBD><EFBFBD>ϸ<EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>ơ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD>IJ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۰<EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ס<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κι<EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><EFBFBD>ʹ<EFBFBD>ö<EFBFBD><EFBFBD>޽<EFBFBD><EFBFBD>ľ<EFBFBD><EFBFBD>з<EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD>ܻ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҽ<EFBFBD><EFBFBD>Թ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>ʽ<EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣʹ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ñ<EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD>ɽ<EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ѽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><EFBFBD>º<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" >һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD></font>18<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ø<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>󣬲<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD>ض<EFBFBD>ƽ̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع涨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>18<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(1<><31><EFBFBD><EFBFBD><E1B9A9>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>׼ȷ<D7BC><C8B7><EFBFBD><EFBFBD><EFBFBD>µĸ<C2B5><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD>ע<EFBFBD>ᡣ(2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ί<EFBFBD><CEAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>˻<EFBFBD><CBBB><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(3<><33><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>˻<EFBFBD><CBBB>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ<CDA8><D6AA><EFBFBD>ǡ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(5<><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κκ<CEBA><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ񾭹<C7B7><F1BEADB9><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><E2A1A3><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޶<EFBFBD><DEB6>ڣ<EFBFBD><DAA3>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Ȩʹ<C8A8><CAB9><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ</font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Ʒ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD>ͼ<EFBFBD>Ρ<EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¡<EFBFBD><C2A1><EFBFBD><EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5BBAD>Ӧ<EFBFBD>ó<EFBFBD><C3B3>򡢽<EFBFBD><F2A1A2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>Ϊ<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD>Ȩʹ<C8A8>õĵ<C3B5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>̱ꡢר<EAA1A2><D7A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ˵<C8B7><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̱ꡢ<CCB1><EAA1A2>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD>ۡ<EFBFBD><DBA1><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺͱ<C6BA>־<EFBFBD><D6BE><EFBFBD>ƣ<EFBFBD>Ϊ<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>С<EFBFBD>ע<EFBFBD><D7A2><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɡ<EFBFBD><C9A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>IJ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA>̱ꡢ<CCB1><EAA1A2>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD>ۡ<EFBFBD><DBA1><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD>ɻ<EFBFBD><C9BB>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(3<><33><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><E2B2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>κδ<CEBA><CEB4>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD><D8BB><EFBFBD>ӡ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD>Χ<EFBFBD>ڣ<EFBFBD><DAA3>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵ġ<CBB5><C4A1><EFBFBD><EFBFBD>޵ġ<DEB5><C4A1><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>õġ<C3B5><C4A1><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ɵġ<C9B5><C4A1>ɳ<EFBFBD><C9B3><EFBFBD><EFBFBD>Ľ<EFBFBD>Ϊ<EFBFBD><CEAA>Ԥ<EFBFBD><D4A4>ʹ<EFBFBD><CAB9>Ŀ<EFBFBD><C4BF><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޶<EFBFBD><DEB6>ڷ<EFBFBD><DAB7>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD>ز<EFBFBD>ʹ<EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA>̱<EFBFBD><CCB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ʶ<D6AA><CAB6>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>ȨȨ<C8A8><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>޸<EFBFBD><DEB8><EFBFBD>ʹ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(5<><35><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0B6BD><EFBFBD><EFBFBD>ʹ<EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>κ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵķ<DDB5><C4B7><EFBFBD>Ȩ<EFBFBD>޵<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><CEA5><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>֪ʶ<D6AA><CAB6>Ȩ<EFBFBD><C8A8>ɾ<EFBFBD><C9BE><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ݵ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޵<EFBFBD>ʹ<EFBFBD><CAB9>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>κ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>ķ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(6<><36><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>ص<EFBFBD><D8B5>ض<EFBFBD>ʹ<EFBFBD><CAB9>Ȩ<EFBFBD><C8A8><EFBFBD>⣬δ<E2A3AC><CEB4><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><E2A3AC>ʹ<EFBFBD>á<EFBFBD><C3A1><EFBFBD><EFBFBD>ơ<EFBFBD><C6A1><EFBFBD><E0BCAD><EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD><D8A1><EFBFBD><EFBFBD><EFBFBD><EBA1A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۡ<EFBFBD><DBA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>κη<CEBA>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ݡ<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Ȩʹ<C8A8><CAB9><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD>»<EFBFBD><C2BB><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>غʹ<D8BA><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>Դ˲<D4B4><CBB2>е<EFBFBD><D0B5>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>Ρ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD>ƽ̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD></font><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD>ƽ̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD>κδ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(2<><32><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8>κη<CEBA><CEB7><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD>ص<EFBFBD>Υ<EFBFBD><CEA5><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>Ф<EFBFBD><D0A4>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD><DAB0><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>;<EFBFBD><CDBE><EFBFBD>ڵ<EFBFBD><DAB5>κ<EFBFBD>Υ<EFBFBD><CEA5><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><CEA5><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD><C6A1>޸ġ<DEB8><C4A1><EFBFBD><EFBFBD><EFBFBD><EBA1A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7>ת<EFBFBD><D7AA><EFBFBD>ɡ<EFBFBD><C9A1>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD>õ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD>ѱ<EFBFBD>ת<EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>θ<EFBFBD><CEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2B7A2><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ƽ̨<C6BD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݾ<EFBFBD><DDBE>ڷDZ<DAB7><C7B1>ܵĻ<DCB5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>õġ<C3B5><C4A1>Ƕ<EFBFBD><C7B6>ҵġ<D2B5><C4A1><EFBFBD>ת<EFBFBD>õġ<C3B5><C4A1><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ɵġ<C9B5><C4A1><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD>ġ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>Χ<E7B7B6><CEA7><EFBFBD><EFBFBD><EFBFBD>ɡ<EFBFBD><C9A1><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>κ<EFBFBD>Ŀ<EFBFBD><C4BF>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸Ļ<DEB8><C4BB>Ľ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD>ġ<EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD>Ϊרҵ<EFBFBD><EFBFBD>ƽ̨<EFBFBD><EFBFBD><EFBFBD>߱<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(1<><31><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Ȩɸѡ<C9B8><D1A1><EFBFBD><EFBFBD><E0B6BD>ɾ<EFBFBD><C9BE><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٱ<EFBFBD><D9B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߡ<EFBFBD><DFA1><EFBFBD>֤Υ<D6A4><CEA5><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(2<><32><EFBFBD><EFBFBD><EFBFBD>𷢲<EFBFBD><F0B7A2B2>κ<EFBFBD>Υ<EFBFBD><CEA5><EFBFBD>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1>󵼵ġ<F3B5BCB5>ɧ<EFBFBD>ŵġ<C5B5>ɫ<EFBFBD><C9AB><EFBFBD>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵġ<D3B5><C4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵĻ<D3B5><C4BB><EFBFBD><EFBFBD>˷<EFBFBD><CBB7>еġ<D0B5><C4A1><EFBFBD>ǡ<EFBFBD><C7A1><EFBFBD>Ļ<EFBFBD>Υ<EFBFBD><CEA5><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7>ɷ<EFBFBD><C9B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD><EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κξ<CEBA><CEBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(3<><33><EFBFBD><EFBFBD><EFBFBD>𷢲<EFBFBD><F0B7A2B2>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>δӵ<CEB4><D3B5>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3>ֻ<EFBFBD><D6BB><EFBFBD><E1B5BD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD>ɡ<EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(4<><34><EFBFBD><EFBFBD><EFBFBD>𷢲<EFBFBD><F0B7A2B2>κο<CEBA><CEBF><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><E7BBB0><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" >Ϣ<EFBFBD><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(5<><35><EFBFBD><EFBFBD><EFBFBD>𷢲<EFBFBD><F0B7A2B2>κι<CEBA><CEB9><EFBFBD><E6A1A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κε<CEBA><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EEB6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>Ȩ<EFBFBD><C8A8></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(6<><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>¡<EFBFBD>αװ<CEB1><D7B0><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>֯<EFBFBD><D6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(7<><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA>Զ<EFBFBD>ץȡ<D7A5><C8A1><EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>ݲɼ<DDB2><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(8<><38><EFBFBD><EFBFBD><EFBFBD>𷢲<EFBFBD><F0B7A2B2>κο<CEBA><CEBF>ܹ<EFBFBD><DCB9>ܡ<EFBFBD><DCA1><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>۸<EFBFBD>ƽ̨<C6BD><CCA8>ȫϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD>κο<CEBA><CEBF>ܸ<EFBFBD><DCB8>š<EFBFBD><C5A1>𻵡<EFBFBD><F0BBB5A1><EFBFBD><EFBFBD>ơ<EFBFBD>ʹ<EFBFBD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD>ݡ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ</font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD>ý<EFBFBD>ƽ̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܹ<EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ƽ̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD>Ͽɡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>߻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ге<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD>ա<EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(1<><31><EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>IJ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD><EFBFBD><E6BCB0><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7>ա<EFBFBD>(2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>κ<EFBFBD><CEBA><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD><E6BCB0><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7>ա<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(3<><33><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ӳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD>֤ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵġ<CFB5><C4A1>޲<EFBFBD><DEB2><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1>κδ<CEBA><CEB4>󶼽<EFBFBD><F3B6BCBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD>û<EFBFBD><C3BB><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(4<><34><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ӳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>ʽ<EFBFBD>ij<EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7>񼰲<EFBFBD>Ʒ<EFBFBD><C6B7>׼ȷ<D7BC>ԡ<EFBFBD><D4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԡ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>ԡ<EFBFBD><D4A1>ɿ<EFBFBD><C9BF>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>ŵ<EFBFBD><C5B5></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(5<><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޶<EFBFBD><DEB6>ڣ<EFBFBD><DAA3>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BCB0><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>ͨ<EFBFBD><CDA8>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>ȡ<EFBFBD>û<EFBFBD><C3BB>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>֤<EFBFBD><D6A4><EFBFBD>𣬰<EFBFBD><F0A3ACB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8>ʵ<EFBFBD><CAB5><EFBFBD>ԡ<EFBFBD><D4A1><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD><CDBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD>Եı<D4B5>֤<EFBFBD><D6A4></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(6<><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޶<EFBFBD><DEB6>ڣ<EFBFBD><DAA3>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD>Ĺ<EFBFBD><C4B9>ܿ<EFBFBD><DCBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><DCB5>κ<EFBFBD><CEBA><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>е<EFBFBD><D0B5>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>Ρ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(7<><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޶<EFBFBD><DEB6>ڣ<EFBFBD><DAA3>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><E0BBA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><DCB5>κ<EFBFBD><CEBA><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>е<EFBFBD><D0B5>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>Ρ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(8<><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޶<EFBFBD><DEB6>ڣ<EFBFBD><DAA3>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD>ϵ<EFBFBD><CFB5>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ݾ<EFBFBD><DDBE><EFBFBD><EFBFBD>е<EFBFBD><D0B5>κ<EFBFBD><CEBA><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD>Ρ<EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(9<><39><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA>û<EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A3AC><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD>о<EFBFBD><D0BE><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>Χ<EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(11<31><31><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵķ<C7B5><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD><C7A3><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD>κν<CEBA><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD>ߡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ</font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(1<><31><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>ʱ<EFBFBD><EFBFBD><E4B2BB>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD>޸<EFBFBD><DEB8>κ<EFBFBD><CEBA>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼƻ<DBBC><C6BB><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7>ɣ<EFBFBD><C9A3>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2>е<EFBFBD><D0B5>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD>κ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>ԭ<EFBFBD>򶳽ᡢ<F2B6B3BD><E1A1A2>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κη<CEBA><CEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>ȫ<EFBFBD><C8AB><EFBFBD>򲿷ַ<F2B2BFB7><D6B7><EFBFBD><EFBFBD>͹<EFBFBD><CDB9>ܡ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<E2B2A2><EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ƽ̨<C6BD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD>ijЩ<C4B3><D0A9><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<DABB><EEB6AF>Ҫ<EFBFBD>л<EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʻ<EFBFBD><CABB><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>ݡ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>ֹͣʹ<D6B9><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB>Ч<EFBFBD><D0A7></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(1<><31><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵķ<C7B5><C4B7><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5>κ<EFBFBD><CEBA>𺦡<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(2<><32><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><E2B3A5>Ϊ֮<CEAA><EFBFBD><EFBFBD><E7BBA4>ʹ<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>¡<EFBFBD><C2A1><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD>̼<EFBFBD><CCBC><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7>ʹ<EFBFBD>á<EFBFBD><C3A1><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD>ػ<EFBFBD><D8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>κ<EFBFBD>Υ<EFBFBD><CEA5><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κη<CEBA><CEB7>ɻ<EFBFBD><C9BB>κε<CEBA><CEB5><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>κη<CEBA>ʽ<EFBFBD><CABD>֮<EFBFBD><D6AE><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>Ρ<EFBFBD><CEA1><EFBFBD><EFBFBD><EFBFBD><E2A1A2>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʦ<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ̳<C4BC><CCB3>ˡ<EFBFBD><CBA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߡ<EFBFBD><DFA1>а<EFBFBD><D0B0>ˡ<EFBFBD><CBA1>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>׷<EFBFBD><D7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>ƽ̨<C6BD>йص<D0B9><D8B5><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(3<><33><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>û<EFBFBD><C3BB>޷<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ƽ̨<C6BD><CCA8>ͨ<EFBFBD><CDA8>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵĻ<CFB5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µģ<C2B5><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><CEBC>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EEB6AF><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><CEBC>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨ʹ<CCA8><CAB9><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD><EFBFBD>μ<EFBFBD><CEBC>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӵġ<D3B5><C4A1><EFBFBD><EFBFBD>ӵġ<D3B5>żȻ<C5BC>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD>𺦳е<F0BAA6B3><D0B5><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD>ʹ<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɴ<EFBFBD><C9B4><EFBFBD><EFBFBD>𺦡<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(4<><34><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>Ρ<EFBFBD><CEA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𺦵<EFBFBD>Ψһ<CEA8><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʩ<EFBFBD><CAA9>ֹͣʹ<D6B9>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ø<EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5>κ<EFBFBD><CEBA>𺦻<EFBFBD><F0BAA6BB><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><E2B3A5><EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD><31><D4AA><EFBFBD><EFBFBD><EFBFBD>ҡ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD>š<EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϽȨ</font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۰<EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ס<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κι<EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(1<><31><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD>й<EFBFBD><D0B9><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><CBBE>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>й<EFBFBD>ϽȨ<CFBD><C8A8></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(2<><32><EFBFBD><EFBFBD>ͬ<EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA1A2>˽<EFBFBD><CBBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ܵ<EFBFBD><DCB5>й<EFBFBD><D0B9><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7>ɹ<EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>кͽ<D0BA><CDBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7>ɡ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD>ִ<EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>飬˫<E9A3AC><CBAB>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD>Э<EFBFBD>̽<EFBFBD><CCBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>̲<EFBFBD><CCB2><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>κ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>ס<EFBFBD><D7A1><EFBFBD>صķ<D8B5>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" >ʮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(1<><31><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>Χ<EFBFBD><CEA7>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ӷ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>֪ͨ<CDA8><D6AA>Э<EFBFBD><EFBFBD><E9A1A2><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ž<EFBFBD><C5BE><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(2<><32><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>񣬳<EFBFBD><F1A3ACB3>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й涨<D0B9><E6B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2BDAB><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" >(3<><33><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5>κβ<CEBA><CEB2>ֱ<EFBFBD><D6B1>϶<EFBFBD>Ϊ<EFBFBD><CEAA>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ಿ<EFBFBD><E0B2BF>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal style="mso-pagination:widow-orphan;text-align:left;mso-line-height-alt:12pt;" ><span style="mso-spacerun:'yes';font-family:<3A><><EFBFBD><EFBFBD>;font-size:10.5000pt;
mso-font-kerning:0.0000pt;" ><font face="<22><><EFBFBD><EFBFBD>" ><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></font>0755-86352225<32><35></span><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal ><span style="mso-spacerun:'yes';font-family:Calibri;mso-fareast-font-family:<3A><><EFBFBD><EFBFBD>;
mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;" ><o:p>&nbsp;</o:p></span></p></div><!--EndFragment--></body></html>

View File

@@ -0,0 +1,77 @@
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=gb2312" ><meta name=ProgId content=Word.Document ><meta name=Generator content="Microsoft Word 14" ><meta name=Originator content="Microsoft Word 14" ><title></title></head>
<body>
<div>
<h3>1. Acceptance of Terms</h3>
<p>By downloading, installing, and using the ABBIDOT mobile application ("App"), you agree to be bound by these Terms and Conditions ("Terms"). If you do not agree to these Terms, do not use the App.</p>
<h3>2. Use of the App</h3>
<ul>
<li>Eligibility: You must be at least 13 years old to use the App. By using the App, you represent and warrant that you meet this eligibility requirement.</li>
<li>License: ABBI PET INC grants you a limited, non-exclusive, non-transferable, and revocable license to use the App for personal, non-commercial use only.</li>
<li>Restrictions: You agree not to:</li>
</ul>
<ul>
<li>Modify, reverse engineer, decompile, or disassemble the App.</li>
<li>Use the App for any unlawful purpose or in any way that could harm ABBI PET INC or its users.</li>
<li>Access or use the App to build a competing service or product.</li>
</ul>
<h3>3. Accounts and Security</h3>
<ul>
<li>Account Creation: To use certain features of the App, you may need to create an account. You agree to provide accurate and complete information during the registration process.</li>
<li>Account Security: You are responsible for maintaining the confidentiality of your account credentials and for all activities that occur under your account. You agree to notify ABBI PET INC immediately of any unauthorized use of your account.</li>
</ul>
<h3>4. Privacy</h3>
<p>Your use of the App is also governed by our Privacy Policy, which is incorporated by reference into these Terms. Please review our Privacy Policy to understand our practices regarding your information.</p>
<h3>5. User Content</h3>
<ul>
<li>Ownership: You retain ownership of any content you submit or post through the App ("User Content"). By submitting User Content, you grant ABBI PET INC a worldwide, non-exclusive, royalty-free license to use, reproduce, distribute, and display your User Content in connection with the App.</li>
<li>Responsibility: You are solely responsible for your User Content. You agree not to post content that is illegal, harmful, or violates the rights of others.</li>
</ul>
<h3>6. Intellectual Property</h3>
<p>All content, features, and functionality of the App, including but not limited to text, graphics, logos, and software, are the exclusive property of ABBI PET INC or its licensors and are protected by copyright, trademark, and other intellectual property laws.</p>
<h3>7. Termination</h3>
<p>ABBI PET INC may terminate or suspend your access to the App at any time, without prior notice or liability, for any reason, including if you breach these Terms. Upon termination, your right to use the App will immediately cease.</p>
<h3>8. Disclaimers and Limitation of Liability</h3>
<ul>
<li>Disclaimers: The App is provided "as is" and "as available" without warranties of any kind, either express or implied. ABBI PET INC does not warrant that the App will be uninterrupted or error-free.</li>
<li>Limitation of Liability: To the maximum extent permitted by law, ABBI PET INC shall not be liable for any indirect, incidental, special, or consequential damages arising out of or in connection with your use of the App.</li>
</ul>
<h3>9. Governing Law</h3>
<p>These Terms shall be governed by and construed in accordance with the laws of the State of Texas, without regard to its conflict of law principles.</p>
<h3>10. Changes to Terms</h3>
<p>ABBI PET INC reserves the right to modify these Terms at any time. We will notify you of any changes by posting the new Terms within the App. Your continued use of the App after the changes become effective constitutes your acceptance of the new Terms.</p>
<h3>11. Data Confidentiality</h3>
<p>We are committed to maintaining the confidentiality of your data. We employ the following measures to ensure data protection:</p>
<ul>
<li>Confidentiality Agreements: All employees and third-party service providers who have access to your data are required to sign confidentiality agreements.</li>
<li>Data Anonymization: Where possible, we anonymize your data to protect your privacy.</li>
<li>Data Retention Policy: We retain your data only as long as necessary for the purposes outlined in our Privacy Policy, after which it is securely deleted or anonymized.</li>
</ul>
<h3>12. Contact Us</h3>
<p>If you have any questions about these Terms, please contact us at:</p>
<p>ABBI PET INC</p>
<p>10700 Richmond Ave Suite 143</p>
<p>Houston, TX 77042</p>
<p>Email: support@abbidot.com</p>
</div></body></html>

View File

@@ -0,0 +1,94 @@
package com.abbidot.tracker
import android.app.ActivityManager
import android.app.Application
import android.os.Build
import android.os.Process
import androidx.appcompat.app.AppCompatDelegate
import coil.Coil
import coil.ImageLoader
import coil.decode.GifDecoder
import coil.decode.ImageDecoderDecoder
import com.abbidot.baselibrary.util.AppUtils
import com.abbidot.baselibrary.util.MMKVUtil
import com.hjq.toast.Toaster
import com.qmuiteam.qmui.arch.QMUISwipeBackActivityManager
import dagger.hilt.android.HiltAndroidApp
/**
*Created by .yzq on 2021/11/2/002.
* @link
* @description:Application
*/
@HiltAndroidApp
class MyApplication : Application() {
companion object {
lateinit var instance: Application
}
override fun onCreate() {
super.onCreate()
//强制浅色模式,使用 AppCompatDelegate 或 MaterialComponents 动态切换主题
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
initInMainProcess {
instance = this
AppUtils.syncIsDebug(applicationContext)
QMUISwipeBackActivityManager.init(this)
MMKVUtil.init(this)
// 初始化 Toast 框架
Toaster.init(this)
Toaster.setView(R.layout.toast_my_layout)
// JPushInterface.setDebugMode(true)
// JPushInterface.init(this)
// if (!AppUtils.isDebug()) {
// //腾讯bugly初始化
// CrashReport.initCrashReport(applicationContext, "06fc0a9cd1", AppUtils.isDebug())
// }
// //同意协议
// SDKInitializer.setAgreePrivacy(this, true)
//// LocationClient.setAgreePrivacy(true);
// //在使用SDK各组件之前初始化context信息传入ApplicationContext
// SDKInitializer.initialize(this)
// //自4.3.0起百度地图SDK所有接口均支持百度坐标和国测局坐标用此方法设置您使用的坐标类型.
// //包括BD09LL和GCJ02两种坐标默认是BD09LL坐标。
// SDKInitializer.setCoordType(CoordType.GCJ02)
// if (!AppUtils.isChina()) {
// MapboxSearchSdk.initialize(application = this,
// accessToken = getString(R.string.mapbox_access_token),
// locationEngine = LocationEngineProvider.getBestLocationEngine(this))
// }
//设置支持加载gif
val imageLoader = ImageLoader.Builder(this).componentRegistry {
if (Build.VERSION.SDK_INT >= 28) {
add(ImageDecoderDecoder(this@MyApplication))
} else {
add(GifDecoder())
}
}.build()
//设置全局唯一实例
Coil.setImageLoader(imageLoader)
}
}
/**
* 主进程初始化
*/
private fun initInMainProcess(block: () -> Unit) {
val activityManager = getSystemService(ACTIVITY_SERVICE) as ActivityManager
val myPId = Process.myPid()
val mainProcessName = packageName
activityManager.runningAppProcesses.forEach {
if (it.pid == myPId && it.processName == mainProcessName) {
block()
}
}
}
}

View File

@@ -0,0 +1,47 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.view.View
import coil.load
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.DataBean
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.util.ViewUtil
/**
*Created by .yzq on 2024/5/30/030.
* @link
* @description:
*/
class AssignOptionsAdapter(
ctx: Context, list: MutableList<DataBean>?
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_bottom_sheet_add_layout
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
val circleImageView = holder!!.getImageView(R.id.il_bottom_sheet_circle_image)
val wrapImageView = holder.getImageView(R.id.il_bottom_sheet_wrap_image)
val name = holder.getTextView(R.id.tv_bottom_sheet_name)
name.text = item.name
if (position == 0) {
circleImageView.visibility = View.GONE
wrapImageView.visibility = View.GONE
} else {
//处理设备类型
if (item.menuType == ConstantInt.SpecialType) {
wrapImageView.visibility = View.VISIBLE
circleImageView.visibility = View.GONE
wrapImageView.load(R.drawable.icon_tracker_device_small)
} else {
circleImageView.visibility = View.VISIBLE
wrapImageView.visibility = View.GONE
ViewUtil.instance.setPetTypeHead(circleImageView, item.value, item.menuType)
}
}
}
}

View File

@@ -0,0 +1,24 @@
package com.abbidot.tracker.adapter
import android.content.Context
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.baidu.mapapi.search.core.PoiInfo
/**
*Created by .yzq on 2022/7/4/004.
* @link
* @description:百度地图搜索地址返回结果
*/
class BaiduMapPoiSearchResultAdapter(ctx: Context, list: MutableList<PoiInfo>?) :
BaseRecyclerAdapter<PoiInfo>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_baidu_map_poi_result
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: PoiInfo) {
holder!!.setText(R.id.baidu_map_poi_name, item.name)
holder.setText(R.id.baidu_map_poi_address, item.address)
}
}

View File

@@ -0,0 +1,90 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.content.Intent
import android.view.View
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.PetBean
import com.abbidot.tracker.constant.ConstantString
import com.abbidot.tracker.ui.activity.pet.PetProfileActivity
import com.abbidot.tracker.util.ViewUtil
import com.abbidot.tracker.widget.TypefaceRoundButton
/**
*Created by .yzq on 2022/1/8/008.
* @link
* @description:切换宠物列表弹窗适配器
*/
class ChangePetListDialogAdapter(ctx: Context, list: MutableList<PetBean>?) :
BaseRecyclerAdapter<PetBean>(ctx, list) {
private var mOnChangeClickListener: OnChangeClickListener? = null
//选中的宠物下标
private var mSelectPetPos = 0
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_my_pet_dialog
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: PetBean) {
val current =
holder!!.itemView.findViewById<TypefaceRoundButton>(R.id.dialog_my_pet_current_btn)
val change =
holder.itemView.findViewById<TypefaceRoundButton>(R.id.dialog_my_pet_change_btn)
holder.setText(R.id.dialog_my_pet_name, item.petName)
holder.getImageView(R.id.dialog_my_pet_head).apply {
ViewUtil.instance.setPetTypeHead(this, item.imgurl, item.petType)
setOnClickListener {
if (null != mOnChangeClickListener) {
mOnChangeClickListener!!.onCurrentClick()
}
val intent = Intent(mContext, PetProfileActivity::class.java)
intent.putExtra(ConstantString.Edit, true)
intent.putExtra(ConstantString.Pet, item)
mContext.startActivity(intent)
}
}
if (position == mSelectPetPos) {
current.visibility = View.VISIBLE
change.visibility = View.GONE
} else {
current.visibility = View.GONE
change.visibility = View.VISIBLE
}
current.setChangeAlphaWhenPress(true)
current.setOnClickListener {
if (null != mOnChangeClickListener) {
mOnChangeClickListener!!.onCurrentClick()
}
}
change.setChangeAlphaWhenPress(true)
change.setOnClickListener {
mSelectPetPos = position
notifyItemRangeChanged(0, getData().size)
if (null != mOnChangeClickListener) {
mOnChangeClickListener!!.onChangeClick(position)
}
}
}
fun setSelectPetPos(position: Int) {
mSelectPetPos = position
}
fun setOnChangeClickListener(onChangeClickListener: OnChangeClickListener) {
mOnChangeClickListener = onChangeClickListener
}
interface OnChangeClickListener {
fun onCurrentClick()
fun onChangeClick(position: Int)
}
}

View File

@@ -0,0 +1,82 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.graphics.Paint
import android.view.View
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.baselibrary.util.Utils
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.PackageBean
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.constant.ConstantString
/**
*Created by .yzq on 2024/8/6/006.
* @link
* @description:
*/
class ChoosePlanAdapter(
ctx: Context, list: MutableList<PackageBean>?
) : BaseRecyclerAdapter<PackageBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_choose_plan_layout
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: PackageBean) {
holder?.apply {
getView(R.id.rl_choose_plan_shade_item).let {
if (item.selected) it.setBackgroundResource(R.drawable.shape20_yellow_border_cyan_bg)
else it.setBackgroundResource(0)
}
setText(R.id.tv_choose_plan_item_name, item.planName)
val price = if (item.discountedPrice > 0) item.discountedPrice else item.planPrice
getTextView(R.id.tv_choose_plan_item_money).apply {
text = if (item.mealUnit == ConstantString.PackageUnitMonth) {
String.format(
mContext.getString(R.string.txt_money_unit), Utils.formatDecimal(price, 2)
)
} else {
val monthPrice = Utils.formatDecimal(price / (item.period * 12), 2)
String.format(mContext.getString(R.string.txt_money_unit), monthPrice)
}
}
getTextView(R.id.tv_choose_plan_item_year_money).let {
it.text = String.format(
mContext.getString(R.string.txt_money_unit),
Utils.formatDecimal(item.discountedPrice, 2)
)
it.visibility = if (item.discount > 0) View.VISIBLE
else View.GONE
}
getTextView(R.id.tv_choose_plan_item_discount_money).let {
it.text = String.format(
mContext.getString(R.string.txt_money_unit),
Utils.formatDecimal(item.planPrice, 2)
)
it.paint.flags = Paint.STRIKE_THRU_TEXT_FLAG
it.visibility = if (item.discount > 0) View.VISIBLE
else View.GONE
}
getView(R.id.ll_choose_plan_item_discount_percent).let {
it.visibility = if (item.discount > 0) View.VISIBLE
else View.GONE
}
getTextView(R.id.tv_choose_plan_item_discount_percent).let {
it.text = "${item.discount}%"
}
getView(R.id.cv_choose_plan_item_popular).let {
if (item.popularType == ConstantInt.Type1) it.visibility = View.VISIBLE
else it.visibility = View.GONE
}
}
}
}

View File

@@ -0,0 +1,53 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.view.View
import android.widget.RelativeLayout
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.CreditCardBean
import com.abbidot.tracker.ui.activity.subscribe.PaymentMethodActivity
import com.abbidot.tracker.ui.fragment.subscribe.CreditCardPaymentFragment
import com.abbidot.tracker.util.Util
import com.abbidot.tracker.widget.TypefaceRoundButton
/**
*Created by .yzq on 2024/3/21/021.
* @link
* @description:
*/
class CreditCardAdapter(
ctx: Context, list: MutableList<CreditCardBean>?
) : BaseRecyclerAdapter<CreditCardBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = R.layout.layout_credit_card_no_data
override fun getItemLayoutId(viewType: Int) = R.layout.item_credit_card_layout
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: CreditCardBean) {
val relativeLayout = holder!!.itemView as RelativeLayout
val primary = holder.getView(R.id.rb_credit_card_primary_item) as TypefaceRoundButton
if (item.checked) {
relativeLayout.setBackgroundResource(R.drawable.shape8_dark_border_pale_yellow_bg)
} else {
relativeLayout.setBackgroundResource(R.drawable.shape8_dark_gray_border_white_yellow_bg)
}
primary.visibility = if (item.isPrimary) View.VISIBLE else View.GONE
holder.getTextView(R.id.tv_credit_card_number_item).apply {
val formatCardNumber = Util.formatCardNumber(item.cardNumber)
val cardLogoImageId = Util.getCreditCardType(item.cardNumber)
text = formatCardNumber
if (cardLogoImageId == 0) setCompoundDrawablesWithIntrinsicBounds(
0, 0, 0, 0
)
else setCompoundDrawablesWithIntrinsicBounds(
cardLogoImageId, 0, 0, 0
)
}
holder.getView(R.id.iv_credit_card_edit_btn).setOnClickListener {
(((mContext as PaymentMethodActivity).mFragments[0]) as CreditCardPaymentFragment).goEditCard(
item
)
}
}
}

View File

@@ -0,0 +1,39 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.view.View
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.DFUStateBean
/**
*Created by .yzq on 2023/4/17/017.
* @link
* @description:
*/
class DFUStateAdapter(
ctx: Context, list: MutableList<DFUStateBean>?
) : BaseRecyclerAdapter<DFUStateBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_tracker_dfu_state
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DFUStateBean) {
val textView = holder!!.getTextView(R.id.item_dfu_state_name)
val stateName = if (item.progress in 1..100) {
"${item.stateName}${item.progress}%"
} else {
item.stateName
}
textView.text = stateName
if (position == getData().size - 1) {
holder.getView(R.id.item_dfu_state_progress).visibility = View.VISIBLE
holder.getView(R.id.item_dfu_state_ok).visibility = View.GONE
} else {
holder.getView(R.id.item_dfu_state_progress).visibility = View.GONE
holder.getView(R.id.item_dfu_state_ok).visibility = View.VISIBLE
}
}
}

View File

@@ -0,0 +1,52 @@
package com.abbidot.tracker.adapter
import android.content.Context
import androidx.appcompat.widget.AppCompatCheckBox
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.DataBean
import com.abbidot.tracker.ui.activity.device.set.LiveDurationSetActivity
import com.abbidot.tracker.ui.activity.device.set.TrackingDurationSetActivity
/**
*Created by .yzq on 2024/6/7/007.
* @link
* @description:
*/
class DurationSetAdapter(
ctx: Context, list: MutableList<DataBean>?
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
private var mTrackingDurationSetActivity: TrackingDurationSetActivity? = null
private var mLiveDurationSetActivity: LiveDurationSetActivity? = null
init {
if (ctx is TrackingDurationSetActivity) {
mTrackingDurationSetActivity = ctx
} else if (ctx is LiveDurationSetActivity) {
mLiveDurationSetActivity = ctx
}
}
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_duration_set_layout
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
holder!!.setText(R.id.tv_duration_name_item, item.name)
val checkBox = holder.getView(R.id.cb_duration_set_check) as AppCompatCheckBox
checkBox.apply {
isChecked = item.selected
setOnCheckedChangeListener(null)
setOnClickListener {
isChecked = item.selected
if (mContext is TrackingDurationSetActivity) {
mTrackingDurationSetActivity?.setTrackingDuration(position)
} else if (mContext is LiveDurationSetActivity) {
mLiveDurationSetActivity?.setLiveDuration(position)
}
}
}
}
}

View File

@@ -0,0 +1,38 @@
package com.abbidot.tracker.adapter
import android.content.Context
import androidx.core.content.ContextCompat
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.baselibrary.util.AppUtils
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.DataBean
import com.qmuiteam.qmui.widget.QMUIRadiusImageView
/**
*Created by .yzq on 2024/2/22/022.
* @link
* @description:
*/
class FamilyAvatarAdapter(
ctx: Context, list: MutableList<DataBean>?
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_invite_family_avatar_layout
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
val qMUIRadiusImageView =
holder!!.getView(R.id.il_invite_family_avatar_layout) as QMUIRadiusImageView
qMUIRadiusImageView.apply {
setImageResource(item.imageId)
borderColor = ContextCompat.getColor(mContext, R.color.select_color)
borderWidth = if (item.selected) {
AppUtils.dpToPx(2)
} else {
AppUtils.dpToPx(0)
}
}
}
}

View File

@@ -0,0 +1,63 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.view.View
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.FamilyBean
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.ui.activity.pet.FamilyMembersActivity
import com.qmuiteam.qmui.layout.QMUIButton
/**
*Created by .yzq on 2024/2/21/021.
* @link
* @description:
*/
class FamilyMembersAdapter(
ctx: Context, list: MutableList<FamilyBean>?
) : BaseRecyclerAdapter<FamilyBean>(ctx, list) {
private val mFamilyMembersActivity: FamilyMembersActivity
init {
mFamilyMembersActivity = ctx as FamilyMembersActivity
}
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_family_member_layout
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: FamilyBean) {
val activeState = holder!!.getView(R.id.tv_family_member_active_state)
val pendingState = holder.getView(R.id.tv_family_member_pending_state)
val resendBtn = holder.getView(R.id.btn_family_member_resend) as QMUIButton
val avatarImageView = holder.getImageView(R.id.il_family_member_head)
resendBtn.setChangeAlphaWhenPress(true)
if (item.status == ConstantInt.Open) {
activeState.visibility = View.VISIBLE
pendingState.visibility = View.GONE
resendBtn.visibility = View.GONE
} else {
activeState.visibility = View.INVISIBLE
pendingState.visibility = View.VISIBLE
resendBtn.visibility = View.VISIBLE
}
holder.setText(R.id.tv_family_member_email, item.acceptEmail)
val avatarImageResId = if (item.avatar == ConstantInt.Man) {
R.drawable.icon_family_boy_avatar
} else {
R.drawable.icon_family_girl_avatar
}
avatarImageView.setImageResource(avatarImageResId)
holder.setClickListener(R.id.iv_delete_family_member_btn, View.OnClickListener {
mFamilyMembersActivity.deleteFamily(item)
})
resendBtn.setOnClickListener {
mFamilyMembersActivity.resendFamily(item)
}
}
}

View File

@@ -0,0 +1,26 @@
package com.abbidot.tracker.adapter
import android.content.Context
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.DataBean
/**
*Created by .yzq on 2024/2/22/022.
* @link
* @description:
*/
class FamilyRelationAdapter(
ctx: Context, list: MutableList<DataBean>?
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_invite_family_relation_layout
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
holder!!.setText(R.id.tv_invite_family_relation_text, item.name)
holder.itemView.isSelected = item.selected
}
}

View File

@@ -0,0 +1,53 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.text.TextUtils
import android.view.View
import androidx.fragment.app.FragmentActivity
import coil.load
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.MenuTxtBean
import com.abbidot.tracker.ui.activity.help.FeedbackActivity
import java.io.File
/**
*Created by .yzq on 2022/3/23/023.
* @link
* @description:反馈上传的图片
*/
class FeedbackImageAdapter(
ctx: Context, activity: FragmentActivity, list: MutableList<MenuTxtBean>?
) : BaseRecyclerAdapter<MenuTxtBean>(ctx, list) {
private val mActivity = activity as FeedbackActivity
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_feedback_image
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: MenuTxtBean) {
val imageView = holder!!.getImageView(R.id.show_select_image)
val deleteView = holder.getTextView(R.id.delete_image_cancel)
if (TextUtils.isEmpty(item.imageUrl)) {
imageView.load(R.drawable.ico_photo)
deleteView.visibility = View.GONE
imageView.setOnClickListener {
// ViewUtil.instance.goSelectPhoto(
// mActivity,
// ResultCode.ResultCode_1,
// count = mActivity.mLimitPhotoCount - (getData().size - 1)
// )
}
} else {
imageView.setOnClickListener(null)
imageView.load(File(item.imageUrl))
deleteView.visibility = View.VISIBLE
deleteView.setOnClickListener {
val list = getData()
mActivity.deletePhoto(list, item)
}
}
}
}

View File

@@ -0,0 +1,74 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.content.res.ColorStateList
import android.view.View
import androidx.core.content.ContextCompat
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.FencesBean
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.util.ViewUtil
import com.abbidot.tracker.widget.TypefaceRoundButton
/**
*
*/
class FencesZoneAdapter(
ctx: Context, list: MutableList<FencesBean>?, isShowRightArrow: Boolean = true
) : BaseRecyclerAdapter<FencesBean>(ctx, list) {
private var isShowRightArrow = true
init {
this.isShowRightArrow = isShowRightArrow
}
override fun getEmptyLayoutId(viewType: Int) = R.layout.layout_virtual_fences_empty_view
override fun getItemLayoutId(viewType: Int) = R.layout.item_virtual_fences_layout
override fun noData(holder: RecyclerViewHolder?) {
holder?.apply {
getView(R.id.btn_empty_fences_add_safe_zone).visibility =
if (isShowNoDataAddButton) View.VISIBLE
else View.GONE
}
}
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: FencesBean) {
holder!!.getTextView(R.id.tv_virtual_fences_list_name).text = item.name
holder.getTextView(R.id.tv_virtual_fences_list_address).text = item.address
val fenceNameTypeImage = ViewUtil.instance.getFenceNameImageType(item.fenceNameType)
holder.getImageView(R.id.iv_virtual_fences_list_type).setImageResource(fenceNameTypeImage)
val typefaceButton =
holder.getView(R.id.tv_virtual_fences_list_switch_state) as TypefaceRoundButton
val switchText: String
val switchTextColor: Int
val switchStrokeColor = if (item.isOn == ConstantInt.Open) {
switchText = mContext.getString(R.string.txt_active)
switchTextColor = ContextCompat.getColor(mContext, R.color.green_color100)
ContextCompat.getColor(mContext, R.color.green_color100)
} else {
switchText = mContext.getString(R.string.txt_deactivate)
switchTextColor = ContextCompat.getColor(mContext, R.color.block_color2)
ContextCompat.getColor(mContext, R.color.white_gray_color1)
}
typefaceButton.apply {
text = switchText
setTextColor(switchTextColor)
setStrokeColors(ColorStateList.valueOf(switchStrokeColor))
}
if (isShowRightArrow) {
holder.getView(R.id.iv_virtual_fences_list_arrow_right).visibility = View.VISIBLE
} else {
holder.getView(R.id.iv_virtual_fences_list_arrow_right).visibility = View.INVISIBLE
}
}
}

View File

@@ -0,0 +1,81 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.view.View
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.DataBean
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.ui.activity.set.FirstPermissionsActivity
import com.abbidot.tracker.widget.TypefaceButton
/**
*Created by .yzq on 2024/3/25/025.
* @link
* @description:
*/
class FirstPermissionsAdapter(
ctx: Context, list: MutableList<DataBean>?
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
private val mPermissionsActivity = ctx as FirstPermissionsActivity
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_permission_state_layout
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
val stateView = holder!!.getImageView(R.id.cb_permission_state_item)
val typefaceTextView = holder.getTextView(R.id.tv_permission_tip_item)
val btnLayout = holder.getView(R.id.ll_permission_set_layout)
val btnSkip = holder.getView(R.id.btn_permission_skip_set) as TypefaceButton
val btnEnable = holder.getView(R.id.btn_permission_enable_set) as TypefaceButton
btnSkip.setChangeAlphaWhenPress(true)
btnEnable.setChangeAlphaWhenPress(true)
if (item.selected) {
typefaceTextView.visibility = View.VISIBLE
holder.itemView.setBackgroundResource(R.drawable.shape16_white_color_bg)
if (item.state == ConstantInt.Type1) {
btnLayout.visibility = View.GONE
} else {
btnLayout.visibility = View.VISIBLE
}
} else {
btnLayout.visibility = View.GONE
typefaceTextView.visibility = View.GONE
holder.itemView.setBackgroundResource(R.drawable.shape10_white_bg)
}
when (item.state) {
ConstantInt.SpecialType -> stateView.setImageResource(R.drawable.icon_permission_error_check_svg)
ConstantInt.Type0 -> stateView.setImageResource(R.drawable.icon_permission_no_check_svg)
ConstantInt.Type1 -> stateView.setImageResource(R.drawable.icon_permission_check_svg)
}
holder.setText(R.id.tv_permission_name_item, item.name)
typefaceTextView.text = item.value
btnSkip.setOnClickListener {
item.state = ConstantInt.SpecialType
item.selected = false
notifyItemChanged(position)
// if (position + 1 < getData().size) {
// getData()[position + 1].
// }
}
btnEnable.setOnClickListener {
when (position) {
0 -> mPermissionsActivity.mPermissionsCommon.operateBluetooth()
1 -> mPermissionsActivity.mPermissionsCommon.operateGPSLocation()
2 -> mPermissionsActivity.mPermissionsCommon.operateNotifications(
this, ConstantInt.SpecialType
)
}
}
mPermissionsActivity.updateNextBtnState()
}
}

View File

@@ -0,0 +1,57 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.graphics.Rect
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import com.qmuiteam.qmui.util.QMUIDisplayHelper
/**
*Created by .
* @link https://blog.csdn.net/Lee465357793/article/details/130830127
* @description:RecyclerView GridLayoutManager item间距设置两端对齐
* @param offset 控件的外边距,不使用屏幕宽度来计算
*/
class GridItemDecoration(
context: Context, spanCount: Int, private var itemWidth: Int, top: Int, bottom: Int, offset: Int
) : RecyclerView.ItemDecoration() {
private var mSpanCount = spanCount
private val mContext = context
private var mColumnSpacing = 0
private val mTop = top
private val mBottom = bottom
private val rvWidth by lazy {
QMUIDisplayHelper.getScreenWidth(mContext) - offset
}
init {
mColumnSpacing = (rvWidth - (itemWidth * mSpanCount)) / (mSpanCount - 1)
}
fun updateSpaceCount(count: Int) {
mSpanCount = count
mColumnSpacing = (rvWidth - (itemWidth * mSpanCount)) / (mSpanCount - 1)
}
override fun getItemOffsets(
outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State
) {
// 获取view 在adapter中的位置。
val position = parent.getChildAdapterPosition(view)
// view 所在的列
val column = position % mSpanCount
// column * (列间距 * (1f / 列数))
outRect.left = (column * mColumnSpacing / mSpanCount)
// 列间距 - (column + 1) * (列间距 * (1f /列数))
outRect.right = (mColumnSpacing - (column + 1) * mColumnSpacing / mSpanCount)
if (mTop > 0) {
outRect.top = mTop
}
if (mBottom > 0) {
outRect.bottom = mBottom
}
}
}

View File

@@ -0,0 +1,73 @@
package com.abbidot.tracker.adapter
import android.graphics.Typeface
import android.widget.ImageView
import androidx.appcompat.widget.AppCompatImageView
import androidx.core.content.ContextCompat
import com.abbidot.baselibrary.util.AppUtils
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.MenuTxtBean
import com.abbidot.tracker.constant.MultipleEntity
import com.abbidot.tracker.widget.TypefaceTextView
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder
/**
*Created by .yzq on 2024/8/12/012.
* @link
* @description:
*/
class HelpTextImageTypeAdapter(list: MutableList<MenuTxtBean>?) :
BaseMultiItemQuickAdapter<MenuTxtBean, BaseViewHolder>(list) {
init {
//加粗的标题文字
addItemType(MultipleEntity.TEXT, R.layout.layout_help_title1)
//只是图片的
addItemType(MultipleEntity.IMG, R.layout.layout_help_image)
//显示不同颜色的文字
addItemType(MultipleEntity.IMG_TEXT, R.layout.layout_help_title1)
//显示16sp大小的文字内容
addItemType(MultipleEntity.IMG_IMG, R.layout.layout_help_title1)
//显示14sp大小的文字内容
addItemType(MultipleEntity.IMG_TEXT_IMG, R.layout.layout_help_title2)
}
override fun convert(holder: BaseViewHolder, item: MenuTxtBean) {
// val position = getItemPosition(item)
when (item.itemType) {
MultipleEntity.TEXT -> {
// 创建一个Typeface对象指定加粗字体
val typefaceBold = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
holder.getView<TypefaceTextView>(R.id.tv_help_title_one).apply {
text = item.menuName
typeface = typefaceBold
}
holder.itemView.setPadding(0, AppUtils.dpToPx(8), 0, 0)
}
MultipleEntity.IMG_TEXT -> holder.getView<TypefaceTextView>(R.id.tv_help_title_one)
.apply {
text = item.menuName
setTextColor(ContextCompat.getColor(context, item.colorRedId))
}
MultipleEntity.IMG -> {
holder.getView<AppCompatImageView>(R.id.iv_help_image_type)
.setImageResource(item.imageId)
}
MultipleEntity.IMG_IMG -> {
holder.getView<TypefaceTextView>(R.id.tv_help_title_one).text = item.menuName
holder.itemView.setPadding(0, AppUtils.dpToPx(20), 0, 0)
}
MultipleEntity.IMG_TEXT_IMG -> {
holder.getView<TypefaceTextView>(R.id.tv_help_title_two).text = item.menuName
holder.itemView.setPadding(0, AppUtils.dpToPx(14), 0, 0)
}
}
}
}

View File

@@ -0,0 +1,167 @@
package com.abbidot.tracker.adapter
import android.content.Intent
import android.text.TextUtils
import androidx.core.content.ContextCompat
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.RecyclerView
import com.abbidot.tracker.R
import com.abbidot.tracker.base.BaseDialog
import com.abbidot.tracker.bean.MenuTxtBean
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.constant.MultipleEntity
import com.abbidot.tracker.ui.activity.HomeV2Activity
import com.abbidot.tracker.ui.activity.help.FeedbackActivity
import com.abbidot.tracker.ui.activity.help.HowWorkActivity
import com.abbidot.tracker.ui.activity.set.AboutActivity
import com.abbidot.tracker.ui.activity.set.AdvancedSetActivity
import com.abbidot.tracker.ui.activity.set.NotificationsSetActivity
import com.abbidot.tracker.ui.activity.set.PermissionsSetActivity
import com.abbidot.tracker.ui.common.UnitSelectDialog
import com.abbidot.tracker.ui.fragment.account.AccountV2Fragment
import com.abbidot.tracker.util.Util
import com.abbidot.tracker.util.ViewUtil
import com.abbidot.tracker.widget.TypefaceTextView
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.qmuiteam.qmui.widget.grouplist.QMUICommonListItemView
/**
*Created by .yzq on 2023/12/27/027.
* @link
* @description:
*/
class HomeAccountMenuAdapter(
accountV2Fragment: AccountV2Fragment, list: MutableList<MenuTxtBean>?
) : BaseMultiItemQuickAdapter<MenuTxtBean, BaseViewHolder>(list) {
private val mLogOutTipsType = 0
private val mClearCacheTipsType = 1
private val mCloseAccountTipsType = 2
private lateinit var mHomeV2Activity: HomeV2Activity
private lateinit var mUnitSelectDialog: UnitSelectDialog
private val mAccountV2Fragment = accountV2Fragment
init {
addItemType(MultipleEntity.TEXT, R.layout.item_title_text_type)
addItemType(MultipleEntity.IMG_TEXT, R.layout.item_qmui_common_item_view)
}
override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
super.onAttachedToRecyclerView(recyclerView)
mHomeV2Activity = context as HomeV2Activity
mUnitSelectDialog = UnitSelectDialog(context)
}
override fun convert(holder: BaseViewHolder, item: MenuTxtBean) {
val position = getItemPosition(item)
when (item.itemType) {
MultipleEntity.TEXT -> {
val typefaceTextView = holder.getView<TypefaceTextView>(R.id.tv_title_name)
typefaceTextView.text = item.menuName
}
MultipleEntity.IMG_TEXT -> {
holder.getView<QMUICommonListItemView>(R.id.tracker_manage_setting_item).run {
ViewUtil.instance.showQMUICommonListItemView(
context, this, {
// Toaster.show("$position")
when (position) {
1 -> mHomeV2Activity.startActivity(
Intent(
context, HowWorkActivity::class.java
)
)
2 -> mHomeV2Activity.startActivity(
Intent(
context, FeedbackActivity::class.java
)
)
4 -> mHomeV2Activity.startActivity(
Intent(
context, NotificationsSetActivity::class.java
)
)
5 -> mUnitSelectDialog.showUnitDialog(object :
BaseDialog.OnDialogSelectListener {
override fun onSelectClick(dialog: BaseDialog<*>, any: Any) {
if (any is Int) {
val unit = any
val oldUnit = Util.getMeasureSpUnit()
if (unit == oldUnit) {
return
}
item.menuValue =
if (unit == ConstantInt.Type1) context.getString(R.string.txt_imperial)
else context.getString(R.string.txt_metric)
mAccountV2Fragment.setMeasureUnit(unit)
}
}
})
// mHomeV2Activity.startActivity(
// Intent(
// context, FirstMeasurementUnitsActivity::class.java
// )
// )
6 -> mHomeV2Activity.startActivity(
Intent(
context, PermissionsSetActivity::class.java
)
)
7 -> mHomeV2Activity.startActivity(
Intent(
context, AdvancedSetActivity::class.java
)
)
9 -> mHomeV2Activity.startActivity(
Intent(
context, AboutActivity::class.java
)
)
10 -> dialogShowType(
mLogOutTipsType,
mHomeV2Activity.getString(R.string.txt_log_out_tips),
position
)
}
}, item.menuName
)
if (!TextUtils.isEmpty(item.menuValue)) {
detailText = item.menuValue
}
setImageDrawable(ContextCompat.getDrawable(context, item.imageId))
}
}
}
}
private fun dialogShowType(type: Int, string: String, pos: Int) {
ViewUtil.instance.showDialog(context, string, object : BaseDialog.OnDialogOkListener {
override fun onOkClick(dialog: BaseDialog<*>) {
dialog.dismiss()
when {
mLogOutTipsType == type -> {
Util.logOut(mHomeV2Activity, mHomeV2Activity.lifecycleScope)
}
mCloseAccountTipsType == type -> {
// closeAccount()
}
else -> {
// mHomeV2Activity.clearCache(this@HomeAccountMenuAdapter, pos)
}
}
}
}, okTextResId = R.string.txt_sure)
}
}

View File

@@ -0,0 +1,32 @@
package com.abbidot.tracker.adapter
import android.content.Context
import androidx.core.content.ContextCompat
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.DataBean
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.widget.TypefaceButton
/**
* 首页地图宠物警告适配器
*/
class HomeMapDeviceMsgAdapter(
ctx: Context, list: MutableList<DataBean>?
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_home_map_device_msg
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
val typefaceTextView = holder!!.getView(R.id.tv_device_msg_content) as TypefaceButton
typefaceTextView.apply {
text = item.value
val colorId = if (item.state == ConstantInt.Type1) R.color.green_color10
else R.color.device_msg_color1
setBackgroundColor(ContextCompat.getColor(context, colorId))
}
}
}

View File

@@ -0,0 +1,70 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.text.TextUtils
import android.view.View
import androidx.appcompat.widget.AppCompatImageView
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.DataBean
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.widget.BatteryView
import com.abbidot.tracker.widget.TypefaceTextView
/**
* 首页地图宠物警告适配器
*/
class HomeMapDeviceStateAdapter(
ctx: Context, list: MutableList<DataBean>?
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_home_map_device_state
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
val typefaceTextView =
holder!!.getView(R.id.tv_home_map_device_name_item) as TypefaceTextView
val iv = holder.getView(R.id.iv_home_map_device_item) as AppCompatImageView
val bv = holder.getView(R.id.bv_home_map_device_power) as BatteryView
val ivState = holder.getView(R.id.iv_home_map_device_state_item) as AppCompatImageView
val detailTextView =
holder.getTextView(R.id.tv_map_device_state_detail_item) as TypefaceTextView
if (item.menuType == ConstantInt.Open) {
ivState.setImageResource(R.drawable.icon_map_online)
} else {
ivState.setImageResource(R.drawable.icon_map_offline)
}
if (item.imageId == 0) {
iv.visibility = View.GONE
bv.visibility = View.VISIBLE
bv.setValue(item.state)
} else {
iv.visibility = View.VISIBLE
bv.visibility = View.GONE
iv.setImageResource(item.imageId)
}
typefaceTextView.text = item.name
detailTextView.text = item.value
if (item.selected) {
detailTextView.visibility = View.VISIBLE
typefaceTextView.visibility = View.GONE
} else {
detailTextView.visibility = View.GONE
if (TextUtils.isEmpty(item.name)) {
typefaceTextView.visibility = View.GONE
} else {
typefaceTextView.visibility = View.VISIBLE
}
}
holder.itemView.setOnClickListener {
item.selected = !item.selected
notifyItemChanged(position)
}
}
}

View File

@@ -0,0 +1,34 @@
package com.abbidot.tracker.adapter
import android.content.Context
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.FamilyBean
import com.abbidot.tracker.constant.ConstantInt
/**
*Created by .yzq on 2023/12/25/025.
* @link
* @description:
*/
class HomePetFamilyAdapter(
ctx: Context, list: MutableList<FamilyBean>?
) : BaseRecyclerAdapter<FamilyBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = R.layout.layout_family_empty_view
override fun getItemLayoutId(viewType: Int) = R.layout.item_home_pet_family
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: FamilyBean) {
holder!!.setText(R.id.item_home_pet_family_name, item.acceptEmail)
val avatarImageView = holder.getImageView(R.id.item_home_pet_family_head)
val avatarImageResId = if (item.avatar == ConstantInt.Man) {
R.drawable.icon_family_boy_avatar
} else {
R.drawable.icon_family_girl_avatar
}
avatarImageView.setImageResource(avatarImageResId)
}
}

View File

@@ -0,0 +1,106 @@
package com.abbidot.tracker.adapter
import android.graphics.Typeface
import android.view.LayoutInflater
import android.view.View
import androidx.appcompat.widget.AppCompatImageView
import androidx.core.content.ContextCompat
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.MenuTxtBean
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.constant.MultipleEntity
import com.abbidot.tracker.ui.activity.device.set.LedLightActivity
import com.abbidot.tracker.ui.activity.device.set.LiveDurationSetActivity
import com.abbidot.tracker.ui.activity.device.set.PowerOffActivity
import com.abbidot.tracker.ui.activity.device.set.TrackingDurationSetActivity
import com.abbidot.tracker.ui.fragment.device.HomeTrackFragment
import com.abbidot.tracker.util.ViewUtil
import com.abbidot.tracker.widget.TypefaceTextView
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.qmuiteam.qmui.widget.grouplist.QMUICommonListItemView
/**
*
*/
class HomePetTrackMenuAdapter(
fragment: HomeTrackFragment, list: MutableList<MenuTxtBean>?
) : BaseMultiItemQuickAdapter<MenuTxtBean, BaseViewHolder>(list) {
private var mTypeface: Typeface
private var mHomeTrackFragment: HomeTrackFragment = fragment
init {
addItemType(MultipleEntity.TEXT, R.layout.item_qmui_common_item_view)
addItemType(MultipleEntity.IMG_TEXT, R.layout.item_qmui_common_item_view)
addItemType(MultipleEntity.TEXT_NAME, R.layout.item_qmui_common_item_view)
addItemType(MultipleEntity.IMG_TEXT_IMG, R.layout.item_qmui_common_item_view)
mTypeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
override fun convert(holder: BaseViewHolder, item: MenuTxtBean) {
val position = getItemPosition(item)
val qMUICommonItemView =
holder.getView<QMUICommonListItemView>(R.id.tracker_manage_setting_item).apply {
ViewUtil.instance.showQMUICommonListItemView(
context, this, null, item.menuName
)
background =
ContextCompat.getDrawable(context, R.drawable.selector_transparent_pressed)
}
qMUICommonItemView.textView.typeface = mTypeface
qMUICommonItemView.setOnClickListener {
when (position) {
0 -> mHomeTrackFragment.goPetDataActivity(LedLightActivity::class.java)
1 -> mHomeTrackFragment.goMapDeviceDataActivity(TrackingDurationSetActivity::class.java)
2 -> mHomeTrackFragment.goMapDeviceDataActivity(LiveDurationSetActivity::class.java)
3 -> mHomeTrackFragment.firmwareCheckUpdate()
4 -> mHomeTrackFragment.goPetDataActivity(PowerOffActivity::class.java)
}
}
when (item.itemType) {
MultipleEntity.TEXT -> qMUICommonItemView.detailText = item.menuValue
MultipleEntity.IMG_TEXT -> {
}
MultipleEntity.TEXT_NAME -> {
qMUICommonItemView.accessoryType = QMUICommonListItemView.ACCESSORY_TYPE_SWITCH
qMUICommonItemView.detailText = ""
qMUICommonItemView.switch.apply {
isChecked = item.menuValue == ConstantInt.Open.toString()
isEnabled = isChecked
setOnClickListener {
if (!isChecked) {
//turnOff
mHomeTrackFragment.operateDeviceTips(R.string.txt_turnoff_tips, 0)
}
//屏蔽点击就变状态
isChecked = !isChecked
}
}
}
MultipleEntity.IMG_TEXT_IMG -> setQMUICommonItemViewHead(qMUICommonItemView, item)
}
}
/**
* 设置QMUICommonItemView 自定义布局
*/
private fun setQMUICommonItemViewHead(
qMUICommonItemView: QMUICommonListItemView, item: MenuTxtBean
) {
qMUICommonItemView.detailText = ""
qMUICommonItemView.accessoryType = QMUICommonListItemView.ACCESSORY_TYPE_CUSTOM
val view =
LayoutInflater.from(context).inflate(R.layout.layout_dfu_custom_qmui_group_right, null)
qMUICommonItemView.addAccessoryCustomView(view)
view.findViewById<AppCompatImageView>(R.id.iv_dfu_red_dot).visibility =
if (item.isSwitch) View.VISIBLE else View.GONE
val firmwareName = view.findViewById<TypefaceTextView>(R.id.tv_custom_group_dfu_detail_text)
firmwareName.text = item.menuValue
}
}

View File

@@ -0,0 +1,60 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.view.View
import androidx.core.content.ContextCompat
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.MenuTxtBean
import com.abbidot.tracker.constant.MultipleEntity
import com.abbidot.tracker.widget.BatteryView
import com.abbidot.tracker.widget.MyBluetoothAnimView
import com.abbidot.tracker.widget.TypefaceTextView
/**
* 首页宠物设备状态
*/
class HomePetTrackStateAdapter(
ctx: Context, list: MutableList<MenuTxtBean>?
) : BaseRecyclerAdapter<MenuTxtBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_home_pet_device_state
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: MenuTxtBean) {
val stateTextView = holder!!.getView(R.id.tv_home_pet_device_state_item) as TypefaceTextView
stateTextView.text = item.menuName
holder.getTextView(R.id.tv_home_pet_device_state_name_item).apply {
text = item.menuValue
setTextColor(ContextCompat.getColor(mContext, item.colorRedId))
}
val bv = holder.getView(R.id.bv_home_pet_device_power) as BatteryView
val bluetoothAnimView =
holder.getView(R.id.mba_home_pet_device_search_anim_item) as MyBluetoothAnimView
when (item.menuType) {
MultipleEntity.IMG_TEXT_IMG -> {
bluetoothAnimView.visibility = View.GONE
bv.visibility = View.VISIBLE
bv.setValue(item.imageId)
bluetoothAnimView.setBluetoothAnimStartAndStop(item.isSwitch)
stateTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0)
}
MultipleEntity.TEXT_TEXT_IMG -> {
bluetoothAnimView.visibility = View.VISIBLE
bv.visibility = View.GONE
bluetoothAnimView.setBluetoothAnimStartAndStop(item.isSwitch)
stateTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0)
}
else -> {
bv.visibility = View.GONE
bluetoothAnimView.visibility = View.GONE
stateTextView.setCompoundDrawablesWithIntrinsicBounds(0, item.imageId, 0, 0)
}
}
}
}

View File

@@ -0,0 +1,27 @@
package com.abbidot.tracker.adapter
import android.content.Context
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.MenuTxtBean
import com.qmuiteam.qmui.widget.grouplist.QMUICommonListItemView
/**
*Created by .yzq on 2022/3/22/022.
* @link
* @description:
*/
class HowWorkAdapter(ctx: Context, list: MutableList<MenuTxtBean>?) :
BaseRecyclerAdapter<MenuTxtBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_qmui_common_item_view
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: MenuTxtBean) {
val qMUICommonListItemView =
holder!!.getView(R.id.tracker_manage_setting_item) as QMUICommonListItemView
qMUICommonListItemView.detailText = item.menuValue
qMUICommonListItemView.text = item.menuName
}
}

View File

@@ -0,0 +1,25 @@
package com.abbidot.tracker.adapter
import android.content.Context
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.qmuiteam.qmui.widget.QMUIRadiusImageView
/**
*Created by .yzq on 2021/12/30/030.
* @link
* @description:LedLight默认可以选择颜色适配器
*/
class LedLightColorAdapter(ctx: Context, list: MutableList<Int>?) :
BaseRecyclerAdapter<Int>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_led_color_select
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: Int) {
val radiusImageView =
holder!!.itemView.findViewById<QMUIRadiusImageView>(R.id.show_current_color_select)
radiusImageView.setImageResource(item)
}
}

View File

@@ -0,0 +1,193 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.content.Intent
import android.view.LayoutInflater
import android.view.View
import com.abbidot.baselibrary.constant.MMKVKey
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.baselibrary.util.AppUtils
import com.abbidot.baselibrary.util.MMKVUtil
import com.abbidot.baselibrary.util.Utils
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.SubscriptionsOrderBean
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.constant.ConstantString
import com.abbidot.tracker.ui.activity.subscribe.ChoosePlanActivity
import com.abbidot.tracker.ui.activity.subscribe.MySubscriptionActivity
import com.abbidot.tracker.ui.activity.subscribe.SubscriptionHistoryActivity
import com.abbidot.tracker.ui.activity.subscribe.SubscriptionPlanActivity
import com.abbidot.tracker.widget.TypefaceTextView
import com.qmuiteam.qmui.skin.QMUISkinManager
import com.qmuiteam.qmui.widget.popup.QMUIPopup
import com.qmuiteam.qmui.widget.popup.QMUIPopups
/**
*Created by .yzq on 2024/3/29/029.
* @link
* @description:
*/
class MySubscriptionAdapter(
ctx: Context, list: MutableList<SubscriptionsOrderBean>?
) : BaseRecyclerAdapter<SubscriptionsOrderBean>(ctx, list) {
private val mMySubscriptionActivity = ctx as MySubscriptionActivity
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_my_subscription_layout
override fun bindData(
holder: RecyclerViewHolder?, position: Int, item: SubscriptionsOrderBean
) {
holder!!.setText(R.id.tv_my_subscription_device_out_id, item.deviceOutId)
holder.setText(R.id.tv_my_subscription_plan_name, "${item.mealName}(${item.planCategory})")
holder.getTextView(R.id.tv_my_subscription_auto_subscription_tips).apply {
visibility = if (item.subscriptionStatus == ConstantInt.Open) {
text = if (item.mealUnit == ConstantString.PackageUnitYear) String.format(
mContext.getString(R.string.txt_auto_subscription_year),
item.autoRenewPrice.toString()
)
else String.format(
mContext.getString(R.string.txt_auto_subscription_month),
item.autoRenewPrice.toString()
)
View.VISIBLE
} else {
View.GONE
}
}
holder.setText(
R.id.tv_my_subscription_active_time,
Utils.stringToDate(item.updateTime, resultFormat = Utils.DATE_FORMAT_PATTERN_EN6)
)
holder.getTextView(R.id.tv_my_subscription_annual_care).apply {
text =
if (item.annualCareType == ConstantInt.Type1) mContext.getString(R.string.start_txt_yes)
else mContext.getString(R.string.txt_no)
}
// val timestamp = getAfterHowTimestamp(
// Utils.stringToTimestamp(item.currentTime), item.surplusDays
// )
holder.setText(
R.id.tv_my_subscription_expires_on,
Utils.formatTime(item.endTime, Utils.DATE_FORMAT_PATTERN_EN7)
)
if (item.subscriptionStatus == ConstantInt.Close) {
holder.setText(
R.id.tv_my_subscription_auto_renew,
mContext.getString(R.string.tracker_manage_set_led_off)
)
} else {
holder.setText(
R.id.tv_my_subscription_auto_renew,
mContext.getString(R.string.tracker_manage_set_led_on)
)
}
val expiresTitle = holder.getTextView(R.id.tv_my_subscription_expires_title)
holder.getButton(R.id.btn_my_subscription_recharge).apply {
visibility =
if (item.orderStatus == 6 || (item.surplusDays == 0L && item.subscriptionStatus == ConstantInt.Close)) {
setText(R.string.txt_card_recharge)
expiresTitle.setText(R.string.txt_expires_on2)
View.VISIBLE
} else if (item.subscriptionStatus == ConstantInt.Close) {
setText(R.string.txt_enable_auto_renew)
expiresTitle.setText(R.string.txt_expires_on1)
View.VISIBLE
} else {
expiresTitle.setText(R.string.txt_expires_on1)
View.GONE
}
}
holder.getView(R.id.il_my_subscription_count_down).apply {
visibility =
if (item.orderStatus == 6 || (item.surplusDays == 0L && item.subscriptionStatus == ConstantInt.Close)) {
View.GONE
} else {
View.VISIBLE
}
}
val times = Utils.getDayToYearMonthDay(item.surplusDays)
holder.setText(R.id.tv_add_success_device_expires_days, times[0])
holder.setText(R.id.tv_add_success_device_expires_hours, times[1])
holder.setText(R.id.tv_add_success_device_expires_min, times[2])
holder.getView(R.id.fl_my_subscription_btn_layout).apply {
val userId = MMKVUtil.getString(MMKVKey.UserId)
//UserId不一样就是共享设备的订单
visibility = if (item.userId == userId) {
setOnClickListener {
showPop(holder.getView(R.id.iv_my_subscription_btn), item, position)
}
View.VISIBLE
} else View.GONE
}
holder.setClickListener(R.id.btn_my_subscription_recharge) {
if (item.surplusDays == 0L && item.subscriptionStatus == ConstantInt.Close) {
Intent(mContext, SubscriptionPlanActivity::class.java).let {
it.putExtra(ConstantString.LkSetMeal, item)
mMySubscriptionActivity.startActivity(it)
}
} else {
mMySubscriptionActivity.updateSubscriptionStatus(item.subscriptionId, 1, position)
}
}
}
private fun showPop(v: View, item: SubscriptionsOrderBean, position: Int) {
val view = LayoutInflater.from(mContext).inflate(R.layout.pop_subscription_item, null)
val qMUIPopups =
QMUIPopups.popup(mContext).preferredDirection(QMUIPopup.DIRECTION_BOTTOM).view(view)
// .edgeProtection(QMUIDisplayHelper.dp2px(mContext, 20))
.dimAmount(0.6f).arrowSize(AppUtils.dpToPx(6), AppUtils.dpToPx(4))
.radius(AppUtils.dpToPx(16)).animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER)
.skinManager(QMUISkinManager.defaultInstance(mContext)).show(v)
view.findViewById<TypefaceTextView>(R.id.tv_pop_my_subscription_history).apply {
setOnClickListener {
qMUIPopups.dismiss()
Intent(mContext, SubscriptionHistoryActivity::class.java).let {
it.putExtra(ConstantString.DeviceId, item.deviceId)
mMySubscriptionActivity.startActivity(it)
}
}
}
//升级套餐
view.findViewById<TypefaceTextView>(R.id.tv_pop_my_subscription_auto_renew).apply {
visibility =
if (item.planCategory == "Premium" || (item.surplusDays == 0L && item.subscriptionStatus == ConstantInt.Close)) {
View.GONE
} else {
View.VISIBLE
}
setOnClickListener {
qMUIPopups.dismiss()
val intent = Intent(mContext, ChoosePlanActivity::class.java)
intent.putExtra(ConstantString.Title, "Premium")
intent.putExtra(ConstantString.Upgrade, true)
intent.putExtra(ConstantString.LkSetMeal, item)
mMySubscriptionActivity.startActivity(intent)
}
}
view.findViewById<TypefaceTextView>(R.id.tv_pop_my_subscription_cancel).apply {
visibility = if (item.subscriptionStatus == ConstantInt.Open) {
View.VISIBLE
} else {
View.GONE
}
setOnClickListener {
qMUIPopups.dismiss()
mMySubscriptionActivity.updateSubscriptionStatus(item.subscriptionId, 0, position)
}
}
}
}

View File

@@ -0,0 +1,116 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.content.Intent
import android.text.TextUtils
import android.view.View
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.DeviceBean
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.ui.activity.device.AddNewTracker1Activity
import com.abbidot.tracker.ui.activity.device.MyTrackerV2Activity
import com.abbidot.tracker.ui.activity.pet.PetProfileActivity
import com.abbidot.tracker.util.ViewUtil
import com.qmuiteam.qmui.widget.QMUIRadiusImageView
/**
*Created by .yzq on 2024/3/7/007.
* @link
* @description:
*/
class MyTrackerV2Adapter(
ctx: Context, list: MutableList<DeviceBean>?
) : BaseRecyclerAdapter<DeviceBean>(ctx, list) {
private val mMyTrackerActivity = mContext as MyTrackerV2Activity
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_my_tracker_v2_layout
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DeviceBean) {
val batteryTextView = holder!!.getTextView(R.id.iv_item_my_tracker_v2_battery)
val trackerImageView = holder.getImageView(R.id.iv_item_my_tracker_v2_device)
val addTrackerLayout = holder.getView(R.id.ll_my_tracker_v2_add_tracker_layout)
val petHead = holder.getView(R.id.il_my_tracker_v2_pet_head) as QMUIRadiusImageView
val addPetLayout = holder.getView(R.id.ll_my_tracker_v2_add_pet_layout)
val trackerName = holder.getTextView(R.id.tv_my_tracker_v2_device_name)
val petName = holder.getTextView(R.id.tv_my_tracker_v2_pet_name)
holder.getImageView(R.id.iv_my_tracker_v2_share).apply {
visibility = if (item.shared == ConstantInt.NoShare) View.GONE else View.VISIBLE
}
addTrackerLayout.setOnClickListener {
if (itemCount - 1 == position) {
mMyTrackerActivity.startActivity(
Intent(
mContext, AddNewTracker1Activity::class.java
)
)
} else {
mMyTrackerActivity.getAssignData(position)
}
}
addPetLayout.setOnClickListener {
if (itemCount - 1 == position) {
mMyTrackerActivity.startActivity(Intent(mContext, PetProfileActivity::class.java))
} else {
mMyTrackerActivity.getAssignData(position)
}
}
trackerImageView.setOnClickListener {
if (item.shared == ConstantInt.NoShare) {
mMyTrackerActivity.showDeviceBottomSheetMenu(position)
}
}
petHead.setOnClickListener {
if (item.shared == ConstantInt.NoShare) {
mMyTrackerActivity.showPetBottomSheetMenu(position)
}
}
if (itemCount - 1 == position) {
batteryTextView.visibility = View.GONE
trackerImageView.visibility = View.GONE
trackerName.visibility = View.GONE
addTrackerLayout.visibility = View.VISIBLE
addPetLayout.visibility = View.VISIBLE
petHead.visibility = View.GONE
petName.visibility = View.GONE
} else {
if (TextUtils.isEmpty(item.deviceOutId)) {
addTrackerLayout.visibility = View.VISIBLE
batteryTextView.visibility = View.GONE
trackerImageView.visibility = View.GONE
trackerName.visibility = View.GONE
} else {
addTrackerLayout.visibility = View.GONE
batteryTextView.visibility = View.VISIBLE
trackerImageView.visibility = View.VISIBLE
trackerName.visibility = View.VISIBLE
trackerName.text = item.deviceOutId
val battery = "${item.batteryCapacity} "
batteryTextView.text = battery
}
if (null == item.pet) {
addPetLayout.visibility = View.VISIBLE
petHead.visibility = View.GONE
petName.visibility = View.GONE
} else {
addPetLayout.visibility = View.GONE
petHead.visibility = View.VISIBLE
petName.visibility = View.VISIBLE
item.pet?.let {
petName.text = it.petName
ViewUtil.instance.setPetTypeHead(petHead, it.imgurl, it.petType)
}
}
}
}
}

View File

@@ -0,0 +1,73 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.text.TextUtils
import android.text.format.DateUtils
import android.view.View
import androidx.core.content.ContextCompat
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.baselibrary.util.Utils
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.MessageBean
import com.abbidot.tracker.widget.TypefaceRoundButton
/**
*Created by .yzq on 2023/12/26/026.
* @link
* @description:
*/
class NotificationV2Adapter(
ctx: Context, list: MutableList<MessageBean>?
) : BaseRecyclerAdapter<MessageBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_home_route_notification
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: MessageBean) {
val roundButton =
holder!!.getView(R.id.iv_home_route_notification_state) as TypefaceRoundButton
val textColor = if (item.isRead) {
roundButton.visibility = View.GONE
R.color.black70
} else {
roundButton.visibility = View.VISIBLE
R.color.data_black_color
}
holder.getTextView(R.id.tv_home_route_notification_content).apply {
text = item.message
if (item.isSelect) {
ellipsize = null
isSingleLine = false
} else {
ellipsize = TextUtils.TruncateAt.END
isSingleLine = true
}
setTextColor(ContextCompat.getColor(mContext, textColor))
}
holder.getTextView(R.id.tv_home_route_notification_type).apply {
text = item.title
setTextColor(ContextCompat.getColor(mContext, textColor))
}
holder.getTextView(R.id.tv_home_route_notification_date).apply {
text = getRelativeTimeString(Utils.stringToTimestamp(item.sendTime))
setTextColor(ContextCompat.getColor(mContext, textColor))
}
}
private fun getRelativeTimeString(time: Long): String {
var formatDateStr = ""
val now = System.currentTimeMillis()
formatDateStr = if (DateUtils.isToday(time)) {
mContext.getString(R.string.txt_today) + " " + Utils.formatTime(
time, Utils.DATE_FORMAT_PATTERN_EN8
)
} else if (now - time < (48 * 60 * 60 * 1000)) {
mContext.getString(R.string.txt_yesterday)
} else {
Utils.formatTime(time, Utils.DATE_FORMAT_PATTERN_EN9)
}
return formatDateStr
}
}

View File

@@ -0,0 +1,66 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.view.View
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.DataBean
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.ui.activity.set.PermissionsSetActivity
import com.abbidot.tracker.widget.TypefaceButton
/**
*Created by .yzq on 2024/3/25/025.
* @link
* @description:
*/
class PermissionsSetAdapter(
ctx: Context, list: MutableList<DataBean>?
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
private val mPermissionsSetActivity = ctx as PermissionsSetActivity
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_permission_state_layout
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
val stateView = holder!!.getImageView(R.id.cb_permission_state_item)
val typefaceTextView = holder.getTextView(R.id.tv_permission_tip_item)
val btnLayout = holder.getView(R.id.ll_permission_set_layout)
val btnSkip = holder.getView(R.id.btn_permission_skip_set) as TypefaceButton
val btnEnable = holder.getView(R.id.btn_permission_enable_set) as TypefaceButton
btnSkip.visibility = View.INVISIBLE
btnEnable.setChangeAlphaWhenPress(true)
btnEnable.setText(R.string.txt_turn_on_upper)
if (item.selected) {
typefaceTextView.visibility = View.VISIBLE
btnLayout.visibility = View.VISIBLE
holder.itemView.setBackgroundResource(R.drawable.shape16_white_color_bg)
} else {
btnLayout.visibility = View.GONE
typefaceTextView.visibility = View.GONE
holder.itemView.setBackgroundResource(R.drawable.shape10_white_bg)
}
when (item.state) {
ConstantInt.Type0 -> stateView.setImageResource(R.drawable.icon_permission_error_check_svg)
ConstantInt.Type1 -> stateView.setImageResource(R.drawable.icon_permission_check_svg)
}
holder.setText(R.id.tv_permission_name_item, item.name)
typefaceTextView.text = item.value
btnEnable.setOnClickListener {
when (position) {
0 -> mPermissionsSetActivity.mPermissionsCommon.operateBluetooth()
1 -> mPermissionsSetActivity.mPermissionsCommon.operateGPSLocation()
2 -> mPermissionsSetActivity.mPermissionsCommon.operateNotifications(
this, ConstantInt.Type0
)
}
}
}
}

View File

@@ -0,0 +1,57 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.view.View
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.baselibrary.util.AppUtils
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.LabelBean
import com.qmuiteam.qmui.layout.QMUILinearLayout
import kotlin.random.Random
/**
*Created by .yzq on 2024/2/21/021.
* @link
* @description:
*/
class PetLabelsAdapter(ctx: Context, list: MutableList<LabelBean>?) :
BaseRecyclerAdapter<LabelBean>(ctx, list) {
private val mLabelBgColorList = mutableListOf(
R.color.green_color10,
R.color.label_color2,
R.color.label_color3,
R.color.label_color4,
R.color.label_color5,
R.color.label_color6,
R.color.label_color7,
R.color.label_color8,
R.color.label_color9,
R.color.label_color10,
R.color.label_color11,
R.color.label_color12,
R.color.label_color13,
R.color.label_color14
)
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_pet_label_layout_v2
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: LabelBean) {
val textView = holder!!.getTextView(R.id.tv_label_v2_name)
val rootView = holder.itemView as QMUILinearLayout
val imageView = holder.getImageView(R.id.iv_label_v2_is_select)
if (item.check) {
imageView.visibility = View.VISIBLE
} else {
imageView.visibility = View.GONE
}
textView.text = item.name
rootView.setBackgroundResource(mLabelBgColorList[Random.nextInt(mLabelBgColorList.size)])
rootView.radius = AppUtils.dpToPx(6)
}
}

View File

@@ -0,0 +1,31 @@
package com.abbidot.tracker.adapter
import android.content.Context
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.baselibrary.util.AppUtils
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.DataBean
/**
*Created by .yzq on 2021/12/30/030.
* @link
* @description:
*/
class PetsBadgesAdapter(ctx: Context, list: MutableList<DataBean>?,itemViewWidthDp:Int=80) :
BaseRecyclerAdapter<DataBean>(ctx, list) {
private val mItemViewWidthDp=AppUtils.dpToPx(itemViewWidthDp)
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_pets_badges_layout
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
holder!!.getTextView(R.id.tv_item_my_pets_badge).apply {
text = item.name
}
holder.itemView.layoutParams.width= mItemViewWidthDp
holder.getImageView(R.id.iv_item_my_pets_badge).setImageResource(item.imageId)
}
}

View File

@@ -0,0 +1,89 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.content.Intent
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.baselibrary.util.AppUtils
import com.abbidot.tracker.R
import com.abbidot.tracker.base.BaseActivity
import com.abbidot.tracker.bean.ParentBadgeBean
import com.abbidot.tracker.constant.ConstantString
import com.abbidot.tracker.ui.activity.pet.BadgeDetailActivity
import com.abbidot.tracker.util.ViewUtil
import com.abbidot.tracker.widget.TypefaceButton
/**
*Created by .yzq on 2021/12/30/030.
* @link
* @description:
*/
class PetsParentBadgesAdapter(ctx: Context, list: MutableList<ParentBadgeBean>?) :
BaseRecyclerAdapter<ParentBadgeBean>(ctx, list) {
//默认显示的勋章个数
private val defaultShowCount = 9
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_pets_parent_badges_layout
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: ParentBadgeBean) {
val recyclerView = holder!!.getView(R.id.rv_pet_badges_list) as RecyclerView
holder.setText(R.id.tv_pets_parent_badges_name, item.parentName)
val btn = (holder.getView(R.id.btn_parent_badges_expand_fold) as TypefaceButton).apply {
visibility = View.GONE
if (item.isExpand) {
setText(R.string.txt_view_less)
} else {
setText(R.string.txt_see_all)
}
setOnClickListener {
item.isExpand = !item.isExpand
notifyItemChanged(position)
}
}
item.badgeList?.apply {
if (size > defaultShowCount) {
btn.visibility = View.VISIBLE
} else {
btn.visibility = View.GONE
}
}
val list = if (item.isExpand || null == item.badgeList || item.badgeList!!.size < 4) {
item.badgeList
} else {
item.badgeList!!.subList(0, defaultShowCount)
}
if (null == recyclerView.adapter) {
val petsBadgesAdapter = PetsBadgesAdapter(mContext, list).apply {
setOnItemClickListener(object : OnItemClickListener {
override fun onItemClick(itemView: View?, pos: Int) {
val activity = mContext as BaseActivity<*>
Intent(mContext, BadgeDetailActivity::class.java).let {
it.putExtra(ConstantString.PetLabels, list!![pos])
activity.startActivity(it)
}
}
})
}
ViewUtil.instance.setRecyclerViewGridLayout(
mContext,
recyclerView,
petsBadgesAdapter,
3,
AppUtils.dpToPx(80),
top = AppUtils.dpToPx(16),
bottom = AppUtils.dpToPx(18),
offset = AppUtils.dpToPx(32)
)
} else {
val adapter = recyclerView.adapter as PetsBadgesAdapter
adapter.setData(list, true)
}
}
}

View File

@@ -0,0 +1,37 @@
package com.abbidot.tracker.adapter
import android.content.Context
import androidx.cardview.widget.CardView
import androidx.core.content.ContextCompat
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.DataBean
import com.qmuiteam.qmui.util.QMUIDisplayHelper
/**
*/
class SelectFencesTypeCardShadeAdapter(
ctx: Context, list: MutableList<DataBean>?
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_select_type_card_shade_layout
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
val imageView = holder!!.getImageView(R.id.iv_select_type_image)
imageView.setImageResource(item.imageId)
val cardView = holder.itemView as CardView
cardView.apply {
isSelected = item.selected
cardElevation = if (item.selected) {
setCardBackgroundColor(ContextCompat.getColor(context, R.color.select_color))
QMUIDisplayHelper.dpToPx(4).toFloat()
} else {
setCardBackgroundColor(ContextCompat.getColor(context, R.color.transparent))
0f
}
}
}
}

View File

@@ -0,0 +1,29 @@
package com.abbidot.tracker.adapter
import android.content.Context
import androidx.core.content.ContextCompat
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.MenuTxtBean
/**
*Created by .yzq on 2022/1/10/010.
* @link
* @description:选择地图应用列表弹窗
*/
class SelectMapListDialogAdapter(ctx: Context, list: MutableList<MenuTxtBean>?) :
BaseRecyclerAdapter<MenuTxtBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_select_map
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: MenuTxtBean) {
val textView = holder!!.getTextView(R.id.item_select_map_name)
textView.text = item.menuName
textView.setCompoundDrawablesWithIntrinsicBounds(
item.imageId, 0, 0, 0)
}
}

View File

@@ -0,0 +1,41 @@
package com.abbidot.tracker.adapter
import android.content.Context
import androidx.cardview.widget.CardView
import androidx.core.content.ContextCompat
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.baselibrary.util.AppUtils
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.DataBean
/**
*/
class SelectMapTypeCardShadeAdapter(
ctx: Context, list: MutableList<DataBean>?
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_map_type_layout
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
val imageView = holder!!.getImageView(R.id.iv_select_type_image)
imageView.setImageResource(item.imageId)
holder.setText(R.id.tv_map_type_name, item.name)
val cardView = holder.getView(R.id.il_map_type_shade_image) as CardView
cardView.apply {
isSelected = item.selected
cardElevation = if (item.selected) {
setCardBackgroundColor(ContextCompat.getColor(context, R.color.white))
val padding = AppUtils.dpToPx(3)
setContentPadding(padding, padding, padding, padding)
AppUtils.dpToPx(4).toFloat()
} else {
setCardBackgroundColor(ContextCompat.getColor(context, R.color.transparent))
setContentPadding(0, 0, 0, 0)
0f
}
}
}
}

View File

@@ -0,0 +1,37 @@
package com.abbidot.tracker.adapter
import android.graphics.Rect
import android.view.View
import androidx.recyclerview.widget.RecyclerView
/**
*Created by .yzq on 2021/12/24/024.
* @link https://qa.1r1g.com/sf/ask/1997239751/
* @description:RecyclerView的LinearLayoutManager和FlexboxLayoutManager通用item间距设置
*/
class SpaceItemDecoration(
left: Int = 0, right: Int = 0, top: Int = 0, bottom: Int = 0
) : RecyclerView.ItemDecoration() {
private var mLeft = left
private var mRight = right
private var mTop = top
private var mBottom = bottom
override fun getItemOffsets(
outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State
) {
if (mLeft > 0) {
outRect.left = mLeft
}
if (mRight > 0) {
outRect.right = mRight
}
if (mTop > 0) {
outRect.top = mTop
}
if (mBottom > 0) {
outRect.bottom = mBottom
}
}
}

View File

@@ -0,0 +1,122 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.content.Intent
import android.view.View
import androidx.core.content.ContextCompat
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.baselibrary.util.Utils
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.SubscriptionsOrderBean
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.constant.ConstantString
import com.abbidot.tracker.ui.activity.subscribe.RequestRefundActivity
import com.abbidot.tracker.ui.activity.subscribe.SubscriptionHistoryActivity
import com.abbidot.tracker.widget.TypefaceRoundButton
/**
*Created by .yzq on 2024/8/19/019.
* @link
* @description:
*/
class SubscriptionHistoryAdapter(
ctx: Context, list: MutableList<SubscriptionsOrderBean>?
) : BaseRecyclerAdapter<SubscriptionsOrderBean>(ctx, list) {
private val mHistoryActivity = ctx as SubscriptionHistoryActivity
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_subscription_history_layout
override fun bindData(
holder: RecyclerViewHolder?, position: Int, item: SubscriptionsOrderBean
) {
holder!!.setText(
R.id.tv_subscription_history_order_id,
mContext.getString(R.string.txt_order_id) + item.orderNum
)
holder.setText(
R.id.tv_subscription_history_order_time,
Utils.stringToDate(item.createTime, resultFormat = Utils.DATE_FORMAT_PATTERN_EN10)
)
holder.setText(R.id.tv_subscription_history_package_name, item.mealName)
holder.setText(
R.id.tv_subscription_history_package_price,
String.format(mContext.getString(R.string.txt_money_unit), "${item.totalAmountWithTax}")
)
(holder.getView(R.id.btn_subscription_history_operate) as TypefaceRoundButton).apply {
setTextColor(ContextCompat.getColor(mContext, R.color.line_color1))
if (item.enabled == ConstantInt.Type0) visibility = View.GONE
else {
visibility = View.VISIBLE
when (item.orderStatus) {
1 -> {
val updateTimestamp = Utils.stringToTimestamp(item.updateTime)
val nowTimestamp = System.currentTimeMillis()
// val nowTimestamp = Utils.stringToTimestamp(item.currentTime)
if (item.mealUnit == ConstantString.PackageUnitMonth) {
val day7Timestamp = 7 * 24 * 60 * 60 * 1000L
//套餐超出7天不能退款
if (nowTimestamp - updateTimestamp <= day7Timestamp) {
visibility = View.VISIBLE
setText(R.string.txt_refund)
} else {
visibility = View.GONE
}
} else {
val day30Timestamp = 30 * 24 * 60 * 60 * 1000L
//套餐超出30天不能退款
if (nowTimestamp - updateTimestamp <= day30Timestamp) {
visibility = View.VISIBLE
setText(R.string.txt_refund)
} else {
visibility = View.GONE
}
}
setTextColor(ContextCompat.getColor(mContext, R.color.select_color))
}
4 -> setText(R.string.txt_waiting)
5 -> setText(R.string.txt_refunding)
6 -> setText(R.string.txt_refunded)
7, 8 -> {
setTextColor(ContextCompat.getColor(mContext, R.color.orange_red_color))
setText(R.string.txt_rejected)
}
else -> visibility = View.GONE
}
}
setChangeAlphaWhenPress(true)
setOnClickListener {
if (item.orderStatus == ConstantInt.Type1) {
Intent(mContext, RequestRefundActivity::class.java).apply {
putExtra(ConstantString.SetMeal, item)
mHistoryActivity.startActivity(this)
}
}
}
}
val state =
if (item.enabled == ConstantInt.Type0 || (item.surplusDays == 0L && item.subscriptionStatus == ConstantInt.Close)) {
mContext.getString(R.string.txt_expired)
} else {
mContext.getString(R.string.txt_active)
}
holder.setText(R.id.tv_subscription_history_subscription_state, state)
holder.getTextView(R.id.tv_subscription_history_annual_care).apply {
text =
if (item.annualCareType == ConstantInt.Type1) mContext.getString(R.string.start_txt_yes)
else mContext.getString(R.string.txt_no)
}
}
}

View File

@@ -0,0 +1,45 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.widget.RelativeLayout
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.baselibrary.util.Utils
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.PackageTypeBean
/**
*Created by .yzq on 2024/3/19/019.
* @link
* @description:
*/
class SubscriptionPlanAdapter(
ctx: Context, list: MutableList<PackageTypeBean>?
) : BaseRecyclerAdapter<PackageTypeBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_subscription_plan_layout
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: PackageTypeBean) {
val relativeLayout = holder!!.getView(R.id.rl_subscribe_plan_shade_item) as RelativeLayout
// val popularCardView = holder.getView(R.id.cv_subscribe_plan_item_popular) as CardView
// val subscription = holder.getTextView(R.id.tv_subscribe_plan_item_per_year)
if (item.selected) {
relativeLayout.setBackgroundResource(R.drawable.shape20_yellow_border_cyan_bg)
// popularCardView.visibility = View.VISIBLE
} else {
relativeLayout.setBackgroundResource(0)
// popularCardView.visibility = View.GONE
}
holder.setText(R.id.tv_subscribe_plan_item_name, item.name)
holder.setText(
R.id.tv_subscribe_plan_item_money,
String.format(mContext.getString(R.string.txt_money_unit), Utils.formatDecimal( item.price, 2))
)
// subscription.text =
// String.format(mContext.getString(R.string.txt_per_year_money), item.subscriptionFee)
// subscription.visibility = if (item.subscriptionFee == 0.0) View.INVISIBLE
// else View.VISIBLE
}
}

View File

@@ -0,0 +1,31 @@
package com.abbidot.tracker.adapter
import android.content.Context
import androidx.appcompat.widget.AppCompatCheckBox
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.PackageBenefitsBean
import com.abbidot.tracker.constant.ConstantInt
/**
*Created by .yzq on 2024/3/19/019.
* @link
* @description:
*/
class SubscriptionPlanDetailAdapter(
ctx: Context, list: MutableList<PackageBenefitsBean>?
) : BaseRecyclerAdapter<PackageBenefitsBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_subscription_plan_detail_layout
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: PackageBenefitsBean) {
val checkBox = holder!!.getView(R.id.cb_subscribe_plan_detail_item) as AppCompatCheckBox
checkBox.setOnClickListener {
checkBox.isChecked = !checkBox.isChecked
}
holder.setText(R.id.tv_subscribe_plan_detail_name, item.title)
checkBox.isChecked = item.status == ConstantInt.Open
}
}

View File

@@ -0,0 +1,34 @@
package com.abbidot.tracker.adapter
import android.content.Context
import androidx.core.content.ContextCompat
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.MenuTxtBean
/**
*Created by .yzq on 2024/9/9/009.
* @link
* @description:
*/
class SureSubscribeSummaryAdapter(
ctx: Context, list: MutableList<MenuTxtBean>?
) : BaseRecyclerAdapter<MenuTxtBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_subscribe_summary_layout
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: MenuTxtBean) {
holder?.apply {
setText(R.id.tv_subscribe_summary_item_name, item.menuName)
getTextView(R.id.tv_subscribe_summary_item_money).let {
val string =
String.format(mContext.getString(R.string.txt_money_unit), item.menuValue)
it.text = if (item.isSwitch) "-$string"
else string
it.setTextColor(ContextCompat.getColor(mContext, item.colorRedId))
}
}
}
}

View File

@@ -0,0 +1,25 @@
package com.abbidot.tracker.adapter
import android.content.Context
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.DataBean
/**
*Created by .yzq on 2024/2/20/020.
* @link
* @description:
*/
class TextViewAdapter(
ctx: Context, list: MutableList<DataBean>?
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_text_view
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
holder!!.setText(R.id.tv_text_view_item, item.name)
}
}

View File

@@ -0,0 +1,21 @@
package com.abbidot.tracker.adapter
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.viewpager2.adapter.FragmentStateAdapter
/**
*Created by .yzq on 2021/11/19/019.
* @link
* @description:
*/
class ViewPagerAdapter(list: MutableList<Fragment>, fragmentActivity: FragmentActivity) :
FragmentStateAdapter(fragmentActivity) {
private val mFragmentList = list
override fun getItemCount() = mFragmentList.size
override fun createFragment(position: Int) = mFragmentList[position]
}

View File

@@ -0,0 +1,34 @@
package com.abbidot.tracker.adapter
import android.content.Context
import androidx.cardview.widget.CardView
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.DataBean
import com.qmuiteam.qmui.util.QMUIDisplayHelper
/**
*围栏类型
*/
class VirtualFencesZoneShadeAdapter(
ctx: Context, list: MutableList<DataBean>?
) : BaseRecyclerAdapter<DataBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_shadow_image_view
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DataBean) {
val imageView = holder!!.getImageView(R.id.iv_item_shadow_image_view)
val cardView = holder.itemView as CardView
if (item.selected) {
imageView.setImageResource(item.selectImageId)
cardView.cardElevation = QMUIDisplayHelper.dpToPx(4).toFloat()
} else {
imageView.setImageResource(item.imageId)
cardView.cardElevation = 0f
}
}
}

View File

@@ -0,0 +1,39 @@
package com.abbidot.tracker.adapter
import android.content.Context
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.baselibrary.util.Utils
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.WiFiBean
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.widget.MyWiFiSignalView
/**
*Created by .yzq on 2024/3/26/026.
* @link
* @description:
*/
class WiFiListAdapter(
ctx: Context, list: MutableList<WiFiBean>?
) : BaseRecyclerAdapter<WiFiBean>(ctx, list) {
override fun getEmptyLayoutId(viewType: Int) = 0
override fun getItemLayoutId(viewType: Int) = R.layout.item_wifi_info_layout
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: WiFiBean) {
// val wifiName = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
// item.wifiSsid.toString()
// } else {
// item.SSID
// }
holder!!.setText(R.id.tv_wifi_item_name, item.name)
val signalView = holder.getView(R.id.tv_wifi_item_signal) as MyWiFiSignalView
val signal = Utils.calculateSignalLevel(item.signal, 3)
if (item.auth_type == ConstantInt.Type0) {
signalView.setValue(signal)
} else {
signalView.setValue(signal, true)
}
}
}

View File

@@ -0,0 +1,43 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.view.View
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.tracker.R
import com.abbidot.tracker.bean.WiFiZoneBean
import com.abbidot.tracker.constant.ConstantInt
/**
*/
class WiFiZoneAdapter(
ctx: Context, list: MutableList<WiFiZoneBean>?, isShowArrowRight: Boolean = true
) : BaseRecyclerAdapter<WiFiZoneBean>(ctx, list) {
private val isShowArrow = isShowArrowRight
override fun getEmptyLayoutId(viewType: Int) = R.layout.layout_virtual_fences_empty_view
override fun getItemLayoutId(viewType: Int) = R.layout.item_wifi_zone_layout
override fun noData(holder: RecyclerViewHolder?) {
holder?.apply {
getView(R.id.btn_empty_fences_add_safe_zone).visibility =
if (isShowNoDataAddButton) View.VISIBLE
else View.GONE
}
}
override fun bindData(holder: RecyclerViewHolder?, position: Int, item: WiFiZoneBean) {
holder!!.setText(R.id.tv_wifi_zone_name, item.wifiZoneName)
holder.setText(R.id.tv_wifi_zone_address, item.address)
val wifiZoneTypeImage =
if (item.type == ConstantInt.Type1) R.drawable.icon_wifi_zone_type1_svg
else R.drawable.icon_wifi_zone_type2_svg
holder.getImageView(R.id.iv_wifi_zone_type).setBackgroundResource(wifiZoneTypeImage)
holder.getImageView(R.id.iv_wifi_zone_list_arrow_right).visibility =
if (isShowArrow) View.VISIBLE
else View.GONE
}
}

View File

@@ -0,0 +1 @@
package com.abbidot.tracker.alipay

View File

@@ -0,0 +1,799 @@
package com.abbidot.tracker.base
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.graphics.Rect
import android.os.Bundle
import android.text.TextUtils
import android.view.Gravity
import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
import android.view.Window
import android.view.inputmethod.InputMethodManager
import android.widget.Button
import android.widget.EditText
import androidx.activity.OnBackPressedCallback
import androidx.activity.result.ActivityResultLauncher
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentTransaction
import androidx.viewbinding.ViewBinding
import com.abbidot.baselibrary.network.exception.ErrorCode
import com.abbidot.baselibrary.util.AppUtils
import com.abbidot.baselibrary.util.LogUtil
import com.abbidot.tracker.R
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.constant.GetResultCallback
import com.abbidot.tracker.util.ViewUtil
import com.hjq.toast.Toaster
import com.qmuiteam.qmui.alpha.QMUIAlphaButton
import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton
import com.qmuiteam.qmui.util.QMUIDisplayHelper
import com.qmuiteam.qmui.util.QMUIStatusBarHelper
import com.qmuiteam.qmui.widget.QMUITopBar
import com.qmuiteam.qmui.widget.dialog.QMUITipDialog
/**
*Created by .yzq on 2021/11/2/002.
* @link
* @description: Activity基类
*/
abstract class BaseActivity<T : ViewBinding>(val inflater: (inflater: LayoutInflater) -> T) :
AppCompatActivity(), View.OnClickListener {
protected lateinit var mViewBinding: T
var mTopBar: QMUITopBar? = null
lateinit var mContext: Context
lateinit var mActivity: Activity
private var mLoadingDialog: QMUITipDialog? = null
//默认删除去掉titleTopBar底部间隔下划线
var mDeleteBottomDivider: Boolean = true
//Activity是否在前台显示运行
var isFrontRunning = false
//是否需要通知上个页面更新数据
var isNotifyUpdate = false
//右边图标按钮
var mRightImageButton: QMUIAlphaImageButton? = null
//右边按钮
var mRightTextButton: Button? = null
//网络请求失败,需要重试次数
var mNetworkRequestsFailRetryCount = 0
val mNetworkRequestsFailMaxCount = 3
val mNetworkRequestsFailLimit = "networkRequestsFailLimit"
//是否拦截网络请求错误code提示
var isInterceptNetErrorCodeTip = false
//软键盘管理
private var mInputMethodManager: InputMethodManager? = null
// 监听因输入框弹出,遮挡输入框,界面移动,需要移动的view
private var mTranslateView: View? = null
/*****************************监听软键盘弹出输入框上移start************************************/
private var isKeyboardTranslate = true
//是否需要适配底部EdgeToEdge
var isEdgeToEdgeAdapterNavigationBars = true
override fun onCreate(savedInstanceState: Bundle?) {
isFrontRunning = true
super.onCreate(savedInstanceState)
mViewBinding = inflater(layoutInflater)
mContext = this
mActivity = this
//禁用屏幕旋转 代码设置无效
// requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
mViewBinding.root.apply {
//点击屏幕页面隐藏软键盘start
setOnClickListener {
hideInputMethod(this)
}
//判断是否是深色模式
if (AppUtils.isDarkThemeEnabled(mContext)) {
// 设备处于深色模式
setBackgroundResource(R.color.gray)
} else {
// 设备处于浅色模式,统一设置的渐变背景色
background = ContextCompat.getDrawable(mContext, R.drawable.v2_bg_color_gradient)
}
}
setContentView(mViewBinding.root)
mTopBar = getTopBar()
//拦截返回按键
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
listenBackPressed()
//Removing this callback
// remove()
// onBackPressedDispatcher.onBackPressed()
}
})
initData()
liveDataObserve()
}
// 字体大小不跟随系统
override fun attachBaseContext(newBase: Context) {
super.attachBaseContext(getConfigurationContext(newBase))
}
// 字体大小不跟随系统
private fun getConfigurationContext(context: Context): Context {
val configuration = context.resources.configuration
configuration.fontScale = 1F
return context.createConfigurationContext(configuration)
}
/*
lifecycleScope.launch {
Dispatchers.IO
专为磁盘和网络IO进行了优化
数据库-文件读写-网络处理
Dispatchers.Default
专为CPU密集型任务进行了优化
数组排序 - JSON数据解析-处理差异判断
withContext(Dispatchers.Default){
}
lifecycleScope.coroutineContext
}
*/
override fun onResume() {
super.onResume()
isFrontRunning = true
}
override fun onPause() {
super.onPause()
//键盘隐藏恢复默认状态
mTranslateView?.apply {
scrollTo(0, 0)
isKeyboardTranslate = false
}
}
override fun onStop() {
super.onStop()
showLoading(false)
isFrontRunning = false
}
/**
* 没有TopBar就设置返回null
*/
abstract fun getTopBar(): QMUITopBar?
/**
* 注册监听livedata观察者
*/
open fun liveDataObserve() {}
/**
* open修饰的类和方法可以被子类继承和重写
* 初始化
*/
open fun initData() {
//沉浸式状态栏
QMUIStatusBarHelper.translucent(window)
//判断是否是深色模式
if (AppUtils.isDarkThemeEnabled(mContext)) {
setStatusBarDark()
} else {
setStatusBarLight()
}
mTopBar?.apply {
//适配状态栏
this.parent?.let {
edgeToEdgeAdapterBars(it as View, WindowInsetsCompat.Type.statusBars())
}
//去掉titleTopBar底部间隔下划线
if (mDeleteBottomDivider) updateBottomDivider(0, 0, 0, 0)
}
//适配底部导航栏
if (isEdgeToEdgeAdapterNavigationBars) edgeToEdgeAdapterBars(mViewBinding.root)
}
/**
* 和 setContentView 对应的方法
*/
private fun getContentView(): ViewGroup {
return findViewById(Window.ID_ANDROID_CONTENT)
}
/**
* 监听键盘弹出和隐藏,解决键盘弹出隐藏输入框的问题
*/
fun setListenKeyboardChange(windowTranslateY: Int = 500, view: View = window.decorView) {
window.decorView.viewTreeObserver.addOnGlobalLayoutListener {
onLayoutChange(view, windowTranslateY)
}
}
/**
* 设置其他包含的view点击。隐藏软键盘如ScrollView
*/
fun setViewClickHideInputMethod(view: View) {
// 点击外部隐藏软键盘,提升用户体验
view.setOnClickListener {
hideInputMethod(view)
}
}
/**
* edgeToEdge全面屏适配Android15 底部。防止view被菜单、状态栏遮挡
* https://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650286452&idx=1&sn=354b78ae82c52b6d3d510256779a3df9&scene=21&poc_token=HN91iGij_n_mGA9z9ZarQC_44XYBhBjN9N9z_w1_
*/
fun edgeToEdgeAdapterBars(
view: View, typeMask: Int = WindowInsetsCompat.Type.navigationBars()
) {
ViewCompat.setOnApplyWindowInsetsListener(view) { v, insets ->
val bars = insets.getInsets(typeMask)
v.setPadding(bars.left, bars.top, bars.right, bars.bottom)
insets
}
}
/**
* 修改状态颜色,有状态栏时用到,现在状态栏直接被占位
*/
// fun setStatusBarColor(color: Int) {
// //这里动态修改颜色
// window.statusBarColor = color
// }
/**
* 设置状态栏白色字体与图标
*/
fun setStatusBarDark() {
QMUIStatusBarHelper.setStatusBarDarkMode(this)
}
/**
* 设置状态栏黑色字体与图标
*/
fun setStatusBarLight() {
QMUIStatusBarHelper.setStatusBarLightMode(this)
}
/**
* 设置多个view的监听事件
*/
fun setOnClickListenerViews(vararg views: View?) {
for (v in views) {
v?.let {
if (v is QMUIAlphaButton) {
//设置按下点击透明效果
v.setChangeAlphaWhenPress(true)
} else if (v is QMUIAlphaImageButton) {
//设置按下点击透明效果
v.setChangeAlphaWhenPress(true)
}
v.setOnClickListener(this)
}
}
}
override fun onClick(v: View?) {
// 默认不实现,让子类实现
}
/**
* 按钮开启/禁用点击
*/
fun setButtonEnabled(v: View, enabled: Int = ConstantInt.SpecialType) {
when (enabled) {
ConstantInt.SpecialType -> v.isEnabled = !v.isEnabled
ConstantInt.Type0 -> v.isEnabled = false
ConstantInt.Type1 -> v.isEnabled = true
}
}
/**
* 设置title标题 resIdTitle
*/
fun setTopBarTitle(resIdTitle: Int) {
setTopBarTitle(getString(resIdTitle))
}
/**
* 设置透明一体化状态栏TopBarTitle只有返回按钮
*/
fun setTranslucentTopBar() {
//去掉titleTopBar背景颜色,设置TopBar背景透明
mTopBar!!.setBackgroundAlpha(0)
setTopBarTitle("")
}
/**
* 设置按钮图片
*/
fun setLeftBackImage(@DrawableRes resId: Int) {
mTopBar!!.removeAllLeftViews()
val leftBtn = mTopBar!!.addLeftImageButton(resId, R.id.topbar_left_change_button)
if (resId == 0) {
return
}
leftBtn.setOnClickListener { leftBackOnClick() }
}
/**
* 需要重写返回按钮时
*/
open fun leftBackOnClick() {
finish()
}
/**
* 拦截返回按键
*/
// override fun onBackPressed() {
// leftBackOnClick()
// super.onBackPressed()
// }
open fun listenBackPressed() {
leftBackOnClick()
}
/**
* 添加TopBar右边图片按钮
*/
fun addRightImageButton(@DrawableRes resId: Int): QMUIAlphaImageButton {
val rightBtn = mTopBar!!.addRightImageButton(resId, R.id.topbar_right_change_button)
setOnClickListenerViews(rightBtn)
return rightBtn
}
/**
* 添加TopBar右边文字按钮
*/
fun addRightTextButton(
@StringRes resId: Int, textColor: Int = R.color.select_color
): Button {
val textButton = mTopBar!!.addRightTextButton(
getString(resId), R.id.topbar_right_change_textview
).apply {
setBackgroundResource(R.drawable.selector_transparent_pressed)
setTextColor(ContextCompat.getColor(mContext, textColor))
setOnClickListenerViews(this)
}
return textButton
}
/**
* 设置title标题titleString
*/
fun setTopBarTitle(title: String) {
if (null != mTopBar) {
if (TextUtils.isEmpty(title)) mTopBar!!.showTitleView(false)
else {
mTopBar!!.setTitle(title)
val tf =
ViewUtil.instance.setTypeface(mContext, getString(R.string.roboto_bold_font))
mTopBar!!.titleView!!.setTypeface(tf)
}
mTopBar!!.addLeftBackImageButton().setOnClickListener { leftBackOnClick() }
}
}
fun isShowLoading(): Boolean {
if (null != mLoadingDialog && mLoadingDialog!!.isShowing) {
return true
}
return false
}
fun showLoading(show: Boolean, tipsRes: Int, cancelable: Boolean = true) {
showLoading(show, getString(tipsRes), cancelable)
}
fun showLoading(show: Boolean, tip: String = "", cancelable: Boolean = true) {
// if (!isFrontRunning) {
// return
// }
// if (show) {
// if (isShowLoading()) {
// mLoadingDialog!!.dismiss()
// }
// var message = tip
// if (TextUtils.isEmpty(tip)) {
// message = getString(R.string.txt_loading)
// }
// mLoadingDialog =
// QMUITipDialog.Builder(mContext).setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING)
// .setTipWord(message).create(cancelable).apply {
// setCanceledOnTouchOutside(false)
// show()
// }
// } else {
// mLoadingDialog?.dismiss()
// }
}
fun showNoCancelableLoading(show: Boolean) {
if (!isFrontRunning) {
return
}
if (show) {
if (isShowLoading()) {
mLoadingDialog!!.dismiss()
}
// var message = tip
// if (TextUtils.isEmpty(tip)) {
// }
val message = getString(R.string.txt_loading)
mLoadingDialog =
QMUITipDialog.Builder(mContext).setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING)
.setTipWord(message).create(false).apply {
setCanceledOnTouchOutside(false)
show()
}
} else {
mLoadingDialog?.dismiss()
}
}
/**
* 显示提示toast
*/
fun showToast(
tip: String, isFinish: Boolean = false, gravity: Int = Gravity.BOTTOM
// @QMUITipDialog.Builder.IconType iconType: Int = QMUITipDialog.Builder.ICON_TYPE_NOTHING
) {
if (gravity == Gravity.BOTTOM) Toaster.setGravity(gravity, 0, 300, 0f, 0f)
if (isFinish) {
// DialogUtils.showTipDialog(mContext, mViewBinding.root, tip, iconType, true)
//activity前台显示运行才弹出
if (isFrontRunning) {
Toaster.show(tip)
//根据文字长度来决定显示时间长短
var showTime = if (AppUtils.isChina()) {
tip.length * (1000L / 4)
} else {
tip.length * (1000L / 10)
}
if (showTime < 1000) showTime = 1500
if (showTime > 8000) showTime = 8000
mViewBinding.root.postDelayed({
if (!isFinishing) {
Toaster.cancel()
finish()
}
}, showTime)
}
} else {
Toaster.show(tip)
}
}
fun showToast(
resIdString: Int, isFinish: Boolean = false, gravity: Int = Gravity.BOTTOM
// @QMUITipDialog.Builder.IconType iconType: Int = QMUITipDialog.Builder.ICON_TYPE_NOTHING
) {
showToast(getString(resIdString), isFinish, gravity)
}
fun hideFragment(fragmentTransaction: FragmentTransaction, fragment: Fragment) {
if (fragment.isAdded) {
fragmentTransaction.hide(fragment)
}
}
override fun finish() {
super.finish()
overridePendingTransition(R.anim.slide_still, R.anim.slide_out_right)
}
override fun startActivity(intent: Intent) {
super.startActivity(intent)
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left)
}
fun startActivityFinish(intent: Intent) {
startActivity(intent)
super.finish()
}
override fun startActivity(intent: Intent, options: Bundle?) {
super.startActivity(intent, options)
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left)
}
/**
* onActivityResult 替换跳转方法
*/
fun launchActivity(activityResultLauncher: ActivityResultLauncher<Intent>, intent: Intent) {
activityResultLauncher.launch(intent)
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left)
}
/**
* 统一处理网络请求结果
*/
fun <T> dealRequestResult(
it: Result<T>,
getResultCallback: GetResultCallback,
showLoading: Boolean = false,
isShowNoDataTip: Boolean = true,
isShowRequestErrorTip: Boolean = true,
errorTip: String = getString(R.string.txt_net_error)
) {
try {
showLoading(showLoading)
//服务器返回错误信息
val exceptionMessage = it.exceptionOrNull()?.message
//服务器返回错误code
val exceptionCode: String? = it.exceptionOrNull()?.toString()
LogUtil.d("Throwable", "code=${exceptionCode},${exceptionMessage}")
if (null != exceptionCode) {
//处理注册用户已存在的情况
if (exceptionCode == ErrorCode.USER_HAS_EXIST.toString()) {
getResultCallback.onRequestError(exceptionCode)
}
//拦截请求异常code
if (netErrorCodeTips(exceptionCode)) {
//已经处理相关错误码就直接返回
return
}
}
val data = it.getOrNull()
if (null == data) {
if (isShowRequestErrorTip) showToast(errorTip)
if (mNetworkRequestsFailRetryCount < mNetworkRequestsFailMaxCount) {
mNetworkRequestsFailRetryCount++
getResultCallback.onRequestError(exceptionCode)
} else {
//请求次数上限
getResultCallback.onRequestError(mNetworkRequestsFailLimit)
}
} else {
mNetworkRequestsFailRetryCount = 0
if (isShowNoDataTip && data is MutableList<*> && data.size == 0) {
showToast(R.string.no_data)
}
//不做强制类型转换
getResultCallback.onResult(0)
}
} catch (e: Exception) {
LogUtil.e("接口出错造成的异常:${e.message}")
}
}
/**
* 网络请求错误code提示
*/
private fun netErrorCodeTips(exceptionCode: String): Boolean {
//设备已过期,请续费
when (exceptionCode) {
ErrorCode.DEVICE_RENEWAL.toString() -> {
showToast(R.string.txt_device_renewal)
return true
}
//TOKEN失效或者过期
ErrorCode.TOKEN_OVERDUE.toString() -> {
showToast(R.string.txt_token_overdue)
return true
}
//用户名或密码错误
ErrorCode.USER_PASSWORD_ERROR.toString() -> {
showToast(R.string.txt_user_password_error, gravity = Gravity.CENTER)
return true
}
//验证码错误
ErrorCode.VERIFY_CODE_ERROR.toString() -> {
showToast(R.string.txt_verify_code_error, gravity = Gravity.CENTER)
return true
}
//验证码已过期
ErrorCode.VERIFY_CODE_EXPIRE.toString() -> {
showToast(R.string.txt_verify_code_expire, gravity = Gravity.CENTER)
return true
}
//注册失败
ErrorCode.REGISTER_FAIL.toString() -> {
showToast(R.string.txt_register_fail, gravity = Gravity.CENTER)
return true
}
//用户不存在
ErrorCode.USER_NO_EXIST.toString() -> {
showToast(R.string.txt_user_no_exist, gravity = Gravity.CENTER)
return true
}
//用户已存在
ErrorCode.USER_HAS_EXIST.toString() -> {
if (!isInterceptNetErrorCodeTip) {
showToast(R.string.txt_user_has_exist, gravity = Gravity.BOTTOM)
}
return true
}
//邮箱格式不对
ErrorCode.EMAIL_FORMAT_ERROR.toString() -> {
showToast(R.string.txt_email_format_error, gravity = Gravity.CENTER)
return true
}
//不能分享给自己
ErrorCode.NO_SHARE_MYSELF.toString() -> {
showToast(R.string.txt_no_share_myself)
return true
}
//当前用户已经绑定该设备
ErrorCode.DEVICE_HAS_BOUND.toString() -> {
showToast(R.string.txt_device_has_bound)
return true
}
//该设备已被绑定
ErrorCode.DEVICE_HAS_BIND.toString() -> {
showToast(R.string.txt_device_has_bind)
return true
}
//设备不存在
ErrorCode.DEVICE_NOT_EXIST.toString() -> {
showToast(R.string.txt_no_dfu)
return true
}
else -> return false
}
}
/**
* 监听软键盘隐藏
*/
open fun listenHideKeyboard() {}
/******************************点击屏幕页面隐藏软键盘start**************************************/
// override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
// if (ev.action == MotionEvent.ACTION_DOWN) {
// val v = currentFocus
// v?.let {
// //如果搜索框内没有输入隐藏键盘时则返回Contacts页面
// if (isShouldHideKeyboard(v, ev)) {
// if (hideInputMethod(it)) {
// LogUtil.e("dispatchTouchEvent-->listenHideKeyboard,隐藏键盘")
// listenHideKeyboard()
// //这里可以执行隐藏需要执行的任务;
// //隐藏键盘时,其他控件不响应点击事件==》注释则不拦截点击事件
// //不拦截事件,按钮需要事件
//// return true
// }
// }
// }
//
// }
// return super.dispatchTouchEvent(ev)
// }
/**
* 获取InputMethodManager
*/
private fun getInputMethodManager(): InputMethodManager? {
if (null == mInputMethodManager) mInputMethodManager =
getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
return mInputMethodManager
}
/**
* 隐藏软键盘
*/
fun hideInputMethod(view: View): Boolean {
getInputMethodManager()?.apply {
return hideSoftInputFromWindow(view.windowToken, 0)
}
return false
}
/**
* 弹出软键盘
*/
fun showInputMethod(view: View) {
getInputMethodManager()?.apply {
showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
}
}
/**
* 根据EditText所在坐标和用户点击的坐标相对比来判断是否隐藏键盘因为当用户点击EditText时则不能隐藏
*/
private fun isShouldHideKeyboard(v: View?, ev: MotionEvent): Boolean {
if (v != null && (v is EditText)) {
val l = intArrayOf(0, 0)
v.getLocationInWindow(l)
val left = l[0]
val top = l[1]
val bottom = top + v.getHeight()
val right = left + v.getWidth()
return !(ev.x > left && ev.x < right && ev.y > top && ev.y < bottom)
}
// 如果焦点不是EditText则忽略这个发生在视图刚绘制完第一个焦点不在EditText上和用户用轨迹球选择其他的焦点
return false
}
/******************************点击屏幕页面隐藏软键盘end**************************************/
/**
* 软键盘显示
*/
open fun showSoftKeyboardCallback() {
LogUtil.e("监听重写软键盘弹出")
}
/**
* 软键盘隐藏
*/
open fun hideSoftKeyboardCallback() {
LogUtil.e("监听重写软键盘隐藏")
}
/*
* 获取导航栏高度
*/
private fun getNavigatorBarHeight(): Int {
// val resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android")
// val height = resources.getDimensionPixelSize(resourceId)
return QMUIDisplayHelper.getNavMenuHeight(mContext)
}
/**
* 监听因输入框弹出,遮挡输入框,界面移动
* @param translateView 需要移动的view
* @param translateY 移动的坐标点
*/
private fun onLayoutChange(translateView: View, translateY: Int) {
mTranslateView = translateView
//获取当前屏幕内容的高度
val screenHeight = window.decorView.height
//获取View可见区域的bottom
val rect = Rect()
window.decorView.getWindowVisibleDisplayFrame(rect)
if (screenHeight - getNavigatorBarHeight() > rect.bottom) {
// 获取按钮的左上角按钮高度为40dp
// val location = IntArray(2)
// translateView.getLocationOnScreen(location)
// val bottom = location[1] + resources.getDimensionPixelSize(R.dimen.dp_80)
//// 如果按钮被覆盖,移动整个界面向上移动
// if (bottom > rect.bottom) {
// window.decorView.scrollBy(0, bottom - rect.bottom)
// isKeyboardTranslate = true
// }
if (!isKeyboardTranslate) {
//移动到指定位置点坐标
translateView.scrollBy(0, translateY)
isKeyboardTranslate = true
}
LogUtil.e("软键盘弹出")
showSoftKeyboardCallback()
} else {
LogUtil.e("隐藏软键盘")
if (isKeyboardTranslate) {
translateView.scrollTo(0, 0)
isKeyboardTranslate = false
}
hideSoftKeyboardCallback()
}
}
/*****************************监听软键盘弹出输入框上移end************************************/
}

View File

@@ -0,0 +1,96 @@
package com.abbidot.tracker.base
import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.View.OnClickListener
import android.view.WindowManager
import androidx.annotation.StyleRes
import androidx.appcompat.app.AppCompatDialog
import androidx.viewbinding.ViewBinding
import com.abbidot.baselibrary.util.AppUtils
import com.abbidot.tracker.R
import com.qmuiteam.qmui.alpha.QMUIAlphaButton
import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton
/**
*Created by .yzq on 2022/1/11/011.-
* @link
* @dialogHeightDp 默认高度350dp
* @description:BaseDialog
*/
abstract class BaseDialog<T : ViewBinding>
(
val inflater: (inflater: LayoutInflater) -> T,
context: Context,
dialogHeightDp: Int = 0,
@StyleRes animationResId: Int = R.style.QMUI_Animation_Scale,
@StyleRes themeResId: Int = R.style.my_Dialog_shadow_style
) : AppCompatDialog(context, themeResId), OnClickListener {
protected lateinit var mViewBinding: T
val mContext = context
private val mAnimationResId = animationResId
private val mDialogHeightDp = dialogHeightDp
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mViewBinding = inflater(layoutInflater)
setContentView(mViewBinding.root)
//设置Dialog动画
window!!.setWindowAnimations(mAnimationResId)
//设置弹窗的高度
val layoutParams: WindowManager.LayoutParams = window!!.attributes
if (mDialogHeightDp == 0) {
//采用自适应高度
layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT
} else {
layoutParams.height = AppUtils.dpToPx(mDialogHeightDp)
}
// layoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT
window!!.attributes = layoutParams
initView()
}
abstract fun initView()
/**
* 设置多个view的监听事件
*/
fun setOnClickListenerViews(vararg views: View?) {
for (v in views) {
v?.let {
if (v is QMUIAlphaButton) {
//设置按下点击透明效果
v.setChangeAlphaWhenPress(true)
} else if (v is QMUIAlphaImageButton) {
//设置按下点击透明效果
v.setChangeAlphaWhenPress(true)
}
v.setOnClickListener(this)
}
}
}
override fun onClick(v: View) {
// 默认不实现,让子类实现
}
interface OnDialogOkListener {
fun onOkClick(dialog: BaseDialog<*>)
}
interface OnDialogSelectListener {
fun onSelectClick(dialog: BaseDialog<*>, any: Any)
}
interface OnDialogCancelListener {
fun onCancelClick(dialog: BaseDialog<*>)
}
}

View File

@@ -0,0 +1,14 @@
package com.abbidot.tracker.base
/**
*Created by .yzq on 2022/4/20/020.
* @link
* @description:
*/
abstract class BaseDiffBean {
// 判断当前对象和给定对象是否是同一对象
abstract fun isSameObject(other: Any): Boolean
// 判断当前对象和给定对象是否拥有相同内容
abstract fun hasSameContent(other: Any): Boolean
}

View File

@@ -0,0 +1,57 @@
package com.abbidot.tracker.base
import androidx.recyclerview.widget.DiffUtil
/**
*Created by .yzq on 2021/11/12/012.
* @link
* @description: DiffUtil基类封装
*/
open class BaseDiffCallBack<T>(oldList: MutableList<T>?, newList: MutableList<T>?) :
DiffUtil.Callback() {
private var mOldList: MutableList<T>? = oldList
private var mNewList: MutableList<T>? = newList
override fun getOldListSize() = if (mOldList == null) {
0
} else mOldList!!.size
override fun getNewListSize() = if (mNewList == null) {
0
} else mNewList!!.size
/**
* 判断新旧item是否是同一个item最好以唯一不变的id作比较
*/
override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
// if (null == mNewList || null == mOldList) return false
val newItem = mNewList!![newItemPosition]
if (newItem is BaseDiffBean) {
return newItem.isSameObject(mOldList!![oldItemPosition]!!)
}
return true
}
/**
* 是同一个item。然后比较新旧item的内容是否一样
*/
override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
val newItem = mNewList!![newItemPosition]
if (newItem is BaseDiffBean) {
return newItem.hasSameContent(mOldList!![oldItemPosition]!!)
}
return false
}
/**
* 局部刷新比较只更新某个item
*/
override fun getChangePayload(oldItemPosition: Int, newItemPosition: Int): Any? {
val newDeviceBean = mNewList?.get(newItemPosition)
if (!areContentsTheSame(oldItemPosition, newItemPosition)) {
return newDeviceBean
}
return null
}
}

View File

@@ -0,0 +1,167 @@
package com.abbidot.tracker.base
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.activity.result.ActivityResultLauncher
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.viewbinding.ViewBinding
import com.abbidot.baselibrary.util.LogUtil
import com.abbidot.tracker.R
import com.abbidot.tracker.constant.GetResultCallback
import com.qmuiteam.qmui.alpha.QMUIAlphaButton
import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton
import com.qmuiteam.qmui.widget.dialog.QMUITipDialog
/**
*Created by .yzq on 2021/11/2/002.
* @link
* @description:Fragment基类
* 关于@JvmOverloads constructor说明 https://stackoverflow.com/questions/34469487/caused-by-java-lang-nosuchmethodexception-init-class-android-content-contex
*/
abstract class BaseFragment<T : ViewBinding>(
val inflater: (inflater: LayoutInflater, container: ViewGroup?, attachToRoot: Boolean) -> T
) : Fragment(), View.OnClickListener {
protected lateinit var mViewBinding: T
var mActivity: Activity? = null
var mContext: Context? = null
var mLoadingDialog: QMUITipDialog? = null
/**
* Fragment中嵌套子Fragment时如果父Fragment被销毁而子Fragment未被销毁会导致子Fragment的视图不再显示
*/
override fun onCreate(savedInstanceState: Bundle?) {
savedInstanceState?.remove("android:support:fragments")
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
): View? {
mViewBinding = this.inflater(inflater, container, false)
LogUtil.e("${javaClass.simpleName},onCreateView")
return mViewBinding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
mActivity = activity
mContext = context
//统一设置的渐变背景色
mViewBinding.root.background =
ContextCompat.getDrawable(mContext!!, R.drawable.v2_bg_color_gradient)
LogUtil.e("${javaClass.simpleName},onViewCreated")
initData()
liveDataObserve()
}
/**
* 注册监听livedata观察者
*/
open fun liveDataObserve() {}
/**
* 初始化
*/
open fun initData() {}
fun showLoading(show: Boolean, tip: String = "", cancelable: Boolean = true) {
(activity as BaseActivity<*>).showLoading(show, tip, cancelable)
}
fun showLoading(show: Boolean) {
(activity as BaseActivity<*>).showLoading(show)
}
fun showNoCancelableLoading(show: Boolean) {
(activity as BaseActivity<*>).showNoCancelableLoading(show)
}
/**
* 显示提示toast
*/
fun showToast(
tip: String, isFinish: Boolean = false, gravity: Int = Gravity.BOTTOM
) {
// DialogUtils.showTipDialog(mContext!!, mViewBinding.root, tip, iconType, isFinish = isFinish)
(activity as BaseActivity<*>).showToast(tip, isFinish, gravity)
}
fun showToast(
resIdString: Int, isFinish: Boolean = false, gravity: Int = Gravity.BOTTOM
) {
// showToast(getString(resIdString), isFinish, iconType)
(activity as BaseActivity<*>).showToast(resIdString, isFinish, gravity)
}
/**
* 设置多个view的监听事件
*/
fun setOnClickListenerViews(vararg views: View?) {
for (v in views) {
v?.let {
if (v is QMUIAlphaButton) {
//设置按下点击透明效果
v.setChangeAlphaWhenPress(true)
} else if (v is QMUIAlphaImageButton) {
//设置按下点击透明效果
v.setChangeAlphaWhenPress(true)
}
v.setOnClickListener(this)
}
}
}
override fun onClick(v: View?) {
// 默认不实现,让子类实现
}
fun finish(activity: Activity) {
(activity as BaseActivity<*>).finish()
}
fun startActivity(activity: Activity, intent: Intent) {
(activity as BaseActivity<*>).startActivity(intent)
}
fun startActivityFinish(activity: Activity, intent: Intent) {
(activity as BaseActivity<*>).startActivityFinish(intent)
}
fun startActivity(activity: Activity, intent: Intent, options: Bundle?) {
(activity as BaseActivity<*>).startActivity(intent, options)
}
/**
* onActivityResult 替换跳转方法
*/
fun launchActivity(
activity: Activity, activityResultLauncher: ActivityResultLauncher<Intent>, intent: Intent
) {
(activity as BaseActivity<*>).launchActivity(activityResultLauncher, intent)
}
/**
* 统一处理网络请求结果
*/
fun <T> dealRequestResult(
it: Result<T>,
getResultCallback: GetResultCallback,
showLoading: Boolean = false,
isShowNoDataTip: Boolean = true,
isRequestErrorTip: Boolean = true,
errorTip: String = getString(R.string.txt_net_error)
) {
(activity as BaseActivity<*>).dealRequestResult(
it, getResultCallback, showLoading, isShowNoDataTip, isRequestErrorTip, errorTip
)
}
}

View File

@@ -0,0 +1,195 @@
package com.abbidot.tracker.base
import android.content.Context
import com.abbidot.baselibrary.constant.MMKVKey
import com.abbidot.baselibrary.util.MMKVUtil
import com.abbidot.tracker.bean.FencesBean
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.ui.fragment.map.baidumap.BaseBaiduMapFragment
import com.abbidot.tracker.ui.fragment.map.googlemap.BaseGoogleMapFragment
import com.abbidot.tracker.util.Util
import com.baidu.mapapi.utils.DistanceUtil
import com.google.android.gms.maps.model.LatLng
/**
*Created by .yzq on 2024/5/10/010.
* @link
* @description:重复调用方法写在这个类中
*/
open class BaseMapCommon {
/**
* 地图是否加载好了,准备好了
*/
fun isMapLoadOk(
baiduMapFragment: BaseBaiduMapFragment?, googleMapFragment: BaseGoogleMapFragment?
): Boolean {
var loadOK = false
if (null != baiduMapFragment) {
loadOK = baiduMapFragment.isMapLoadOk
} else if (null != googleMapFragment) {
loadOK = googleMapFragment.isMapLoadOk
}
return loadOK
}
/**
* 开始每隔几秒刷新用户位置
*/
fun startRefreshUserLocation(
baiduMapFragment: BaseBaiduMapFragment?, googleMapFragment: BaseGoogleMapFragment?
) {
googleMapFragment?.getLastLocation()
}
/**
* 切换地图类型
*/
fun switchSatelliteAndNormalMapType(
baiduMapFragment: BaseBaiduMapFragment?, googleMapFragment: BaseGoogleMapFragment?
) {
val mapTypeSp = Util.getMapTypeSp()
if (mapTypeSp == ConstantInt.Type0) {
MMKVUtil.putInt(MMKVKey.MapType, ConstantInt.Type1)
} else {
MMKVUtil.putInt(MMKVKey.MapType, ConstantInt.Type0)
}
if (null != baiduMapFragment) {
baiduMapFragment.switchSatelliteAndNormalMapType()
} else googleMapFragment?.switchSatelliteAndNormalMapType()
}
/**
* 设置宠物当前经纬度和头像
*/
fun setPetHeadAndCurrentLocation(
petHeadUrl: String,
petType: Int,
lat: Double,
lon: Double,
baiduMapFragment: BaseBaiduMapFragment?,
googleMapFragment: BaseGoogleMapFragment?
) {
if (null != googleMapFragment) {
googleMapFragment.setPetCurrentLocation(petHeadUrl, lat, lon, petType)
} else baiduMapFragment?.setPetCurrentLocation(petHeadUrl, lat, lon)
}
/**
* 切换用户和宠物的位置居中显示
*/
fun switchShowLocationType(
@ConstantInt type: Int,
baiduMapFragment: BaseBaiduMapFragment?,
googleMapFragment: BaseGoogleMapFragment?
) {
if (null != baiduMapFragment) {
baiduMapFragment.switchShowLocation(type)
} else googleMapFragment?.switchShowLocation(type)
}
/**
* 切换用户、宠物和第三方的位置(围栏或者wifi zone)居中显示
*/
fun switchShowLocationType(
@ConstantInt type: Int,
lat: Double,
lon: Double,
baiduMapFragment: BaseBaiduMapFragment?,
googleMapFragment: BaseGoogleMapFragment?
) {
if (null != baiduMapFragment) {
if (type == ConstantInt.OtherLocationType) {
baiduMapFragment.moveCameraLocation(lat, lon)
} else {
baiduMapFragment.switchShowLocation(type)
}
} else if (null != googleMapFragment) {
if (type == ConstantInt.OtherLocationType) {
googleMapFragment.moveCameraUpdate(lat, lon)
} else {
googleMapFragment.switchShowLocation(type)
}
}
}
/**
* 根据预览围栏类型设置地图等级
* @param padding 距离屏幕边缘的距离,px单位
*/
fun restoreFencesSetMapZoom(
context: Context,
fencesBean: FencesBean,
baiduMapFragment: BaseBaiduMapFragment?,
googleMapFragment: BaseGoogleMapFragment?,
padding: Int
) {
fencesBean.apply {
when (fenceShapeType) {
ConstantInt.CircleShapeType -> {
googleMapFragment?.apply {
setLatLngZoom(
context,
padding,
LatLng(ancillaryLatitude, ancillaryLongitude),
LatLng(ancillaryOtherLatitude, ancillaryOtherLongitude)
)
}
baiduMapFragment?.apply {
setBaiduMapZoom(getDistanceZoom(radius.toDouble()) + 1)
}
}
ConstantInt.RectangleShapeType -> {
googleMapFragment?.setLatLngZoom(
context,
padding,
LatLng(latitudeA, longitudeA),
LatLng(latitudeB, longitudeB),
LatLng(latitudeC, longitudeC),
LatLng(latitudeD, longitudeD)
)
baiduMapFragment?.apply {
setBaiduMapZoom(
getDistanceZoom(
maxOf(
shortDistance, longDistance
).toDouble()
) + 1
)
}
}
ConstantInt.PolygonShapeType -> {
googleMapFragment?.setLatLngZoom(
context,
padding,
LatLng(latitudeA, longitudeA),
LatLng(latitudeB, longitudeB),
LatLng(latitudeC, longitudeC),
LatLng(latitudeD, longitudeD),
LatLng(latitudeE, longitudeE),
LatLng(latitudeF, longitudeF),
)
baiduMapFragment?.apply {
val minLat =
minOf(latitudeA, latitudeB, latitudeC, latitudeD, latitudeE, latitudeF)
val maxLat =
minOf(latitudeA, latitudeB, latitudeC, latitudeD, latitudeE, latitudeF)
val minLon = minOf(
longitudeA, longitudeB, longitudeC, longitudeD, longitudeE, longitudeF
)
val maxLon = minOf(
longitudeA, longitudeB, longitudeC, longitudeD, longitudeE, longitudeF
)
val distance = DistanceUtil.getDistance(
getBaiduMapLatLng(minLat, minLon), getBaiduMapLatLng(maxLat, maxLon)
)
setBaiduMapZoom(getDistanceZoom(distance))
}
}
}
}
}
}

View File

@@ -0,0 +1,25 @@
package com.abbidot.tracker.base
import androidx.recyclerview.widget.RecyclerView
import com.qmuiteam.qmui.recyclerView.QMUIRVItemSwipeAction
/**
*Created by .yzq on 2021/11/22/022.
* @link
* @description: QMUIRVItemSwipeAction.Callback
*/
abstract class BaseQMUIRVItemSwipeAction(swipeDirection: Int) : QMUIRVItemSwipeAction.Callback() {
private val mSwipeDirection = swipeDirection
abstract fun removeItem(position: Int)
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
removeItem(viewHolder.adapterPosition)
}
override fun getSwipeDirection(recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder): Int {
return mSwipeDirection
}
}

View File

@@ -0,0 +1,152 @@
package com.abbidot.tracker.base
import android.content.Context
import android.graphics.Color
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.qmuiteam.qmui.recyclerView.QMUISwipeAction
import com.qmuiteam.qmui.recyclerView.QMUISwipeAction.ActionBuilder
import com.qmuiteam.qmui.recyclerView.QMUISwipeViewHolder
import com.qmuiteam.qmui.util.QMUIDisplayHelper
/**
*Created by .yzq on 2021/11/20/020.
* @link
* @description:带有滑动删除菜单列表适配器配合DiffUtil使用取消notifyDataSetChanged()方法
*/
abstract class BaseSwipeMenuAdapter<T>(context: Context, list: MutableList<T>) :
RecyclerView.Adapter<QMUISwipeViewHolder>() {
private var mData: MutableList<T> = list
private val mContext: Context = context
private val mInflater: LayoutInflater = LayoutInflater.from(context)
private var mClickListener: BaseRecyclerAdapter.OnItemClickListener? = null
private var mLongClickListener: BaseRecyclerAdapter.OnItemLongClickListener? = null
// 是否显示空布局,默认显示
private var showEmptyView = true
//重试事件
private var mAgainClickListener: BaseRecyclerAdapter.OnAgainClickListener? = null
/**
* viewType--分别为item以及空view
*/
private val mViewTypeEmpty = 0
private val mViewTypeItem = 1
//菜单样式Builder
var mActionBuilder: ActionBuilder =
ActionBuilder().textSize(QMUIDisplayHelper.sp2px(context, 14)).textColor(Color.WHITE)
.paddingStartEnd(QMUIDisplayHelper.dp2px(context, 14))
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): QMUISwipeViewHolder {
//空布局
if (getEmptyLayoutId(viewType) != 0 && viewType == mViewTypeEmpty) {
val itemView: View = mInflater.inflate(getEmptyLayoutId(viewType), parent, false)
val swipeViewHolder = QMUISwipeViewHolder(itemView)
if (null != mAgainClickListener) {
itemView.setOnClickListener {
showEmptyView(false)
mAgainClickListener!!.onAgainListener()
}
}
return swipeViewHolder
} else {
val itemView: View = mInflater.inflate(getItemLayoutId(viewType), parent, false)
val swipeViewHolder = QMUISwipeViewHolder(itemView)
//添加滑动菜单
for (swipeAction in getSwipeActions()) {
swipeViewHolder.addSwipeAction(swipeAction)
}
if (null != mClickListener) {
itemView.setOnClickListener {
mClickListener!!.onItemClick(itemView, swipeViewHolder.adapterPosition)
}
}
if (null != mLongClickListener) {
itemView.setOnLongClickListener {
mLongClickListener!!.onItemLongClick(itemView, swipeViewHolder.adapterPosition)
true
}
}
return swipeViewHolder
}
}
override fun onBindViewHolder(holder: QMUISwipeViewHolder, position: Int) {
if (mData.size > 0) bindData(holder, position, mData[position])
}
/**
* 判断是否是空布局
*/
private fun isEmptyPosition(position: Int): Boolean {
val count = mData.size
return position == 0 && showEmptyView && count == 0
}
/**
* 设置空布局显示。默认显示
*/
private fun showEmptyView(isShow: Boolean) {
if (isShow != showEmptyView) {
showEmptyView = isShow
notifyDataSetChanged()
}
}
override fun getItemCount() = if (mData.size == 0 && showEmptyView) 1 else mData.size
override fun getItemViewType(position: Int) =
if (isEmptyPosition(position)) mViewTypeEmpty else mViewTypeItem
fun setData(list: MutableList<T>?) {
if (list != null) {
mData = list
//出现没有数据就显示空布局
if (mData.size == 0) {
showEmptyView(true)
}
}
}
fun getData() = mData
fun remove(oldList: MutableList<T>, pos: Int): MutableList<T> {
val newList: MutableList<T> = oldList.toMutableList()
newList.removeAt(pos)
return newList
}
fun getItem(pos: Int) = mData[pos]
/**
* 设置显示空布局 等于0不显示空布局
*/
abstract fun getEmptyLayoutId(viewType: Int): Int
//菜单集合
abstract fun getSwipeActions(): MutableList<QMUISwipeAction>
abstract fun getItemLayoutId(viewType: Int): Int
abstract fun bindData(holder: QMUISwipeViewHolder?, position: Int, item: T)
fun setOnItemClickListener(listener: BaseRecyclerAdapter.OnItemClickListener?) {
mClickListener = listener
}
fun setOnItemLongClickListener(listener: BaseRecyclerAdapter.OnItemLongClickListener?) {
mLongClickListener = listener
}
fun setOnAgainClickListener(listener: BaseRecyclerAdapter.OnAgainClickListener?) {
mAgainClickListener = listener
}
}

View File

@@ -0,0 +1,51 @@
package com.abbidot.tracker.base
import android.content.Context
import android.graphics.Canvas
import android.graphics.Paint
import android.util.AttributeSet
import android.view.View
import com.abbidot.baselibrary.util.AppUtils
/**
*Created by .yzq on 2024/10/11/011.
* @link
* @description:
*/
open class BaseView : View {
lateinit var mContext: Context
var mWidth = 0
var mHeight = 0
var mValue = 0
var mStrokeWidth = 0f
lateinit var mPaint: Paint
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(
context, attrs, defStyleAttr
)
open fun init(context: Context, attrs: AttributeSet?) {
mContext = context
//禁用硬件加速,防止返回到界面多次执行onDraw
setLayerType(LAYER_TYPE_SOFTWARE, null)
mStrokeWidth = AppUtils.dpToPx(1f)
mPaint = Paint()
}
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
canvas.apply {
startDraw(this)
}
}
open fun startDraw(canvas: Canvas) {
}
}

View File

@@ -0,0 +1,40 @@
package com.abbidot.tracker.bean
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
/**
*Created by .yzq on 2022/3/15/015.
* @link
* @description:
*/
@Parcelize
data class ActiveTimeBean(
var activeId: String,
var activeTime: Int,
var goalTime: Int,
var goal: Int,
var calories: Double,
var dayTime: String,
var deviceId: String,
var distance: Double,
var lickCounts: Int,
var persisted: Int,
var scratchCounts: Int,
var steps: Long,
var timeZone: Int,
var updateDate: String,
var vomitCount: Int,
var avgActiveTime: Int,
var avgSleepTime: Int,
var totalTimes: Int,
var totalDistance: Double,
var activeValue: String,
var avgCalories: Int,
var sevenDatas: MutableList<ActiveTimeBean>?,
var thirtyDatas: MutableList<ActiveTimeBean>?,
) : Parcelable {
constructor() : this(
"", 0, 0, 0, 0.0, "", "", 0.0, 0, 0, 0, 0, 0, "", 0, 0, 0, 0, 0.0, "", 0, null, null
)
}

View File

@@ -0,0 +1,10 @@
package com.abbidot.tracker.bean
/**
*Created by .yzq on 2022/7/29/029.
* @link
* @description:微信支付预支付订单
*/
data class AlipayOrderBean(val orderString: String) {
constructor() : this("")
}

View File

@@ -0,0 +1,78 @@
package com.abbidot.tracker.bean
/**
*Created by .yzq on 2025/3/19/019.
* @link
* @description:
*/
data class BleReportDataBean(
var mac: String,
var haveDeviceStateData: Boolean,
var updateTime: Long,
var latLonUpdateTime: Long,
var powerSwitch: Int,
var lteSignal: Int,
var gpsSignal: Int,
var batteryLevel: Int,
var gnssInterval: Int,
var ledSwitch: Int,
var ledMode: Int,
var ledRedValue: Int,
var ledGreenValue: Int,
var ledBlueValue: Int,
var liveFlag: Int,
var inSafeZone: Int,
var inNoGoZone: Int,
var cFencesId: String,
var inWifiZone: Int,
var wiFiZoneMac: String,
var haveLocationData: Boolean,
var locationMode: Int,
var locationList: MutableList<HistoryDataBean>?,
var haveActiveSleepData: Boolean,
var year: Int,
var month: Int,
var day: Int,
var activeTime: Long,
var steps: Long,
var timeZone: Int,
var cTime: Int,
var cActiveTime: Int,
var cSleepTime: Int
) {
constructor() : this(
"",
false,
0L,
0L,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
0,
"",
0,
"",
false,
0,
null,
false,
0,
0,
0,
0L,
0,
0,
0,
0,
0
)
}

View File

@@ -0,0 +1,15 @@
package com.abbidot.tracker.bean
import com.abbidot.baselibrary.constant.ConState
import com.clj.fastble.data.BleDevice
/**
*Created by .yzq on 2022/5/27/027.
* @link
* @description:已绑定添加的设备实体类
*/
data class BleTrackDeviceBean(var mac: String,
var bleDevice: BleDevice?,
@ConState var conState: Int) {
constructor() : this("", null, ConState.DISCONNECTED)
}

View File

@@ -0,0 +1,8 @@
package com.abbidot.tracker.bean
/**
*Created by .yzq on 2024/5/23/023.
* @link
* @description:
*/
data class CountryCodeBean(var countryCode: Int)

View File

@@ -0,0 +1,30 @@
package com.abbidot.tracker.bean
import android.os.Parcelable
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.Ignore
import androidx.room.PrimaryKey
import com.abbidot.tracker.database.MyDatabase
import kotlinx.parcelize.Parcelize
/**
*Created by .yzq on 2022/4/1/001.
* @link
* @description:保存用户输入信用卡
*/
@Parcelize
@Entity(tableName = MyDatabase.CreditCardTableName)
data class CreditCardBean(
@PrimaryKey @ColumnInfo var cardNumber: String,
@ColumnInfo var firstName: String,
@ColumnInfo var lastName: String,
@ColumnInfo var cardName: String,
@ColumnInfo var expirationDate: String,
@ColumnInfo var cvv: String,//信用卡验证值Card Verification Value
@ColumnInfo var countryCode: String,
@ColumnInfo var isPrimary: Boolean,
@Ignore var checked: Boolean = false
) : Parcelable {
constructor() : this("", "", "", "", "", "", "USA", false, false)
}

View File

@@ -0,0 +1,12 @@
package com.abbidot.tracker.bean
/**
*Created by .yzq on 2023/3/23/023.
* @link
* @description:
*/
data class DFUStateBean(var stateName: String, var progress: Int, var filePath: String) {
constructor() : this("", 0, "")
constructor(stateName: String, progress: Int) : this(stateName, progress, "")
constructor(stateName: String) : this(stateName, 0, "")
}

View File

@@ -0,0 +1,43 @@
package com.abbidot.tracker.bean
import android.os.Parcelable
import com.abbidot.tracker.constant.MultipleEntity
import com.chad.library.adapter.base.entity.MultiItemEntity
import kotlinx.parcelize.Parcelize
import kotlinx.parcelize.IgnoredOnParcel
/**
*Created by .yzq on 2021/12/20/020.
* @link
* @description:
*/
@Parcelize
data class DataBean(
var id: String,
var name: String,
var value: String,
var imageId: Int,
var state: Int,
var selectImageId: Int,
var unit: String,
var selected: Boolean = false,
var checked: Boolean = false,
var menuType: Int
) : MultiItemEntity, Parcelable {
//设置空的构造方法
constructor() : this("", "", "", 0, 0, 0, "", false, false, MultipleEntity.TEXT)
constructor(name: String, value: String) : this(
"", name, value, 0, 0,0, "", false, false, MultipleEntity.TEXT
)
//设置多个构造方法
constructor(name: String, value: String, imageId: Int, unit: String) : this(
"", name, value, imageId, 0, 0, unit, false, false, MultipleEntity.TEXT
)
@IgnoredOnParcel
@MultipleEntity
override val itemType = menuType
}

View File

@@ -0,0 +1,53 @@
package com.abbidot.tracker.bean
import android.os.Parcelable
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.Ignore
import com.abbidot.baselibrary.constant.ConState
import com.abbidot.baselibrary.constant.DeviceType
import com.abbidot.tracker.base.BaseDiffBean
import com.abbidot.tracker.database.MyDatabase
import kotlinx.parcelize.Parcelize
/**
*Created by .yzq on 2021/11/8/008.
* @link
* @description:连接保存的设备表
*/
// 定义表名称SQLite 中的表名称不区分大小写,2个主键
@Entity(tableName = MyDatabase.DeviceTableName, primaryKeys = ["deviceOutId", "deviceId"])
@Parcelize
data class DeviceBean(//@PrimaryKey(autoGenerate = true) var id: Long,//autoGenerate = true 自动增长分配ID
@ColumnInfo @DeviceType var type: Int,//设备类型
@ColumnInfo var deviceName: String,
@ColumnInfo var deviceOutId: String,
@ColumnInfo var deviceId: String,
@ColumnInfo var shared: Int, //0=没有分享1=是授权分享的
@ColumnInfo var batteryCapacity: Int,
@ColumnInfo var ledSwitch: Int,
@ColumnInfo @ConState var conState: Int,//连接状态
@ColumnInfo var macId: String,
@ColumnInfo var deviceInfoId: String,
@ColumnInfo var surplusDays: Int,
@ColumnInfo var gnssSignal: Int,
@ColumnInfo var lteSignal: Int,
@ColumnInfo var turnOff: Int,
@ColumnInfo var lightMode: Int,
@Ignore var pet: PetBean?) : BaseDiffBean(), Parcelable {
// 如果某个实体中有您不想保留的字段,则可以使用 @Ignore 为这些字段添加注释
//设置空的构造方法
constructor() : this(DeviceType.TYPE_ONE, "", "", "", 0, 0, 0, ConState.DISCONNECTED, "", "", 0,
0, 0, 0, 0, null)
override fun isSameObject(other: Any): Boolean {
val oldItem = other as DeviceBean
return deviceId == oldItem.deviceId
}
override fun hasSameContent(other: Any): Boolean {
val oldItem = other as DeviceBean
return oldItem.deviceOutId == deviceOutId && oldItem.batteryCapacity == batteryCapacity && oldItem.ledSwitch == ledSwitch && oldItem.pet == pet && oldItem.gnssSignal == gnssSignal && oldItem.lteSignal == lteSignal
}
}

View File

@@ -0,0 +1,20 @@
package com.abbidot.tracker.bean
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
/**
*Created by .yzq on 2022/2/28/028.
* @link
* @description:设备详情
*/
@Parcelize
data class DeviceDetailBean(var deviceOutId: String,
var deviceId: String,
var macId: String,
var pet: PetBean?,
var fenceCount: Int,
var surplusDays: Int,
var familieCount: Int,var deviceInfo:DeviceInfoBean?) : Parcelable {
constructor() : this("", "", "", null, 0, 0,0,null)
}

View File

@@ -0,0 +1,22 @@
package com.abbidot.tracker.bean
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
@Parcelize
data class DeviceInfoBean(var deviceInfoId: String,
var red: Int,
var green: Int,
var blue: Int,
//第一个 是:几分钟设备上报。2信号强度3电量 4设备关机还是开机 5 light登打开还是关闭。5 wifi强度
var gnssInterval: Int,
var gnssSignal: Int,
var batteryLevel: Int,
var turnOff: Int,
var ledSwitch: Int,
var wifiSignal: Int,
//当前LTE网络信号
var lteSignal: Int,
var lightMode: Int) : Parcelable {
constructor() : this("", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
}

View File

@@ -0,0 +1,39 @@
package com.abbidot.tracker.bean
import android.os.Parcelable
import com.abbidot.tracker.base.BaseDiffBean
import kotlinx.parcelize.Parcelize
/**
*Created by .yzq on 2022/2/28/028.
* @link
* @description:
*/
@Parcelize
data class FamilyBean(
var acceptEmail: String,
var deviceId: String,
var familyId: String,
var imgurl: String,
var inviteDate: String,
var sendEmail: String,
var status: Int,//设备的分享状态 1 是分享成功 0 分享中 2 已拒绝
var userId: String,
var relation: Int,//关系 1 Family 2 friend 3 love 4 colleague
var avatar: Int,//头像 1 男生 2 女生 3 未知
var userName: String,
var petId: String,
var petName: String
) : Parcelable, BaseDiffBean() {
constructor() : this("", "", "", "", "", "", 0, "", 1, 1, "", "", "")
override fun isSameObject(other: Any): Boolean {
val oldItem = other as FamilyBean
return familyId == oldItem.familyId
}
override fun hasSameContent(other: Any): Boolean {
val oldItem = other as FamilyBean
return oldItem.imgurl == imgurl && oldItem.acceptEmail == acceptEmail
}
}

View File

@@ -0,0 +1,13 @@
package com.abbidot.tracker.bean
/**
*Created by .yzq on 2022/3/10/010.
* @link
* @description:
*/
data class FamilyPetBean(var petName: String,
var petImgurl: String,
var deviceOutId: String,
var families: MutableList<FamilyBean>?) {
constructor() : this("", "", "", null)
}

View File

@@ -0,0 +1,96 @@
package com.abbidot.tracker.bean
import android.os.Parcelable
import com.abbidot.tracker.base.BaseDiffBean
import kotlinx.parcelize.Parcelize
/**
*Created by .yzq on 2022/2/28/028.
* @link
* @description:围栏
*/
@Parcelize
data class FencesBean(
var deviceId: String,
var deviceServiceId: String,
var fenceId: String,
var name: String,
var address: String,
var imgurl: String,
var isOn: Int,
var radius: Int,
var longitude: Double,
var latitude: Double,
var fenceShapeType: Int,// fenceShapeType 围栏类型,1是圆形2是矩形 3是六边形
var fenceType: Int,//围栏类型,1是Safe Zone,2是No Go Zone
var fenceNameType: Int,//名称类型,1是home,2是Office,3是Garden,4是Park,5是Play,6是Garage,7是vegetable garden,8是River
var longitudeA: Double,
var latitudeA: Double,
var longitudeB: Double,
var latitudeB: Double,
var longitudeC: Double,
var latitudeC: Double,
var longitudeD: Double,
var latitudeD: Double,
var longitudeE: Double,
var latitudeE: Double,
var longitudeF: Double,
var latitudeF: Double,
var longitudeCenter: Double,
var latitudeCenter: Double,
var ancillaryLatitude: Double,
var ancillaryLongitude: Double,
var ancillaryOtherLatitude: Double,
var ancillaryOtherLongitude: Double,
var longDistance: Int,
var shortDistance: Int,
var startDrag: Boolean//围栏形状是否开始拖动
) : Parcelable, BaseDiffBean() {
constructor() : this(
"",
"",
"",
"",
"",
"",
0,
0,
0.0,
0.0,
1,
1,
1,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0,
0,
false
)
override fun isSameObject(other: Any): Boolean {
val oldItem = other as FencesBean
return oldItem.fenceId == fenceId
}
override fun hasSameContent(other: Any): Boolean {
val oldItem = other as FencesBean
return oldItem.isOn == isOn && oldItem.name == name && oldItem.imgurl == imgurl && oldItem.address == address && oldItem.fenceType == fenceType
}
}

View File

@@ -0,0 +1,16 @@
package com.abbidot.tracker.bean
/**
*Created by .yzq on 2023/3/22/022.
* @link
* @description:固件信息
*/
data class FirmwareBean(
var deviceName: String,
var version: String,
var remark: String,
var fileName: String,
var firmwareUrl: String,
var mac: String,
var firmwareSize: String
)

View File

@@ -0,0 +1,19 @@
package com.abbidot.tracker.bean
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
/**
*Created by .yzq on 2024/4/25/025.
* @link
* @description:获取围栏数据返回
*/
@Parcelize
data class GetFencesBean(
var latitude: Double,
var longitude: Double,
var normalFenceList: MutableList<FencesBean>?,
var nogoFenceList: MutableList<FencesBean>?
) : Parcelable {
constructor() : this(0.0, 0.0, null, null)
}

View File

@@ -0,0 +1,31 @@
package com.abbidot.tracker.bean
import android.os.Parcelable
import com.abbidot.tracker.constant.ConstantInt
import kotlinx.parcelize.Parcelize
/**
*Created by .yzq on 2022/3/16/016.
* @link
* @description:
*/
@Parcelize
data class HistoryDataBean(var dayTime: String,
var deviceId: String,
var deviceInfoId: String,
var historyPointId: String,
var latitude: Double,
var longitude: Double,
var address: String,
var positionMode: Int,
var timeStamp: Long,
var ledSwitch: Int,
var gnssSignal: Int,
var batteryLevel: Int,
var lightMode: Int,
@ConstantInt var inFance: Int,
var petName: String,
var petImgurl: String) : Parcelable {
constructor() : this("", "", "", "", 0.0, 0.0, "", 0, 0L, 0, 0, 0, 0, ConstantInt.GoodZone, "",
"")
}

View File

@@ -0,0 +1,14 @@
package com.abbidot.tracker.bean
/**
*Created by .yzq on 2022/3/15/015.
* @link
* @description:
*/
data class HomeDataBean(
var activeTime: ActiveTimeBean?,
var sleepTime: SleepTimeBean?,
var updateTime: Long
) {
constructor() : this(null, null, 0)
}

View File

@@ -0,0 +1,10 @@
package com.abbidot.tracker.bean
/**
*Created by .yzq on 2024/12/4/004.
* @link
* @description:设备邀请信息
*/
data class InviteInfoBean(
var deleteArray: MutableList<FamilyBean>, var inviteArray: MutableList<FamilyBean>
)

View File

@@ -0,0 +1,16 @@
package com.abbidot.tracker.bean
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
/**
*Created by .yzq on 2023/7/10/010.
* @link
* @description:
*/
@Parcelize
data class LKSimListBean(
var partnerCode: String, var planList: MutableList<LKSimSetMealBean>?
) : Parcelable {
constructor() : this("", null)
}

View File

@@ -0,0 +1,24 @@
package com.abbidot.tracker.bean
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
/**
*Created by .yzq on 2023/7/7/007.
* @link
* @description:领科sim卡套餐价格
*/
@Parcelize
data class LKSimPriceBean(
var autoRenewal: String,
var currency: String,
var currencySymbol: String,
var discountPriceCNY: String,
var discountPriceUSD: Double,
var orderPeriod: String,
var packageType: String,
var specifications: String,
var specifiedNameLabel: String
) : Parcelable {
constructor() : this("", "", "", "", 0.0, "", "", "", "")
}

View File

@@ -0,0 +1,27 @@
package com.abbidot.tracker.bean
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
/**
*Created by .yzq on 2023/7/7/007.
* @link
* @description:领科sim卡套餐
*/
@Parcelize
data class LKSimSetMealBean(
var currency: String,
var currencyId: String,
var currencySymbol: String,
var languageCode: String,
var minOrderPeriod: String,
var packageCode: String,
var servicePlanCode: String,
var servicePlanDetailsDesc: String,
var servicePlanShortDesc: String,
var servicePlanShowName: String,
var specAndPriceList: MutableList<LKSimPriceBean>?,
var stripeCoupon: String
) : Parcelable {
constructor() : this("", "", "", "", "", "", "", "", "", "", null, "")
}

Some files were not shown because too many files have changed in this diff Show More