Rename all of the things... All of them. (#13847)

* Rename all the things!

* Fix sln on cake

* targets

* Rename all the things!

* Fix sln on cake

* Add this back so the build works

* Added .nuspec\* back

* Remove Core from XamlC

* Update Build.Tasks

* Fix ErrorMessages

* Try fix build

* Update gitignore

* Update Microsoft.Maui-net6.sln

* Fix controlgallery reference

* Fix Maui reference on iOS sample

* Fix ControLGallery sln

* Fix xaml unit tests

* Fix Maps references

* Fix ControlGallery

* Don't build gallery

* Compile 462 for new

* Dont build UAP

* AndroidUseIntermediateDesignerFile

* Fix UAP

* Don't build control gallery for now

Co-authored-by: Rui Marinho <me@ruimarinho.net>
Co-authored-by: Matthew Leibowitz <mattleibow@live.com>
This commit is contained in:
Jonathan Dick 2021-02-24 18:50:31 -05:00 коммит произвёл GitHub
Родитель 253053e9e2
Коммит ac201994f2
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
6068 изменённых файлов: 176203 добавлений и 175993 удалений

442
.gitignore поставляемый
Просмотреть файл

@ -1,86 +1,364 @@
bin ## Ignore Visual Studio temporary files, build results, and
obj ## files generated by popular Visual Studio add-ons.
classic_bin ##
classic_obj ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
*.dll
*.mdb .nuspec/
*.exe
*.log # User-specific files
*.userprefs *.rsuser
*.suo *.suo
_docs.xml
UpgradeLog*
docs/*.xml
.nuspec/*.nupkg
*UpgradeReport*
*.user *.user
*.DS_Store *.userosscache
*.ide *.sln.docstates
.vs
*.designer.cs # User-specific files (MonoDevelop/Xamarin Studio)
*project.lock.json *.userprefs
!*ControlResources*.designer.cs
!*Resources.Designer.cs # Mono auto generated files
!Xamarin.Forms.VSTemplate/**/*.designer.cs mono_crash.*
!NuGet.exe
*test-results* # Build results
*/PerfLogs/* [Dd]ebug/
*.sap [Dd]ebugPublic/
/packages [Rr]elease/
!.xamarin-component/** [Rr]eleases/
*.xam x64/
Components/ x86/
!GooglePlayServices/** [Ww][Ii][Nn]32/
.irb-history [Aa][Rr][Mm]/
screenshot_* [Aa][Rr][Mm]64/
!Xamarin.Forms.Addin/libs/** bld/
!Xamarin.Forms.Addin/Packages/Xamarin.Forms.*.nupkg [Bb]in/
*.remove [Oo]bj/
*/.metadata/* [Ll]og/
**/AndroidNative/FormsViewGroup/gen/com/xamarin/formsviewgroup/R.java [Ll]ogs/
**/AndroidNative/FormsViewGroup/gen/com/xamarin/formsviewgroup/BuildConfig.java
*.psess # Visual Studio 2015/2017 cache/options directory
TestResults/ .vs/
**/Xamarin.Forms.UITest.Validator/UITestCoverage/index.html # Uncomment if you have tasks that create the project's static files in wwwroot
!**/Xamarin.Forms.UITest.TestCloud/test-cloud.exe #wwwroot/
**/Xamarin.Forms.ControlGallery.Windows/AppPackages/
**/Xamarin.Forms.ControlGallery.WindowsPhone/AppPackages/ # Visual Studio 2017 auto generated files
**/Xamarin.Forms.ControlGallery.WindowsUniversal/AppPackages/ Generated\ Files/
**/Xamarin.Forms.ControlGallery.WindowsUniversal/BundleArtifacts/
**/Xamarin.Forms.Controls/secrets.txt # MSTest test Results
**/Xamarin.Forms.Controls/controlgallery.config [Tt]est[Rr]esult*/
**/Xamarin.Forms.ControlGallery.Android/Properties/MapsKey.cs [Bb]uild[Ll]og.*
*.tss
*.bak # NUnit
**/AndroidNative/local.properties *.VisualState.xml
**/AndroidNative/FormsViewGroup/build/
**/AndroidNative/build/
**/AndroidNative/.gradle/
!**/AndroidNative/gradlew
!**/AndroidNative/gradlew.bat
!**/EmbeddingTestBeds/Embedding.iOS/*.designer.cs
!**/DualScreen.Mac/*.designer.cs
*.nupkg
*.pdb
# temporary vim files
*.swp
/eng/tools/*
!/eng/tools/mdoc/
!/eng/tools/mdoc/**/*
caketools/
*.binlog
.ionide/**
/.nuspec
.XamarinFormsVersionFile.txt
.idea
Visual Studio 2019/**
TestResult.xml TestResult.xml
**/build/packages nunit-*.xml
WriteDevopsVariables.csproj
!**/Xamarin.Forms.Platform.GTK/Libs/**/* # Build Results of an ATL Project
!**/Xamarin.Forms.Build.Tasks/ErrorMessages.Designer.cs [Dd]ebugPS/
!**/Xamarin.Forms.Maps.WPF/Properties/Settings.Designer.cs [Rr]eleasePS/
!**/Xamarin.Forms.Maps.GTK/Libs/**/* dlldata.c
/tools
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog *.svclog
launchSettings.json *.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd

Просмотреть файл

@ -0,0 +1,65 @@
<?xml version="1.0"?>
<package >
<metadata>
<id>Xamarin.Forms.Visual.Material</id>
<version>$version$</version>
<authors>Microsoft</authors>
<owners>microsoft xamarin</owners>
<tags>xamarin forms visual material xamarinforms xamarinformsvisualmaterial xamarin.forms.visual.material</tags>
<license type="expression">MIT</license>
<icon>Assets\xamarin_128x128.png</icon>
<projectUrl>http://xamarin.com/forms</projectUrl>
<repository type="git" url="https://github.com/xamarin/xamarin.forms"/>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<description>Material renderers for Xamarin.Forms</description>
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
<dependencies>
<group>
<dependency id="Xamarin.Forms" version="$version$"/>
</group>
<group targetFramework="MonoAndroid10">
<dependency id="Xamarin.Forms" version="$version$"/>
</group>
<group targetFramework="MonoAndroid10.0">
<dependency id="Xamarin.AndroidX.Lifecycle.LiveData" version="2.2.0.4" />
<dependency id="Xamarin.Google.Android.Material" version="1.2.1.1" />
</group>
<group targetFramework="Xamarin.iOS10">
<dependency id="Xamarin.iOS.MaterialComponents" version="92.0.0"/>
</group>
<group targetFramework="tizen40">
<dependency id="Tizen.NET" version="4.0.0"/>
<dependency id="Tizen.NET.MaterialComponents" version="0.9.7-preview"/>
</group>
</dependencies>
</metadata>
<files>
<!--Icon-->
<file src="..\Assets\xamarin_128x128.png" target="Assets\" />
<!--netstandard-->
<file src="_._" target="lib\netstandard1.0\_._" />
<!--Android 10-->
<file src="_._" target="lib\MonoAndroid10\_._" />
<file src="Microsoft.Maui.Controls.Compatibility.Visual.Material.targets" target="build\MonoAndroid10\Microsoft.Maui.Controls.Compatibility.Visual.Material.targets" />
<!--Android 10 buildTransitive-->
<file src="Microsoft.Maui.Controls.Compatibility.Visual.Material.targets" target="buildTransitive\MonoAndroid10\Microsoft.Maui.Controls.Compatibility.Visual.Material.targets" />
<!--Android 10.0-->
<file src="..\Xamarin.Forms.Material.Android\bin\$Configuration$\monoandroid10.0\Xamarin.Forms.Material.dll" target="lib\MonoAndroid10.0" />
<file src="..\Xamarin.Forms.Material.Android\bin\$Configuration$\monoandroid10.0\Xamarin.Forms.Material.*pdb" target="lib\MonoAndroid10.0" />
<file src="..\Xamarin.Forms.Material.Android\bin\$Configuration$\monoandroid10.0\Xamarin.Forms.Material.*mdb" target="lib\MonoAndroid10.0" />
<!--iOS-->
<file src="..\Xamarin.Forms.Material.iOS\bin\$Configuration$\Xamarin.Forms.Material.dll" target="lib\Xamarin.iOS10" />
<file src="..\Xamarin.Forms.Material.iOS\bin\$Configuration$\Xamarin.Forms.Material.*pdb" target="lib\Xamarin.iOS10" />
<file src="..\Xamarin.Forms.Material.iOS\bin\$Configuration$\Xamarin.Forms.Material.*mdb" target="lib\Xamarin.iOS10" />
<!--Tizen-->
<file src="..\Xamarin.Forms.Material.Tizen\bin\$Configuration$\tizen40\Xamarin.Forms.Material.dll" target="lib\tizen40" />
<file src="..\Xamarin.Forms.Material.Tizen\bin\$Configuration$\tizen40\Xamarin.Forms.Material.*pdb" target="lib\tizen40" />
</files>
</package>

Просмотреть файл

@ -0,0 +1,275 @@
<?xml version="1.0"?>
<package >
<metadata>
<id>Microsoft.Maui.Controls</id>
<version>$version$</version>
<authors>Microsoft</authors>
<owners>microsoft xamarin</owners>
<tags>xamarin forms xamarinforms xamarin.forms</tags>
<license type="expression">MIT</license>
<icon>Assets\xamarin_128x128.png</icon>
<projectUrl>http://xamarin.com/forms</projectUrl>
<repository type="git" url="https://github.com/xamarin/xamarin.forms"/>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<description>Build native UIs for iOS, Android, UWP, macOS, Tizen and many more from a single, shared C# codebase</description>
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
<dependencies>
<group targetFramework="MonoAndroid10.0">
<dependency id="Xamarin.AndroidX.Lifecycle.LiveData" version="2.2.0.4" />
<dependency id="Xamarin.Google.Android.Material" version="1.2.1.1" />
<dependency id="Xamarin.AndroidX.Legacy.Support.V4" version="1.0.0.6" />
<dependency id="Xamarin.AndroidX.Browser" version="1.3.0" />
</group>
<!--<group targetFramework="net6.0-windows10.0.18362.0">
<dependency id="Microsoft.WinUI" version="3.0.0-preview3.201113.0" />
</group>-->
<group targetFramework="netstandard2.0">
</group>
<group targetFramework="Xamarin.iOS10">
</group>
<!-- <group targetFramework="tizen40">
<dependency id="Tizen.NET" version="4.0.0"/>
<dependency id="SkiaSharp.Views" version="2.80.2"/>
</group> -->
</dependencies>
<!-- DO NOT DELETE THESE REFERENCES -->
<!-- IF YOU DELETE THESE REFERENCES THE PACKAGE WILL NOT WORK ON MAC -->
<!-- https://github.com/xamarin/Xamarin.Forms/pull/2575 -->
<!-- DO NOT DELETE THESE REFERENCES -->
<references>
<group>
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
<reference file="Xamarin.Platform.dll" />
</group>
<group targetFramework="Xamarin.iOS10">
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
<reference file="Xamarin.Forms.Platform.iOS.dll" />
<reference file="Xamarin.Platform.dll" />
</group>
<group targetFramework="MonoAndroid10.0">
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
<reference file="FormsViewGroup.dll" />
<reference file="Xamarin.Forms.Platform.Android.dll" />
<reference file="Xamarin.Platform.dll" />
</group>
<!--<group targetFramework="net6.0-windows10.0.18362.0">
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
<reference file="Xamarin.Forms.Platform.UAP.dll" />
<reference file="Xamarin.Platform.dll" />
</group>-->
<!-- <group targetFramework="tizen40">
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Platform.Tizen.dll" />
<reference file="Xamarin.Forms.Platform.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
</group> -->
</references>
</metadata>
<files>
<!--Icon-->
<file src="..\Assets\xamarin_128x128.png" target="Assets\" />
<!--netstandard-->
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="lib\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*pdb" target="lib\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*mdb" target="lib\netstandard2.0" />
<file src="..\eng\docs\Xamarin.Forms.Core.xml" target="lib\netstandard2.0" />
<file src="..\eng\docs\Xamarin.Forms.Xaml.xml" target="lib\netstandard2.0" />
<file src="..\eng\docs\**\Xamarin.Forms.Core.xml" target="lib\netstandard2.0" />
<file src="..\eng\docs\**\Xamarin.Forms.Xaml.xml" target="lib\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="lib\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*pdb" target="lib\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*mdb" target="lib\netstandard2.0" />
<!--Handlers-->
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.dll" target="lib\netstandard2.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.*pdb" target="lib\netstandard2.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.*mdb" target="lib\netstandard2.0" />
<!--Xamlc stuff-->
<file src="Microsoft.Maui.targets" target="build" />
<file src="Microsoft.Maui.props" target="build" />
<file src="Microsoft.Maui.Controls.DefaultItems.targets" target="build" />
<file src="Microsoft.Maui.Controls.DefaultItems.props" target="build" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Build.Tasks.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Mdb.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Pdb.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Rocks.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\System.CodeDom.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Build.Tasks.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Core.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Xaml.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Mdb.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Pdb.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Rocks.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\System.ValueTuple.dll" target="build\net462" />
<!--Xamlc stuff buildTransitive-->
<file src="Microsoft.Maui.targets" target="buildTransitive" />
<file src="Microsoft.Maui.props" target="buildTransitive" />
<file src="Microsoft.Maui.Controls.DefaultItems.targets" target="buildTransitive" />
<file src="Microsoft.Maui.Controls.DefaultItems.props" target="buildTransitive" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Build.Tasks.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Mdb.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Pdb.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Rocks.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\System.CodeDom.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Build.Tasks.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Core.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Xaml.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Mdb.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Pdb.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Rocks.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\System.ValueTuple.dll" target="buildTransitive\net462" />
<!-- Xaml Design-time Stuff -->
<file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\netstandard2.0\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\netstandard2.0\Design" />
<!-- <file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\netstandard1.0\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\netstandard1.0\Design" /> -->
<file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\MonoAndroid10.0\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\MonoAndroid10.0\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\Xamarin.iOS10\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\Xamarin.iOS10\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\net5.0-windows10.0.18362.0\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\net5.0-windows10.0.18362.0\Design" />
<!-- <file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\tizen40\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\tizen40\Design" /> -->
<!--Android 10-->
<file src="proguard.cfg" target="build\MonoAndroid10\proguard.cfg" />
<file src="proguard.cfg" target="buildTransitive\MonoAndroid10\proguard.cfg" />
<!--Android 10-->
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android\bin\$Configuration$\MonoAndroid10.0\Xamarin.Forms.Platform.Android.dll" target="lib\MonoAndroid10.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android\bin\$Configuration$\MonoAndroid10.0\Xamarin.Forms.Platform.Android.*pdb" target="lib\MonoAndroid10.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android.FormsViewGroup\bin\$Configuration$\FormsViewGroup.dll" target="lib\MonoAndroid10.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android.FormsViewGroup\bin\$Configuration$\FormsViewGroup.*pdb" target="lib\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="lib\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*pdb" target="lib\MonoAndroid10.0" />
<file src="..\eng\docs\Xamarin.Forms.Core.xml" target="lib\MonoAndroid10.0" />
<file src="..\eng\docs\Xamarin.Forms.Xaml.xml" target="lib\MonoAndroid10.0" />
<file src="..\eng\docs\**\Xamarin.Forms.Core.xml" target="lib\MonoAndroid10.0" />
<file src="..\eng\docs\**\Xamarin.Forms.Xaml.xml" target="lib\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="lib\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*pdb" target="lib\MonoAndroid10.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\monoandroid10.0\Xamarin.Platform.dll" target="lib\MonoAndroid10.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\monoandroid10.0\Xamarin.Platform.*pdb" target="lib\MonoAndroid10.0" />
<!--iPhone Unified-->
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\Xamarin.Forms.Platform.iOS.dll" target="lib\Xamarin.iOS10" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\Xamarin.Forms.Platform.iOS.*pdb" target="lib\Xamarin.iOS10" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\Xamarin.Forms.Platform.iOS.*mdb" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*pdb" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*mdb" target="lib\Xamarin.iOS10" />
<file src="..\eng\docs\Xamarin.Forms.Core.xml" target="lib\Xamarin.iOS10" />
<file src="..\eng\docs\Xamarin.Forms.Xaml.xml" target="lib\Xamarin.iOS10" />
<file src="..\eng\docs\**\Xamarin.Forms.Core.xml" target="lib\Xamarin.iOS10" />
<file src="..\eng\docs\**\Xamarin.Forms.Xaml.xml" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*pdb" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*mdb" target="lib\Xamarin.iOS10" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\Xamarin.iOS10\Xamarin.Platform.dll" target="lib\Xamarin.iOS10" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\Xamarin.iOS10\Xamarin.Platform.*pdb" target="lib\Xamarin.iOS10" />
<!--net5.0-windows10.0.18362.0-->
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\bin\$Configuration$\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP.dll" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\bin\$Configuration$\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP.*pdb" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\bin\$Configuration$\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP.*pri" target="runtimes\net5.0-windows10.0.18362.0\native" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*pdb" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\eng\docs\Xamarin.Forms.Core.xml" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*pdb" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\eng\docs\Xamarin.Forms.Xaml.xml" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.dll" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.*pdb" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\bin\$Configuration$\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP\**\*.xaml" target="lib\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP" />
<!-- iOS Localized String Resource Assemblies -->
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ar\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ar" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ca\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ca" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\cs\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\cs" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\da\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\da" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\de\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\de" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\el\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\el" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\es\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\es" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\fi\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\fi" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\fr\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\fr" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\he\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\he" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\hi\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\hi" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\hr\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\hr" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\hu\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\hu" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\id\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\id" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\it\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\it" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ja\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ja" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ko\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ko" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ms\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ms" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\nb\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\nb" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\nl\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\nl" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\pl\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\pl" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\pt-BR\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\pt-BR" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\pt\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\pt" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ro\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ro" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ru\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ru" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\sk\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\sk" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\sv\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\sv" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\th\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\th" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\tr\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\tr" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\uk\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\uk" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\vi\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\vi" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\zh-Hans\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\zh-Hans" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\zh-Hant\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\zh-Hant" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\zh-HK\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\zh-HK" />
<!--Tizen-->
<!-- <file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Tizen\bin\$Configuration$\tizen40\Xamarin.Forms.Platform.Tizen.dll" target="lib\tizen40" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Tizen\bin\$Configuration$\tizen40\Xamarin.Forms.Platform.Tizen.*pdb" target="lib\tizen40" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Tizen\bin\$Configuration$\tizen40\Xamarin.Forms.Platform.Tizen.dll" target="lib\tizen40" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="lib\tizen40" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*pdb" target="lib\tizen40" />
<file src="..\eng\docs\Xamarin.Forms.Core.xml" target="lib\tizen40" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="lib\tizen40" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*pdb" target="lib\tizen40" />
<file src="..\eng\docs\Xamarin.Forms.Xaml.xml" target="lib\tizen40" /> -->
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android\bin\$Configuration$\MonoAndroid10.0\Xamarin.Forms.Platform.Android.dll" target="ref\MonoAndroid10.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android.FormsViewGroup\bin\$Configuration$\FormsViewGroup.dll" target="ref\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="ref\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="ref\MonoAndroid10.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\monoandroid10.0\Xamarin.Platform.dll" target="ref\MonoAndroid10.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\Xamarin.Forms.Platform.iOS.dll" target="ref\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="ref\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="ref\Xamarin.iOS10" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\xamarin.ios10\Xamarin.Platform.dll" target="ref\Xamarin.iOS10" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\bin\$Configuration$\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP.dll" target="ref\net5.0-windows10.0.18362.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="ref\net5.0-windows10.0.18362.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="ref\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.dll" target="ref\net5.0-windows10.0.18362.0" />
</files>
</package>

Просмотреть файл

@ -0,0 +1,19 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
When using Sdk-style projects and default embedded resource items are enabled, automatically
add the XAML files and fix up item metadata to pair them with code files.
This is in the props file, not the targets file, so that projects can remove/update these items.
The default value for EnableDefaultXamlItems is set in the targets, which works because
the property evaluation pass comes before the item evaluation pass.
The actual item groups are in a separate conditionally-imported file as they use constructs that
are not compatible with older MSBuild versions.
-->
<Import Project="$(MSBuildThisFileDirectory)Microsoft.Maui.Controls.DefaultItems.props" Condition="'$(MSBuildSDKsPath)'!=''" />
<PropertyGroup>
<_IsHotRestartDefined>$([System.Text.RegularExpressions.Regex]::IsMatch('$(DefineConstants.Trim())', '(^|;)HOTRESTART($|;)'))</_IsHotRestartDefined>
<DefineConstants Condition="!$(_IsHotRestartDefined) And '$(IsHotRestartBuild)' == 'true'">HOTRESTART;$(DefineConstants)</DefineConstants>
</PropertyGroup>
</Project>

Просмотреть файл

@ -0,0 +1,212 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<_MauiBuildTasksLocation Condition="'$(_MauiBuildTasksLocation)' == '' AND '$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)netstandard2.0\</_MauiBuildTasksLocation>
<_MauiBuildTasksLocation Condition="'$(_MauiBuildTasksLocation)' == ''">$(MSBuildThisFileDirectory)net462\</_MauiBuildTasksLocation>
</PropertyGroup>
<UsingTask TaskName="Microsoft.Maui.Controls.Build.Tasks.XamlGTask" AssemblyFile="$(_MauiBuildTasksLocation)Microsoft.Maui.Controls.Build.Tasks.dll" />
<UsingTask TaskName="Microsoft.Maui.Controls.Build.Tasks.CssGTask" AssemblyFile="$(_MauiBuildTasksLocation)Microsoft.Maui.Controls.Build.Tasks.dll" />
<UsingTask TaskName="Microsoft.Maui.Controls.Build.Tasks.XamlCTask" AssemblyFile="$(_MauiBuildTasksLocation)Microsoft.Maui.Controls.Build.Tasks.dll" />
<PropertyGroup>
<SynthesizeLinkMetadata>true</SynthesizeLinkMetadata>
<EnableDefaultXamlItems Condition="'$(EnableDefaultXamlItems)'==''">True</EnableDefaultXamlItems>
<_DefaultXamlItemsEnabled>False</_DefaultXamlItemsEnabled>
<EnableDefaultCssItems Condition="'$(EnableDefaultCssItems)'==''">True</EnableDefaultCssItems>
<_DefaultCssItemsEnabled>False</_DefaultCssItemsEnabled>
<!-- The WINUI check for this only runs when there is an empty string so I just convert false to an empty string to fall in line with our other properties -->
<SkipMicrosoftUIXamlCheckTargetPlatformVersion Condition="'$(SkipMicrosoftUIXamlCheckTargetPlatformVersion)'==''">true</SkipMicrosoftUIXamlCheckTargetPlatformVersion>
<SkipMicrosoftUIXamlCheckTargetPlatformVersion Condition="'$(SkipMicrosoftUIXamlCheckTargetPlatformVersion)'=='false'"></SkipMicrosoftUIXamlCheckTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(MSBuildThisFileDirectory)Microsoft.Maui.Controls.DefaultItems.targets" Condition="'$(MSBuildSDKsPath)'!=''" />
<ItemGroup>
<ProjectCapability Include="XamarinForms" />
<ProjectCapability Include="Maui" />
</ItemGroup>
<!-- Check Tasks ABI and other validations -->
<PropertyGroup>
<_MauiTargetsImportedAgain Condition="'$(_MauiTargetsImported)'=='True'">True</_MauiTargetsImportedAgain>
<_MauiTargetsImported>True</_MauiTargetsImported>
<IsXBuild Condition="'$(MSBuildRuntimeType)' == ''">true</IsXBuild>
<IsXBuild Condition="'$(MSBuildRuntimeType)' != ''">false</IsXBuild>
</PropertyGroup>
<Target Name="_ValidateMauiTasks" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" Condition="'$(MauiDisableTargetsValidation)' != 'True'">
<Error Code="XF001"
Text="Microsoft.Maui targets have been imported multiple times. Please check your project file and remove the duplicate import(s)."
Condition="'$(_MauiTargetsImportedAgain)' == 'True'" />
</Target>
<Target Name="_ValidateMSBuild" BeforeTargets="_CheckForInvalidConfigurationAndPlatform">
<Error Code="XF003"
Text="Microsoft.Maui requires msbuild. xbuild is no longer supported."
Condition="'$(IsXBuild)' == 'true'" />
</Target>
<Target Name="_ValidateNETFrameworkVersion"
BeforeTargets="_CheckForInvalidConfigurationAndPlatform"
Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' AND '$(TargetFrameworkVersion.Substring(1))' &lt; '4.6.1' AND '$(MauiDisableFrameworkVersionValidation)' != 'True'">
<Error Code="XF004"
Text="Microsoft.Maui requires .NETFramework >= v4.6.1. You have '$(TargetFrameworkVersion)'" />
</Target>
<!-- XamlG -->
<Target
Name="UpdateDesignTimeXaml"
DependsOnTargets="XamlG"/>
<PropertyGroup>
<CoreCompileDependsOn>
XamlG;
$(CoreCompileDependsOn);
</CoreCompileDependsOn>
</PropertyGroup>
<Target
Name="_FindXamlGFiles"
DependsOnTargets="PrepareResourceNames">
<ItemGroup>
<_XamlGInputs
Include="@(EmbeddedResource)"
Condition="'%(Extension)' == '.xaml' AND '$(DefaultLanguageSourceExtension)' == '.cs' AND '%(TargetPath)' != ''" />
<_XamlGOutputs
Include="@(_XamlGInputs->'$(IntermediateOutputPath)%(TargetPath).g.cs')" />
</ItemGroup>
</Target>
<Target
Name="XamlG"
BeforeTargets="BeforeCompile"
DependsOnTargets="_FindXamlGFiles; PrepareResourceNames; AfterResolveReferences"
Inputs="@(_XamlGInputs)"
Outputs="@(_XamlGOutputs)">
<PropertyGroup>
<ReferencedAssemblies>@(ReferencePath)</ReferencedAssemblies>
</PropertyGroup>
<XamlGTask
XamlFiles="@(_XamlGInputs)"
OutputFiles="@(_XamlGOutputs)"
Language="$(Language)"
References = "$(ReferencedAssemblies)"
AssemblyName="$(AssemblyName)" />
<ItemGroup>
<FileWrites Include="@(_XamlGOutputs)" />
<Compile Include="@(_XamlGOutputs)" />
</ItemGroup>
</Target>
<!-- XamlC -->
<PropertyGroup>
<CompileDependsOn>
$(CompileDependsOn);
XamlC;
</CompileDependsOn>
</PropertyGroup>
<Target Name="XamlC"
AfterTargets="AfterCompile"
DependsOnTargets="_FindXamlGFiles"
Inputs="$(IntermediateOutputPath)$(TargetFileName)"
Outputs="$(IntermediateOutputPath)XamlC.stamp"
Condition=" '$(DesignTimeBuild)' != 'True' AND '@(_XamlGInputs->Count())' != '0' ">
<PropertyGroup>
<_MauiXamlCValidateOnly>$(MauiXamlCValidateOnly)</_MauiXamlCValidateOnly>
<_MauiXamlCValidateOnly Condition="'$(BuildingForLiveUnitTesting)' == 'True' ">True</_MauiXamlCValidateOnly>
</PropertyGroup>
<XamlCTask
Assembly = "$(IntermediateOutputPath)$(TargetFileName)"
ReferencePath = "@(ReferencePath)"
OptimizeIL = "true"
DebugSymbols = "$(DebugSymbols)"
DebugType = "$(DebugType)"
ValidateOnly = "$(_MauiXamlCValidateOnly)"
KeepXamlResources = "$(MauiKeepXamlResources)" />
<Touch Files="$(IntermediateOutputPath)XamlC.stamp" AlwaysCreate="True" />
<ItemGroup>
<FileWrites Include="$(IntermediateOutputPath)XamlC.stamp" />
</ItemGroup>
</Target>
<!-- CssG -->
<PropertyGroup>
<CoreCompileDependsOn>
CssG;
$(CoreCompileDependsOn);
</CoreCompileDependsOn>
</PropertyGroup>
<Target Name="_FindCSSFiles" DependsOnTargets="PrepareResourceNames">
<ItemGroup>
<_CSSInputs Include="@(EmbeddedResource)" Condition="'%(Extension)' == '.css' AND '$(DefaultLanguageSourceExtension)' == '.cs' AND '%(TargetPath)' != ''" />
<_CSSOutputs Include="@(_CSSInputs->'$(IntermediateOutputPath)%(TargetPath).g.cs')" />
</ItemGroup>
</Target>
<Target Name="CssG" BeforeTargets="BeforeCompile" DependsOnTargets="_FindCSSFiles" Inputs="@(_CSSInputs)" Outputs="@(_CSSOutputs)">
<CssGTask
CSSFiles="@(_CSSInputs)"
OutputFiles="@(_CSSOutputs)"
Language = "$(Language)"
AssemblyName = "$(AssemblyName)" />
<ItemGroup>
<FileWrites Include="@(_CSSOutputs)" />
<Compile Include="@(_CSSOutputs)" />
</ItemGroup>
</Target>
<!--
Platform Specific Targets.
We can't use a framework specific targets file because it breaks shared projects i.e. /build/MonoAndroid10/Microsoft.Maui.Controls.targets
-->
<!-- MonoAndroid targets. -->
<PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == 'MonoAndroid'">
<CoreCompileDependsOn>
IncludeProguardForAndroid;
$(CoreCompileDependsOn);
</CoreCompileDependsOn>
<PrepareForBuildDependsOn>
ValidateTargetFrameworkVersionForMaui;
$(PrepareForBuildDependsOn);
</PrepareForBuildDependsOn>
</PropertyGroup>
<Target Name="IncludeProguardForAndroid" Condition="'$(MauiDisableDefaultProguardConfiguration)' != 'True'">
<ItemGroup>
<ProguardConfiguration Include="$(MSBuildThisFileDirectory)MonoAndroid10\proguard.cfg" />
</ItemGroup>
</Target>
<Target Name="ValidateTargetFrameworkVersionForMaui" Condition="'$(MauiDisableTargetFrameworkValidation)' != 'True'">
<PropertyGroup>
<MinTargetFrameworkVersionForMaui>10.0</MinTargetFrameworkVersionForMaui>
<TargetFrameworkVersionWithoutV>$(TargetFrameworkVersion.TrimStart('vV'))</TargetFrameworkVersionWithoutV>
</PropertyGroup>
<Error Code="XF005" Condition="$(TargetFrameworkVersionWithoutV) &lt; $(MinTargetFrameworkVersionForMaui)"
Text="The %24(TargetFrameworkVersion) for $(ProjectName) ($(TargetFrameworkVersion)) is less than the minimum required %24(TargetFrameworkVersion) for Microsoft.Maui ($(MinTargetFrameworkVersionForMaui)). You need to increase the %24(TargetFrameworkVersion) for $(ProjectName)." />
</Target>
<!-- UWP Targets-->
<Target Name="WinUICheckTargetPlatformVersion" BeforeTargets="PrepareForBuild"
Condition="'$(TargetPlatformIdentifier)' == 'UAP' AND '$(TargetPlatformVersion)' != '' AND '$(TargetPlatformMinVersion)' != ''">
<PropertyGroup>
<MicrosoftUIXamlTargetPlatformMinCheckValue>$([System.Version]::Parse('$(TargetPlatformMinVersion)').Build)</MicrosoftUIXamlTargetPlatformMinCheckValue>
</PropertyGroup>
<Warning
Text="Microsoft.Maui recommends TargetPlatformMinVersion &gt;= 10.0.15063.0 (current project is $(MicrosoftUIXamlTargetPlatformMinCheckValue))"
Condition="$(MicrosoftUIXamlTargetPlatformMinCheckValue) &lt; 15063" />
<PropertyGroup>
<MicrosoftUIXamlTargetPlatformCheckValue>$([System.Version]::Parse('$(TargetPlatformVersion)').Build)</MicrosoftUIXamlTargetPlatformCheckValue>
</PropertyGroup>
<Warning
Text="Microsoft.Maui recommends TargetPlatformVersion &gt;= 10.0.18362.0 (current project is $(MicrosoftUIXamlTargetPlatformCheckValue))"
Condition="$(MicrosoftUIXamlTargetPlatformCheckValue) &lt; 18362 AND '$(OutputType)'!='Library'" />
<Warning
Text="Microsoft.Maui recommends TargetPlatformVersion &gt;= 10.0.14393.0 (current project is $(MicrosoftUIXamlTargetPlatformCheckValue))"
Condition="$(MicrosoftUIXamlTargetPlatformCheckValue) &lt; 14393 AND '$(OutputType)'=='Library'" />
</Target>
</Project>

Просмотреть файл

@ -1,65 +0,0 @@
<?xml version="1.0"?>
<package >
<metadata>
<id>Xamarin.Forms.Visual.Material</id>
<version>$version$</version>
<authors>Microsoft</authors>
<owners>microsoft xamarin</owners>
<tags>xamarin forms visual material xamarinforms xamarinformsvisualmaterial xamarin.forms.visual.material</tags>
<license type="expression">MIT</license>
<icon>Assets\xamarin_128x128.png</icon>
<projectUrl>http://xamarin.com/forms</projectUrl>
<repository type="git" url="https://github.com/xamarin/xamarin.forms"/>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<description>Material renderers for Xamarin.Forms</description>
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
<dependencies>
<group>
<dependency id="Xamarin.Forms" version="$version$"/>
</group>
<group targetFramework="MonoAndroid10">
<dependency id="Xamarin.Forms" version="$version$"/>
</group>
<group targetFramework="MonoAndroid10.0">
<dependency id="Xamarin.AndroidX.Lifecycle.LiveData" version="2.2.0.4" />
<dependency id="Xamarin.Google.Android.Material" version="1.2.1.1" />
</group>
<group targetFramework="Xamarin.iOS10">
<dependency id="Xamarin.iOS.MaterialComponents" version="92.0.0"/>
</group>
<group targetFramework="tizen40">
<dependency id="Tizen.NET" version="4.0.0"/>
<dependency id="Tizen.NET.MaterialComponents" version="0.9.7-preview"/>
</group>
</dependencies>
</metadata>
<files>
<!--Icon-->
<file src="..\Assets\xamarin_128x128.png" target="Assets\" />
<!--netstandard-->
<file src="_._" target="lib\netstandard1.0\_._" />
<!--Android 10-->
<file src="_._" target="lib\MonoAndroid10\_._" />
<file src="Xamarin.Forms.Visual.Material.targets" target="build\MonoAndroid10\Xamarin.Forms.Visual.Material.targets" />
<!--Android 10 buildTransitive-->
<file src="Xamarin.Forms.Visual.Material.targets" target="buildTransitive\MonoAndroid10\Xamarin.Forms.Visual.Material.targets" />
<!--Android 10.0-->
<file src="..\Xamarin.Forms.Material.Android\bin\$Configuration$\monoandroid10.0\Xamarin.Forms.Material.dll" target="lib\MonoAndroid10.0" />
<file src="..\Xamarin.Forms.Material.Android\bin\$Configuration$\monoandroid10.0\Xamarin.Forms.Material.*pdb" target="lib\MonoAndroid10.0" />
<file src="..\Xamarin.Forms.Material.Android\bin\$Configuration$\monoandroid10.0\Xamarin.Forms.Material.*mdb" target="lib\MonoAndroid10.0" />
<!--iOS-->
<file src="..\Xamarin.Forms.Material.iOS\bin\$Configuration$\Xamarin.Forms.Material.dll" target="lib\Xamarin.iOS10" />
<file src="..\Xamarin.Forms.Material.iOS\bin\$Configuration$\Xamarin.Forms.Material.*pdb" target="lib\Xamarin.iOS10" />
<file src="..\Xamarin.Forms.Material.iOS\bin\$Configuration$\Xamarin.Forms.Material.*mdb" target="lib\Xamarin.iOS10" />
<!--Tizen-->
<file src="..\Xamarin.Forms.Material.Tizen\bin\$Configuration$\tizen40\Xamarin.Forms.Material.dll" target="lib\tizen40" />
<file src="..\Xamarin.Forms.Material.Tizen\bin\$Configuration$\tizen40\Xamarin.Forms.Material.*pdb" target="lib\tizen40" />
</files>
</package>

Просмотреть файл

@ -1,275 +0,0 @@
<?xml version="1.0"?>
<package >
<metadata>
<id>Xamarin.Forms</id>
<version>$version$</version>
<authors>Microsoft</authors>
<owners>microsoft xamarin</owners>
<tags>xamarin forms xamarinforms xamarin.forms</tags>
<license type="expression">MIT</license>
<icon>Assets\xamarin_128x128.png</icon>
<projectUrl>http://xamarin.com/forms</projectUrl>
<repository type="git" url="https://github.com/xamarin/xamarin.forms"/>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<description>Build native UIs for iOS, Android, UWP, macOS, Tizen and many more from a single, shared C# codebase</description>
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
<dependencies>
<group targetFramework="MonoAndroid10.0">
<dependency id="Xamarin.AndroidX.Lifecycle.LiveData" version="2.2.0.4" />
<dependency id="Xamarin.Google.Android.Material" version="1.2.1.1" />
<dependency id="Xamarin.AndroidX.Legacy.Support.V4" version="1.0.0.6" />
<dependency id="Xamarin.AndroidX.Browser" version="1.3.0" />
</group>
<!--<group targetFramework="net6.0-windows10.0.18362.0">
<dependency id="Microsoft.WinUI" version="3.0.0-preview3.201113.0" />
</group>-->
<group targetFramework="netstandard2.0">
</group>
<group targetFramework="Xamarin.iOS10">
</group>
<!-- <group targetFramework="tizen40">
<dependency id="Tizen.NET" version="4.0.0"/>
<dependency id="SkiaSharp.Views" version="2.80.2"/>
</group> -->
</dependencies>
<!-- DO NOT DELETE THESE REFERENCES -->
<!-- IF YOU DELETE THESE REFERENCES THE PACKAGE WILL NOT WORK ON MAC -->
<!-- https://github.com/xamarin/Xamarin.Forms/pull/2575 -->
<!-- DO NOT DELETE THESE REFERENCES -->
<references>
<group>
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
<reference file="Xamarin.Platform.dll" />
</group>
<group targetFramework="Xamarin.iOS10">
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
<reference file="Xamarin.Forms.Platform.iOS.dll" />
<reference file="Xamarin.Platform.dll" />
</group>
<group targetFramework="MonoAndroid10.0">
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
<reference file="FormsViewGroup.dll" />
<reference file="Xamarin.Forms.Platform.Android.dll" />
<reference file="Xamarin.Platform.dll" />
</group>
<!--<group targetFramework="net6.0-windows10.0.18362.0">
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
<reference file="Xamarin.Forms.Platform.UAP.dll" />
<reference file="Xamarin.Platform.dll" />
</group>-->
<!-- <group targetFramework="tizen40">
<reference file="Xamarin.Forms.Core.dll" />
<reference file="Xamarin.Forms.Platform.Tizen.dll" />
<reference file="Xamarin.Forms.Platform.dll" />
<reference file="Xamarin.Forms.Xaml.dll" />
</group> -->
</references>
</metadata>
<files>
<!--Icon-->
<file src="..\Assets\xamarin_128x128.png" target="Assets\" />
<!--netstandard-->
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="lib\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*pdb" target="lib\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*mdb" target="lib\netstandard2.0" />
<file src="..\eng\docs\Xamarin.Forms.Core.xml" target="lib\netstandard2.0" />
<file src="..\eng\docs\Xamarin.Forms.Xaml.xml" target="lib\netstandard2.0" />
<file src="..\eng\docs\**\Xamarin.Forms.Core.xml" target="lib\netstandard2.0" />
<file src="..\eng\docs\**\Xamarin.Forms.Xaml.xml" target="lib\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="lib\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*pdb" target="lib\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*mdb" target="lib\netstandard2.0" />
<!--Handlers-->
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.dll" target="lib\netstandard2.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.*pdb" target="lib\netstandard2.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.*mdb" target="lib\netstandard2.0" />
<!--Xamlc stuff-->
<file src="Xamarin.Forms.targets" target="build" />
<file src="Xamarin.Forms.props" target="build" />
<file src="Xamarin.Forms.DefaultItems.targets" target="build" />
<file src="Xamarin.Forms.DefaultItems.props" target="build" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Build.Tasks.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Mdb.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Pdb.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Rocks.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\System.CodeDom.dll" target="build\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Build.Tasks.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Core.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Xaml.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Mdb.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Pdb.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Rocks.dll" target="build\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\System.ValueTuple.dll" target="build\net462" />
<!--Xamlc stuff buildTransitive-->
<file src="Xamarin.Forms.targets" target="buildTransitive" />
<file src="Xamarin.Forms.props" target="buildTransitive" />
<file src="Xamarin.Forms.DefaultItems.targets" target="buildTransitive" />
<file src="Xamarin.Forms.DefaultItems.props" target="buildTransitive" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Build.Tasks.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Mdb.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Pdb.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\Mono.Cecil.Rocks.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\netstandard2.0\System.CodeDom.dll" target="buildTransitive\netstandard2.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Build.Tasks.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Core.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Xamarin.Forms.Xaml.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Mdb.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Pdb.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\Mono.Cecil.Rocks.dll" target="buildTransitive\net462" />
<file src="..\src\Forms\src\Xamarin.Forms.Build.Tasks\bin\$Configuration$\net462\System.ValueTuple.dll" target="buildTransitive\net462" />
<!-- Xaml Design-time Stuff -->
<file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\netstandard2.0\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\netstandard2.0\Design" />
<!-- <file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\netstandard1.0\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\netstandard1.0\Design" /> -->
<file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\MonoAndroid10.0\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\MonoAndroid10.0\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\Xamarin.iOS10\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\Xamarin.iOS10\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\net5.0-windows10.0.18362.0\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\net5.0-windows10.0.18362.0\Design" />
<!-- <file src="..\src\Forms\src\Xamarin.Forms.Core.Design\bin\$Configuration$\Xamarin.Forms.Core.Design.dll" target="lib\tizen40\Design" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml.Design\bin\$Configuration$\Xamarin.Forms.Xaml.Design.dll" target="lib\tizen40\Design" /> -->
<!--Android 10-->
<file src="proguard.cfg" target="build\MonoAndroid10\proguard.cfg" />
<file src="proguard.cfg" target="buildTransitive\MonoAndroid10\proguard.cfg" />
<!--Android 10-->
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android\bin\$Configuration$\MonoAndroid10.0\Xamarin.Forms.Platform.Android.dll" target="lib\MonoAndroid10.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android\bin\$Configuration$\MonoAndroid10.0\Xamarin.Forms.Platform.Android.*pdb" target="lib\MonoAndroid10.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android.FormsViewGroup\bin\$Configuration$\FormsViewGroup.dll" target="lib\MonoAndroid10.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android.FormsViewGroup\bin\$Configuration$\FormsViewGroup.*pdb" target="lib\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="lib\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*pdb" target="lib\MonoAndroid10.0" />
<file src="..\eng\docs\Xamarin.Forms.Core.xml" target="lib\MonoAndroid10.0" />
<file src="..\eng\docs\Xamarin.Forms.Xaml.xml" target="lib\MonoAndroid10.0" />
<file src="..\eng\docs\**\Xamarin.Forms.Core.xml" target="lib\MonoAndroid10.0" />
<file src="..\eng\docs\**\Xamarin.Forms.Xaml.xml" target="lib\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="lib\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*pdb" target="lib\MonoAndroid10.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\monoandroid10.0\Xamarin.Platform.dll" target="lib\MonoAndroid10.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\monoandroid10.0\Xamarin.Platform.*pdb" target="lib\MonoAndroid10.0" />
<!--iPhone Unified-->
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\Xamarin.Forms.Platform.iOS.dll" target="lib\Xamarin.iOS10" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\Xamarin.Forms.Platform.iOS.*pdb" target="lib\Xamarin.iOS10" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\Xamarin.Forms.Platform.iOS.*mdb" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*pdb" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*mdb" target="lib\Xamarin.iOS10" />
<file src="..\eng\docs\Xamarin.Forms.Core.xml" target="lib\Xamarin.iOS10" />
<file src="..\eng\docs\Xamarin.Forms.Xaml.xml" target="lib\Xamarin.iOS10" />
<file src="..\eng\docs\**\Xamarin.Forms.Core.xml" target="lib\Xamarin.iOS10" />
<file src="..\eng\docs\**\Xamarin.Forms.Xaml.xml" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*pdb" target="lib\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*mdb" target="lib\Xamarin.iOS10" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\Xamarin.iOS10\Xamarin.Platform.dll" target="lib\Xamarin.iOS10" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\Xamarin.iOS10\Xamarin.Platform.*pdb" target="lib\Xamarin.iOS10" />
<!--net5.0-windows10.0.18362.0-->
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\bin\$Configuration$\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP.dll" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\bin\$Configuration$\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP.*pdb" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\bin\$Configuration$\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP.*pri" target="runtimes\net5.0-windows10.0.18362.0\native" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*pdb" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\eng\docs\Xamarin.Forms.Core.xml" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*pdb" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\eng\docs\Xamarin.Forms.Xaml.xml" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.dll" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.*pdb" target="lib\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\bin\$Configuration$\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP\**\*.xaml" target="lib\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP" />
<!-- iOS Localized String Resource Assemblies -->
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ar\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ar" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ca\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ca" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\cs\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\cs" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\da\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\da" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\de\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\de" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\el\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\el" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\es\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\es" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\fi\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\fi" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\fr\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\fr" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\he\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\he" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\hi\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\hi" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\hr\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\hr" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\hu\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\hu" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\id\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\id" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\it\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\it" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ja\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ja" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ko\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ko" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ms\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ms" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\nb\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\nb" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\nl\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\nl" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\pl\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\pl" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\pt-BR\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\pt-BR" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\pt\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\pt" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ro\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ro" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\ru\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\ru" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\sk\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\sk" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\sv\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\sv" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\th\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\th" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\tr\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\tr" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\uk\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\uk" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\vi\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\vi" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\zh-Hans\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\zh-Hans" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\zh-Hant\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\zh-Hant" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\zh-HK\Xamarin.Forms.Platform.iOS.resources.dll" target="lib\Xamarin.iOS10\zh-HK" />
<!--Tizen-->
<!-- <file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Tizen\bin\$Configuration$\tizen40\Xamarin.Forms.Platform.Tizen.dll" target="lib\tizen40" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Tizen\bin\$Configuration$\tizen40\Xamarin.Forms.Platform.Tizen.*pdb" target="lib\tizen40" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Tizen\bin\$Configuration$\tizen40\Xamarin.Forms.Platform.Tizen.dll" target="lib\tizen40" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="lib\tizen40" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.*pdb" target="lib\tizen40" />
<file src="..\eng\docs\Xamarin.Forms.Core.xml" target="lib\tizen40" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="lib\tizen40" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.*pdb" target="lib\tizen40" />
<file src="..\eng\docs\Xamarin.Forms.Xaml.xml" target="lib\tizen40" /> -->
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android\bin\$Configuration$\MonoAndroid10.0\Xamarin.Forms.Platform.Android.dll" target="ref\MonoAndroid10.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.Android.FormsViewGroup\bin\$Configuration$\FormsViewGroup.dll" target="ref\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="ref\MonoAndroid10.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="ref\MonoAndroid10.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\monoandroid10.0\Xamarin.Platform.dll" target="ref\MonoAndroid10.0" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\bin\$Configuration$\Xamarin.Forms.Platform.iOS.dll" target="ref\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="ref\Xamarin.iOS10" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="ref\Xamarin.iOS10" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\xamarin.ios10\Xamarin.Platform.dll" target="ref\Xamarin.iOS10" />
<file src="..\src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\bin\$Configuration$\net5.0-windows10.0.18362.0\Xamarin.Forms.Platform.UAP.dll" target="ref\net5.0-windows10.0.18362.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Core\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Core.dll" target="ref\net5.0-windows10.0.18362.0" />
<file src="..\src\Forms\src\Xamarin.Forms.Xaml\bin\$Configuration$\netstandard2.0\Xamarin.Forms.Xaml.dll" target="ref\net5.0-windows10.0.18362.0" />
<file src="..\src\Platform.Handlers\src\Xamarin.Platform.Handlers\bin\$Configuration$\netstandard2.0\Xamarin.Platform.dll" target="ref\net5.0-windows10.0.18362.0" />
</files>
</package>

Просмотреть файл

@ -1,19 +0,0 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
When using Sdk-style projects and default embedded resource items are enabled, automatically
add the XAML files and fix up item metadata to pair them with code files.
This is in the props file, not the targets file, so that projects can remove/update these items.
The default value for EnableDefaultXamlItems is set in the targets, which works because
the property evaluation pass comes before the item evaluation pass.
The actual item groups are in a separate conditionally-imported file as they use constructs that
are not compatible with older MSBuild versions.
-->
<Import Project="$(MSBuildThisFileDirectory)Xamarin.Forms.DefaultItems.props" Condition="'$(MSBuildSDKsPath)'!=''" />
<PropertyGroup>
<_IsHotRestartDefined>$([System.Text.RegularExpressions.Regex]::IsMatch('$(DefineConstants.Trim())', '(^|;)HOTRESTART($|;)'))</_IsHotRestartDefined>
<DefineConstants Condition="!$(_IsHotRestartDefined) And '$(IsHotRestartBuild)' == 'true'">HOTRESTART;$(DefineConstants)</DefineConstants>
</PropertyGroup>
</Project>

Просмотреть файл

@ -1,211 +0,0 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<_XFBuildTasksLocation Condition="'$(_XFBuildTasksLocation)' == '' AND '$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)netstandard2.0\</_XFBuildTasksLocation>
<_XFBuildTasksLocation Condition="'$(_XFBuildTasksLocation)' == ''">$(MSBuildThisFileDirectory)net462\</_XFBuildTasksLocation>
</PropertyGroup>
<UsingTask TaskName="Xamarin.Forms.Build.Tasks.XamlGTask" AssemblyFile="$(_XFBuildTasksLocation)Xamarin.Forms.Build.Tasks.dll" />
<UsingTask TaskName="Xamarin.Forms.Build.Tasks.CssGTask" AssemblyFile="$(_XFBuildTasksLocation)Xamarin.Forms.Build.Tasks.dll" />
<UsingTask TaskName="Xamarin.Forms.Build.Tasks.XamlCTask" AssemblyFile="$(_XFBuildTasksLocation)Xamarin.Forms.Build.Tasks.dll" />
<PropertyGroup>
<SynthesizeLinkMetadata>true</SynthesizeLinkMetadata>
<EnableDefaultXamlItems Condition="'$(EnableDefaultXamlItems)'==''">True</EnableDefaultXamlItems>
<_DefaultXamlItemsEnabled>False</_DefaultXamlItemsEnabled>
<EnableDefaultCssItems Condition="'$(EnableDefaultCssItems)'==''">True</EnableDefaultCssItems>
<_DefaultCssItemsEnabled>False</_DefaultCssItemsEnabled>
<!-- The WINUI check for this only runs when there is an empty string so I just convert false to an empty string to fall in line with our other properties -->
<SkipMicrosoftUIXamlCheckTargetPlatformVersion Condition="'$(SkipMicrosoftUIXamlCheckTargetPlatformVersion)'==''">true</SkipMicrosoftUIXamlCheckTargetPlatformVersion>
<SkipMicrosoftUIXamlCheckTargetPlatformVersion Condition="'$(SkipMicrosoftUIXamlCheckTargetPlatformVersion)'=='false'"></SkipMicrosoftUIXamlCheckTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(MSBuildThisFileDirectory)Xamarin.Forms.DefaultItems.targets" Condition="'$(MSBuildSDKsPath)'!=''" />
<ItemGroup>
<ProjectCapability Include="XamarinForms" />
</ItemGroup>
<!-- Check Tasks ABI and other validations -->
<PropertyGroup>
<_XFTargetsImportedAgain Condition="'$(_XFTargetsImported)'=='True'">True</_XFTargetsImportedAgain>
<_XFTargetsImported>True</_XFTargetsImported>
<IsXBuild Condition="'$(MSBuildRuntimeType)' == ''">true</IsXBuild>
<IsXBuild Condition="'$(MSBuildRuntimeType)' != ''">false</IsXBuild>
</PropertyGroup>
<Target Name="_ValidateXFTasks" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" Condition="'$(XFDisableTargetsValidation)' != 'True'">
<Error Code="XF001"
Text="Xamarin.Forms targets have been imported multiple times. Please check your project file and remove the duplicate import(s)."
Condition="'$(_XFTargetsImportedAgain)' == 'True'" />
</Target>
<Target Name="_ValidateMSBuild" BeforeTargets="_CheckForInvalidConfigurationAndPlatform">
<Error Code="XF003"
Text="Xamarin.Forms require msbuild. xbuild is no longer supported."
Condition="'$(IsXBuild)' == 'true'" />
</Target>
<Target Name="_ValidateNETFrameworkVersion"
BeforeTargets="_CheckForInvalidConfigurationAndPlatform"
Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' AND '$(TargetFrameworkVersion.Substring(1))' &lt; '4.6.1' AND '$(XFDisableFrameworkVersionValidation)' != 'True'">
<Error Code="XF004"
Text="XF requires .NETFramework >= v4.6.1. You have '$(TargetFrameworkVersion)'" />
</Target>
<!-- XamlG -->
<Target
Name="UpdateDesignTimeXaml"
DependsOnTargets="XamlG"/>
<PropertyGroup>
<CoreCompileDependsOn>
XamlG;
$(CoreCompileDependsOn);
</CoreCompileDependsOn>
</PropertyGroup>
<Target
Name="_FindXamlGFiles"
DependsOnTargets="PrepareResourceNames">
<ItemGroup>
<_XamlGInputs
Include="@(EmbeddedResource)"
Condition="'%(Extension)' == '.xaml' AND '$(DefaultLanguageSourceExtension)' == '.cs' AND '%(TargetPath)' != ''" />
<_XamlGOutputs
Include="@(_XamlGInputs->'$(IntermediateOutputPath)%(TargetPath).g.cs')" />
</ItemGroup>
</Target>
<Target
Name="XamlG"
BeforeTargets="BeforeCompile"
DependsOnTargets="_FindXamlGFiles; PrepareResourceNames; AfterResolveReferences"
Inputs="@(_XamlGInputs)"
Outputs="@(_XamlGOutputs)">
<PropertyGroup>
<ReferencedAssemblies>@(ReferencePath)</ReferencedAssemblies>
</PropertyGroup>
<XamlGTask
XamlFiles="@(_XamlGInputs)"
OutputFiles="@(_XamlGOutputs)"
Language="$(Language)"
References = "$(ReferencedAssemblies)"
AssemblyName="$(AssemblyName)" />
<ItemGroup>
<FileWrites Include="@(_XamlGOutputs)" />
<Compile Include="@(_XamlGOutputs)" />
</ItemGroup>
</Target>
<!-- XamlC -->
<PropertyGroup>
<CompileDependsOn>
$(CompileDependsOn);
XamlC;
</CompileDependsOn>
</PropertyGroup>
<Target Name="XamlC"
AfterTargets="AfterCompile"
DependsOnTargets="_FindXamlGFiles"
Inputs="$(IntermediateOutputPath)$(TargetFileName)"
Outputs="$(IntermediateOutputPath)XamlC.stamp"
Condition=" '$(DesignTimeBuild)' != 'True' AND '@(_XamlGInputs->Count())' != '0' ">
<PropertyGroup>
<_XFXamlCValidateOnly>$(XFXamlCValidateOnly)</_XFXamlCValidateOnly>
<_XFXamlCValidateOnly Condition="'$(BuildingForLiveUnitTesting)' == 'True' ">True</_XFXamlCValidateOnly>
</PropertyGroup>
<XamlCTask
Assembly = "$(IntermediateOutputPath)$(TargetFileName)"
ReferencePath = "@(ReferencePath)"
OptimizeIL = "true"
DebugSymbols = "$(DebugSymbols)"
DebugType = "$(DebugType)"
ValidateOnly = "$(_XFXamlCValidateOnly)"
KeepXamlResources = "$(XFKeepXamlResources)" />
<Touch Files="$(IntermediateOutputPath)XamlC.stamp" AlwaysCreate="True" />
<ItemGroup>
<FileWrites Include="$(IntermediateOutputPath)XamlC.stamp" />
</ItemGroup>
</Target>
<!-- CssG -->
<PropertyGroup>
<CoreCompileDependsOn>
CssG;
$(CoreCompileDependsOn);
</CoreCompileDependsOn>
</PropertyGroup>
<Target Name="_FindCSSFiles" DependsOnTargets="PrepareResourceNames">
<ItemGroup>
<_CSSInputs Include="@(EmbeddedResource)" Condition="'%(Extension)' == '.css' AND '$(DefaultLanguageSourceExtension)' == '.cs' AND '%(TargetPath)' != ''" />
<_CSSOutputs Include="@(_CSSInputs->'$(IntermediateOutputPath)%(TargetPath).g.cs')" />
</ItemGroup>
</Target>
<Target Name="CssG" BeforeTargets="BeforeCompile" DependsOnTargets="_FindCSSFiles" Inputs="@(_CSSInputs)" Outputs="@(_CSSOutputs)">
<CssGTask
CSSFiles="@(_CSSInputs)"
OutputFiles="@(_CSSOutputs)"
Language = "$(Language)"
AssemblyName = "$(AssemblyName)" />
<ItemGroup>
<FileWrites Include="@(_CSSOutputs)" />
<Compile Include="@(_CSSOutputs)" />
</ItemGroup>
</Target>
<!--
Platform Specific Targets.
We can't use a framework specific targets file because it breaks shared projects i.e. /build/MonoAndroid10/Xamarin.Forms.targets
-->
<!-- MonoAndroid targets. -->
<PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == 'MonoAndroid'">
<CoreCompileDependsOn>
IncludeProguardForAndroid;
$(CoreCompileDependsOn);
</CoreCompileDependsOn>
<PrepareForBuildDependsOn>
ValidateTargetFrameworkVersionForForms;
$(PrepareForBuildDependsOn);
</PrepareForBuildDependsOn>
</PropertyGroup>
<Target Name="IncludeProguardForAndroid" Condition="'$(XFDisableDefaultProguardConfiguration)' != 'True'">
<ItemGroup>
<ProguardConfiguration Include="$(MSBuildThisFileDirectory)MonoAndroid10\proguard.cfg" />
</ItemGroup>
</Target>
<Target Name="ValidateTargetFrameworkVersionForForms" Condition="'$(XFDisableTargetFrameworkValidation)' != 'True'">
<PropertyGroup>
<MinTargetFrameworkVersionForForms>10.0</MinTargetFrameworkVersionForForms>
<TargetFrameworkVersionWithoutV>$(TargetFrameworkVersion.TrimStart('vV'))</TargetFrameworkVersionWithoutV>
</PropertyGroup>
<Error Code="XF005" Condition="$(TargetFrameworkVersionWithoutV) &lt; $(MinTargetFrameworkVersionForForms)"
Text="The %24(TargetFrameworkVersion) for $(ProjectName) ($(TargetFrameworkVersion)) is less than the minimum required %24(TargetFrameworkVersion) for Xamarin.Forms ($(MinTargetFrameworkVersionForForms)). You need to increase the %24(TargetFrameworkVersion) for $(ProjectName)." />
</Target>
<!-- UWP Targets-->
<Target Name="WinUICheckTargetPlatformVersion" BeforeTargets="PrepareForBuild"
Condition="'$(TargetPlatformIdentifier)' == 'UAP' AND '$(TargetPlatformVersion)' != '' AND '$(TargetPlatformMinVersion)' != ''">
<PropertyGroup>
<MicrosoftUIXamlTargetPlatformMinCheckValue>$([System.Version]::Parse('$(TargetPlatformMinVersion)').Build)</MicrosoftUIXamlTargetPlatformMinCheckValue>
</PropertyGroup>
<Warning
Text="Xamarin.Forms recommends TargetPlatformMinVersion &gt;= 10.0.15063.0 (current project is $(MicrosoftUIXamlTargetPlatformMinCheckValue))"
Condition="$(MicrosoftUIXamlTargetPlatformMinCheckValue) &lt; 15063" />
<PropertyGroup>
<MicrosoftUIXamlTargetPlatformCheckValue>$([System.Version]::Parse('$(TargetPlatformVersion)').Build)</MicrosoftUIXamlTargetPlatformCheckValue>
</PropertyGroup>
<Warning
Text="Xamarin.Forms recommends TargetPlatformVersion &gt;= 10.0.18362.0 (current project is $(MicrosoftUIXamlTargetPlatformCheckValue))"
Condition="$(MicrosoftUIXamlTargetPlatformCheckValue) &lt; 18362 AND '$(OutputType)'!='Library'" />
<Warning
Text="Xamarin.Forms recommends TargetPlatformVersion &gt;= 10.0.14393.0 (current project is $(MicrosoftUIXamlTargetPlatformCheckValue))"
Condition="$(MicrosoftUIXamlTargetPlatformCheckValue) &lt; 14393 AND '$(OutputType)'=='Library'" />
</Target>
</Project>

971
ControlGallery.sln Normal file
Просмотреть файл

@ -0,0 +1,971 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30503.244
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Controls", "Controls", "{9AD757F5-E57A-459D-A0A7-E0675E045B84}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Compatibility", "Compatibility", "{29AC50BF-B4FB-450B-9386-0C5AD4B84226}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Compatibility.Android", "src\Compatibility\Core\src\Android\Compatibility.Android.csproj", "{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuspec", ".nuspec", "{7E12C50D-A570-4DF1-94E1-8599843FA87C}"
ProjectSection(SolutionItems) = preProject
.nuspec\Microsoft.Maui.Controls.Compatibility.AppLinks.nuspec = .nuspec\Microsoft.Maui.Controls.Compatibility.AppLinks.nuspec
.nuspec\Microsoft.Maui.Controls.Compatibility.GTK.nuspec = .nuspec\Microsoft.Maui.Controls.Compatibility.GTK.nuspec
.nuspec\Microsoft.Maui.Controls.Compatibility.Maps.GTK.nuspec = .nuspec\Microsoft.Maui.Controls.Compatibility.Maps.GTK.nuspec
.nuspec\Microsoft.Maui.Controls.Compatibility.Maps.nuspec = .nuspec\Microsoft.Maui.Controls.Compatibility.Maps.nuspec
.nuspec\Microsoft.Maui.Controls.Compatibility.Maps.WPF.nuspec = .nuspec\Microsoft.Maui.Controls.Compatibility.Maps.WPF.nuspec
.nuspec\Microsoft.Maui.Controls.Compatibility.WPF.nuspec = .nuspec\Microsoft.Maui.Controls.Compatibility.WPF.nuspec
.nuspec\Microsoft.Maui.Controls.Debug.targets = .nuspec\Microsoft.Maui.Controls.Debug.targets
.nuspec\Microsoft.Maui.Controls.DefaultItems.props = .nuspec\Microsoft.Maui.Controls.DefaultItems.props
.nuspec\Microsoft.Maui.Controls.DefaultItems.targets = .nuspec\Microsoft.Maui.Controls.DefaultItems.targets
.nuspec\Microsoft.Maui.Controls.DualScreen.nuspec = .nuspec\Microsoft.Maui.Controls.DualScreen.nuspec
.nuspec\Microsoft.Maui.Controls.MultiTargeting.targets = .nuspec\Microsoft.Maui.Controls.MultiTargeting.targets
.nuspec\Microsoft.Maui.Controls.nuspec = .nuspec\Microsoft.Maui.Controls.nuspec
.nuspec\Microsoft.Maui.Controls.props = .nuspec\Microsoft.Maui.Controls.props
.nuspec\Microsoft.Maui.Controls.targets = .nuspec\Microsoft.Maui.Controls.targets
.nuspec\Microsoft.Maui.Controls.Visual.Material.nuspec = .nuspec\Microsoft.Maui.Controls.Visual.Material.nuspec
.nuspec\Microsoft.Maui.Controls.Visual.Material.targets = .nuspec\Microsoft.Maui.Controls.Visual.Material.targets
.nuspec\proguard.cfg = .nuspec\proguard.cfg
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Controls.Core", "src\Controls\src\Core\Controls.Core.csproj", "{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Handlers", "Handlers", "{31721EFD-3238-462B-B501-41F3D2B50E92}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Controls", "Controls", "{97FA536A-675D-41C7-A90E-97E2F79D1AE2}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{423C21C8-84CB-4A3C-BEB9-1C23D752D90F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{2ACC7FFA-238F-44FD-93CB-4D9B17D8C4BA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Core", "src\Core\src\Core.csproj", "{29913989-0F70-48D8-8EDE-B1DD217F21D1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Compatibility.Android.FormsViewGroup", "src\Compatibility\Core\src\Android.FormsViewGroup\Compatibility.Android.FormsViewGroup.csproj", "{3B72465B-ACAE-43AE-9327-10F372FE5F80}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Compatibility.iOS", "src\Compatibility\Core\src\iOS\Compatibility.iOS.csproj", "{271193C1-6E7C-429C-A36D-3F1BE5267231}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{D5B986A3-7FC9-437E-8030-349AA4698DFD}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{75A2CD30-BB85-4CA6-AC95-86A8A538A690}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Controls.Core.UnitTests", "src\Controls\tests\Core.UnitTests\Controls.Core.UnitTests.csproj", "{00259593-A283-47A5-ACB7-9C3819B16364}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Controls.Xaml", "src\Controls\src\Xaml\Controls.Xaml.csproj", "{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Controls.Maps", "src\Controls\Maps\src\Controls.Maps.csproj", "{F137FAC5-3385-4B19-988B-4A14ED84CCC6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Controls.Build.Tasks", "src\Controls\src\Build.Tasks\Controls.Build.Tasks.csproj", "{C328C538-B69F-43D2-80EE-3C1EB8254CBA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Core.UnitTests", "src\Core\tests\UnitTests\Core.UnitTests.csproj", "{7A753001-1C3D-404D-A421-2E052A545EAC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Control Gallery", "Control Gallery", "{F07FDC58-64A0-42DA-8556-09742721F15E}"
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Xamarin.Forms.Controls.Issues.Shared", "src\ControlGallery\src\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.shproj", "{0F0DB9CC-EA65-429C-9363-38624BF8F49C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Controls", "src\ControlGallery\src\Xamarin.Forms.Controls\Xamarin.Forms.Controls.csproj", "{7AD93806-111D-4FDC-B48D-9566765185FF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.ControlGallery.Android", "src\ControlGallery\src\Xamarin.Forms.ControlGallery.Android\Xamarin.Forms.ControlGallery.Android.csproj", "{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Compatibility.Maps", "Compatibility.Maps", "{8A70C15D-86D3-4086-A8C5-E17B299EA970}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Compatibility.Maps.Android", "src\Compatibility\Maps\src\Android\Compatibility.Maps.Android.csproj", "{1D11EC11-4734-47D4-9B62-4D03CFF67090}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Controls.Xaml", "Controls.Xaml", "{E7F90170-B71B-4730-A082-1DF4E4F04420}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Controls.Xaml.Design", "src\Controls\src\Xaml.Design\Controls.Xaml.Design.csproj", "{65BC4888-CC59-428A-9B75-540CF1C09480}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Controls.Xaml.UnitTests", "src\Controls\tests\Xaml.UnitTests\Controls.Xaml.UnitTests.csproj", "{5997F786-4526-4A4B-BFC6-3832091D6544}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Controls.Core.Design", "src\Controls\src\Core.Design\Controls.Core.Design.csproj", "{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Compatibility.Android.AppLinks", "src\Compatibility\Core\src\Android.AppLinks\Compatibility.Android.AppLinks.csproj", "{10553575-8E27-4E2C-9E88-90B015E80F1C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Controls.CustomAttributes", "src\Controls\tests\CustomAttributes\Controls.CustomAttributes.csproj", "{2964F669-7CD9-4D78-B4D9-804A965D58C0}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{B5E27729-44E8-4BE6-A62E-45FF27449B8F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{5CE892DB-8CA2-42E4-8130-2836D28AD8DB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Compatibility.Android.UnitTests", "src\Compatibility\Core\tests\Android\Compatibility.Android.UnitTests.csproj", "{A4C57790-71D1-467C-A69E-2BD84CB6666C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.ControlGallery.iOS", "src\ControlGallery\src\Xamarin.Forms.ControlGallery.iOS\Xamarin.Forms.ControlGallery.iOS.csproj", "{C7131F14-274F-4B55-ACA9-E81731AD012F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Compatibility.iOS.UnitTests", "src\Compatibility\Core\tests\iOS\Compatibility.iOS.UnitTests.csproj", "{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Compatibility.Maps.iOS", "src\Compatibility\Maps\src\iOS\Compatibility.Maps.iOS.csproj", "{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{52963C98-6AD9-4B57-924F-BE58DC36D746}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{FFCE9E2C-327C-46E7-8AC1-18CB2E982C2E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Core.iOS.UITests", "src\ControlGallery\test\Xamarin.Forms.Core.iOS.UITests\Xamarin.Forms.Core.iOS.UITests.csproj", "{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}"
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Xamarin.Forms.Core.UITests.Shared", "src\ControlGallery\src\Xamarin.Forms.Core.UITests.Shared\Xamarin.Forms.Core.UITests.Shared.shproj", "{E175485B-3C8C-47D7-8DD5-F7FED627EB25}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Core.Android.UITests", "src\ControlGallery\test\Xamarin.Forms.Core.Android.UITests\Xamarin.Forms.Core.Android.UITests.csproj", "{A34EBE01-25BF-4E69-A2DC-2288DC625541}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Compatibility.UAP", "src\Compatibility\Core\src\UAP\Compatibility.UAP.csproj", "{DD10263D-D580-4241-9E21-EB5DE0FC83C3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.ControlGallery.WindowsUniversal", "src\ControlGallery\src\Xamarin.Forms.ControlGallery.WindowsUniversal\Xamarin.Forms.ControlGallery.WindowsUniversal.csproj", "{AC257966-9368-478A-9DF4-F0D28E320FE3}"
EndProject
Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "Xamarin.Forms.ControlGallery.WindowsUniversal (Package)", "src\ControlGallery\src\Xamarin.Forms.ControlGallery.WindowsUniversal (Package)\Xamarin.Forms.ControlGallery.WindowsUniversal (Package).wapproj", "{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Compatibility.UAP.UnitTests", "src\Compatibility\Core\tests\UAP\Compatibility.UAP.UnitTests.csproj", "{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
src\ControlGallery\src\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems*{0f0db9cc-ea65-429c-9363-38624bf8f49c}*SharedItemsImports = 13
src\ControlGallery\src\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems*{7ad93806-111d-4fdc-b48d-9566765185ff}*SharedItemsImports = 5
src\ControlGallery\src\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems*{a34ebe01-25bf-4e69-a2dc-2288dc625541}*SharedItemsImports = 4
src\ControlGallery\src\Xamarin.Forms.Core.UITests.Shared\Xamarin.Forms.Core.UITests.projitems*{a34ebe01-25bf-4e69-a2dc-2288dc625541}*SharedItemsImports = 4
src\ControlGallery\src\Xamarin.Forms.Core.UITests.Shared\Xamarin.Forms.Core.UITests.projitems*{e175485b-3c8c-47d7-8dd5-f7fed627eb25}*SharedItemsImports = 13
src\ControlGallery\src\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems*{eadd8100-b3ae-4a31-92c4-267a64a1c6eb}*SharedItemsImports = 4
src\ControlGallery\src\Xamarin.Forms.Core.UITests.Shared\Xamarin.Forms.Core.UITests.projitems*{eadd8100-b3ae-4a31-92c4-267a64a1c6eb}*SharedItemsImports = 4
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|ARM = Debug|ARM
Debug|ARM64 = Debug|ARM64
Debug|iPhone = Debug|iPhone
Debug|iPhoneSimulator = Debug|iPhoneSimulator
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|ARM = Release|ARM
Release|ARM64 = Release|ARM64
Release|iPhone = Release|iPhone
Release|iPhoneSimulator = Release|iPhoneSimulator
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|ARM.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|ARM.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|ARM64.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|iPhone.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|x64.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|x64.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|x86.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|x86.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|Any CPU.Build.0 = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|ARM.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|ARM.Build.0 = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|ARM64.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|ARM64.Build.0 = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|iPhone.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|iPhone.Build.0 = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|x64.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|x64.Build.0 = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|x86.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|x86.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|ARM.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|ARM.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|ARM64.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|iPhone.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|x64.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|x64.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|x86.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|x86.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|Any CPU.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|ARM.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|ARM.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|ARM64.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|ARM64.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|iPhone.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|iPhone.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|x64.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|x64.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|x86.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|x86.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|ARM.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|ARM.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|ARM64.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|iPhone.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|x64.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|x64.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|x86.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|x86.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|Any CPU.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|ARM.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|ARM.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|ARM64.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|ARM64.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|iPhone.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|iPhone.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|x64.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|x64.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|x86.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|x86.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|ARM.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|ARM.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|ARM64.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|iPhone.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|x64.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|x64.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|x86.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|x86.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|Any CPU.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|ARM.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|ARM.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|ARM64.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|ARM64.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|iPhone.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|iPhone.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x64.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x64.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x86.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x86.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|Any CPU.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|ARM.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|ARM.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|ARM64.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|iPhone.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|x64.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|x64.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|x86.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|x86.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|Any CPU.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|Any CPU.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|ARM.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|ARM.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|ARM64.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|ARM64.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|iPhone.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|iPhone.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|x64.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|x64.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|x86.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|x86.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|Any CPU.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|ARM.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|ARM.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|ARM64.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|iPhone.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|x64.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|x64.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|x86.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|x86.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|Any CPU.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|Any CPU.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|ARM.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|ARM.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|ARM64.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|ARM64.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|iPhone.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|iPhone.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|x64.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|x64.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|x86.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|x86.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|ARM.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|ARM.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|ARM64.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|iPhone.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|x64.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|x64.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|x86.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|x86.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|Any CPU.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|ARM.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|ARM.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|ARM64.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|ARM64.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|iPhone.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|iPhone.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|x64.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|x64.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|x86.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|x86.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|ARM.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|ARM.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|ARM64.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|iPhone.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|x64.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|x64.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|x86.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|x86.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|Any CPU.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|ARM.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|ARM.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|ARM64.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|ARM64.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|iPhone.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|iPhone.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|x64.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|x64.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|x86.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|x86.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|ARM.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|ARM.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|ARM64.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|iPhone.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|x64.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|x64.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|x86.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|x86.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|Any CPU.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|ARM.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|ARM.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|ARM64.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|ARM64.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|iPhone.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|iPhone.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|x64.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|x64.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|x86.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|x86.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|ARM.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|ARM.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|ARM64.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|iPhone.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|x64.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|x64.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|x86.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|x86.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|Any CPU.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|ARM.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|ARM.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|ARM64.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|ARM64.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|iPhone.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|iPhone.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|x64.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|x64.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|x86.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|x86.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|ARM.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|ARM.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|ARM64.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|iPhone.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|x64.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|x64.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|x86.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|x86.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|Any CPU.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|ARM.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|ARM.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|ARM64.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|ARM64.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|iPhone.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|iPhone.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|x64.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|x64.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|x86.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|x86.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM64.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM64.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhone.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhone.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x64.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x64.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x64.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x86.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x86.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x86.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|Any CPU.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|Any CPU.Deploy.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM.Deploy.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM64.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM64.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM64.Deploy.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhone.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhone.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhone.Deploy.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x64.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x64.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x64.Deploy.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x86.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x86.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x86.Deploy.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|ARM.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|ARM.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|ARM64.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|iPhone.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|x64.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|x64.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|x86.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|x86.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|Any CPU.Build.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|ARM.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|ARM.Build.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|ARM64.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|ARM64.Build.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|iPhone.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|iPhone.Build.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|x64.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|x64.Build.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|x86.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|x86.Build.0 = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|Any CPU.Build.0 = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|ARM.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|ARM.Build.0 = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|ARM64.Build.0 = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|x64.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|x64.Build.0 = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|x86.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|x86.Build.0 = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|Any CPU.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|Any CPU.Build.0 = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|ARM.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|ARM.Build.0 = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|ARM64.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|ARM64.Build.0 = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|iPhone.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|x64.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|x64.Build.0 = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|x86.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|x86.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|ARM.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|ARM.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|ARM64.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|iPhone.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|x64.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|x64.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|x86.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|x86.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|Any CPU.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|ARM.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|ARM.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|ARM64.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|ARM64.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|iPhone.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|iPhone.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|x64.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|x64.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|x86.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|x86.Build.0 = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|ARM.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|ARM.Build.0 = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|ARM64.Build.0 = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|x64.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|x64.Build.0 = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|x86.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|x86.Build.0 = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|Any CPU.Build.0 = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|ARM.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|ARM.Build.0 = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|ARM64.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|ARM64.Build.0 = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|iPhone.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|x64.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|x64.Build.0 = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|x86.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|x86.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|ARM.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|ARM.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|ARM64.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|iPhone.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|x64.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|x64.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|x86.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|x86.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|Any CPU.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|ARM.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|ARM.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|ARM64.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|ARM64.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|iPhone.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|iPhone.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|x64.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|x64.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|x86.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|x86.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|ARM.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|ARM.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|ARM64.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|iPhone.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|x64.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|x64.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|x86.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|x86.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|Any CPU.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|ARM.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|ARM.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|ARM64.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|ARM64.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|iPhone.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|iPhone.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|x64.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|x64.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|x86.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|x86.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|ARM.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|ARM.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|ARM64.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|iPhone.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|x64.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|x64.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|x86.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|x86.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|Any CPU.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|ARM.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|ARM.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|ARM64.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|ARM64.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|iPhone.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|iPhone.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|x64.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|x64.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|x86.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|x86.Build.0 = Release|Any CPU
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|ARM64.ActiveCfg = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|iPhone.ActiveCfg = Debug|iPhone
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|iPhone.Build.0 = Debug|iPhone
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|iPhone.Deploy.0 = Debug|iPhone
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|ARM.ActiveCfg = Release|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|ARM64.ActiveCfg = Release|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|iPhone.ActiveCfg = Release|iPhone
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|iPhone.Build.0 = Release|iPhone
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|x64.ActiveCfg = Release|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|x86.ActiveCfg = Release|iPhoneSimulator
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|ARM.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|ARM.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|ARM64.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|iPhone.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|x64.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|x64.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|x86.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|x86.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|Any CPU.Build.0 = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|ARM.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|ARM.Build.0 = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|ARM64.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|ARM64.Build.0 = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|iPhone.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|iPhone.Build.0 = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|x64.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|x64.Build.0 = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|x86.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|x86.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|ARM.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|ARM.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|ARM64.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|iPhone.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|x64.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|x64.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|x86.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|x86.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|Any CPU.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|ARM.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|ARM.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|ARM64.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|ARM64.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|iPhone.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|iPhone.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|x64.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|x64.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|x86.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|x86.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|ARM.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|ARM.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|ARM64.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|iPhone.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|x64.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|x64.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|x86.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|x86.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|Any CPU.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|ARM.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|ARM.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|ARM64.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|ARM64.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|iPhone.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|iPhone.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|x64.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|x64.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|x86.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|x86.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|ARM.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|ARM.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|ARM64.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|iPhone.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|x64.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|x64.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|x86.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|x86.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|Any CPU.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|ARM.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|ARM.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|ARM64.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|ARM64.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|iPhone.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|iPhone.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x64.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x64.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x86.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x86.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|ARM.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|ARM.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|ARM64.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|iPhone.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|x64.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|x64.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|x86.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|x86.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|Any CPU.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|ARM.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|ARM.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|ARM64.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|ARM64.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|iPhone.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|iPhone.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|x64.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|x64.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|x86.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|x86.Build.0 = Release|Any CPU
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|Any CPU.ActiveCfg = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|ARM.ActiveCfg = Debug|ARM
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|ARM.Build.0 = Debug|ARM
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|ARM.Deploy.0 = Debug|ARM
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|ARM64.ActiveCfg = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|iPhone.ActiveCfg = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x64.ActiveCfg = Debug|x64
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x64.Build.0 = Debug|x64
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x64.Deploy.0 = Debug|x64
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x86.ActiveCfg = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x86.Build.0 = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x86.Deploy.0 = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|Any CPU.ActiveCfg = Release|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|ARM.ActiveCfg = Release|ARM
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|ARM.Build.0 = Release|ARM
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|ARM.Deploy.0 = Release|ARM
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|ARM64.ActiveCfg = Release|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|iPhone.ActiveCfg = Release|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|iPhoneSimulator.ActiveCfg = Release|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x64.ActiveCfg = Release|x64
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x64.Build.0 = Release|x64
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x64.Deploy.0 = Release|x64
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x86.ActiveCfg = Release|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x86.Build.0 = Release|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x86.Deploy.0 = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|Any CPU.ActiveCfg = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|ARM.ActiveCfg = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|ARM64.ActiveCfg = Debug|arm64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|ARM64.Build.0 = Debug|arm64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|ARM64.Deploy.0 = Debug|arm64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|iPhone.ActiveCfg = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|x64.ActiveCfg = Debug|x64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|x64.Build.0 = Debug|x64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|x64.Deploy.0 = Debug|x64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|x86.ActiveCfg = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|x86.Build.0 = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|x86.Deploy.0 = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|Any CPU.ActiveCfg = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|ARM.ActiveCfg = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|ARM64.ActiveCfg = Release|arm64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|ARM64.Build.0 = Release|arm64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|ARM64.Deploy.0 = Release|arm64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|iPhone.ActiveCfg = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|iPhoneSimulator.ActiveCfg = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|x64.ActiveCfg = Release|x64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|x64.Build.0 = Release|x64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|x64.Deploy.0 = Release|x64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|x86.ActiveCfg = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|x86.Build.0 = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|x86.Deploy.0 = Release|x86
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|ARM.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|ARM.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|ARM64.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|iPhone.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|x64.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|x64.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|x86.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|x86.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|Any CPU.Build.0 = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|ARM.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|ARM.Build.0 = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|ARM64.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|ARM64.Build.0 = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|iPhone.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|iPhone.Build.0 = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|x64.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|x64.Build.0 = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|x86.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{9AD757F5-E57A-459D-A0A7-E0675E045B84} = {97FA536A-675D-41C7-A90E-97E2F79D1AE2}
{29AC50BF-B4FB-450B-9386-0C5AD4B84226} = {97FA536A-675D-41C7-A90E-97E2F79D1AE2}
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A} = {B5E27729-44E8-4BE6-A62E-45FF27449B8F}
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC} = {D5B986A3-7FC9-437E-8030-349AA4698DFD}
{423C21C8-84CB-4A3C-BEB9-1C23D752D90F} = {31721EFD-3238-462B-B501-41F3D2B50E92}
{2ACC7FFA-238F-44FD-93CB-4D9B17D8C4BA} = {31721EFD-3238-462B-B501-41F3D2B50E92}
{29913989-0F70-48D8-8EDE-B1DD217F21D1} = {423C21C8-84CB-4A3C-BEB9-1C23D752D90F}
{3B72465B-ACAE-43AE-9327-10F372FE5F80} = {B5E27729-44E8-4BE6-A62E-45FF27449B8F}
{271193C1-6E7C-429C-A36D-3F1BE5267231} = {B5E27729-44E8-4BE6-A62E-45FF27449B8F}
{D5B986A3-7FC9-437E-8030-349AA4698DFD} = {9AD757F5-E57A-459D-A0A7-E0675E045B84}
{75A2CD30-BB85-4CA6-AC95-86A8A538A690} = {9AD757F5-E57A-459D-A0A7-E0675E045B84}
{00259593-A283-47A5-ACB7-9C3819B16364} = {75A2CD30-BB85-4CA6-AC95-86A8A538A690}
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27} = {E7F90170-B71B-4730-A082-1DF4E4F04420}
{F137FAC5-3385-4B19-988B-4A14ED84CCC6} = {8A70C15D-86D3-4086-A8C5-E17B299EA970}
{C328C538-B69F-43D2-80EE-3C1EB8254CBA} = {E7F90170-B71B-4730-A082-1DF4E4F04420}
{7A753001-1C3D-404D-A421-2E052A545EAC} = {2ACC7FFA-238F-44FD-93CB-4D9B17D8C4BA}
{0F0DB9CC-EA65-429C-9363-38624BF8F49C} = {52963C98-6AD9-4B57-924F-BE58DC36D746}
{7AD93806-111D-4FDC-B48D-9566765185FF} = {52963C98-6AD9-4B57-924F-BE58DC36D746}
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E} = {52963C98-6AD9-4B57-924F-BE58DC36D746}
{8A70C15D-86D3-4086-A8C5-E17B299EA970} = {97FA536A-675D-41C7-A90E-97E2F79D1AE2}
{1D11EC11-4734-47D4-9B62-4D03CFF67090} = {8A70C15D-86D3-4086-A8C5-E17B299EA970}
{E7F90170-B71B-4730-A082-1DF4E4F04420} = {97FA536A-675D-41C7-A90E-97E2F79D1AE2}
{65BC4888-CC59-428A-9B75-540CF1C09480} = {E7F90170-B71B-4730-A082-1DF4E4F04420}
{5997F786-4526-4A4B-BFC6-3832091D6544} = {E7F90170-B71B-4730-A082-1DF4E4F04420}
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF} = {D5B986A3-7FC9-437E-8030-349AA4698DFD}
{10553575-8E27-4E2C-9E88-90B015E80F1C} = {B5E27729-44E8-4BE6-A62E-45FF27449B8F}
{2964F669-7CD9-4D78-B4D9-804A965D58C0} = {75A2CD30-BB85-4CA6-AC95-86A8A538A690}
{B5E27729-44E8-4BE6-A62E-45FF27449B8F} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226}
{5CE892DB-8CA2-42E4-8130-2836D28AD8DB} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226}
{A4C57790-71D1-467C-A69E-2BD84CB6666C} = {5CE892DB-8CA2-42E4-8130-2836D28AD8DB}
{C7131F14-274F-4B55-ACA9-E81731AD012F} = {52963C98-6AD9-4B57-924F-BE58DC36D746}
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE} = {5CE892DB-8CA2-42E4-8130-2836D28AD8DB}
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491} = {8A70C15D-86D3-4086-A8C5-E17B299EA970}
{52963C98-6AD9-4B57-924F-BE58DC36D746} = {F07FDC58-64A0-42DA-8556-09742721F15E}
{FFCE9E2C-327C-46E7-8AC1-18CB2E982C2E} = {F07FDC58-64A0-42DA-8556-09742721F15E}
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB} = {FFCE9E2C-327C-46E7-8AC1-18CB2E982C2E}
{E175485B-3C8C-47D7-8DD5-F7FED627EB25} = {FFCE9E2C-327C-46E7-8AC1-18CB2E982C2E}
{A34EBE01-25BF-4E69-A2DC-2288DC625541} = {FFCE9E2C-327C-46E7-8AC1-18CB2E982C2E}
{DD10263D-D580-4241-9E21-EB5DE0FC83C3} = {B5E27729-44E8-4BE6-A62E-45FF27449B8F}
{AC257966-9368-478A-9DF4-F0D28E320FE3} = {52963C98-6AD9-4B57-924F-BE58DC36D746}
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6} = {52963C98-6AD9-4B57-924F-BE58DC36D746}
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D} = {5CE892DB-8CA2-42E4-8130-2836D28AD8DB}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {650AE971-2F29-46A8-822C-FB4FCDC6A9A0}
EndGlobalSection
EndGlobal

Просмотреть файл

@ -10,7 +10,7 @@
<IncludeSymbols>true</IncludeSymbols> <IncludeSymbols>true</IncludeSymbols>
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder> <AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
<Company>Microsoft</Company> <Company>Microsoft</Company>
<Product>Xamarin.Forms</Product> <Product>Microsoft.Maui</Product>
<ProduceReferenceAssembly Condition="'$(UsingMicrosoftNETSdk)' == 'True' AND '$(Configuration)' == 'Debug'">True</ProduceReferenceAssembly> <ProduceReferenceAssembly Condition="'$(UsingMicrosoftNETSdk)' == 'True' AND '$(Configuration)' == 'Debug'">True</ProduceReferenceAssembly>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>

Просмотреть файл

@ -1,81 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30926.220
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Platform.Handlers-net6", "src\Platform.Handlers\src\Xamarin.Platform.Handlers\Xamarin.Platform.Handlers-net6.csproj", "{95BA42B5-B00E-4986-B9B5-517140378452}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Files", "Files", "{449F6071-A74F-4309-8D7B-7038CFD1B17B}"
ProjectSection(SolutionItems) = preProject
README.md = README.md
.nuspec\Xamarin.Forms.MultiTargeting.targets = .nuspec\Xamarin.Forms.MultiTargeting.targets
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Core-net6", "src\Forms\src\Xamarin.Forms.Core\Xamarin.Forms.Core-net6.csproj", "{AF64451F-E2BD-41C2-B083-F60C26AE2A9F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Maui.Controls.Compatibility-net6", "src\Platform.Renderers\src\Maui.Controls.Compatibility\Maui.Controls.Compatibility-net6.csproj", "{00A11C2F-969F-4964-8557-91ADF4B1523D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Platform.Android.FormsViewGroup-net6", "src\Platform.Renderers\src\Xamarin.Forms.Platform.Android.FormsViewGroup\Xamarin.Forms.Platform.Android.FormsViewGroup-net6.csproj", "{EB956381-F3E6-437C-9069-36B8BF5C6E2F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Maui.Controls", "Maui.Controls", "{459BF674-83CB-46F6-881F-A2D2117DBF4D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{E1082E26-D700-4127-9329-66D673FD2D55}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Maui.Controls.Sample-net6", "src\Forms\samples\Maui.Controls.Sample\Maui.Controls.Sample-net6.csproj", "{B8DC1324-977C-46F1-B697-9064ADE6099A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Maui.Controls.Sample.Droid-net6", "src\Forms\samples\Maui.Controls.Sample.Droid\Maui.Controls.Sample.Droid-net6.csproj", "{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Maui.Controls.Sample.iOS-net6", "src\Forms\samples\Maui.Controls.Sample.iOS\Maui.Controls.Sample.iOS-net6.csproj", "{1C3439E6-73D7-4F8E-A64A-5448F5CB18DE}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{95BA42B5-B00E-4986-B9B5-517140378452}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{95BA42B5-B00E-4986-B9B5-517140378452}.Debug|Any CPU.Build.0 = Debug|Any CPU
{95BA42B5-B00E-4986-B9B5-517140378452}.Release|Any CPU.ActiveCfg = Release|Any CPU
{95BA42B5-B00E-4986-B9B5-517140378452}.Release|Any CPU.Build.0 = Release|Any CPU
{AF64451F-E2BD-41C2-B083-F60C26AE2A9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AF64451F-E2BD-41C2-B083-F60C26AE2A9F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AF64451F-E2BD-41C2-B083-F60C26AE2A9F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AF64451F-E2BD-41C2-B083-F60C26AE2A9F}.Release|Any CPU.Build.0 = Release|Any CPU
{00A11C2F-969F-4964-8557-91ADF4B1523D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{00A11C2F-969F-4964-8557-91ADF4B1523D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{00A11C2F-969F-4964-8557-91ADF4B1523D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{00A11C2F-969F-4964-8557-91ADF4B1523D}.Release|Any CPU.Build.0 = Release|Any CPU
{EB956381-F3E6-437C-9069-36B8BF5C6E2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EB956381-F3E6-437C-9069-36B8BF5C6E2F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EB956381-F3E6-437C-9069-36B8BF5C6E2F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EB956381-F3E6-437C-9069-36B8BF5C6E2F}.Release|Any CPU.Build.0 = Release|Any CPU
{B8DC1324-977C-46F1-B697-9064ADE6099A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B8DC1324-977C-46F1-B697-9064ADE6099A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B8DC1324-977C-46F1-B697-9064ADE6099A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B8DC1324-977C-46F1-B697-9064ADE6099A}.Release|Any CPU.Build.0 = Release|Any CPU
{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18}.Release|Any CPU.Build.0 = Release|Any CPU
{1C3439E6-73D7-4F8E-A64A-5448F5CB18DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1C3439E6-73D7-4F8E-A64A-5448F5CB18DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1C3439E6-73D7-4F8E-A64A-5448F5CB18DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1C3439E6-73D7-4F8E-A64A-5448F5CB18DE}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{AF64451F-E2BD-41C2-B083-F60C26AE2A9F} = {459BF674-83CB-46F6-881F-A2D2117DBF4D}
{00A11C2F-969F-4964-8557-91ADF4B1523D} = {459BF674-83CB-46F6-881F-A2D2117DBF4D}
{EB956381-F3E6-437C-9069-36B8BF5C6E2F} = {459BF674-83CB-46F6-881F-A2D2117DBF4D}
{E1082E26-D700-4127-9329-66D673FD2D55} = {459BF674-83CB-46F6-881F-A2D2117DBF4D}
{B8DC1324-977C-46F1-B697-9064ADE6099A} = {E1082E26-D700-4127-9329-66D673FD2D55}
{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18} = {E1082E26-D700-4127-9329-66D673FD2D55}
{1C3439E6-73D7-4F8E-A64A-5448F5CB18DE} = {E1082E26-D700-4127-9329-66D673FD2D55}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {0B8ABEAD-D2B5-4370-A187-62B5ABE4EE50}
EndGlobalSection
EndGlobal

80
Microsoft.Maui-net6.sln Normal file
Просмотреть файл

@ -0,0 +1,80 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30926.220
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Core-net6", "src\Core\src\Core-net6.csproj", "{95BA42B5-B00E-4986-B9B5-517140378452}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Files", "Files", "{449F6071-A74F-4309-8D7B-7038CFD1B17B}"
ProjectSection(SolutionItems) = preProject
.nuspec\Microsoft.Maui.Controls.MultiTargeting.targets = .nuspec\Microsoft.Maui.Controls.MultiTargeting.targets
README.md = README.md
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Controls.Core-net6", "src\Controls\src\Core\Controls.Core-net6.csproj", "{AF64451F-E2BD-41C2-B083-F60C26AE2A9F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Compatibility-net6", "src\Compatibility\Core\src\Compatibility-net6.csproj", "{00A11C2F-969F-4964-8557-91ADF4B1523D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Compatibility.Android.FormsViewGroup-net6", "src\Compatibility\Core\src\Android.FormsViewGroup\Compatibility.Android.FormsViewGroup-net6.csproj", "{EB956381-F3E6-437C-9069-36B8BF5C6E2F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Maui.Controls", "Maui.Controls", "{459BF674-83CB-46F6-881F-A2D2117DBF4D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{E1082E26-D700-4127-9329-66D673FD2D55}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Maui.Controls.Sample-net6", "src\Controls\samples\Controls.Sample\Maui.Controls.Sample-net6.csproj", "{B8DC1324-977C-46F1-B697-9064ADE6099A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Maui.Controls.Sample.Droid-net6", "src\Controls\samples\Controls.Sample.Droid\Maui.Controls.Sample.Droid-net6.csproj", "{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Maui.Controls.Sample.iOS-net6", "src\Controls\samples\Controls.Sample.iOS\Maui.Controls.Sample.iOS-net6.csproj", "{1C3439E6-73D7-4F8E-A64A-5448F5CB18DE}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{95BA42B5-B00E-4986-B9B5-517140378452}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{95BA42B5-B00E-4986-B9B5-517140378452}.Debug|Any CPU.Build.0 = Debug|Any CPU
{95BA42B5-B00E-4986-B9B5-517140378452}.Release|Any CPU.ActiveCfg = Release|Any CPU
{95BA42B5-B00E-4986-B9B5-517140378452}.Release|Any CPU.Build.0 = Release|Any CPU
{AF64451F-E2BD-41C2-B083-F60C26AE2A9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AF64451F-E2BD-41C2-B083-F60C26AE2A9F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AF64451F-E2BD-41C2-B083-F60C26AE2A9F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AF64451F-E2BD-41C2-B083-F60C26AE2A9F}.Release|Any CPU.Build.0 = Release|Any CPU
{00A11C2F-969F-4964-8557-91ADF4B1523D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{00A11C2F-969F-4964-8557-91ADF4B1523D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{00A11C2F-969F-4964-8557-91ADF4B1523D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{00A11C2F-969F-4964-8557-91ADF4B1523D}.Release|Any CPU.Build.0 = Release|Any CPU
{EB956381-F3E6-437C-9069-36B8BF5C6E2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EB956381-F3E6-437C-9069-36B8BF5C6E2F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EB956381-F3E6-437C-9069-36B8BF5C6E2F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EB956381-F3E6-437C-9069-36B8BF5C6E2F}.Release|Any CPU.Build.0 = Release|Any CPU
{B8DC1324-977C-46F1-B697-9064ADE6099A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B8DC1324-977C-46F1-B697-9064ADE6099A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B8DC1324-977C-46F1-B697-9064ADE6099A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B8DC1324-977C-46F1-B697-9064ADE6099A}.Release|Any CPU.Build.0 = Release|Any CPU
{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18}.Release|Any CPU.Build.0 = Release|Any CPU
{1C3439E6-73D7-4F8E-A64A-5448F5CB18DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1C3439E6-73D7-4F8E-A64A-5448F5CB18DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1C3439E6-73D7-4F8E-A64A-5448F5CB18DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1C3439E6-73D7-4F8E-A64A-5448F5CB18DE}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{AF64451F-E2BD-41C2-B083-F60C26AE2A9F} = {459BF674-83CB-46F6-881F-A2D2117DBF4D}
{00A11C2F-969F-4964-8557-91ADF4B1523D} = {459BF674-83CB-46F6-881F-A2D2117DBF4D}
{EB956381-F3E6-437C-9069-36B8BF5C6E2F} = {459BF674-83CB-46F6-881F-A2D2117DBF4D}
{E1082E26-D700-4127-9329-66D673FD2D55} = {459BF674-83CB-46F6-881F-A2D2117DBF4D}
{B8DC1324-977C-46F1-B697-9064ADE6099A} = {E1082E26-D700-4127-9329-66D673FD2D55}
{BE50FAEF-4096-48B5-B9CE-EE0C38F15A18} = {E1082E26-D700-4127-9329-66D673FD2D55}
{1C3439E6-73D7-4F8E-A64A-5448F5CB18DE} = {E1082E26-D700-4127-9329-66D673FD2D55}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {0B8ABEAD-D2B5-4370-A187-62B5ABE4EE50}
EndGlobalSection
EndGlobal

Просмотреть файл

@ -0,0 +1,435 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30503.244
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{7E12E071-51C0-4668-9FF3-E2DE9DC51962}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Essentials", "src\Essentials\src\Essentials.csproj", "{8CB95D25-8442-42BC-82BE-319D21138549}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{99FDF6CA-DCF8-4CB2-B2EA-E24CCB601232}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Essentials.UnitTests", "src\Essentials\test\UnitTests\Essentials.UnitTests.csproj", "{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Essentials.DeviceTests.Android", "src\Essentials\test\DeviceTests.Android\Essentials.DeviceTests.Android.csproj", "{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Essentials.DeviceTests.iOS", "src\Essentials\test\DeviceTests.iOS\Essentials.DeviceTests.iOS.csproj", "{B73EB308-70BE-49FD-91A7-1D1495663D6D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Essentials.DeviceTests.Shared", "src\Essentials\test\DeviceTests.Shared\Essentials.DeviceTests.Shared.csproj", "{81128D28-CFC8-4EA4-B68D-9939339C461A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{5817A848-0B04-4035-9F7E-B8621B61CBDD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples.UWP", "src\Essentials\samples\Samples.UWP\Samples.UWP.csproj", "{5A1D97F2-6703-4278-BBF2-12C065F7E94A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Tizen", "src\Essentials\samples\Samples.Tizen\Samples.Tizen.csproj", "{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples.Mac", "src\Essentials\samples\Samples.Mac\Samples.Mac.csproj", "{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples.iOS", "src\Essentials\samples\Samples.iOS\Samples.iOS.csproj", "{AB6242B7-634F-4839-A991-7629D0D2C636}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples.Android", "src\Essentials\samples\Samples.Android\Samples.Android.csproj", "{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples", "src\Essentials\samples\Samples\Samples.csproj", "{2C69EB76-02C4-4921-96A1-4D70CB7CE744}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample.Server.WebAuthenticator", "src\Essentials\samples\Sample.Server.WebAuthenticator\Sample.Server.WebAuthenticator.csproj", "{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|ARM = Debug|ARM
Debug|ARM64 = Debug|ARM64
Debug|iPhone = Debug|iPhone
Debug|iPhoneSimulator = Debug|iPhoneSimulator
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|ARM = Release|ARM
Release|ARM64 = Release|ARM64
Release|iPhone = Release|iPhone
Release|iPhoneSimulator = Release|iPhoneSimulator
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|ARM.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|ARM.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|ARM64.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|iPhone.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|x64.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|x64.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|x86.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|x86.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|Any CPU.Build.0 = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|ARM.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|ARM.Build.0 = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|ARM64.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|ARM64.Build.0 = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|iPhone.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|iPhone.Build.0 = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|x64.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|x64.Build.0 = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|x86.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|x86.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|ARM.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|ARM.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|ARM64.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|iPhone.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|x64.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|x64.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|x86.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|x86.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|Any CPU.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|ARM.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|ARM.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|ARM64.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|ARM64.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|iPhone.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|iPhone.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|x64.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|x64.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|x86.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|x86.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|ARM.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|ARM.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|ARM.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|ARM64.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|ARM64.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|iPhone.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|iPhone.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|x64.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|x64.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|x64.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|x86.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|x86.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|x86.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|Any CPU.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|Any CPU.Deploy.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|ARM.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|ARM.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|ARM.Deploy.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|ARM64.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|ARM64.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|ARM64.Deploy.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|iPhone.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|iPhone.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|iPhone.Deploy.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|x64.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|x64.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|x64.Deploy.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|x86.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|x86.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|x86.Deploy.0 = Release|Any CPU
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|ARM64.ActiveCfg = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|iPhone.ActiveCfg = Debug|iPhone
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|iPhone.Build.0 = Debug|iPhone
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|iPhone.Deploy.0 = Debug|iPhone
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|x64.Build.0 = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|x64.Deploy.0 = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|ARM.ActiveCfg = Release|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|ARM64.ActiveCfg = Release|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|iPhone.ActiveCfg = Release|iPhone
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|iPhone.Build.0 = Release|iPhone
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|x64.ActiveCfg = Release|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|x86.ActiveCfg = Release|iPhoneSimulator
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|ARM.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|ARM.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|ARM64.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|iPhone.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|x64.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|x64.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|x86.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|x86.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|Any CPU.Build.0 = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|ARM.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|ARM.Build.0 = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|ARM64.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|ARM64.Build.0 = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|iPhone.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|iPhone.Build.0 = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|x64.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|x64.Build.0 = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|x86.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|x86.Build.0 = Release|Any CPU
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|Any CPU.ActiveCfg = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|Any CPU.Build.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|Any CPU.Deploy.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|ARM.ActiveCfg = Debug|ARM
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|ARM.Build.0 = Debug|ARM
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|ARM.Deploy.0 = Debug|ARM
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|ARM64.ActiveCfg = Debug|ARM64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|ARM64.Build.0 = Debug|ARM64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|ARM64.Deploy.0 = Debug|ARM64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|iPhone.ActiveCfg = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|iPhone.Build.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|iPhone.Deploy.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|iPhoneSimulator.Build.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|iPhoneSimulator.Deploy.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|x64.ActiveCfg = Debug|x64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|x64.Build.0 = Debug|x64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|x64.Deploy.0 = Debug|x64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|x86.ActiveCfg = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|x86.Build.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|x86.Deploy.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|Any CPU.ActiveCfg = Release|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|ARM.ActiveCfg = Release|ARM
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|ARM.Build.0 = Release|ARM
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|ARM.Deploy.0 = Release|ARM
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|ARM64.ActiveCfg = Release|ARM64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|ARM64.Build.0 = Release|ARM64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|ARM64.Deploy.0 = Release|ARM64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|iPhone.ActiveCfg = Release|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|iPhoneSimulator.ActiveCfg = Release|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|x64.ActiveCfg = Release|x64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|x64.Build.0 = Release|x64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|x64.Deploy.0 = Release|x64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|x86.ActiveCfg = Release|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|x86.Build.0 = Release|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|x86.Deploy.0 = Release|x86
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|ARM.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|ARM.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|ARM64.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|iPhone.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|x64.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|x64.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|x86.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|x86.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|Any CPU.Build.0 = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|ARM.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|ARM.Build.0 = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|ARM64.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|ARM64.Build.0 = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|iPhone.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|iPhone.Build.0 = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|x64.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|x64.Build.0 = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|x86.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|x86.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|ARM.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|ARM.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|ARM64.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|iPhone.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|x64.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|x64.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|x86.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|x86.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|Any CPU.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|ARM.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|ARM.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|ARM64.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|ARM64.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|iPhone.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|iPhone.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|x64.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|x64.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|x86.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|x86.Build.0 = Release|Any CPU
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|ARM64.ActiveCfg = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|iPhone.ActiveCfg = Debug|iPhone
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|iPhone.Build.0 = Debug|iPhone
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|iPhone.Deploy.0 = Debug|iPhone
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|x64.Build.0 = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|x64.Deploy.0 = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|ARM.ActiveCfg = Release|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|ARM64.ActiveCfg = Release|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|iPhone.ActiveCfg = Release|iPhone
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|iPhone.Build.0 = Release|iPhone
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|x64.ActiveCfg = Release|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|x86.ActiveCfg = Release|iPhoneSimulator
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|ARM.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|ARM.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|ARM.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|ARM64.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|ARM64.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|iPhone.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|iPhone.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|x64.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|x64.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|x64.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|x86.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|x86.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|x86.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|Any CPU.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|Any CPU.Deploy.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|ARM.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|ARM.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|ARM.Deploy.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|ARM64.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|ARM64.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|ARM64.Deploy.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|iPhone.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|iPhone.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|iPhone.Deploy.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|x64.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|x64.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|x64.Deploy.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|x86.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|x86.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|x86.Deploy.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|ARM.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|ARM.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|ARM64.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|iPhone.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|x64.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|x64.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|x86.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|x86.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|Any CPU.Build.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|ARM.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|ARM.Build.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|ARM64.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|ARM64.Build.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|iPhone.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|iPhone.Build.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|x64.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|x64.Build.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|x86.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|x86.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|ARM.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|ARM.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|ARM64.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|iPhone.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|x64.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|x64.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|x86.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|x86.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|Any CPU.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|ARM.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|ARM.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|ARM64.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|ARM64.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|iPhone.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|iPhone.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|x64.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|x64.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|x86.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{8CB95D25-8442-42BC-82BE-319D21138549} = {7E12E071-51C0-4668-9FF3-E2DE9DC51962}
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886} = {99FDF6CA-DCF8-4CB2-B2EA-E24CCB601232}
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1} = {99FDF6CA-DCF8-4CB2-B2EA-E24CCB601232}
{B73EB308-70BE-49FD-91A7-1D1495663D6D} = {99FDF6CA-DCF8-4CB2-B2EA-E24CCB601232}
{81128D28-CFC8-4EA4-B68D-9939339C461A} = {99FDF6CA-DCF8-4CB2-B2EA-E24CCB601232}
{5A1D97F2-6703-4278-BBF2-12C065F7E94A} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
{AB6242B7-634F-4839-A991-7629D0D2C636} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
{2C69EB76-02C4-4921-96A1-4D70CB7CE744} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {650AE971-2F29-46A8-822C-FB4FCDC6A9A0}
EndGlobalSection
EndGlobal

1034
Microsoft.Maui.sln Normal file

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

Просмотреть файл

@ -1,435 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30503.244
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{7E12E071-51C0-4668-9FF3-E2DE9DC51962}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Essentials", "src\Essentials\src\Xamarin.Essentials\Xamarin.Essentials.csproj", "{8CB95D25-8442-42BC-82BE-319D21138549}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{99FDF6CA-DCF8-4CB2-B2EA-E24CCB601232}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Essentials.UnitTests", "src\Essentials\test\UnitTests\Xamarin.Essentials.UnitTests.csproj", "{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Essentials.DeviceTests.Android", "src\Essentials\test\DeviceTests.Android\Xamarin.Essentials.DeviceTests.Android.csproj", "{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Essentials.DeviceTests.iOS", "src\Essentials\test\DeviceTests.iOS\Xamarin.Essentials.DeviceTests.iOS.csproj", "{B73EB308-70BE-49FD-91A7-1D1495663D6D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Essentials.DeviceTests.Shared", "src\Essentials\test\DeviceTests.Shared\Xamarin.Essentials.DeviceTests.Shared.csproj", "{81128D28-CFC8-4EA4-B68D-9939339C461A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{5817A848-0B04-4035-9F7E-B8621B61CBDD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples.UWP", "src\Essentials\samples\Samples.UWP\Samples.UWP.csproj", "{5A1D97F2-6703-4278-BBF2-12C065F7E94A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples.Tizen", "src\Essentials\samples\Samples.Tizen\Samples.Tizen.csproj", "{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples.Mac", "src\Essentials\samples\Samples.Mac\Samples.Mac.csproj", "{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples.iOS", "src\Essentials\samples\Samples.iOS\Samples.iOS.csproj", "{AB6242B7-634F-4839-A991-7629D0D2C636}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples.Android", "src\Essentials\samples\Samples.Android\Samples.Android.csproj", "{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Samples", "src\Essentials\samples\Samples\Samples.csproj", "{2C69EB76-02C4-4921-96A1-4D70CB7CE744}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample.Server.WebAuthenticator", "src\Essentials\samples\Sample.Server.WebAuthenticator\Sample.Server.WebAuthenticator.csproj", "{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|ARM = Debug|ARM
Debug|ARM64 = Debug|ARM64
Debug|iPhone = Debug|iPhone
Debug|iPhoneSimulator = Debug|iPhoneSimulator
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|ARM = Release|ARM
Release|ARM64 = Release|ARM64
Release|iPhone = Release|iPhone
Release|iPhoneSimulator = Release|iPhoneSimulator
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|ARM.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|ARM.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|ARM64.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|iPhone.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|x64.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|x64.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|x86.ActiveCfg = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Debug|x86.Build.0 = Debug|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|Any CPU.Build.0 = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|ARM.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|ARM.Build.0 = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|ARM64.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|ARM64.Build.0 = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|iPhone.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|iPhone.Build.0 = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|x64.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|x64.Build.0 = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|x86.ActiveCfg = Release|Any CPU
{8CB95D25-8442-42BC-82BE-319D21138549}.Release|x86.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|ARM.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|ARM.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|ARM64.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|iPhone.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|x64.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|x64.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|x86.ActiveCfg = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Debug|x86.Build.0 = Debug|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|Any CPU.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|ARM.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|ARM.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|ARM64.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|ARM64.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|iPhone.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|iPhone.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|x64.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|x64.Build.0 = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|x86.ActiveCfg = Release|Any CPU
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886}.Release|x86.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|ARM.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|ARM.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|ARM.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|ARM64.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|ARM64.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|iPhone.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|iPhone.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|x64.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|x64.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|x64.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|x86.ActiveCfg = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|x86.Build.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Debug|x86.Deploy.0 = Debug|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|Any CPU.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|Any CPU.Deploy.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|ARM.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|ARM.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|ARM.Deploy.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|ARM64.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|ARM64.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|ARM64.Deploy.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|iPhone.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|iPhone.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|iPhone.Deploy.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|x64.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|x64.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|x64.Deploy.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|x86.ActiveCfg = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|x86.Build.0 = Release|Any CPU
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1}.Release|x86.Deploy.0 = Release|Any CPU
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|ARM64.ActiveCfg = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|iPhone.ActiveCfg = Debug|iPhone
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|iPhone.Build.0 = Debug|iPhone
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|iPhone.Deploy.0 = Debug|iPhone
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|x64.Build.0 = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|x64.Deploy.0 = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|ARM.ActiveCfg = Release|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|ARM64.ActiveCfg = Release|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|iPhone.ActiveCfg = Release|iPhone
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|iPhone.Build.0 = Release|iPhone
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|x64.ActiveCfg = Release|iPhoneSimulator
{B73EB308-70BE-49FD-91A7-1D1495663D6D}.Release|x86.ActiveCfg = Release|iPhoneSimulator
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|ARM.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|ARM.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|ARM64.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|iPhone.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|x64.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|x64.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|x86.ActiveCfg = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Debug|x86.Build.0 = Debug|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|Any CPU.Build.0 = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|ARM.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|ARM.Build.0 = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|ARM64.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|ARM64.Build.0 = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|iPhone.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|iPhone.Build.0 = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|x64.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|x64.Build.0 = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|x86.ActiveCfg = Release|Any CPU
{81128D28-CFC8-4EA4-B68D-9939339C461A}.Release|x86.Build.0 = Release|Any CPU
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|Any CPU.ActiveCfg = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|Any CPU.Build.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|Any CPU.Deploy.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|ARM.ActiveCfg = Debug|ARM
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|ARM.Build.0 = Debug|ARM
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|ARM.Deploy.0 = Debug|ARM
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|ARM64.ActiveCfg = Debug|ARM64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|ARM64.Build.0 = Debug|ARM64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|ARM64.Deploy.0 = Debug|ARM64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|iPhone.ActiveCfg = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|iPhone.Build.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|iPhone.Deploy.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|iPhoneSimulator.Build.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|iPhoneSimulator.Deploy.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|x64.ActiveCfg = Debug|x64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|x64.Build.0 = Debug|x64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|x64.Deploy.0 = Debug|x64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|x86.ActiveCfg = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|x86.Build.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Debug|x86.Deploy.0 = Debug|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|Any CPU.ActiveCfg = Release|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|ARM.ActiveCfg = Release|ARM
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|ARM.Build.0 = Release|ARM
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|ARM.Deploy.0 = Release|ARM
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|ARM64.ActiveCfg = Release|ARM64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|ARM64.Build.0 = Release|ARM64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|ARM64.Deploy.0 = Release|ARM64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|iPhone.ActiveCfg = Release|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|iPhoneSimulator.ActiveCfg = Release|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|x64.ActiveCfg = Release|x64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|x64.Build.0 = Release|x64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|x64.Deploy.0 = Release|x64
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|x86.ActiveCfg = Release|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|x86.Build.0 = Release|x86
{5A1D97F2-6703-4278-BBF2-12C065F7E94A}.Release|x86.Deploy.0 = Release|x86
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|ARM.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|ARM.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|ARM64.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|iPhone.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|x64.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|x64.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|x86.ActiveCfg = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Debug|x86.Build.0 = Debug|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|Any CPU.Build.0 = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|ARM.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|ARM.Build.0 = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|ARM64.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|ARM64.Build.0 = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|iPhone.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|iPhone.Build.0 = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|x64.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|x64.Build.0 = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|x86.ActiveCfg = Release|Any CPU
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348}.Release|x86.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|ARM.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|ARM.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|ARM64.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|iPhone.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|x64.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|x64.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|x86.ActiveCfg = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Debug|x86.Build.0 = Debug|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|Any CPU.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|ARM.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|ARM.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|ARM64.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|ARM64.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|iPhone.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|iPhone.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|x64.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|x64.Build.0 = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|x86.ActiveCfg = Release|Any CPU
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5}.Release|x86.Build.0 = Release|Any CPU
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|ARM64.ActiveCfg = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|iPhone.ActiveCfg = Debug|iPhone
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|iPhone.Build.0 = Debug|iPhone
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|iPhone.Deploy.0 = Debug|iPhone
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|x64.Build.0 = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|x64.Deploy.0 = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|ARM.ActiveCfg = Release|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|ARM64.ActiveCfg = Release|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|iPhone.ActiveCfg = Release|iPhone
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|iPhone.Build.0 = Release|iPhone
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|x64.ActiveCfg = Release|iPhoneSimulator
{AB6242B7-634F-4839-A991-7629D0D2C636}.Release|x86.ActiveCfg = Release|iPhoneSimulator
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|ARM.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|ARM.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|ARM.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|ARM64.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|ARM64.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|iPhone.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|iPhone.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|x64.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|x64.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|x64.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|x86.ActiveCfg = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|x86.Build.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Debug|x86.Deploy.0 = Debug|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|Any CPU.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|Any CPU.Deploy.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|ARM.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|ARM.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|ARM.Deploy.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|ARM64.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|ARM64.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|ARM64.Deploy.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|iPhone.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|iPhone.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|iPhone.Deploy.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|x64.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|x64.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|x64.Deploy.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|x86.ActiveCfg = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|x86.Build.0 = Release|Any CPU
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C}.Release|x86.Deploy.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|ARM.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|ARM.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|ARM64.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|iPhone.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|x64.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|x64.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|x86.ActiveCfg = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Debug|x86.Build.0 = Debug|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|Any CPU.Build.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|ARM.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|ARM.Build.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|ARM64.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|ARM64.Build.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|iPhone.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|iPhone.Build.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|x64.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|x64.Build.0 = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|x86.ActiveCfg = Release|Any CPU
{2C69EB76-02C4-4921-96A1-4D70CB7CE744}.Release|x86.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|ARM.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|ARM.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|ARM64.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|iPhone.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|x64.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|x64.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|x86.ActiveCfg = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Debug|x86.Build.0 = Debug|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|Any CPU.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|ARM.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|ARM.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|ARM64.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|ARM64.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|iPhone.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|iPhone.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|x64.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|x64.Build.0 = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|x86.ActiveCfg = Release|Any CPU
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{8CB95D25-8442-42BC-82BE-319D21138549} = {7E12E071-51C0-4668-9FF3-E2DE9DC51962}
{2E0EB4A3-3C4A-4A5E-8D2F-F77C62464886} = {99FDF6CA-DCF8-4CB2-B2EA-E24CCB601232}
{CB2072E0-A437-4811-AE17-16CAE0DDA1B1} = {99FDF6CA-DCF8-4CB2-B2EA-E24CCB601232}
{B73EB308-70BE-49FD-91A7-1D1495663D6D} = {99FDF6CA-DCF8-4CB2-B2EA-E24CCB601232}
{81128D28-CFC8-4EA4-B68D-9939339C461A} = {99FDF6CA-DCF8-4CB2-B2EA-E24CCB601232}
{5A1D97F2-6703-4278-BBF2-12C065F7E94A} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
{CFBEEB38-D3E8-4100-8CFB-E0A9C4FC0348} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
{89899D16-4BD1-49B1-9903-9F6BB26C5DC5} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
{AB6242B7-634F-4839-A991-7629D0D2C636} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
{3C0CDEF3-495E-45F4-8B12-0E05EF11295C} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
{2C69EB76-02C4-4921-96A1-4D70CB7CE744} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
{0C1B038F-F5CD-4E3C-B9D7-040F020BA44C} = {5817A848-0B04-4035-9F7E-B8621B61CBDD}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {650AE971-2F29-46A8-822C-FB4FCDC6A9A0}
EndGlobalSection
EndGlobal

Просмотреть файл

@ -1,972 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30503.244
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Xamarin.Forms", "Xamarin.Forms", "{9AD757F5-E57A-459D-A0A7-E0675E045B84}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Platform.Renderers", "Platform.Renderers", "{29AC50BF-B4FB-450B-9386-0C5AD4B84226}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Platform.Android", "src\Platform.Renderers\src\Xamarin.Forms.Platform.Android\Xamarin.Forms.Platform.Android.csproj", "{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuspec", ".nuspec", "{7E12C50D-A570-4DF1-94E1-8599843FA87C}"
ProjectSection(SolutionItems) = preProject
.nuspec\proguard.cfg = .nuspec\proguard.cfg
.nuspec\Xamarin.Forms.AppLinks.nuspec = .nuspec\Xamarin.Forms.AppLinks.nuspec
.nuspec\Xamarin.Forms.Debug.targets = .nuspec\Xamarin.Forms.Debug.targets
.nuspec\Xamarin.Forms.DefaultItems.props = .nuspec\Xamarin.Forms.DefaultItems.props
.nuspec\Xamarin.Forms.DefaultItems.targets = .nuspec\Xamarin.Forms.DefaultItems.targets
.nuspec\Xamarin.Forms.DualScreen.nuspec = .nuspec\Xamarin.Forms.DualScreen.nuspec
.nuspec\Xamarin.Forms.Maps.GTK.nuspec = .nuspec\Xamarin.Forms.Maps.GTK.nuspec
.nuspec\Xamarin.Forms.Maps.nuspec = .nuspec\Xamarin.Forms.Maps.nuspec
.nuspec\Xamarin.Forms.Maps.WPF.nuspec = .nuspec\Xamarin.Forms.Maps.WPF.nuspec
.nuspec\Xamarin.Forms.MultiTargeting.targets = .nuspec\Xamarin.Forms.MultiTargeting.targets
.nuspec\Xamarin.Forms.nuspec = .nuspec\Xamarin.Forms.nuspec
.nuspec\Xamarin.Forms.Platform.GTK.nuspec = .nuspec\Xamarin.Forms.Platform.GTK.nuspec
.nuspec\Xamarin.Forms.Platform.WPF.nuspec = .nuspec\Xamarin.Forms.Platform.WPF.nuspec
.nuspec\Xamarin.Forms.props = .nuspec\Xamarin.Forms.props
.nuspec\Xamarin.Forms.targets = .nuspec\Xamarin.Forms.targets
.nuspec\Xamarin.Forms.Visual.Material.nuspec = .nuspec\Xamarin.Forms.Visual.Material.nuspec
.nuspec\Xamarin.Forms.Visual.Material.targets = .nuspec\Xamarin.Forms.Visual.Material.targets
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Core", "src\Forms\src\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj", "{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Platform.Handlers", "Platform.Handlers", "{31721EFD-3238-462B-B501-41F3D2B50E92}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Forms", "Forms", "{97FA536A-675D-41C7-A90E-97E2F79D1AE2}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{423C21C8-84CB-4A3C-BEB9-1C23D752D90F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{2ACC7FFA-238F-44FD-93CB-4D9B17D8C4BA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Platform.Handlers", "src\Platform.Handlers\src\Xamarin.Platform.Handlers\Xamarin.Platform.Handlers.csproj", "{29913989-0F70-48D8-8EDE-B1DD217F21D1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.Android.FormsViewGroup", "src\Platform.Renderers\src\Xamarin.Forms.Platform.Android.FormsViewGroup\Xamarin.Forms.Platform.Android.FormsViewGroup.csproj", "{3B72465B-ACAE-43AE-9327-10F372FE5F80}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.iOS", "src\Platform.Renderers\src\Xamarin.Forms.Platform.iOS\Xamarin.Forms.Platform.iOS.csproj", "{271193C1-6E7C-429C-A36D-3F1BE5267231}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{D5B986A3-7FC9-437E-8030-349AA4698DFD}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{75A2CD30-BB85-4CA6-AC95-86A8A538A690}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Core.UnitTests", "src\Forms\test\Xamarin.Forms.Core.UnitTests\Xamarin.Forms.Core.UnitTests.csproj", "{00259593-A283-47A5-ACB7-9C3819B16364}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Xaml", "src\Forms\src\Xamarin.Forms.Xaml\Xamarin.Forms.Xaml.csproj", "{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Maps", "src\Controls\Maps\src\Xamarin.Forms.Maps\Xamarin.Forms.Maps.csproj", "{F137FAC5-3385-4B19-988B-4A14ED84CCC6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Build.Tasks", "src\Forms\src\Xamarin.Forms.Build.Tasks\Xamarin.Forms.Build.Tasks.csproj", "{C328C538-B69F-43D2-80EE-3C1EB8254CBA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Platform.Handlers.UnitTests", "src\Platform.Handlers\tests\Xamarin.Platform.Handlers.UnitTests\Xamarin.Platform.Handlers.UnitTests.csproj", "{7A753001-1C3D-404D-A421-2E052A545EAC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Control Gallery", "Control Gallery", "{F07FDC58-64A0-42DA-8556-09742721F15E}"
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Xamarin.Forms.Controls.Issues.Shared", "src\ControlGallery\src\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.shproj", "{0F0DB9CC-EA65-429C-9363-38624BF8F49C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Controls", "src\ControlGallery\src\Xamarin.Forms.Controls\Xamarin.Forms.Controls.csproj", "{7AD93806-111D-4FDC-B48D-9566765185FF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.ControlGallery.Android", "src\ControlGallery\src\Xamarin.Forms.ControlGallery.Android\Xamarin.Forms.ControlGallery.Android.csproj", "{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Xamarin.Forms.Maps", "Xamarin.Forms.Maps", "{8A70C15D-86D3-4086-A8C5-E17B299EA970}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Maps.Android", "src\Controls\Maps\src\Xamarin.Forms.Maps.Android\Xamarin.Forms.Maps.Android.csproj", "{1D11EC11-4734-47D4-9B62-4D03CFF67090}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Xamarin.Forms.Xaml", "Xamarin.Forms.Xaml", "{E7F90170-B71B-4730-A082-1DF4E4F04420}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Xaml.Design", "src\Forms\src\Xamarin.Forms.Xaml.Design\Xamarin.Forms.Xaml.Design.csproj", "{65BC4888-CC59-428A-9B75-540CF1C09480}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Xaml.UnitTests", "src\Forms\test\Xamarin.Forms.Xaml.UnitTests\Xamarin.Forms.Xaml.UnitTests.csproj", "{5997F786-4526-4A4B-BFC6-3832091D6544}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Core.Design", "src\Forms\src\Xamarin.Forms.Core.Design\Xamarin.Forms.Core.Design.csproj", "{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Platform.Android.AppLinks", "src\Platform.Renderers\src\Xamarin.Forms.Platform.Android.AppLinks\Xamarin.Forms.Platform.Android.AppLinks.csproj", "{10553575-8E27-4E2C-9E88-90B015E80F1C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.CustomAttributes", "src\Forms\test\Xamarin.Forms.CustomAttributes\Xamarin.Forms.CustomAttributes.csproj", "{2964F669-7CD9-4D78-B4D9-804A965D58C0}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{B5E27729-44E8-4BE6-A62E-45FF27449B8F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{5CE892DB-8CA2-42E4-8130-2836D28AD8DB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.Android.UnitTests", "src\Platform.Renderers\test\Xamarin.Forms.Platform.Android.UnitTests\Xamarin.Forms.Platform.Android.UnitTests.csproj", "{A4C57790-71D1-467C-A69E-2BD84CB6666C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.ControlGallery.iOS", "src\ControlGallery\src\Xamarin.Forms.ControlGallery.iOS\Xamarin.Forms.ControlGallery.iOS.csproj", "{C7131F14-274F-4B55-ACA9-E81731AD012F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Platform.iOS.UnitTests", "src\Platform.Renderers\test\Xamarin.Forms.Platform.iOS.UnitTests\Xamarin.Forms.Platform.iOS.UnitTests.csproj", "{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Maps.iOS", "src\Controls\Maps\src\Xamarin.Forms.Maps.iOS\Xamarin.Forms.Maps.iOS.csproj", "{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{52963C98-6AD9-4B57-924F-BE58DC36D746}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{FFCE9E2C-327C-46E7-8AC1-18CB2E982C2E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Core.iOS.UITests", "src\ControlGallery\test\Xamarin.Forms.Core.iOS.UITests\Xamarin.Forms.Core.iOS.UITests.csproj", "{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}"
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Xamarin.Forms.Core.UITests.Shared", "src\ControlGallery\src\Xamarin.Forms.Core.UITests.Shared\Xamarin.Forms.Core.UITests.Shared.shproj", "{E175485B-3C8C-47D7-8DD5-F7FED627EB25}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.Core.Android.UITests", "src\ControlGallery\test\Xamarin.Forms.Core.Android.UITests\Xamarin.Forms.Core.Android.UITests.csproj", "{A34EBE01-25BF-4E69-A2DC-2288DC625541}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Platform.UAP", "src\Platform.Renderers\src\Xamarin.Forms.Platform.UAP\Xamarin.Forms.Platform.UAP.csproj", "{DD10263D-D580-4241-9E21-EB5DE0FC83C3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.ControlGallery.WindowsUniversal", "src\ControlGallery\src\Xamarin.Forms.ControlGallery.WindowsUniversal\Xamarin.Forms.ControlGallery.WindowsUniversal.csproj", "{AC257966-9368-478A-9DF4-F0D28E320FE3}"
EndProject
Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "Xamarin.Forms.ControlGallery.WindowsUniversal (Package)", "src\ControlGallery\src\Xamarin.Forms.ControlGallery.WindowsUniversal (Package)\Xamarin.Forms.ControlGallery.WindowsUniversal (Package).wapproj", "{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.Platform.UAP.UnitTests", "src\Platform.Renderers\test\Xamarin.Forms.Platform.UAP.UnitTests\Xamarin.Forms.Platform.UAP.UnitTests.csproj", "{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
src\ControlGallery\src\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems*{0f0db9cc-ea65-429c-9363-38624bf8f49c}*SharedItemsImports = 13
src\ControlGallery\src\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems*{7ad93806-111d-4fdc-b48d-9566765185ff}*SharedItemsImports = 5
src\ControlGallery\src\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems*{a34ebe01-25bf-4e69-a2dc-2288dc625541}*SharedItemsImports = 4
src\ControlGallery\src\Xamarin.Forms.Core.UITests.Shared\Xamarin.Forms.Core.UITests.projitems*{a34ebe01-25bf-4e69-a2dc-2288dc625541}*SharedItemsImports = 4
src\ControlGallery\src\Xamarin.Forms.Core.UITests.Shared\Xamarin.Forms.Core.UITests.projitems*{e175485b-3c8c-47d7-8dd5-f7fed627eb25}*SharedItemsImports = 13
src\ControlGallery\src\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems*{eadd8100-b3ae-4a31-92c4-267a64a1c6eb}*SharedItemsImports = 4
src\ControlGallery\src\Xamarin.Forms.Core.UITests.Shared\Xamarin.Forms.Core.UITests.projitems*{eadd8100-b3ae-4a31-92c4-267a64a1c6eb}*SharedItemsImports = 4
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|ARM = Debug|ARM
Debug|ARM64 = Debug|ARM64
Debug|iPhone = Debug|iPhone
Debug|iPhoneSimulator = Debug|iPhoneSimulator
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|ARM = Release|ARM
Release|ARM64 = Release|ARM64
Release|iPhone = Release|iPhone
Release|iPhoneSimulator = Release|iPhoneSimulator
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|ARM.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|ARM.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|ARM64.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|iPhone.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|x64.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|x64.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|x86.ActiveCfg = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Debug|x86.Build.0 = Debug|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|Any CPU.Build.0 = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|ARM.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|ARM.Build.0 = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|ARM64.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|ARM64.Build.0 = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|iPhone.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|iPhone.Build.0 = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|x64.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|x64.Build.0 = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|x86.ActiveCfg = Release|Any CPU
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A}.Release|x86.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|ARM.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|ARM.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|ARM64.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|iPhone.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|x64.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|x64.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|x86.ActiveCfg = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Debug|x86.Build.0 = Debug|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|Any CPU.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|ARM.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|ARM.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|ARM64.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|ARM64.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|iPhone.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|iPhone.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|x64.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|x64.Build.0 = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|x86.ActiveCfg = Release|Any CPU
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}.Release|x86.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|ARM.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|ARM.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|ARM64.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|iPhone.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|x64.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|x64.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|x86.ActiveCfg = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Debug|x86.Build.0 = Debug|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|Any CPU.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|ARM.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|ARM.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|ARM64.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|ARM64.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|iPhone.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|iPhone.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|x64.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|x64.Build.0 = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|x86.ActiveCfg = Release|Any CPU
{29913989-0F70-48D8-8EDE-B1DD217F21D1}.Release|x86.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|ARM.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|ARM.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|ARM64.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|iPhone.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|x64.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|x64.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|x86.ActiveCfg = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Debug|x86.Build.0 = Debug|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|Any CPU.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|ARM.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|ARM.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|ARM64.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|ARM64.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|iPhone.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|iPhone.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x64.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x64.Build.0 = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x86.ActiveCfg = Release|Any CPU
{3B72465B-ACAE-43AE-9327-10F372FE5F80}.Release|x86.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|Any CPU.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|ARM.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|ARM.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|ARM64.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|iPhone.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|x64.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|x64.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|x86.ActiveCfg = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Debug|x86.Build.0 = Debug|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|Any CPU.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|Any CPU.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|ARM.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|ARM.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|ARM64.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|ARM64.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|iPhone.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|iPhone.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|x64.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|x64.Build.0 = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|x86.ActiveCfg = Release|Any CPU
{271193C1-6E7C-429C-A36D-3F1BE5267231}.Release|x86.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|Any CPU.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|ARM.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|ARM.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|ARM64.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|iPhone.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|x64.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|x64.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|x86.ActiveCfg = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Debug|x86.Build.0 = Debug|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|Any CPU.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|Any CPU.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|ARM.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|ARM.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|ARM64.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|ARM64.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|iPhone.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|iPhone.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|x64.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|x64.Build.0 = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|x86.ActiveCfg = Release|Any CPU
{00259593-A283-47A5-ACB7-9C3819B16364}.Release|x86.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|ARM.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|ARM.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|ARM64.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|iPhone.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|x64.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|x64.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|x86.ActiveCfg = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Debug|x86.Build.0 = Debug|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|Any CPU.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|ARM.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|ARM.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|ARM64.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|ARM64.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|iPhone.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|iPhone.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|x64.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|x64.Build.0 = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|x86.ActiveCfg = Release|Any CPU
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27}.Release|x86.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|ARM.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|ARM.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|ARM64.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|iPhone.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|x64.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|x64.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|x86.ActiveCfg = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Debug|x86.Build.0 = Debug|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|Any CPU.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|ARM.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|ARM.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|ARM64.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|ARM64.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|iPhone.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|iPhone.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|x64.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|x64.Build.0 = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|x86.ActiveCfg = Release|Any CPU
{F137FAC5-3385-4B19-988B-4A14ED84CCC6}.Release|x86.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|ARM.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|ARM.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|ARM64.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|iPhone.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|x64.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|x64.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|x86.ActiveCfg = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Debug|x86.Build.0 = Debug|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|Any CPU.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|ARM.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|ARM.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|ARM64.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|ARM64.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|iPhone.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|iPhone.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|x64.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|x64.Build.0 = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|x86.ActiveCfg = Release|Any CPU
{C328C538-B69F-43D2-80EE-3C1EB8254CBA}.Release|x86.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|ARM.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|ARM.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|ARM64.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|iPhone.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|x64.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|x64.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|x86.ActiveCfg = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Debug|x86.Build.0 = Debug|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|Any CPU.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|ARM.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|ARM.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|ARM64.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|ARM64.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|iPhone.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|iPhone.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|x64.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|x64.Build.0 = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|x86.ActiveCfg = Release|Any CPU
{7A753001-1C3D-404D-A421-2E052A545EAC}.Release|x86.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|ARM.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|ARM.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|ARM64.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|iPhone.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|x64.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|x64.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|x86.ActiveCfg = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Debug|x86.Build.0 = Debug|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|Any CPU.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|ARM.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|ARM.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|ARM64.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|ARM64.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|iPhone.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|iPhone.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|x64.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|x64.Build.0 = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|x86.ActiveCfg = Release|Any CPU
{7AD93806-111D-4FDC-B48D-9566765185FF}.Release|x86.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM64.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|ARM64.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhone.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhone.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x64.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x64.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x64.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x86.ActiveCfg = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x86.Build.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Debug|x86.Deploy.0 = Debug|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|Any CPU.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|Any CPU.Deploy.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM.Deploy.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM64.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM64.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|ARM64.Deploy.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhone.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhone.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhone.Deploy.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x64.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x64.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x64.Deploy.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x86.ActiveCfg = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x86.Build.0 = Release|Any CPU
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E}.Release|x86.Deploy.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|ARM.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|ARM.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|ARM64.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|iPhone.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|x64.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|x64.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|x86.ActiveCfg = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Debug|x86.Build.0 = Debug|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|Any CPU.Build.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|ARM.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|ARM.Build.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|ARM64.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|ARM64.Build.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|iPhone.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|iPhone.Build.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|x64.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|x64.Build.0 = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|x86.ActiveCfg = Release|Any CPU
{1D11EC11-4734-47D4-9B62-4D03CFF67090}.Release|x86.Build.0 = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|Any CPU.Build.0 = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|ARM.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|ARM.Build.0 = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|ARM64.Build.0 = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|x64.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|x64.Build.0 = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|x86.ActiveCfg = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Debug|x86.Build.0 = Debug|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|Any CPU.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|Any CPU.Build.0 = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|ARM.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|ARM.Build.0 = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|ARM64.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|ARM64.Build.0 = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|iPhone.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|x64.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|x64.Build.0 = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|x86.ActiveCfg = Release|Any CPU
{65BC4888-CC59-428A-9B75-540CF1C09480}.Release|x86.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|ARM.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|ARM.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|ARM64.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|iPhone.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|x64.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|x64.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|x86.ActiveCfg = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Debug|x86.Build.0 = Debug|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|Any CPU.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|ARM.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|ARM.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|ARM64.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|ARM64.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|iPhone.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|iPhone.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|x64.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|x64.Build.0 = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|x86.ActiveCfg = Release|Any CPU
{5997F786-4526-4A4B-BFC6-3832091D6544}.Release|x86.Build.0 = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|ARM.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|ARM.Build.0 = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|ARM64.Build.0 = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|x64.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|x64.Build.0 = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|x86.ActiveCfg = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Debug|x86.Build.0 = Debug|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|Any CPU.Build.0 = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|ARM.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|ARM.Build.0 = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|ARM64.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|ARM64.Build.0 = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|iPhone.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|x64.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|x64.Build.0 = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|x86.ActiveCfg = Release|Any CPU
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF}.Release|x86.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|ARM.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|ARM.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|ARM64.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|iPhone.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|x64.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|x64.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|x86.ActiveCfg = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Debug|x86.Build.0 = Debug|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|Any CPU.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|ARM.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|ARM.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|ARM64.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|ARM64.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|iPhone.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|iPhone.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|x64.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|x64.Build.0 = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|x86.ActiveCfg = Release|Any CPU
{10553575-8E27-4E2C-9E88-90B015E80F1C}.Release|x86.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|ARM.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|ARM.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|ARM64.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|iPhone.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|x64.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|x64.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|x86.ActiveCfg = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Debug|x86.Build.0 = Debug|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|Any CPU.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|ARM.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|ARM.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|ARM64.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|ARM64.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|iPhone.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|iPhone.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|x64.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|x64.Build.0 = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|x86.ActiveCfg = Release|Any CPU
{2964F669-7CD9-4D78-B4D9-804A965D58C0}.Release|x86.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|ARM.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|ARM.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|ARM64.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|iPhone.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|x64.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|x64.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|x86.ActiveCfg = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Debug|x86.Build.0 = Debug|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|Any CPU.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|ARM.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|ARM.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|ARM64.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|ARM64.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|iPhone.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|iPhone.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|x64.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|x64.Build.0 = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|x86.ActiveCfg = Release|Any CPU
{A4C57790-71D1-467C-A69E-2BD84CB6666C}.Release|x86.Build.0 = Release|Any CPU
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|ARM64.ActiveCfg = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|iPhone.ActiveCfg = Debug|iPhone
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|iPhone.Build.0 = Debug|iPhone
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|iPhone.Deploy.0 = Debug|iPhone
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|ARM.ActiveCfg = Release|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|ARM64.ActiveCfg = Release|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|iPhone.ActiveCfg = Release|iPhone
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|iPhone.Build.0 = Release|iPhone
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|x64.ActiveCfg = Release|iPhoneSimulator
{C7131F14-274F-4B55-ACA9-E81731AD012F}.Release|x86.ActiveCfg = Release|iPhoneSimulator
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|ARM.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|ARM.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|ARM64.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|iPhone.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|x64.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|x64.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|x86.ActiveCfg = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Debug|x86.Build.0 = Debug|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|Any CPU.Build.0 = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|ARM.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|ARM.Build.0 = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|ARM64.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|ARM64.Build.0 = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|iPhone.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|iPhone.Build.0 = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|x64.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|x64.Build.0 = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|x86.ActiveCfg = Release|Any CPU
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE}.Release|x86.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|ARM.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|ARM.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|ARM64.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|iPhone.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|x64.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|x64.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|x86.ActiveCfg = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Debug|x86.Build.0 = Debug|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|Any CPU.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|ARM.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|ARM.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|ARM64.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|ARM64.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|iPhone.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|iPhone.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|x64.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|x64.Build.0 = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|x86.ActiveCfg = Release|Any CPU
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491}.Release|x86.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|ARM.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|ARM.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|ARM64.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|iPhone.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|x64.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|x64.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|x86.ActiveCfg = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Debug|x86.Build.0 = Debug|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|Any CPU.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|ARM.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|ARM.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|ARM64.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|ARM64.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|iPhone.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|iPhone.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|x64.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|x64.Build.0 = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|x86.ActiveCfg = Release|Any CPU
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}.Release|x86.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|ARM.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|ARM.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|ARM64.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|iPhone.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|x64.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|x64.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|x86.ActiveCfg = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Debug|x86.Build.0 = Debug|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|Any CPU.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|ARM.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|ARM.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|ARM64.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|ARM64.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|iPhone.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|iPhone.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x64.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x64.Build.0 = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x86.ActiveCfg = Release|Any CPU
{A34EBE01-25BF-4E69-A2DC-2288DC625541}.Release|x86.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|ARM.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|ARM.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|ARM64.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|iPhone.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|x64.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|x64.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|x86.ActiveCfg = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Debug|x86.Build.0 = Debug|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|Any CPU.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|ARM.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|ARM.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|ARM64.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|ARM64.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|iPhone.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|iPhone.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|x64.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|x64.Build.0 = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|x86.ActiveCfg = Release|Any CPU
{DD10263D-D580-4241-9E21-EB5DE0FC83C3}.Release|x86.Build.0 = Release|Any CPU
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|Any CPU.ActiveCfg = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|ARM.ActiveCfg = Debug|ARM
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|ARM.Build.0 = Debug|ARM
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|ARM.Deploy.0 = Debug|ARM
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|ARM64.ActiveCfg = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|iPhone.ActiveCfg = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x64.ActiveCfg = Debug|x64
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x64.Build.0 = Debug|x64
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x64.Deploy.0 = Debug|x64
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x86.ActiveCfg = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x86.Build.0 = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Debug|x86.Deploy.0 = Debug|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|Any CPU.ActiveCfg = Release|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|ARM.ActiveCfg = Release|ARM
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|ARM.Build.0 = Release|ARM
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|ARM.Deploy.0 = Release|ARM
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|ARM64.ActiveCfg = Release|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|iPhone.ActiveCfg = Release|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|iPhoneSimulator.ActiveCfg = Release|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x64.ActiveCfg = Release|x64
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x64.Build.0 = Release|x64
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x64.Deploy.0 = Release|x64
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x86.ActiveCfg = Release|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x86.Build.0 = Release|x86
{AC257966-9368-478A-9DF4-F0D28E320FE3}.Release|x86.Deploy.0 = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|Any CPU.ActiveCfg = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|ARM.ActiveCfg = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|ARM64.ActiveCfg = Debug|arm64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|ARM64.Build.0 = Debug|arm64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|ARM64.Deploy.0 = Debug|arm64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|iPhone.ActiveCfg = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|x64.ActiveCfg = Debug|x64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|x64.Build.0 = Debug|x64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|x64.Deploy.0 = Debug|x64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|x86.ActiveCfg = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|x86.Build.0 = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Debug|x86.Deploy.0 = Debug|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|Any CPU.ActiveCfg = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|ARM.ActiveCfg = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|ARM64.ActiveCfg = Release|arm64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|ARM64.Build.0 = Release|arm64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|ARM64.Deploy.0 = Release|arm64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|iPhone.ActiveCfg = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|iPhoneSimulator.ActiveCfg = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|x64.ActiveCfg = Release|x64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|x64.Build.0 = Release|x64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|x64.Deploy.0 = Release|x64
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|x86.ActiveCfg = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|x86.Build.0 = Release|x86
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6}.Release|x86.Deploy.0 = Release|x86
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|ARM.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|ARM.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|ARM64.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|iPhone.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|x64.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|x64.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|x86.ActiveCfg = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Debug|x86.Build.0 = Debug|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|Any CPU.Build.0 = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|ARM.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|ARM.Build.0 = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|ARM64.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|ARM64.Build.0 = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|iPhone.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|iPhone.Build.0 = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|x64.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|x64.Build.0 = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|x86.ActiveCfg = Release|Any CPU
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{9AD757F5-E57A-459D-A0A7-E0675E045B84} = {97FA536A-675D-41C7-A90E-97E2F79D1AE2}
{29AC50BF-B4FB-450B-9386-0C5AD4B84226} = {97FA536A-675D-41C7-A90E-97E2F79D1AE2}
{0E16E70A-D6DD-4323-AD5D-363ABFF42D6A} = {B5E27729-44E8-4BE6-A62E-45FF27449B8F}
{57B8B73D-C3B5-4C42-869E-7B2F17D354AC} = {D5B986A3-7FC9-437E-8030-349AA4698DFD}
{423C21C8-84CB-4A3C-BEB9-1C23D752D90F} = {31721EFD-3238-462B-B501-41F3D2B50E92}
{2ACC7FFA-238F-44FD-93CB-4D9B17D8C4BA} = {31721EFD-3238-462B-B501-41F3D2B50E92}
{29913989-0F70-48D8-8EDE-B1DD217F21D1} = {423C21C8-84CB-4A3C-BEB9-1C23D752D90F}
{3B72465B-ACAE-43AE-9327-10F372FE5F80} = {B5E27729-44E8-4BE6-A62E-45FF27449B8F}
{271193C1-6E7C-429C-A36D-3F1BE5267231} = {B5E27729-44E8-4BE6-A62E-45FF27449B8F}
{D5B986A3-7FC9-437E-8030-349AA4698DFD} = {9AD757F5-E57A-459D-A0A7-E0675E045B84}
{75A2CD30-BB85-4CA6-AC95-86A8A538A690} = {9AD757F5-E57A-459D-A0A7-E0675E045B84}
{00259593-A283-47A5-ACB7-9C3819B16364} = {75A2CD30-BB85-4CA6-AC95-86A8A538A690}
{BB98A559-62C4-4C98-90A0-9E4D8DF1CA27} = {E7F90170-B71B-4730-A082-1DF4E4F04420}
{F137FAC5-3385-4B19-988B-4A14ED84CCC6} = {8A70C15D-86D3-4086-A8C5-E17B299EA970}
{C328C538-B69F-43D2-80EE-3C1EB8254CBA} = {E7F90170-B71B-4730-A082-1DF4E4F04420}
{7A753001-1C3D-404D-A421-2E052A545EAC} = {2ACC7FFA-238F-44FD-93CB-4D9B17D8C4BA}
{0F0DB9CC-EA65-429C-9363-38624BF8F49C} = {52963C98-6AD9-4B57-924F-BE58DC36D746}
{7AD93806-111D-4FDC-B48D-9566765185FF} = {52963C98-6AD9-4B57-924F-BE58DC36D746}
{1346A7F1-4457-4BB4-A371-2C8E28BBD53E} = {52963C98-6AD9-4B57-924F-BE58DC36D746}
{8A70C15D-86D3-4086-A8C5-E17B299EA970} = {97FA536A-675D-41C7-A90E-97E2F79D1AE2}
{1D11EC11-4734-47D4-9B62-4D03CFF67090} = {8A70C15D-86D3-4086-A8C5-E17B299EA970}
{E7F90170-B71B-4730-A082-1DF4E4F04420} = {97FA536A-675D-41C7-A90E-97E2F79D1AE2}
{65BC4888-CC59-428A-9B75-540CF1C09480} = {E7F90170-B71B-4730-A082-1DF4E4F04420}
{5997F786-4526-4A4B-BFC6-3832091D6544} = {E7F90170-B71B-4730-A082-1DF4E4F04420}
{98637471-8E5C-4DDE-89CA-2EAA664FB0EF} = {D5B986A3-7FC9-437E-8030-349AA4698DFD}
{10553575-8E27-4E2C-9E88-90B015E80F1C} = {B5E27729-44E8-4BE6-A62E-45FF27449B8F}
{2964F669-7CD9-4D78-B4D9-804A965D58C0} = {75A2CD30-BB85-4CA6-AC95-86A8A538A690}
{B5E27729-44E8-4BE6-A62E-45FF27449B8F} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226}
{5CE892DB-8CA2-42E4-8130-2836D28AD8DB} = {29AC50BF-B4FB-450B-9386-0C5AD4B84226}
{A4C57790-71D1-467C-A69E-2BD84CB6666C} = {5CE892DB-8CA2-42E4-8130-2836D28AD8DB}
{C7131F14-274F-4B55-ACA9-E81731AD012F} = {52963C98-6AD9-4B57-924F-BE58DC36D746}
{52C50E88-7F15-45FE-A63C-8E7C76CA2BAE} = {5CE892DB-8CA2-42E4-8130-2836D28AD8DB}
{ABA078C4-F9BB-4924-8B2B-10FE0D2F5491} = {8A70C15D-86D3-4086-A8C5-E17B299EA970}
{52963C98-6AD9-4B57-924F-BE58DC36D746} = {F07FDC58-64A0-42DA-8556-09742721F15E}
{FFCE9E2C-327C-46E7-8AC1-18CB2E982C2E} = {F07FDC58-64A0-42DA-8556-09742721F15E}
{EADD8100-B3AE-4A31-92C4-267A64A1C6EB} = {FFCE9E2C-327C-46E7-8AC1-18CB2E982C2E}
{E175485B-3C8C-47D7-8DD5-F7FED627EB25} = {FFCE9E2C-327C-46E7-8AC1-18CB2E982C2E}
{A34EBE01-25BF-4E69-A2DC-2288DC625541} = {FFCE9E2C-327C-46E7-8AC1-18CB2E982C2E}
{DD10263D-D580-4241-9E21-EB5DE0FC83C3} = {B5E27729-44E8-4BE6-A62E-45FF27449B8F}
{AC257966-9368-478A-9DF4-F0D28E320FE3} = {52963C98-6AD9-4B57-924F-BE58DC36D746}
{9784DA17-DAEF-455C-8CFB-BA4B4119C1B6} = {52963C98-6AD9-4B57-924F-BE58DC36D746}
{73AD22E5-7E3A-4D1B-A604-687AB40FCC4D} = {5CE892DB-8CA2-42E4-8130-2836D28AD8DB}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {650AE971-2F29-46A8-822C-FB4FCDC6A9A0}
EndGlobalSection
EndGlobal

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -65,7 +65,7 @@ var ANDROID_CONTROLGALLERY_PROJ = $"{ANDROID_CONTROLGALLERY}Xamarin.Forms.Contro
var ANDROID_RENDERERS = Argument("ANDROID_RENDERERS", "FAST"); var ANDROID_RENDERERS = Argument("ANDROID_RENDERERS", "FAST");
var ANDROID_TEST_PROJ = "./src/ControlGallery/test/Xamarin.Forms.Core.Android.UITests/Xamarin.Forms.Core.Android.UITests.csproj"; var ANDROID_TEST_PROJ = "./src/ControlGallery/test/Xamarin.Forms.Core.Android.UITests/Xamarin.Forms.Core.Android.UITests.csproj";
var BUILD_TASKS_PROJ ="src/Forms/src/Xamarin.Forms.Build.Tasks/Xamarin.Forms.Build.Tasks.csproj"; var BUILD_TASKS_PROJ ="src/Controls/src/Build.Tasks/Controls.Build.Tasks.csproj";
var XamarinFormsVersion = Argument("XamarinFormsVersion", ""); var XamarinFormsVersion = Argument("XamarinFormsVersion", "");
var packageVersion = Argument("packageVersion", ""); var packageVersion = Argument("packageVersion", "");
@ -74,6 +74,10 @@ releaseChannelArg = EnvironmentVariable("CHANNEL") ?? releaseChannelArg;
var teamProject = Argument("TeamProject", ""); var teamProject = Argument("TeamProject", "");
bool isHostedAgent = agentName.StartsWith("Azure Pipelines") || agentName.StartsWith("Hosted Agent"); bool isHostedAgent = agentName.StartsWith("Azure Pipelines") || agentName.StartsWith("Hosted Agent");
var MAUI_SLN = "./Microsoft.Maui.sln";
var CONTROLGALLERY_SLN = "./ControlGallery.sln";
string defaultUnitTestWhere = ""; string defaultUnitTestWhere = "";
if(target.ToLower().Contains("uwp")) if(target.ToLower().Contains("uwp"))
@ -703,11 +707,11 @@ Task("_NuGetPack")
}); });
Task("Restore") Task("Restore")
.Description("Restore target on Xamarin.Forms.sln") .Description($"Restore target on {MAUI_SLN}")
.Does(() => .Does(() =>
{ {
try{ try{
MSBuild("./Xamarin.Forms.sln", GetMSBuildSettings().WithTarget("restore")); MSBuild(MAUI_SLN, GetMSBuildSettings().WithTarget("restore"));
} }
catch{ catch{
// ignore restore errors that come from uwp // ignore restore errors that come from uwp
@ -742,8 +746,8 @@ Task("BuildForNuget")
}; };
msbuildSettings.BinaryLogger = binaryLogger; msbuildSettings.BinaryLogger = binaryLogger;
binaryLogger.FileName = $"{artifactStagingDirectory}/Xamarin.Forms-{configuration}.binlog"; binaryLogger.FileName = $"{artifactStagingDirectory}/Maui.Controls-{configuration}.binlog";
MSBuild("./Xamarin.Forms.sln", msbuildSettings.WithRestore()); MSBuild(MAUI_SLN, msbuildSettings.WithRestore());
// // This currently fails on CI will revisit later // // This currently fails on CI will revisit later
// if(isCIBuild) // if(isCIBuild)
@ -752,7 +756,7 @@ Task("BuildForNuget")
// MSBuild("./Xamarin.Forms.Xaml.UnitTests/Xamarin.Forms.Xaml.UnitTests.csproj", GetMSBuildSettings()); // MSBuild("./Xamarin.Forms.Xaml.UnitTests/Xamarin.Forms.Xaml.UnitTests.csproj", GetMSBuildSettings());
// } // }
// MSBuild("./Xamarin.Forms.sln", GetMSBuildSettings().WithTarget("Restore")); // MSBuild(MAUI_SLN, GetMSBuildSettings().WithTarget("Restore"));
// MSBuild("./Xamarin.Forms.DualScreen.sln", GetMSBuildSettings().WithTarget("Restore")); // MSBuild("./Xamarin.Forms.DualScreen.sln", GetMSBuildSettings().WithTarget("Restore"));
// if(isCIBuild) // if(isCIBuild)
@ -768,7 +772,7 @@ Task("BuildForNuget")
// } // }
// } // }
// MSBuild("./Xamarin.Forms.sln", GetMSBuildSettings().WithTarget("Restore")); // MSBuild(MAUI_SLN, GetMSBuildSettings().WithTarget("Restore"));
// MSBuild("./Xamarin.Forms.DualScreen.sln", GetMSBuildSettings().WithTarget("Restore")); // MSBuild("./Xamarin.Forms.DualScreen.sln", GetMSBuildSettings().WithTarget("Restore"));
// msbuildSettings.BinaryLogger = binaryLogger; // msbuildSettings.BinaryLogger = binaryLogger;
@ -807,13 +811,13 @@ Task("BuildForNuget")
// XAML Tests are currently having issues compiling in Release Mode // XAML Tests are currently having issues compiling in Release Mode
if(configuration == "Debug") // if(configuration == "Debug")
{ // {
msbuildSettings = GetMSBuildSettings(); // msbuildSettings = GetMSBuildSettings();
msbuildSettings.BinaryLogger = binaryLogger; // msbuildSettings.BinaryLogger = binaryLogger;
binaryLogger.FileName = $"{artifactStagingDirectory}/Xamarin.Forms.ControlGallery-{configuration}.binlog"; // binaryLogger.FileName = $"{artifactStagingDirectory}/ControlGallery-{configuration}.binlog";
MSBuild("./Xamarin.Forms.ControlGallery.sln", msbuildSettings.WithRestore()); // MSBuild(CONTROLGALLERY_SLN, msbuildSettings.WithRestore());
} // }
if(IsRunningOnWindows()) if(IsRunningOnWindows())
{ {
@ -834,15 +838,15 @@ Task("BuildForNuget")
// .WithProperty("UwpMinTargetFrameworks", "uap10.0.14393") // .WithProperty("UwpMinTargetFrameworks", "uap10.0.14393")
// .WithRestore()); // .WithRestore());
msbuildSettings = GetMSBuildSettings(); // msbuildSettings = GetMSBuildSettings();
msbuildSettings.BinaryLogger = binaryLogger; // msbuildSettings.BinaryLogger = binaryLogger;
binaryLogger.FileName = $"{artifactStagingDirectory}/win-{configuration}-csproj.binlog"; // binaryLogger.FileName = $"{artifactStagingDirectory}/win-{configuration}-csproj.binlog";
MSBuild("./src/Platform.Renderers/src/Xamarin.Forms.Platform.UAP/Xamarin.Forms.Platform.UAP.csproj", // MSBuild("./src/Compatibility/Core/src/UAP/Compatibility.UAP.csproj",
msbuildSettings // msbuildSettings
.WithRestore() // .WithRestore()
.WithTarget("rebuild") // .WithTarget("rebuild")
.WithProperty("DisableEmbeddedXbf", "false") // .WithProperty("DisableEmbeddedXbf", "false")
.WithProperty("EnableTypeInfoReflection", "false")); // .WithProperty("EnableTypeInfoReflection", "false"));
// msbuildSettings = GetMSBuildSettings(); // msbuildSettings = GetMSBuildSettings();
// msbuildSettings.BinaryLogger = binaryLogger; // msbuildSettings.BinaryLogger = binaryLogger;
@ -880,7 +884,7 @@ Task("Build")
.Does(() => .Does(() =>
{ {
try{ try{
MSBuild("./Xamarin.Forms.sln", GetMSBuildSettings().WithRestore()); MSBuild(MAUI_SLN, GetMSBuildSettings().WithRestore());
} }
catch(Exception) catch(Exception)
{ {
@ -893,7 +897,7 @@ Task("Android100")
.Description("Builds Monodroid10.0 targets") .Description("Builds Monodroid10.0 targets")
.Does(() => .Does(() =>
{ {
MSBuild("Xamarin.Forms.sln", MSBuild(MAUI_SLN,
GetMSBuildSettings() GetMSBuildSettings()
.WithRestore() .WithRestore()
.WithProperty("AndroidTargetFrameworks", "MonoAndroid10.0")); .WithProperty("AndroidTargetFrameworks", "MonoAndroid10.0"));
@ -1154,15 +1158,15 @@ T GetBuildVariable<T>(string key, T defaultValue)
return Argument(key, EnvironmentVariable(key, upperCaseReturnValue)); return Argument(key, EnvironmentVariable(key, upperCaseReturnValue));
} }
void StartVisualStudio(string sln = "Xamarin.Forms.sln") void StartVisualStudio(string sln = "./Microsoft.Maui.sln")
{ {
if(isCIBuild) if(isCIBuild)
return; return;
if(IsRunningOnWindows()) if(IsRunningOnWindows())
StartProcess("start", new ProcessSettings{ Arguments = "Xamarin.Forms.sln" }); StartProcess("start", new ProcessSettings{ Arguments = MAUI_SLN });
else else
StartProcess("open", new ProcessSettings{ Arguments = "Xamarin.Forms.sln" }); StartProcess("open", new ProcessSettings{ Arguments = MAUI_SLN });
} }
MSBuildSettings GetMSBuildSettings(PlatformTarget? platformTarget = PlatformTarget.MSIL, string buildConfiguration = null) MSBuildSettings GetMSBuildSettings(PlatformTarget? platformTarget = PlatformTarget.MSIL, string buildConfiguration = null)

Просмотреть файл

@ -1,4 +1,4 @@
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<NightlyTag>nightly</NightlyTag> <NightlyTag>nightly</NightlyTag>
<RegexPre>pre\d</RegexPre> <RegexPre>pre\d</RegexPre>

Просмотреть файл

Просмотреть файл

@ -79,48 +79,48 @@ stages:
parameters: parameters:
provisionatorPath : '/build/provisioning/provisioning.csx' provisionatorPath : '/build/provisioning/provisioning.csx'
- stage: build_osx # - stage: build_osx
displayName: iOS # displayName: iOS
dependsOn: [] # dependsOn: []
jobs: # jobs:
- job: ios # - job: ios
workspace: # workspace:
clean: all # clean: all
displayName: Build ControlGallery iOS # displayName: Build ControlGallery iOS
timeoutInMinutes: 120 # timeoutInMinutes: 120
pool: # pool:
name: $(macOSXVmPool) # name: $(macOSXVmPool)
vmImage: $(macOSXVmImage) # vmImage: $(macOSXVmImage)
demands: # demands:
- sh # - sh
- Xamarin.iOS # - Xamarin.iOS
variables: # variables:
provisionator.xcode : '$(System.DefaultWorkingDirectory)/eng/provisioning/xcode.csx' # provisionator.xcode : '$(System.DefaultWorkingDirectory)/eng/provisioning/xcode.csx'
provisionator.path : '$(System.DefaultWorkingDirectory)/eng/provisioning/provisioning.csx' # provisionator.path : '$(System.DefaultWorkingDirectory)/eng/provisioning/provisioning.csx'
provisionator.extraArguments : '--v' # provisionator.extraArguments : '--v'
steps: # steps:
- template: common/controlgallery-ios.yml # - template: common/controlgallery-ios.yml
- stage: build_android # - stage: build_android
displayName: Android # displayName: Android
dependsOn: [] # dependsOn: []
jobs: # jobs:
- job: android # - job: android
workspace: # workspace:
clean: all # clean: all
displayName: Build ControlGallery Android # displayName: Build ControlGallery Android
timeoutInMinutes: 120 # timeoutInMinutes: 120
pool: # pool:
name: $(macOSXVmPool) # name: $(macOSXVmPool)
vmImage: $(macOSXVmImage) # vmImage: $(macOSXVmImage)
variables: # variables:
renderers: 'FAST' # renderers: 'FAST'
outputfolder: 'newRenderers' # outputfolder: 'newRenderers'
provisionator.xcode : '$(System.DefaultWorkingDirectory)/eng/provisioning/xcode.csx' # provisionator.xcode : '$(System.DefaultWorkingDirectory)/eng/provisioning/xcode.csx'
provisionator.path : '$(System.DefaultWorkingDirectory)/eng/provisioning/provisioning.csx' # provisionator.path : '$(System.DefaultWorkingDirectory)/eng/provisioning/provisioning.csx'
provisionator.extraArguments : '--v' # provisionator.extraArguments : '--v'
steps: # steps:
- template: common/controlgallery-android.yml # - template: common/controlgallery-android.yml
- stage: build_net6_windows - stage: build_net6_windows
displayName: NET6 Windows displayName: NET6 Windows
@ -156,9 +156,9 @@ stages:
errorActionPreference: stop errorActionPreference: stop
- powershell: | - powershell: |
& dotnet restore Maui.sln & dotnet restore Microsoft.Maui-net6.sln
& dotnet build Maui.sln -c Debug -bl:$(LogDirectory)\Debug.binlog & dotnet build Microsoft.Maui-net6.sln -c Debug -bl:$(LogDirectory)\Debug.binlog
& dotnet build Maui.sln -c Release -bl:$(LogDirectory)\Release.binlog & dotnet build Microsoft.Maui-net6.sln -c Release -bl:$(LogDirectory)\Release.binlog
displayName: build samples displayName: build samples
errorActionPreference: stop errorActionPreference: stop
@ -219,9 +219,9 @@ stages:
displayName: configure vsmac xcode displayName: configure vsmac xcode
- bash: | - bash: |
dotnet restore Maui.sln && dotnet restore Microsoft.Maui-net6.sln &&
dotnet build Maui.sln -c Debug -bl:$(LogDirectory)/Debug.binlog && dotnet build Microsoft.Maui-net6.sln -c Debug -bl:$(LogDirectory)/Debug.binlog &&
dotnet build Maui.sln -c Release -bl:$(LogDirectory)/Release.binlog dotnet build Microsoft.Maui-net6.sln -c Release -bl:$(LogDirectory)/Release.binlog
displayName: build samples displayName: build samples
- task: PublishPipelineArtifact@1 - task: PublishPipelineArtifact@1

Просмотреть файл

@ -1,266 +0,0 @@
variables:
- name: DefaultBuildPlatform
value: 'any cpu'
- name: ApkName
value: AndroidControlGallery.AndroidControlGallery.apk
- name: SolutionFile
value: Xamarin.Forms.sln
- name: BuildVersion
value: $[counter('nuget-counter', 126)]
- name: NUGET_VERSION
value: 5.6.0
- name: DOTNET_SKIP_FIRST_TIME_EXPERIENCE
value: true
- name: DOTNET_VERSION
value: 5.0.102
resources:
repositories:
- repository: xamarin-templates
type: github
name: xamarin/yaml-templates
endpoint: xamarin
ref: refs/heads/main # still defaults to master even though main is the main branch
trigger:
branches:
include:
- main
- main-handler
tags:
include:
- '*'
paths:
exclude:
- README.md
pr:
autoCancel: false
branches:
include:
- main
- 3.*
- 4.*
- 5.*
schedules:
- cron: "0 0 * * *"
displayName: Daily midnight build
branches:
include:
- main
stages:
- stage: windows
displayName: Build Windows
jobs:
- job: win_hosted
condition: eq(variables['vs2019VmPool'], 'Azure Pipelines')
workspace:
clean: all
displayName: Build Windows Phase
timeoutInMinutes: 60
pool:
name: $(vs2019VmPool)
vmImage: $(vs2019VmImage)
demands:
msbuild
strategy:
matrix:
debug:
BuildConfiguration: 'Debug'
release:
BuildConfiguration: 'Release'
steps:
- template: build/steps/build-windows.yml
parameters:
provisionatorPath : 'build/provisioning/provisioning.csx'
# - job: nuget_pack_hosted
# workspace:
# clean: all
# displayName: Nuget Phase
# dependsOn:
# - win_hosted
# condition: succeeded()
# pool:
# name: $(vs2019VmPool)
# vmImage: $(vs2019VmImage)
# demands:
# msbuild
# variables:
# FormsIdAppend: ''
# buildConfiguration: $(DefaultBuildConfiguration)
# nugetPackageVersion : $[ dependencies.win_hosted.outputs['debug.winbuild.xamarinformspackageversion'] ]
# steps:
# - template: build/steps/build-nuget.yml
- job: win_bots
condition: ne(variables['vs2019VmPool'], 'Azure Pipelines')
workspace:
clean: all
displayName: Build Windows Phase Bots
timeoutInMinutes: 60
pool:
name: $(vs2019VmPool)
vmImage: $(vs2019VmImage)
demands:
- Agent.OS -equals Windows_NT
- msbuild
strategy:
matrix:
debug:
BuildConfiguration: 'Debug'
release:
BuildConfiguration: 'Release'
steps:
- template: build/steps/build-windows.yml
parameters:
provisionatorPath : 'build/provisioning/provisioning.csx'
# - job: nuget_pack_bots
# workspace:
# clean: all
# displayName: Nuget Phase
# dependsOn:
# - win_bots
# condition: succeeded()
# pool:
# name: $(vs2019VmPool)
# vmImage: $(vs2019VmImage)
# demands:
# - Agent.OS -equals Windows_NT
# - msbuild
# variables:
# FormsIdAppend: ''
# buildConfiguration: $(DefaultBuildConfiguration)
# nugetPackageVersion : $[ dependencies.win_bots.outputs['debug.winbuild.xamarinformspackageversion'] ]
# steps:
# - template: build/steps/build-nuget.yml
# - stage: android
# displayName: Build Android
# ${{ if eq(variables['System.TeamProject'], 'devdiv') }}:
# dependsOn: windows
# ${{ if eq(variables['System.TeamProject'], 'public') }}:
# dependsOn: []
# jobs:
# - template: build/steps/build-android.yml
# parameters:
# vmPool: $[coalesce(variables.macAndroid2019VmPool, 'Azure Pipelines')]
# vmImage: $[coalesce(variables.macAndroid2019VmImage, 'macOS-10.15')]
# provisionatorPath : 'build/provisioning/provisioning.csx'
# buildConfiguration: $(DefaultBuildConfiguration)
# ${{ if ne(variables['MSBuildArguments_cg_android'], '') }}:
# MSBuildArguments_cg_android: $(MSBuildArguments_cg_android)
# - stage: build_osx
# displayName: Build OSX
# ${{ if eq(variables['System.TeamProject'], 'devdiv') }}:
# dependsOn: windows
# ${{ if eq(variables['System.TeamProject'], 'public') }}:
# dependsOn: []
# jobs:
# - job: osx
# workspace:
# clean: all
# displayName: OSX Phase
# timeoutInMinutes: 120
# pool:
# name: $(osx2019VmPool)
# vmImage: $(macOSXVmImage)
# demands:
# - sh
# - Xamarin.iOS
# variables:
# provisionator.osxPath : 'build/provisioning/provisioning.csx'
# buildConfiguration: $(DefaultBuildConfiguration)
# iOSCertSecureFileName: 'Xamarin Forms iOS Certificate.p12'
# iOSProvisioningSecureFileName: 'Xamarin Forms iOS Provisioning.mobileprovision'
# steps:
# - template: build/steps/build-osx.yml
- stage: PoliCheck
displayName: 'Code Analysis'
dependsOn: windows
jobs:
- job: run_poli_check
displayName: 'Policheck And Credentials Compliance'
pool:
name: $(vs2019VmPool)
vmImage: $(vs2019VmImage)
timeoutInMinutes: 60
cancelTimeoutInMinutes: 5
steps:
- checkout: self
- template: security/policheck/v1.yml@xamarin-templates
- template: security/credscan/v2.yml@xamarin-templates
parameters:
suppressionsFile: $(System.DefaultWorkingDirectory)\build\automation\CredScanSuppressions.json
- task: securedevelopmentteam.vss-secure-development-tools.build-task-antimalware.AntiMalware@3
displayName: Run AntiMalware (Defender) Scan
inputs:
FileDirPath: $(System.DefaultWorkingDirectory)
EnableServices: true
condition: succeededOrFailed()
- task: securedevelopmentteam.vss-secure-development-tools.build-task-report.SdtReport@1
displayName: Create Security Analysis Report
inputs:
CredScan: true
PoliCheck: true
condition: succeededOrFailed()
- task: securedevelopmentteam.vss-secure-development-tools.build-task-publishsecurityanalysislogs.PublishSecurityAnalysisLogs@2
displayName: Publish Security Analysis Logs
inputs:
ArtifactName: CodeAnalysisLogs
condition: succeededOrFailed()
- task: securedevelopmentteam.vss-secure-development-tools.build-task-postanalysis.PostAnalysis@1
displayName: Fail Job if Security Issues are Detected
inputs:
CredScan: true
PoliCheck: true
condition: succeededOrFailed()
# - job: api_scan
# displayName: APIScan Compliance
# pool:
# name: $(corpVmImage)
# steps:
# - checkout: none
# clean: true
# - task: DownloadBuildArtifacts@0
# displayName: 'Download build artifact win_build'
# inputs:
# artifactName: win_build
# downloadPath: $(Build.StagingDirectory)
# - task: securedevelopmentteam.vss-secure-development-tools.build-task-apiscan.APIScan@2
# displayName: 'Run APIScan'
# inputs:
# softwareFolder: '$(Build.StagingDirectory)\win_build'
# softwareName: Xamarin.Forms
# softwareVersionNum: $(Build.BuildNumber)
# isLargeApp: false
# only sign using the private server and not sigining Maui for now
# - ${{ if and(eq(variables['System.TeamProject'], 'devdiv'), ne(variables['System.DefinitionId'], '13330')) }}:
# - stage: nuget_signing
# dependsOn: windows
# displayName: Sign Nuget
# jobs:
# - job: nuget_sign
# displayName: Sign Phase
# pool:
# name: $(signVmImage)
# demands:
# msbuild
# steps:
# - template: build/steps/build-sign.yml
# condition: and(succeeded(), ne(variables['signVmImage'], ''), or(eq(variables['Sign'], 'true'), or(eq(variables['Build.SourceBranch'], 'refs/heads/main'), startsWith(variables['Build.SourceBranch'],'refs/tags/'))))

Просмотреть файл

@ -1,4 +1,4 @@
using System; using System;
using Android.App; using Android.App;
using Android.Content; using Android.Content;
using Android.Gms.Tasks; using Android.Gms.Tasks;
@ -9,7 +9,7 @@ using Actions = Firebase.AppIndexing.Builders.Actions;
using GMSTask = Android.Gms.Tasks.Task; using GMSTask = Android.Gms.Tasks.Task;
using IndexingAction = Firebase.AppIndexing.IAction; using IndexingAction = Firebase.AppIndexing.IAction;
namespace Xamarin.Forms.Platform.Android.AppLinks namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppLinks
{ {
[Preserve(AllMembers = true)] [Preserve(AllMembers = true)]
public class AndroidAppLinks : IAppLinks, IDisposable public class AndroidAppLinks : IAppLinks, IDisposable

Просмотреть файл

@ -0,0 +1,29 @@
<Project Sdk="MSBuild.Sdk.Extras">
<PropertyGroup>
<Description>Android AppLinks support for Xamarin.Forms</Description>
<AssemblyName>Microsoft.Maui.Controls.Compatibility.Android.AppLinks</AssemblyName>
</PropertyGroup>
<PropertyGroup>
<TargetFrameworks>$(AndroidTargetFrameworks)</TargetFrameworks>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<RootNamespace>Microsoft.Maui.Controls.Compatibility.Android.AppLinks</RootNamespace>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)'=='Debug' ">
<DebugSymbols>true</DebugSymbols>
</PropertyGroup>
<ItemGroup>
<None Remove="Resources\values\Strings.xml" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\values\Strings.xml" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Xamarin.Firebase.AppIndexing" Version="119.1.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'MonoAndroid10.0'">
<ProjectReference Include="..\..\..\..\Controls\src\Core\Controls.Core.csproj" />
<PackageReference Include="Xamarin.AndroidX.Lifecycle.LiveData" Version="2.2.0.4" />
<PackageReference Include="Xamarin.AndroidX.Legacy.Support.V4" Version="1.0.0.6" />
</ItemGroup>
</Project>

Просмотреть файл

@ -0,0 +1,22 @@
using Android.Content;
using AActivity = Android.App.Activity;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppLinks
{
internal static class ContextExtensions
{
public static AActivity GetActivity(this Context context)
{
if (context == null)
return null;
if (context is AActivity activity)
return activity;
if (context is ContextWrapper contextWrapper)
return contextWrapper.BaseContext.GetActivity();
return null;
}
}
}

Просмотреть файл

@ -0,0 +1,22 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net6.0-android</TargetFrameworks>
<RootNamespace>Microsoft.Maui.Controls.Android</RootNamespace>
<AssemblyName>Microsoft.Maui.Controls.Android.FormsViewGroup</AssemblyName>
<OutputType>Library</OutputType>
<Nullable>disable</Nullable>
</PropertyGroup>
<ItemGroup>
<Compile Remove="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedJar Include="Jars\formsviewgroup.jar" />
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<ItemGroup>
<TransformFile Include="Transforms\Metadata.xml" />
</ItemGroup>
</Project>

Просмотреть файл

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<AndroidCodeGenTarget>XAJavaInterop1</AndroidCodeGenTarget>
<RootNamespace>Microsoft.Maui.Controls.Android</RootNamespace>
</PropertyGroup>
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{3B72465B-ACAE-43AE-9327-10F372FE5F80}</ProjectGuid>
<ProjectTypeGuids>{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>FormsViewGroup</RootNamespace>
<AssemblyName>FormsViewGroup</AssemblyName>
<FileAlignment>512</FileAlignment>
<TargetFrameworkVersion>v10.0</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>portable</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoWarn>CS0109</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>portable</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoWarn>CS0109</NoWarn>
</PropertyGroup>
<ItemGroup>
<Reference Include="Mono.Android" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedJar Include="Jars\formsviewgroup.jar" />
</ItemGroup>
<ItemGroup>
<TransformFile Include="Transforms\Metadata.xml" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.Bindings.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

Просмотреть файл

@ -0,0 +1,6 @@
using System.Reflection;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle ("FormsViewGroup")]
[assembly: AssemblyDescription ("")]
[assembly: ComVisible (false)]

Просмотреть файл

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8" ?>
<metadata>
<!--
This sample removes the class: android.support.v4.content.AsyncTaskLoader.LoadTask:
<remove-node path="/api/package[@name='android.support.v4.content']/class[@name='AsyncTaskLoader.LoadTask']" />
This sample removes the method: android.support.v4.content.CursorLoader.loadInBackground:
<remove-node path="/api/package[@name='android.support.v4.content']/class[@name='CursorLoader']/method[@name='loadInBackground']" />
-->
<attr path="/api/package[@name='com.xamarin.forms.platform.android']" name="managedName">Microsoft.Maui.Controls.Android</attr>
<attr path="/api/package[@name='com.xamarin.formsviewgroup']" name="managedName">Microsoft.Maui.Controls.Android</attr>
</metadata>

Просмотреть файл

@ -1,9 +1,9 @@
using System; using System;
using System.Collections.Concurrent; using System.Collections.Concurrent;
using Android.App; using Android.App;
using Android.Content; using Android.Content;
namespace Xamarin.Forms.Platform.Android namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{ {
public static class ActivityResultCallbackRegistry public static class ActivityResultCallbackRegistry
{ {

Просмотреть файл

@ -0,0 +1,23 @@
using System;
using Android.Content;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public class AndroidAppIndexProvider : IAppIndexingProvider
{
public AndroidAppIndexProvider(Context context)
{
var fullyQualifiedName = $"{AppLinksAssemblyName}.{AppLinksClassName}, {AppLinksAssemblyName}";
var type = Type.GetType(fullyQualifiedName, throwOnError: false);
if (type != null)
{
AppLinks = Activator.CreateInstance(type, new object[] { context }, null) as IAppLinks;
}
}
public IAppLinks AppLinks { get; }
const string AppLinksAssemblyName = "Microsoft.Maui.Controls.Compatibility.Platform.Android.AppLinks";
const string AppLinksClassName = "AndroidAppLinks";
}
}

Просмотреть файл

@ -0,0 +1,14 @@
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
internal enum AndroidApplicationLifecycleState
{
Uninitialized,
OnCreate,
OnStart,
OnResume,
OnPause,
OnStop,
OnRestart,
OnDestroy
}
}

Просмотреть файл

@ -2,11 +2,11 @@ using System;
using Android.Animation; using Android.Animation;
using Android.Content; using Android.Content;
using Android.OS; using Android.OS;
using Xamarin.Forms.Internals; using Microsoft.Maui.Controls.Internals;
using GlobalSettings = Android.Provider.Settings.Global; using GlobalSettings = Android.Provider.Settings.Global;
using SystemSettings = Android.Provider.Settings.System; using SystemSettings = Android.Provider.Settings.System;
namespace Xamarin.Forms.Platform.Android namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{ {
internal class AndroidTicker : Ticker, IDisposable internal class AndroidTicker : Ticker, IDisposable
{ {

Просмотреть файл

@ -0,0 +1,8 @@
namespace Microsoft.Maui.Controls.Compatibility
{
public enum AndroidTitleBarVisibility
{
Default = 0,
Never = 1
}
}

Просмотреть файл

@ -0,0 +1,219 @@
using System;
using System.ComponentModel;
using Android.Content;
using Android.Graphics;
using Android.Util;
using Android.Views;
using AndroidX.AppCompat.Widget;
using Microsoft.Maui.Controls.PlatformConfiguration.AndroidSpecific;
using AColor = Android.Graphics.Color;
using AView = Android.Views.View;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{
public class ButtonRenderer : ViewRenderer<Button, AppCompatButton>,
AView.IOnAttachStateChangeListener, AView.IOnClickListener, AView.IOnTouchListener,
IBorderVisualElementRenderer, IButtonLayoutRenderer, IDisposedState
{
BorderBackgroundManager _backgroundTracker;
TextColorSwitcher _textColorSwitcher;
float _defaultFontSize;
Typeface _defaultTypeface;
bool _isDisposed;
ButtonLayoutManager _buttonLayoutManager;
public ButtonRenderer(Context context) : base(context)
{
AutoPackage = false;
_backgroundTracker = new BorderBackgroundManager(this);
_buttonLayoutManager = new ButtonLayoutManager(this);
}
global::Android.Widget.Button NativeButton => Control;
protected override void SetContentDescription()
=> base.SetContentDescription(false);
public override SizeRequest GetDesiredSize(int widthConstraint, int heightConstraint)
{
return _buttonLayoutManager.GetDesiredSize(widthConstraint, heightConstraint);
}
void AView.IOnAttachStateChangeListener.OnViewAttachedToWindow(AView attachedView) =>
_buttonLayoutManager?.OnViewAttachedToWindow(attachedView);
void AView.IOnAttachStateChangeListener.OnViewDetachedFromWindow(AView detachedView) =>
_buttonLayoutManager?.OnViewDetachedFromWindow(detachedView);
protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
_buttonLayoutManager?.OnLayout(changed, l, t, r, b);
base.OnLayout(changed, l, t, r, b);
}
protected override AppCompatButton CreateNativeControl()
{
return new AppCompatButton(Context);
}
protected override void Dispose(bool disposing)
{
if (_isDisposed)
return;
_isDisposed = true;
if (disposing)
{
if (Control != null)
{
Control.SetOnClickListener(null);
Control.SetOnTouchListener(null);
Control.RemoveOnAttachStateChangeListener(this);
_textColorSwitcher = null;
}
_backgroundTracker?.Dispose();
_backgroundTracker = null;
_buttonLayoutManager?.Dispose();
_buttonLayoutManager = null;
}
base.Dispose(disposing);
}
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
if (Control == null)
{
AppCompatButton button = CreateNativeControl();
button.SetOnClickListener(this);
button.SetOnTouchListener(this);
button.AddOnAttachStateChangeListener(this);
_textColorSwitcher = new TextColorSwitcher(button.TextColors, e.NewElement.UseLegacyColorManagement());
SetNativeControl(button);
}
_defaultFontSize = 0f;
_buttonLayoutManager?.Update();
UpdateAll();
}
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (this.IsDisposed())
{
return;
}
if (e.PropertyName == Button.TextColorProperty.PropertyName)
UpdateTextColor();
else if (e.PropertyName == VisualElement.IsEnabledProperty.PropertyName)
UpdateEnabled();
else if (e.PropertyName == Button.FontProperty.PropertyName)
UpdateFont();
else if (e.PropertyName == Button.CharacterSpacingProperty.PropertyName)
UpdateCharacterSpacing();
base.OnElementPropertyChanged(sender, e);
}
[PortHandler]
protected override void UpdateBackgroundColor()
{
if (Element == null || Control == null)
return;
_backgroundTracker?.UpdateDrawable();
}
void UpdateAll()
{
UpdateFont();
UpdateTextColor();
UpdateEnabled();
UpdateBackgroundColor();
UpdateCharacterSpacing();
}
void UpdateEnabled()
{
Control.Enabled = Element.IsEnabled;
}
void UpdateFont()
{
Button button = Element;
Font font = button.Font;
if (font == Font.Default && _defaultFontSize == 0f)
return;
if (_defaultFontSize == 0f)
{
_defaultTypeface = NativeButton.Typeface;
_defaultFontSize = NativeButton.TextSize;
}
if (font == Font.Default)
{
NativeButton.Typeface = _defaultTypeface;
NativeButton.SetTextSize(ComplexUnitType.Px, _defaultFontSize);
}
else
{
NativeButton.Typeface = font.ToTypeface();
NativeButton.SetTextSize(ComplexUnitType.Sp, font.ToScaledPixel());
}
}
void UpdateTextColor()
{
_textColorSwitcher?.UpdateTextColor(Control, Element.TextColor);
}
void UpdateCharacterSpacing()
{
if (Forms.IsLollipopOrNewer)
{
NativeButton.LetterSpacing = Element.CharacterSpacing.ToEm();
}
}
void IOnClickListener.OnClick(AView v) => ButtonElementManager.OnClick(Element, Element, v);
bool IOnTouchListener.OnTouch(AView v, MotionEvent e) => ButtonElementManager.OnTouch(Element, Element, v, e);
float IBorderVisualElementRenderer.ShadowRadius => Control.ShadowRadius;
float IBorderVisualElementRenderer.ShadowDx => Control.ShadowDx;
float IBorderVisualElementRenderer.ShadowDy => Control.ShadowDy;
AColor IBorderVisualElementRenderer.ShadowColor => Control.ShadowColor;
bool IBorderVisualElementRenderer.UseDefaultPadding() => Element.OnThisPlatform().UseDefaultPadding();
bool IBorderVisualElementRenderer.UseDefaultShadow() => Element.OnThisPlatform().UseDefaultShadow();
bool IBorderVisualElementRenderer.IsShadowEnabled() => true;
VisualElement IBorderVisualElementRenderer.Element => Element;
AView IBorderVisualElementRenderer.View => Control;
event EventHandler<VisualElementChangedEventArgs> IBorderVisualElementRenderer.ElementChanged
{
add => ((IVisualElementRenderer)this).ElementChanged += value;
remove => ((IVisualElementRenderer)this).ElementChanged -= value;
}
event EventHandler<VisualElementChangedEventArgs> IButtonLayoutRenderer.ElementChanged
{
add => ((IVisualElementRenderer)this).ElementChanged += value;
remove => ((IVisualElementRenderer)this).ElementChanged -= value;
}
AppCompatButton IButtonLayoutRenderer.View => Control;
bool IDisposedState.IsDisposed => _isDisposed || !Control.IsAlive();
}
}

Просмотреть файл

@ -0,0 +1,194 @@
using System.Collections.Specialized;
using System.ComponentModel;
using Android.Content;
using Android.Views;
using AndroidX.Fragment.App;
using AndroidX.ViewPager.Widget;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{
public class CarouselPageRenderer : VisualElementRenderer<CarouselPage>, ViewPager.IOnPageChangeListener, IManageFragments
{
bool _disposed;
FormsViewPager _viewPager;
Page _previousPage;
FragmentManager _fragmentManager;
public CarouselPageRenderer(Context context) : base(context)
{
AutoPackage = false;
}
void ViewPager.IOnPageChangeListener.OnPageScrolled(int position, float positionOffset, int positionOffsetPixels)
{
}
void ViewPager.IOnPageChangeListener.OnPageScrollStateChanged(int state)
{
}
IPageController PageController => Element as IPageController;
FragmentManager FragmentManager => _fragmentManager ?? (_fragmentManager = Context.GetFragmentManager());
void IManageFragments.SetFragmentManager(FragmentManager childFragmentManager)
{
if (_fragmentManager == null)
_fragmentManager = childFragmentManager;
}
void ViewPager.IOnPageChangeListener.OnPageSelected(int position)
{
Element.CurrentPage = Element.Children[position];
if (_previousPage != Element.CurrentPage)
{
_previousPage?.SendDisappearing();
_previousPage = Element.CurrentPage;
}
Element.CurrentPage.SendAppearing();
}
protected override void Dispose(bool disposing)
{
if (disposing && !_disposed)
{
_disposed = true;
if (Element != null)
PageController.InternalChildren.CollectionChanged -= OnChildrenCollectionChanged;
if (_viewPager != null)
{
RemoveView(_viewPager);
_viewPager.ClearOnPageChangeListeners();
_viewPager.Adapter.Dispose();
_viewPager.Dispose();
_viewPager = null;
}
RemoveAllViews();
_previousPage = null;
_fragmentManager = null;
if (Element?.Children != null)
{
foreach (ContentPage pageToRemove in Element.Children)
{
IVisualElementRenderer pageRenderer = Platform.GetRenderer(pageToRemove);
if (pageRenderer != null)
{
pageRenderer.View.RemoveFromParent();
pageRenderer.Dispose();
}
pageToRemove.ClearValue(Platform.RendererProperty);
}
}
}
base.Dispose(disposing);
}
protected override void OnAttachedToWindow()
{
base.OnAttachedToWindow();
if (Parent is PageContainer pageContainer && (pageContainer.IsInFragment || pageContainer.Visibility == ViewStates.Gone))
return;
PageController.SendAppearing();
Element.CurrentPage?.SendAppearing();
}
protected override void OnDetachedFromWindow()
{
base.OnDetachedFromWindow();
if (Parent is PageContainer pageContainer && pageContainer.IsInFragment)
return;
Element.CurrentPage?.SendDisappearing();
PageController.SendDisappearing();
}
protected override void OnElementChanged(ElementChangedEventArgs<CarouselPage> e)
{
base.OnElementChanged(e);
var activity = (FormsAppCompatActivity)Context.GetActivity();
if (e.OldElement != null)
((IPageController)e.OldElement).InternalChildren.CollectionChanged -= OnChildrenCollectionChanged;
if (e.NewElement != null)
{
if (_viewPager != null)
{
_viewPager.RemoveOnPageChangeListener(this);
ViewGroup.RemoveView(_viewPager);
_viewPager.Dispose();
}
FormsViewPager pager = _viewPager = new FormsViewPager(activity)
{
OverScrollMode = OverScrollMode.Never,
EnableGesture = true,
LayoutParameters = new LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent),
Adapter = new FormsFragmentPagerAdapter<ContentPage>(e.NewElement, FragmentManager) { CountOverride = e.NewElement.Children.Count }
};
pager.Id = Platform.GenerateViewId();
pager.AddOnPageChangeListener(this);
ViewGroup.AddView(pager);
CarouselPage carouselPage = e.NewElement;
if (carouselPage.CurrentPage != null)
{
_previousPage = carouselPage.CurrentPage;
ScrollToCurrentPage();
}
((IPageController)carouselPage).InternalChildren.CollectionChanged += OnChildrenCollectionChanged;
}
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
if (e.PropertyName == nameof(Element.CurrentPage))
ScrollToCurrentPage();
}
protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
FormsViewPager pager = _viewPager;
Context context = Context;
int width = r - l;
int height = b - t;
pager.Measure(MeasureSpecFactory.MakeMeasureSpec(width, MeasureSpecMode.AtMost), MeasureSpecFactory.MakeMeasureSpec(height, MeasureSpecMode.AtMost));
if (width > 0 && height > 0)
{
PageController.ContainerArea = new Rectangle(0, 0, context.FromPixels(width), context.FromPixels(height));
pager.Layout(0, 0, width, b);
}
base.OnLayout(changed, l, t, r, b);
}
void OnChildrenCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
FormsViewPager pager = _viewPager;
((FormsFragmentPagerAdapter<ContentPage>)pager.Adapter).CountOverride = Element.Children.Count;
pager.Adapter.NotifyDataSetChanged();
}
void ScrollToCurrentPage()
{
_viewPager.SetCurrentItem(Element.Children.IndexOf(Element.CurrentPage), true);
}
}
}

Просмотреть файл

@ -0,0 +1,12 @@
using System;
using Android.Content;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public class CheckBoxRenderer : CheckBoxRendererBase
{
public CheckBoxRenderer(Context context) : base(context)
{
}
}
}

Просмотреть файл

@ -0,0 +1,281 @@
using System;
using System.ComponentModel;
using Android.Content;
using Android.Content.Res;
using Android.Graphics;
using Android.Views;
using Android.Widget;
using AndroidX.AppCompat.Widget;
using AndroidX.Core.Widget;
using Microsoft.Maui.Controls.Internals;
using Microsoft.Maui.Controls.Compatibility.Platform.Android.FastRenderers;
using AAttribute = Android.Resource.Attribute;
using AColor = Android.Graphics.Color;
using AView = Android.Views.View;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public class CheckBoxRendererBase :
AppCompatCheckBox,
IVisualElementRenderer,
AView.IOnFocusChangeListener,
CompoundButton.IOnCheckedChangeListener,
ITabStop
{
bool _disposed;
int? _defaultLabelFor;
VisualElementTracker _tracker;
VisualElementRenderer _visualElementRenderer;
IPlatformElementConfiguration<PlatformConfiguration.Android, CheckBox> _platformElementConfiguration;
CheckBox _checkBox;
static int[][] _checkedStates = new int[][]
{
new int[] { AAttribute.StateEnabled, AAttribute.StateChecked },
new int[] { AAttribute.StateEnabled, -AAttribute.StateChecked },
new int[] { -AAttribute.StateEnabled, AAttribute.StateChecked },
new int[] { -AAttribute.StateEnabled, -AAttribute.StatePressed },
};
public event EventHandler<VisualElementChangedEventArgs> ElementChanged;
public event EventHandler<PropertyChangedEventArgs> ElementPropertyChanged;
public CheckBoxRendererBase(Context context) : base(context) => Init();
public CheckBoxRendererBase(Context context, int defStyleAttr) : base(context, null, defStyleAttr) => Init();
void Init()
{
SoundEffectsEnabled = false;
SetOnCheckedChangeListener(this);
Tag = this;
OnFocusChangeListener = this;
this.SetClipToOutline(true);
}
protected override void Dispose(bool disposing)
{
if (_disposed)
return;
_disposed = true;
if (disposing)
{
_disposed = true;
_tracker?.Dispose();
_tracker = null;
SetOnCheckedChangeListener(null);
OnFocusChangeListener = null;
if (Element != null)
{
Element.PropertyChanged -= OnElementPropertyChanged;
if (AppCompat.Platform.GetRenderer(Element) == this)
{
Element.ClearValue(AppCompat.Platform.RendererProperty);
}
Element = null;
}
}
base.Dispose(disposing);
}
Size MinimumSize()
{
return Size.Zero;
}
SizeRequest IVisualElementRenderer.GetDesiredSize(int widthConstraint, int heightConstraint)
{
if (_disposed)
{
return new SizeRequest();
}
Measure(widthConstraint, heightConstraint);
return new SizeRequest(new Size(MeasuredWidth, MeasuredHeight), MinimumSize());
}
void IVisualElementRenderer.SetElement(VisualElement element)
{
if (element == null)
{
throw new ArgumentNullException(nameof(element));
}
if (!(element is CheckBox checkBox))
{
throw new ArgumentException("Element is not of type " + typeof(CheckBox), nameof(element));
}
CheckBox oldElement = Element;
Element = checkBox;
Performance.Start(out string reference);
if (oldElement != null)
{
oldElement.PropertyChanged -= OnElementPropertyChanged;
}
element.PropertyChanged += OnElementPropertyChanged;
if (_tracker == null)
{
_tracker = new VisualElementTracker(this);
}
if (_visualElementRenderer == null)
{
_visualElementRenderer = new VisualElementRenderer(this);
}
OnElementChanged(new ElementChangedEventArgs<CheckBox>(oldElement as CheckBox, Element));
Element?.SendViewInitialized(Control);
Performance.Stop(reference);
}
protected virtual void OnElementChanged(ElementChangedEventArgs<CheckBox> e)
{
if (e.NewElement != null && !_disposed)
{
this.EnsureId();
UpdateOnColor();
UpdateIsChecked();
UpdateBackgroundColor();
UpdateBackground();
}
ElementChanged?.Invoke(this, new VisualElementChangedEventArgs(e.OldElement, e.NewElement));
}
protected virtual void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (this.IsDisposed())
{
return;
}
if (e.PropertyName == CheckBox.ColorProperty.PropertyName)
{
UpdateOnColor();
}
else if (e.PropertyName == CheckBox.IsCheckedProperty.PropertyName)
{
UpdateIsChecked();
}
else if (e.PropertyName == VisualElement.BackgroundColorProperty.PropertyName)
{
UpdateBackgroundColor();
}
else if (e.PropertyName == VisualElement.BackgroundProperty.PropertyName)
{
UpdateBackground();
}
ElementPropertyChanged?.Invoke(this, e);
}
void IOnCheckedChangeListener.OnCheckedChanged(CompoundButton buttonView, bool isChecked)
{
((IElementController)Element).SetValueFromRenderer(CheckBox.IsCheckedProperty, isChecked);
}
void UpdateIsChecked()
{
if (Element == null || Control == null)
return;
Checked = Element.IsChecked;
}
protected virtual ColorStateList GetColorStateList()
{
var tintColor = Element.Color == Color.Default ? Color.Accent.ToAndroid() : Element.Color.ToAndroid();
var list = new ColorStateList(
_checkedStates,
new int[]
{
tintColor,
tintColor,
tintColor,
tintColor
});
return list;
}
void UpdateBackgroundColor()
{
if (Element.BackgroundColor == Color.Default)
SetBackgroundColor(AColor.Transparent);
else
SetBackgroundColor(Element.BackgroundColor.ToAndroid());
}
void UpdateBackground()
{
Brush background = Element.Background;
this.UpdateBackground(background);
}
void UpdateOnColor()
{
if (Element == null || Control == null)
return;
var mode = PorterDuff.Mode.SrcIn;
CompoundButtonCompat.SetButtonTintList(Control, GetColorStateList());
CompoundButtonCompat.SetButtonTintMode(Control, mode);
}
void IOnFocusChangeListener.OnFocusChange(AView v, bool hasFocus)
{
((IElementController)Element).SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, hasFocus);
}
IPlatformElementConfiguration<PlatformConfiguration.Android, CheckBox> OnThisPlatform()
{
if (_platformElementConfiguration == null)
_platformElementConfiguration = Element.OnThisPlatform();
return _platformElementConfiguration;
}
public void SetLabelFor(int? id)
{
if (_defaultLabelFor == null)
_defaultLabelFor = LabelFor;
LabelFor = (int)(id ?? _defaultLabelFor);
}
void IVisualElementRenderer.UpdateLayout() => _tracker?.UpdateLayout();
VisualElement IVisualElementRenderer.Element => Element;
AView IVisualElementRenderer.View => this;
ViewGroup IVisualElementRenderer.ViewGroup => null;
VisualElementTracker IVisualElementRenderer.Tracker => _tracker;
protected CheckBox Element
{
get => _checkBox;
private set
{
_checkBox = value;
_platformElementConfiguration = null;
}
}
protected AppCompatCheckBox Control => this;
AView ITabStop.TabStop => this;
}
}

Просмотреть файл

@ -2,15 +2,15 @@ using Android.App;
using Android.Content; using Android.Content;
using Android.Content.Res; using Android.Content.Res;
using Android.Views; using Android.Views;
using Xamarin.Forms.Internals; using Microsoft.Maui.Controls.Internals;
using Xamarin.Forms.Platform.Android.AppCompat; using Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat;
using APlatform = Xamarin.Forms.Platform.Android.AppCompat.Platform; using APlatform = Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat.Platform;
using Fragment = AndroidX.Fragment.App.Fragment; using Fragment = AndroidX.Fragment.App.Fragment;
using FragmentContainer = Xamarin.Forms.Platform.Android.AppCompat.FragmentContainer; using FragmentContainer = Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat.FragmentContainer;
using FragmentManager = AndroidX.Fragment.App.FragmentManager; using FragmentManager = AndroidX.Fragment.App.FragmentManager;
using FragmentTransaction = AndroidX.Fragment.App.FragmentTransaction; using FragmentTransaction = AndroidX.Fragment.App.FragmentTransaction;
namespace Xamarin.Forms.Platform.Android namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{ {
internal class FlyoutPageContainer : ViewGroup, IManageFragments internal class FlyoutPageContainer : ViewGroup, IManageFragments
{ {

Просмотреть файл

@ -0,0 +1,508 @@
using System;
using System.ComponentModel;
using System.Threading.Tasks;
using Android.Content;
using Android.OS;
using Android.Views;
using AndroidX.DrawerLayout.Widget;
using AndroidX.Fragment.App;
using AView = Android.Views.View;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
using Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat;
using Microsoft.Maui.Controls.Compatibility.Platform.Android.FastRenderers;
public class FlyoutPageRenderer : DrawerLayout, IVisualElementRenderer, DrawerLayout.IDrawerListener, IManageFragments, ILifeCycleState
{
#region Statics
//from Android source code
const uint DefaultScrimColor = 0x99000000;
#endregion
int _currentLockMode = -1;
FlyoutPageContainer _detailLayout;
FlyoutPageContainer _flyoutLayout;
bool _disposed;
bool _isPresentingFromCore;
bool _presented;
bool _defaultAutomationSet;
VisualElementTracker _tracker;
FragmentManager _fragmentManager;
string _defaultContentDescription;
public FlyoutPageRenderer(Context context) : base(context)
{
}
FlyoutPage Element { get; set; }
IFlyoutPageController FlyoutPageController => Element as IFlyoutPageController;
bool Presented
{
get { return _presented; }
set
{
if (value == _presented)
return;
UpdateSplitViewLayout();
_presented = value;
if (Element.FlyoutLayoutBehavior == FlyoutLayoutBehavior.Default && FlyoutPageController.ShouldShowSplitMode)
return;
if (_presented)
OpenDrawer(_flyoutLayout);
else
CloseDrawer(_flyoutLayout);
}
}
IPageController FlyoutPagePageController => Element.Flyout as IPageController;
IPageController DetailPageController => Element.Detail as IPageController;
IPageController PageController => Element as IPageController;
void IDrawerListener.OnDrawerClosed(global::Android.Views.View drawerView)
{
}
void IDrawerListener.OnDrawerOpened(global::Android.Views.View drawerView)
{
}
void IDrawerListener.OnDrawerSlide(global::Android.Views.View drawerView, float slideOffset)
{
}
void IDrawerListener.OnDrawerStateChanged(int newState)
{
_presented = IsDrawerVisible(_flyoutLayout);
UpdateIsPresented();
}
void IManageFragments.SetFragmentManager(FragmentManager fragmentManager)
{
if (_fragmentManager == null)
_fragmentManager = fragmentManager;
}
VisualElement IVisualElementRenderer.Element => Element;
event EventHandler<VisualElementChangedEventArgs> IVisualElementRenderer.ElementChanged
{
add { ElementChanged += value; }
remove { ElementChanged -= value; }
}
event EventHandler<PropertyChangedEventArgs> IVisualElementRenderer.ElementPropertyChanged
{
add { ElementPropertyChanged += value; }
remove { ElementPropertyChanged -= value; }
}
SizeRequest IVisualElementRenderer.GetDesiredSize(int widthConstraint, int heightConstraint)
{
Measure(widthConstraint, heightConstraint);
return new SizeRequest(new Size(MeasuredWidth, MeasuredHeight));
}
void IVisualElementRenderer.SetElement(VisualElement element)
{
FlyoutPage oldElement = Element;
FlyoutPage newElement = Element = element as FlyoutPage;
if (oldElement != null)
{
Device.Info.PropertyChanged -= DeviceInfoPropertyChanged;
((IFlyoutPageController)oldElement).BackButtonPressed -= OnBackButtonPressed;
oldElement.PropertyChanged -= HandlePropertyChanged;
oldElement.Appearing -= FlyoutPageAppearing;
oldElement.Disappearing -= FlyoutPageDisappearing;
RemoveDrawerListener(this);
if (_detailLayout != null)
{
RemoveView(_detailLayout);
}
if (_flyoutLayout != null)
{
RemoveView(_flyoutLayout);
}
}
if (newElement != null)
{
if (_detailLayout == null)
{
_detailLayout = new FlyoutPageContainer(newElement, false, Context)
{
LayoutParameters = new LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent)
};
_flyoutLayout = new FlyoutPageContainer(newElement, true, Context)
{
LayoutParameters = new LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent) { Gravity = (int)GravityFlags.Start }
};
if (_fragmentManager != null)
{
_detailLayout.SetFragmentManager(_fragmentManager);
_flyoutLayout.SetFragmentManager(_fragmentManager);
}
AddView(_detailLayout);
AddView(_flyoutLayout);
Device.Info.PropertyChanged += DeviceInfoPropertyChanged;
AddDrawerListener(this);
}
UpdateBackgroundColor(newElement);
UpdateBackgroundImage(newElement);
UpdateFlyout();
UpdateDetail();
UpdateFlowDirection();
((IFlyoutPageController)newElement).BackButtonPressed += OnBackButtonPressed;
newElement.PropertyChanged += HandlePropertyChanged;
newElement.Appearing += FlyoutPageAppearing;
newElement.Disappearing += FlyoutPageDisappearing;
SetGestureState();
Presented = newElement.IsPresented;
newElement.SendViewInitialized(this);
}
OnElementChanged(oldElement, newElement);
// Make sure to initialize this AFTER event is fired
if (_tracker == null)
_tracker = new VisualElementTracker(this);
if (element != null && !string.IsNullOrEmpty(element.AutomationId))
SetAutomationId(element.AutomationId);
SetContentDescription();
}
void IVisualElementRenderer.SetLabelFor(int? id) => LabelFor = id ?? LabelFor;
VisualElementTracker IVisualElementRenderer.Tracker => _tracker;
void IVisualElementRenderer.UpdateLayout()
{
_tracker?.UpdateLayout();
}
ViewGroup IVisualElementRenderer.ViewGroup => this;
AView IVisualElementRenderer.View => this;
bool ILifeCycleState.MarkedForDispose { get; set; } = false;
void SetupAutomationDefaults()
{
if (!_defaultAutomationSet)
{
_defaultAutomationSet = true;
AutomationPropertiesProvider.SetupDefaults(this, ref _defaultContentDescription);
}
}
protected virtual void SetAutomationId(string id)
{
SetupAutomationDefaults();
AutomationPropertiesProvider.SetAutomationId(this, Element, id);
}
protected virtual void SetContentDescription()
{
SetupAutomationDefaults();
AutomationPropertiesProvider.SetContentDescription(this, Element, _defaultContentDescription, null);
}
protected override void Dispose(bool disposing)
{
if (_disposed)
return;
_disposed = true;
if (disposing)
{
Device.Info.PropertyChanged -= DeviceInfoPropertyChanged;
if (Element != null)
{
FlyoutPageController.BackButtonPressed -= OnBackButtonPressed;
Element.PropertyChanged -= HandlePropertyChanged;
Element.Appearing -= FlyoutPageAppearing;
Element.Disappearing -= FlyoutPageDisappearing;
}
if (_flyoutLayout?.ChildView != null)
_flyoutLayout.ChildView.PropertyChanged -= HandleFlyoutPropertyChanged;
if (!this.IsDisposed())
RemoveDrawerListener(this);
if (_tracker != null)
{
_tracker.Dispose();
_tracker = null;
}
if (_detailLayout != null)
{
RemoveView(_detailLayout);
_detailLayout.Dispose();
_detailLayout = null;
}
if (_flyoutLayout != null)
{
RemoveView(_flyoutLayout);
_flyoutLayout.Dispose();
_flyoutLayout = null;
}
if (Element != null)
{
Element.ClearValue(Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat.Platform.RendererProperty);
Element = null;
}
}
base.Dispose(disposing);
}
protected override void OnAttachedToWindow()
{
base.OnAttachedToWindow();
PageController.SendAppearing();
}
protected override void OnDetachedFromWindow()
{
base.OnDetachedFromWindow();
PageController?.SendDisappearing();
}
protected virtual void OnElementChanged(VisualElement oldElement, VisualElement newElement)
{
ElementChanged?.Invoke(this, new VisualElementChangedEventArgs(oldElement, newElement));
}
protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
base.OnLayout(changed, l, t, r, b);
//hack to make the split layout handle touches the full width
if (FlyoutPageController.ShouldShowSplitMode && _flyoutLayout != null)
_flyoutLayout.Right = r;
}
async void DeviceInfoPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (nameof(Device.Info.CurrentOrientation) == e.PropertyName)
{
if (!FlyoutPageController.ShouldShowSplitMode && Presented)
{
FlyoutPageController.CanChangeIsPresented = true;
//hack : when the orientation changes and we try to close the Flyout on Android
//sometimes Android picks the width of the screen previous to the rotation
//this leaves a little of the flyout visible, the hack is to delay for 100ms closing the drawer
await Task.Delay(100);
//Renderer may have been disposed during the delay
if (_disposed)
{
return;
}
CloseDrawer(_flyoutLayout);
}
UpdateSplitViewLayout();
}
}
event EventHandler<VisualElementChangedEventArgs> ElementChanged;
event EventHandler<PropertyChangedEventArgs> ElementPropertyChanged;
bool HasAncestorNavigationPage(Element element)
{
if (element.Parent == null)
return false;
else if (element.Parent is NavigationPage)
return true;
else
return HasAncestorNavigationPage(element.Parent);
}
void HandleFlyoutPropertyChanged(object sender, PropertyChangedEventArgs e)
{
}
void HandlePropertyChanged(object sender, PropertyChangedEventArgs e)
{
ElementPropertyChanged?.Invoke(this, e);
if (e.PropertyName == "Flyout")
UpdateFlyout();
else if (e.PropertyName == "Detail")
UpdateDetail();
else if (e.PropertyName == FlyoutPage.IsGestureEnabledProperty.PropertyName)
SetGestureState();
else if (e.PropertyName == FlyoutPage.IsPresentedProperty.PropertyName)
{
_isPresentingFromCore = true;
Presented = Element.IsPresented;
_isPresentingFromCore = false;
}
else if (e.PropertyName == Page.BackgroundImageSourceProperty.PropertyName)
UpdateBackgroundImage(Element);
else if (e.PropertyName == VisualElement.BackgroundColorProperty.PropertyName)
UpdateBackgroundColor(Element);
else if (e.PropertyName == VisualElement.FlowDirectionProperty.PropertyName)
UpdateFlowDirection();
}
void FlyoutPageAppearing(object sender, EventArgs e)
{
FlyoutPagePageController?.SendAppearing();
DetailPageController?.SendAppearing();
}
void FlyoutPageDisappearing(object sender, EventArgs e)
{
FlyoutPagePageController?.SendDisappearing();
DetailPageController?.SendDisappearing();
}
void OnBackButtonPressed(object sender, BackButtonPressedEventArgs backButtonPressedEventArgs)
{
if (!IsDrawerOpen((int)GravityFlags.Start) || _currentLockMode == LockModeLockedOpen)
return;
CloseDrawer((int)GravityFlags.Start);
backButtonPressedEventArgs.Handled = true;
}
void SetGestureState()
{
SetDrawerLockMode(Element.IsGestureEnabled ? LockModeUnlocked : LockModeLockedClosed);
}
void SetLockMode(int lockMode)
{
if (_currentLockMode != lockMode)
{
SetDrawerLockMode(lockMode);
_currentLockMode = lockMode;
}
}
void UpdateBackgroundColor(Page view)
{
Color backgroundColor = view.BackgroundColor;
if (backgroundColor.IsDefault)
SetBackgroundColor(backgroundColor.ToAndroid());
}
void UpdateBackgroundImage(Page view)
{
_ = this.ApplyDrawableAsync(view, Page.BackgroundImageSourceProperty, Context, drawable =>
{
if (drawable != null)
this.SetBackground(drawable);
});
}
void UpdateDetail()
{
if (_detailLayout.ChildView == null)
Update();
else
// Queue up disposal of the previous renderers after the current layout updates have finished
new Handler(Looper.MainLooper).Post(Update);
void Update()
{
if (_detailLayout == null || _detailLayout.IsDisposed())
return;
Context.HideKeyboard(this);
_detailLayout.ChildView = Element.Detail;
}
}
void UpdateFlowDirection()
{
this.UpdateFlowDirection(Element);
_detailLayout.UpdateFlowDirection();
}
void UpdateIsPresented()
{
if (_isPresentingFromCore)
return;
if (Presented != Element.IsPresented)
((IElementController)Element).SetValueFromRenderer(FlyoutPage.IsPresentedProperty, Presented);
}
void UpdateFlyout()
{
if (_flyoutLayout.ChildView == null)
Update();
else
// Queue up disposal of the previous renderers after the current layout updates have finished
new Handler(Looper.MainLooper).Post(Update);
void Update()
{
if (_flyoutLayout == null || _flyoutLayout.IsDisposed())
return;
if (_flyoutLayout.ChildView != null)
_flyoutLayout.ChildView.PropertyChanged -= HandleFlyoutPropertyChanged;
_flyoutLayout.ChildView = Element.Flyout;
if (_flyoutLayout.ChildView != null)
_flyoutLayout.ChildView.PropertyChanged += HandleFlyoutPropertyChanged;
}
}
void UpdateSplitViewLayout()
{
if (Device.Idiom == TargetIdiom.Tablet)
{
bool isShowingSplit = FlyoutPageController.ShouldShowSplitMode || (FlyoutPageController.ShouldShowSplitMode && Element.FlyoutLayoutBehavior != FlyoutLayoutBehavior.Default && Element.IsPresented);
SetLockMode(isShowingSplit ? LockModeLockedOpen : LockModeUnlocked);
unchecked
{
SetScrimColor(isShowingSplit ? Color.Transparent.ToAndroid() : (int)DefaultScrimColor);
}
}
}
}
}
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{
public class MasterDetailPageRenderer : FlyoutPageRenderer
{
public MasterDetailPageRenderer(Context context) : base(context)
{
}
}
}

Просмотреть файл

@ -9,15 +9,15 @@ using Android.OS;
using Android.Runtime; using Android.Runtime;
using Android.Views; using Android.Views;
using AndroidX.AppCompat.App; using AndroidX.AppCompat.App;
using Xamarin.Forms.Internals; using Microsoft.Maui.Controls.Internals;
using Xamarin.Forms.Platform.Android.AppCompat; using Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific; using Microsoft.Maui.Controls.PlatformConfiguration.AndroidSpecific;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific.AppCompat; using Microsoft.Maui.Controls.PlatformConfiguration.AndroidSpecific.AppCompat;
using AColor = Android.Graphics.Color; using AColor = Android.Graphics.Color;
using ARelativeLayout = Android.Widget.RelativeLayout; using ARelativeLayout = Android.Widget.RelativeLayout;
using AToolbar = AndroidX.AppCompat.Widget.Toolbar; using AToolbar = AndroidX.AppCompat.Widget.Toolbar;
namespace Xamarin.Forms.Platform.Android namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{ {
[Flags] [Flags]
public enum ActivationFlags : long public enum ActivationFlags : long
@ -81,7 +81,7 @@ namespace Xamarin.Forms.Platform.Android
base.OnConfigurationChanged(newConfig); base.OnConfigurationChanged(newConfig);
ConfigurationChanged?.Invoke(this, new EventArgs()); ConfigurationChanged?.Invoke(this, new EventArgs());
Xamarin.Forms.Application.Current?.TriggerThemeChanged(new AppThemeChangedEventArgs(Xamarin.Forms.Application.Current.RequestedTheme)); Microsoft.Maui.Controls.Application.Current?.TriggerThemeChanged(new AppThemeChangedEventArgs(Microsoft.Maui.Controls.Application.Current.RequestedTheme));
} }
public override bool OnOptionsItemSelected(IMenuItem item) public override bool OnOptionsItemSelected(IMenuItem item)
@ -147,10 +147,10 @@ namespace Xamarin.Forms.Platform.Android
((IApplicationController)application).SetAppIndexingProvider(new AndroidAppIndexProvider(this)); ((IApplicationController)application).SetAppIndexingProvider(new AndroidAppIndexProvider(this));
Profile.FramePartition("SetCurrentApplication"); Profile.FramePartition("SetCurrentApplication");
Xamarin.Forms.Application.SetCurrentApplication(application); Microsoft.Maui.Controls.Application.SetCurrentApplication(application);
Profile.FramePartition("SetSoftInputMode"); Profile.FramePartition("SetSoftInputMode");
if (Xamarin.Forms.Application.Current.OnThisPlatform().GetWindowSoftInputModeAdjust() != WindowSoftInputModeAdjust.Unspecified) if (Microsoft.Maui.Controls.Application.Current.OnThisPlatform().GetWindowSoftInputModeAdjust() != WindowSoftInputModeAdjust.Unspecified)
SetSoftInputMode(); SetSoftInputMode();
Profile.FramePartition("CheckForAppLink"); Profile.FramePartition("CheckForAppLink");
@ -241,7 +241,7 @@ namespace Xamarin.Forms.Platform.Android
SetContentView(_layout); SetContentView(_layout);
Profile.FramePartition("OnStateChanged"); Profile.FramePartition("OnStateChanged");
Xamarin.Forms.Application.ClearCurrent(); Microsoft.Maui.Controls.Application.ClearCurrent();
_previousState = _currentState; _previousState = _currentState;
_currentState = AndroidApplicationLifecycleState.OnCreate; _currentState = AndroidApplicationLifecycleState.OnCreate;
@ -502,9 +502,9 @@ namespace Xamarin.Forms.Platform.Android
{ {
var adjust = SoftInput.AdjustPan; var adjust = SoftInput.AdjustPan;
if (Xamarin.Forms.Application.Current != null) if (Microsoft.Maui.Controls.Application.Current != null)
{ {
WindowSoftInputModeAdjust elementValue = Xamarin.Forms.Application.Current.OnThisPlatform().GetWindowSoftInputModeAdjust(); WindowSoftInputModeAdjust elementValue = Microsoft.Maui.Controls.Application.Current.OnThisPlatform().GetWindowSoftInputModeAdjust();
switch (elementValue) switch (elementValue)
{ {
case WindowSoftInputModeAdjust.Resize: case WindowSoftInputModeAdjust.Resize:

Просмотреть файл

@ -2,10 +2,10 @@ using System.Collections.Generic;
using Android.OS; using Android.OS;
using AndroidX.Fragment.App; using AndroidX.Fragment.App;
using Java.Lang; using Java.Lang;
using Xamarin.Forms.Internals; using Microsoft.Maui.Controls.Internals;
using FragmentTransit = Android.App.FragmentTransit; using FragmentTransit = Android.App.FragmentTransit;
namespace Xamarin.Forms.Platform.Android.AppCompat namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{ {
internal class FormsFragmentPagerAdapter<T> : FragmentPagerAdapter where T : Page internal class FormsFragmentPagerAdapter<T> : FragmentPagerAdapter where T : Page
{ {

Просмотреть файл

@ -5,7 +5,7 @@ using Android.Util;
using Android.Views; using Android.Views;
using AndroidX.ViewPager.Widget; using AndroidX.ViewPager.Widget;
namespace Xamarin.Forms.Platform.Android.AppCompat namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{ {
internal class FormsViewPager : ViewPager internal class FormsViewPager : ViewPager
{ {

Просмотреть файл

@ -4,10 +4,10 @@ using Android.OS;
using Android.Runtime; using Android.Runtime;
using Android.Views; using Android.Views;
using AndroidX.Fragment.App; using AndroidX.Fragment.App;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific.AppCompat; using Microsoft.Maui.Controls.PlatformConfiguration.AndroidSpecific.AppCompat;
using AView = Android.Views.View; using AView = Android.Views.View;
namespace Xamarin.Forms.Platform.Android.AppCompat namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{ {
internal class FragmentContainer : Fragment internal class FragmentContainer : Fragment
{ {

Просмотреть файл

@ -0,0 +1,14 @@
using Android.Content;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{
// This version of FrameRenderer is here for backward compatibility with anyone referencing
// FrameRenderer from this namespace
public class FrameRenderer : FastRenderers.FrameRenderer
{
public FrameRenderer(Context context) : base(context)
{
}
}
}

Просмотреть файл

@ -1,4 +1,4 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
@ -10,7 +10,7 @@ using Android.Runtime;
using Android.Views; using Android.Views;
using Android.Widget; using Android.Widget;
namespace Xamarin.Forms.Platform.Android namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{ {
internal interface ILifeCycleState internal interface ILifeCycleState
{ {

Просмотреть файл

@ -1,6 +1,6 @@
using AndroidX.Fragment.App; using AndroidX.Fragment.App;
namespace Xamarin.Forms.Platform.Android.AppCompat namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{ {
/// <summary> /// <summary>
/// Allows the platform to inject child fragment managers for renderers /// Allows the platform to inject child fragment managers for renderers

Просмотреть файл

@ -0,0 +1,345 @@
using System;
using System.ComponentModel;
using Android.Content;
using Android.Graphics;
using Android.Graphics.Drawables;
using Android.Views;
using AndroidX.AppCompat.Widget;
using Microsoft.Maui.Controls.Internals;
using Microsoft.Maui.Controls.Compatibility.Platform.Android.FastRenderers;
using Microsoft.Maui.Controls.PlatformConfiguration.AndroidSpecific;
using AColor = Android.Graphics.Color;
using AView = Android.Views.View;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public class ImageButtonRenderer :
AppCompatImageButton,
IVisualElementRenderer,
IBorderVisualElementRenderer,
IImageRendererController,
AView.IOnFocusChangeListener,
AView.IOnClickListener,
AView.IOnTouchListener,
ILayoutChanges,
IDisposedState
{
bool _hasLayoutOccurred;
bool _inputTransparent;
bool _disposed;
bool _skipInvalidate;
int? _defaultLabelFor;
VisualElementTracker _tracker;
VisualElementRenderer _visualElementRenderer;
BorderBackgroundManager _backgroundTracker;
IPlatformElementConfiguration<PlatformConfiguration.Android, ImageButton> _platformElementConfiguration;
ImageButton _imageButton;
public event EventHandler<VisualElementChangedEventArgs> ElementChanged;
public event EventHandler<PropertyChangedEventArgs> ElementPropertyChanged;
void IVisualElementRenderer.UpdateLayout() => _tracker?.UpdateLayout();
VisualElement IVisualElementRenderer.Element => Element;
AView IVisualElementRenderer.View => this;
ViewGroup IVisualElementRenderer.ViewGroup => null;
VisualElementTracker IVisualElementRenderer.Tracker => _tracker;
bool IDisposedState.IsDisposed => ((IImageRendererController)this).IsDisposed;
public ImageButton Element
{
get => _imageButton;
private set
{
_imageButton = value;
_platformElementConfiguration = null;
}
}
void IImageRendererController.SkipInvalidate() => _skipInvalidate = true;
bool IImageRendererController.IsDisposed => _disposed || !Control.IsAlive();
AppCompatImageButton Control => this;
public ImageButtonRenderer(Context context) : base(context)
{
// These set the defaults so visually it matches up with other platforms
SetPadding(0, 0, 0, 0);
SoundEffectsEnabled = false;
SetOnClickListener(this);
SetOnTouchListener(this);
OnFocusChangeListener = this;
// Setting the tag will break Glide
// Tag = this;
_backgroundTracker = new BorderBackgroundManager(this, false);
}
protected override void OnLayout(bool changed, int left, int top, int right, int bottom)
{
base.OnLayout(changed, left, top, right, bottom);
_hasLayoutOccurred = true;
}
protected override void Dispose(bool disposing)
{
if (_disposed)
return;
_disposed = true;
if (disposing)
{
if (Element != null)
{
Element.PropertyChanged -= OnElementPropertyChanged;
}
SetOnClickListener(null);
SetOnTouchListener(null);
OnFocusChangeListener = null;
ImageElementManager.Dispose(this);
_tracker?.Dispose();
_tracker = null;
_backgroundTracker?.Dispose();
_backgroundTracker = null;
if (Element != null)
{
if (AppCompat.Platform.GetRenderer(Element) == this)
{
Element.ClearValue(AppCompat.Platform.RendererProperty);
}
Element = null;
}
}
base.Dispose(disposing);
}
public override void Invalidate()
{
if (_skipInvalidate)
{
_skipInvalidate = false;
return;
}
base.Invalidate();
}
Size MinimumSize()
{
return new Size();
}
SizeRequest IVisualElementRenderer.GetDesiredSize(int widthConstraint, int heightConstraint)
{
if (_disposed)
{
return new SizeRequest();
}
Measure(widthConstraint, heightConstraint);
return new SizeRequest(new Size(MeasuredWidth, MeasuredHeight), MinimumSize());
}
void IVisualElementRenderer.SetElement(VisualElement element)
{
if (element == null)
{
throw new ArgumentNullException(nameof(element));
}
if (!(element is ImageButton image))
{
throw new ArgumentException("Element is not of type " + typeof(ImageButton), nameof(element));
}
ImageButton oldElement = Element;
Element = image;
Performance.Start(out string reference);
if (oldElement != null)
{
oldElement.PropertyChanged -= OnElementPropertyChanged;
}
element.PropertyChanged += OnElementPropertyChanged;
if (_tracker == null)
{
_tracker = new VisualElementTracker(this);
ImageElementManager.Init(this);
}
if (_visualElementRenderer == null)
{
_visualElementRenderer = new VisualElementRenderer(this);
}
Performance.Stop(reference);
this.EnsureId();
UpdateInputTransparent();
UpdatePadding();
OnElementChanged(new ElementChangedEventArgs<ImageButton>(oldElement, Element));
Element?.SendViewInitialized(Control);
}
protected virtual void OnElementChanged(ElementChangedEventArgs<ImageButton> e)
{
ElementChanged?.Invoke(this, new VisualElementChangedEventArgs(e.OldElement, e.NewElement));
}
public override void Draw(Canvas canvas)
{
if (Element == null)
return;
canvas.ClipShape(Context, Element);
var backgroundDrawable = _backgroundTracker?.BackgroundDrawable;
RectF drawableBounds = null;
if (Drawable != null)
{
if ((int)Forms.SdkInt >= 18 && backgroundDrawable != null)
{
var outlineBounds = backgroundDrawable.GetPaddingBounds(canvas.Width, canvas.Height);
var width = (float)canvas.Width;
var height = (float)canvas.Height;
var widthRatio = 1f;
var heightRatio = 1f;
if (Element.Aspect == Aspect.AspectFill && OnThisPlatform().GetIsShadowEnabled())
Internals.Log.Warning(nameof(ImageButtonRenderer), "AspectFill isn't fully supported when using shadows. Image may be clipped incorrectly to Border");
switch (Element.Aspect)
{
case Aspect.Fill:
break;
case Aspect.AspectFill:
case Aspect.AspectFit:
heightRatio = (float)Drawable.IntrinsicHeight / height;
widthRatio = (float)Drawable.IntrinsicWidth / width;
break;
}
drawableBounds = new RectF(outlineBounds.Left * widthRatio, outlineBounds.Top * heightRatio, outlineBounds.Right * widthRatio, outlineBounds.Bottom * heightRatio);
}
if (drawableBounds != null)
Drawable.SetBounds((int)drawableBounds.Left, (int)drawableBounds.Top, (int)drawableBounds.Right, (int)drawableBounds.Bottom);
}
if (_backgroundTracker?.BackgroundDrawable != null)
{
_backgroundTracker.BackgroundDrawable.DrawCircle(canvas, canvas.Width, canvas.Height, base.Draw);
_backgroundTracker.BackgroundDrawable.DrawOutline(canvas, canvas.Width, canvas.Height);
}
else
{
base.Draw(canvas);
}
}
void IVisualElementRenderer.SetLabelFor(int? id)
{
if (_defaultLabelFor == null)
_defaultLabelFor = LabelFor;
LabelFor = (int)(id ?? _defaultLabelFor);
}
public override bool OnTouchEvent(MotionEvent e)
{
if (!Enabled || (_inputTransparent && Enabled))
return false;
return base.OnTouchEvent(e);
}
void UpdatePadding()
{
SetPadding(
(int)(Context.ToPixels(Element.Padding.Left)),
(int)(Context.ToPixels(Element.Padding.Top)),
(int)(Context.ToPixels(Element.Padding.Right)),
(int)(Context.ToPixels(Element.Padding.Bottom))
);
}
void UpdateInputTransparent()
{
if (Element == null || _disposed)
{
return;
}
_inputTransparent = Element.InputTransparent;
}
protected virtual void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (this.IsDisposed())
{
return;
}
if (e.PropertyName == VisualElement.InputTransparentProperty.PropertyName)
UpdateInputTransparent();
else if (e.PropertyName == ImageButton.PaddingProperty.PropertyName)
UpdatePadding();
ElementPropertyChanged?.Invoke(this, e);
}
// general state related
void IOnFocusChangeListener.OnFocusChange(AView v, bool hasFocus)
{
((IElementController)Element).SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, hasFocus);
}
// general state related
// Button related
void IOnClickListener.OnClick(AView v) =>
ButtonElementManager.OnClick(Element, Element, v);
bool IOnTouchListener.OnTouch(AView v, MotionEvent e) =>
ButtonElementManager.OnTouch(Element, Element, v, e);
// Button related
float IBorderVisualElementRenderer.ShadowRadius => Context.ToPixels(OnThisPlatform().GetShadowRadius());
float IBorderVisualElementRenderer.ShadowDx => Context.ToPixels(OnThisPlatform().GetShadowOffset().Width);
float IBorderVisualElementRenderer.ShadowDy => Context.ToPixels(OnThisPlatform().GetShadowOffset().Height);
AColor IBorderVisualElementRenderer.ShadowColor => OnThisPlatform().GetShadowColor().ToAndroid();
bool IBorderVisualElementRenderer.IsShadowEnabled() => OnThisPlatform().GetIsShadowEnabled();
bool IBorderVisualElementRenderer.UseDefaultPadding() => false;
bool IBorderVisualElementRenderer.UseDefaultShadow() => false;
VisualElement IBorderVisualElementRenderer.Element => Element;
AView IBorderVisualElementRenderer.View => this;
bool ILayoutChanges.HasLayoutOccurred => _hasLayoutOccurred;
IPlatformElementConfiguration<PlatformConfiguration.Android, ImageButton> OnThisPlatform()
{
if (_platformElementConfiguration == null)
_platformElementConfiguration = Element.OnThisPlatform();
return _platformElementConfiguration;
}
void IImageRendererController.SetFormsAnimationDrawable(IFormsAnimationDrawable value)
{
}
}
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,115 @@
using System;
using Android.Content;
using Android.OS;
using Android.Views;
using Fragment = AndroidX.Fragment.App.Fragment;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public static class PageExtensions
{
class EmbeddedFragment : Fragment
{
readonly ViewGroup _content;
readonly AppCompat.Platform _platform;
bool _disposed;
// ReSharper disable once UnusedMember.Local (Android uses this on configuration change
public EmbeddedFragment()
{
}
public EmbeddedFragment(ViewGroup content, AppCompat.Platform platform)
{
_content = content;
_platform = platform;
}
public override global::Android.Views.View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
return _content;
}
protected override void Dispose(bool disposing)
{
if (_disposed)
{
return;
}
_disposed = true;
if (disposing)
{
(_platform as IDisposable)?.Dispose();
}
base.Dispose(disposing);
}
}
#pragma warning restore 618
public static Fragment CreateSupportFragment(this ContentPage view, Context context)
{
if (!Forms.IsInitialized)
throw new InvalidOperationException("call Forms.Init() before this");
if (!(view.RealParent is Application))
{
Application app = new DefaultApplication();
app.MainPage = view;
}
var platform = new AppCompat.Platform(context, true);
platform.SetPage(view);
var vg = platform.GetViewGroup();
return new EmbeddedSupportFragment(vg, platform);
}
class DefaultApplication : Application
{
}
class EmbeddedSupportFragment : Fragment
{
readonly ViewGroup _content;
readonly AppCompat.Platform _platform;
bool _disposed;
// ReSharper disable once UnusedMember.Local (Android uses this on configuration change
public EmbeddedSupportFragment()
{
}
public EmbeddedSupportFragment(ViewGroup content, AppCompat.Platform platform)
{
_content = content;
_platform = platform;
}
public override global::Android.Views.View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
return _content;
}
protected override void Dispose(bool disposing)
{
if (_disposed)
{
return;
}
_disposed = true;
if (disposing)
{
(_platform as IDisposable)?.Dispose();
}
base.Dispose(disposing);
}
}
}
}

Просмотреть файл

@ -0,0 +1,227 @@
using System;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Linq;
using Android.App;
using Android.Content;
using Android.Text;
using Android.Text.Style;
using Android.Util;
using Android.Widget;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{
public abstract class PickerRendererBase<TControl> : ViewRenderer<Picker, TControl>, IPickerRenderer
where TControl : global::Android.Views.View
{
AlertDialog _dialog;
bool _disposed;
EntryAccessibilityDelegate _pickerAccessibilityDelegate;
public PickerRendererBase(Context context) : base(context)
{
AutoPackage = false;
}
protected abstract EditText EditText { get; }
protected override void Dispose(bool disposing)
{
if (disposing && !_disposed)
{
_disposed = true;
((INotifyCollectionChanged)Element.Items).CollectionChanged -= RowsCollectionChanged;
_pickerAccessibilityDelegate?.Dispose();
_pickerAccessibilityDelegate = null;
}
base.Dispose(disposing);
}
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
if (e.OldElement != null)
((INotifyCollectionChanged)e.OldElement.Items).CollectionChanged -= RowsCollectionChanged;
if (e.NewElement != null)
{
((INotifyCollectionChanged)e.NewElement.Items).CollectionChanged += RowsCollectionChanged;
if (Control == null)
{
var textField = CreateNativeControl();
SetNativeControl(textField);
ControlUsedForAutomation.SetAccessibilityDelegate(_pickerAccessibilityDelegate = new EntryAccessibilityDelegate(Element));
}
UpdateFont();
UpdatePicker();
UpdateTextColor();
UpdateCharacterSpacing();
UpdateGravity();
}
base.OnElementChanged(e);
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (this.IsDisposed())
{
return;
}
base.OnElementPropertyChanged(sender, e);
if (e.PropertyName == Picker.TitleProperty.PropertyName || e.PropertyName == Picker.TitleColorProperty.PropertyName)
UpdatePicker();
else if (e.PropertyName == Picker.SelectedIndexProperty.PropertyName)
UpdatePicker();
else if (e.PropertyName == Picker.CharacterSpacingProperty.PropertyName)
UpdateCharacterSpacing();
else if (e.PropertyName == Picker.TextColorProperty.PropertyName)
UpdateTextColor();
else if (e.PropertyName == Picker.FontAttributesProperty.PropertyName || e.PropertyName == Picker.FontFamilyProperty.PropertyName || e.PropertyName == Picker.FontSizeProperty.PropertyName)
UpdateFont();
else if (e.PropertyName == Picker.HorizontalTextAlignmentProperty.PropertyName || e.PropertyName == Picker.VerticalTextAlignmentProperty.PropertyName)
UpdateGravity();
}
protected override void OnFocusChangeRequested(object sender, VisualElement.FocusRequestArgs e)
{
base.OnFocusChangeRequested(sender, e);
if (e.Focus)
{
if (Clickable)
CallOnClick();
else
((IPickerRenderer)this)?.OnClick();
}
else if (_dialog != null)
{
_dialog.Hide();
((IElementController)Element).SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, false);
Control.ClearFocus();
_dialog = null;
}
}
void IPickerRenderer.OnClick()
{
Picker model = Element;
if (_dialog == null)
{
using (var builder = new AlertDialog.Builder(Context))
{
if (!Element.IsSet(Picker.TitleColorProperty))
{
builder.SetTitle(model.Title ?? "");
}
else
{
var title = new SpannableString(model.Title ?? "");
title.SetSpan(new ForegroundColorSpan(model.TitleColor.ToAndroid()), 0, title.Length(), SpanTypes.ExclusiveExclusive);
builder.SetTitle(title);
}
string[] items = model.Items.ToArray();
builder.SetItems(items, (s, e) => ((IElementController)model).SetValueFromRenderer(Picker.SelectedIndexProperty, e.Which));
builder.SetNegativeButton(global::Android.Resource.String.Cancel, (o, args) => { });
((IElementController)Element).SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, true);
_dialog = builder.Create();
}
_dialog.SetCanceledOnTouchOutside(true);
_dialog.DismissEvent += (sender, args) =>
{
(Element as IElementController)?.SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, false);
_dialog?.Dispose();
_dialog = null;
};
_dialog.Show();
}
}
void RowsCollectionChanged(object sender, EventArgs e)
{
UpdatePicker();
}
void UpdateFont()
{
EditText.Typeface = Element.ToTypeface();
EditText.SetTextSize(ComplexUnitType.Sp, (float)Element.FontSize);
}
protected void UpdateCharacterSpacing()
{
if (Forms.IsLollipopOrNewer)
{
EditText.LetterSpacing = Element.CharacterSpacing.ToEm();
}
}
void UpdatePicker()
{
UpdatePlaceHolderText();
UpdateTitleColor();
if (Element.SelectedIndex == -1 || Element.Items == null || Element.SelectedIndex >= Element.Items.Count)
EditText.Text = null;
else
EditText.Text = Element.Items[Element.SelectedIndex];
_pickerAccessibilityDelegate.ValueText = EditText.Text;
}
abstract protected void UpdateTextColor();
abstract protected void UpdateTitleColor();
abstract protected void UpdatePlaceHolderText();
abstract protected void UpdateGravity();
}
public class PickerRenderer : PickerRendererBase<EditText>
{
TextColorSwitcher _textColorSwitcher;
TextColorSwitcher _hintColorSwitcher;
public PickerRenderer(Context context) : base(context)
{
}
protected override EditText CreateNativeControl()
{
return new PickerEditText(Context);
}
protected override EditText EditText => Control;
protected override void UpdateTitleColor()
{
_hintColorSwitcher = _hintColorSwitcher ?? new TextColorSwitcher(EditText.HintTextColors, Element.UseLegacyColorManagement());
_hintColorSwitcher.UpdateTextColor(EditText, Element.TitleColor, EditText.SetHintTextColor);
}
protected override void UpdateTextColor()
{
_textColorSwitcher = _textColorSwitcher ?? new TextColorSwitcher(EditText.TextColors, Element.UseLegacyColorManagement());
_textColorSwitcher.UpdateTextColor(EditText, Element.TextColor);
}
protected override void UpdatePlaceHolderText()
{
EditText.Hint = Element.Title;
}
protected override void UpdateGravity()
{
EditText.Gravity = Element.HorizontalTextAlignment.ToHorizontalGravityFlags() | Element.VerticalTextAlignment.ToVerticalGravityFlags();
}
}
}

Просмотреть файл

@ -0,0 +1,853 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Threading.Tasks;
using Android.Content;
using Android.OS;
using Android.Views;
using Android.Views.Animations;
using Microsoft.Maui.Controls.Internals;
using AView = Android.Views.View;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{
internal class Platform : BindableObject, IPlatformLayout, INavigation, IDisposable
{
readonly Context _context;
readonly PlatformRenderer _renderer;
bool _disposed;
bool _navAnimationInProgress;
NavigationModel _navModel = new NavigationModel();
NavigationModel _previousNavModel = null;
readonly bool _embedded;
internal static string PackageName { get; private set; }
internal static string GetPackageName() => PackageName;
internal const string CloseContextActionsSignalName = "Xamarin.CloseContextActions";
internal static readonly BindableProperty RendererProperty = BindableProperty.CreateAttached("Renderer", typeof(IVisualElementRenderer), typeof(Platform), default(IVisualElementRenderer),
propertyChanged: (bindable, oldvalue, newvalue) =>
{
var view = bindable as VisualElement;
if (view != null)
view.IsPlatformEnabled = newvalue != null;
});
public Platform(Context context) : this(context, false)
{
}
public Platform(Context context, bool embedded)
{
_embedded = embedded;
_context = context;
PackageName = context?.PackageName;
_renderer = new PlatformRenderer(context, this);
var activity = _context.GetActivity();
if (embedded && activity != null)
{
// Set up handling of DisplayAlert/DisplayActionSheet/UpdateProgressBarVisibility
if (_context == null)
{
// Can't show dialogs if it's not an activity
return;
}
PopupManager.Subscribe(_context.GetActivity());
return;
}
FormsAppCompatActivity.BackPressed += HandleBackPressed;
}
internal bool NavAnimationInProgress
{
get { return _navAnimationInProgress; }
set
{
if (_navAnimationInProgress == value)
return;
_navAnimationInProgress = value;
if (value)
MessagingCenter.Send(this, CloseContextActionsSignalName);
}
}
Page Page { get; set; }
IPageController CurrentPageController => _navModel.CurrentPage;
public void Dispose()
{
if (_disposed)
return;
_disposed = true;
FormsAppCompatActivity.BackPressed -= HandleBackPressed;
SetPage(null);
var activity = _context?.GetActivity();
if (_embedded && activity != null)
{
PopupManager.Unsubscribe(activity);
}
}
void INavigation.InsertPageBefore(Page page, Page before)
{
throw new InvalidOperationException("InsertPageBefore is not supported globally on Android, please use a NavigationPage.");
}
IReadOnlyList<Page> INavigation.ModalStack => _navModel.Modals.ToList();
IReadOnlyList<Page> INavigation.NavigationStack => new List<Page>();
Task<Page> INavigation.PopAsync()
{
return ((INavigation)this).PopAsync(true);
}
Task<Page> INavigation.PopAsync(bool animated)
{
throw new InvalidOperationException("PopAsync is not supported globally on Android, please use a NavigationPage.");
}
Task<Page> INavigation.PopModalAsync()
{
return ((INavigation)this).PopModalAsync(true);
}
Task<Page> INavigation.PopModalAsync(bool animated)
{
Page modal = _navModel.PopModal();
((IPageController)modal).SendDisappearing();
var source = new TaskCompletionSource<Page>();
IVisualElementRenderer modalRenderer = GetRenderer(modal);
if (modalRenderer != null)
{
var modalContainer = modalRenderer.View.Parent as ModalContainer;
if (animated)
{
modalContainer.Animate().TranslationY(_renderer.Height).SetInterpolator(new AccelerateInterpolator(1)).SetDuration(300).SetListener(new GenericAnimatorListener
{
OnEnd = a =>
{
modalContainer.RemoveFromParent();
modalContainer.Dispose();
source.TrySetResult(modal);
CurrentPageController?.SendAppearing();
modalContainer = null;
}
});
}
else
{
modalContainer.RemoveFromParent();
modalContainer.Dispose();
source.TrySetResult(modal);
CurrentPageController?.SendAppearing();
}
}
UpdateAccessibilityImportance(CurrentPageController as Page, ImportantForAccessibility.Auto, true);
return source.Task;
}
Task INavigation.PopToRootAsync()
{
return ((INavigation)this).PopToRootAsync(true);
}
Task INavigation.PopToRootAsync(bool animated)
{
throw new InvalidOperationException("PopToRootAsync is not supported globally on Android, please use a NavigationPage.");
}
Task INavigation.PushAsync(Page root)
{
return ((INavigation)this).PushAsync(root, true);
}
Task INavigation.PushAsync(Page root, bool animated)
{
throw new InvalidOperationException("PushAsync is not supported globally on Android, please use a NavigationPage.");
}
Task INavigation.PushModalAsync(Page modal)
{
return ((INavigation)this).PushModalAsync(modal, true);
}
async Task INavigation.PushModalAsync(Page modal, bool animated)
{
CurrentPageController?.SendDisappearing();
UpdateAccessibilityImportance(CurrentPageController as Page, ImportantForAccessibility.NoHideDescendants, false);
_navModel.PushModal(modal);
Task presentModal = PresentModal(modal, animated);
await presentModal;
UpdateAccessibilityImportance(modal, ImportantForAccessibility.Auto, true);
// Verify that the modal is still on the stack
if (_navModel.CurrentPage == modal)
((IPageController)modal).SendAppearing();
}
void INavigation.RemovePage(Page page)
{
throw new InvalidOperationException("RemovePage is not supported globally on Android, please use a NavigationPage.");
}
public static SizeRequest GetNativeSize(VisualElement view, double widthConstraint, double heightConstraint)
{
Performance.Start(out string reference);
IVisualElementRenderer visualElementRenderer = GetRenderer(view);
if (visualElementRenderer == null || visualElementRenderer.View.IsDisposed())
{
return new SizeRequest(Size.Zero, Size.Zero);
}
var context = visualElementRenderer.View.Context;
// negative numbers have special meanings to android they don't to us
widthConstraint = widthConstraint <= -1 ? double.PositiveInfinity : context.ToPixels(widthConstraint);
heightConstraint = heightConstraint <= -1 ? double.PositiveInfinity : context.ToPixels(heightConstraint);
bool widthConstrained = !double.IsPositiveInfinity(widthConstraint);
bool heightConstrained = !double.IsPositiveInfinity(heightConstraint);
int widthMeasureSpec = widthConstrained
? MeasureSpecFactory.MakeMeasureSpec((int)widthConstraint, MeasureSpecMode.AtMost)
: MeasureSpecFactory.MakeMeasureSpec(0, MeasureSpecMode.Unspecified);
int heightMeasureSpec = heightConstrained
? MeasureSpecFactory.MakeMeasureSpec((int)heightConstraint, MeasureSpecMode.AtMost)
: MeasureSpecFactory.MakeMeasureSpec(0, MeasureSpecMode.Unspecified);
SizeRequest rawResult = visualElementRenderer.GetDesiredSize(widthMeasureSpec, heightMeasureSpec);
if (rawResult.Minimum == Size.Zero)
rawResult.Minimum = rawResult.Request;
var result = new SizeRequest(new Size(context.FromPixels(rawResult.Request.Width), context.FromPixels(rawResult.Request.Height)),
new Size(context.FromPixels(rawResult.Minimum.Width), context.FromPixels(rawResult.Minimum.Height)));
if ((widthConstrained && result.Request.Width < widthConstraint)
|| (heightConstrained && result.Request.Height < heightConstraint))
{
// Do a final exact measurement in case the native control needs to fill the container
(visualElementRenderer as IViewRenderer)?.MeasureExactly();
}
Performance.Stop(reference);
return result;
}
public static void ClearRenderer(AView renderedView)
{
var element = (renderedView as IVisualElementRenderer)?.Element;
var view = element as View;
if (view != null)
{
var renderer = GetRenderer(view);
if (renderer == renderedView)
element.ClearValue(RendererProperty);
renderer?.Dispose();
renderer = null;
}
var layout = view as IVisualElementRenderer;
layout?.Dispose();
layout = null;
}
internal static IVisualElementRenderer CreateRenderer(VisualElement element, Context context)
{
IVisualElementRenderer renderer = null;
// temporary hack to fix the following issues
// https://github.com/xamarin/Microsoft.Maui.Controls.Compatibility/issues/13261
// https://github.com/xamarin/Microsoft.Maui.Controls.Compatibility/issues/12484
if (element is RadioButton tv && tv.ResolveControlTemplate() != null)
{
renderer = new DefaultRenderer(context);
}
// This code is duplicated across all platforms currently
// So if any changes are made here please make sure to apply them to other platform.cs files
if (renderer == null)
{
IViewHandler handler = null;
//TODO: Handle this with AppBuilderHost
//try
//{
// handler = Xamarin.Platform.Registrar.Handlers.GetHandler(element.GetType());
//}
//catch
//{
// // TODO define better catch response or define if this is needed?
//}
if (handler == null)
{
renderer = Registrar.Registered.GetHandlerForObject<IVisualElementRenderer>(element, context)
?? new DefaultRenderer(context);
}
// This means the only thing registered is the RendererToHandlerShim
// Which is only used when you are running a .NET MAUI app
// This indicates that the user hasn't registered a specific handler for this given type
else if (handler is RendererToHandlerShim shim)
{
renderer = shim.VisualElementRenderer;
if (renderer == null)
{
renderer = Registrar.Registered.GetHandlerForObject<IVisualElementRenderer>(element, context)
?? new DefaultRenderer(context);
}
}
else if (handler is IVisualElementRenderer ver)
renderer = ver;
else if (handler is IAndroidViewHandler vh)
{
vh.SetContext(context);
renderer = new HandlerToRendererShim(vh);
}
}
renderer.SetElement(element);
return renderer;
}
internal static IVisualElementRenderer CreateRenderer(VisualElement element, AndroidX.Fragment.App.FragmentManager fragmentManager, Context context)
{
IVisualElementRenderer renderer = Registrar.Registered.GetHandlerForObject<IVisualElementRenderer>(element, context) ?? new DefaultRenderer(context);
var managesFragments = renderer as IManageFragments;
managesFragments?.SetFragmentManager(fragmentManager);
renderer.SetElement(element);
return renderer;
}
public static IVisualElementRenderer CreateRendererWithContext(VisualElement element, Context context)
{
// This is an interim method to allow public access to CreateRenderer(element, context), which we
// can't make public yet because it will break the previewer
return CreateRenderer(element, context);
}
public static IVisualElementRenderer GetRenderer(VisualElement bindable)
{
return (IVisualElementRenderer)bindable?.GetValue(RendererProperty);
}
public static void SetRenderer(VisualElement bindable, IVisualElementRenderer value)
{
bindable.SetValue(RendererProperty, value);
}
internal ViewGroup GetViewGroup()
{
return _renderer;
}
void IPlatformLayout.OnLayout(bool changed, int l, int t, int r, int b)
{
if (Page == null)
return;
if (changed)
{
LayoutRootPage(Page, r - l, b - t);
}
GetRenderer(Page)?.UpdateLayout();
for (var i = 0; i < _renderer.ChildCount; i++)
{
AView child = _renderer.GetChildAt(i);
if (child is ModalContainer)
{
child.Measure(MeasureSpecFactory.MakeMeasureSpec(r - l, MeasureSpecMode.Exactly), MeasureSpecFactory.MakeMeasureSpec(t - b, MeasureSpecMode.Exactly));
child.Layout(l, t, r, b);
}
}
}
protected override void OnBindingContextChanged()
{
SetInheritedBindingContext(Page, BindingContext);
base.OnBindingContextChanged();
}
internal void SettingNewPage()
{
if (Page != null)
{
_previousNavModel = _navModel;
_navModel = new NavigationModel();
}
}
internal void SetPage(Page newRoot)
{
if (Page == newRoot)
{
return;
}
if (Page != null)
{
var navModel = (_previousNavModel ?? _navModel);
foreach (var rootPage in navModel.Roots)
{
if (GetRenderer(rootPage) is ILifeCycleState nr)
nr.MarkedForDispose = true;
}
var viewsToRemove = new List<AView>();
var renderersToDispose = new List<IVisualElementRenderer>();
for (int i = 0; i < _renderer.ChildCount; i++)
viewsToRemove.Add(_renderer.GetChildAt(i));
foreach (var root in navModel.Roots)
renderersToDispose.Add(GetRenderer(root));
SetPageInternal(newRoot);
Cleanup(viewsToRemove, renderersToDispose);
}
else
{
SetPageInternal(newRoot);
}
}
void UpdateAccessibilityImportance(Page page, ImportantForAccessibility importantForAccessibility, bool forceFocus)
{
var pageRenderer = GetRenderer(page);
if (pageRenderer?.View == null)
return;
pageRenderer.View.ImportantForAccessibility = importantForAccessibility;
if (forceFocus)
pageRenderer.View.SendAccessibilityEvent(global::Android.Views.Accessibility.EventTypes.ViewFocused);
}
void SetPageInternal(Page newRoot)
{
var layout = false;
if (Page != null)
{
// if _previousNavModel has been set than _navModel has already been reinitialized
if (_previousNavModel != null)
{
_previousNavModel = null;
if (_navModel == null)
_navModel = new NavigationModel();
}
else
_navModel = new NavigationModel();
layout = true;
}
if (newRoot == null)
{
Page = null;
return;
}
_navModel.Push(newRoot, null);
Page = newRoot;
AddChild(Page, layout);
Application.Current.NavigationProxy.Inner = this;
}
void Cleanup(List<AView> viewsToRemove, List<IVisualElementRenderer> renderersToDispose)
{
// If trigger by dispose, cleanup now, otherwise queue it for later
if (_disposed)
{
DoCleanup();
}
else
{
new Handler(Looper.MainLooper).Post(DoCleanup);
}
void DoCleanup()
{
for (int i = 0; i < viewsToRemove.Count; i++)
{
AView view = viewsToRemove[i];
_renderer?.RemoveView(view);
}
for (int i = 0; i < renderersToDispose.Count; i++)
{
IVisualElementRenderer rootRenderer = renderersToDispose[i];
rootRenderer?.Element.ClearValue(RendererProperty);
rootRenderer?.Dispose();
}
}
}
void AddChild(Page page, bool layout = false)
{
if (page == null)
return;
if (GetRenderer(page) != null)
return;
IVisualElementRenderer renderView = CreateRenderer(page, _context);
SetRenderer(page, renderView);
if (layout)
LayoutRootPage(page, _renderer.Width, _renderer.Height);
_renderer.AddView(renderView.View);
}
bool HandleBackPressed(object sender, EventArgs e)
{
if (NavAnimationInProgress)
return true;
Page root = _navModel.Roots.LastOrDefault();
bool handled = root?.SendBackButtonPressed() ?? false;
return handled;
}
void LayoutRootPage(Page page, int width, int height)
{
page.Layout(new Rectangle(0, 0, _context.FromPixels(width), _context.FromPixels(height)));
}
Task PresentModal(Page modal, bool animated)
{
var modalContainer = new ModalContainer(_context, modal);
_renderer.AddView(modalContainer);
var source = new TaskCompletionSource<bool>();
NavAnimationInProgress = true;
if (animated)
{
modalContainer.TranslationY = _renderer.Height;
modalContainer.Animate().TranslationY(0).SetInterpolator(new DecelerateInterpolator(1)).SetDuration(300).SetListener(new GenericAnimatorListener
{
OnEnd = a =>
{
source.TrySetResult(false);
modalContainer = null;
},
OnCancel = a =>
{
source.TrySetResult(true);
modalContainer = null;
}
});
}
else
{
source.TrySetResult(true);
}
return source.Task.ContinueWith(task => NavAnimationInProgress = false);
}
sealed class ModalContainer : ViewGroup
{
AView _backgroundView;
bool _disposed;
Page _modal;
IVisualElementRenderer _renderer;
public ModalContainer(Context context, Page modal) : base(context)
{
_modal = modal;
_backgroundView = new AView(context);
UpdateBackgroundColor();
AddView(_backgroundView);
_renderer = CreateRenderer(modal, context);
SetRenderer(modal, _renderer);
AddView(_renderer.View);
Id = Platform.GenerateViewId();
_modal.PropertyChanged += OnModalPagePropertyChanged;
}
protected override void Dispose(bool disposing)
{
if (_disposed)
return;
if (disposing)
{
RemoveAllViews();
if (_renderer != null)
{
_renderer.Dispose();
_renderer = null;
_modal.ClearValue(RendererProperty);
_modal.PropertyChanged -= OnModalPagePropertyChanged;
_modal = null;
}
if (_backgroundView != null)
{
_backgroundView.Dispose();
_backgroundView = null;
}
}
_disposed = true;
base.Dispose(disposing);
}
protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
if (changed)
{
_modal.Layout(new Rectangle(0, 0, Context.FromPixels(r - l), Context.FromPixels(b - t)));
_backgroundView.Layout(0, 0, r - l, b - t);
}
_renderer.UpdateLayout();
}
void OnModalPagePropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == Page.BackgroundColorProperty.PropertyName)
UpdateBackgroundColor();
}
void UpdateBackgroundColor()
{
Color modalBkgndColor = _modal.BackgroundColor;
if (modalBkgndColor.IsDefault)
_backgroundView.SetWindowBackground();
else
_backgroundView.SetBackgroundColor(modalBkgndColor.ToAndroid());
}
}
internal static int GenerateViewId()
{
// getting unique Id's is an art, and I consider myself the Jackson Pollock of the field
if ((int)Forms.SdkInt >= 17)
return global::Android.Views.View.GenerateViewId();
// Numbers higher than this range reserved for xml
// If we roll over, it can be exceptionally problematic for the user if they are still retaining things, android's internal implementation is
// basically identical to this except they do a lot of locking we don't have to because we know we only do this
// from the UI thread
if (s_id >= 0x00ffffff)
s_id = 0x00000400;
return s_id++;
}
static int s_id = 0x00000400;
#region Statics
public static implicit operator ViewGroup(Platform canvas)
{
return canvas._renderer;
}
#endregion
#region Previewer Stuff
internal static readonly BindableProperty PageContextProperty =
BindableProperty.CreateAttached("PageContext", typeof(Context), typeof(Platform), null);
internal static void SetPageContext(BindableObject bindable, Context context)
{
// Set a context for this page and its child controls
bindable.SetValue(PageContextProperty, context);
}
static Context GetPreviewerContext(Element element)
{
// Walk up the tree and find the Page this element is hosted in
Element parent = element;
while (!Application.IsApplicationOrNull(parent.RealParent))
{
parent = parent.RealParent;
}
// If a page is found, return the PageContext set by the previewer for that page (if any)
return (parent as Page)?.GetValue(PageContextProperty) as Context;
}
#endregion
internal class DefaultRenderer : VisualElementRenderer<View>, ILayoutChanges
{
public bool NotReallyHandled { get; private set; }
IOnTouchListener _touchListener;
bool _disposed;
bool _hasLayoutOccurred;
readonly MotionEventHelper _motionEventHelper = new MotionEventHelper();
public DefaultRenderer(Context context) : base(context)
{
ChildrenDrawingOrderEnabled = true;
}
internal void NotifyFakeHandling()
{
NotReallyHandled = true;
}
public override bool OnTouchEvent(MotionEvent e)
{
if (base.OnTouchEvent(e))
return true;
return _motionEventHelper.HandleMotionEvent(Parent, e);
}
protected override void OnElementChanged(ElementChangedEventArgs<View> e)
{
base.OnElementChanged(e);
_motionEventHelper.UpdateElement(e.NewElement);
}
public override bool DispatchTouchEvent(MotionEvent e)
{
#region Excessive explanation
// Normally dispatchTouchEvent feeds the touch events to its children one at a time, top child first,
// (and only to the children in the hit-test area of the event) stopping as soon as one of them has handled
// the event.
// But to be consistent across the platforms, we don't want this behavior; if an element is not input transparent
// we don't want an event to "pass through it" and be handled by an element "behind/under" it. We just want the processing
// to end after the first non-transparent child, regardless of whether the event has been handled.
// This is only an issue for a couple of controls; the interactive controls (switch, button, slider, etc) already "handle" their touches
// and the events don't propagate to other child controls. But for image, label, and box that doesn't happen. We can't have those controls
// lie about their events being handled because then the events won't propagate to *parent* controls (e.g., a frame with a label in it would
// never get a tap gesture from the label). In other words, we *want* parent propagation, but *do not want* sibling propagation. So we need to short-circuit
// base.DispatchTouchEvent here, but still return "false".
// Duplicating the logic of ViewGroup.dispatchTouchEvent and modifying it slightly for our purposes is a non-starter; the method is too
// complex and does a lot of micro-optimization. Instead, we provide a signalling mechanism for the controls which don't already "handle" touch
// events to tell us that they will be lying about handling their event; they then return "true" to short-circuit base.DispatchTouchEvent.
// The container gets this message and after it gets the "handled" result from dispatchTouchEvent,
// it then knows to ignore that result and return false/unhandled. This allows the event to propagate up the tree.
#endregion
NotReallyHandled = false;
var result = base.DispatchTouchEvent(e);
if (result && NotReallyHandled)
{
// If the child control returned true from its touch event handler but signalled that it was a fake "true", then we
// don't consider the event truly "handled" yet.
// Since a child control short-circuited the normal dispatchTouchEvent stuff, this layout never got the chance for
// IOnTouchListener.OnTouch and the OnTouchEvent override to try handling the touches; we'll do that now
// Any associated Touch Listeners are called from DispatchTouchEvents if all children of this view return false
// So here we are simulating both calls that would have typically been called from inside DispatchTouchEvent
// but were not called due to the fake "true"
result = _touchListener?.OnTouch(this, e) ?? false;
return result || OnTouchEvent(e);
}
return result;
}
public override void SetOnTouchListener(IOnTouchListener l)
{
_touchListener = l;
base.SetOnTouchListener(l);
}
protected override void Dispose(bool disposing)
{
if (_disposed)
{
return;
}
_disposed = true;
if (disposing)
SetOnTouchListener(null);
base.Dispose(disposing);
}
bool ILayoutChanges.HasLayoutOccurred => _hasLayoutOccurred;
protected override void OnLayout(bool changed, int left, int top, int right, int bottom)
{
base.OnLayout(changed, left, top, right, bottom);
_hasLayoutOccurred = true;
}
}
internal static string ResolveMsAppDataUri(Uri uri)
{
if (uri.Scheme == "ms-appdata")
{
string filePath = string.Empty;
if (uri.LocalPath.StartsWith("/local"))
{
filePath = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments), uri.LocalPath.Substring(7));
}
else if (uri.LocalPath.StartsWith("/temp"))
{
filePath = System.IO.Path.Combine(System.IO.Path.GetTempPath(), uri.LocalPath.Substring(6));
}
else
{
throw new ArgumentException("Invalid Uri", "Source");
}
return filePath;
}
else
{
throw new ArgumentException("uri");
}
}
}
}

Просмотреть файл

@ -0,0 +1,339 @@
using System;
using System.ComponentModel;
using Android.Content;
using Android.Graphics;
using Android.Util;
using Android.Views;
using Android.Widget;
using AndroidX.AppCompat.Widget;
using AndroidX.Core.View;
using Microsoft.Maui.Controls.Internals;
using Microsoft.Maui.Controls.Compatibility.Platform.Android.FastRenderers;
using AColor = Android.Graphics.Color;
using AView = Android.Views.View;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public class RadioButtonRenderer : AppCompatRadioButton,
IBorderVisualElementRenderer, IVisualElementRenderer, IViewRenderer, ITabStop,
AView.IOnFocusChangeListener,
CompoundButton.IOnCheckedChangeListener
{
float _defaultFontSize;
int? _defaultLabelFor;
Typeface _defaultTypeface;
bool _isDisposed;
bool _inputTransparent;
Lazy<TextColorSwitcher> _textColorSwitcher;
AutomationPropertiesProvider _automationPropertiesProvider;
VisualElementTracker _tracker;
VisualElementRenderer _visualElementRenderer;
BorderBackgroundManager _backgroundTracker;
IPlatformElementConfiguration<PlatformConfiguration.Android, RadioButton> _platformElementConfiguration;
public event EventHandler<VisualElementChangedEventArgs> ElementChanged;
public event EventHandler<PropertyChangedEventArgs> ElementPropertyChanged;
public RadioButtonRenderer(Context context) : base(context)
{
Initialize();
}
protected RadioButton Element { get; set; }
protected AppCompatRadioButton Control => this;
VisualElement IBorderVisualElementRenderer.Element => Element;
VisualElement IVisualElementRenderer.Element => Element;
AView IVisualElementRenderer.View => this;
ViewGroup IVisualElementRenderer.ViewGroup => null;
VisualElementTracker IVisualElementRenderer.Tracker => _tracker;
AView ITabStop.TabStop => this;
void IOnFocusChangeListener.OnFocusChange(AView v, bool hasFocus)
{
((IElementController)Element).SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, hasFocus);
}
SizeRequest IVisualElementRenderer.GetDesiredSize(int widthConstraint, int heightConstraint)
{
Measure(widthConstraint, heightConstraint);
return new SizeRequest(new Size(MeasuredWidth, MeasuredHeight));
}
void IVisualElementRenderer.SetElement(VisualElement element)
{
if (element == null)
{
throw new ArgumentNullException(nameof(element));
}
if (!(element is RadioButton))
{
throw new ArgumentException($"{nameof(element)} must be of type {nameof(RadioButton)}");
}
RadioButton oldElement = Element;
Element = (RadioButton)element;
Performance.Start(out string reference);
if (oldElement != null)
{
oldElement.PropertyChanged -= OnElementPropertyChanged;
}
element.PropertyChanged += OnElementPropertyChanged;
if (_tracker == null)
{
// Can't set up the tracker in the constructor because it access the Element (for now)
SetTracker(new VisualElementTracker(this));
}
if (_visualElementRenderer == null)
{
_visualElementRenderer = new VisualElementRenderer(this);
}
OnElementChanged(new ElementChangedEventArgs<RadioButton>(oldElement, Element));
SendVisualElementInitialized(element, this);
Performance.Stop(reference);
}
void IVisualElementRenderer.SetLabelFor(int? id)
{
if (_defaultLabelFor == null)
{
_defaultLabelFor = ViewCompat.GetLabelFor(this);
}
ViewCompat.SetLabelFor(this, (int)(id ?? _defaultLabelFor));
}
void IVisualElementRenderer.UpdateLayout() => _tracker?.UpdateLayout();
void IViewRenderer.MeasureExactly()
{
ViewRenderer.MeasureExactly(this, Element, Context);
}
protected override void Dispose(bool disposing)
{
if (_isDisposed)
{
return;
}
_isDisposed = true;
if (disposing)
{
SetOnClickListener(null);
SetOnTouchListener(null);
OnFocusChangeListener = null;
SetOnCheckedChangeListener(null);
if (Element != null)
{
Element.PropertyChanged -= OnElementPropertyChanged;
}
_automationPropertiesProvider?.Dispose();
_tracker?.Dispose();
_visualElementRenderer?.Dispose();
_backgroundTracker?.Dispose();
_backgroundTracker = null;
if (Element != null)
{
if (AppCompat.Platform.GetRenderer(Element) == this)
Element.ClearValue(AppCompat.Platform.RendererProperty);
}
}
base.Dispose(disposing);
}
public override bool OnTouchEvent(MotionEvent e)
{
if (!Enabled || (_inputTransparent && Enabled))
return false;
return base.OnTouchEvent(e);
}
protected virtual void OnElementChanged(ElementChangedEventArgs<RadioButton> e)
{
if (e.NewElement != null && !_isDisposed)
{
this.EnsureId();
_textColorSwitcher = new Lazy<TextColorSwitcher>(
() => new TextColorSwitcher(TextColors, e.NewElement.UseLegacyColorManagement()));
UpdateFont();
UpdateTextColor();
UpdateInputTransparent();
UpdateBackgroundColor();
UpdateIsChecked();
UpdateContent();
ElevationHelper.SetElevation(this, e.NewElement);
}
ElementChanged?.Invoke(this, new VisualElementChangedEventArgs(e.OldElement, e.NewElement));
}
protected virtual void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == RadioButton.TextColorProperty.PropertyName)
{
UpdateTextColor();
}
else if (e.IsOneOf(RadioButton.FontAttributesProperty, RadioButton.FontFamilyProperty, RadioButton.FontSizeProperty))
{
UpdateFont();
}
else if (e.PropertyName == VisualElement.InputTransparentProperty.PropertyName)
{
UpdateInputTransparent();
}
else if (e.PropertyName == RadioButton.IsCheckedProperty.PropertyName)
{
UpdateIsChecked();
}
else if (e.PropertyName == RadioButton.ContentProperty.PropertyName)
{
UpdateContent();
}
ElementPropertyChanged?.Invoke(this, e);
}
void SetTracker(VisualElementTracker tracker)
{
_tracker = tracker;
}
void UpdateBackgroundColor()
{
_backgroundTracker?.UpdateDrawable();
}
internal void OnNativeFocusChanged(bool hasFocus)
{
}
internal void SendVisualElementInitialized(VisualElement element, AView nativeView)
{
element.SendViewInitialized(nativeView);
}
void Initialize()
{
_automationPropertiesProvider = new AutomationPropertiesProvider(this);
_backgroundTracker = new BorderBackgroundManager(this);
SoundEffectsEnabled = false;
OnFocusChangeListener = this;
SetOnCheckedChangeListener(this);
Tag = this;
}
void UpdateFont()
{
if (Element == null || _isDisposed)
{
return;
}
Font font = Font.OfSize(Element.FontFamily, Element.FontSize).WithAttributes(Element.FontAttributes);
if (font == Font.Default && _defaultFontSize == 0f)
{
return;
}
if (_defaultFontSize == 0f)
{
_defaultTypeface = Typeface;
_defaultFontSize = TextSize;
}
if (font == Font.Default)
{
Typeface = _defaultTypeface;
SetTextSize(ComplexUnitType.Px, _defaultFontSize);
}
else
{
Typeface = font.ToTypeface();
SetTextSize(ComplexUnitType.Sp, font.ToScaledPixel());
}
}
void UpdateInputTransparent()
{
if (Element == null || _isDisposed)
{
return;
}
_inputTransparent = Element.InputTransparent;
}
void UpdateTextColor()
{
if (Element == null || _isDisposed || _textColorSwitcher == null)
{
return;
}
_textColorSwitcher.Value.UpdateTextColor(this, Element.TextColor);
}
void UpdateIsChecked()
{
if (Element == null || Control == null)
return;
Checked = ((RadioButton)Element).IsChecked;
}
void UpdateContent()
{
if (Element == null || Control == null)
{
return;
}
Control.Text = Element.ContentAsString();
}
void IOnCheckedChangeListener.OnCheckedChanged(CompoundButton buttonView, bool isChecked)
{
((IElementController)Element).SetValueFromRenderer(RadioButton.IsCheckedProperty, isChecked);
}
float IBorderVisualElementRenderer.ShadowRadius => ShadowRadius;
float IBorderVisualElementRenderer.ShadowDx => ShadowDx;
float IBorderVisualElementRenderer.ShadowDy => ShadowDy;
AColor IBorderVisualElementRenderer.ShadowColor => ShadowColor;
bool IBorderVisualElementRenderer.IsShadowEnabled() => true;
AView IBorderVisualElementRenderer.View => this;
IPlatformElementConfiguration<PlatformConfiguration.Android, RadioButton> OnThisPlatform()
{
if (_platformElementConfiguration == null)
_platformElementConfiguration = Element.OnThisPlatform();
return _platformElementConfiguration;
}
bool IBorderVisualElementRenderer.UseDefaultPadding() => true;
bool IBorderVisualElementRenderer.UseDefaultShadow() => true;
}
}

Просмотреть файл

@ -1,8 +1,8 @@
using Android.Runtime; using Android.Runtime;
[assembly: ResourceDesigner("Xamarin.Forms.Platform.Android.Resource", IsApplication = false)] [assembly: ResourceDesigner("Microsoft.Maui.Controls.Compatibility.Platform.Android.Resource", IsApplication = false)]
namespace Xamarin.Forms.Platform.Android namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{ {
public class Resource public class Resource
{ {

Просмотреть файл

@ -6,7 +6,7 @@ using Android.Views;
using AView = Android.Views.View; using AView = Android.Views.View;
using LP = Android.Views.ViewGroup.LayoutParams; using LP = Android.Views.ViewGroup.LayoutParams;
namespace Xamarin.Forms.Platform.Android.AppCompat namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{ {
internal class ShellFragmentContainer : FragmentContainer internal class ShellFragmentContainer : FragmentContainer
{ {

Просмотреть файл

@ -0,0 +1,168 @@
using System;
using System.ComponentModel;
using Android.Content;
using Android.Graphics.Drawables;
using Android.Widget;
using AndroidX.AppCompat.Widget;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{
public class SwitchRenderer : ViewRenderer<Switch, SwitchCompat>, CompoundButton.IOnCheckedChangeListener
{
bool _disposed;
Drawable _defaultTrackDrawable;
bool _changedThumbColor;
public SwitchRenderer(Context context) : base(context)
{
AutoPackage = false;
}
protected override void SetContentDescription() =>
base.SetContentDescription(false);
[PortHandler]
void CompoundButton.IOnCheckedChangeListener.OnCheckedChanged(CompoundButton buttonView, bool isChecked)
{
((IViewController)Element).SetValueFromRenderer(Switch.IsToggledProperty, isChecked);
UpdateOnColor();
}
[PortHandler]
public override SizeRequest GetDesiredSize(int widthConstraint, int heightConstraint)
{
SizeRequest sizeConstraint = base.GetDesiredSize(widthConstraint, heightConstraint);
if (sizeConstraint.Request.Width == 0)
{
int width = widthConstraint;
if (widthConstraint <= 0)
width = (int)Context.GetThemeAttributeDp(global::Android.Resource.Attribute.SwitchMinWidth);
sizeConstraint = new SizeRequest(new Size(width, sizeConstraint.Request.Height), new Size(width, sizeConstraint.Minimum.Height));
}
return sizeConstraint;
}
[PortHandler]
protected override SwitchCompat CreateNativeControl()
{
return new SwitchCompat(Context);
}
protected override void Dispose(bool disposing)
{
if (disposing && !_disposed)
{
_disposed = true;
if (Element != null)
Element.Toggled -= HandleToggled;
Control?.SetOnCheckedChangeListener(null);
_defaultTrackDrawable?.Dispose();
_defaultTrackDrawable = null;
}
base.Dispose(disposing);
}
protected override void OnElementChanged(ElementChangedEventArgs<Switch> e)
{
base.OnElementChanged(e);
if (e.OldElement != null)
e.OldElement.Toggled -= HandleToggled;
if (e.NewElement != null)
{
if (Control == null)
{
SwitchCompat aswitch = CreateNativeControl();
aswitch.SetOnCheckedChangeListener(this);
SetNativeControl(aswitch);
_defaultTrackDrawable = aswitch.TrackDrawable;
}
else
UpdateEnabled(); // Normally set by SetNativeControl, but not when the Control is reused.
e.NewElement.Toggled += HandleToggled;
Control.Checked = e.NewElement.IsToggled;
UpdateOnColor();
UpdateThumbColor();
}
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (this.IsDisposed())
{
return;
}
base.OnElementPropertyChanged(sender, e);
if (e.PropertyName == Switch.OnColorProperty.PropertyName)
UpdateOnColor();
else if (e.PropertyName == Slider.ThumbColorProperty.PropertyName)
UpdateThumbColor();
}
[PortHandler]
void UpdateOnColor()
{
if (Element == null || Control == null)
return;
if (Control.Checked)
{
if (Element.OnColor == Color.Default)
{
Control.TrackDrawable = _defaultTrackDrawable;
}
else
{
Control.TrackDrawable?.SetColorFilter(Element.OnColor, FilterMode.SrcAtop);
}
}
else
{
Control.TrackDrawable?.ClearColorFilter();
}
}
[PortHandler]
void UpdateThumbColor()
{
if (Element == null)
return;
if (Element.ThumbColor != Color.Default)
{
Control.ThumbDrawable?.SetColorFilter(Element.ThumbColor, FilterMode.SrcAtop);
_changedThumbColor = true;
}
else
{
if (_changedThumbColor)
{
Control.ThumbDrawable?.ClearColorFilter();
_changedThumbColor = false;
}
}
}
[PortHandler]
void HandleToggled(object sender, EventArgs e)
{
Control.Checked = Element.IsToggled;
}
void UpdateEnabled()
{
Control.Enabled = Element.IsEnabled;
}
}
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,11 @@
using Android.Content;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat
{
public abstract class ViewRenderer<TView, TControl> : Android.ViewRenderer<TView, TControl> where TView : View where TControl : global::Android.Views.View
{
protected ViewRenderer(Context context) : base(context)
{
}
}
}

Просмотреть файл

@ -1,9 +1,9 @@
using System; using System;
using System.ComponentModel; using System.ComponentModel;
using Xamarin.Forms.Internals; using Microsoft.Maui.Controls.Internals;
using AView = Android.Views.View; using AView = Android.Views.View;
namespace Xamarin.Forms.Platform.Android namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{ {
internal static class BackgroundManager internal static class BackgroundManager
{ {

Просмотреть файл

@ -4,9 +4,9 @@ using Android.Content.Res;
using Android.Graphics.Drawables; using Android.Graphics.Drawables;
using AColor = Android.Graphics.Color; using AColor = Android.Graphics.Color;
using AView = Android.Views.View; using AView = Android.Views.View;
using Specifics = Xamarin.Forms.PlatformConfiguration.AndroidSpecific; using Specifics = Microsoft.Maui.Controls.PlatformConfiguration.AndroidSpecific;
namespace Xamarin.Forms.Platform.Android namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{ {
internal class BorderBackgroundManager : IDisposable internal class BorderBackgroundManager : IDisposable
{ {

Просмотреть файл

@ -0,0 +1,28 @@
using Android.Views;
using AView = Android.Views.View;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public static class ButtonElementManager
{
public static bool OnTouch(VisualElement element, IButtonController buttonController, AView v, MotionEvent e)
{
switch (e.ActionMasked)
{
case MotionEventActions.Down:
buttonController?.SendPressed();
break;
case MotionEventActions.Up:
buttonController?.SendReleased();
break;
}
return false;
}
public static void OnClick(VisualElement element, IButtonController buttonController, AView v)
{
buttonController?.SendClicked();
}
}
}

Просмотреть файл

@ -0,0 +1,383 @@
using System;
using System.ComponentModel;
using Android.Content;
using Android.Graphics.Drawables;
using Android.Text.Method;
using AndroidX.Core.View;
using AndroidX.Core.Widget;
using Microsoft.Maui.Controls.Internals;
using AButton = Android.Widget.Button;
using ARect = Android.Graphics.Rect;
using AView = Android.Views.View;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
// TODO: Currently the drawable is reloaded if the text or the layout changes.
// This is obviously not great, but it works. An optimization should
// be made to find the drawable in the view and just re-position.
// If we do this, we must remember to undo the offset in OnLayout.
public class ButtonLayoutManager : IDisposable
{
// we use left/right as this does not resize the button when there is no text
Button.ButtonContentLayout _imageOnlyLayout = new Button.ButtonContentLayout(Button.ButtonContentLayout.ImagePosition.Left, 0);
// reuse this instance to save on allocations
ARect _drawableBounds = new ARect();
bool _disposed;
IButtonLayoutRenderer _renderer;
Thickness? _defaultPaddingPix;
Button _element;
bool _alignIconWithText;
bool _preserveInitialPadding;
bool _borderAdjustsPadding;
bool _maintainLegacyMeasurements;
bool _hasLayoutOccurred;
ITransformationMethod _defaultTransformationMethod;
bool _elementAlreadyChanged = false;
public ButtonLayoutManager(IButtonLayoutRenderer renderer)
: this(renderer, false, false, false, true)
{
}
public ButtonLayoutManager(IButtonLayoutRenderer renderer,
bool alignIconWithText,
bool preserveInitialPadding,
bool borderAdjustsPadding,
bool maintainLegacyMeasurements)
{
_renderer = renderer ?? throw new ArgumentNullException(nameof(renderer));
_renderer.ElementChanged += OnElementChanged;
_alignIconWithText = alignIconWithText;
_preserveInitialPadding = preserveInitialPadding;
_borderAdjustsPadding = borderAdjustsPadding;
_maintainLegacyMeasurements = maintainLegacyMeasurements;
}
AButton View => _renderer?.View ?? _renderer as AButton;
Context Context => _renderer?.View?.Context;
public void Dispose()
{
Dispose(true);
}
protected virtual void Dispose(bool disposing)
{
if (!_disposed)
{
if (disposing)
{
if (_renderer != null)
{
if (_element != null)
{
_element.PropertyChanged -= OnElementPropertyChanged;
}
_renderer.ElementChanged -= OnElementChanged;
_renderer = null;
}
}
_disposed = true;
}
}
internal SizeRequest GetDesiredSize(int widthConstraint, int heightConstraint)
{
var previousHeight = View.MeasuredHeight;
var previousWidth = View.MeasuredWidth;
View.Measure(widthConstraint, heightConstraint);
// if the measure of the view has changed then trigger a request for layout
// if the measure hasn't changed then force a layout of the button
if (previousHeight != View.MeasuredHeight || previousWidth != View.MeasuredWidth)
View.MaybeRequestLayout();
else
View.ForceLayout();
return new SizeRequest(new Size(View.MeasuredWidth, View.MeasuredHeight), Size.Zero);
}
public void OnLayout(bool changed, int left, int top, int right, int bottom)
{
if (_disposed || _renderer == null || _element == null)
return;
AButton view = View;
if (view == null)
return;
Drawable drawable = null;
Drawable[] drawables = TextViewCompat.GetCompoundDrawablesRelative(view);
if (drawables != null)
{
foreach (var compoundDrawable in drawables)
{
if (compoundDrawable != null)
{
drawable = compoundDrawable;
break;
}
}
}
if (drawable != null)
{
int iconWidth = drawable.IntrinsicWidth;
drawable.CopyBounds(_drawableBounds);
// Center the drawable in the button if there is no text.
// We do not need to undo this as when we get some text, the drawable recreated
if (string.IsNullOrEmpty(_element.Text))
{
var newLeft = (right - left - iconWidth) / 2 - view.PaddingLeft;
_drawableBounds.Set(newLeft, _drawableBounds.Top, newLeft + iconWidth, _drawableBounds.Bottom);
drawable.Bounds = _drawableBounds;
}
else
{
if (_alignIconWithText && _element.ContentLayout.IsHorizontal())
{
var buttonText = view.TextFormatted;
// if text is transformed, add that transformation to to ensure correct calculation of icon padding
if (view.TransformationMethod != null)
buttonText = view.TransformationMethod.GetTransformationFormatted(buttonText, view);
var measuredTextWidth = view.Paint.MeasureText(buttonText, 0, buttonText.Length());
var textWidth = Math.Min((int)measuredTextWidth, view.Layout.Width);
var contentsWidth = ViewCompat.GetPaddingStart(view) + iconWidth + view.CompoundDrawablePadding + textWidth + ViewCompat.GetPaddingEnd(view);
var newLeft = (view.MeasuredWidth - contentsWidth) / 2;
if (_element.ContentLayout.Position == Button.ButtonContentLayout.ImagePosition.Right)
newLeft = -newLeft;
if (ViewCompat.GetLayoutDirection(view) == ViewCompat.LayoutDirectionRtl)
newLeft = -newLeft;
_drawableBounds.Set(newLeft, _drawableBounds.Top, newLeft + iconWidth, _drawableBounds.Bottom);
drawable.Bounds = _drawableBounds;
}
}
}
_hasLayoutOccurred = true;
}
public void OnViewAttachedToWindow(AView attachedView)
{
Update();
}
public void OnViewDetachedFromWindow(AView detachedView)
{
}
public void Update()
{
if (View?.LayoutParameters == null && _hasLayoutOccurred)
return;
if (View != null && !_elementAlreadyChanged)
{
_defaultTransformationMethod = View.TransformationMethod;
_elementAlreadyChanged = true;
}
if (!UpdateTextAndImage())
UpdateImage();
UpdatePadding();
UpdateLineBreakMode();
}
void OnElementChanged(object sender, VisualElementChangedEventArgs e)
{
if (_element != null)
{
_element.PropertyChanged -= OnElementPropertyChanged;
_element = null;
}
if (e.NewElement is Button button)
{
_element = button;
_element.PropertyChanged += OnElementPropertyChanged;
}
Update();
}
void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (_disposed || _renderer == null || _element == null)
return;
if (e.PropertyName == Button.PaddingProperty.PropertyName)
UpdatePadding();
else if (e.PropertyName == Button.ImageSourceProperty.PropertyName || e.PropertyName == Button.ContentLayoutProperty.PropertyName)
UpdateImage();
else if (e.IsOneOf(Button.TextProperty, VisualElement.IsVisibleProperty, Button.TextTransformProperty))
UpdateTextAndImage();
else if (e.PropertyName == Button.BorderWidthProperty.PropertyName && _borderAdjustsPadding)
_element.InvalidateMeasureNonVirtual(InvalidationTrigger.MeasureChanged);
else if (e.PropertyName == Button.LineBreakModeProperty.PropertyName)
UpdateLineBreakMode();
}
void UpdatePadding()
{
AButton view = View;
if (view == null)
return;
if (_disposed || _renderer == null || _element == null)
return;
if (!_defaultPaddingPix.HasValue)
_defaultPaddingPix = new Thickness(view.PaddingLeft, view.PaddingTop, view.PaddingRight, view.PaddingBottom);
// Currently the Padding Bindable property uses a creator factory so once it is set it can't become unset
// I would say this is currently a bug but it's a bug that exists already in the code base.
// Having this comment and this code more accurately demonstrates behavior then
// having an else clause for when the PaddingProperty isn't set
if (!_element.IsSet(Button.PaddingProperty))
return;
var padding = _element.Padding;
var adjustment = 0.0;
if (_borderAdjustsPadding && _element is IBorderElement borderElement && borderElement.IsBorderWidthSet() && borderElement.BorderWidth != borderElement.BorderWidthDefaultValue)
adjustment = borderElement.BorderWidth;
var defaultPadding = _preserveInitialPadding && _defaultPaddingPix.HasValue
? _defaultPaddingPix.Value
: new Thickness();
view.SetPadding(
(int)(Context.ToPixels(padding.Left + adjustment) + defaultPadding.Left),
(int)(Context.ToPixels(padding.Top + adjustment) + defaultPadding.Top),
(int)(Context.ToPixels(padding.Right + adjustment) + defaultPadding.Right),
(int)(Context.ToPixels(padding.Bottom + adjustment) + defaultPadding.Bottom));
}
bool UpdateTextAndImage()
{
if (_disposed || _renderer?.View == null || _element == null)
return false;
if (View?.LayoutParameters == null && _hasLayoutOccurred)
return false;
AButton view = View;
if (view == null)
return false;
UpdateTransformationMethod(view);
string oldText = view.Text;
view.Text = _element.UpdateFormsText(_element.Text, _element.TextTransform);
// If we went from or to having no text, we need to update the image position
if (string.IsNullOrEmpty(oldText) != string.IsNullOrEmpty(view.Text))
{
UpdateImage();
return true;
}
return false;
}
void UpdateTransformationMethod(AButton view)
{
// Use defaults only when user hasn't specified alternative TextTransform settings
if (_element.TextTransform == TextTransform.Default)
view.TransformationMethod = _defaultTransformationMethod;
else
view.TransformationMethod = null;
}
void UpdateImage()
{
if (_disposed || _renderer == null || _element == null)
return;
AButton view = View;
if (view == null)
return;
ImageSource elementImage = _element.ImageSource;
if (elementImage == null || elementImage.IsEmpty)
{
view.SetCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
return;
}
// No text, so no need for relative position; just center the image
// There's no option for just plain-old centering, so we'll use Top
// (which handles the horizontal centering) and some tricksy padding (in OnLayout)
// to handle the vertical centering
var layout = string.IsNullOrEmpty(_element.Text) ? _imageOnlyLayout : _element.ContentLayout;
if (_maintainLegacyMeasurements)
view.CompoundDrawablePadding = (int)layout.Spacing;
else
view.CompoundDrawablePadding = (int)Context.ToPixels(layout.Spacing);
Drawable existingImage = null;
var images = TextViewCompat.GetCompoundDrawablesRelative(view);
for (int i = 0; i < images.Length; i++)
if (images[i] != null)
{
existingImage = images[i];
break;
}
if (_renderer is IVisualElementRenderer visualElementRenderer)
{
visualElementRenderer.ApplyDrawableAsync(Button.ImageSourceProperty, Context, image =>
{
if (image == existingImage)
return;
switch (layout.Position)
{
case Button.ButtonContentLayout.ImagePosition.Top:
TextViewCompat.SetCompoundDrawablesRelativeWithIntrinsicBounds(view, null, image, null, null);
break;
case Button.ButtonContentLayout.ImagePosition.Right:
TextViewCompat.SetCompoundDrawablesRelativeWithIntrinsicBounds(view, null, null, image, null);
break;
case Button.ButtonContentLayout.ImagePosition.Bottom:
TextViewCompat.SetCompoundDrawablesRelativeWithIntrinsicBounds(view, null, null, null, image);
break;
default:
// Defaults to image on the left
TextViewCompat.SetCompoundDrawablesRelativeWithIntrinsicBounds(view, image, null, null, null);
break;
}
if (_hasLayoutOccurred)
_element?.InvalidateMeasureNonVirtual(InvalidationTrigger.MeasureChanged);
});
}
}
void UpdateLineBreakMode()
{
AButton view = View;
if (view == null || _element == null || _renderer?.View == null)
return;
view.SetLineBreakMode(_element);
UpdateTransformationMethod(view);
}
}
}

Просмотреть файл

@ -15,7 +15,7 @@ using AMenu = Android.Views.IMenu;
using AMenu = Android.Views.Menu; using AMenu = Android.Views.Menu;
#endif #endif
namespace Xamarin.Forms.Platform.Android namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{ {
public abstract class CellAdapter : BaseAdapter<object>, AdapterView.IOnItemLongClickListener, ActionMode.ICallback, AdapterView.IOnItemClickListener, AActionMode.ICallback public abstract class CellAdapter : BaseAdapter<object>, AdapterView.IOnItemLongClickListener, ActionMode.ICallback, AdapterView.IOnItemClickListener, AActionMode.ICallback
{ {

Просмотреть файл

@ -4,10 +4,10 @@ using Android.Text;
using Android.Views; using Android.Views;
using Android.Widget; using Android.Widget;
using AndroidX.Core.Widget; using AndroidX.Core.Widget;
using Xamarin.Forms.Internals; using Microsoft.Maui.Controls.Internals;
using AView = Android.Views.View; using AView = Android.Views.View;
namespace Xamarin.Forms.Platform.Android namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{ {
public class BaseCellView : LinearLayout, INativeElementView public class BaseCellView : LinearLayout, INativeElementView
{ {

Просмотреть файл

@ -1,10 +1,10 @@
using Android.Content; using Android.Content;
using Android.Views; using Android.Views;
using Xamarin.Forms.Internals; using Microsoft.Maui.Controls.Internals;
using AListView = Android.Widget.ListView; using AListView = Android.Widget.ListView;
using AView = Android.Views.View; using AView = Android.Views.View;
namespace Xamarin.Forms.Platform.Android namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{ {
public static class CellFactory public static class CellFactory
{ {

Просмотреть файл

@ -0,0 +1,153 @@
using System;
using System.ComponentModel;
using Android.Content;
using Android.Views;
using Android.Widget;
using Microsoft.Maui.Controls.Internals;
using AView = Android.Views.View;
using Object = Java.Lang.Object;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public class CellRenderer : IRegisterable
{
static readonly PropertyChangedEventHandler PropertyChangedHandler = OnGlobalCellPropertyChanged;
static readonly BindableProperty RendererProperty = BindableProperty.CreateAttached("Renderer", typeof(CellRenderer), typeof(Cell), null);
EventHandler _onForceUpdateSizeRequested;
public View ParentView { get; set; }
protected Cell Cell { get; set; }
public AView GetCell(Cell item, AView convertView, ViewGroup parent, Context context)
{
Performance.Start(out string reference);
Cell = item;
Cell.PropertyChanged -= PropertyChangedHandler;
SetRenderer(Cell, this);
if (convertView != null)
{
Object tag = convertView.Tag;
CellRenderer renderer = (tag as RendererHolder)?.Renderer;
Cell oldCell = renderer?.Cell;
if (oldCell != null)
{
((ICellController)oldCell).SendDisappearing();
if (Cell != oldCell)
{
SetRenderer(oldCell, null);
}
}
}
AView view = GetCellCore(item, convertView, parent, context);
WireUpForceUpdateSizeRequested(item, view);
var holder = view.Tag as RendererHolder;
if (holder == null)
view.Tag = new RendererHolder(this);
else
holder.Renderer = this;
Cell.PropertyChanged += PropertyChangedHandler;
((ICellController)Cell).SendAppearing();
Performance.Stop(reference);
return view;
}
protected virtual AView GetCellCore(Cell item, AView convertView, ViewGroup parent, Context context)
{
Performance.Start(out string reference, "GetCellCore");
LayoutInflater inflater = LayoutInflater.FromContext(context);
const int type = global::Android.Resource.Layout.SimpleListItem1;
AView view = inflater.Inflate(type, null);
var textView = view.FindViewById<TextView>(global::Android.Resource.Id.Text1);
textView.Text = item.ToString();
textView.SetBackgroundColor(global::Android.Graphics.Color.Transparent);
view.SetBackgroundColor(global::Android.Graphics.Color.Black);
Performance.Stop(reference, "GetCellCore");
return view;
}
protected virtual void OnCellPropertyChanged(object sender, PropertyChangedEventArgs e)
{
}
protected void WireUpForceUpdateSizeRequested(Cell cell, AView nativeCell)
{
ICellController cellController = cell;
cellController.ForceUpdateSizeRequested -= _onForceUpdateSizeRequested;
_onForceUpdateSizeRequested = (sender, e) =>
{
if (nativeCell.Handle == IntPtr.Zero)
return;
// RenderHeight may not be changed, but that's okay, since we
// don't actually use the height argument in the OnMeasure override.
nativeCell.Measure(nativeCell.Width, (int)cell.RenderHeight);
nativeCell.SetMinimumHeight(nativeCell.MeasuredHeight);
nativeCell.SetMinimumWidth(nativeCell.MeasuredWidth);
};
cellController.ForceUpdateSizeRequested += _onForceUpdateSizeRequested;
}
internal static CellRenderer GetRenderer(BindableObject cell)
{
return (CellRenderer)cell.GetValue(RendererProperty);
}
internal static void SetRenderer(BindableObject cell, CellRenderer renderer)
{
cell.SetValue(RendererProperty, renderer);
}
static void OnGlobalCellPropertyChanged(object sender, PropertyChangedEventArgs e)
{
var cell = (Cell)sender;
CellRenderer renderer = GetRenderer(cell);
if (renderer == null)
{
cell.PropertyChanged -= PropertyChangedHandler;
return;
}
renderer.OnCellPropertyChanged(sender, e);
}
class RendererHolder : Object
{
readonly WeakReference<CellRenderer> _rendererRef;
public RendererHolder(CellRenderer renderer)
{
_rendererRef = new WeakReference<CellRenderer>(renderer);
}
public CellRenderer Renderer
{
get
{
CellRenderer renderer;
return _rendererRef.TryGetTarget(out renderer) ? renderer : null;
}
set { _rendererRef.SetTarget(value); }
}
}
}
}

Просмотреть файл

@ -4,7 +4,7 @@ using Android.Views;
using Android.Widget; using Android.Widget;
using ARect = Android.Graphics.Rect; using ARect = Android.Graphics.Rect;
namespace Xamarin.Forms.Platform.Android namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{ {
public sealed class EntryCellEditText : EditText public sealed class EntryCellEditText : EditText
{ {

Просмотреть файл

@ -0,0 +1,160 @@
using System.ComponentModel;
using Android.Content;
using Android.Text;
using Android.Text.Method;
using Android.Views;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public class EntryCellRenderer : CellRenderer
{
EntryCellView _view;
protected override global::Android.Views.View GetCellCore(Cell item, global::Android.Views.View convertView, ViewGroup parent, Context context)
{
if ((_view = convertView as EntryCellView) == null)
_view = new EntryCellView(context, item);
else
{
_view.TextChanged = null;
_view.FocusChanged = null;
_view.EditingCompleted = null;
}
UpdateLabel();
UpdateLabelColor();
UpdatePlaceholder();
UpdateKeyboard();
UpdateHorizontalTextAlignment();
UpdateVerticalTextAlignment();
UpdateText();
UpdateIsEnabled();
UpdateHeight();
UpdateFlowDirection();
_view.TextChanged = OnTextChanged;
_view.EditingCompleted = OnEditingCompleted;
return _view;
}
protected override void OnCellPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (!_view.IsAlive())
{
return;
}
base.OnCellPropertyChanged(sender, e);
if (e.PropertyName == EntryCell.LabelProperty.PropertyName)
UpdateLabel();
else if (e.PropertyName == EntryCell.TextProperty.PropertyName)
UpdateText();
else if (e.PropertyName == EntryCell.PlaceholderProperty.PropertyName)
UpdatePlaceholder();
else if (e.PropertyName == EntryCell.KeyboardProperty.PropertyName)
UpdateKeyboard();
else if (e.PropertyName == EntryCell.LabelColorProperty.PropertyName)
UpdateLabelColor();
else if (e.PropertyName == EntryCell.HorizontalTextAlignmentProperty.PropertyName)
UpdateHorizontalTextAlignment();
else if (e.PropertyName == EntryCell.VerticalTextAlignmentProperty.PropertyName)
UpdateVerticalTextAlignment();
else if (e.PropertyName == Cell.IsEnabledProperty.PropertyName)
UpdateIsEnabled();
else if (e.PropertyName == "RenderHeight")
UpdateHeight();
else if (e.PropertyName == VisualElement.FlowDirectionProperty.PropertyName)
{
UpdateFlowDirection();
UpdateHorizontalTextAlignment();
}
}
protected virtual NumberKeyListener GetDigitsKeyListener(InputTypes inputTypes)
{
// Override this in a custom renderer to use a different NumberKeyListener
// or to filter out input types you don't want to allow
// (e.g., inputTypes &= ~InputTypes.NumberFlagSigned to disallow the sign)
return LocalizedDigitsKeyListener.Create(inputTypes);
}
void OnEditingCompleted()
{
var entryCell = (IEntryCellController)Cell;
entryCell.SendCompleted();
}
void OnTextChanged(string text)
{
var entryCell = (EntryCell)Cell;
entryCell.Text = text;
}
void UpdateHeight()
{
_view.SetRenderHeight(Cell.RenderHeight);
}
void UpdateHorizontalTextAlignment()
{
var entryCell = (EntryCell)Cell;
_view.EditText.UpdateHorizontalAlignment(entryCell.HorizontalTextAlignment, _view.Context.HasRtlSupport());
}
void UpdateVerticalTextAlignment()
{
var entryCell = (EntryCell)Cell;
_view.EditText.UpdateVerticalAlignment(entryCell.VerticalTextAlignment);
}
void UpdateIsEnabled()
{
var entryCell = (EntryCell)Cell;
_view.EditText.Enabled = entryCell.IsEnabled;
}
void UpdateKeyboard()
{
var entryCell = (EntryCell)Cell;
var keyboard = entryCell.Keyboard;
_view.EditText.InputType = keyboard.ToInputType();
if (keyboard == Keyboard.Numeric)
{
_view.EditText.KeyListener = GetDigitsKeyListener(_view.EditText.InputType);
}
}
void UpdateLabel()
{
_view.LabelText = ((EntryCell)Cell).Label;
}
void UpdateLabelColor()
{
_view.SetLabelTextColor(((EntryCell)Cell).LabelColor, global::Android.Resource.Attribute.TextColor);
}
void UpdateFlowDirection()
{
_view.UpdateFlowDirection(ParentView);
}
void UpdatePlaceholder()
{
var entryCell = (EntryCell)Cell;
_view.EditText.Hint = entryCell.Placeholder;
}
void UpdateText()
{
var entryCell = (EntryCell)Cell;
if (_view.EditText.Text == entryCell.Text)
return;
_view.EditText.Text = entryCell.Text;
}
}
}

Просмотреть файл

@ -7,7 +7,7 @@ using Android.Widget;
using AndroidX.Core.Widget; using AndroidX.Core.Widget;
using Java.Lang; using Java.Lang;
namespace Xamarin.Forms.Platform.Android namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{ {
public sealed class EntryCellView : LinearLayout, ITextWatcher, global::Android.Views.View.IOnFocusChangeListener, TextView.IOnEditorActionListener, INativeElementView public sealed class EntryCellView : LinearLayout, ITextWatcher, global::Android.Views.View.IOnFocusChangeListener, TextView.IOnEditorActionListener, INativeElementView
{ {

Просмотреть файл

@ -0,0 +1,45 @@
using System.ComponentModel;
using Android.Content;
using Android.Views;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public class ImageCellRenderer : TextCellRenderer
{
protected override global::Android.Views.View GetCellCore(Cell item, global::Android.Views.View convertView, ViewGroup parent, Context context)
{
var result = (BaseCellView)base.GetCellCore(item, convertView, parent, context);
UpdateImage();
UpdateFlowDirection();
return result;
}
protected override void OnCellPropertyChanged(object sender, PropertyChangedEventArgs args)
{
base.OnCellPropertyChanged(sender, args);
if (args.PropertyName == ImageCell.ImageSourceProperty.PropertyName)
UpdateImage();
else if (args.PropertyName == VisualElement.FlowDirectionProperty.PropertyName)
UpdateFlowDirection();
}
void UpdateImage()
{
var cell = (ImageCell)Cell;
if (cell.ImageSource != null)
{
View.SetImageVisible(true);
View.SetImageSource(cell.ImageSource);
}
else
View.SetImageVisible(false);
}
void UpdateFlowDirection()
{
View.UpdateFlowDirection(ParentView);
}
}
}

Просмотреть файл

@ -0,0 +1,113 @@
using System.ComponentModel;
using Android.Content;
using Android.Graphics;
using Android.Graphics.Drawables;
using Android.OS;
using Android.Views;
using ASwitch = Android.Widget.Switch;
using AView = Android.Views.View;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public class SwitchCellRenderer : CellRenderer
{
SwitchCellView _view;
Drawable _defaultTrackDrawable;
protected override AView GetCellCore(Cell item, AView convertView, ViewGroup parent, Context context)
{
var cell = (SwitchCell)Cell;
if ((_view = convertView as SwitchCellView) == null)
_view = new SwitchCellView(context, item);
_view.Cell = cell;
var aSwitch = _view.AccessoryView as ASwitch;
if (aSwitch != null)
_defaultTrackDrawable = aSwitch.TrackDrawable;
UpdateText();
UpdateChecked();
UpdateHeight();
UpdateIsEnabled(_view, cell);
UpdateFlowDirection();
UpdateOnColor(_view, cell);
return _view;
}
protected override void OnCellPropertyChanged(object sender, PropertyChangedEventArgs args)
{
if (args.PropertyName == SwitchCell.TextProperty.PropertyName)
UpdateText();
else if (args.PropertyName == SwitchCell.OnProperty.PropertyName)
{
UpdateChecked();
UpdateOnColor(_view, (SwitchCell)sender);
}
else if (args.PropertyName == "RenderHeight")
UpdateHeight();
else if (args.PropertyName == Cell.IsEnabledProperty.PropertyName)
UpdateIsEnabled(_view, (SwitchCell)sender);
else if (args.PropertyName == VisualElement.FlowDirectionProperty.PropertyName)
UpdateFlowDirection();
else if (args.PropertyName == SwitchCell.OnColorProperty.PropertyName)
UpdateOnColor(_view, (SwitchCell)sender);
}
void UpdateChecked()
{
((ASwitch)_view.AccessoryView).Checked = ((SwitchCell)Cell).On;
}
void UpdateIsEnabled(SwitchCellView cell, SwitchCell switchCell)
{
cell.Enabled = switchCell.IsEnabled;
var aSwitch = cell.AccessoryView as ASwitch;
if (aSwitch != null)
aSwitch.Enabled = switchCell.IsEnabled;
}
void UpdateFlowDirection()
{
_view.UpdateFlowDirection(ParentView);
}
void UpdateHeight()
{
_view.SetRenderHeight(Cell.RenderHeight);
}
void UpdateText()
{
_view.MainText = ((SwitchCell)Cell).Text;
}
void UpdateOnColor(SwitchCellView cell, SwitchCell switchCell)
{
var aSwitch = cell.AccessoryView as ASwitch;
if (aSwitch != null)
{
if (switchCell.On)
{
if (switchCell.OnColor == Color.Default)
{
aSwitch.TrackDrawable = _defaultTrackDrawable;
}
else
{
if (Forms.SdkInt >= BuildVersionCodes.JellyBean)
{
aSwitch.TrackDrawable.SetColorFilter(switchCell.OnColor, FilterMode.Multiply);
}
}
}
else
{
aSwitch.TrackDrawable.ClearColorFilter();
}
}
}
}
}

Просмотреть файл

@ -1,7 +1,7 @@
using Android.Content; using Android.Content;
using Android.Widget; using Android.Widget;
namespace Xamarin.Forms.Platform.Android namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{ {
public class SwitchCellView : BaseCellView, CompoundButton.IOnCheckedChangeListener public class SwitchCellView : BaseCellView, CompoundButton.IOnCheckedChangeListener
{ {

Просмотреть файл

@ -0,0 +1,100 @@
using System;
using System.ComponentModel;
using Android.Content;
using Android.Views;
using Microsoft.Maui.Controls.Internals;
using AView = Android.Views.View;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public class TextCellRenderer : CellRenderer
{
internal TextCellView View { get; private set; }
protected override AView GetCellCore(Cell item, AView convertView, ViewGroup parent, Context context)
{
if ((View = convertView as TextCellView) == null)
View = new TextCellView(context, item);
UpdateMainText();
UpdateDetailText();
UpdateHeight();
UpdateIsEnabled();
UpdateFlowDirection();
UpdateAutomationId();
View.SetImageVisible(false);
return View;
}
protected override void OnCellPropertyChanged(object sender, PropertyChangedEventArgs args)
{
if (View.IsDisposed())
{
return;
}
if (args.PropertyName == TextCell.TextProperty.PropertyName || args.PropertyName == TextCell.TextColorProperty.PropertyName)
UpdateMainText();
else if (args.PropertyName == TextCell.DetailProperty.PropertyName || args.PropertyName == TextCell.DetailColorProperty.PropertyName)
UpdateDetailText();
else if (args.PropertyName == Cell.IsEnabledProperty.PropertyName)
UpdateIsEnabled();
else if (args.PropertyName == "RenderHeight")
UpdateHeight();
else if (args.PropertyName == VisualElement.FlowDirectionProperty.PropertyName)
UpdateFlowDirection();
else if (args.PropertyName == VisualElement.AutomationIdProperty.PropertyName)
UpdateAutomationId();
}
void UpdateAutomationId()
{
View.ContentDescription = Cell.AutomationId;
}
void UpdateDetailText()
{
var cell = (TextCell)Cell;
View.DetailText = cell.Detail;
View.SetDetailTextColor(cell.DetailColor);
}
void UpdateHeight()
{
View.SetRenderHeight(Cell.RenderHeight);
}
void UpdateIsEnabled()
{
var cell = (TextCell)Cell;
View.SetIsEnabled(cell.IsEnabled);
}
void UpdateFlowDirection()
{
View.UpdateFlowDirection(ParentView);
}
void UpdateMainText()
{
var cell = (TextCell)Cell;
View.MainText = cell.Text;
if (!cell.GetIsGroupHeader<ItemsView<Cell>, Cell>())
View.SetDefaultMainTextColor(Color.Accent);
else
View.SetDefaultMainTextColor(Color.Default);
View.SetMainTextColor(cell.TextColor);
}
// ensure we don't get other people's BaseCellView's
internal class TextCellView : BaseCellView
{
public TextCellView(Context context, Cell cell) : base(context, cell)
{
}
}
}
}

Просмотреть файл

@ -0,0 +1,412 @@
using System;
using System.Linq;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Microsoft.Maui.Controls.Internals;
using Microsoft.Maui.Controls.PlatformConfiguration.AndroidSpecific;
using AView = Android.Views.View;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public class ViewCellRenderer : CellRenderer
{
protected override AView GetCellCore(Cell item, AView convertView, ViewGroup parent, Context context)
{
Performance.Start(out string reference, "GetCellCore");
var cell = (ViewCell)item;
var container = convertView as ViewCellContainer;
if (container != null)
{
container.Update(cell);
Performance.Stop(reference, "GetCellCore");
return container;
}
BindableProperty unevenRows = null, rowHeight = null;
if (ParentView is TableView)
{
unevenRows = TableView.HasUnevenRowsProperty;
rowHeight = TableView.RowHeightProperty;
}
else if (ParentView is ListView)
{
cell.IsContextActionsLegacyModeEnabled = item.On<PlatformConfiguration.Android>().GetIsContextActionsLegacyModeEnabled();
unevenRows = ListView.HasUnevenRowsProperty;
rowHeight = ListView.RowHeightProperty;
}
if (cell.View == null)
throw new InvalidOperationException($"ViewCell must have a {nameof(cell.View)}");
IVisualElementRenderer view = AppCompat.Platform.CreateRenderer(cell.View, context);
AppCompat.Platform.SetRenderer(cell.View, view);
cell.View.IsPlatformEnabled = true;
var c = new ViewCellContainer(context, view, cell, ParentView, unevenRows, rowHeight);
Performance.Stop(reference, "GetCellCore");
return c;
}
internal class ViewCellContainer : ViewGroup, INativeElementView
{
readonly View _parent;
readonly BindableProperty _rowHeight;
readonly BindableProperty _unevenRows;
IVisualElementRenderer _view;
ViewCell _viewCell;
GestureDetector _tapGestureDetector;
GestureDetector _longPressGestureDetector;
ListViewRenderer _listViewRenderer;
bool _watchForLongPress;
ListViewRenderer ListViewRenderer
{
get
{
if (_listViewRenderer != null)
{
return _listViewRenderer;
}
var listView = _parent as ListView;
if (listView == null)
{
return null;
}
_listViewRenderer = AppCompat.Platform.GetRenderer(listView) as ListViewRenderer;
return _listViewRenderer;
}
}
GestureDetector TapGestureDetector
{
get
{
if (_tapGestureDetector != null)
{
return _tapGestureDetector;
}
_tapGestureDetector = new GestureDetector(Context, new TapGestureListener(TriggerClick));
return _tapGestureDetector;
}
}
GestureDetector LongPressGestureDetector
{
get
{
if (_longPressGestureDetector != null)
{
return _longPressGestureDetector;
}
_longPressGestureDetector = new GestureDetector(Context, new LongPressGestureListener(TriggerLongClick));
return _longPressGestureDetector;
}
}
public ViewCellContainer(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer)
{
// Added default constructor to prevent crash when accessing selected row in ListViewAdapter.Dispose
}
public ViewCellContainer(Context context, IVisualElementRenderer view, ViewCell viewCell, View parent,
BindableProperty unevenRows, BindableProperty rowHeight) : base(context)
{
_view = view;
_parent = parent;
_unevenRows = unevenRows;
_rowHeight = rowHeight;
_viewCell = viewCell;
AddView(view.View);
UpdateIsEnabled();
UpdateWatchForLongPress();
}
protected bool ParentHasUnevenRows
{
get { return (bool)_parent.GetValue(_unevenRows); }
}
protected int ParentRowHeight
{
get { return (int)_parent.GetValue(_rowHeight); }
}
public Element Element
{
get { return _viewCell; }
}
public override bool OnInterceptTouchEvent(MotionEvent ev)
{
if (!Enabled)
return true;
return base.OnInterceptTouchEvent(ev);
}
public override bool DispatchTouchEvent(MotionEvent e)
{
// Give the child controls a shot at the event (in case they've get Tap gestures and such
var handled = base.DispatchTouchEvent(e);
if (_watchForLongPress)
{
// Feed the gesture through the LongPress detector; for this to work we *must* return true
// afterward (or the LPGD goes nuts and immediately fires onLongPress)
LongPressGestureDetector.OnTouchEvent(e);
return true;
}
if (WatchForSwipeViewTap())
{
TapGestureDetector.OnTouchEvent(e);
return true;
}
return handled;
}
public void Update(ViewCell cell)
{
Performance.Start(out string reference);
var renderer = GetChildAt(0) as IVisualElementRenderer;
var viewHandlerType = Registrar.Registered.GetHandlerTypeForObject(cell.View) ?? typeof(AppCompat.Platform.DefaultRenderer);
var reflectableType = renderer as System.Reflection.IReflectableType;
var rendererType = reflectableType != null ? reflectableType.GetTypeInfo().AsType() : (renderer != null ? renderer.GetType() : typeof(System.Object));
if (renderer != null && rendererType == viewHandlerType)
{
Performance.Start(reference, "Reuse");
_viewCell = cell;
cell.View.DisableLayout = true;
foreach (VisualElement c in cell.View.Descendants())
c.DisableLayout = true;
Performance.Start(reference, "Reuse.SetElement");
renderer.SetElement(cell.View);
Performance.Stop(reference, "Reuse.SetElement");
AppCompat.Platform.SetRenderer(cell.View, _view);
cell.View.DisableLayout = false;
foreach (VisualElement c in cell.View.Descendants())
c.DisableLayout = false;
var viewAsLayout = cell.View as Layout;
if (viewAsLayout != null)
viewAsLayout.ForceLayout();
Invalidate();
Performance.Stop(reference, "Reuse");
Performance.Stop(reference);
return;
}
RemoveView(_view.View);
AppCompat.Platform.SetRenderer(_viewCell.View, null);
_viewCell.View.IsPlatformEnabled = false;
_view.View.Dispose();
_viewCell = cell;
_view = AppCompat.Platform.CreateRenderer(_viewCell.View, Context);
AppCompat.Platform.SetRenderer(_viewCell.View, _view);
AddView(_view.View);
UpdateIsEnabled();
UpdateWatchForLongPress();
Performance.Stop(reference);
}
public void UpdateIsEnabled()
{
Enabled = _viewCell.IsEnabled;
}
protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
Performance.Start(out string reference);
double width = Context.FromPixels(r - l);
double height = Context.FromPixels(b - t);
Performance.Start(reference, "Element.Layout");
Microsoft.Maui.Controls.Layout.LayoutChildIntoBoundingRegion(_view.Element, new Rectangle(0, 0, width, height));
Performance.Stop(reference, "Element.Layout");
_view.UpdateLayout();
Performance.Stop(reference);
}
protected override void OnMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
Performance.Start(out string reference);
int width = MeasureSpec.GetSize(widthMeasureSpec);
int height;
if (ParentHasUnevenRows)
{
SizeRequest measure = _view.Element.Measure(Context.FromPixels(width), double.PositiveInfinity, MeasureFlags.IncludeMargins);
height = (int)Context.ToPixels(_viewCell.Height > 0 ? _viewCell.Height : measure.Request.Height);
}
else
height = (int)Context.ToPixels(ParentRowHeight == -1 ? BaseCellView.DefaultMinHeight : ParentRowHeight);
SetMeasuredDimension(width, height);
Performance.Stop(reference);
}
bool WatchForSwipeViewTap()
{
if (!(_view.Element is SwipeView swipeView))
{
return false;
}
// If the cell contains a SwipeView, we will have conflicts capturing the touch.
// So we need to watch locally for Tap and if we see it (and the SwipeView is open),
// trigger the Click manually.
if (!((ISwipeViewController)swipeView).IsOpen)
{
return true;
}
return false;
}
void UpdateWatchForLongPress()
{
var vw = _view.Element as Microsoft.Maui.Controls.View;
if (vw == null)
{
return;
}
// If the view cell has any context actions and the View itself has any Tap Gestures, they're going
// to conflict with one another - the Tap Gesture handling will prevent the ListViewAdapter's
// LongClick handling from happening. So we need to watch locally for LongPress and if we see it,
// trigger the LongClick manually.
_watchForLongPress = _viewCell.ContextActions.Count > 0
&& HasTapGestureRecognizers(vw);
}
static bool HasTapGestureRecognizers(View view)
{
return view.GestureRecognizers.Any(t => t is TapGestureRecognizer)
|| view.LogicalChildren.OfType<View>().Any(HasTapGestureRecognizers);
}
void TriggerClick()
{
ListViewRenderer?.ClickOn(this);
}
void TriggerLongClick()
{
ListViewRenderer?.LongClickOn(this);
}
internal class TapGestureListener : Java.Lang.Object, GestureDetector.IOnGestureListener
{
readonly Action _onClick;
internal TapGestureListener(Action onClick)
{
_onClick = onClick;
}
internal TapGestureListener(IntPtr handle, JniHandleOwnership ownership) : base(handle, ownership)
{
}
public bool OnDown(MotionEvent e)
{
return true;
}
public bool OnFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
{
return false;
}
public void OnLongPress(MotionEvent e)
{
}
public bool OnScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
{
return false;
}
public void OnShowPress(MotionEvent e)
{
}
public bool OnSingleTapUp(MotionEvent e)
{
_onClick();
return false;
}
}
internal class LongPressGestureListener : Java.Lang.Object, GestureDetector.IOnGestureListener
{
readonly Action _onLongClick;
internal LongPressGestureListener(Action onLongClick)
{
_onLongClick = onLongClick;
}
internal LongPressGestureListener(IntPtr handle, JniHandleOwnership ownership) : base(handle, ownership)
{
}
public bool OnDown(MotionEvent e)
{
return true;
}
public bool OnFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
{
return false;
}
public void OnLongPress(MotionEvent e)
{
_onLongClick();
}
public bool OnScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
{
return false;
}
public void OnShowPress(MotionEvent e)
{
}
public bool OnSingleTapUp(MotionEvent e)
{
return false;
}
}
}
}
}

Просмотреть файл

@ -1,6 +1,6 @@
using AndroidX.RecyclerView.Widget; using AndroidX.RecyclerView.Widget;
namespace Xamarin.Forms.Platform.Android namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{ {
// Passes change notifications directly through to a RecyclerView.Adapter // Passes change notifications directly through to a RecyclerView.Adapter
internal class AdapterNotifier : ICollectionChangedNotifier internal class AdapterNotifier : ICollectionChangedNotifier

Просмотреть файл

@ -1,10 +1,10 @@
using System; using System;
using AndroidX.RecyclerView.Widget; using AndroidX.RecyclerView.Widget;
using ARect = Android.Graphics.Rect; using ARect = Android.Graphics.Rect;
using AView = Android.Views.View; using AView = Android.Views.View;
using FormsCarouselView = Xamarin.Forms.CarouselView; using FormsCarouselView = Microsoft.Maui.Controls.CarouselView;
namespace Xamarin.Forms.Platform.Android namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{ {
public class CarouselSpacingItemDecoration : RecyclerView.ItemDecoration public class CarouselSpacingItemDecoration : RecyclerView.ItemDecoration
{ {

Просмотреть файл

@ -1,9 +1,9 @@
using System; using System;
using Android.Content; using Android.Content;
using AndroidX.RecyclerView.Widget; using AndroidX.RecyclerView.Widget;
using static Xamarin.Forms.Platform.Android.CarouselViewRenderer; using static Microsoft.Maui.Controls.Compatibility.Platform.Android.CarouselViewRenderer;
namespace Xamarin.Forms.Platform.Android.CollectionView namespace Microsoft.Maui.Controls.Compatibility.Platform.Android.CollectionView
{ {
public class CarouselViewAdapter<TItemsView, TItemsViewSource> : ItemsViewAdapter<TItemsView, TItemsViewSource> public class CarouselViewAdapter<TItemsView, TItemsViewSource> : ItemsViewAdapter<TItemsView, TItemsViewSource>
where TItemsView : ItemsView where TItemsView : ItemsView

Просмотреть файл

@ -0,0 +1,748 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Threading.Tasks;
using Android.Content;
using Android.Runtime;
using Android.Views;
using AndroidX.RecyclerView.Widget;
using Microsoft.Maui.Controls.Compatibility.Platform.Android.CollectionView;
using FormsCarouselView = Microsoft.Maui.Controls.CarouselView;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public class CarouselViewRenderer : ItemsViewRenderer<ItemsView, ItemsViewAdapter<ItemsView, IItemsViewSource>, IItemsViewSource>
{
protected FormsCarouselView Carousel => ItemsView as FormsCarouselView;
ItemDecoration _itemDecoration;
CarouselViewLoopManager _carouselViewLoopManager;
bool _isSwipeEnabled;
int _oldPosition;
int _gotoPosition = -1;
bool _noNeedForScroll;
bool _initialized;
bool _isVisible;
bool _disposed;
List<View> _oldViews;
CarouselViewwOnGlobalLayoutListener _carouselViewLayoutListener;
public CarouselViewRenderer(Context context) : base(context)
{
_oldViews = new List<View>();
_carouselViewLoopManager = new CarouselViewLoopManager();
}
public override bool OnInterceptTouchEvent(MotionEvent ev)
{
if (!_isSwipeEnabled)
return false;
return base.OnInterceptTouchEvent(ev);
}
protected virtual bool IsHorizontal => (Carousel?.ItemsLayout)?.Orientation == ItemsLayoutOrientation.Horizontal;
protected override int DetermineTargetPosition(ScrollToRequestEventArgs args)
{
if (args.Mode == ScrollToMode.Element)
return ItemsViewAdapter.GetPositionForItem(args.Item);
if (!Carousel.Loop)
return args.Index;
if (_carouselViewLoopManager == null)
return -1;
var carouselPosition = GetCarouselViewCurrentIndex(Carousel.Position);
var getGoIndex = _carouselViewLoopManager.GetGoToIndex(this, carouselPosition, args.Index);
return getGoIndex;
}
public override bool OnTouchEvent(MotionEvent e)
{
if (Carousel.Loop)
_carouselViewLoopManager.CenterIfNeeded(this, IsHorizontal);
return base.OnTouchEvent(e);
}
protected override void Dispose(bool disposing)
{
if (disposing && !_disposed)
{
_disposed = true;
_carouselViewLoopManager?.SetItemsSource(null);
_carouselViewLoopManager = null;
if (_itemDecoration != null)
{
_itemDecoration.Dispose();
_itemDecoration = null;
}
ClearLayoutListener();
}
base.Dispose(disposing);
}
protected override void SetUpNewElement(ItemsView newElement)
{
base.SetUpNewElement(newElement);
if (newElement == null)
return;
AddLayoutListener();
UpdateIsSwipeEnabled();
UpdateIsBounceEnabled();
UpdateItemSpacing();
UpdateInitialPosition();
}
protected override RecyclerViewScrollListener<ItemsView, IItemsViewSource> CreateScrollListener()
{
return new CarouselViewOnScrollListener(ItemsView, ItemsViewAdapter, _carouselViewLoopManager);
}
protected override void TearDownOldElement(ItemsView oldElement)
{
if (Carousel != null)
Carousel.Scrolled -= CarouselViewScrolled;
ClearLayoutListener();
base.TearDownOldElement(oldElement);
}
protected override void UpdateAdapter()
{
// By default the CollectionViewAdapter creates the items at whatever size the template calls for
// But for the Carousel, we want it to create the items to fit the width/height of the viewport
// So we give it an alternate delegate for creating the views
var oldItemViewAdapter = ItemsViewAdapter;
UnsubscribeCollectionItemsSourceChanged(oldItemViewAdapter);
if (oldItemViewAdapter != null)
{
Carousel.SetValueFromRenderer(FormsCarouselView.PositionProperty, 0);
Carousel.SetValueFromRenderer(FormsCarouselView.CurrentItemProperty, null);
}
ItemsViewAdapter = new CarouselViewAdapter<ItemsView, IItemsViewSource>(Carousel,
(view, context) => new SizedItemContentView(Context, GetItemWidth, GetItemHeight));
_gotoPosition = -1;
SwapAdapter(ItemsViewAdapter, false);
UpdateInitialPosition();
if (ItemsViewAdapter?.ItemsSource is ObservableItemsSource observableItemsSource)
observableItemsSource.CollectionItemsSourceChanged += CollectionItemsSourceChanged;
oldItemViewAdapter?.Dispose();
}
protected override void UpdateItemsSource()
{
UpdateAdapter();
UpdateEmptyView();
_carouselViewLoopManager.SetItemsSource(ItemsViewAdapter.ItemsSource);
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs changedProperty)
{
base.OnElementPropertyChanged(sender, changedProperty);
if (changedProperty.Is(FormsCarouselView.PeekAreaInsetsProperty))
UpdatePeekAreaInsets();
else if (changedProperty.Is(FormsCarouselView.IsSwipeEnabledProperty))
UpdateIsSwipeEnabled();
else if (changedProperty.Is(FormsCarouselView.IsBounceEnabledProperty))
UpdateIsBounceEnabled();
else if (changedProperty.Is(LinearItemsLayout.ItemSpacingProperty))
UpdateItemSpacing();
else if (changedProperty.Is(FormsCarouselView.PositionProperty))
UpdateFromPosition();
else if (changedProperty.Is(FormsCarouselView.CurrentItemProperty))
UpdateFromCurrentItem();
else if (changedProperty.Is(FormsCarouselView.LoopProperty))
UpdateAdapter();
}
protected override ItemDecoration CreateSpacingDecoration(IItemsLayout itemsLayout)
{
return new CarouselSpacingItemDecoration(itemsLayout, Carousel);
}
protected override void UpdateItemSpacing()
{
if (ItemsLayout == null)
{
return;
}
UpdateItemDecoration();
var adapter = GetAdapter();
if (adapter != null)
{
adapter.NotifyItemChanged(_oldPosition);
}
base.UpdateItemSpacing();
}
protected override IItemsLayout GetItemsLayout() => Carousel.ItemsLayout;
protected override void ScrollTo(ScrollToRequestEventArgs args)
{
var position = DetermineTargetPosition(args);
if (_carouselViewLoopManager == null)
return;
// Special case here
// We could have a race condition where we are scrolling our collection to center the first item
// And at the same time the user is requesting we go to a particular item
if (position == -1)
{
if (Carousel.Loop)
_carouselViewLoopManager.AddPendingScrollTo(args);
return;
}
if (args.IsAnimated)
{
ScrollHelper.AnimateScrollToPosition(position, args.ScrollToPosition);
}
else
{
ScrollHelper.JumpScrollToPosition(position, args.ScrollToPosition);
}
}
int GetItemWidth()
{
var itemWidth = Width;
if (ItemsLayout is LinearItemsLayout listItemsLayout && listItemsLayout.Orientation == ItemsLayoutOrientation.Horizontal)
itemWidth = (int)(Width - Context?.ToPixels(Carousel.PeekAreaInsets.Left) - Context?.ToPixels(Carousel.PeekAreaInsets.Right) - Context?.ToPixels(listItemsLayout.ItemSpacing));
return itemWidth;
}
int GetItemHeight()
{
var itemHeight = Height;
if (ItemsLayout is LinearItemsLayout listItemsLayout && listItemsLayout.Orientation == ItemsLayoutOrientation.Vertical)
itemHeight = (int)(Height - Context?.ToPixels(Carousel.PeekAreaInsets.Top) - Context?.ToPixels(Carousel.PeekAreaInsets.Bottom) - Context?.ToPixels(listItemsLayout.ItemSpacing));
return itemHeight;
}
void UpdateIsSwipeEnabled() => _isSwipeEnabled = Carousel?.IsSwipeEnabled ?? false;
void UpdateIsBounceEnabled() => OverScrollMode = Carousel?.IsBounceEnabled == true ? OverScrollMode.Always : OverScrollMode.Never;
void UpdatePeekAreaInsets() => UpdateAdapter();
void UnsubscribeCollectionItemsSourceChanged(ItemsViewAdapter<ItemsView, IItemsViewSource> oldItemViewAdapter)
{
if (oldItemViewAdapter?.ItemsSource is ObservableItemsSource oldObservableItemsSource)
oldObservableItemsSource.CollectionItemsSourceChanged -= CollectionItemsSourceChanged;
}
void CollectionItemsSourceChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
if (!(ItemsViewAdapter?.ItemsSource is IItemsViewSource observableItemsSource))
return;
var carouselPosition = Carousel.Position;
var currentItemPosition = observableItemsSource.GetPosition(Carousel.CurrentItem);
var count = observableItemsSource.Count;
bool removingCurrentElement = currentItemPosition == -1;
bool removingLastElement = e.OldStartingIndex == count;
bool removingFirstElement = e.OldStartingIndex == 0;
bool removingAnyPrevious =
e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove
&& e.OldStartingIndex < carouselPosition;
_noNeedForScroll = true;
_gotoPosition = -1;
if (removingCurrentElement)
{
if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Reset)
{
carouselPosition = 0;
}
if (removingFirstElement)
carouselPosition = 0;
else if (removingLastElement)
carouselPosition = Carousel.Position - 1;
if (Carousel.Loop)
{
UpdateAdapter();
ScrollToPosition(carouselPosition);
}
}
//If we are adding a new item make sure to maintain the CurrentItemPosition
else if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add
&& currentItemPosition != -1)
{
carouselPosition = currentItemPosition;
}
// Queue the rest up for later after the Adapter has finished processing item change notifications
if (removingAnyPrevious)
{
return;
}
Device.BeginInvokeOnMainThread(() =>
{
SetCurrentItem(carouselPosition);
UpdatePosition(carouselPosition);
//If we are adding or removing the last item we need to update
//the inset that we give to items so they are centered
if (e.NewStartingIndex == count - 1 || removingLastElement)
{
UpdateItemDecoration();
}
UpdateVisualStates();
});
}
void UpdateItemDecoration()
{
if (_itemDecoration != null)
RemoveItemDecoration(_itemDecoration);
_itemDecoration = CreateSpacingDecoration(ItemsLayout);
AddItemDecoration(_itemDecoration);
}
void UpdateInitialPosition()
{
int itemCount = 0;
int position;
if (Carousel.CurrentItem != null)
{
var carouselEnumerator = Carousel.ItemsSource.GetEnumerator();
var items = new List<object>();
while (carouselEnumerator.MoveNext())
{
items.Add(carouselEnumerator.Current);
itemCount++;
}
position = items.IndexOf(Carousel.CurrentItem);
Carousel.Position = position;
}
else
position = Carousel.Position;
_oldPosition = position;
SetCurrentItem(_oldPosition);
var index = Carousel.Loop ? LoopedPosition(itemCount) + _oldPosition : _oldPosition;
ScrollHelper.JumpScrollToPosition(index, Microsoft.Maui.Controls.ScrollToPosition.Center);
_gotoPosition = -1;
}
int LoopedPosition(int itemCount)
{
if (itemCount == 0)
{
return 0;
}
var loopScale = CarouselViewLoopManager.LoopScale / 2;
return loopScale - (loopScale % itemCount);
}
void UpdatePositionFromVisibilityChanges()
{
if (_isVisible != Carousel.IsVisible)
UpdateInitialPosition();
_isVisible = Carousel.IsVisible;
}
void UpdateVisualStates()
{
if (!(GetLayoutManager() is LinearLayoutManager layoutManager))
return;
var first = layoutManager.FindFirstVisibleItemPosition();
var last = layoutManager.FindLastVisibleItemPosition();
if (first == -1)
return;
var newViews = new List<View>();
var carouselPosition = this.CalculateCenterItemIndex(first, layoutManager, false);
var previousPosition = carouselPosition - 1;
var nextPosition = carouselPosition + 1;
for (int i = first; i <= last; i++)
{
var cell = layoutManager.FindViewByPosition(i);
if (!((cell as ItemContentView)?.VisualElementRenderer?.Element is View itemView))
return;
if (i == carouselPosition)
{
VisualStateManager.GoToState(itemView, FormsCarouselView.CurrentItemVisualState);
}
else if (i == previousPosition)
{
VisualStateManager.GoToState(itemView, FormsCarouselView.PreviousItemVisualState);
}
else if (i == nextPosition)
{
VisualStateManager.GoToState(itemView, FormsCarouselView.NextItemVisualState);
}
else
{
VisualStateManager.GoToState(itemView, FormsCarouselView.DefaultItemVisualState);
}
newViews.Add(itemView);
if (!Carousel.VisibleViews.Contains(itemView))
{
Carousel.VisibleViews.Add(itemView);
}
}
foreach (var itemView in _oldViews)
{
if (!newViews.Contains(itemView))
{
VisualStateManager.GoToState(itemView, FormsCarouselView.DefaultItemVisualState);
if (Carousel.VisibleViews.Contains(itemView))
{
Carousel.VisibleViews.Remove(itemView);
}
}
}
_oldViews = newViews;
}
void CarouselViewScrolled(object sender, ItemsViewScrolledEventArgs e)
{
if (!_initialized || !_isVisible)
return;
_noNeedForScroll = false;
var index = e.CenterItemIndex;
if (Carousel?.Loop == true)
{
index = GetCarouselViewCurrentIndex(index);
}
if (index == -1)
return;
UpdatePosition(index);
UpdateVisualStates();
}
int GetCarouselViewCurrentIndex(int index)
{
var centeredView = this.GetCenteredView();
if (centeredView is ItemContentView templatedCell)
{
var bContext = templatedCell?.Element?.BindingContext;
index = ItemsViewAdapter.GetPositionForItem(bContext);
}
else
{
return -1;
}
return index;
}
void UpdatePosition(int position)
{
var carouselPosition = Carousel.Position;
// We arrived center
if (position == _gotoPosition)
_gotoPosition = -1;
if (_gotoPosition == -1 && carouselPosition != position)
Carousel.SetValueFromRenderer(FormsCarouselView.PositionProperty, position);
}
void SetCurrentItem(int carouselPosition)
{
if (ItemsViewAdapter?.ItemsSource?.Count == 0)
return;
var item = ItemsViewAdapter.ItemsSource.GetItem(carouselPosition);
Carousel.SetValueFromRenderer(FormsCarouselView.CurrentItemProperty, item);
}
void UpdateFromCurrentItem()
{
var currentItemPosition = ItemsViewAdapter.ItemsSource.GetPosition(Carousel.CurrentItem);
var carouselPosition = Carousel.Position;
if (_gotoPosition == -1 && currentItemPosition != carouselPosition)
{
_gotoPosition = currentItemPosition;
Carousel.ScrollTo(currentItemPosition, position: Microsoft.Maui.Controls.ScrollToPosition.Center, animate: Carousel.AnimateCurrentItemChanges);
}
}
void UpdateFromPosition()
{
if (!_initialized)
{
_carouselViewLoopManager.AddPendingScrollTo(new ScrollToRequestEventArgs(Carousel.Position, -1, Microsoft.Maui.Controls.ScrollToPosition.Center, false));
}
var itemCount = ItemsViewAdapter?.ItemsSource.Count ?? 0;
var carouselPosition = Carousel.Position;
if (itemCount == 0)
{
//we are trying to set a position but our Collection doesn't have items still
_oldPosition = carouselPosition;
return;
}
if (carouselPosition >= itemCount || carouselPosition < 0)
throw new IndexOutOfRangeException($"Can't set CarouselView to position {carouselPosition}. ItemsSource has {itemCount} items.");
if (carouselPosition == _gotoPosition)
_gotoPosition = -1;
if (_noNeedForScroll)
{
_noNeedForScroll = false;
return;
}
var centerPosition = GetCarouselViewCurrentIndex(carouselPosition);
if (_gotoPosition == -1 && !Carousel.IsDragging && !Carousel.IsScrolling && centerPosition != carouselPosition)
{
_gotoPosition = carouselPosition;
Carousel.ScrollTo(carouselPosition, position: Microsoft.Maui.Controls.ScrollToPosition.Center, animate: Carousel.AnimatePositionChanges);
}
SetCurrentItem(carouselPosition);
}
void AddLayoutListener()
{
if (_carouselViewLayoutListener != null)
return;
_carouselViewLayoutListener = new CarouselViewwOnGlobalLayoutListener();
_carouselViewLayoutListener.LayoutReady += LayoutReady;
ViewTreeObserver.AddOnGlobalLayoutListener(_carouselViewLayoutListener);
}
void LayoutReady(object sender, EventArgs e)
{
if (!_initialized)
{
Carousel.Scrolled += CarouselViewScrolled;
if (Carousel.Loop)
{
_carouselViewLoopManager.CenterIfNeeded(this, IsHorizontal);
_carouselViewLoopManager.CheckPendingScrollToEvents(this);
}
_initialized = true;
_isVisible = Carousel.IsVisible;
}
UpdatePositionFromVisibilityChanges();
UpdateVisualStates();
}
void ClearLayoutListener()
{
if (_carouselViewLayoutListener == null)
return;
ViewTreeObserver?.RemoveOnGlobalLayoutListener(_carouselViewLayoutListener);
_carouselViewLayoutListener.LayoutReady -= LayoutReady;
_carouselViewLayoutListener = null;
}
class CarouselViewOnScrollListener : RecyclerViewScrollListener<ItemsView, IItemsViewSource>
{
readonly FormsCarouselView _carouselView;
readonly CarouselViewLoopManager _carouselViewLoopManager;
public CarouselViewOnScrollListener(ItemsView itemsView, ItemsViewAdapter<ItemsView, IItemsViewSource> itemsViewAdapter, CarouselViewLoopManager carouselViewLoopManager) : base(itemsView, itemsViewAdapter, true)
{
_carouselView = itemsView as FormsCarouselView;
_carouselViewLoopManager = carouselViewLoopManager;
}
public override void OnScrollStateChanged(RecyclerView recyclerView, int state)
{
base.OnScrollStateChanged(recyclerView, state);
if (_carouselView.IsSwipeEnabled)
{
if (state == ScrollStateDragging)
_carouselView.SetIsDragging(true);
else
_carouselView.SetIsDragging(false);
}
_carouselView.IsScrolling = state != ScrollStateIdle;
}
public override void OnScrolled(RecyclerView recyclerView, int dx, int dy)
{
base.OnScrolled(recyclerView, dx, dy);
if (_carouselView.Loop)
{
//We could have a race condition where we are scrolling our collection to center the first item
//We save that ScrollToEventARgs and call it again
_carouselViewLoopManager.CheckPendingScrollToEvents(recyclerView);
}
}
protected override (int First, int Center, int Last) GetVisibleItemsIndex(RecyclerView recyclerView)
{
var firstVisibleItemIndex = -1;
var lastVisibleItemIndex = -1;
var centerItemIndex = -1;
if (recyclerView.GetLayoutManager() is LinearLayoutManager linearLayoutManager)
{
var firstView = recyclerView.FindViewHolderForAdapterPosition(linearLayoutManager.FindFirstVisibleItemPosition());
var lastView = recyclerView.FindViewHolderForAdapterPosition(linearLayoutManager.FindLastVisibleItemPosition());
var centerView = recyclerView.GetCenteredView();
firstVisibleItemIndex = GetIndexFromTemplatedCell(firstView?.ItemView);
lastVisibleItemIndex = GetIndexFromTemplatedCell(lastView?.ItemView);
centerItemIndex = GetIndexFromTemplatedCell(centerView);
}
return (firstVisibleItemIndex, centerItemIndex, lastVisibleItemIndex);
}
int GetIndexFromTemplatedCell(global::Android.Views.View view)
{
int itemIndex = -1;
if (view is ItemContentView templatedCell)
{
var bContext = templatedCell?.Element?.BindingContext;
itemIndex = ItemsViewAdapter.GetPositionForItem(bContext);
}
return itemIndex;
}
}
class CarouselViewwOnGlobalLayoutListener : Java.Lang.Object, ViewTreeObserver.IOnGlobalLayoutListener
{
public EventHandler<EventArgs> LayoutReady;
public void OnGlobalLayout()
{
LayoutReady?.Invoke(this, new EventArgs());
}
}
internal class CarouselViewLoopManager
{
public const int LoopScale = 16384;
IItemsViewSource _itemsSource;
readonly Queue<ScrollToRequestEventArgs> _pendingScrollTo = new Queue<ScrollToRequestEventArgs>();
public void CenterIfNeeded(RecyclerView recyclerView, bool isHorizontal)
{
if (!(recyclerView.GetLayoutManager() is LinearLayoutManager linearLayoutManager))
return;
var itemSourceCount = _itemsSource.Count;
var firstCompletelyItemVisible = linearLayoutManager.FindFirstCompletelyVisibleItemPosition();
var offSet = recyclerView.ComputeHorizontalScrollOffset();
if (!isHorizontal)
offSet = recyclerView.ComputeVerticalScrollOffset();
if (firstCompletelyItemVisible == 0)
linearLayoutManager.ScrollToPositionWithOffset(itemSourceCount, -offSet);
}
public void CheckPendingScrollToEvents(RecyclerView recyclerView)
{
if (!(recyclerView is CarouselViewRenderer carouselViewRenderer))
return;
if (_pendingScrollTo.TryDequeue(out ScrollToRequestEventArgs scrollToRequestEventArgs))
carouselViewRenderer.ScrollTo(scrollToRequestEventArgs);
}
public void AddPendingScrollTo(ScrollToRequestEventArgs args) => _pendingScrollTo.Enqueue(args);
public int GetGoToIndex(RecyclerView recyclerView, int carouselPosition, int newPosition)
{
if (!(recyclerView.GetLayoutManager() is LinearLayoutManager linearLayoutManager))
return -1;
var currentCarouselPosition = carouselPosition;
var itemSourceCount = _itemsSource.Count;
var diffToStart = currentCarouselPosition + (itemSourceCount - newPosition);
var diffToEnd = itemSourceCount - currentCarouselPosition + newPosition;
var centerView = recyclerView.GetCenteredView();
if (centerView == null)
return -1;
var centerPosition = linearLayoutManager.GetPosition(centerView);
var increment = currentCarouselPosition - newPosition;
var incrementAbs = System.Math.Abs(increment);
int goToPosition;
if (diffToStart < incrementAbs)
goToPosition = centerPosition - diffToStart;
else if (diffToEnd < incrementAbs)
goToPosition = centerPosition + diffToEnd;
else
goToPosition = centerPosition - increment;
return goToPosition;
}
public void SetItemsSource(IItemsViewSource itemsSource) => _itemsSource = itemsSource;
}
}
}

Просмотреть файл

@ -0,0 +1,18 @@
using AndroidX.RecyclerView.Widget;
using AView = Android.Views.View;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
internal class CenterSnapHelper : NongreedySnapHelper
{
public override AView FindSnapView(RecyclerView.LayoutManager layoutManager)
{
if (!CanSnap)
{
return null;
}
return base.FindSnapView(layoutManager);
}
}
}

Просмотреть файл

@ -0,0 +1,11 @@
using Android.Content;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
public class CollectionViewRenderer : GroupableItemsViewRenderer<GroupableItemsView, GroupableItemsViewAdapter<GroupableItemsView, IGroupableItemsViewSource>, IGroupableItemsViewSource>
{
public CollectionViewRenderer(Context context) : base(context)
{
}
}
}

Просмотреть файл

@ -3,7 +3,7 @@ using AndroidX.RecyclerView.Widget;
using static AndroidX.RecyclerView.Widget.RecyclerView; using static AndroidX.RecyclerView.Widget.RecyclerView;
using Object = Java.Lang.Object; using Object = Java.Lang.Object;
namespace Xamarin.Forms.Platform.Android namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{ {
internal class DataChangeObserver : RecyclerView.AdapterDataObserver internal class DataChangeObserver : RecyclerView.AdapterDataObserver
{ {

Просмотреть файл

@ -2,7 +2,7 @@ using AndroidX.RecyclerView.Widget;
using ALayoutDirection = Android.Views.LayoutDirection; using ALayoutDirection = Android.Views.LayoutDirection;
using AView = Android.Views.View; using AView = Android.Views.View;
namespace Xamarin.Forms.Platform.Android namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{ {
internal abstract class EdgeSnapHelper : NongreedySnapHelper internal abstract class EdgeSnapHelper : NongreedySnapHelper
{ {

Просмотреть файл

@ -0,0 +1,47 @@
using System;
namespace Microsoft.Maui.Controls.Compatibility.Platform.Android
{
sealed internal class EmptySource : IItemsViewSource
{
public int Count => 0;
public bool HasHeader { get; set; }
public bool HasFooter { get; set; }
public void Dispose()
{
}
public bool IsHeader(int index)
{
return HasHeader && index == 0;
}
public bool IsFooter(int index)
{
if (!HasFooter)
{
return false;
}
if (HasHeader)
{
return index == 1;
}
return index == 0;
}
public int GetPosition(object item)
{
return -1;
}
public object GetItem(int position)
{
throw new IndexOutOfRangeException("IItemsViewSource is empty");
}
}
}

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше