commit bc3d9c44655b1af93e0b4e9b7ed6ef3bc8652cfe Author: Kyle Spearrin Date: Mon May 2 02:52:09 2016 -0400 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..9dd28bcc9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,199 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +build/ +bld/ +[Bb]in/ +[Oo]bj/ + +# Visual Studo 2015 cache/options directory +.vs/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding addin-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml + +# 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 +# TODO: 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 + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config + +# Windows Azure Build Output +csx/ +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Others +*.[Cc]ache +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +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 + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Other +project.lock.json \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 000000000..beb088964 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# bitwarden mobile diff --git a/bitwarden-mobile.sln b/bitwarden-mobile.sln new file mode 100644 index 000000000..ed7bf28d4 --- /dev/null +++ b/bitwarden-mobile.sln @@ -0,0 +1,256 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25123.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Android", "src\Android\Android.csproj", "{04B18ED2-B76D-4947-8474-191F8FD2B5E0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iOS", "src\iOS\iOS.csproj", "{1F78403F-9A28-405B-9289-B9DBEB55F074}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "App", "src\App\App.csproj", "{B490C5DA-639E-4994-ABD2-54222B8A348E}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{0D790714-ECF8-4A83-BE4A-E9C84DD1BB5D}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{EC730FD9-F623-4B6C-B503-95CDCFBCF277}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "App.Test", "test\App.Test\App.Test.csproj", "{A300DCE1-8D10-4267-B96A-CB01AEB7C220}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Ad-Hoc|Any CPU = Ad-Hoc|Any CPU + Ad-Hoc|ARM = Ad-Hoc|ARM + Ad-Hoc|iPhone = Ad-Hoc|iPhone + Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator + Ad-Hoc|x64 = Ad-Hoc|x64 + Ad-Hoc|x86 = Ad-Hoc|x86 + AppStore|Any CPU = AppStore|Any CPU + AppStore|ARM = AppStore|ARM + AppStore|iPhone = AppStore|iPhone + AppStore|iPhoneSimulator = AppStore|iPhoneSimulator + AppStore|x64 = AppStore|x64 + AppStore|x86 = AppStore|x86 + Debug|Any CPU = Debug|Any CPU + Debug|ARM = Debug|ARM + 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|iPhone = Release|iPhone + Release|iPhoneSimulator = Release|iPhoneSimulator + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Ad-Hoc|ARM.Build.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Ad-Hoc|ARM.Deploy.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Ad-Hoc|x64.Build.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Ad-Hoc|x64.Deploy.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Ad-Hoc|x86.Build.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Ad-Hoc|x86.Deploy.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.AppStore|Any CPU.ActiveCfg = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.AppStore|Any CPU.Build.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.AppStore|Any CPU.Deploy.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.AppStore|ARM.ActiveCfg = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.AppStore|ARM.Build.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.AppStore|ARM.Deploy.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.AppStore|iPhone.ActiveCfg = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.AppStore|iPhone.Build.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.AppStore|iPhone.Deploy.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.AppStore|x64.ActiveCfg = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.AppStore|x64.Build.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.AppStore|x64.Deploy.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.AppStore|x86.ActiveCfg = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.AppStore|x86.Build.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.AppStore|x86.Deploy.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Debug|ARM.ActiveCfg = Debug|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Debug|ARM.Build.0 = Debug|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Debug|ARM.Deploy.0 = Debug|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Debug|iPhone.Build.0 = Debug|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Debug|iPhone.Deploy.0 = Debug|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Debug|x64.ActiveCfg = Debug|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Debug|x64.Build.0 = Debug|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Debug|x64.Deploy.0 = Debug|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Debug|x86.ActiveCfg = Debug|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Debug|x86.Build.0 = Debug|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Debug|x86.Deploy.0 = Debug|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Release|Any CPU.Build.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Release|Any CPU.Deploy.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Release|ARM.ActiveCfg = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Release|ARM.Build.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Release|ARM.Deploy.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Release|iPhone.ActiveCfg = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Release|iPhone.Build.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Release|iPhone.Deploy.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Release|x64.ActiveCfg = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Release|x64.Build.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Release|x64.Deploy.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Release|x86.ActiveCfg = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Release|x86.Build.0 = Release|Any CPU + {04B18ED2-B76D-4947-8474-191F8FD2B5E0}.Release|x86.Deploy.0 = Release|Any CPU + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Ad-Hoc|x64.ActiveCfg = Ad-Hoc|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.AppStore|ARM.ActiveCfg = AppStore|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.AppStore|iPhone.ActiveCfg = AppStore|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.AppStore|iPhone.Build.0 = AppStore|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator + {1F78403F-9A28-405B-9289-B9DBEB55F074}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator + {1F78403F-9A28-405B-9289-B9DBEB55F074}.AppStore|x64.ActiveCfg = AppStore|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.AppStore|x86.ActiveCfg = AppStore|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Debug|Any CPU.ActiveCfg = Debug|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Debug|ARM.ActiveCfg = Debug|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Debug|iPhone.ActiveCfg = Debug|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Debug|iPhone.Build.0 = Debug|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Debug|x64.ActiveCfg = Debug|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Debug|x86.ActiveCfg = Debug|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Release|Any CPU.ActiveCfg = Release|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Release|ARM.ActiveCfg = Release|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Release|iPhone.ActiveCfg = Release|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Release|iPhone.Build.0 = Release|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Release|x64.ActiveCfg = Release|iPhone + {1F78403F-9A28-405B-9289-B9DBEB55F074}.Release|x86.ActiveCfg = Release|iPhone + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Ad-Hoc|ARM.Build.0 = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Ad-Hoc|x64.Build.0 = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Ad-Hoc|x86.Build.0 = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.AppStore|Any CPU.ActiveCfg = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.AppStore|Any CPU.Build.0 = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.AppStore|ARM.ActiveCfg = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.AppStore|ARM.Build.0 = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.AppStore|iPhone.ActiveCfg = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.AppStore|iPhone.Build.0 = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.AppStore|x64.ActiveCfg = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.AppStore|x64.Build.0 = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.AppStore|x86.ActiveCfg = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.AppStore|x86.Build.0 = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Debug|ARM.ActiveCfg = Debug|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Debug|ARM.Build.0 = Debug|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Debug|iPhone.Build.0 = Debug|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Debug|x64.ActiveCfg = Debug|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Debug|x64.Build.0 = Debug|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Debug|x86.ActiveCfg = Debug|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Debug|x86.Build.0 = Debug|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Release|Any CPU.Build.0 = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Release|ARM.ActiveCfg = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Release|ARM.Build.0 = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Release|iPhone.ActiveCfg = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Release|iPhone.Build.0 = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Release|x64.ActiveCfg = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Release|x64.Build.0 = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Release|x86.ActiveCfg = Release|Any CPU + {B490C5DA-639E-4994-ABD2-54222B8A348E}.Release|x86.Build.0 = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Ad-Hoc|ARM.Build.0 = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Ad-Hoc|x64.Build.0 = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Ad-Hoc|x86.Build.0 = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.AppStore|Any CPU.ActiveCfg = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.AppStore|Any CPU.Build.0 = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.AppStore|ARM.ActiveCfg = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.AppStore|ARM.Build.0 = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.AppStore|iPhone.ActiveCfg = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.AppStore|iPhone.Build.0 = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.AppStore|x64.ActiveCfg = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.AppStore|x64.Build.0 = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.AppStore|x86.ActiveCfg = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.AppStore|x86.Build.0 = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Debug|ARM.ActiveCfg = Debug|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Debug|ARM.Build.0 = Debug|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Debug|iPhone.Build.0 = Debug|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Debug|x64.ActiveCfg = Debug|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Debug|x64.Build.0 = Debug|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Debug|x86.ActiveCfg = Debug|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Debug|x86.Build.0 = Debug|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Release|Any CPU.Build.0 = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Release|ARM.ActiveCfg = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Release|ARM.Build.0 = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Release|iPhone.ActiveCfg = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Release|iPhone.Build.0 = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Release|x64.ActiveCfg = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Release|x64.Build.0 = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Release|x86.ActiveCfg = Release|Any CPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {04B18ED2-B76D-4947-8474-191F8FD2B5E0} = {EC730FD9-F623-4B6C-B503-95CDCFBCF277} + {1F78403F-9A28-405B-9289-B9DBEB55F074} = {EC730FD9-F623-4B6C-B503-95CDCFBCF277} + {B490C5DA-639E-4994-ABD2-54222B8A348E} = {EC730FD9-F623-4B6C-B503-95CDCFBCF277} + {A300DCE1-8D10-4267-B96A-CB01AEB7C220} = {0D790714-ECF8-4A83-BE4A-E9C84DD1BB5D} + EndGlobalSection +EndGlobal diff --git a/src/Android/Android.csproj b/src/Android/Android.csproj new file mode 100644 index 000000000..92328d4d5 --- /dev/null +++ b/src/Android/Android.csproj @@ -0,0 +1,208 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {04B18ED2-B76D-4947-8474-191F8FD2B5E0} + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Library + Properties + Bit.Android + Bit.Android + 512 + true + Resources\Resource.Designer.cs + Off + Properties\AndroidManifest.xml + True + v6.0 + armeabi,armeabi-v7a,x86 + + + + + + + + + True + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + True + None + + True + False + False + + + + + Xamarin + False + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + False + SdkOnly + + True + False + False + + + + + Xamarin + False + False + False + False + False + + + + ..\..\packages\Xamarin.Forms.2.2.0.31\lib\MonoAndroid10\FormsViewGroup.dll + True + + + ..\..\packages\CommonServiceLocator.1.3\lib\portable-net4+sl5+netcore45+wpa81+wp8\Microsoft.Practices.ServiceLocation.dll + True + + + ..\..\packages\Unity.3.5.1405-prerelease\lib\portable-net45+wp80+win8+wpa81+MonoAndroid10+MonoTouch10\Microsoft.Practices.Unity.dll + True + + + ..\..\packages\modernhttpclient.2.4.2\lib\MonoAndroid\ModernHttpClient.dll + True + + + + + ..\..\packages\modernhttpclient.2.4.2\lib\MonoAndroid\OkHttp.dll + True + + + ..\..\packages\sqlite-net-pcl.1.1.1\lib\portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10\SQLite-net.dll + True + + + + + + + ..\..\packages\Xamarin.Android.Support.Animated.Vector.Drawable.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.Animated.Vector.Drawable.dll + True + + + ..\..\packages\Xamarin.Android.Support.Design.23.3.0\lib\MonoAndroid43\Xamarin.Android.Support.Design.dll + True + + + ..\..\packages\Xamarin.Android.Support.v4.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v4.dll + True + + + ..\..\packages\Xamarin.Android.Support.v7.AppCompat.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.AppCompat.dll + True + + + ..\..\packages\Xamarin.Android.Support.v7.CardView.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.CardView.dll + True + + + ..\..\packages\Xamarin.Android.Support.v7.MediaRouter.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.MediaRouter.dll + True + + + ..\..\packages\Xamarin.Android.Support.v7.RecyclerView.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.RecyclerView.dll + True + + + ..\..\packages\Xamarin.Android.Support.Vector.Drawable.23.3.0\lib\MonoAndroid403\Xamarin.Android.Support.Vector.Drawable.dll + True + + + ..\..\packages\Xamarin.Forms.2.2.0.31\lib\MonoAndroid10\Xamarin.Forms.Core.dll + True + + + ..\..\packages\Xamarin.Forms.2.2.0.31\lib\MonoAndroid10\Xamarin.Forms.Platform.dll + True + + + ..\..\packages\Xamarin.Forms.2.2.0.31\lib\MonoAndroid10\Xamarin.Forms.Platform.Android.dll + True + + + ..\..\packages\Xamarin.Forms.2.2.0.31\lib\MonoAndroid10\Xamarin.Forms.Xaml.dll + True + + + ..\..\packages\XLabs.IoC.2.0.5782\lib\portable-net45+netcore45+wp8+MonoAndroid1+MonoTouch1\XLabs.Ioc.dll + True + + + ..\..\packages\XLabs.IoC.Unity.2.0.5782\lib\portable-net45+netcore45+wp8+MonoAndroid1+MonoTouch1\XLabs.Ioc.Unity.dll + True + + + + + + + + + + + + + + + + + + + + + + + + + + {b490c5da-639e-4994-abd2-54222b8a348e} + App + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + + + + \ No newline at end of file diff --git a/src/Android/Assets/AboutAssets.txt b/src/Android/Assets/AboutAssets.txt new file mode 100644 index 000000000..5ddf08729 --- /dev/null +++ b/src/Android/Assets/AboutAssets.txt @@ -0,0 +1,19 @@ +Any raw assets you want to be deployed with your application can be placed in +this directory (and child directories) and given a Build Action of "AndroidAsset". + +These files will be deployed with you package and will be accessible using Android's +AssetManager, like this: + +public class ReadAsset : Activity +{ + protected override void OnCreate (Bundle bundle) + { + base.OnCreate (bundle); + + InputStream input = Assets.Open ("my_asset.txt"); + } +} + +Additionally, some Android functions will automatically load asset files: + +Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); diff --git a/src/Android/MainActivity.cs b/src/Android/MainActivity.cs new file mode 100644 index 000000000..087c27eb7 --- /dev/null +++ b/src/Android/MainActivity.cs @@ -0,0 +1,52 @@ +using System; + +using Android.App; +using Android.Content.PM; +using Android.Runtime; +using Android.Views; +using Android.Widget; +using Android.OS; +using Microsoft.Practices.Unity; +using Bit.App.Abstractions; +using Bit.App.Services; +using XLabs.Ioc.Unity; +using XLabs.Ioc; +using Bit.Android.Services; + +namespace Bit.Android +{ + [Activity(Label = "bitwarden", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] + public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity + { + protected override void OnCreate(Bundle bundle) + { + base.OnCreate(bundle); + + global::Xamarin.Forms.Forms.Init(this, bundle); + + if(!Resolver.IsSet) + { + SetIoc(); + } + + LoadApplication(new App.App(Resolver.Resolve(), Resolver.Resolve())); + } + + private void SetIoc() + { + var container = new UnityContainer(); + + container + .RegisterType(new ContainerControlledLifetimeManager()) + .RegisterType(new ContainerControlledLifetimeManager()) + .RegisterType(new ContainerControlledLifetimeManager()) + .RegisterType(new ContainerControlledLifetimeManager()) + .RegisterType(new ContainerControlledLifetimeManager()) + .RegisterType(new ContainerControlledLifetimeManager()) + .RegisterType(new ContainerControlledLifetimeManager()) + .RegisterType(new ContainerControlledLifetimeManager()); + + Resolver.SetResolver(new UnityResolver(container)); + } + } +} diff --git a/src/Android/Properties/AndroidManifest.xml b/src/Android/Properties/AndroidManifest.xml new file mode 100644 index 000000000..eda2b1f0c --- /dev/null +++ b/src/Android/Properties/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/Android/Properties/AssemblyInfo.cs b/src/Android/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..079abf04d --- /dev/null +++ b/src/Android/Properties/AssemblyInfo.cs @@ -0,0 +1,34 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using Android.App; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Bit.Android")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("bitwarden")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: ComVisible(false)] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] + +// Add some common permissions, these can be removed if not needed +[assembly: UsesPermission(Android.Manifest.Permission.Internet)] +[assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)] diff --git a/src/Android/Resources/AboutResources.txt b/src/Android/Resources/AboutResources.txt new file mode 100644 index 000000000..cb30f20b1 --- /dev/null +++ b/src/Android/Resources/AboutResources.txt @@ -0,0 +1,50 @@ +Images, layout descriptions, binary blobs and string dictionaries can be included +in your application as resource files. Various Android APIs are designed to +operate on the resource IDs instead of dealing with images, strings or binary blobs +directly. + +For example, a sample Android app that contains a user interface layout (main.xml), +an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png) +would keep its resources in the "Resources" directory of the application: + +Resources/ + drawable-hdpi/ + icon.png + + drawable-ldpi/ + icon.png + + drawable-mdpi/ + icon.png + + layout/ + main.xml + + values/ + strings.xml + +In order to get the build system to recognize Android resources, set the build action to +"AndroidResource". The native Android APIs do not operate directly with filenames, but +instead operate on resource IDs. When you compile an Android application that uses resources, +the build system will package the resources for distribution and generate a class called +"Resource" that contains the tokens for each one of the resources included. For example, +for the above Resources layout, this is what the Resource class would expose: + +public class Resource { + public class drawable { + public const int icon = 0x123; + } + + public class layout { + public const int main = 0x456; + } + + public class strings { + public const int first_string = 0xabc; + public const int second_string = 0xbcd; + } +} + +You would then use R.drawable.icon to reference the drawable/icon.png file, or Resource.layout.main +to reference the layout/main.xml file, or Resource.strings.first_string to reference the first +string in the dictionary file values/strings.xml. diff --git a/src/Android/Resources/Resource.Designer.cs b/src/Android/Resources/Resource.Designer.cs new file mode 100644 index 000000000..a202801b9 --- /dev/null +++ b/src/Android/Resources/Resource.Designer.cs @@ -0,0 +1,5919 @@ +#pragma warning disable 1591 +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +[assembly: global::Android.Runtime.ResourceDesignerAttribute("Bit.Android.Resource", IsApplication=true)] + +namespace Bit.Android +{ + + + [System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")] + public partial class Resource + { + + static Resource() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + public static void UpdateIdValues() + { + global::ModernHttpClient.Resource.String.library_name = global::Bit.Android.Resource.String.library_name; + global::Xamarin.Forms.Platform.Android.Resource.Attribute.actionBarSize = global::Bit.Android.Resource.Attribute.actionBarSize; + } + + public partial class Animation + { + + // aapt resource value: 0x7f040000 + public const int abc_fade_in = 2130968576; + + // aapt resource value: 0x7f040001 + public const int abc_fade_out = 2130968577; + + // aapt resource value: 0x7f040002 + public const int abc_grow_fade_in_from_bottom = 2130968578; + + // aapt resource value: 0x7f040003 + public const int abc_popup_enter = 2130968579; + + // aapt resource value: 0x7f040004 + public const int abc_popup_exit = 2130968580; + + // aapt resource value: 0x7f040005 + public const int abc_shrink_fade_out_from_bottom = 2130968581; + + // aapt resource value: 0x7f040006 + public const int abc_slide_in_bottom = 2130968582; + + // aapt resource value: 0x7f040007 + public const int abc_slide_in_top = 2130968583; + + // aapt resource value: 0x7f040008 + public const int abc_slide_out_bottom = 2130968584; + + // aapt resource value: 0x7f040009 + public const int abc_slide_out_top = 2130968585; + + // aapt resource value: 0x7f04000a + public const int design_bottom_sheet_slide_in = 2130968586; + + // aapt resource value: 0x7f04000b + public const int design_bottom_sheet_slide_out = 2130968587; + + // aapt resource value: 0x7f04000c + public const int design_fab_in = 2130968588; + + // aapt resource value: 0x7f04000d + public const int design_fab_out = 2130968589; + + // aapt resource value: 0x7f04000e + public const int design_snackbar_in = 2130968590; + + // aapt resource value: 0x7f04000f + public const int design_snackbar_out = 2130968591; + + static Animation() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Animation() + { + } + } + + public partial class Attribute + { + + // aapt resource value: 0x7f010004 + public const int MediaRouteControllerWindowBackground = 2130771972; + + // aapt resource value: 0x7f010061 + public const int actionBarDivider = 2130772065; + + // aapt resource value: 0x7f010062 + public const int actionBarItemBackground = 2130772066; + + // aapt resource value: 0x7f01005b + public const int actionBarPopupTheme = 2130772059; + + // aapt resource value: 0x7f010060 + public const int actionBarSize = 2130772064; + + // aapt resource value: 0x7f01005d + public const int actionBarSplitStyle = 2130772061; + + // aapt resource value: 0x7f01005c + public const int actionBarStyle = 2130772060; + + // aapt resource value: 0x7f010057 + public const int actionBarTabBarStyle = 2130772055; + + // aapt resource value: 0x7f010056 + public const int actionBarTabStyle = 2130772054; + + // aapt resource value: 0x7f010058 + public const int actionBarTabTextStyle = 2130772056; + + // aapt resource value: 0x7f01005e + public const int actionBarTheme = 2130772062; + + // aapt resource value: 0x7f01005f + public const int actionBarWidgetTheme = 2130772063; + + // aapt resource value: 0x7f01007b + public const int actionButtonStyle = 2130772091; + + // aapt resource value: 0x7f010077 + public const int actionDropDownStyle = 2130772087; + + // aapt resource value: 0x7f0100c9 + public const int actionLayout = 2130772169; + + // aapt resource value: 0x7f010063 + public const int actionMenuTextAppearance = 2130772067; + + // aapt resource value: 0x7f010064 + public const int actionMenuTextColor = 2130772068; + + // aapt resource value: 0x7f010067 + public const int actionModeBackground = 2130772071; + + // aapt resource value: 0x7f010066 + public const int actionModeCloseButtonStyle = 2130772070; + + // aapt resource value: 0x7f010069 + public const int actionModeCloseDrawable = 2130772073; + + // aapt resource value: 0x7f01006b + public const int actionModeCopyDrawable = 2130772075; + + // aapt resource value: 0x7f01006a + public const int actionModeCutDrawable = 2130772074; + + // aapt resource value: 0x7f01006f + public const int actionModeFindDrawable = 2130772079; + + // aapt resource value: 0x7f01006c + public const int actionModePasteDrawable = 2130772076; + + // aapt resource value: 0x7f010071 + public const int actionModePopupWindowStyle = 2130772081; + + // aapt resource value: 0x7f01006d + public const int actionModeSelectAllDrawable = 2130772077; + + // aapt resource value: 0x7f01006e + public const int actionModeShareDrawable = 2130772078; + + // aapt resource value: 0x7f010068 + public const int actionModeSplitBackground = 2130772072; + + // aapt resource value: 0x7f010065 + public const int actionModeStyle = 2130772069; + + // aapt resource value: 0x7f010070 + public const int actionModeWebSearchDrawable = 2130772080; + + // aapt resource value: 0x7f010059 + public const int actionOverflowButtonStyle = 2130772057; + + // aapt resource value: 0x7f01005a + public const int actionOverflowMenuStyle = 2130772058; + + // aapt resource value: 0x7f0100cb + public const int actionProviderClass = 2130772171; + + // aapt resource value: 0x7f0100ca + public const int actionViewClass = 2130772170; + + // aapt resource value: 0x7f010083 + public const int activityChooserViewStyle = 2130772099; + + // aapt resource value: 0x7f0100a6 + public const int alertDialogButtonGroupStyle = 2130772134; + + // aapt resource value: 0x7f0100a7 + public const int alertDialogCenterButtons = 2130772135; + + // aapt resource value: 0x7f0100a5 + public const int alertDialogStyle = 2130772133; + + // aapt resource value: 0x7f0100a8 + public const int alertDialogTheme = 2130772136; + + // aapt resource value: 0x7f0100ba + public const int allowStacking = 2130772154; + + // aapt resource value: 0x7f0100c1 + public const int arrowHeadLength = 2130772161; + + // aapt resource value: 0x7f0100c2 + public const int arrowShaftLength = 2130772162; + + // aapt resource value: 0x7f0100ad + public const int autoCompleteTextViewStyle = 2130772141; + + // aapt resource value: 0x7f010032 + public const int background = 2130772018; + + // aapt resource value: 0x7f010034 + public const int backgroundSplit = 2130772020; + + // aapt resource value: 0x7f010033 + public const int backgroundStacked = 2130772019; + + // aapt resource value: 0x7f0100f5 + public const int backgroundTint = 2130772213; + + // aapt resource value: 0x7f0100f6 + public const int backgroundTintMode = 2130772214; + + // aapt resource value: 0x7f0100c3 + public const int barLength = 2130772163; + + // aapt resource value: 0x7f0100fb + public const int behavior_hideable = 2130772219; + + // aapt resource value: 0x7f010121 + public const int behavior_overlapTop = 2130772257; + + // aapt resource value: 0x7f0100fa + public const int behavior_peekHeight = 2130772218; + + // aapt resource value: 0x7f010117 + public const int borderWidth = 2130772247; + + // aapt resource value: 0x7f010080 + public const int borderlessButtonStyle = 2130772096; + + // aapt resource value: 0x7f010111 + public const int bottomSheetDialogTheme = 2130772241; + + // aapt resource value: 0x7f010112 + public const int bottomSheetStyle = 2130772242; + + // aapt resource value: 0x7f01007d + public const int buttonBarButtonStyle = 2130772093; + + // aapt resource value: 0x7f0100ab + public const int buttonBarNegativeButtonStyle = 2130772139; + + // aapt resource value: 0x7f0100ac + public const int buttonBarNeutralButtonStyle = 2130772140; + + // aapt resource value: 0x7f0100aa + public const int buttonBarPositiveButtonStyle = 2130772138; + + // aapt resource value: 0x7f01007c + public const int buttonBarStyle = 2130772092; + + // aapt resource value: 0x7f010045 + public const int buttonPanelSideLayout = 2130772037; + + // aapt resource value: 0x7f0100ae + public const int buttonStyle = 2130772142; + + // aapt resource value: 0x7f0100af + public const int buttonStyleSmall = 2130772143; + + // aapt resource value: 0x7f0100bb + public const int buttonTint = 2130772155; + + // aapt resource value: 0x7f0100bc + public const int buttonTintMode = 2130772156; + + // aapt resource value: 0x7f01001b + public const int cardBackgroundColor = 2130771995; + + // aapt resource value: 0x7f01001c + public const int cardCornerRadius = 2130771996; + + // aapt resource value: 0x7f01001d + public const int cardElevation = 2130771997; + + // aapt resource value: 0x7f01001e + public const int cardMaxElevation = 2130771998; + + // aapt resource value: 0x7f010020 + public const int cardPreventCornerOverlap = 2130772000; + + // aapt resource value: 0x7f01001f + public const int cardUseCompatPadding = 2130771999; + + // aapt resource value: 0x7f0100b0 + public const int checkboxStyle = 2130772144; + + // aapt resource value: 0x7f0100b1 + public const int checkedTextViewStyle = 2130772145; + + // aapt resource value: 0x7f0100d3 + public const int closeIcon = 2130772179; + + // aapt resource value: 0x7f010042 + public const int closeItemLayout = 2130772034; + + // aapt resource value: 0x7f0100ec + public const int collapseContentDescription = 2130772204; + + // aapt resource value: 0x7f0100eb + public const int collapseIcon = 2130772203; + + // aapt resource value: 0x7f010108 + public const int collapsedTitleGravity = 2130772232; + + // aapt resource value: 0x7f010104 + public const int collapsedTitleTextAppearance = 2130772228; + + // aapt resource value: 0x7f0100bd + public const int color = 2130772157; + + // aapt resource value: 0x7f01009e + public const int colorAccent = 2130772126; + + // aapt resource value: 0x7f0100a2 + public const int colorButtonNormal = 2130772130; + + // aapt resource value: 0x7f0100a0 + public const int colorControlActivated = 2130772128; + + // aapt resource value: 0x7f0100a1 + public const int colorControlHighlight = 2130772129; + + // aapt resource value: 0x7f01009f + public const int colorControlNormal = 2130772127; + + // aapt resource value: 0x7f01009c + public const int colorPrimary = 2130772124; + + // aapt resource value: 0x7f01009d + public const int colorPrimaryDark = 2130772125; + + // aapt resource value: 0x7f0100a3 + public const int colorSwitchThumbNormal = 2130772131; + + // aapt resource value: 0x7f0100d8 + public const int commitIcon = 2130772184; + + // aapt resource value: 0x7f01003d + public const int contentInsetEnd = 2130772029; + + // aapt resource value: 0x7f01003e + public const int contentInsetLeft = 2130772030; + + // aapt resource value: 0x7f01003f + public const int contentInsetRight = 2130772031; + + // aapt resource value: 0x7f01003c + public const int contentInsetStart = 2130772028; + + // aapt resource value: 0x7f010021 + public const int contentPadding = 2130772001; + + // aapt resource value: 0x7f010025 + public const int contentPaddingBottom = 2130772005; + + // aapt resource value: 0x7f010022 + public const int contentPaddingLeft = 2130772002; + + // aapt resource value: 0x7f010023 + public const int contentPaddingRight = 2130772003; + + // aapt resource value: 0x7f010024 + public const int contentPaddingTop = 2130772004; + + // aapt resource value: 0x7f010105 + public const int contentScrim = 2130772229; + + // aapt resource value: 0x7f0100a4 + public const int controlBackground = 2130772132; + + // aapt resource value: 0x7f010137 + public const int counterEnabled = 2130772279; + + // aapt resource value: 0x7f010138 + public const int counterMaxLength = 2130772280; + + // aapt resource value: 0x7f01013a + public const int counterOverflowTextAppearance = 2130772282; + + // aapt resource value: 0x7f010139 + public const int counterTextAppearance = 2130772281; + + // aapt resource value: 0x7f010035 + public const int customNavigationLayout = 2130772021; + + // aapt resource value: 0x7f0100d2 + public const int defaultQueryHint = 2130772178; + + // aapt resource value: 0x7f010075 + public const int dialogPreferredPadding = 2130772085; + + // aapt resource value: 0x7f010074 + public const int dialogTheme = 2130772084; + + // aapt resource value: 0x7f01002b + public const int displayOptions = 2130772011; + + // aapt resource value: 0x7f010031 + public const int divider = 2130772017; + + // aapt resource value: 0x7f010082 + public const int dividerHorizontal = 2130772098; + + // aapt resource value: 0x7f0100c7 + public const int dividerPadding = 2130772167; + + // aapt resource value: 0x7f010081 + public const int dividerVertical = 2130772097; + + // aapt resource value: 0x7f0100bf + public const int drawableSize = 2130772159; + + // aapt resource value: 0x7f010026 + public const int drawerArrowStyle = 2130772006; + + // aapt resource value: 0x7f010094 + public const int dropDownListViewStyle = 2130772116; + + // aapt resource value: 0x7f010078 + public const int dropdownListPreferredItemHeight = 2130772088; + + // aapt resource value: 0x7f010089 + public const int editTextBackground = 2130772105; + + // aapt resource value: 0x7f010088 + public const int editTextColor = 2130772104; + + // aapt resource value: 0x7f0100b2 + public const int editTextStyle = 2130772146; + + // aapt resource value: 0x7f010040 + public const int elevation = 2130772032; + + // aapt resource value: 0x7f010135 + public const int errorEnabled = 2130772277; + + // aapt resource value: 0x7f010136 + public const int errorTextAppearance = 2130772278; + + // aapt resource value: 0x7f010044 + public const int expandActivityOverflowButtonDrawable = 2130772036; + + // aapt resource value: 0x7f0100f7 + public const int expanded = 2130772215; + + // aapt resource value: 0x7f010109 + public const int expandedTitleGravity = 2130772233; + + // aapt resource value: 0x7f0100fe + public const int expandedTitleMargin = 2130772222; + + // aapt resource value: 0x7f010102 + public const int expandedTitleMarginBottom = 2130772226; + + // aapt resource value: 0x7f010101 + public const int expandedTitleMarginEnd = 2130772225; + + // aapt resource value: 0x7f0100ff + public const int expandedTitleMarginStart = 2130772223; + + // aapt resource value: 0x7f010100 + public const int expandedTitleMarginTop = 2130772224; + + // aapt resource value: 0x7f010103 + public const int expandedTitleTextAppearance = 2130772227; + + // aapt resource value: 0x7f01001a + public const int externalRouteEnabledDrawable = 2130771994; + + // aapt resource value: 0x7f010115 + public const int fabSize = 2130772245; + + // aapt resource value: 0x7f010119 + public const int foregroundInsidePadding = 2130772249; + + // aapt resource value: 0x7f0100c0 + public const int gapBetweenBars = 2130772160; + + // aapt resource value: 0x7f0100d4 + public const int goIcon = 2130772180; + + // aapt resource value: 0x7f01011f + public const int headerLayout = 2130772255; + + // aapt resource value: 0x7f010027 + public const int height = 2130772007; + + // aapt resource value: 0x7f01003b + public const int hideOnContentScroll = 2130772027; + + // aapt resource value: 0x7f01013b + public const int hintAnimationEnabled = 2130772283; + + // aapt resource value: 0x7f010134 + public const int hintEnabled = 2130772276; + + // aapt resource value: 0x7f010133 + public const int hintTextAppearance = 2130772275; + + // aapt resource value: 0x7f01007a + public const int homeAsUpIndicator = 2130772090; + + // aapt resource value: 0x7f010036 + public const int homeLayout = 2130772022; + + // aapt resource value: 0x7f01002f + public const int icon = 2130772015; + + // aapt resource value: 0x7f0100d0 + public const int iconifiedByDefault = 2130772176; + + // aapt resource value: 0x7f01008a + public const int imageButtonStyle = 2130772106; + + // aapt resource value: 0x7f010038 + public const int indeterminateProgressStyle = 2130772024; + + // aapt resource value: 0x7f010043 + public const int initialActivityCount = 2130772035; + + // aapt resource value: 0x7f010120 + public const int insetForeground = 2130772256; + + // aapt resource value: 0x7f010028 + public const int isLightTheme = 2130772008; + + // aapt resource value: 0x7f01011d + public const int itemBackground = 2130772253; + + // aapt resource value: 0x7f01011b + public const int itemIconTint = 2130772251; + + // aapt resource value: 0x7f01003a + public const int itemPadding = 2130772026; + + // aapt resource value: 0x7f01011e + public const int itemTextAppearance = 2130772254; + + // aapt resource value: 0x7f01011c + public const int itemTextColor = 2130772252; + + // aapt resource value: 0x7f01010b + public const int keylines = 2130772235; + + // aapt resource value: 0x7f0100cf + public const int layout = 2130772175; + + // aapt resource value: 0x7f010000 + public const int layoutManager = 2130771968; + + // aapt resource value: 0x7f01010e + public const int layout_anchor = 2130772238; + + // aapt resource value: 0x7f010110 + public const int layout_anchorGravity = 2130772240; + + // aapt resource value: 0x7f01010d + public const int layout_behavior = 2130772237; + + // aapt resource value: 0x7f0100fc + public const int layout_collapseMode = 2130772220; + + // aapt resource value: 0x7f0100fd + public const int layout_collapseParallaxMultiplier = 2130772221; + + // aapt resource value: 0x7f01010f + public const int layout_keyline = 2130772239; + + // aapt resource value: 0x7f0100f8 + public const int layout_scrollFlags = 2130772216; + + // aapt resource value: 0x7f0100f9 + public const int layout_scrollInterpolator = 2130772217; + + // aapt resource value: 0x7f01009b + public const int listChoiceBackgroundIndicator = 2130772123; + + // aapt resource value: 0x7f010076 + public const int listDividerAlertDialog = 2130772086; + + // aapt resource value: 0x7f010049 + public const int listItemLayout = 2130772041; + + // aapt resource value: 0x7f010046 + public const int listLayout = 2130772038; + + // aapt resource value: 0x7f010095 + public const int listPopupWindowStyle = 2130772117; + + // aapt resource value: 0x7f01008f + public const int listPreferredItemHeight = 2130772111; + + // aapt resource value: 0x7f010091 + public const int listPreferredItemHeightLarge = 2130772113; + + // aapt resource value: 0x7f010090 + public const int listPreferredItemHeightSmall = 2130772112; + + // aapt resource value: 0x7f010092 + public const int listPreferredItemPaddingLeft = 2130772114; + + // aapt resource value: 0x7f010093 + public const int listPreferredItemPaddingRight = 2130772115; + + // aapt resource value: 0x7f010030 + public const int logo = 2130772016; + + // aapt resource value: 0x7f0100ef + public const int logoDescription = 2130772207; + + // aapt resource value: 0x7f010122 + public const int maxActionInlineWidth = 2130772258; + + // aapt resource value: 0x7f0100ea + public const int maxButtonHeight = 2130772202; + + // aapt resource value: 0x7f0100c5 + public const int measureWithLargestChild = 2130772165; + + // aapt resource value: 0x7f010005 + public const int mediaRouteAudioTrackDrawable = 2130771973; + + // aapt resource value: 0x7f010006 + public const int mediaRouteBluetoothIconDrawable = 2130771974; + + // aapt resource value: 0x7f010007 + public const int mediaRouteButtonStyle = 2130771975; + + // aapt resource value: 0x7f010008 + public const int mediaRouteCastDrawable = 2130771976; + + // aapt resource value: 0x7f010009 + public const int mediaRouteChooserPrimaryTextStyle = 2130771977; + + // aapt resource value: 0x7f01000a + public const int mediaRouteChooserSecondaryTextStyle = 2130771978; + + // aapt resource value: 0x7f01000b + public const int mediaRouteCloseDrawable = 2130771979; + + // aapt resource value: 0x7f01000c + public const int mediaRouteCollapseGroupDrawable = 2130771980; + + // aapt resource value: 0x7f01000d + public const int mediaRouteConnectingDrawable = 2130771981; + + // aapt resource value: 0x7f01000e + public const int mediaRouteControllerPrimaryTextStyle = 2130771982; + + // aapt resource value: 0x7f01000f + public const int mediaRouteControllerSecondaryTextStyle = 2130771983; + + // aapt resource value: 0x7f010010 + public const int mediaRouteControllerTitleTextStyle = 2130771984; + + // aapt resource value: 0x7f010011 + public const int mediaRouteDefaultIconDrawable = 2130771985; + + // aapt resource value: 0x7f010012 + public const int mediaRouteExpandGroupDrawable = 2130771986; + + // aapt resource value: 0x7f010013 + public const int mediaRouteOffDrawable = 2130771987; + + // aapt resource value: 0x7f010014 + public const int mediaRouteOnDrawable = 2130771988; + + // aapt resource value: 0x7f010015 + public const int mediaRoutePauseDrawable = 2130771989; + + // aapt resource value: 0x7f010016 + public const int mediaRoutePlayDrawable = 2130771990; + + // aapt resource value: 0x7f010017 + public const int mediaRouteSpeakerGroupIconDrawable = 2130771991; + + // aapt resource value: 0x7f010018 + public const int mediaRouteSpeakerIconDrawable = 2130771992; + + // aapt resource value: 0x7f010019 + public const int mediaRouteTvIconDrawable = 2130771993; + + // aapt resource value: 0x7f01011a + public const int menu = 2130772250; + + // aapt resource value: 0x7f010047 + public const int multiChoiceItemLayout = 2130772039; + + // aapt resource value: 0x7f0100ee + public const int navigationContentDescription = 2130772206; + + // aapt resource value: 0x7f0100ed + public const int navigationIcon = 2130772205; + + // aapt resource value: 0x7f01002a + public const int navigationMode = 2130772010; + + // aapt resource value: 0x7f0100cd + public const int overlapAnchor = 2130772173; + + // aapt resource value: 0x7f0100f3 + public const int paddingEnd = 2130772211; + + // aapt resource value: 0x7f0100f2 + public const int paddingStart = 2130772210; + + // aapt resource value: 0x7f010098 + public const int panelBackground = 2130772120; + + // aapt resource value: 0x7f01009a + public const int panelMenuListTheme = 2130772122; + + // aapt resource value: 0x7f010099 + public const int panelMenuListWidth = 2130772121; + + // aapt resource value: 0x7f010086 + public const int popupMenuStyle = 2130772102; + + // aapt resource value: 0x7f010041 + public const int popupTheme = 2130772033; + + // aapt resource value: 0x7f010087 + public const int popupWindowStyle = 2130772103; + + // aapt resource value: 0x7f0100cc + public const int preserveIconSpacing = 2130772172; + + // aapt resource value: 0x7f010116 + public const int pressedTranslationZ = 2130772246; + + // aapt resource value: 0x7f010039 + public const int progressBarPadding = 2130772025; + + // aapt resource value: 0x7f010037 + public const int progressBarStyle = 2130772023; + + // aapt resource value: 0x7f0100da + public const int queryBackground = 2130772186; + + // aapt resource value: 0x7f0100d1 + public const int queryHint = 2130772177; + + // aapt resource value: 0x7f0100b3 + public const int radioButtonStyle = 2130772147; + + // aapt resource value: 0x7f0100b4 + public const int ratingBarStyle = 2130772148; + + // aapt resource value: 0x7f0100b5 + public const int ratingBarStyleIndicator = 2130772149; + + // aapt resource value: 0x7f0100b6 + public const int ratingBarStyleSmall = 2130772150; + + // aapt resource value: 0x7f010002 + public const int reverseLayout = 2130771970; + + // aapt resource value: 0x7f010114 + public const int rippleColor = 2130772244; + + // aapt resource value: 0x7f0100d6 + public const int searchHintIcon = 2130772182; + + // aapt resource value: 0x7f0100d5 + public const int searchIcon = 2130772181; + + // aapt resource value: 0x7f01008e + public const int searchViewStyle = 2130772110; + + // aapt resource value: 0x7f0100b7 + public const int seekBarStyle = 2130772151; + + // aapt resource value: 0x7f01007e + public const int selectableItemBackground = 2130772094; + + // aapt resource value: 0x7f01007f + public const int selectableItemBackgroundBorderless = 2130772095; + + // aapt resource value: 0x7f0100c8 + public const int showAsAction = 2130772168; + + // aapt resource value: 0x7f0100c6 + public const int showDividers = 2130772166; + + // aapt resource value: 0x7f0100e2 + public const int showText = 2130772194; + + // aapt resource value: 0x7f010048 + public const int singleChoiceItemLayout = 2130772040; + + // aapt resource value: 0x7f010001 + public const int spanCount = 2130771969; + + // aapt resource value: 0x7f0100be + public const int spinBars = 2130772158; + + // aapt resource value: 0x7f010079 + public const int spinnerDropDownItemStyle = 2130772089; + + // aapt resource value: 0x7f0100b8 + public const int spinnerStyle = 2130772152; + + // aapt resource value: 0x7f0100e1 + public const int splitTrack = 2130772193; + + // aapt resource value: 0x7f01004a + public const int srcCompat = 2130772042; + + // aapt resource value: 0x7f010003 + public const int stackFromEnd = 2130771971; + + // aapt resource value: 0x7f0100ce + public const int state_above_anchor = 2130772174; + + // aapt resource value: 0x7f01010c + public const int statusBarBackground = 2130772236; + + // aapt resource value: 0x7f010106 + public const int statusBarScrim = 2130772230; + + // aapt resource value: 0x7f0100db + public const int submitBackground = 2130772187; + + // aapt resource value: 0x7f01002c + public const int subtitle = 2130772012; + + // aapt resource value: 0x7f0100e4 + public const int subtitleTextAppearance = 2130772196; + + // aapt resource value: 0x7f0100f1 + public const int subtitleTextColor = 2130772209; + + // aapt resource value: 0x7f01002e + public const int subtitleTextStyle = 2130772014; + + // aapt resource value: 0x7f0100d9 + public const int suggestionRowLayout = 2130772185; + + // aapt resource value: 0x7f0100df + public const int switchMinWidth = 2130772191; + + // aapt resource value: 0x7f0100e0 + public const int switchPadding = 2130772192; + + // aapt resource value: 0x7f0100b9 + public const int switchStyle = 2130772153; + + // aapt resource value: 0x7f0100de + public const int switchTextAppearance = 2130772190; + + // aapt resource value: 0x7f010126 + public const int tabBackground = 2130772262; + + // aapt resource value: 0x7f010125 + public const int tabContentStart = 2130772261; + + // aapt resource value: 0x7f010128 + public const int tabGravity = 2130772264; + + // aapt resource value: 0x7f010123 + public const int tabIndicatorColor = 2130772259; + + // aapt resource value: 0x7f010124 + public const int tabIndicatorHeight = 2130772260; + + // aapt resource value: 0x7f01012a + public const int tabMaxWidth = 2130772266; + + // aapt resource value: 0x7f010129 + public const int tabMinWidth = 2130772265; + + // aapt resource value: 0x7f010127 + public const int tabMode = 2130772263; + + // aapt resource value: 0x7f010132 + public const int tabPadding = 2130772274; + + // aapt resource value: 0x7f010131 + public const int tabPaddingBottom = 2130772273; + + // aapt resource value: 0x7f010130 + public const int tabPaddingEnd = 2130772272; + + // aapt resource value: 0x7f01012e + public const int tabPaddingStart = 2130772270; + + // aapt resource value: 0x7f01012f + public const int tabPaddingTop = 2130772271; + + // aapt resource value: 0x7f01012d + public const int tabSelectedTextColor = 2130772269; + + // aapt resource value: 0x7f01012b + public const int tabTextAppearance = 2130772267; + + // aapt resource value: 0x7f01012c + public const int tabTextColor = 2130772268; + + // aapt resource value: 0x7f01004b + public const int textAllCaps = 2130772043; + + // aapt resource value: 0x7f010072 + public const int textAppearanceLargePopupMenu = 2130772082; + + // aapt resource value: 0x7f010096 + public const int textAppearanceListItem = 2130772118; + + // aapt resource value: 0x7f010097 + public const int textAppearanceListItemSmall = 2130772119; + + // aapt resource value: 0x7f01008c + public const int textAppearanceSearchResultSubtitle = 2130772108; + + // aapt resource value: 0x7f01008b + public const int textAppearanceSearchResultTitle = 2130772107; + + // aapt resource value: 0x7f010073 + public const int textAppearanceSmallPopupMenu = 2130772083; + + // aapt resource value: 0x7f0100a9 + public const int textColorAlertDialogListItem = 2130772137; + + // aapt resource value: 0x7f010113 + public const int textColorError = 2130772243; + + // aapt resource value: 0x7f01008d + public const int textColorSearchUrl = 2130772109; + + // aapt resource value: 0x7f0100f4 + public const int theme = 2130772212; + + // aapt resource value: 0x7f0100c4 + public const int thickness = 2130772164; + + // aapt resource value: 0x7f0100dd + public const int thumbTextPadding = 2130772189; + + // aapt resource value: 0x7f010029 + public const int title = 2130772009; + + // aapt resource value: 0x7f01010a + public const int titleEnabled = 2130772234; + + // aapt resource value: 0x7f0100e9 + public const int titleMarginBottom = 2130772201; + + // aapt resource value: 0x7f0100e7 + public const int titleMarginEnd = 2130772199; + + // aapt resource value: 0x7f0100e6 + public const int titleMarginStart = 2130772198; + + // aapt resource value: 0x7f0100e8 + public const int titleMarginTop = 2130772200; + + // aapt resource value: 0x7f0100e5 + public const int titleMargins = 2130772197; + + // aapt resource value: 0x7f0100e3 + public const int titleTextAppearance = 2130772195; + + // aapt resource value: 0x7f0100f0 + public const int titleTextColor = 2130772208; + + // aapt resource value: 0x7f01002d + public const int titleTextStyle = 2130772013; + + // aapt resource value: 0x7f010107 + public const int toolbarId = 2130772231; + + // aapt resource value: 0x7f010085 + public const int toolbarNavigationButtonStyle = 2130772101; + + // aapt resource value: 0x7f010084 + public const int toolbarStyle = 2130772100; + + // aapt resource value: 0x7f0100dc + public const int track = 2130772188; + + // aapt resource value: 0x7f010118 + public const int useCompatPadding = 2130772248; + + // aapt resource value: 0x7f0100d7 + public const int voiceIcon = 2130772183; + + // aapt resource value: 0x7f01004c + public const int windowActionBar = 2130772044; + + // aapt resource value: 0x7f01004e + public const int windowActionBarOverlay = 2130772046; + + // aapt resource value: 0x7f01004f + public const int windowActionModeOverlay = 2130772047; + + // aapt resource value: 0x7f010053 + public const int windowFixedHeightMajor = 2130772051; + + // aapt resource value: 0x7f010051 + public const int windowFixedHeightMinor = 2130772049; + + // aapt resource value: 0x7f010050 + public const int windowFixedWidthMajor = 2130772048; + + // aapt resource value: 0x7f010052 + public const int windowFixedWidthMinor = 2130772050; + + // aapt resource value: 0x7f010054 + public const int windowMinWidthMajor = 2130772052; + + // aapt resource value: 0x7f010055 + public const int windowMinWidthMinor = 2130772053; + + // aapt resource value: 0x7f01004d + public const int windowNoTitle = 2130772045; + + static Attribute() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Attribute() + { + } + } + + public partial class Boolean + { + + // aapt resource value: 0x7f0c0003 + public const int abc_action_bar_embed_tabs = 2131492867; + + // aapt resource value: 0x7f0c0001 + public const int abc_action_bar_embed_tabs_pre_jb = 2131492865; + + // aapt resource value: 0x7f0c0004 + public const int abc_action_bar_expanded_action_views_exclusive = 2131492868; + + // aapt resource value: 0x7f0c0000 + public const int abc_allow_stacked_button_bar = 2131492864; + + // aapt resource value: 0x7f0c0005 + public const int abc_config_actionMenuItemAllCaps = 2131492869; + + // aapt resource value: 0x7f0c0002 + public const int abc_config_allowActionMenuItemTextWithIcon = 2131492866; + + // aapt resource value: 0x7f0c0006 + public const int abc_config_closeDialogWhenTouchOutside = 2131492870; + + // aapt resource value: 0x7f0c0007 + public const int abc_config_showMenuShortcutsWhenKeyboardPresent = 2131492871; + + static Boolean() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Boolean() + { + } + } + + public partial class Color + { + + // aapt resource value: 0x7f0b0048 + public const int abc_background_cache_hint_selector_material_dark = 2131427400; + + // aapt resource value: 0x7f0b0049 + public const int abc_background_cache_hint_selector_material_light = 2131427401; + + // aapt resource value: 0x7f0b004a + public const int abc_color_highlight_material = 2131427402; + + // aapt resource value: 0x7f0b0004 + public const int abc_input_method_navigation_guard = 2131427332; + + // aapt resource value: 0x7f0b004b + public const int abc_primary_text_disable_only_material_dark = 2131427403; + + // aapt resource value: 0x7f0b004c + public const int abc_primary_text_disable_only_material_light = 2131427404; + + // aapt resource value: 0x7f0b004d + public const int abc_primary_text_material_dark = 2131427405; + + // aapt resource value: 0x7f0b004e + public const int abc_primary_text_material_light = 2131427406; + + // aapt resource value: 0x7f0b004f + public const int abc_search_url_text = 2131427407; + + // aapt resource value: 0x7f0b0005 + public const int abc_search_url_text_normal = 2131427333; + + // aapt resource value: 0x7f0b0006 + public const int abc_search_url_text_pressed = 2131427334; + + // aapt resource value: 0x7f0b0007 + public const int abc_search_url_text_selected = 2131427335; + + // aapt resource value: 0x7f0b0050 + public const int abc_secondary_text_material_dark = 2131427408; + + // aapt resource value: 0x7f0b0051 + public const int abc_secondary_text_material_light = 2131427409; + + // aapt resource value: 0x7f0b0008 + public const int accent_material_dark = 2131427336; + + // aapt resource value: 0x7f0b0009 + public const int accent_material_light = 2131427337; + + // aapt resource value: 0x7f0b000a + public const int background_floating_material_dark = 2131427338; + + // aapt resource value: 0x7f0b000b + public const int background_floating_material_light = 2131427339; + + // aapt resource value: 0x7f0b000c + public const int background_material_dark = 2131427340; + + // aapt resource value: 0x7f0b000d + public const int background_material_light = 2131427341; + + // aapt resource value: 0x7f0b000e + public const int bright_foreground_disabled_material_dark = 2131427342; + + // aapt resource value: 0x7f0b000f + public const int bright_foreground_disabled_material_light = 2131427343; + + // aapt resource value: 0x7f0b0010 + public const int bright_foreground_inverse_material_dark = 2131427344; + + // aapt resource value: 0x7f0b0011 + public const int bright_foreground_inverse_material_light = 2131427345; + + // aapt resource value: 0x7f0b0012 + public const int bright_foreground_material_dark = 2131427346; + + // aapt resource value: 0x7f0b0013 + public const int bright_foreground_material_light = 2131427347; + + // aapt resource value: 0x7f0b0014 + public const int button_material_dark = 2131427348; + + // aapt resource value: 0x7f0b0015 + public const int button_material_light = 2131427349; + + // aapt resource value: 0x7f0b0000 + public const int cardview_dark_background = 2131427328; + + // aapt resource value: 0x7f0b0001 + public const int cardview_light_background = 2131427329; + + // aapt resource value: 0x7f0b0002 + public const int cardview_shadow_end_color = 2131427330; + + // aapt resource value: 0x7f0b0003 + public const int cardview_shadow_start_color = 2131427331; + + // aapt resource value: 0x7f0b003e + public const int design_fab_shadow_end_color = 2131427390; + + // aapt resource value: 0x7f0b003f + public const int design_fab_shadow_mid_color = 2131427391; + + // aapt resource value: 0x7f0b0040 + public const int design_fab_shadow_start_color = 2131427392; + + // aapt resource value: 0x7f0b0041 + public const int design_fab_stroke_end_inner_color = 2131427393; + + // aapt resource value: 0x7f0b0042 + public const int design_fab_stroke_end_outer_color = 2131427394; + + // aapt resource value: 0x7f0b0043 + public const int design_fab_stroke_top_inner_color = 2131427395; + + // aapt resource value: 0x7f0b0044 + public const int design_fab_stroke_top_outer_color = 2131427396; + + // aapt resource value: 0x7f0b0045 + public const int design_snackbar_background_color = 2131427397; + + // aapt resource value: 0x7f0b0046 + public const int design_textinput_error_color_dark = 2131427398; + + // aapt resource value: 0x7f0b0047 + public const int design_textinput_error_color_light = 2131427399; + + // aapt resource value: 0x7f0b0016 + public const int dim_foreground_disabled_material_dark = 2131427350; + + // aapt resource value: 0x7f0b0017 + public const int dim_foreground_disabled_material_light = 2131427351; + + // aapt resource value: 0x7f0b0018 + public const int dim_foreground_material_dark = 2131427352; + + // aapt resource value: 0x7f0b0019 + public const int dim_foreground_material_light = 2131427353; + + // aapt resource value: 0x7f0b001a + public const int foreground_material_dark = 2131427354; + + // aapt resource value: 0x7f0b001b + public const int foreground_material_light = 2131427355; + + // aapt resource value: 0x7f0b001c + public const int highlighted_text_material_dark = 2131427356; + + // aapt resource value: 0x7f0b001d + public const int highlighted_text_material_light = 2131427357; + + // aapt resource value: 0x7f0b001e + public const int hint_foreground_material_dark = 2131427358; + + // aapt resource value: 0x7f0b001f + public const int hint_foreground_material_light = 2131427359; + + // aapt resource value: 0x7f0b0020 + public const int material_blue_grey_800 = 2131427360; + + // aapt resource value: 0x7f0b0021 + public const int material_blue_grey_900 = 2131427361; + + // aapt resource value: 0x7f0b0022 + public const int material_blue_grey_950 = 2131427362; + + // aapt resource value: 0x7f0b0023 + public const int material_deep_teal_200 = 2131427363; + + // aapt resource value: 0x7f0b0024 + public const int material_deep_teal_500 = 2131427364; + + // aapt resource value: 0x7f0b0025 + public const int material_grey_100 = 2131427365; + + // aapt resource value: 0x7f0b0026 + public const int material_grey_300 = 2131427366; + + // aapt resource value: 0x7f0b0027 + public const int material_grey_50 = 2131427367; + + // aapt resource value: 0x7f0b0028 + public const int material_grey_600 = 2131427368; + + // aapt resource value: 0x7f0b0029 + public const int material_grey_800 = 2131427369; + + // aapt resource value: 0x7f0b002a + public const int material_grey_850 = 2131427370; + + // aapt resource value: 0x7f0b002b + public const int material_grey_900 = 2131427371; + + // aapt resource value: 0x7f0b002c + public const int primary_dark_material_dark = 2131427372; + + // aapt resource value: 0x7f0b002d + public const int primary_dark_material_light = 2131427373; + + // aapt resource value: 0x7f0b002e + public const int primary_material_dark = 2131427374; + + // aapt resource value: 0x7f0b002f + public const int primary_material_light = 2131427375; + + // aapt resource value: 0x7f0b0030 + public const int primary_text_default_material_dark = 2131427376; + + // aapt resource value: 0x7f0b0031 + public const int primary_text_default_material_light = 2131427377; + + // aapt resource value: 0x7f0b0032 + public const int primary_text_disabled_material_dark = 2131427378; + + // aapt resource value: 0x7f0b0033 + public const int primary_text_disabled_material_light = 2131427379; + + // aapt resource value: 0x7f0b0034 + public const int ripple_material_dark = 2131427380; + + // aapt resource value: 0x7f0b0035 + public const int ripple_material_light = 2131427381; + + // aapt resource value: 0x7f0b0036 + public const int secondary_text_default_material_dark = 2131427382; + + // aapt resource value: 0x7f0b0037 + public const int secondary_text_default_material_light = 2131427383; + + // aapt resource value: 0x7f0b0038 + public const int secondary_text_disabled_material_dark = 2131427384; + + // aapt resource value: 0x7f0b0039 + public const int secondary_text_disabled_material_light = 2131427385; + + // aapt resource value: 0x7f0b003a + public const int switch_thumb_disabled_material_dark = 2131427386; + + // aapt resource value: 0x7f0b003b + public const int switch_thumb_disabled_material_light = 2131427387; + + // aapt resource value: 0x7f0b0052 + public const int switch_thumb_material_dark = 2131427410; + + // aapt resource value: 0x7f0b0053 + public const int switch_thumb_material_light = 2131427411; + + // aapt resource value: 0x7f0b003c + public const int switch_thumb_normal_material_dark = 2131427388; + + // aapt resource value: 0x7f0b003d + public const int switch_thumb_normal_material_light = 2131427389; + + static Color() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Color() + { + } + } + + public partial class Dimension + { + + // aapt resource value: 0x7f060019 + public const int abc_action_bar_content_inset_material = 2131099673; + + // aapt resource value: 0x7f06000d + public const int abc_action_bar_default_height_material = 2131099661; + + // aapt resource value: 0x7f06001a + public const int abc_action_bar_default_padding_end_material = 2131099674; + + // aapt resource value: 0x7f06001b + public const int abc_action_bar_default_padding_start_material = 2131099675; + + // aapt resource value: 0x7f06001d + public const int abc_action_bar_icon_vertical_padding_material = 2131099677; + + // aapt resource value: 0x7f06001e + public const int abc_action_bar_overflow_padding_end_material = 2131099678; + + // aapt resource value: 0x7f06001f + public const int abc_action_bar_overflow_padding_start_material = 2131099679; + + // aapt resource value: 0x7f06000e + public const int abc_action_bar_progress_bar_size = 2131099662; + + // aapt resource value: 0x7f060020 + public const int abc_action_bar_stacked_max_height = 2131099680; + + // aapt resource value: 0x7f060021 + public const int abc_action_bar_stacked_tab_max_width = 2131099681; + + // aapt resource value: 0x7f060022 + public const int abc_action_bar_subtitle_bottom_margin_material = 2131099682; + + // aapt resource value: 0x7f060023 + public const int abc_action_bar_subtitle_top_margin_material = 2131099683; + + // aapt resource value: 0x7f060024 + public const int abc_action_button_min_height_material = 2131099684; + + // aapt resource value: 0x7f060025 + public const int abc_action_button_min_width_material = 2131099685; + + // aapt resource value: 0x7f060026 + public const int abc_action_button_min_width_overflow_material = 2131099686; + + // aapt resource value: 0x7f06000c + public const int abc_alert_dialog_button_bar_height = 2131099660; + + // aapt resource value: 0x7f060027 + public const int abc_button_inset_horizontal_material = 2131099687; + + // aapt resource value: 0x7f060028 + public const int abc_button_inset_vertical_material = 2131099688; + + // aapt resource value: 0x7f060029 + public const int abc_button_padding_horizontal_material = 2131099689; + + // aapt resource value: 0x7f06002a + public const int abc_button_padding_vertical_material = 2131099690; + + // aapt resource value: 0x7f060011 + public const int abc_config_prefDialogWidth = 2131099665; + + // aapt resource value: 0x7f06002b + public const int abc_control_corner_material = 2131099691; + + // aapt resource value: 0x7f06002c + public const int abc_control_inset_material = 2131099692; + + // aapt resource value: 0x7f06002d + public const int abc_control_padding_material = 2131099693; + + // aapt resource value: 0x7f060012 + public const int abc_dialog_fixed_height_major = 2131099666; + + // aapt resource value: 0x7f060013 + public const int abc_dialog_fixed_height_minor = 2131099667; + + // aapt resource value: 0x7f060014 + public const int abc_dialog_fixed_width_major = 2131099668; + + // aapt resource value: 0x7f060015 + public const int abc_dialog_fixed_width_minor = 2131099669; + + // aapt resource value: 0x7f06002e + public const int abc_dialog_list_padding_vertical_material = 2131099694; + + // aapt resource value: 0x7f060016 + public const int abc_dialog_min_width_major = 2131099670; + + // aapt resource value: 0x7f060017 + public const int abc_dialog_min_width_minor = 2131099671; + + // aapt resource value: 0x7f06002f + public const int abc_dialog_padding_material = 2131099695; + + // aapt resource value: 0x7f060030 + public const int abc_dialog_padding_top_material = 2131099696; + + // aapt resource value: 0x7f060031 + public const int abc_disabled_alpha_material_dark = 2131099697; + + // aapt resource value: 0x7f060032 + public const int abc_disabled_alpha_material_light = 2131099698; + + // aapt resource value: 0x7f060033 + public const int abc_dropdownitem_icon_width = 2131099699; + + // aapt resource value: 0x7f060034 + public const int abc_dropdownitem_text_padding_left = 2131099700; + + // aapt resource value: 0x7f060035 + public const int abc_dropdownitem_text_padding_right = 2131099701; + + // aapt resource value: 0x7f060036 + public const int abc_edit_text_inset_bottom_material = 2131099702; + + // aapt resource value: 0x7f060037 + public const int abc_edit_text_inset_horizontal_material = 2131099703; + + // aapt resource value: 0x7f060038 + public const int abc_edit_text_inset_top_material = 2131099704; + + // aapt resource value: 0x7f060039 + public const int abc_floating_window_z = 2131099705; + + // aapt resource value: 0x7f06003a + public const int abc_list_item_padding_horizontal_material = 2131099706; + + // aapt resource value: 0x7f06003b + public const int abc_panel_menu_list_width = 2131099707; + + // aapt resource value: 0x7f06003c + public const int abc_search_view_preferred_width = 2131099708; + + // aapt resource value: 0x7f060018 + public const int abc_search_view_text_min_width = 2131099672; + + // aapt resource value: 0x7f06003d + public const int abc_seekbar_track_background_height_material = 2131099709; + + // aapt resource value: 0x7f06003e + public const int abc_seekbar_track_progress_height_material = 2131099710; + + // aapt resource value: 0x7f06003f + public const int abc_select_dialog_padding_start_material = 2131099711; + + // aapt resource value: 0x7f06001c + public const int abc_switch_padding = 2131099676; + + // aapt resource value: 0x7f060040 + public const int abc_text_size_body_1_material = 2131099712; + + // aapt resource value: 0x7f060041 + public const int abc_text_size_body_2_material = 2131099713; + + // aapt resource value: 0x7f060042 + public const int abc_text_size_button_material = 2131099714; + + // aapt resource value: 0x7f060043 + public const int abc_text_size_caption_material = 2131099715; + + // aapt resource value: 0x7f060044 + public const int abc_text_size_display_1_material = 2131099716; + + // aapt resource value: 0x7f060045 + public const int abc_text_size_display_2_material = 2131099717; + + // aapt resource value: 0x7f060046 + public const int abc_text_size_display_3_material = 2131099718; + + // aapt resource value: 0x7f060047 + public const int abc_text_size_display_4_material = 2131099719; + + // aapt resource value: 0x7f060048 + public const int abc_text_size_headline_material = 2131099720; + + // aapt resource value: 0x7f060049 + public const int abc_text_size_large_material = 2131099721; + + // aapt resource value: 0x7f06004a + public const int abc_text_size_medium_material = 2131099722; + + // aapt resource value: 0x7f06004b + public const int abc_text_size_menu_material = 2131099723; + + // aapt resource value: 0x7f06004c + public const int abc_text_size_small_material = 2131099724; + + // aapt resource value: 0x7f06004d + public const int abc_text_size_subhead_material = 2131099725; + + // aapt resource value: 0x7f06000f + public const int abc_text_size_subtitle_material_toolbar = 2131099663; + + // aapt resource value: 0x7f06004e + public const int abc_text_size_title_material = 2131099726; + + // aapt resource value: 0x7f060010 + public const int abc_text_size_title_material_toolbar = 2131099664; + + // aapt resource value: 0x7f060009 + public const int cardview_compat_inset_shadow = 2131099657; + + // aapt resource value: 0x7f06000a + public const int cardview_default_elevation = 2131099658; + + // aapt resource value: 0x7f06000b + public const int cardview_default_radius = 2131099659; + + // aapt resource value: 0x7f06005f + public const int design_appbar_elevation = 2131099743; + + // aapt resource value: 0x7f060060 + public const int design_bottom_sheet_modal_elevation = 2131099744; + + // aapt resource value: 0x7f060061 + public const int design_bottom_sheet_modal_peek_height = 2131099745; + + // aapt resource value: 0x7f060062 + public const int design_fab_border_width = 2131099746; + + // aapt resource value: 0x7f060063 + public const int design_fab_elevation = 2131099747; + + // aapt resource value: 0x7f060064 + public const int design_fab_image_size = 2131099748; + + // aapt resource value: 0x7f060065 + public const int design_fab_size_mini = 2131099749; + + // aapt resource value: 0x7f060066 + public const int design_fab_size_normal = 2131099750; + + // aapt resource value: 0x7f060067 + public const int design_fab_translation_z_pressed = 2131099751; + + // aapt resource value: 0x7f060068 + public const int design_navigation_elevation = 2131099752; + + // aapt resource value: 0x7f060069 + public const int design_navigation_icon_padding = 2131099753; + + // aapt resource value: 0x7f06006a + public const int design_navigation_icon_size = 2131099754; + + // aapt resource value: 0x7f060057 + public const int design_navigation_max_width = 2131099735; + + // aapt resource value: 0x7f06006b + public const int design_navigation_padding_bottom = 2131099755; + + // aapt resource value: 0x7f06006c + public const int design_navigation_separator_vertical_padding = 2131099756; + + // aapt resource value: 0x7f060058 + public const int design_snackbar_action_inline_max_width = 2131099736; + + // aapt resource value: 0x7f060059 + public const int design_snackbar_background_corner_radius = 2131099737; + + // aapt resource value: 0x7f06006d + public const int design_snackbar_elevation = 2131099757; + + // aapt resource value: 0x7f06005a + public const int design_snackbar_extra_spacing_horizontal = 2131099738; + + // aapt resource value: 0x7f06005b + public const int design_snackbar_max_width = 2131099739; + + // aapt resource value: 0x7f06005c + public const int design_snackbar_min_width = 2131099740; + + // aapt resource value: 0x7f06006e + public const int design_snackbar_padding_horizontal = 2131099758; + + // aapt resource value: 0x7f06006f + public const int design_snackbar_padding_vertical = 2131099759; + + // aapt resource value: 0x7f06005d + public const int design_snackbar_padding_vertical_2lines = 2131099741; + + // aapt resource value: 0x7f060070 + public const int design_snackbar_text_size = 2131099760; + + // aapt resource value: 0x7f060071 + public const int design_tab_max_width = 2131099761; + + // aapt resource value: 0x7f06005e + public const int design_tab_scrollable_min_width = 2131099742; + + // aapt resource value: 0x7f060072 + public const int design_tab_text_size = 2131099762; + + // aapt resource value: 0x7f060073 + public const int design_tab_text_size_2line = 2131099763; + + // aapt resource value: 0x7f06004f + public const int disabled_alpha_material_dark = 2131099727; + + // aapt resource value: 0x7f060050 + public const int disabled_alpha_material_light = 2131099728; + + // aapt resource value: 0x7f060051 + public const int highlight_alpha_material_colored = 2131099729; + + // aapt resource value: 0x7f060052 + public const int highlight_alpha_material_dark = 2131099730; + + // aapt resource value: 0x7f060053 + public const int highlight_alpha_material_light = 2131099731; + + // aapt resource value: 0x7f060000 + public const int item_touch_helper_max_drag_scroll_per_frame = 2131099648; + + // aapt resource value: 0x7f060001 + public const int item_touch_helper_swipe_escape_max_velocity = 2131099649; + + // aapt resource value: 0x7f060002 + public const int item_touch_helper_swipe_escape_velocity = 2131099650; + + // aapt resource value: 0x7f060003 + public const int mr_controller_volume_group_list_item_height = 2131099651; + + // aapt resource value: 0x7f060004 + public const int mr_controller_volume_group_list_item_icon_size = 2131099652; + + // aapt resource value: 0x7f060005 + public const int mr_controller_volume_group_list_max_height = 2131099653; + + // aapt resource value: 0x7f060008 + public const int mr_controller_volume_group_list_padding_top = 2131099656; + + // aapt resource value: 0x7f060006 + public const int mr_dialog_fixed_width_major = 2131099654; + + // aapt resource value: 0x7f060007 + public const int mr_dialog_fixed_width_minor = 2131099655; + + // aapt resource value: 0x7f060054 + public const int notification_large_icon_height = 2131099732; + + // aapt resource value: 0x7f060055 + public const int notification_large_icon_width = 2131099733; + + // aapt resource value: 0x7f060056 + public const int notification_subtext_size = 2131099734; + + static Dimension() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Dimension() + { + } + } + + public partial class Drawable + { + + // aapt resource value: 0x7f020000 + public const int abc_ab_share_pack_mtrl_alpha = 2130837504; + + // aapt resource value: 0x7f020001 + public const int abc_action_bar_item_background_material = 2130837505; + + // aapt resource value: 0x7f020002 + public const int abc_btn_borderless_material = 2130837506; + + // aapt resource value: 0x7f020003 + public const int abc_btn_check_material = 2130837507; + + // aapt resource value: 0x7f020004 + public const int abc_btn_check_to_on_mtrl_000 = 2130837508; + + // aapt resource value: 0x7f020005 + public const int abc_btn_check_to_on_mtrl_015 = 2130837509; + + // aapt resource value: 0x7f020006 + public const int abc_btn_colored_material = 2130837510; + + // aapt resource value: 0x7f020007 + public const int abc_btn_default_mtrl_shape = 2130837511; + + // aapt resource value: 0x7f020008 + public const int abc_btn_radio_material = 2130837512; + + // aapt resource value: 0x7f020009 + public const int abc_btn_radio_to_on_mtrl_000 = 2130837513; + + // aapt resource value: 0x7f02000a + public const int abc_btn_radio_to_on_mtrl_015 = 2130837514; + + // aapt resource value: 0x7f02000b + public const int abc_btn_rating_star_off_mtrl_alpha = 2130837515; + + // aapt resource value: 0x7f02000c + public const int abc_btn_rating_star_on_mtrl_alpha = 2130837516; + + // aapt resource value: 0x7f02000d + public const int abc_btn_switch_to_on_mtrl_00001 = 2130837517; + + // aapt resource value: 0x7f02000e + public const int abc_btn_switch_to_on_mtrl_00012 = 2130837518; + + // aapt resource value: 0x7f02000f + public const int abc_cab_background_internal_bg = 2130837519; + + // aapt resource value: 0x7f020010 + public const int abc_cab_background_top_material = 2130837520; + + // aapt resource value: 0x7f020011 + public const int abc_cab_background_top_mtrl_alpha = 2130837521; + + // aapt resource value: 0x7f020012 + public const int abc_control_background_material = 2130837522; + + // aapt resource value: 0x7f020013 + public const int abc_dialog_material_background_dark = 2130837523; + + // aapt resource value: 0x7f020014 + public const int abc_dialog_material_background_light = 2130837524; + + // aapt resource value: 0x7f020015 + public const int abc_edit_text_material = 2130837525; + + // aapt resource value: 0x7f020016 + public const int abc_ic_ab_back_mtrl_am_alpha = 2130837526; + + // aapt resource value: 0x7f020017 + public const int abc_ic_clear_mtrl_alpha = 2130837527; + + // aapt resource value: 0x7f020018 + public const int abc_ic_commit_search_api_mtrl_alpha = 2130837528; + + // aapt resource value: 0x7f020019 + public const int abc_ic_go_search_api_mtrl_alpha = 2130837529; + + // aapt resource value: 0x7f02001a + public const int abc_ic_menu_copy_mtrl_am_alpha = 2130837530; + + // aapt resource value: 0x7f02001b + public const int abc_ic_menu_cut_mtrl_alpha = 2130837531; + + // aapt resource value: 0x7f02001c + public const int abc_ic_menu_moreoverflow_mtrl_alpha = 2130837532; + + // aapt resource value: 0x7f02001d + public const int abc_ic_menu_paste_mtrl_am_alpha = 2130837533; + + // aapt resource value: 0x7f02001e + public const int abc_ic_menu_selectall_mtrl_alpha = 2130837534; + + // aapt resource value: 0x7f02001f + public const int abc_ic_menu_share_mtrl_alpha = 2130837535; + + // aapt resource value: 0x7f020020 + public const int abc_ic_search_api_mtrl_alpha = 2130837536; + + // aapt resource value: 0x7f020021 + public const int abc_ic_star_black_16dp = 2130837537; + + // aapt resource value: 0x7f020022 + public const int abc_ic_star_black_36dp = 2130837538; + + // aapt resource value: 0x7f020023 + public const int abc_ic_star_half_black_16dp = 2130837539; + + // aapt resource value: 0x7f020024 + public const int abc_ic_star_half_black_36dp = 2130837540; + + // aapt resource value: 0x7f020025 + public const int abc_ic_voice_search_api_mtrl_alpha = 2130837541; + + // aapt resource value: 0x7f020026 + public const int abc_item_background_holo_dark = 2130837542; + + // aapt resource value: 0x7f020027 + public const int abc_item_background_holo_light = 2130837543; + + // aapt resource value: 0x7f020028 + public const int abc_list_divider_mtrl_alpha = 2130837544; + + // aapt resource value: 0x7f020029 + public const int abc_list_focused_holo = 2130837545; + + // aapt resource value: 0x7f02002a + public const int abc_list_longpressed_holo = 2130837546; + + // aapt resource value: 0x7f02002b + public const int abc_list_pressed_holo_dark = 2130837547; + + // aapt resource value: 0x7f02002c + public const int abc_list_pressed_holo_light = 2130837548; + + // aapt resource value: 0x7f02002d + public const int abc_list_selector_background_transition_holo_dark = 2130837549; + + // aapt resource value: 0x7f02002e + public const int abc_list_selector_background_transition_holo_light = 2130837550; + + // aapt resource value: 0x7f02002f + public const int abc_list_selector_disabled_holo_dark = 2130837551; + + // aapt resource value: 0x7f020030 + public const int abc_list_selector_disabled_holo_light = 2130837552; + + // aapt resource value: 0x7f020031 + public const int abc_list_selector_holo_dark = 2130837553; + + // aapt resource value: 0x7f020032 + public const int abc_list_selector_holo_light = 2130837554; + + // aapt resource value: 0x7f020033 + public const int abc_menu_hardkey_panel_mtrl_mult = 2130837555; + + // aapt resource value: 0x7f020034 + public const int abc_popup_background_mtrl_mult = 2130837556; + + // aapt resource value: 0x7f020035 + public const int abc_ratingbar_full_material = 2130837557; + + // aapt resource value: 0x7f020036 + public const int abc_ratingbar_indicator_material = 2130837558; + + // aapt resource value: 0x7f020037 + public const int abc_ratingbar_small_material = 2130837559; + + // aapt resource value: 0x7f020038 + public const int abc_scrubber_control_off_mtrl_alpha = 2130837560; + + // aapt resource value: 0x7f020039 + public const int abc_scrubber_control_to_pressed_mtrl_000 = 2130837561; + + // aapt resource value: 0x7f02003a + public const int abc_scrubber_control_to_pressed_mtrl_005 = 2130837562; + + // aapt resource value: 0x7f02003b + public const int abc_scrubber_primary_mtrl_alpha = 2130837563; + + // aapt resource value: 0x7f02003c + public const int abc_scrubber_track_mtrl_alpha = 2130837564; + + // aapt resource value: 0x7f02003d + public const int abc_seekbar_thumb_material = 2130837565; + + // aapt resource value: 0x7f02003e + public const int abc_seekbar_track_material = 2130837566; + + // aapt resource value: 0x7f02003f + public const int abc_spinner_mtrl_am_alpha = 2130837567; + + // aapt resource value: 0x7f020040 + public const int abc_spinner_textfield_background_material = 2130837568; + + // aapt resource value: 0x7f020041 + public const int abc_switch_thumb_material = 2130837569; + + // aapt resource value: 0x7f020042 + public const int abc_switch_track_mtrl_alpha = 2130837570; + + // aapt resource value: 0x7f020043 + public const int abc_tab_indicator_material = 2130837571; + + // aapt resource value: 0x7f020044 + public const int abc_tab_indicator_mtrl_alpha = 2130837572; + + // aapt resource value: 0x7f020045 + public const int abc_text_cursor_material = 2130837573; + + // aapt resource value: 0x7f020046 + public const int abc_textfield_activated_mtrl_alpha = 2130837574; + + // aapt resource value: 0x7f020047 + public const int abc_textfield_default_mtrl_alpha = 2130837575; + + // aapt resource value: 0x7f020048 + public const int abc_textfield_search_activated_mtrl_alpha = 2130837576; + + // aapt resource value: 0x7f020049 + public const int abc_textfield_search_default_mtrl_alpha = 2130837577; + + // aapt resource value: 0x7f02004a + public const int abc_textfield_search_material = 2130837578; + + // aapt resource value: 0x7f02004b + public const int design_fab_background = 2130837579; + + // aapt resource value: 0x7f02004c + public const int design_snackbar_background = 2130837580; + + // aapt resource value: 0x7f02004d + public const int ic_audiotrack = 2130837581; + + // aapt resource value: 0x7f02004e + public const int ic_audiotrack_light = 2130837582; + + // aapt resource value: 0x7f02004f + public const int ic_bluetooth_grey = 2130837583; + + // aapt resource value: 0x7f020050 + public const int ic_bluetooth_white = 2130837584; + + // aapt resource value: 0x7f020051 + public const int ic_cast_dark = 2130837585; + + // aapt resource value: 0x7f020052 + public const int ic_cast_disabled_light = 2130837586; + + // aapt resource value: 0x7f020053 + public const int ic_cast_grey = 2130837587; + + // aapt resource value: 0x7f020054 + public const int ic_cast_light = 2130837588; + + // aapt resource value: 0x7f020055 + public const int ic_cast_off_light = 2130837589; + + // aapt resource value: 0x7f020056 + public const int ic_cast_on_0_light = 2130837590; + + // aapt resource value: 0x7f020057 + public const int ic_cast_on_1_light = 2130837591; + + // aapt resource value: 0x7f020058 + public const int ic_cast_on_2_light = 2130837592; + + // aapt resource value: 0x7f020059 + public const int ic_cast_on_light = 2130837593; + + // aapt resource value: 0x7f02005a + public const int ic_cast_white = 2130837594; + + // aapt resource value: 0x7f02005b + public const int ic_close_dark = 2130837595; + + // aapt resource value: 0x7f02005c + public const int ic_close_light = 2130837596; + + // aapt resource value: 0x7f02005d + public const int ic_collapse = 2130837597; + + // aapt resource value: 0x7f02005e + public const int ic_collapse_00000 = 2130837598; + + // aapt resource value: 0x7f02005f + public const int ic_collapse_00001 = 2130837599; + + // aapt resource value: 0x7f020060 + public const int ic_collapse_00002 = 2130837600; + + // aapt resource value: 0x7f020061 + public const int ic_collapse_00003 = 2130837601; + + // aapt resource value: 0x7f020062 + public const int ic_collapse_00004 = 2130837602; + + // aapt resource value: 0x7f020063 + public const int ic_collapse_00005 = 2130837603; + + // aapt resource value: 0x7f020064 + public const int ic_collapse_00006 = 2130837604; + + // aapt resource value: 0x7f020065 + public const int ic_collapse_00007 = 2130837605; + + // aapt resource value: 0x7f020066 + public const int ic_collapse_00008 = 2130837606; + + // aapt resource value: 0x7f020067 + public const int ic_collapse_00009 = 2130837607; + + // aapt resource value: 0x7f020068 + public const int ic_collapse_00010 = 2130837608; + + // aapt resource value: 0x7f020069 + public const int ic_collapse_00011 = 2130837609; + + // aapt resource value: 0x7f02006a + public const int ic_collapse_00012 = 2130837610; + + // aapt resource value: 0x7f02006b + public const int ic_collapse_00013 = 2130837611; + + // aapt resource value: 0x7f02006c + public const int ic_collapse_00014 = 2130837612; + + // aapt resource value: 0x7f02006d + public const int ic_collapse_00015 = 2130837613; + + // aapt resource value: 0x7f02006e + public const int ic_expand = 2130837614; + + // aapt resource value: 0x7f02006f + public const int ic_expand_00000 = 2130837615; + + // aapt resource value: 0x7f020070 + public const int ic_expand_00001 = 2130837616; + + // aapt resource value: 0x7f020071 + public const int ic_expand_00002 = 2130837617; + + // aapt resource value: 0x7f020072 + public const int ic_expand_00003 = 2130837618; + + // aapt resource value: 0x7f020073 + public const int ic_expand_00004 = 2130837619; + + // aapt resource value: 0x7f020074 + public const int ic_expand_00005 = 2130837620; + + // aapt resource value: 0x7f020075 + public const int ic_expand_00006 = 2130837621; + + // aapt resource value: 0x7f020076 + public const int ic_expand_00007 = 2130837622; + + // aapt resource value: 0x7f020077 + public const int ic_expand_00008 = 2130837623; + + // aapt resource value: 0x7f020078 + public const int ic_expand_00009 = 2130837624; + + // aapt resource value: 0x7f020079 + public const int ic_expand_00010 = 2130837625; + + // aapt resource value: 0x7f02007a + public const int ic_expand_00011 = 2130837626; + + // aapt resource value: 0x7f02007b + public const int ic_expand_00012 = 2130837627; + + // aapt resource value: 0x7f02007c + public const int ic_expand_00013 = 2130837628; + + // aapt resource value: 0x7f02007d + public const int ic_expand_00014 = 2130837629; + + // aapt resource value: 0x7f02007e + public const int ic_expand_00015 = 2130837630; + + // aapt resource value: 0x7f02007f + public const int ic_media_pause = 2130837631; + + // aapt resource value: 0x7f020080 + public const int ic_media_play = 2130837632; + + // aapt resource value: 0x7f020081 + public const int ic_media_route_disabled_mono_dark = 2130837633; + + // aapt resource value: 0x7f020082 + public const int ic_media_route_off_mono_dark = 2130837634; + + // aapt resource value: 0x7f020083 + public const int ic_media_route_on_0_mono_dark = 2130837635; + + // aapt resource value: 0x7f020084 + public const int ic_media_route_on_1_mono_dark = 2130837636; + + // aapt resource value: 0x7f020085 + public const int ic_media_route_on_2_mono_dark = 2130837637; + + // aapt resource value: 0x7f020086 + public const int ic_media_route_on_mono_dark = 2130837638; + + // aapt resource value: 0x7f020087 + public const int ic_pause_dark = 2130837639; + + // aapt resource value: 0x7f020088 + public const int ic_pause_light = 2130837640; + + // aapt resource value: 0x7f020089 + public const int ic_play_dark = 2130837641; + + // aapt resource value: 0x7f02008a + public const int ic_play_light = 2130837642; + + // aapt resource value: 0x7f02008b + public const int ic_speaker_dark = 2130837643; + + // aapt resource value: 0x7f02008c + public const int ic_speaker_group_dark = 2130837644; + + // aapt resource value: 0x7f02008d + public const int ic_speaker_group_light = 2130837645; + + // aapt resource value: 0x7f02008e + public const int ic_speaker_light = 2130837646; + + // aapt resource value: 0x7f02008f + public const int ic_tv_dark = 2130837647; + + // aapt resource value: 0x7f020090 + public const int ic_tv_light = 2130837648; + + // aapt resource value: 0x7f020091 + public const int icon = 2130837649; + + // aapt resource value: 0x7f020092 + public const int mr_dialog_material_background_dark = 2130837650; + + // aapt resource value: 0x7f020093 + public const int mr_dialog_material_background_light = 2130837651; + + // aapt resource value: 0x7f020094 + public const int mr_ic_audiotrack_light = 2130837652; + + // aapt resource value: 0x7f020095 + public const int mr_ic_cast_dark = 2130837653; + + // aapt resource value: 0x7f020096 + public const int mr_ic_cast_light = 2130837654; + + // aapt resource value: 0x7f020097 + public const int mr_ic_close_dark = 2130837655; + + // aapt resource value: 0x7f020098 + public const int mr_ic_close_light = 2130837656; + + // aapt resource value: 0x7f020099 + public const int mr_ic_media_route_connecting_mono_dark = 2130837657; + + // aapt resource value: 0x7f02009a + public const int mr_ic_media_route_connecting_mono_light = 2130837658; + + // aapt resource value: 0x7f02009b + public const int mr_ic_media_route_mono_dark = 2130837659; + + // aapt resource value: 0x7f02009c + public const int mr_ic_media_route_mono_light = 2130837660; + + // aapt resource value: 0x7f02009d + public const int mr_ic_pause_dark = 2130837661; + + // aapt resource value: 0x7f02009e + public const int mr_ic_pause_light = 2130837662; + + // aapt resource value: 0x7f02009f + public const int mr_ic_play_dark = 2130837663; + + // aapt resource value: 0x7f0200a0 + public const int mr_ic_play_light = 2130837664; + + // aapt resource value: 0x7f0200a1 + public const int notification_template_icon_bg = 2130837665; + + static Drawable() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Drawable() + { + } + } + + public partial class Id + { + + // aapt resource value: 0x7f07008b + public const int action0 = 2131165323; + + // aapt resource value: 0x7f07005a + public const int action_bar = 2131165274; + + // aapt resource value: 0x7f070001 + public const int action_bar_activity_content = 2131165185; + + // aapt resource value: 0x7f070059 + public const int action_bar_container = 2131165273; + + // aapt resource value: 0x7f070055 + public const int action_bar_root = 2131165269; + + // aapt resource value: 0x7f070002 + public const int action_bar_spinner = 2131165186; + + // aapt resource value: 0x7f07003b + public const int action_bar_subtitle = 2131165243; + + // aapt resource value: 0x7f07003a + public const int action_bar_title = 2131165242; + + // aapt resource value: 0x7f07005b + public const int action_context_bar = 2131165275; + + // aapt resource value: 0x7f07008f + public const int action_divider = 2131165327; + + // aapt resource value: 0x7f070003 + public const int action_menu_divider = 2131165187; + + // aapt resource value: 0x7f070004 + public const int action_menu_presenter = 2131165188; + + // aapt resource value: 0x7f070057 + public const int action_mode_bar = 2131165271; + + // aapt resource value: 0x7f070056 + public const int action_mode_bar_stub = 2131165270; + + // aapt resource value: 0x7f07003c + public const int action_mode_close_button = 2131165244; + + // aapt resource value: 0x7f07003d + public const int activity_chooser_view_content = 2131165245; + + // aapt resource value: 0x7f070049 + public const int alertTitle = 2131165257; + + // aapt resource value: 0x7f07001e + public const int always = 2131165214; + + // aapt resource value: 0x7f07001b + public const int beginning = 2131165211; + + // aapt resource value: 0x7f07002a + public const int bottom = 2131165226; + + // aapt resource value: 0x7f070044 + public const int buttonPanel = 2131165252; + + // aapt resource value: 0x7f07008c + public const int cancel_action = 2131165324; + + // aapt resource value: 0x7f07002b + public const int center = 2131165227; + + // aapt resource value: 0x7f07002c + public const int center_horizontal = 2131165228; + + // aapt resource value: 0x7f07002d + public const int center_vertical = 2131165229; + + // aapt resource value: 0x7f070052 + public const int checkbox = 2131165266; + + // aapt resource value: 0x7f070092 + public const int chronometer = 2131165330; + + // aapt resource value: 0x7f070033 + public const int clip_horizontal = 2131165235; + + // aapt resource value: 0x7f070034 + public const int clip_vertical = 2131165236; + + // aapt resource value: 0x7f07001f + public const int collapseActionView = 2131165215; + + // aapt resource value: 0x7f07004a + public const int contentPanel = 2131165258; + + // aapt resource value: 0x7f070050 + public const int custom = 2131165264; + + // aapt resource value: 0x7f07004f + public const int customPanel = 2131165263; + + // aapt resource value: 0x7f070058 + public const int decor_content_parent = 2131165272; + + // aapt resource value: 0x7f070040 + public const int default_activity_button = 2131165248; + + // aapt resource value: 0x7f07006a + public const int design_bottom_sheet = 2131165290; + + // aapt resource value: 0x7f070071 + public const int design_menu_item_action_area = 2131165297; + + // aapt resource value: 0x7f070070 + public const int design_menu_item_action_area_stub = 2131165296; + + // aapt resource value: 0x7f07006f + public const int design_menu_item_text = 2131165295; + + // aapt resource value: 0x7f07006e + public const int design_navigation_view = 2131165294; + + // aapt resource value: 0x7f07000e + public const int disableHome = 2131165198; + + // aapt resource value: 0x7f07005c + public const int edit_query = 2131165276; + + // aapt resource value: 0x7f07001c + public const int end = 2131165212; + + // aapt resource value: 0x7f070097 + public const int end_padder = 2131165335; + + // aapt resource value: 0x7f070023 + public const int enterAlways = 2131165219; + + // aapt resource value: 0x7f070024 + public const int enterAlwaysCollapsed = 2131165220; + + // aapt resource value: 0x7f070025 + public const int exitUntilCollapsed = 2131165221; + + // aapt resource value: 0x7f07003e + public const int expand_activities_button = 2131165246; + + // aapt resource value: 0x7f070051 + public const int expanded_menu = 2131165265; + + // aapt resource value: 0x7f070035 + public const int fill = 2131165237; + + // aapt resource value: 0x7f070036 + public const int fill_horizontal = 2131165238; + + // aapt resource value: 0x7f07002e + public const int fill_vertical = 2131165230; + + // aapt resource value: 0x7f070038 + public const int @fixed = 2131165240; + + // aapt resource value: 0x7f070005 + public const int home = 2131165189; + + // aapt resource value: 0x7f07000f + public const int homeAsUp = 2131165199; + + // aapt resource value: 0x7f070042 + public const int icon = 2131165250; + + // aapt resource value: 0x7f070020 + public const int ifRoom = 2131165216; + + // aapt resource value: 0x7f07003f + public const int image = 2131165247; + + // aapt resource value: 0x7f070096 + public const int info = 2131165334; + + // aapt resource value: 0x7f070000 + public const int item_touch_helper_previous_elevation = 2131165184; + + // aapt resource value: 0x7f07002f + public const int left = 2131165231; + + // aapt resource value: 0x7f070090 + public const int line1 = 2131165328; + + // aapt resource value: 0x7f070094 + public const int line3 = 2131165332; + + // aapt resource value: 0x7f07000b + public const int listMode = 2131165195; + + // aapt resource value: 0x7f070041 + public const int list_item = 2131165249; + + // aapt resource value: 0x7f07008e + public const int media_actions = 2131165326; + + // aapt resource value: 0x7f07001d + public const int middle = 2131165213; + + // aapt resource value: 0x7f070037 + public const int mini = 2131165239; + + // aapt resource value: 0x7f07007d + public const int mr_art = 2131165309; + + // aapt resource value: 0x7f070072 + public const int mr_chooser_list = 2131165298; + + // aapt resource value: 0x7f070075 + public const int mr_chooser_route_desc = 2131165301; + + // aapt resource value: 0x7f070073 + public const int mr_chooser_route_icon = 2131165299; + + // aapt resource value: 0x7f070074 + public const int mr_chooser_route_name = 2131165300; + + // aapt resource value: 0x7f07007a + public const int mr_close = 2131165306; + + // aapt resource value: 0x7f070080 + public const int mr_control_divider = 2131165312; + + // aapt resource value: 0x7f070086 + public const int mr_control_play_pause = 2131165318; + + // aapt resource value: 0x7f070089 + public const int mr_control_subtitle = 2131165321; + + // aapt resource value: 0x7f070088 + public const int mr_control_title = 2131165320; + + // aapt resource value: 0x7f070087 + public const int mr_control_title_container = 2131165319; + + // aapt resource value: 0x7f07007b + public const int mr_custom_control = 2131165307; + + // aapt resource value: 0x7f07007c + public const int mr_default_control = 2131165308; + + // aapt resource value: 0x7f070077 + public const int mr_dialog_area = 2131165303; + + // aapt resource value: 0x7f070076 + public const int mr_expandable_area = 2131165302; + + // aapt resource value: 0x7f07008a + public const int mr_group_expand_collapse = 2131165322; + + // aapt resource value: 0x7f07007e + public const int mr_media_main_control = 2131165310; + + // aapt resource value: 0x7f070079 + public const int mr_name = 2131165305; + + // aapt resource value: 0x7f07007f + public const int mr_playback_control = 2131165311; + + // aapt resource value: 0x7f070078 + public const int mr_title_bar = 2131165304; + + // aapt resource value: 0x7f070081 + public const int mr_volume_control = 2131165313; + + // aapt resource value: 0x7f070082 + public const int mr_volume_group_list = 2131165314; + + // aapt resource value: 0x7f070084 + public const int mr_volume_item_icon = 2131165316; + + // aapt resource value: 0x7f070085 + public const int mr_volume_slider = 2131165317; + + // aapt resource value: 0x7f070016 + public const int multiply = 2131165206; + + // aapt resource value: 0x7f07006d + public const int navigation_header_container = 2131165293; + + // aapt resource value: 0x7f070021 + public const int never = 2131165217; + + // aapt resource value: 0x7f070010 + public const int none = 2131165200; + + // aapt resource value: 0x7f07000c + public const int normal = 2131165196; + + // aapt resource value: 0x7f070028 + public const int parallax = 2131165224; + + // aapt resource value: 0x7f070046 + public const int parentPanel = 2131165254; + + // aapt resource value: 0x7f070029 + public const int pin = 2131165225; + + // aapt resource value: 0x7f070006 + public const int progress_circular = 2131165190; + + // aapt resource value: 0x7f070007 + public const int progress_horizontal = 2131165191; + + // aapt resource value: 0x7f070054 + public const int radio = 2131165268; + + // aapt resource value: 0x7f070030 + public const int right = 2131165232; + + // aapt resource value: 0x7f070017 + public const int screen = 2131165207; + + // aapt resource value: 0x7f070026 + public const int scroll = 2131165222; + + // aapt resource value: 0x7f07004e + public const int scrollIndicatorDown = 2131165262; + + // aapt resource value: 0x7f07004b + public const int scrollIndicatorUp = 2131165259; + + // aapt resource value: 0x7f07004c + public const int scrollView = 2131165260; + + // aapt resource value: 0x7f070039 + public const int scrollable = 2131165241; + + // aapt resource value: 0x7f07005e + public const int search_badge = 2131165278; + + // aapt resource value: 0x7f07005d + public const int search_bar = 2131165277; + + // aapt resource value: 0x7f07005f + public const int search_button = 2131165279; + + // aapt resource value: 0x7f070064 + public const int search_close_btn = 2131165284; + + // aapt resource value: 0x7f070060 + public const int search_edit_frame = 2131165280; + + // aapt resource value: 0x7f070066 + public const int search_go_btn = 2131165286; + + // aapt resource value: 0x7f070061 + public const int search_mag_icon = 2131165281; + + // aapt resource value: 0x7f070062 + public const int search_plate = 2131165282; + + // aapt resource value: 0x7f070063 + public const int search_src_text = 2131165283; + + // aapt resource value: 0x7f070067 + public const int search_voice_btn = 2131165287; + + // aapt resource value: 0x7f070068 + public const int select_dialog_listview = 2131165288; + + // aapt resource value: 0x7f070053 + public const int shortcut = 2131165267; + + // aapt resource value: 0x7f070011 + public const int showCustom = 2131165201; + + // aapt resource value: 0x7f070012 + public const int showHome = 2131165202; + + // aapt resource value: 0x7f070013 + public const int showTitle = 2131165203; + + // aapt resource value: 0x7f07006c + public const int snackbar_action = 2131165292; + + // aapt resource value: 0x7f07006b + public const int snackbar_text = 2131165291; + + // aapt resource value: 0x7f070027 + public const int snap = 2131165223; + + // aapt resource value: 0x7f070045 + public const int spacer = 2131165253; + + // aapt resource value: 0x7f070008 + public const int split_action_bar = 2131165192; + + // aapt resource value: 0x7f070018 + public const int src_atop = 2131165208; + + // aapt resource value: 0x7f070019 + public const int src_in = 2131165209; + + // aapt resource value: 0x7f07001a + public const int src_over = 2131165210; + + // aapt resource value: 0x7f070031 + public const int start = 2131165233; + + // aapt resource value: 0x7f07008d + public const int status_bar_latest_event_content = 2131165325; + + // aapt resource value: 0x7f070065 + public const int submit_area = 2131165285; + + // aapt resource value: 0x7f07000d + public const int tabMode = 2131165197; + + // aapt resource value: 0x7f070095 + public const int text = 2131165333; + + // aapt resource value: 0x7f070093 + public const int text2 = 2131165331; + + // aapt resource value: 0x7f07004d + public const int textSpacerNoButtons = 2131165261; + + // aapt resource value: 0x7f070091 + public const int time = 2131165329; + + // aapt resource value: 0x7f070043 + public const int title = 2131165251; + + // aapt resource value: 0x7f070048 + public const int title_template = 2131165256; + + // aapt resource value: 0x7f070032 + public const int top = 2131165234; + + // aapt resource value: 0x7f070047 + public const int topPanel = 2131165255; + + // aapt resource value: 0x7f070069 + public const int touch_outside = 2131165289; + + // aapt resource value: 0x7f070009 + public const int up = 2131165193; + + // aapt resource value: 0x7f070014 + public const int useLogo = 2131165204; + + // aapt resource value: 0x7f07000a + public const int view_offset_helper = 2131165194; + + // aapt resource value: 0x7f070083 + public const int volume_item_container = 2131165315; + + // aapt resource value: 0x7f070022 + public const int withText = 2131165218; + + // aapt resource value: 0x7f070015 + public const int wrap_content = 2131165205; + + static Id() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Id() + { + } + } + + public partial class Integer + { + + // aapt resource value: 0x7f090004 + public const int abc_config_activityDefaultDur = 2131296260; + + // aapt resource value: 0x7f090005 + public const int abc_config_activityShortDur = 2131296261; + + // aapt resource value: 0x7f090003 + public const int abc_max_action_buttons = 2131296259; + + // aapt resource value: 0x7f090009 + public const int bottom_sheet_slide_duration = 2131296265; + + // aapt resource value: 0x7f090006 + public const int cancel_button_image_alpha = 2131296262; + + // aapt resource value: 0x7f090008 + public const int design_snackbar_text_max_lines = 2131296264; + + // aapt resource value: 0x7f090000 + public const int mr_controller_volume_group_list_animation_duration_ms = 2131296256; + + // aapt resource value: 0x7f090001 + public const int mr_controller_volume_group_list_fade_in_duration_ms = 2131296257; + + // aapt resource value: 0x7f090002 + public const int mr_controller_volume_group_list_fade_out_duration_ms = 2131296258; + + // aapt resource value: 0x7f090007 + public const int status_bar_notification_info_maxnum = 2131296263; + + static Integer() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Integer() + { + } + } + + public partial class Interpolator + { + + // aapt resource value: 0x7f050000 + public const int mr_fast_out_slow_in = 2131034112; + + // aapt resource value: 0x7f050001 + public const int mr_linear_out_slow_in = 2131034113; + + static Interpolator() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Interpolator() + { + } + } + + public partial class Layout + { + + // aapt resource value: 0x7f030000 + public const int abc_action_bar_title_item = 2130903040; + + // aapt resource value: 0x7f030001 + public const int abc_action_bar_up_container = 2130903041; + + // aapt resource value: 0x7f030002 + public const int abc_action_bar_view_list_nav_layout = 2130903042; + + // aapt resource value: 0x7f030003 + public const int abc_action_menu_item_layout = 2130903043; + + // aapt resource value: 0x7f030004 + public const int abc_action_menu_layout = 2130903044; + + // aapt resource value: 0x7f030005 + public const int abc_action_mode_bar = 2130903045; + + // aapt resource value: 0x7f030006 + public const int abc_action_mode_close_item_material = 2130903046; + + // aapt resource value: 0x7f030007 + public const int abc_activity_chooser_view = 2130903047; + + // aapt resource value: 0x7f030008 + public const int abc_activity_chooser_view_list_item = 2130903048; + + // aapt resource value: 0x7f030009 + public const int abc_alert_dialog_button_bar_material = 2130903049; + + // aapt resource value: 0x7f03000a + public const int abc_alert_dialog_material = 2130903050; + + // aapt resource value: 0x7f03000b + public const int abc_dialog_title_material = 2130903051; + + // aapt resource value: 0x7f03000c + public const int abc_expanded_menu_layout = 2130903052; + + // aapt resource value: 0x7f03000d + public const int abc_list_menu_item_checkbox = 2130903053; + + // aapt resource value: 0x7f03000e + public const int abc_list_menu_item_icon = 2130903054; + + // aapt resource value: 0x7f03000f + public const int abc_list_menu_item_layout = 2130903055; + + // aapt resource value: 0x7f030010 + public const int abc_list_menu_item_radio = 2130903056; + + // aapt resource value: 0x7f030011 + public const int abc_popup_menu_item_layout = 2130903057; + + // aapt resource value: 0x7f030012 + public const int abc_screen_content_include = 2130903058; + + // aapt resource value: 0x7f030013 + public const int abc_screen_simple = 2130903059; + + // aapt resource value: 0x7f030014 + public const int abc_screen_simple_overlay_action_mode = 2130903060; + + // aapt resource value: 0x7f030015 + public const int abc_screen_toolbar = 2130903061; + + // aapt resource value: 0x7f030016 + public const int abc_search_dropdown_item_icons_2line = 2130903062; + + // aapt resource value: 0x7f030017 + public const int abc_search_view = 2130903063; + + // aapt resource value: 0x7f030018 + public const int abc_select_dialog_material = 2130903064; + + // aapt resource value: 0x7f030019 + public const int design_bottom_sheet_dialog = 2130903065; + + // aapt resource value: 0x7f03001a + public const int design_layout_snackbar = 2130903066; + + // aapt resource value: 0x7f03001b + public const int design_layout_snackbar_include = 2130903067; + + // aapt resource value: 0x7f03001c + public const int design_layout_tab_icon = 2130903068; + + // aapt resource value: 0x7f03001d + public const int design_layout_tab_text = 2130903069; + + // aapt resource value: 0x7f03001e + public const int design_menu_item_action_area = 2130903070; + + // aapt resource value: 0x7f03001f + public const int design_navigation_item = 2130903071; + + // aapt resource value: 0x7f030020 + public const int design_navigation_item_header = 2130903072; + + // aapt resource value: 0x7f030021 + public const int design_navigation_item_separator = 2130903073; + + // aapt resource value: 0x7f030022 + public const int design_navigation_item_subheader = 2130903074; + + // aapt resource value: 0x7f030023 + public const int design_navigation_menu = 2130903075; + + // aapt resource value: 0x7f030024 + public const int design_navigation_menu_item = 2130903076; + + // aapt resource value: 0x7f030025 + public const int mr_chooser_dialog = 2130903077; + + // aapt resource value: 0x7f030026 + public const int mr_chooser_list_item = 2130903078; + + // aapt resource value: 0x7f030027 + public const int mr_controller_material_dialog_b = 2130903079; + + // aapt resource value: 0x7f030028 + public const int mr_controller_volume_item = 2130903080; + + // aapt resource value: 0x7f030029 + public const int mr_playback_control = 2130903081; + + // aapt resource value: 0x7f03002a + public const int mr_volume_control = 2130903082; + + // aapt resource value: 0x7f03002b + public const int notification_media_action = 2130903083; + + // aapt resource value: 0x7f03002c + public const int notification_media_cancel_action = 2130903084; + + // aapt resource value: 0x7f03002d + public const int notification_template_big_media = 2130903085; + + // aapt resource value: 0x7f03002e + public const int notification_template_big_media_narrow = 2130903086; + + // aapt resource value: 0x7f03002f + public const int notification_template_lines = 2130903087; + + // aapt resource value: 0x7f030030 + public const int notification_template_media = 2130903088; + + // aapt resource value: 0x7f030031 + public const int notification_template_part_chronometer = 2130903089; + + // aapt resource value: 0x7f030032 + public const int notification_template_part_time = 2130903090; + + // aapt resource value: 0x7f030033 + public const int select_dialog_item_material = 2130903091; + + // aapt resource value: 0x7f030034 + public const int select_dialog_multichoice_material = 2130903092; + + // aapt resource value: 0x7f030035 + public const int select_dialog_singlechoice_material = 2130903093; + + // aapt resource value: 0x7f030036 + public const int support_simple_spinner_dropdown_item = 2130903094; + + static Layout() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Layout() + { + } + } + + public partial class String + { + + // aapt resource value: 0x7f08000f + public const int abc_action_bar_home_description = 2131230735; + + // aapt resource value: 0x7f080010 + public const int abc_action_bar_home_description_format = 2131230736; + + // aapt resource value: 0x7f080011 + public const int abc_action_bar_home_subtitle_description_format = 2131230737; + + // aapt resource value: 0x7f080012 + public const int abc_action_bar_up_description = 2131230738; + + // aapt resource value: 0x7f080013 + public const int abc_action_menu_overflow_description = 2131230739; + + // aapt resource value: 0x7f080014 + public const int abc_action_mode_done = 2131230740; + + // aapt resource value: 0x7f080015 + public const int abc_activity_chooser_view_see_all = 2131230741; + + // aapt resource value: 0x7f080016 + public const int abc_activitychooserview_choose_application = 2131230742; + + // aapt resource value: 0x7f080017 + public const int abc_capital_off = 2131230743; + + // aapt resource value: 0x7f080018 + public const int abc_capital_on = 2131230744; + + // aapt resource value: 0x7f080019 + public const int abc_search_hint = 2131230745; + + // aapt resource value: 0x7f08001a + public const int abc_searchview_description_clear = 2131230746; + + // aapt resource value: 0x7f08001b + public const int abc_searchview_description_query = 2131230747; + + // aapt resource value: 0x7f08001c + public const int abc_searchview_description_search = 2131230748; + + // aapt resource value: 0x7f08001d + public const int abc_searchview_description_submit = 2131230749; + + // aapt resource value: 0x7f08001e + public const int abc_searchview_description_voice = 2131230750; + + // aapt resource value: 0x7f08001f + public const int abc_shareactionprovider_share_with = 2131230751; + + // aapt resource value: 0x7f080020 + public const int abc_shareactionprovider_share_with_application = 2131230752; + + // aapt resource value: 0x7f080021 + public const int abc_toolbar_collapse_description = 2131230753; + + // aapt resource value: 0x7f080023 + public const int appbar_scrolling_view_behavior = 2131230755; + + // aapt resource value: 0x7f080024 + public const int bottom_sheet_behavior = 2131230756; + + // aapt resource value: 0x7f080025 + public const int character_counter_pattern = 2131230757; + + // aapt resource value: 0x7f080026 + public const int library_name = 2131230758; + + // aapt resource value: 0x7f080000 + public const int mr_button_content_description = 2131230720; + + // aapt resource value: 0x7f080001 + public const int mr_chooser_searching = 2131230721; + + // aapt resource value: 0x7f080002 + public const int mr_chooser_title = 2131230722; + + // aapt resource value: 0x7f080003 + public const int mr_controller_casting_screen = 2131230723; + + // aapt resource value: 0x7f080004 + public const int mr_controller_close_description = 2131230724; + + // aapt resource value: 0x7f080005 + public const int mr_controller_collapse_group = 2131230725; + + // aapt resource value: 0x7f080006 + public const int mr_controller_disconnect = 2131230726; + + // aapt resource value: 0x7f080007 + public const int mr_controller_expand_group = 2131230727; + + // aapt resource value: 0x7f080008 + public const int mr_controller_no_info_available = 2131230728; + + // aapt resource value: 0x7f080009 + public const int mr_controller_no_media_selected = 2131230729; + + // aapt resource value: 0x7f08000a + public const int mr_controller_pause = 2131230730; + + // aapt resource value: 0x7f08000b + public const int mr_controller_play = 2131230731; + + // aapt resource value: 0x7f08000c + public const int mr_controller_stop = 2131230732; + + // aapt resource value: 0x7f08000d + public const int mr_system_route_name = 2131230733; + + // aapt resource value: 0x7f08000e + public const int mr_user_route_category_name = 2131230734; + + // aapt resource value: 0x7f080022 + public const int status_bar_notification_info_overflow = 2131230754; + + static String() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private String() + { + } + } + + public partial class Style + { + + // aapt resource value: 0x7f0a00a1 + public const int AlertDialog_AppCompat = 2131361953; + + // aapt resource value: 0x7f0a00a2 + public const int AlertDialog_AppCompat_Light = 2131361954; + + // aapt resource value: 0x7f0a00a3 + public const int Animation_AppCompat_Dialog = 2131361955; + + // aapt resource value: 0x7f0a00a4 + public const int Animation_AppCompat_DropDownUp = 2131361956; + + // aapt resource value: 0x7f0a015a + public const int Animation_Design_BottomSheetDialog = 2131362138; + + // aapt resource value: 0x7f0a00a5 + public const int Base_AlertDialog_AppCompat = 2131361957; + + // aapt resource value: 0x7f0a00a6 + public const int Base_AlertDialog_AppCompat_Light = 2131361958; + + // aapt resource value: 0x7f0a00a7 + public const int Base_Animation_AppCompat_Dialog = 2131361959; + + // aapt resource value: 0x7f0a00a8 + public const int Base_Animation_AppCompat_DropDownUp = 2131361960; + + // aapt resource value: 0x7f0a0018 + public const int Base_CardView = 2131361816; + + // aapt resource value: 0x7f0a00a9 + public const int Base_DialogWindowTitle_AppCompat = 2131361961; + + // aapt resource value: 0x7f0a00aa + public const int Base_DialogWindowTitleBackground_AppCompat = 2131361962; + + // aapt resource value: 0x7f0a0051 + public const int Base_TextAppearance_AppCompat = 2131361873; + + // aapt resource value: 0x7f0a0052 + public const int Base_TextAppearance_AppCompat_Body1 = 2131361874; + + // aapt resource value: 0x7f0a0053 + public const int Base_TextAppearance_AppCompat_Body2 = 2131361875; + + // aapt resource value: 0x7f0a003b + public const int Base_TextAppearance_AppCompat_Button = 2131361851; + + // aapt resource value: 0x7f0a0054 + public const int Base_TextAppearance_AppCompat_Caption = 2131361876; + + // aapt resource value: 0x7f0a0055 + public const int Base_TextAppearance_AppCompat_Display1 = 2131361877; + + // aapt resource value: 0x7f0a0056 + public const int Base_TextAppearance_AppCompat_Display2 = 2131361878; + + // aapt resource value: 0x7f0a0057 + public const int Base_TextAppearance_AppCompat_Display3 = 2131361879; + + // aapt resource value: 0x7f0a0058 + public const int Base_TextAppearance_AppCompat_Display4 = 2131361880; + + // aapt resource value: 0x7f0a0059 + public const int Base_TextAppearance_AppCompat_Headline = 2131361881; + + // aapt resource value: 0x7f0a0026 + public const int Base_TextAppearance_AppCompat_Inverse = 2131361830; + + // aapt resource value: 0x7f0a005a + public const int Base_TextAppearance_AppCompat_Large = 2131361882; + + // aapt resource value: 0x7f0a0027 + public const int Base_TextAppearance_AppCompat_Large_Inverse = 2131361831; + + // aapt resource value: 0x7f0a005b + public const int Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Large = 2131361883; + + // aapt resource value: 0x7f0a005c + public const int Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Small = 2131361884; + + // aapt resource value: 0x7f0a005d + public const int Base_TextAppearance_AppCompat_Medium = 2131361885; + + // aapt resource value: 0x7f0a0028 + public const int Base_TextAppearance_AppCompat_Medium_Inverse = 2131361832; + + // aapt resource value: 0x7f0a005e + public const int Base_TextAppearance_AppCompat_Menu = 2131361886; + + // aapt resource value: 0x7f0a00ab + public const int Base_TextAppearance_AppCompat_SearchResult = 2131361963; + + // aapt resource value: 0x7f0a005f + public const int Base_TextAppearance_AppCompat_SearchResult_Subtitle = 2131361887; + + // aapt resource value: 0x7f0a0060 + public const int Base_TextAppearance_AppCompat_SearchResult_Title = 2131361888; + + // aapt resource value: 0x7f0a0061 + public const int Base_TextAppearance_AppCompat_Small = 2131361889; + + // aapt resource value: 0x7f0a0029 + public const int Base_TextAppearance_AppCompat_Small_Inverse = 2131361833; + + // aapt resource value: 0x7f0a0062 + public const int Base_TextAppearance_AppCompat_Subhead = 2131361890; + + // aapt resource value: 0x7f0a002a + public const int Base_TextAppearance_AppCompat_Subhead_Inverse = 2131361834; + + // aapt resource value: 0x7f0a0063 + public const int Base_TextAppearance_AppCompat_Title = 2131361891; + + // aapt resource value: 0x7f0a002b + public const int Base_TextAppearance_AppCompat_Title_Inverse = 2131361835; + + // aapt resource value: 0x7f0a009a + public const int Base_TextAppearance_AppCompat_Widget_ActionBar_Menu = 2131361946; + + // aapt resource value: 0x7f0a0064 + public const int Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle = 2131361892; + + // aapt resource value: 0x7f0a0065 + public const int Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse = 2131361893; + + // aapt resource value: 0x7f0a0066 + public const int Base_TextAppearance_AppCompat_Widget_ActionBar_Title = 2131361894; + + // aapt resource value: 0x7f0a0067 + public const int Base_TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse = 2131361895; + + // aapt resource value: 0x7f0a0068 + public const int Base_TextAppearance_AppCompat_Widget_ActionMode_Subtitle = 2131361896; + + // aapt resource value: 0x7f0a0069 + public const int Base_TextAppearance_AppCompat_Widget_ActionMode_Title = 2131361897; + + // aapt resource value: 0x7f0a006a + public const int Base_TextAppearance_AppCompat_Widget_Button = 2131361898; + + // aapt resource value: 0x7f0a009b + public const int Base_TextAppearance_AppCompat_Widget_Button_Inverse = 2131361947; + + // aapt resource value: 0x7f0a00ac + public const int Base_TextAppearance_AppCompat_Widget_DropDownItem = 2131361964; + + // aapt resource value: 0x7f0a006b + public const int Base_TextAppearance_AppCompat_Widget_PopupMenu_Large = 2131361899; + + // aapt resource value: 0x7f0a006c + public const int Base_TextAppearance_AppCompat_Widget_PopupMenu_Small = 2131361900; + + // aapt resource value: 0x7f0a006d + public const int Base_TextAppearance_AppCompat_Widget_Switch = 2131361901; + + // aapt resource value: 0x7f0a006e + public const int Base_TextAppearance_AppCompat_Widget_TextView_SpinnerItem = 2131361902; + + // aapt resource value: 0x7f0a00ad + public const int Base_TextAppearance_Widget_AppCompat_ExpandedMenu_Item = 2131361965; + + // aapt resource value: 0x7f0a006f + public const int Base_TextAppearance_Widget_AppCompat_Toolbar_Subtitle = 2131361903; + + // aapt resource value: 0x7f0a0070 + public const int Base_TextAppearance_Widget_AppCompat_Toolbar_Title = 2131361904; + + // aapt resource value: 0x7f0a0071 + public const int Base_Theme_AppCompat = 2131361905; + + // aapt resource value: 0x7f0a00ae + public const int Base_Theme_AppCompat_CompactMenu = 2131361966; + + // aapt resource value: 0x7f0a002c + public const int Base_Theme_AppCompat_Dialog = 2131361836; + + // aapt resource value: 0x7f0a00af + public const int Base_Theme_AppCompat_Dialog_Alert = 2131361967; + + // aapt resource value: 0x7f0a00b0 + public const int Base_Theme_AppCompat_Dialog_FixedSize = 2131361968; + + // aapt resource value: 0x7f0a00b1 + public const int Base_Theme_AppCompat_Dialog_MinWidth = 2131361969; + + // aapt resource value: 0x7f0a001c + public const int Base_Theme_AppCompat_DialogWhenLarge = 2131361820; + + // aapt resource value: 0x7f0a0072 + public const int Base_Theme_AppCompat_Light = 2131361906; + + // aapt resource value: 0x7f0a00b2 + public const int Base_Theme_AppCompat_Light_DarkActionBar = 2131361970; + + // aapt resource value: 0x7f0a002d + public const int Base_Theme_AppCompat_Light_Dialog = 2131361837; + + // aapt resource value: 0x7f0a00b3 + public const int Base_Theme_AppCompat_Light_Dialog_Alert = 2131361971; + + // aapt resource value: 0x7f0a00b4 + public const int Base_Theme_AppCompat_Light_Dialog_FixedSize = 2131361972; + + // aapt resource value: 0x7f0a00b5 + public const int Base_Theme_AppCompat_Light_Dialog_MinWidth = 2131361973; + + // aapt resource value: 0x7f0a001d + public const int Base_Theme_AppCompat_Light_DialogWhenLarge = 2131361821; + + // aapt resource value: 0x7f0a00b6 + public const int Base_ThemeOverlay_AppCompat = 2131361974; + + // aapt resource value: 0x7f0a00b7 + public const int Base_ThemeOverlay_AppCompat_ActionBar = 2131361975; + + // aapt resource value: 0x7f0a00b8 + public const int Base_ThemeOverlay_AppCompat_Dark = 2131361976; + + // aapt resource value: 0x7f0a00b9 + public const int Base_ThemeOverlay_AppCompat_Dark_ActionBar = 2131361977; + + // aapt resource value: 0x7f0a00ba + public const int Base_ThemeOverlay_AppCompat_Light = 2131361978; + + // aapt resource value: 0x7f0a002e + public const int Base_V11_Theme_AppCompat_Dialog = 2131361838; + + // aapt resource value: 0x7f0a002f + public const int Base_V11_Theme_AppCompat_Light_Dialog = 2131361839; + + // aapt resource value: 0x7f0a0037 + public const int Base_V12_Widget_AppCompat_AutoCompleteTextView = 2131361847; + + // aapt resource value: 0x7f0a0038 + public const int Base_V12_Widget_AppCompat_EditText = 2131361848; + + // aapt resource value: 0x7f0a0073 + public const int Base_V21_Theme_AppCompat = 2131361907; + + // aapt resource value: 0x7f0a0074 + public const int Base_V21_Theme_AppCompat_Dialog = 2131361908; + + // aapt resource value: 0x7f0a0075 + public const int Base_V21_Theme_AppCompat_Light = 2131361909; + + // aapt resource value: 0x7f0a0076 + public const int Base_V21_Theme_AppCompat_Light_Dialog = 2131361910; + + // aapt resource value: 0x7f0a0098 + public const int Base_V22_Theme_AppCompat = 2131361944; + + // aapt resource value: 0x7f0a0099 + public const int Base_V22_Theme_AppCompat_Light = 2131361945; + + // aapt resource value: 0x7f0a009c + public const int Base_V23_Theme_AppCompat = 2131361948; + + // aapt resource value: 0x7f0a009d + public const int Base_V23_Theme_AppCompat_Light = 2131361949; + + // aapt resource value: 0x7f0a00bb + public const int Base_V7_Theme_AppCompat = 2131361979; + + // aapt resource value: 0x7f0a00bc + public const int Base_V7_Theme_AppCompat_Dialog = 2131361980; + + // aapt resource value: 0x7f0a00bd + public const int Base_V7_Theme_AppCompat_Light = 2131361981; + + // aapt resource value: 0x7f0a00be + public const int Base_V7_Theme_AppCompat_Light_Dialog = 2131361982; + + // aapt resource value: 0x7f0a00bf + public const int Base_V7_Widget_AppCompat_AutoCompleteTextView = 2131361983; + + // aapt resource value: 0x7f0a00c0 + public const int Base_V7_Widget_AppCompat_EditText = 2131361984; + + // aapt resource value: 0x7f0a00c1 + public const int Base_Widget_AppCompat_ActionBar = 2131361985; + + // aapt resource value: 0x7f0a00c2 + public const int Base_Widget_AppCompat_ActionBar_Solid = 2131361986; + + // aapt resource value: 0x7f0a00c3 + public const int Base_Widget_AppCompat_ActionBar_TabBar = 2131361987; + + // aapt resource value: 0x7f0a0077 + public const int Base_Widget_AppCompat_ActionBar_TabText = 2131361911; + + // aapt resource value: 0x7f0a0078 + public const int Base_Widget_AppCompat_ActionBar_TabView = 2131361912; + + // aapt resource value: 0x7f0a0079 + public const int Base_Widget_AppCompat_ActionButton = 2131361913; + + // aapt resource value: 0x7f0a007a + public const int Base_Widget_AppCompat_ActionButton_CloseMode = 2131361914; + + // aapt resource value: 0x7f0a007b + public const int Base_Widget_AppCompat_ActionButton_Overflow = 2131361915; + + // aapt resource value: 0x7f0a00c4 + public const int Base_Widget_AppCompat_ActionMode = 2131361988; + + // aapt resource value: 0x7f0a00c5 + public const int Base_Widget_AppCompat_ActivityChooserView = 2131361989; + + // aapt resource value: 0x7f0a0039 + public const int Base_Widget_AppCompat_AutoCompleteTextView = 2131361849; + + // aapt resource value: 0x7f0a007c + public const int Base_Widget_AppCompat_Button = 2131361916; + + // aapt resource value: 0x7f0a007d + public const int Base_Widget_AppCompat_Button_Borderless = 2131361917; + + // aapt resource value: 0x7f0a007e + public const int Base_Widget_AppCompat_Button_Borderless_Colored = 2131361918; + + // aapt resource value: 0x7f0a00c6 + public const int Base_Widget_AppCompat_Button_ButtonBar_AlertDialog = 2131361990; + + // aapt resource value: 0x7f0a009e + public const int Base_Widget_AppCompat_Button_Colored = 2131361950; + + // aapt resource value: 0x7f0a007f + public const int Base_Widget_AppCompat_Button_Small = 2131361919; + + // aapt resource value: 0x7f0a0080 + public const int Base_Widget_AppCompat_ButtonBar = 2131361920; + + // aapt resource value: 0x7f0a00c7 + public const int Base_Widget_AppCompat_ButtonBar_AlertDialog = 2131361991; + + // aapt resource value: 0x7f0a0081 + public const int Base_Widget_AppCompat_CompoundButton_CheckBox = 2131361921; + + // aapt resource value: 0x7f0a0082 + public const int Base_Widget_AppCompat_CompoundButton_RadioButton = 2131361922; + + // aapt resource value: 0x7f0a00c8 + public const int Base_Widget_AppCompat_CompoundButton_Switch = 2131361992; + + // aapt resource value: 0x7f0a001b + public const int Base_Widget_AppCompat_DrawerArrowToggle = 2131361819; + + // aapt resource value: 0x7f0a00c9 + public const int Base_Widget_AppCompat_DrawerArrowToggle_Common = 2131361993; + + // aapt resource value: 0x7f0a0083 + public const int Base_Widget_AppCompat_DropDownItem_Spinner = 2131361923; + + // aapt resource value: 0x7f0a003a + public const int Base_Widget_AppCompat_EditText = 2131361850; + + // aapt resource value: 0x7f0a0084 + public const int Base_Widget_AppCompat_ImageButton = 2131361924; + + // aapt resource value: 0x7f0a00ca + public const int Base_Widget_AppCompat_Light_ActionBar = 2131361994; + + // aapt resource value: 0x7f0a00cb + public const int Base_Widget_AppCompat_Light_ActionBar_Solid = 2131361995; + + // aapt resource value: 0x7f0a00cc + public const int Base_Widget_AppCompat_Light_ActionBar_TabBar = 2131361996; + + // aapt resource value: 0x7f0a0085 + public const int Base_Widget_AppCompat_Light_ActionBar_TabText = 2131361925; + + // aapt resource value: 0x7f0a0086 + public const int Base_Widget_AppCompat_Light_ActionBar_TabText_Inverse = 2131361926; + + // aapt resource value: 0x7f0a0087 + public const int Base_Widget_AppCompat_Light_ActionBar_TabView = 2131361927; + + // aapt resource value: 0x7f0a0088 + public const int Base_Widget_AppCompat_Light_PopupMenu = 2131361928; + + // aapt resource value: 0x7f0a0089 + public const int Base_Widget_AppCompat_Light_PopupMenu_Overflow = 2131361929; + + // aapt resource value: 0x7f0a008a + public const int Base_Widget_AppCompat_ListPopupWindow = 2131361930; + + // aapt resource value: 0x7f0a008b + public const int Base_Widget_AppCompat_ListView = 2131361931; + + // aapt resource value: 0x7f0a008c + public const int Base_Widget_AppCompat_ListView_DropDown = 2131361932; + + // aapt resource value: 0x7f0a008d + public const int Base_Widget_AppCompat_ListView_Menu = 2131361933; + + // aapt resource value: 0x7f0a008e + public const int Base_Widget_AppCompat_PopupMenu = 2131361934; + + // aapt resource value: 0x7f0a008f + public const int Base_Widget_AppCompat_PopupMenu_Overflow = 2131361935; + + // aapt resource value: 0x7f0a00cd + public const int Base_Widget_AppCompat_PopupWindow = 2131361997; + + // aapt resource value: 0x7f0a0030 + public const int Base_Widget_AppCompat_ProgressBar = 2131361840; + + // aapt resource value: 0x7f0a0031 + public const int Base_Widget_AppCompat_ProgressBar_Horizontal = 2131361841; + + // aapt resource value: 0x7f0a0090 + public const int Base_Widget_AppCompat_RatingBar = 2131361936; + + // aapt resource value: 0x7f0a009f + public const int Base_Widget_AppCompat_RatingBar_Indicator = 2131361951; + + // aapt resource value: 0x7f0a00a0 + public const int Base_Widget_AppCompat_RatingBar_Small = 2131361952; + + // aapt resource value: 0x7f0a00ce + public const int Base_Widget_AppCompat_SearchView = 2131361998; + + // aapt resource value: 0x7f0a00cf + public const int Base_Widget_AppCompat_SearchView_ActionBar = 2131361999; + + // aapt resource value: 0x7f0a0091 + public const int Base_Widget_AppCompat_SeekBar = 2131361937; + + // aapt resource value: 0x7f0a0092 + public const int Base_Widget_AppCompat_Spinner = 2131361938; + + // aapt resource value: 0x7f0a001e + public const int Base_Widget_AppCompat_Spinner_Underlined = 2131361822; + + // aapt resource value: 0x7f0a0093 + public const int Base_Widget_AppCompat_TextView_SpinnerItem = 2131361939; + + // aapt resource value: 0x7f0a00d0 + public const int Base_Widget_AppCompat_Toolbar = 2131362000; + + // aapt resource value: 0x7f0a0094 + public const int Base_Widget_AppCompat_Toolbar_Button_Navigation = 2131361940; + + // aapt resource value: 0x7f0a015b + public const int Base_Widget_Design_TabLayout = 2131362139; + + // aapt resource value: 0x7f0a0017 + public const int CardView = 2131361815; + + // aapt resource value: 0x7f0a0019 + public const int CardView_Dark = 2131361817; + + // aapt resource value: 0x7f0a001a + public const int CardView_Light = 2131361818; + + // aapt resource value: 0x7f0a0032 + public const int Platform_AppCompat = 2131361842; + + // aapt resource value: 0x7f0a0033 + public const int Platform_AppCompat_Light = 2131361843; + + // aapt resource value: 0x7f0a0095 + public const int Platform_ThemeOverlay_AppCompat = 2131361941; + + // aapt resource value: 0x7f0a0096 + public const int Platform_ThemeOverlay_AppCompat_Dark = 2131361942; + + // aapt resource value: 0x7f0a0097 + public const int Platform_ThemeOverlay_AppCompat_Light = 2131361943; + + // aapt resource value: 0x7f0a0034 + public const int Platform_V11_AppCompat = 2131361844; + + // aapt resource value: 0x7f0a0035 + public const int Platform_V11_AppCompat_Light = 2131361845; + + // aapt resource value: 0x7f0a003c + public const int Platform_V14_AppCompat = 2131361852; + + // aapt resource value: 0x7f0a003d + public const int Platform_V14_AppCompat_Light = 2131361853; + + // aapt resource value: 0x7f0a0036 + public const int Platform_Widget_AppCompat_Spinner = 2131361846; + + // aapt resource value: 0x7f0a0043 + public const int RtlOverlay_DialogWindowTitle_AppCompat = 2131361859; + + // aapt resource value: 0x7f0a0044 + public const int RtlOverlay_Widget_AppCompat_ActionBar_TitleItem = 2131361860; + + // aapt resource value: 0x7f0a0045 + public const int RtlOverlay_Widget_AppCompat_DialogTitle_Icon = 2131361861; + + // aapt resource value: 0x7f0a0046 + public const int RtlOverlay_Widget_AppCompat_PopupMenuItem = 2131361862; + + // aapt resource value: 0x7f0a0047 + public const int RtlOverlay_Widget_AppCompat_PopupMenuItem_InternalGroup = 2131361863; + + // aapt resource value: 0x7f0a0048 + public const int RtlOverlay_Widget_AppCompat_PopupMenuItem_Text = 2131361864; + + // aapt resource value: 0x7f0a0049 + public const int RtlOverlay_Widget_AppCompat_Search_DropDown = 2131361865; + + // aapt resource value: 0x7f0a004a + public const int RtlOverlay_Widget_AppCompat_Search_DropDown_Icon1 = 2131361866; + + // aapt resource value: 0x7f0a004b + public const int RtlOverlay_Widget_AppCompat_Search_DropDown_Icon2 = 2131361867; + + // aapt resource value: 0x7f0a004c + public const int RtlOverlay_Widget_AppCompat_Search_DropDown_Query = 2131361868; + + // aapt resource value: 0x7f0a004d + public const int RtlOverlay_Widget_AppCompat_Search_DropDown_Text = 2131361869; + + // aapt resource value: 0x7f0a004e + public const int RtlOverlay_Widget_AppCompat_SearchView_MagIcon = 2131361870; + + // aapt resource value: 0x7f0a004f + public const int RtlUnderlay_Widget_AppCompat_ActionButton = 2131361871; + + // aapt resource value: 0x7f0a0050 + public const int RtlUnderlay_Widget_AppCompat_ActionButton_Overflow = 2131361872; + + // aapt resource value: 0x7f0a00d1 + public const int TextAppearance_AppCompat = 2131362001; + + // aapt resource value: 0x7f0a00d2 + public const int TextAppearance_AppCompat_Body1 = 2131362002; + + // aapt resource value: 0x7f0a00d3 + public const int TextAppearance_AppCompat_Body2 = 2131362003; + + // aapt resource value: 0x7f0a00d4 + public const int TextAppearance_AppCompat_Button = 2131362004; + + // aapt resource value: 0x7f0a00d5 + public const int TextAppearance_AppCompat_Caption = 2131362005; + + // aapt resource value: 0x7f0a00d6 + public const int TextAppearance_AppCompat_Display1 = 2131362006; + + // aapt resource value: 0x7f0a00d7 + public const int TextAppearance_AppCompat_Display2 = 2131362007; + + // aapt resource value: 0x7f0a00d8 + public const int TextAppearance_AppCompat_Display3 = 2131362008; + + // aapt resource value: 0x7f0a00d9 + public const int TextAppearance_AppCompat_Display4 = 2131362009; + + // aapt resource value: 0x7f0a00da + public const int TextAppearance_AppCompat_Headline = 2131362010; + + // aapt resource value: 0x7f0a00db + public const int TextAppearance_AppCompat_Inverse = 2131362011; + + // aapt resource value: 0x7f0a00dc + public const int TextAppearance_AppCompat_Large = 2131362012; + + // aapt resource value: 0x7f0a00dd + public const int TextAppearance_AppCompat_Large_Inverse = 2131362013; + + // aapt resource value: 0x7f0a00de + public const int TextAppearance_AppCompat_Light_SearchResult_Subtitle = 2131362014; + + // aapt resource value: 0x7f0a00df + public const int TextAppearance_AppCompat_Light_SearchResult_Title = 2131362015; + + // aapt resource value: 0x7f0a00e0 + public const int TextAppearance_AppCompat_Light_Widget_PopupMenu_Large = 2131362016; + + // aapt resource value: 0x7f0a00e1 + public const int TextAppearance_AppCompat_Light_Widget_PopupMenu_Small = 2131362017; + + // aapt resource value: 0x7f0a00e2 + public const int TextAppearance_AppCompat_Medium = 2131362018; + + // aapt resource value: 0x7f0a00e3 + public const int TextAppearance_AppCompat_Medium_Inverse = 2131362019; + + // aapt resource value: 0x7f0a00e4 + public const int TextAppearance_AppCompat_Menu = 2131362020; + + // aapt resource value: 0x7f0a00e5 + public const int TextAppearance_AppCompat_SearchResult_Subtitle = 2131362021; + + // aapt resource value: 0x7f0a00e6 + public const int TextAppearance_AppCompat_SearchResult_Title = 2131362022; + + // aapt resource value: 0x7f0a00e7 + public const int TextAppearance_AppCompat_Small = 2131362023; + + // aapt resource value: 0x7f0a00e8 + public const int TextAppearance_AppCompat_Small_Inverse = 2131362024; + + // aapt resource value: 0x7f0a00e9 + public const int TextAppearance_AppCompat_Subhead = 2131362025; + + // aapt resource value: 0x7f0a00ea + public const int TextAppearance_AppCompat_Subhead_Inverse = 2131362026; + + // aapt resource value: 0x7f0a00eb + public const int TextAppearance_AppCompat_Title = 2131362027; + + // aapt resource value: 0x7f0a00ec + public const int TextAppearance_AppCompat_Title_Inverse = 2131362028; + + // aapt resource value: 0x7f0a00ed + public const int TextAppearance_AppCompat_Widget_ActionBar_Menu = 2131362029; + + // aapt resource value: 0x7f0a00ee + public const int TextAppearance_AppCompat_Widget_ActionBar_Subtitle = 2131362030; + + // aapt resource value: 0x7f0a00ef + public const int TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse = 2131362031; + + // aapt resource value: 0x7f0a00f0 + public const int TextAppearance_AppCompat_Widget_ActionBar_Title = 2131362032; + + // aapt resource value: 0x7f0a00f1 + public const int TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse = 2131362033; + + // aapt resource value: 0x7f0a00f2 + public const int TextAppearance_AppCompat_Widget_ActionMode_Subtitle = 2131362034; + + // aapt resource value: 0x7f0a00f3 + public const int TextAppearance_AppCompat_Widget_ActionMode_Subtitle_Inverse = 2131362035; + + // aapt resource value: 0x7f0a00f4 + public const int TextAppearance_AppCompat_Widget_ActionMode_Title = 2131362036; + + // aapt resource value: 0x7f0a00f5 + public const int TextAppearance_AppCompat_Widget_ActionMode_Title_Inverse = 2131362037; + + // aapt resource value: 0x7f0a00f6 + public const int TextAppearance_AppCompat_Widget_Button = 2131362038; + + // aapt resource value: 0x7f0a00f7 + public const int TextAppearance_AppCompat_Widget_Button_Inverse = 2131362039; + + // aapt resource value: 0x7f0a00f8 + public const int TextAppearance_AppCompat_Widget_DropDownItem = 2131362040; + + // aapt resource value: 0x7f0a00f9 + public const int TextAppearance_AppCompat_Widget_PopupMenu_Large = 2131362041; + + // aapt resource value: 0x7f0a00fa + public const int TextAppearance_AppCompat_Widget_PopupMenu_Small = 2131362042; + + // aapt resource value: 0x7f0a00fb + public const int TextAppearance_AppCompat_Widget_Switch = 2131362043; + + // aapt resource value: 0x7f0a00fc + public const int TextAppearance_AppCompat_Widget_TextView_SpinnerItem = 2131362044; + + // aapt resource value: 0x7f0a015c + public const int TextAppearance_Design_CollapsingToolbar_Expanded = 2131362140; + + // aapt resource value: 0x7f0a015d + public const int TextAppearance_Design_Counter = 2131362141; + + // aapt resource value: 0x7f0a015e + public const int TextAppearance_Design_Counter_Overflow = 2131362142; + + // aapt resource value: 0x7f0a015f + public const int TextAppearance_Design_Error = 2131362143; + + // aapt resource value: 0x7f0a0160 + public const int TextAppearance_Design_Hint = 2131362144; + + // aapt resource value: 0x7f0a0161 + public const int TextAppearance_Design_Snackbar_Message = 2131362145; + + // aapt resource value: 0x7f0a0162 + public const int TextAppearance_Design_Tab = 2131362146; + + // aapt resource value: 0x7f0a003e + public const int TextAppearance_StatusBar_EventContent = 2131361854; + + // aapt resource value: 0x7f0a003f + public const int TextAppearance_StatusBar_EventContent_Info = 2131361855; + + // aapt resource value: 0x7f0a0040 + public const int TextAppearance_StatusBar_EventContent_Line2 = 2131361856; + + // aapt resource value: 0x7f0a0041 + public const int TextAppearance_StatusBar_EventContent_Time = 2131361857; + + // aapt resource value: 0x7f0a0042 + public const int TextAppearance_StatusBar_EventContent_Title = 2131361858; + + // aapt resource value: 0x7f0a00fd + public const int TextAppearance_Widget_AppCompat_ExpandedMenu_Item = 2131362045; + + // aapt resource value: 0x7f0a00fe + public const int TextAppearance_Widget_AppCompat_Toolbar_Subtitle = 2131362046; + + // aapt resource value: 0x7f0a00ff + public const int TextAppearance_Widget_AppCompat_Toolbar_Title = 2131362047; + + // aapt resource value: 0x7f0a0100 + public const int Theme_AppCompat = 2131362048; + + // aapt resource value: 0x7f0a0101 + public const int Theme_AppCompat_CompactMenu = 2131362049; + + // aapt resource value: 0x7f0a001f + public const int Theme_AppCompat_DayNight = 2131361823; + + // aapt resource value: 0x7f0a0020 + public const int Theme_AppCompat_DayNight_DarkActionBar = 2131361824; + + // aapt resource value: 0x7f0a0021 + public const int Theme_AppCompat_DayNight_Dialog = 2131361825; + + // aapt resource value: 0x7f0a0022 + public const int Theme_AppCompat_DayNight_Dialog_Alert = 2131361826; + + // aapt resource value: 0x7f0a0023 + public const int Theme_AppCompat_DayNight_Dialog_MinWidth = 2131361827; + + // aapt resource value: 0x7f0a0024 + public const int Theme_AppCompat_DayNight_DialogWhenLarge = 2131361828; + + // aapt resource value: 0x7f0a0025 + public const int Theme_AppCompat_DayNight_NoActionBar = 2131361829; + + // aapt resource value: 0x7f0a0102 + public const int Theme_AppCompat_Dialog = 2131362050; + + // aapt resource value: 0x7f0a0103 + public const int Theme_AppCompat_Dialog_Alert = 2131362051; + + // aapt resource value: 0x7f0a0104 + public const int Theme_AppCompat_Dialog_MinWidth = 2131362052; + + // aapt resource value: 0x7f0a0105 + public const int Theme_AppCompat_DialogWhenLarge = 2131362053; + + // aapt resource value: 0x7f0a0106 + public const int Theme_AppCompat_Light = 2131362054; + + // aapt resource value: 0x7f0a0107 + public const int Theme_AppCompat_Light_DarkActionBar = 2131362055; + + // aapt resource value: 0x7f0a0108 + public const int Theme_AppCompat_Light_Dialog = 2131362056; + + // aapt resource value: 0x7f0a0109 + public const int Theme_AppCompat_Light_Dialog_Alert = 2131362057; + + // aapt resource value: 0x7f0a010a + public const int Theme_AppCompat_Light_Dialog_MinWidth = 2131362058; + + // aapt resource value: 0x7f0a010b + public const int Theme_AppCompat_Light_DialogWhenLarge = 2131362059; + + // aapt resource value: 0x7f0a010c + public const int Theme_AppCompat_Light_NoActionBar = 2131362060; + + // aapt resource value: 0x7f0a010d + public const int Theme_AppCompat_NoActionBar = 2131362061; + + // aapt resource value: 0x7f0a0163 + public const int Theme_Design = 2131362147; + + // aapt resource value: 0x7f0a0164 + public const int Theme_Design_BottomSheetDialog = 2131362148; + + // aapt resource value: 0x7f0a0165 + public const int Theme_Design_Light = 2131362149; + + // aapt resource value: 0x7f0a0166 + public const int Theme_Design_Light_BottomSheetDialog = 2131362150; + + // aapt resource value: 0x7f0a0167 + public const int Theme_Design_Light_NoActionBar = 2131362151; + + // aapt resource value: 0x7f0a0168 + public const int Theme_Design_NoActionBar = 2131362152; + + // aapt resource value: 0x7f0a0000 + public const int Theme_MediaRouter = 2131361792; + + // aapt resource value: 0x7f0a0001 + public const int Theme_MediaRouter_Light = 2131361793; + + // aapt resource value: 0x7f0a0002 + public const int Theme_MediaRouter_Light_DarkControlPanel = 2131361794; + + // aapt resource value: 0x7f0a0003 + public const int Theme_MediaRouter_LightControlPanel = 2131361795; + + // aapt resource value: 0x7f0a010e + public const int ThemeOverlay_AppCompat = 2131362062; + + // aapt resource value: 0x7f0a010f + public const int ThemeOverlay_AppCompat_ActionBar = 2131362063; + + // aapt resource value: 0x7f0a0110 + public const int ThemeOverlay_AppCompat_Dark = 2131362064; + + // aapt resource value: 0x7f0a0111 + public const int ThemeOverlay_AppCompat_Dark_ActionBar = 2131362065; + + // aapt resource value: 0x7f0a0112 + public const int ThemeOverlay_AppCompat_Light = 2131362066; + + // aapt resource value: 0x7f0a0113 + public const int Widget_AppCompat_ActionBar = 2131362067; + + // aapt resource value: 0x7f0a0114 + public const int Widget_AppCompat_ActionBar_Solid = 2131362068; + + // aapt resource value: 0x7f0a0115 + public const int Widget_AppCompat_ActionBar_TabBar = 2131362069; + + // aapt resource value: 0x7f0a0116 + public const int Widget_AppCompat_ActionBar_TabText = 2131362070; + + // aapt resource value: 0x7f0a0117 + public const int Widget_AppCompat_ActionBar_TabView = 2131362071; + + // aapt resource value: 0x7f0a0118 + public const int Widget_AppCompat_ActionButton = 2131362072; + + // aapt resource value: 0x7f0a0119 + public const int Widget_AppCompat_ActionButton_CloseMode = 2131362073; + + // aapt resource value: 0x7f0a011a + public const int Widget_AppCompat_ActionButton_Overflow = 2131362074; + + // aapt resource value: 0x7f0a011b + public const int Widget_AppCompat_ActionMode = 2131362075; + + // aapt resource value: 0x7f0a011c + public const int Widget_AppCompat_ActivityChooserView = 2131362076; + + // aapt resource value: 0x7f0a011d + public const int Widget_AppCompat_AutoCompleteTextView = 2131362077; + + // aapt resource value: 0x7f0a011e + public const int Widget_AppCompat_Button = 2131362078; + + // aapt resource value: 0x7f0a011f + public const int Widget_AppCompat_Button_Borderless = 2131362079; + + // aapt resource value: 0x7f0a0120 + public const int Widget_AppCompat_Button_Borderless_Colored = 2131362080; + + // aapt resource value: 0x7f0a0121 + public const int Widget_AppCompat_Button_ButtonBar_AlertDialog = 2131362081; + + // aapt resource value: 0x7f0a0122 + public const int Widget_AppCompat_Button_Colored = 2131362082; + + // aapt resource value: 0x7f0a0123 + public const int Widget_AppCompat_Button_Small = 2131362083; + + // aapt resource value: 0x7f0a0124 + public const int Widget_AppCompat_ButtonBar = 2131362084; + + // aapt resource value: 0x7f0a0125 + public const int Widget_AppCompat_ButtonBar_AlertDialog = 2131362085; + + // aapt resource value: 0x7f0a0126 + public const int Widget_AppCompat_CompoundButton_CheckBox = 2131362086; + + // aapt resource value: 0x7f0a0127 + public const int Widget_AppCompat_CompoundButton_RadioButton = 2131362087; + + // aapt resource value: 0x7f0a0128 + public const int Widget_AppCompat_CompoundButton_Switch = 2131362088; + + // aapt resource value: 0x7f0a0129 + public const int Widget_AppCompat_DrawerArrowToggle = 2131362089; + + // aapt resource value: 0x7f0a012a + public const int Widget_AppCompat_DropDownItem_Spinner = 2131362090; + + // aapt resource value: 0x7f0a012b + public const int Widget_AppCompat_EditText = 2131362091; + + // aapt resource value: 0x7f0a012c + public const int Widget_AppCompat_ImageButton = 2131362092; + + // aapt resource value: 0x7f0a012d + public const int Widget_AppCompat_Light_ActionBar = 2131362093; + + // aapt resource value: 0x7f0a012e + public const int Widget_AppCompat_Light_ActionBar_Solid = 2131362094; + + // aapt resource value: 0x7f0a012f + public const int Widget_AppCompat_Light_ActionBar_Solid_Inverse = 2131362095; + + // aapt resource value: 0x7f0a0130 + public const int Widget_AppCompat_Light_ActionBar_TabBar = 2131362096; + + // aapt resource value: 0x7f0a0131 + public const int Widget_AppCompat_Light_ActionBar_TabBar_Inverse = 2131362097; + + // aapt resource value: 0x7f0a0132 + public const int Widget_AppCompat_Light_ActionBar_TabText = 2131362098; + + // aapt resource value: 0x7f0a0133 + public const int Widget_AppCompat_Light_ActionBar_TabText_Inverse = 2131362099; + + // aapt resource value: 0x7f0a0134 + public const int Widget_AppCompat_Light_ActionBar_TabView = 2131362100; + + // aapt resource value: 0x7f0a0135 + public const int Widget_AppCompat_Light_ActionBar_TabView_Inverse = 2131362101; + + // aapt resource value: 0x7f0a0136 + public const int Widget_AppCompat_Light_ActionButton = 2131362102; + + // aapt resource value: 0x7f0a0137 + public const int Widget_AppCompat_Light_ActionButton_CloseMode = 2131362103; + + // aapt resource value: 0x7f0a0138 + public const int Widget_AppCompat_Light_ActionButton_Overflow = 2131362104; + + // aapt resource value: 0x7f0a0139 + public const int Widget_AppCompat_Light_ActionMode_Inverse = 2131362105; + + // aapt resource value: 0x7f0a013a + public const int Widget_AppCompat_Light_ActivityChooserView = 2131362106; + + // aapt resource value: 0x7f0a013b + public const int Widget_AppCompat_Light_AutoCompleteTextView = 2131362107; + + // aapt resource value: 0x7f0a013c + public const int Widget_AppCompat_Light_DropDownItem_Spinner = 2131362108; + + // aapt resource value: 0x7f0a013d + public const int Widget_AppCompat_Light_ListPopupWindow = 2131362109; + + // aapt resource value: 0x7f0a013e + public const int Widget_AppCompat_Light_ListView_DropDown = 2131362110; + + // aapt resource value: 0x7f0a013f + public const int Widget_AppCompat_Light_PopupMenu = 2131362111; + + // aapt resource value: 0x7f0a0140 + public const int Widget_AppCompat_Light_PopupMenu_Overflow = 2131362112; + + // aapt resource value: 0x7f0a0141 + public const int Widget_AppCompat_Light_SearchView = 2131362113; + + // aapt resource value: 0x7f0a0142 + public const int Widget_AppCompat_Light_Spinner_DropDown_ActionBar = 2131362114; + + // aapt resource value: 0x7f0a0143 + public const int Widget_AppCompat_ListPopupWindow = 2131362115; + + // aapt resource value: 0x7f0a0144 + public const int Widget_AppCompat_ListView = 2131362116; + + // aapt resource value: 0x7f0a0145 + public const int Widget_AppCompat_ListView_DropDown = 2131362117; + + // aapt resource value: 0x7f0a0146 + public const int Widget_AppCompat_ListView_Menu = 2131362118; + + // aapt resource value: 0x7f0a0147 + public const int Widget_AppCompat_PopupMenu = 2131362119; + + // aapt resource value: 0x7f0a0148 + public const int Widget_AppCompat_PopupMenu_Overflow = 2131362120; + + // aapt resource value: 0x7f0a0149 + public const int Widget_AppCompat_PopupWindow = 2131362121; + + // aapt resource value: 0x7f0a014a + public const int Widget_AppCompat_ProgressBar = 2131362122; + + // aapt resource value: 0x7f0a014b + public const int Widget_AppCompat_ProgressBar_Horizontal = 2131362123; + + // aapt resource value: 0x7f0a014c + public const int Widget_AppCompat_RatingBar = 2131362124; + + // aapt resource value: 0x7f0a014d + public const int Widget_AppCompat_RatingBar_Indicator = 2131362125; + + // aapt resource value: 0x7f0a014e + public const int Widget_AppCompat_RatingBar_Small = 2131362126; + + // aapt resource value: 0x7f0a014f + public const int Widget_AppCompat_SearchView = 2131362127; + + // aapt resource value: 0x7f0a0150 + public const int Widget_AppCompat_SearchView_ActionBar = 2131362128; + + // aapt resource value: 0x7f0a0151 + public const int Widget_AppCompat_SeekBar = 2131362129; + + // aapt resource value: 0x7f0a0152 + public const int Widget_AppCompat_Spinner = 2131362130; + + // aapt resource value: 0x7f0a0153 + public const int Widget_AppCompat_Spinner_DropDown = 2131362131; + + // aapt resource value: 0x7f0a0154 + public const int Widget_AppCompat_Spinner_DropDown_ActionBar = 2131362132; + + // aapt resource value: 0x7f0a0155 + public const int Widget_AppCompat_Spinner_Underlined = 2131362133; + + // aapt resource value: 0x7f0a0156 + public const int Widget_AppCompat_TextView_SpinnerItem = 2131362134; + + // aapt resource value: 0x7f0a0157 + public const int Widget_AppCompat_Toolbar = 2131362135; + + // aapt resource value: 0x7f0a0158 + public const int Widget_AppCompat_Toolbar_Button_Navigation = 2131362136; + + // aapt resource value: 0x7f0a0169 + public const int Widget_Design_AppBarLayout = 2131362153; + + // aapt resource value: 0x7f0a016a + public const int Widget_Design_BottomSheet_Modal = 2131362154; + + // aapt resource value: 0x7f0a016b + public const int Widget_Design_CollapsingToolbar = 2131362155; + + // aapt resource value: 0x7f0a016c + public const int Widget_Design_CoordinatorLayout = 2131362156; + + // aapt resource value: 0x7f0a016d + public const int Widget_Design_FloatingActionButton = 2131362157; + + // aapt resource value: 0x7f0a016e + public const int Widget_Design_NavigationView = 2131362158; + + // aapt resource value: 0x7f0a016f + public const int Widget_Design_ScrimInsetsFrameLayout = 2131362159; + + // aapt resource value: 0x7f0a0170 + public const int Widget_Design_Snackbar = 2131362160; + + // aapt resource value: 0x7f0a0159 + public const int Widget_Design_TabLayout = 2131362137; + + // aapt resource value: 0x7f0a0171 + public const int Widget_Design_TextInputLayout = 2131362161; + + // aapt resource value: 0x7f0a0004 + public const int Widget_MediaRouter_ChooserText = 2131361796; + + // aapt resource value: 0x7f0a0005 + public const int Widget_MediaRouter_ChooserText_Primary = 2131361797; + + // aapt resource value: 0x7f0a0006 + public const int Widget_MediaRouter_ChooserText_Primary_Dark = 2131361798; + + // aapt resource value: 0x7f0a0007 + public const int Widget_MediaRouter_ChooserText_Primary_Light = 2131361799; + + // aapt resource value: 0x7f0a0008 + public const int Widget_MediaRouter_ChooserText_Secondary = 2131361800; + + // aapt resource value: 0x7f0a0009 + public const int Widget_MediaRouter_ChooserText_Secondary_Dark = 2131361801; + + // aapt resource value: 0x7f0a000a + public const int Widget_MediaRouter_ChooserText_Secondary_Light = 2131361802; + + // aapt resource value: 0x7f0a000b + public const int Widget_MediaRouter_ControllerText = 2131361803; + + // aapt resource value: 0x7f0a000c + public const int Widget_MediaRouter_ControllerText_Primary = 2131361804; + + // aapt resource value: 0x7f0a000d + public const int Widget_MediaRouter_ControllerText_Primary_Dark = 2131361805; + + // aapt resource value: 0x7f0a000e + public const int Widget_MediaRouter_ControllerText_Primary_Light = 2131361806; + + // aapt resource value: 0x7f0a000f + public const int Widget_MediaRouter_ControllerText_Secondary = 2131361807; + + // aapt resource value: 0x7f0a0010 + public const int Widget_MediaRouter_ControllerText_Secondary_Dark = 2131361808; + + // aapt resource value: 0x7f0a0011 + public const int Widget_MediaRouter_ControllerText_Secondary_Light = 2131361809; + + // aapt resource value: 0x7f0a0012 + public const int Widget_MediaRouter_ControllerText_Title = 2131361810; + + // aapt resource value: 0x7f0a0013 + public const int Widget_MediaRouter_ControllerText_Title_Dark = 2131361811; + + // aapt resource value: 0x7f0a0014 + public const int Widget_MediaRouter_ControllerText_Title_Light = 2131361812; + + // aapt resource value: 0x7f0a0015 + public const int Widget_MediaRouter_Light_MediaRouteButton = 2131361813; + + // aapt resource value: 0x7f0a0016 + public const int Widget_MediaRouter_MediaRouteButton = 2131361814; + + static Style() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Style() + { + } + } + + public partial class Styleable + { + + public static int[] ActionBar = new int[] { + 2130772007, + 2130772009, + 2130772010, + 2130772011, + 2130772012, + 2130772013, + 2130772014, + 2130772015, + 2130772016, + 2130772017, + 2130772018, + 2130772019, + 2130772020, + 2130772021, + 2130772022, + 2130772023, + 2130772024, + 2130772025, + 2130772026, + 2130772027, + 2130772028, + 2130772029, + 2130772030, + 2130772031, + 2130772032, + 2130772033, + 2130772090}; + + // aapt resource value: 10 + public const int ActionBar_background = 10; + + // aapt resource value: 12 + public const int ActionBar_backgroundSplit = 12; + + // aapt resource value: 11 + public const int ActionBar_backgroundStacked = 11; + + // aapt resource value: 21 + public const int ActionBar_contentInsetEnd = 21; + + // aapt resource value: 22 + public const int ActionBar_contentInsetLeft = 22; + + // aapt resource value: 23 + public const int ActionBar_contentInsetRight = 23; + + // aapt resource value: 20 + public const int ActionBar_contentInsetStart = 20; + + // aapt resource value: 13 + public const int ActionBar_customNavigationLayout = 13; + + // aapt resource value: 3 + public const int ActionBar_displayOptions = 3; + + // aapt resource value: 9 + public const int ActionBar_divider = 9; + + // aapt resource value: 24 + public const int ActionBar_elevation = 24; + + // aapt resource value: 0 + public const int ActionBar_height = 0; + + // aapt resource value: 19 + public const int ActionBar_hideOnContentScroll = 19; + + // aapt resource value: 26 + public const int ActionBar_homeAsUpIndicator = 26; + + // aapt resource value: 14 + public const int ActionBar_homeLayout = 14; + + // aapt resource value: 7 + public const int ActionBar_icon = 7; + + // aapt resource value: 16 + public const int ActionBar_indeterminateProgressStyle = 16; + + // aapt resource value: 18 + public const int ActionBar_itemPadding = 18; + + // aapt resource value: 8 + public const int ActionBar_logo = 8; + + // aapt resource value: 2 + public const int ActionBar_navigationMode = 2; + + // aapt resource value: 25 + public const int ActionBar_popupTheme = 25; + + // aapt resource value: 17 + public const int ActionBar_progressBarPadding = 17; + + // aapt resource value: 15 + public const int ActionBar_progressBarStyle = 15; + + // aapt resource value: 4 + public const int ActionBar_subtitle = 4; + + // aapt resource value: 6 + public const int ActionBar_subtitleTextStyle = 6; + + // aapt resource value: 1 + public const int ActionBar_title = 1; + + // aapt resource value: 5 + public const int ActionBar_titleTextStyle = 5; + + public static int[] ActionBarLayout = new int[] { + 16842931}; + + // aapt resource value: 0 + public const int ActionBarLayout_android_layout_gravity = 0; + + public static int[] ActionMenuItemView = new int[] { + 16843071}; + + // aapt resource value: 0 + public const int ActionMenuItemView_android_minWidth = 0; + + public static int[] ActionMenuView; + + public static int[] ActionMode = new int[] { + 2130772007, + 2130772013, + 2130772014, + 2130772018, + 2130772020, + 2130772034}; + + // aapt resource value: 3 + public const int ActionMode_background = 3; + + // aapt resource value: 4 + public const int ActionMode_backgroundSplit = 4; + + // aapt resource value: 5 + public const int ActionMode_closeItemLayout = 5; + + // aapt resource value: 0 + public const int ActionMode_height = 0; + + // aapt resource value: 2 + public const int ActionMode_subtitleTextStyle = 2; + + // aapt resource value: 1 + public const int ActionMode_titleTextStyle = 1; + + public static int[] ActivityChooserView = new int[] { + 2130772035, + 2130772036}; + + // aapt resource value: 1 + public const int ActivityChooserView_expandActivityOverflowButtonDrawable = 1; + + // aapt resource value: 0 + public const int ActivityChooserView_initialActivityCount = 0; + + public static int[] AlertDialog = new int[] { + 16842994, + 2130772037, + 2130772038, + 2130772039, + 2130772040, + 2130772041}; + + // aapt resource value: 0 + public const int AlertDialog_android_layout = 0; + + // aapt resource value: 1 + public const int AlertDialog_buttonPanelSideLayout = 1; + + // aapt resource value: 5 + public const int AlertDialog_listItemLayout = 5; + + // aapt resource value: 2 + public const int AlertDialog_listLayout = 2; + + // aapt resource value: 3 + public const int AlertDialog_multiChoiceItemLayout = 3; + + // aapt resource value: 4 + public const int AlertDialog_singleChoiceItemLayout = 4; + + public static int[] AppBarLayout = new int[] { + 16842964, + 2130772032, + 2130772215}; + + // aapt resource value: 0 + public const int AppBarLayout_android_background = 0; + + // aapt resource value: 1 + public const int AppBarLayout_elevation = 1; + + // aapt resource value: 2 + public const int AppBarLayout_expanded = 2; + + public static int[] AppBarLayout_LayoutParams = new int[] { + 2130772216, + 2130772217}; + + // aapt resource value: 0 + public const int AppBarLayout_LayoutParams_layout_scrollFlags = 0; + + // aapt resource value: 1 + public const int AppBarLayout_LayoutParams_layout_scrollInterpolator = 1; + + public static int[] AppCompatImageView = new int[] { + 16843033, + 2130772042}; + + // aapt resource value: 0 + public const int AppCompatImageView_android_src = 0; + + // aapt resource value: 1 + public const int AppCompatImageView_srcCompat = 1; + + public static int[] AppCompatTextView = new int[] { + 16842804, + 2130772043}; + + // aapt resource value: 0 + public const int AppCompatTextView_android_textAppearance = 0; + + // aapt resource value: 1 + public const int AppCompatTextView_textAllCaps = 1; + + public static int[] AppCompatTheme = new int[] { + 16842839, + 16842926, + 2130772044, + 2130772045, + 2130772046, + 2130772047, + 2130772048, + 2130772049, + 2130772050, + 2130772051, + 2130772052, + 2130772053, + 2130772054, + 2130772055, + 2130772056, + 2130772057, + 2130772058, + 2130772059, + 2130772060, + 2130772061, + 2130772062, + 2130772063, + 2130772064, + 2130772065, + 2130772066, + 2130772067, + 2130772068, + 2130772069, + 2130772070, + 2130772071, + 2130772072, + 2130772073, + 2130772074, + 2130772075, + 2130772076, + 2130772077, + 2130772078, + 2130772079, + 2130772080, + 2130772081, + 2130772082, + 2130772083, + 2130772084, + 2130772085, + 2130772086, + 2130772087, + 2130772088, + 2130772089, + 2130772090, + 2130772091, + 2130772092, + 2130772093, + 2130772094, + 2130772095, + 2130772096, + 2130772097, + 2130772098, + 2130772099, + 2130772100, + 2130772101, + 2130772102, + 2130772103, + 2130772104, + 2130772105, + 2130772106, + 2130772107, + 2130772108, + 2130772109, + 2130772110, + 2130772111, + 2130772112, + 2130772113, + 2130772114, + 2130772115, + 2130772116, + 2130772117, + 2130772118, + 2130772119, + 2130772120, + 2130772121, + 2130772122, + 2130772123, + 2130772124, + 2130772125, + 2130772126, + 2130772127, + 2130772128, + 2130772129, + 2130772130, + 2130772131, + 2130772132, + 2130772133, + 2130772134, + 2130772135, + 2130772136, + 2130772137, + 2130772138, + 2130772139, + 2130772140, + 2130772141, + 2130772142, + 2130772143, + 2130772144, + 2130772145, + 2130772146, + 2130772147, + 2130772148, + 2130772149, + 2130772150, + 2130772151, + 2130772152, + 2130772153}; + + // aapt resource value: 23 + public const int AppCompatTheme_actionBarDivider = 23; + + // aapt resource value: 24 + public const int AppCompatTheme_actionBarItemBackground = 24; + + // aapt resource value: 17 + public const int AppCompatTheme_actionBarPopupTheme = 17; + + // aapt resource value: 22 + public const int AppCompatTheme_actionBarSize = 22; + + // aapt resource value: 19 + public const int AppCompatTheme_actionBarSplitStyle = 19; + + // aapt resource value: 18 + public const int AppCompatTheme_actionBarStyle = 18; + + // aapt resource value: 13 + public const int AppCompatTheme_actionBarTabBarStyle = 13; + + // aapt resource value: 12 + public const int AppCompatTheme_actionBarTabStyle = 12; + + // aapt resource value: 14 + public const int AppCompatTheme_actionBarTabTextStyle = 14; + + // aapt resource value: 20 + public const int AppCompatTheme_actionBarTheme = 20; + + // aapt resource value: 21 + public const int AppCompatTheme_actionBarWidgetTheme = 21; + + // aapt resource value: 49 + public const int AppCompatTheme_actionButtonStyle = 49; + + // aapt resource value: 45 + public const int AppCompatTheme_actionDropDownStyle = 45; + + // aapt resource value: 25 + public const int AppCompatTheme_actionMenuTextAppearance = 25; + + // aapt resource value: 26 + public const int AppCompatTheme_actionMenuTextColor = 26; + + // aapt resource value: 29 + public const int AppCompatTheme_actionModeBackground = 29; + + // aapt resource value: 28 + public const int AppCompatTheme_actionModeCloseButtonStyle = 28; + + // aapt resource value: 31 + public const int AppCompatTheme_actionModeCloseDrawable = 31; + + // aapt resource value: 33 + public const int AppCompatTheme_actionModeCopyDrawable = 33; + + // aapt resource value: 32 + public const int AppCompatTheme_actionModeCutDrawable = 32; + + // aapt resource value: 37 + public const int AppCompatTheme_actionModeFindDrawable = 37; + + // aapt resource value: 34 + public const int AppCompatTheme_actionModePasteDrawable = 34; + + // aapt resource value: 39 + public const int AppCompatTheme_actionModePopupWindowStyle = 39; + + // aapt resource value: 35 + public const int AppCompatTheme_actionModeSelectAllDrawable = 35; + + // aapt resource value: 36 + public const int AppCompatTheme_actionModeShareDrawable = 36; + + // aapt resource value: 30 + public const int AppCompatTheme_actionModeSplitBackground = 30; + + // aapt resource value: 27 + public const int AppCompatTheme_actionModeStyle = 27; + + // aapt resource value: 38 + public const int AppCompatTheme_actionModeWebSearchDrawable = 38; + + // aapt resource value: 15 + public const int AppCompatTheme_actionOverflowButtonStyle = 15; + + // aapt resource value: 16 + public const int AppCompatTheme_actionOverflowMenuStyle = 16; + + // aapt resource value: 57 + public const int AppCompatTheme_activityChooserViewStyle = 57; + + // aapt resource value: 92 + public const int AppCompatTheme_alertDialogButtonGroupStyle = 92; + + // aapt resource value: 93 + public const int AppCompatTheme_alertDialogCenterButtons = 93; + + // aapt resource value: 91 + public const int AppCompatTheme_alertDialogStyle = 91; + + // aapt resource value: 94 + public const int AppCompatTheme_alertDialogTheme = 94; + + // aapt resource value: 1 + public const int AppCompatTheme_android_windowAnimationStyle = 1; + + // aapt resource value: 0 + public const int AppCompatTheme_android_windowIsFloating = 0; + + // aapt resource value: 99 + public const int AppCompatTheme_autoCompleteTextViewStyle = 99; + + // aapt resource value: 54 + public const int AppCompatTheme_borderlessButtonStyle = 54; + + // aapt resource value: 51 + public const int AppCompatTheme_buttonBarButtonStyle = 51; + + // aapt resource value: 97 + public const int AppCompatTheme_buttonBarNegativeButtonStyle = 97; + + // aapt resource value: 98 + public const int AppCompatTheme_buttonBarNeutralButtonStyle = 98; + + // aapt resource value: 96 + public const int AppCompatTheme_buttonBarPositiveButtonStyle = 96; + + // aapt resource value: 50 + public const int AppCompatTheme_buttonBarStyle = 50; + + // aapt resource value: 100 + public const int AppCompatTheme_buttonStyle = 100; + + // aapt resource value: 101 + public const int AppCompatTheme_buttonStyleSmall = 101; + + // aapt resource value: 102 + public const int AppCompatTheme_checkboxStyle = 102; + + // aapt resource value: 103 + public const int AppCompatTheme_checkedTextViewStyle = 103; + + // aapt resource value: 84 + public const int AppCompatTheme_colorAccent = 84; + + // aapt resource value: 88 + public const int AppCompatTheme_colorButtonNormal = 88; + + // aapt resource value: 86 + public const int AppCompatTheme_colorControlActivated = 86; + + // aapt resource value: 87 + public const int AppCompatTheme_colorControlHighlight = 87; + + // aapt resource value: 85 + public const int AppCompatTheme_colorControlNormal = 85; + + // aapt resource value: 82 + public const int AppCompatTheme_colorPrimary = 82; + + // aapt resource value: 83 + public const int AppCompatTheme_colorPrimaryDark = 83; + + // aapt resource value: 89 + public const int AppCompatTheme_colorSwitchThumbNormal = 89; + + // aapt resource value: 90 + public const int AppCompatTheme_controlBackground = 90; + + // aapt resource value: 43 + public const int AppCompatTheme_dialogPreferredPadding = 43; + + // aapt resource value: 42 + public const int AppCompatTheme_dialogTheme = 42; + + // aapt resource value: 56 + public const int AppCompatTheme_dividerHorizontal = 56; + + // aapt resource value: 55 + public const int AppCompatTheme_dividerVertical = 55; + + // aapt resource value: 74 + public const int AppCompatTheme_dropDownListViewStyle = 74; + + // aapt resource value: 46 + public const int AppCompatTheme_dropdownListPreferredItemHeight = 46; + + // aapt resource value: 63 + public const int AppCompatTheme_editTextBackground = 63; + + // aapt resource value: 62 + public const int AppCompatTheme_editTextColor = 62; + + // aapt resource value: 104 + public const int AppCompatTheme_editTextStyle = 104; + + // aapt resource value: 48 + public const int AppCompatTheme_homeAsUpIndicator = 48; + + // aapt resource value: 64 + public const int AppCompatTheme_imageButtonStyle = 64; + + // aapt resource value: 81 + public const int AppCompatTheme_listChoiceBackgroundIndicator = 81; + + // aapt resource value: 44 + public const int AppCompatTheme_listDividerAlertDialog = 44; + + // aapt resource value: 75 + public const int AppCompatTheme_listPopupWindowStyle = 75; + + // aapt resource value: 69 + public const int AppCompatTheme_listPreferredItemHeight = 69; + + // aapt resource value: 71 + public const int AppCompatTheme_listPreferredItemHeightLarge = 71; + + // aapt resource value: 70 + public const int AppCompatTheme_listPreferredItemHeightSmall = 70; + + // aapt resource value: 72 + public const int AppCompatTheme_listPreferredItemPaddingLeft = 72; + + // aapt resource value: 73 + public const int AppCompatTheme_listPreferredItemPaddingRight = 73; + + // aapt resource value: 78 + public const int AppCompatTheme_panelBackground = 78; + + // aapt resource value: 80 + public const int AppCompatTheme_panelMenuListTheme = 80; + + // aapt resource value: 79 + public const int AppCompatTheme_panelMenuListWidth = 79; + + // aapt resource value: 60 + public const int AppCompatTheme_popupMenuStyle = 60; + + // aapt resource value: 61 + public const int AppCompatTheme_popupWindowStyle = 61; + + // aapt resource value: 105 + public const int AppCompatTheme_radioButtonStyle = 105; + + // aapt resource value: 106 + public const int AppCompatTheme_ratingBarStyle = 106; + + // aapt resource value: 107 + public const int AppCompatTheme_ratingBarStyleIndicator = 107; + + // aapt resource value: 108 + public const int AppCompatTheme_ratingBarStyleSmall = 108; + + // aapt resource value: 68 + public const int AppCompatTheme_searchViewStyle = 68; + + // aapt resource value: 109 + public const int AppCompatTheme_seekBarStyle = 109; + + // aapt resource value: 52 + public const int AppCompatTheme_selectableItemBackground = 52; + + // aapt resource value: 53 + public const int AppCompatTheme_selectableItemBackgroundBorderless = 53; + + // aapt resource value: 47 + public const int AppCompatTheme_spinnerDropDownItemStyle = 47; + + // aapt resource value: 110 + public const int AppCompatTheme_spinnerStyle = 110; + + // aapt resource value: 111 + public const int AppCompatTheme_switchStyle = 111; + + // aapt resource value: 40 + public const int AppCompatTheme_textAppearanceLargePopupMenu = 40; + + // aapt resource value: 76 + public const int AppCompatTheme_textAppearanceListItem = 76; + + // aapt resource value: 77 + public const int AppCompatTheme_textAppearanceListItemSmall = 77; + + // aapt resource value: 66 + public const int AppCompatTheme_textAppearanceSearchResultSubtitle = 66; + + // aapt resource value: 65 + public const int AppCompatTheme_textAppearanceSearchResultTitle = 65; + + // aapt resource value: 41 + public const int AppCompatTheme_textAppearanceSmallPopupMenu = 41; + + // aapt resource value: 95 + public const int AppCompatTheme_textColorAlertDialogListItem = 95; + + // aapt resource value: 67 + public const int AppCompatTheme_textColorSearchUrl = 67; + + // aapt resource value: 59 + public const int AppCompatTheme_toolbarNavigationButtonStyle = 59; + + // aapt resource value: 58 + public const int AppCompatTheme_toolbarStyle = 58; + + // aapt resource value: 2 + public const int AppCompatTheme_windowActionBar = 2; + + // aapt resource value: 4 + public const int AppCompatTheme_windowActionBarOverlay = 4; + + // aapt resource value: 5 + public const int AppCompatTheme_windowActionModeOverlay = 5; + + // aapt resource value: 9 + public const int AppCompatTheme_windowFixedHeightMajor = 9; + + // aapt resource value: 7 + public const int AppCompatTheme_windowFixedHeightMinor = 7; + + // aapt resource value: 6 + public const int AppCompatTheme_windowFixedWidthMajor = 6; + + // aapt resource value: 8 + public const int AppCompatTheme_windowFixedWidthMinor = 8; + + // aapt resource value: 10 + public const int AppCompatTheme_windowMinWidthMajor = 10; + + // aapt resource value: 11 + public const int AppCompatTheme_windowMinWidthMinor = 11; + + // aapt resource value: 3 + public const int AppCompatTheme_windowNoTitle = 3; + + public static int[] BottomSheetBehavior_Params = new int[] { + 2130772218, + 2130772219}; + + // aapt resource value: 1 + public const int BottomSheetBehavior_Params_behavior_hideable = 1; + + // aapt resource value: 0 + public const int BottomSheetBehavior_Params_behavior_peekHeight = 0; + + public static int[] ButtonBarLayout = new int[] { + 2130772154}; + + // aapt resource value: 0 + public const int ButtonBarLayout_allowStacking = 0; + + public static int[] CardView = new int[] { + 16843071, + 16843072, + 2130771995, + 2130771996, + 2130771997, + 2130771998, + 2130771999, + 2130772000, + 2130772001, + 2130772002, + 2130772003, + 2130772004, + 2130772005}; + + // aapt resource value: 1 + public const int CardView_android_minHeight = 1; + + // aapt resource value: 0 + public const int CardView_android_minWidth = 0; + + // aapt resource value: 2 + public const int CardView_cardBackgroundColor = 2; + + // aapt resource value: 3 + public const int CardView_cardCornerRadius = 3; + + // aapt resource value: 4 + public const int CardView_cardElevation = 4; + + // aapt resource value: 5 + public const int CardView_cardMaxElevation = 5; + + // aapt resource value: 7 + public const int CardView_cardPreventCornerOverlap = 7; + + // aapt resource value: 6 + public const int CardView_cardUseCompatPadding = 6; + + // aapt resource value: 8 + public const int CardView_contentPadding = 8; + + // aapt resource value: 12 + public const int CardView_contentPaddingBottom = 12; + + // aapt resource value: 9 + public const int CardView_contentPaddingLeft = 9; + + // aapt resource value: 10 + public const int CardView_contentPaddingRight = 10; + + // aapt resource value: 11 + public const int CardView_contentPaddingTop = 11; + + public static int[] CollapsingAppBarLayout_LayoutParams = new int[] { + 2130772220, + 2130772221}; + + // aapt resource value: 0 + public const int CollapsingAppBarLayout_LayoutParams_layout_collapseMode = 0; + + // aapt resource value: 1 + public const int CollapsingAppBarLayout_LayoutParams_layout_collapseParallaxMultiplier = 1; + + public static int[] CollapsingToolbarLayout = new int[] { + 2130772009, + 2130772222, + 2130772223, + 2130772224, + 2130772225, + 2130772226, + 2130772227, + 2130772228, + 2130772229, + 2130772230, + 2130772231, + 2130772232, + 2130772233, + 2130772234}; + + // aapt resource value: 11 + public const int CollapsingToolbarLayout_collapsedTitleGravity = 11; + + // aapt resource value: 7 + public const int CollapsingToolbarLayout_collapsedTitleTextAppearance = 7; + + // aapt resource value: 8 + public const int CollapsingToolbarLayout_contentScrim = 8; + + // aapt resource value: 12 + public const int CollapsingToolbarLayout_expandedTitleGravity = 12; + + // aapt resource value: 1 + public const int CollapsingToolbarLayout_expandedTitleMargin = 1; + + // aapt resource value: 5 + public const int CollapsingToolbarLayout_expandedTitleMarginBottom = 5; + + // aapt resource value: 4 + public const int CollapsingToolbarLayout_expandedTitleMarginEnd = 4; + + // aapt resource value: 2 + public const int CollapsingToolbarLayout_expandedTitleMarginStart = 2; + + // aapt resource value: 3 + public const int CollapsingToolbarLayout_expandedTitleMarginTop = 3; + + // aapt resource value: 6 + public const int CollapsingToolbarLayout_expandedTitleTextAppearance = 6; + + // aapt resource value: 9 + public const int CollapsingToolbarLayout_statusBarScrim = 9; + + // aapt resource value: 0 + public const int CollapsingToolbarLayout_title = 0; + + // aapt resource value: 13 + public const int CollapsingToolbarLayout_titleEnabled = 13; + + // aapt resource value: 10 + public const int CollapsingToolbarLayout_toolbarId = 10; + + public static int[] CompoundButton = new int[] { + 16843015, + 2130772155, + 2130772156}; + + // aapt resource value: 0 + public const int CompoundButton_android_button = 0; + + // aapt resource value: 1 + public const int CompoundButton_buttonTint = 1; + + // aapt resource value: 2 + public const int CompoundButton_buttonTintMode = 2; + + public static int[] CoordinatorLayout = new int[] { + 2130772235, + 2130772236}; + + // aapt resource value: 0 + public const int CoordinatorLayout_keylines = 0; + + // aapt resource value: 1 + public const int CoordinatorLayout_statusBarBackground = 1; + + public static int[] CoordinatorLayout_LayoutParams = new int[] { + 16842931, + 2130772237, + 2130772238, + 2130772239, + 2130772240}; + + // aapt resource value: 0 + public const int CoordinatorLayout_LayoutParams_android_layout_gravity = 0; + + // aapt resource value: 2 + public const int CoordinatorLayout_LayoutParams_layout_anchor = 2; + + // aapt resource value: 4 + public const int CoordinatorLayout_LayoutParams_layout_anchorGravity = 4; + + // aapt resource value: 1 + public const int CoordinatorLayout_LayoutParams_layout_behavior = 1; + + // aapt resource value: 3 + public const int CoordinatorLayout_LayoutParams_layout_keyline = 3; + + public static int[] DesignTheme = new int[] { + 2130772241, + 2130772242, + 2130772243}; + + // aapt resource value: 0 + public const int DesignTheme_bottomSheetDialogTheme = 0; + + // aapt resource value: 1 + public const int DesignTheme_bottomSheetStyle = 1; + + // aapt resource value: 2 + public const int DesignTheme_textColorError = 2; + + public static int[] DrawerArrowToggle = new int[] { + 2130772157, + 2130772158, + 2130772159, + 2130772160, + 2130772161, + 2130772162, + 2130772163, + 2130772164}; + + // aapt resource value: 4 + public const int DrawerArrowToggle_arrowHeadLength = 4; + + // aapt resource value: 5 + public const int DrawerArrowToggle_arrowShaftLength = 5; + + // aapt resource value: 6 + public const int DrawerArrowToggle_barLength = 6; + + // aapt resource value: 0 + public const int DrawerArrowToggle_color = 0; + + // aapt resource value: 2 + public const int DrawerArrowToggle_drawableSize = 2; + + // aapt resource value: 3 + public const int DrawerArrowToggle_gapBetweenBars = 3; + + // aapt resource value: 1 + public const int DrawerArrowToggle_spinBars = 1; + + // aapt resource value: 7 + public const int DrawerArrowToggle_thickness = 7; + + public static int[] FloatingActionButton = new int[] { + 2130772032, + 2130772213, + 2130772214, + 2130772244, + 2130772245, + 2130772246, + 2130772247, + 2130772248}; + + // aapt resource value: 1 + public const int FloatingActionButton_backgroundTint = 1; + + // aapt resource value: 2 + public const int FloatingActionButton_backgroundTintMode = 2; + + // aapt resource value: 6 + public const int FloatingActionButton_borderWidth = 6; + + // aapt resource value: 0 + public const int FloatingActionButton_elevation = 0; + + // aapt resource value: 4 + public const int FloatingActionButton_fabSize = 4; + + // aapt resource value: 5 + public const int FloatingActionButton_pressedTranslationZ = 5; + + // aapt resource value: 3 + public const int FloatingActionButton_rippleColor = 3; + + // aapt resource value: 7 + public const int FloatingActionButton_useCompatPadding = 7; + + public static int[] ForegroundLinearLayout = new int[] { + 16843017, + 16843264, + 2130772249}; + + // aapt resource value: 0 + public const int ForegroundLinearLayout_android_foreground = 0; + + // aapt resource value: 1 + public const int ForegroundLinearLayout_android_foregroundGravity = 1; + + // aapt resource value: 2 + public const int ForegroundLinearLayout_foregroundInsidePadding = 2; + + public static int[] LinearLayoutCompat = new int[] { + 16842927, + 16842948, + 16843046, + 16843047, + 16843048, + 2130772017, + 2130772165, + 2130772166, + 2130772167}; + + // aapt resource value: 2 + public const int LinearLayoutCompat_android_baselineAligned = 2; + + // aapt resource value: 3 + public const int LinearLayoutCompat_android_baselineAlignedChildIndex = 3; + + // aapt resource value: 0 + public const int LinearLayoutCompat_android_gravity = 0; + + // aapt resource value: 1 + public const int LinearLayoutCompat_android_orientation = 1; + + // aapt resource value: 4 + public const int LinearLayoutCompat_android_weightSum = 4; + + // aapt resource value: 5 + public const int LinearLayoutCompat_divider = 5; + + // aapt resource value: 8 + public const int LinearLayoutCompat_dividerPadding = 8; + + // aapt resource value: 6 + public const int LinearLayoutCompat_measureWithLargestChild = 6; + + // aapt resource value: 7 + public const int LinearLayoutCompat_showDividers = 7; + + public static int[] LinearLayoutCompat_Layout = new int[] { + 16842931, + 16842996, + 16842997, + 16843137}; + + // aapt resource value: 0 + public const int LinearLayoutCompat_Layout_android_layout_gravity = 0; + + // aapt resource value: 2 + public const int LinearLayoutCompat_Layout_android_layout_height = 2; + + // aapt resource value: 3 + public const int LinearLayoutCompat_Layout_android_layout_weight = 3; + + // aapt resource value: 1 + public const int LinearLayoutCompat_Layout_android_layout_width = 1; + + public static int[] ListPopupWindow = new int[] { + 16843436, + 16843437}; + + // aapt resource value: 0 + public const int ListPopupWindow_android_dropDownHorizontalOffset = 0; + + // aapt resource value: 1 + public const int ListPopupWindow_android_dropDownVerticalOffset = 1; + + public static int[] MediaRouteButton = new int[] { + 16843071, + 16843072, + 2130771994}; + + // aapt resource value: 1 + public const int MediaRouteButton_android_minHeight = 1; + + // aapt resource value: 0 + public const int MediaRouteButton_android_minWidth = 0; + + // aapt resource value: 2 + public const int MediaRouteButton_externalRouteEnabledDrawable = 2; + + public static int[] MenuGroup = new int[] { + 16842766, + 16842960, + 16843156, + 16843230, + 16843231, + 16843232}; + + // aapt resource value: 5 + public const int MenuGroup_android_checkableBehavior = 5; + + // aapt resource value: 0 + public const int MenuGroup_android_enabled = 0; + + // aapt resource value: 1 + public const int MenuGroup_android_id = 1; + + // aapt resource value: 3 + public const int MenuGroup_android_menuCategory = 3; + + // aapt resource value: 4 + public const int MenuGroup_android_orderInCategory = 4; + + // aapt resource value: 2 + public const int MenuGroup_android_visible = 2; + + public static int[] MenuItem = new int[] { + 16842754, + 16842766, + 16842960, + 16843014, + 16843156, + 16843230, + 16843231, + 16843233, + 16843234, + 16843235, + 16843236, + 16843237, + 16843375, + 2130772168, + 2130772169, + 2130772170, + 2130772171}; + + // aapt resource value: 14 + public const int MenuItem_actionLayout = 14; + + // aapt resource value: 16 + public const int MenuItem_actionProviderClass = 16; + + // aapt resource value: 15 + public const int MenuItem_actionViewClass = 15; + + // aapt resource value: 9 + public const int MenuItem_android_alphabeticShortcut = 9; + + // aapt resource value: 11 + public const int MenuItem_android_checkable = 11; + + // aapt resource value: 3 + public const int MenuItem_android_checked = 3; + + // aapt resource value: 1 + public const int MenuItem_android_enabled = 1; + + // aapt resource value: 0 + public const int MenuItem_android_icon = 0; + + // aapt resource value: 2 + public const int MenuItem_android_id = 2; + + // aapt resource value: 5 + public const int MenuItem_android_menuCategory = 5; + + // aapt resource value: 10 + public const int MenuItem_android_numericShortcut = 10; + + // aapt resource value: 12 + public const int MenuItem_android_onClick = 12; + + // aapt resource value: 6 + public const int MenuItem_android_orderInCategory = 6; + + // aapt resource value: 7 + public const int MenuItem_android_title = 7; + + // aapt resource value: 8 + public const int MenuItem_android_titleCondensed = 8; + + // aapt resource value: 4 + public const int MenuItem_android_visible = 4; + + // aapt resource value: 13 + public const int MenuItem_showAsAction = 13; + + public static int[] MenuView = new int[] { + 16842926, + 16843052, + 16843053, + 16843054, + 16843055, + 16843056, + 16843057, + 2130772172}; + + // aapt resource value: 4 + public const int MenuView_android_headerBackground = 4; + + // aapt resource value: 2 + public const int MenuView_android_horizontalDivider = 2; + + // aapt resource value: 5 + public const int MenuView_android_itemBackground = 5; + + // aapt resource value: 6 + public const int MenuView_android_itemIconDisabledAlpha = 6; + + // aapt resource value: 1 + public const int MenuView_android_itemTextAppearance = 1; + + // aapt resource value: 3 + public const int MenuView_android_verticalDivider = 3; + + // aapt resource value: 0 + public const int MenuView_android_windowAnimationStyle = 0; + + // aapt resource value: 7 + public const int MenuView_preserveIconSpacing = 7; + + public static int[] NavigationView = new int[] { + 16842964, + 16842973, + 16843039, + 2130772032, + 2130772250, + 2130772251, + 2130772252, + 2130772253, + 2130772254, + 2130772255}; + + // aapt resource value: 0 + public const int NavigationView_android_background = 0; + + // aapt resource value: 1 + public const int NavigationView_android_fitsSystemWindows = 1; + + // aapt resource value: 2 + public const int NavigationView_android_maxWidth = 2; + + // aapt resource value: 3 + public const int NavigationView_elevation = 3; + + // aapt resource value: 9 + public const int NavigationView_headerLayout = 9; + + // aapt resource value: 7 + public const int NavigationView_itemBackground = 7; + + // aapt resource value: 5 + public const int NavigationView_itemIconTint = 5; + + // aapt resource value: 8 + public const int NavigationView_itemTextAppearance = 8; + + // aapt resource value: 6 + public const int NavigationView_itemTextColor = 6; + + // aapt resource value: 4 + public const int NavigationView_menu = 4; + + public static int[] PopupWindow = new int[] { + 16843126, + 2130772173}; + + // aapt resource value: 0 + public const int PopupWindow_android_popupBackground = 0; + + // aapt resource value: 1 + public const int PopupWindow_overlapAnchor = 1; + + public static int[] PopupWindowBackgroundState = new int[] { + 2130772174}; + + // aapt resource value: 0 + public const int PopupWindowBackgroundState_state_above_anchor = 0; + + public static int[] RecyclerView = new int[] { + 16842948, + 2130771968, + 2130771969, + 2130771970, + 2130771971}; + + // aapt resource value: 0 + public const int RecyclerView_android_orientation = 0; + + // aapt resource value: 1 + public const int RecyclerView_layoutManager = 1; + + // aapt resource value: 3 + public const int RecyclerView_reverseLayout = 3; + + // aapt resource value: 2 + public const int RecyclerView_spanCount = 2; + + // aapt resource value: 4 + public const int RecyclerView_stackFromEnd = 4; + + public static int[] ScrimInsetsFrameLayout = new int[] { + 2130772256}; + + // aapt resource value: 0 + public const int ScrimInsetsFrameLayout_insetForeground = 0; + + public static int[] ScrollingViewBehavior_Params = new int[] { + 2130772257}; + + // aapt resource value: 0 + public const int ScrollingViewBehavior_Params_behavior_overlapTop = 0; + + public static int[] SearchView = new int[] { + 16842970, + 16843039, + 16843296, + 16843364, + 2130772175, + 2130772176, + 2130772177, + 2130772178, + 2130772179, + 2130772180, + 2130772181, + 2130772182, + 2130772183, + 2130772184, + 2130772185, + 2130772186, + 2130772187}; + + // aapt resource value: 0 + public const int SearchView_android_focusable = 0; + + // aapt resource value: 3 + public const int SearchView_android_imeOptions = 3; + + // aapt resource value: 2 + public const int SearchView_android_inputType = 2; + + // aapt resource value: 1 + public const int SearchView_android_maxWidth = 1; + + // aapt resource value: 8 + public const int SearchView_closeIcon = 8; + + // aapt resource value: 13 + public const int SearchView_commitIcon = 13; + + // aapt resource value: 7 + public const int SearchView_defaultQueryHint = 7; + + // aapt resource value: 9 + public const int SearchView_goIcon = 9; + + // aapt resource value: 5 + public const int SearchView_iconifiedByDefault = 5; + + // aapt resource value: 4 + public const int SearchView_layout = 4; + + // aapt resource value: 15 + public const int SearchView_queryBackground = 15; + + // aapt resource value: 6 + public const int SearchView_queryHint = 6; + + // aapt resource value: 11 + public const int SearchView_searchHintIcon = 11; + + // aapt resource value: 10 + public const int SearchView_searchIcon = 10; + + // aapt resource value: 16 + public const int SearchView_submitBackground = 16; + + // aapt resource value: 14 + public const int SearchView_suggestionRowLayout = 14; + + // aapt resource value: 12 + public const int SearchView_voiceIcon = 12; + + public static int[] SnackbarLayout = new int[] { + 16843039, + 2130772032, + 2130772258}; + + // aapt resource value: 0 + public const int SnackbarLayout_android_maxWidth = 0; + + // aapt resource value: 1 + public const int SnackbarLayout_elevation = 1; + + // aapt resource value: 2 + public const int SnackbarLayout_maxActionInlineWidth = 2; + + public static int[] Spinner = new int[] { + 16842930, + 16843126, + 16843131, + 16843362, + 2130772033}; + + // aapt resource value: 3 + public const int Spinner_android_dropDownWidth = 3; + + // aapt resource value: 0 + public const int Spinner_android_entries = 0; + + // aapt resource value: 1 + public const int Spinner_android_popupBackground = 1; + + // aapt resource value: 2 + public const int Spinner_android_prompt = 2; + + // aapt resource value: 4 + public const int Spinner_popupTheme = 4; + + public static int[] SwitchCompat = new int[] { + 16843044, + 16843045, + 16843074, + 2130772188, + 2130772189, + 2130772190, + 2130772191, + 2130772192, + 2130772193, + 2130772194}; + + // aapt resource value: 1 + public const int SwitchCompat_android_textOff = 1; + + // aapt resource value: 0 + public const int SwitchCompat_android_textOn = 0; + + // aapt resource value: 2 + public const int SwitchCompat_android_thumb = 2; + + // aapt resource value: 9 + public const int SwitchCompat_showText = 9; + + // aapt resource value: 8 + public const int SwitchCompat_splitTrack = 8; + + // aapt resource value: 6 + public const int SwitchCompat_switchMinWidth = 6; + + // aapt resource value: 7 + public const int SwitchCompat_switchPadding = 7; + + // aapt resource value: 5 + public const int SwitchCompat_switchTextAppearance = 5; + + // aapt resource value: 4 + public const int SwitchCompat_thumbTextPadding = 4; + + // aapt resource value: 3 + public const int SwitchCompat_track = 3; + + public static int[] TabItem = new int[] { + 16842754, + 16842994, + 16843087}; + + // aapt resource value: 0 + public const int TabItem_android_icon = 0; + + // aapt resource value: 1 + public const int TabItem_android_layout = 1; + + // aapt resource value: 2 + public const int TabItem_android_text = 2; + + public static int[] TabLayout = new int[] { + 2130772259, + 2130772260, + 2130772261, + 2130772262, + 2130772263, + 2130772264, + 2130772265, + 2130772266, + 2130772267, + 2130772268, + 2130772269, + 2130772270, + 2130772271, + 2130772272, + 2130772273, + 2130772274}; + + // aapt resource value: 3 + public const int TabLayout_tabBackground = 3; + + // aapt resource value: 2 + public const int TabLayout_tabContentStart = 2; + + // aapt resource value: 5 + public const int TabLayout_tabGravity = 5; + + // aapt resource value: 0 + public const int TabLayout_tabIndicatorColor = 0; + + // aapt resource value: 1 + public const int TabLayout_tabIndicatorHeight = 1; + + // aapt resource value: 7 + public const int TabLayout_tabMaxWidth = 7; + + // aapt resource value: 6 + public const int TabLayout_tabMinWidth = 6; + + // aapt resource value: 4 + public const int TabLayout_tabMode = 4; + + // aapt resource value: 15 + public const int TabLayout_tabPadding = 15; + + // aapt resource value: 14 + public const int TabLayout_tabPaddingBottom = 14; + + // aapt resource value: 13 + public const int TabLayout_tabPaddingEnd = 13; + + // aapt resource value: 11 + public const int TabLayout_tabPaddingStart = 11; + + // aapt resource value: 12 + public const int TabLayout_tabPaddingTop = 12; + + // aapt resource value: 10 + public const int TabLayout_tabSelectedTextColor = 10; + + // aapt resource value: 8 + public const int TabLayout_tabTextAppearance = 8; + + // aapt resource value: 9 + public const int TabLayout_tabTextColor = 9; + + public static int[] TextAppearance = new int[] { + 16842901, + 16842902, + 16842903, + 16842904, + 16843105, + 16843106, + 16843107, + 16843108, + 2130772043}; + + // aapt resource value: 4 + public const int TextAppearance_android_shadowColor = 4; + + // aapt resource value: 5 + public const int TextAppearance_android_shadowDx = 5; + + // aapt resource value: 6 + public const int TextAppearance_android_shadowDy = 6; + + // aapt resource value: 7 + public const int TextAppearance_android_shadowRadius = 7; + + // aapt resource value: 3 + public const int TextAppearance_android_textColor = 3; + + // aapt resource value: 0 + public const int TextAppearance_android_textSize = 0; + + // aapt resource value: 2 + public const int TextAppearance_android_textStyle = 2; + + // aapt resource value: 1 + public const int TextAppearance_android_typeface = 1; + + // aapt resource value: 8 + public const int TextAppearance_textAllCaps = 8; + + public static int[] TextInputLayout = new int[] { + 16842906, + 16843088, + 2130772275, + 2130772276, + 2130772277, + 2130772278, + 2130772279, + 2130772280, + 2130772281, + 2130772282, + 2130772283}; + + // aapt resource value: 1 + public const int TextInputLayout_android_hint = 1; + + // aapt resource value: 0 + public const int TextInputLayout_android_textColorHint = 0; + + // aapt resource value: 6 + public const int TextInputLayout_counterEnabled = 6; + + // aapt resource value: 7 + public const int TextInputLayout_counterMaxLength = 7; + + // aapt resource value: 9 + public const int TextInputLayout_counterOverflowTextAppearance = 9; + + // aapt resource value: 8 + public const int TextInputLayout_counterTextAppearance = 8; + + // aapt resource value: 4 + public const int TextInputLayout_errorEnabled = 4; + + // aapt resource value: 5 + public const int TextInputLayout_errorTextAppearance = 5; + + // aapt resource value: 10 + public const int TextInputLayout_hintAnimationEnabled = 10; + + // aapt resource value: 3 + public const int TextInputLayout_hintEnabled = 3; + + // aapt resource value: 2 + public const int TextInputLayout_hintTextAppearance = 2; + + public static int[] Toolbar = new int[] { + 16842927, + 16843072, + 2130772009, + 2130772012, + 2130772016, + 2130772028, + 2130772029, + 2130772030, + 2130772031, + 2130772033, + 2130772195, + 2130772196, + 2130772197, + 2130772198, + 2130772199, + 2130772200, + 2130772201, + 2130772202, + 2130772203, + 2130772204, + 2130772205, + 2130772206, + 2130772207, + 2130772208, + 2130772209}; + + // aapt resource value: 0 + public const int Toolbar_android_gravity = 0; + + // aapt resource value: 1 + public const int Toolbar_android_minHeight = 1; + + // aapt resource value: 19 + public const int Toolbar_collapseContentDescription = 19; + + // aapt resource value: 18 + public const int Toolbar_collapseIcon = 18; + + // aapt resource value: 6 + public const int Toolbar_contentInsetEnd = 6; + + // aapt resource value: 7 + public const int Toolbar_contentInsetLeft = 7; + + // aapt resource value: 8 + public const int Toolbar_contentInsetRight = 8; + + // aapt resource value: 5 + public const int Toolbar_contentInsetStart = 5; + + // aapt resource value: 4 + public const int Toolbar_logo = 4; + + // aapt resource value: 22 + public const int Toolbar_logoDescription = 22; + + // aapt resource value: 17 + public const int Toolbar_maxButtonHeight = 17; + + // aapt resource value: 21 + public const int Toolbar_navigationContentDescription = 21; + + // aapt resource value: 20 + public const int Toolbar_navigationIcon = 20; + + // aapt resource value: 9 + public const int Toolbar_popupTheme = 9; + + // aapt resource value: 3 + public const int Toolbar_subtitle = 3; + + // aapt resource value: 11 + public const int Toolbar_subtitleTextAppearance = 11; + + // aapt resource value: 24 + public const int Toolbar_subtitleTextColor = 24; + + // aapt resource value: 2 + public const int Toolbar_title = 2; + + // aapt resource value: 16 + public const int Toolbar_titleMarginBottom = 16; + + // aapt resource value: 14 + public const int Toolbar_titleMarginEnd = 14; + + // aapt resource value: 13 + public const int Toolbar_titleMarginStart = 13; + + // aapt resource value: 15 + public const int Toolbar_titleMarginTop = 15; + + // aapt resource value: 12 + public const int Toolbar_titleMargins = 12; + + // aapt resource value: 10 + public const int Toolbar_titleTextAppearance = 10; + + // aapt resource value: 23 + public const int Toolbar_titleTextColor = 23; + + public static int[] View = new int[] { + 16842752, + 16842970, + 2130772210, + 2130772211, + 2130772212}; + + // aapt resource value: 1 + public const int View_android_focusable = 1; + + // aapt resource value: 0 + public const int View_android_theme = 0; + + // aapt resource value: 3 + public const int View_paddingEnd = 3; + + // aapt resource value: 2 + public const int View_paddingStart = 2; + + // aapt resource value: 4 + public const int View_theme = 4; + + public static int[] ViewBackgroundHelper = new int[] { + 16842964, + 2130772213, + 2130772214}; + + // aapt resource value: 0 + public const int ViewBackgroundHelper_android_background = 0; + + // aapt resource value: 1 + public const int ViewBackgroundHelper_backgroundTint = 1; + + // aapt resource value: 2 + public const int ViewBackgroundHelper_backgroundTintMode = 2; + + public static int[] ViewStubCompat = new int[] { + 16842960, + 16842994, + 16842995}; + + // aapt resource value: 0 + public const int ViewStubCompat_android_id = 0; + + // aapt resource value: 2 + public const int ViewStubCompat_android_inflatedId = 2; + + // aapt resource value: 1 + public const int ViewStubCompat_android_layout = 1; + + static Styleable() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Styleable() + { + } + } + } +} +#pragma warning restore 1591 diff --git a/src/Android/Resources/drawable-hdpi/icon.png b/src/Android/Resources/drawable-hdpi/icon.png new file mode 100644 index 000000000..964f110ab Binary files /dev/null and b/src/Android/Resources/drawable-hdpi/icon.png differ diff --git a/src/Android/Resources/drawable-xhdpi/icon.png b/src/Android/Resources/drawable-xhdpi/icon.png new file mode 100644 index 000000000..3c01e60ce Binary files /dev/null and b/src/Android/Resources/drawable-xhdpi/icon.png differ diff --git a/src/Android/Resources/drawable-xxhdpi/icon.png b/src/Android/Resources/drawable-xxhdpi/icon.png new file mode 100644 index 000000000..0d8c1c57d Binary files /dev/null and b/src/Android/Resources/drawable-xxhdpi/icon.png differ diff --git a/src/Android/Resources/drawable/icon.png b/src/Android/Resources/drawable/icon.png new file mode 100644 index 000000000..b0ba7150f Binary files /dev/null and b/src/Android/Resources/drawable/icon.png differ diff --git a/src/Android/Services/KeyStoreStorageService.cs b/src/Android/Services/KeyStoreStorageService.cs new file mode 100644 index 000000000..406d261bb --- /dev/null +++ b/src/Android/Services/KeyStoreStorageService.cs @@ -0,0 +1,112 @@ +using System.IO; +using System.IO.IsolatedStorage; +using Java.Lang; +using Java.Security; +using Javax.Crypto; +using Android.OS; +using Bit.App.Abstractions; + +namespace Bit.Android.Services +{ + public class KeyStoreStorageService : ISecureStorageService + { + private const string StorageFile = "Bit.Android.KeyStoreStorageService"; + + private static readonly object SaveLock = new object(); + + private readonly KeyStore _keyStore; + private readonly KeyStore.PasswordProtection _protection; + + public KeyStoreStorageService() + : this(Build.Serial.ToCharArray()) { } + + public KeyStoreStorageService(char[] password) + { + _keyStore = KeyStore.GetInstance(KeyStore.DefaultType); + _protection = new KeyStore.PasswordProtection(password); + + if(File.FileExists(StorageFile)) + { + using(var stream = new IsolatedStorageFileStream(StorageFile, FileMode.Open, FileAccess.Read, File)) + { + _keyStore.Load(stream, password); + } + } + else + { + _keyStore.Load(null, password); + } + } + + private static IsolatedStorageFile File + { + get { return IsolatedStorageFile.GetUserStoreForApplication(); } + } + + public void Store(string key, byte[] dataBytes) + { + _keyStore.SetEntry(key, new KeyStore.SecretKeyEntry(new SecureData(dataBytes)), _protection); + Save(); + } + + public byte[] Retrieve(string key) + { + var entry = _keyStore.GetEntry(key, _protection) as KeyStore.SecretKeyEntry; + if(entry == null) + { + return null; + } + + return entry.SecretKey.GetEncoded(); + } + + public void Delete(string key) + { + _keyStore.DeleteEntry(key); + Save(); + } + + public bool Contains(string key) + { + return _keyStore.ContainsAlias(key); + } + + private void Save() + { + lock(SaveLock) + { + using(var stream = new IsolatedStorageFileStream(StorageFile, FileMode.OpenOrCreate, FileAccess.Write, File)) + { + _keyStore.Store(stream, _protection.GetPassword()); + } + } + } + + private class SecureData : Object, ISecretKey + { + private const string Raw = "RAW"; + + private readonly byte[] _data; + + public SecureData(byte[] dataBytes) + { + _data = dataBytes; + } + + public string Algorithm + { + get { return Raw; } + } + + public string Format + { + get { return Raw; } + } + + public byte[] GetEncoded() + { + return _data; + } + } + } +} \ No newline at end of file diff --git a/src/Android/Services/SqlService.cs b/src/Android/Services/SqlService.cs new file mode 100644 index 000000000..d7f31c516 --- /dev/null +++ b/src/Android/Services/SqlService.cs @@ -0,0 +1,22 @@ +using System; +using System.IO; +using Bit.App.Abstractions; + +namespace Bit.Android.Services +{ + public class SqlService : ISqlService + { + public SQLite.SQLiteConnection GetConnection() + { + var sqliteFilename = "bitwarden.db3"; + var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal); // Documents folder + var path = Path.Combine(documentsPath, sqliteFilename); + + Console.WriteLine(path); + var conn = new SQLite.SQLiteConnection(path); + + // Return the database connection + return conn; + } + } +} diff --git a/src/Android/packages.config b/src/Android/packages.config new file mode 100644 index 000000000..15fbb6f75 --- /dev/null +++ b/src/Android/packages.config @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/App/Abstractions/IDataObject.cs b/src/App/Abstractions/IDataObject.cs new file mode 100644 index 000000000..9f056384f --- /dev/null +++ b/src/App/Abstractions/IDataObject.cs @@ -0,0 +1,9 @@ +using System; + +namespace Bit.App.Abstractions +{ + public interface IDataObject where T : IEquatable + { + T Id { get; } + } +} diff --git a/src/App/Abstractions/Services/IApiService.cs b/src/App/Abstractions/Services/IApiService.cs new file mode 100644 index 000000000..0373a2d27 --- /dev/null +++ b/src/App/Abstractions/Services/IApiService.cs @@ -0,0 +1,13 @@ +using System.Net.Http; +using System.Threading.Tasks; +using Bit.App.Models.Api; + +namespace Bit.App.Abstractions +{ + public interface IApiService + { + HttpClient Client { get; set; } + + Task> HandleErrorAsync(HttpResponseMessage response); + } +} diff --git a/src/App/Abstractions/Services/IAuthService.cs b/src/App/Abstractions/Services/IAuthService.cs new file mode 100644 index 000000000..67f657709 --- /dev/null +++ b/src/App/Abstractions/Services/IAuthService.cs @@ -0,0 +1,13 @@ +using System.Threading.Tasks; +using Bit.App.Models.Api; + +namespace Bit.App.Abstractions +{ + public interface IAuthService + { + bool IsAuthenticated { get; } + string Token { get; set; } + + Task> TokenPostAsync(TokenRequest request); + } +} diff --git a/src/App/Abstractions/Services/ICryptoService.cs b/src/App/Abstractions/Services/ICryptoService.cs new file mode 100644 index 000000000..efa657b1d --- /dev/null +++ b/src/App/Abstractions/Services/ICryptoService.cs @@ -0,0 +1,17 @@ +using Bit.App.Models; + +namespace Bit.App.Abstractions +{ + public interface ICryptoService + { + string Base64Key { get; } + byte[] Key { get; set; } + + string Decrypt(CipherString encyptedValue); + CipherString Encrypt(string plaintextValue); + byte[] MakeKeyFromPassword(string password, string salt); + string MakeKeyFromPasswordBase64(string password, string salt); + byte[] HashPassword(byte[] key, string password); + string HashPasswordBase64(byte[] key, string password); + } +} \ No newline at end of file diff --git a/src/App/Abstractions/Services/IDatabaseService.cs b/src/App/Abstractions/Services/IDatabaseService.cs new file mode 100644 index 000000000..c75225bb2 --- /dev/null +++ b/src/App/Abstractions/Services/IDatabaseService.cs @@ -0,0 +1,7 @@ +namespace Bit.App.Abstractions +{ + public interface IDatabaseService + { + void CreateTables(); + } +} \ No newline at end of file diff --git a/src/App/Abstractions/Services/IFolderService.cs b/src/App/Abstractions/Services/IFolderService.cs new file mode 100644 index 000000000..3b1c56ebd --- /dev/null +++ b/src/App/Abstractions/Services/IFolderService.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Bit.App.Models; + +namespace Bit.App.Abstractions +{ + public interface IFolderService + { + Task> GetAllAsync(); + Task SaveAsync(Folder folder); + } +} diff --git a/src/App/Abstractions/Services/ISecureStorageService.cs b/src/App/Abstractions/Services/ISecureStorageService.cs new file mode 100644 index 000000000..c93ad12b3 --- /dev/null +++ b/src/App/Abstractions/Services/ISecureStorageService.cs @@ -0,0 +1,10 @@ +namespace Bit.App.Abstractions +{ + public interface ISecureStorageService + { + void Store(string key, byte[] dataBytes); + byte[] Retrieve(string key); + void Delete(string key); + bool Contains(string key); + } +} diff --git a/src/App/Abstractions/Services/ISiteService.cs b/src/App/Abstractions/Services/ISiteService.cs new file mode 100644 index 000000000..0ba7d815f --- /dev/null +++ b/src/App/Abstractions/Services/ISiteService.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Bit.App.Models; + +namespace Bit.App.Abstractions +{ + public interface ISiteService + { + Task> GetAllAsync(); + Task SaveAsync(Site site); + } +} diff --git a/src/App/Abstractions/Services/ISqlService.cs b/src/App/Abstractions/Services/ISqlService.cs new file mode 100644 index 000000000..30ac5da48 --- /dev/null +++ b/src/App/Abstractions/Services/ISqlService.cs @@ -0,0 +1,9 @@ +using SQLite; + +namespace Bit.App.Abstractions +{ + public interface ISqlService + { + SQLiteConnection GetConnection(); + } +} diff --git a/src/App/App.cs b/src/App/App.cs new file mode 100644 index 000000000..e3c57118c --- /dev/null +++ b/src/App/App.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Bit.App.Abstractions; +using Bit.App.Views; +using Xamarin.Forms; + +namespace Bit.App +{ + public class App : Application + { + private readonly IDatabaseService _databaseService; + + public App(IAuthService authService, IDatabaseService databaseService) + { + _databaseService = databaseService; + + if(authService.IsAuthenticated) + { + var nav = new NavigationPage(new VaultListPage()); + nav.BarBackgroundColor = Color.FromHex("3c8dbc"); + nav.BarTextColor = Color.FromHex("ffffff"); + + MainPage = nav; + } + else + { + var nav = new NavigationPage(new LoginPage()); + nav.BarBackgroundColor = Color.FromHex("3c8dbc"); + nav.BarTextColor = Color.FromHex("ffffff"); + + MainPage = nav; + } + + MainPage.BackgroundColor = Color.FromHex("ecf0f5"); + } + + protected override void OnStart() + { + // Handle when your app starts + _databaseService.CreateTables(); + } + + protected override void OnSleep() + { + // Handle when your app sleeps + } + + protected override void OnResume() + { + // Handle when your app resumes + } + } +} diff --git a/src/App/App.csproj b/src/App/App.csproj new file mode 100644 index 000000000..afa30dc04 --- /dev/null +++ b/src/App/App.csproj @@ -0,0 +1,149 @@ + + + + + 10.0 + Debug + AnyCPU + {B490C5DA-639E-4994-ABD2-54222B8A348E} + Library + Properties + Bit.App + Bit.App + v4.5 + Profile111 + 512 + {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + + + + + true + full + false + bin\Debug\ + TRACE;DEBUG;NETFX_CORE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE;NETFX_CORE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ..\..\packages\Portable.BouncyCastle.1.8.1\lib\portable-net45+win8+wpa81+MonoTouch10+MonoAndroid10+xamarinmac20+xamarinios10\crypto.dll + True + + + ..\..\packages\CommonServiceLocator.1.3\lib\portable-net4+sl5+netcore45+wpa81+wp8\Microsoft.Practices.ServiceLocation.dll + True + + + ..\..\packages\Unity.3.5.1405-prerelease\lib\portable-net45+wp80+win8+wpa81+MonoAndroid10+MonoTouch10\Microsoft.Practices.Unity.dll + True + + + ..\..\packages\modernhttpclient.2.4.2\lib\Portable-Net45+WinRT45+WP8+WPA81\ModernHttpClient.dll + True + + + ..\..\packages\Newtonsoft.Json.8.0.3\lib\portable-net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll + True + + + ..\..\packages\sqlite-net-pcl.1.1.1\lib\portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10\SQLite-net.dll + True + + + ..\..\packages\SQLitePCL.raw.0.8.6\lib\portable-net45+netcore45+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\SQLitePCL.raw.dll + True + + + ..\..\packages\Xamarin.Forms.2.2.0.31\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Core.dll + True + + + ..\..\packages\Xamarin.Forms.2.2.0.31\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Platform.dll + True + + + ..\..\packages\Xamarin.Forms.2.2.0.31\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Xaml.dll + True + + + ..\..\packages\XLabs.IoC.2.0.5782\lib\portable-net45+netcore45+wpa81+wp8+MonoAndroid1+MonoTouch1+Xamarin.iOS10\XLabs.Ioc.dll + True + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + \ No newline at end of file diff --git a/src/App/Behaviors/EmailValidationBehavior.cs b/src/App/Behaviors/EmailValidationBehavior.cs new file mode 100644 index 000000000..471ef2548 --- /dev/null +++ b/src/App/Behaviors/EmailValidationBehavior.cs @@ -0,0 +1,37 @@ +using System; +using System.Text.RegularExpressions; +using Xamarin.Forms; + +namespace Bit.App.Behaviors +{ + public class EmailValidationBehavior : Behavior + { + private const string EmailRegex = @"^(?("")("".+?(? + { + private static readonly BindablePropertyKey IsValidPropertyKey = BindableProperty.CreateReadOnly("IsValid", typeof(bool), typeof(RequiredValidationBehavior), false); + public static readonly BindableProperty IsValidProperty = IsValidPropertyKey.BindableProperty; + + public bool IsValid + { + get { return (bool)GetValue(IsValidProperty); } + private set { SetValue(IsValidPropertyKey, value); } + } + + protected override void OnAttachedTo(Entry bindable) + { + bindable.TextChanged += HandleTextChanged; + } + + void HandleTextChanged(object sender, TextChangedEventArgs e) + { + IsValid = !string.IsNullOrWhiteSpace(e.NewTextValue); + ((Entry)sender).BackgroundColor = IsValid ? Color.Default : Color.Red; + } + + protected override void OnDetachingFrom(Entry bindable) + { + bindable.TextChanged -= HandleTextChanged; + } + } +} diff --git a/src/App/Models/Api/ApiError.cs b/src/App/Models/Api/ApiError.cs new file mode 100644 index 000000000..aa861b0f2 --- /dev/null +++ b/src/App/Models/Api/ApiError.cs @@ -0,0 +1,10 @@ +using System.Net; + +namespace Bit.App.Models.Api +{ + public class ApiError + { + public string Message { get; set; } + public HttpStatusCode StatusCode { get; set; } + } +} diff --git a/src/App/Models/Api/ApiResult.cs b/src/App/Models/Api/ApiResult.cs new file mode 100644 index 000000000..de3608b87 --- /dev/null +++ b/src/App/Models/Api/ApiResult.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; + +namespace Bit.App.Models.Api +{ + public class ApiResult + { + private List m_errors = new List(); + + public bool Succeeded { get; private set; } + public T Result { get; set; } + public IEnumerable Errors => m_errors; + + public static ApiResult Success(T result) + { + return new ApiResult + { + Succeeded = true, + Result = result + }; + } + + public static ApiResult Failed(params ApiError[] errors) + { + var result = new ApiResult { Succeeded = false }; + if(errors != null) + { + result.m_errors.AddRange(errors); + } + + return result; + } + } +} diff --git a/src/App/Models/Api/Request/FolderRequest.cs b/src/App/Models/Api/Request/FolderRequest.cs new file mode 100644 index 000000000..81cf0c73e --- /dev/null +++ b/src/App/Models/Api/Request/FolderRequest.cs @@ -0,0 +1,7 @@ +namespace Bit.App.Models.Api +{ + public class FolderRequest + { + public string Name { get; set; } + } +} diff --git a/src/App/Models/Api/Request/SiteRequest.cs b/src/App/Models/Api/Request/SiteRequest.cs new file mode 100644 index 000000000..436da25ce --- /dev/null +++ b/src/App/Models/Api/Request/SiteRequest.cs @@ -0,0 +1,12 @@ +namespace Bit.App.Models.Api +{ + public class SiteRequest + { + public string FolderId { get; set; } + public string Name { get; set; } + public string Uri { get; set; } + public string Username { get; set; } + public string Password { get; set; } + public string Notes { get; set; } + } +} diff --git a/src/App/Models/Api/Request/TokenRequest.cs b/src/App/Models/Api/Request/TokenRequest.cs new file mode 100644 index 000000000..5cfba970d --- /dev/null +++ b/src/App/Models/Api/Request/TokenRequest.cs @@ -0,0 +1,8 @@ +namespace Bit.App.Models.Api +{ + public class TokenRequest + { + public string Email { get; set; } + public string MasterPasswordHash { get; set; } + } +} diff --git a/src/App/Models/Api/Response/ErrorResponse.cs b/src/App/Models/Api/Response/ErrorResponse.cs new file mode 100644 index 000000000..79aa11b72 --- /dev/null +++ b/src/App/Models/Api/Response/ErrorResponse.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; + +namespace Bit.App.Models.Api +{ + public class ErrorResponse + { + public string Message { get; set; } + public Dictionary> ValidationErrors { get; set; } + // For use in development environments. + public string ExceptionMessage { get; set; } + public string ExceptionStackTrace { get; set; } + public string InnerExceptionMessage { get; set; } + } +} diff --git a/src/App/Models/Api/Response/FolderResponse.cs b/src/App/Models/Api/Response/FolderResponse.cs new file mode 100644 index 000000000..6ad1f0a69 --- /dev/null +++ b/src/App/Models/Api/Response/FolderResponse.cs @@ -0,0 +1,8 @@ +namespace Bit.App.Models.Api +{ + public class FolderResponse + { + public string Id { get; set; } + public string Name { get; set; } + } +} diff --git a/src/App/Models/Api/Response/ProfileResponse.cs b/src/App/Models/Api/Response/ProfileResponse.cs new file mode 100644 index 000000000..51ed2bc99 --- /dev/null +++ b/src/App/Models/Api/Response/ProfileResponse.cs @@ -0,0 +1,12 @@ +namespace Bit.App.Models.Api +{ + public class ProfileResponse + { + public string Id { get; set; } + public string Name { get; set; } + public string Email { get; set; } + public string MasterPasswordHint { get; set; } + public string Culture { get; set; } + public bool TwoFactorEnabled { get; set; } + } +} diff --git a/src/App/Models/Api/Response/SiteResponse.cs b/src/App/Models/Api/Response/SiteResponse.cs new file mode 100644 index 000000000..cf2dd2d69 --- /dev/null +++ b/src/App/Models/Api/Response/SiteResponse.cs @@ -0,0 +1,16 @@ +namespace Bit.App.Models.Api +{ + public class SiteResponse + { + public string Id { get; set; } + public string FolderId { get; set; } + public string Name { get; set; } + public string Uri { get; set; } + public string Username { get; set; } + public string Password { get; set; } + public string Notes { get; set; } + + // Expandables + public FolderResponse Folder { get; set; } + } +} diff --git a/src/App/Models/Api/Response/TokenResponse.cs b/src/App/Models/Api/Response/TokenResponse.cs new file mode 100644 index 000000000..d2bf8a22b --- /dev/null +++ b/src/App/Models/Api/Response/TokenResponse.cs @@ -0,0 +1,8 @@ +namespace Bit.App.Models.Api +{ + public class TokenResponse + { + public string Token { get; set; } + public ProfileResponse Profile { get; set; } + } +} diff --git a/src/App/Models/Cipher.cs b/src/App/Models/Cipher.cs new file mode 100644 index 000000000..14c12420c --- /dev/null +++ b/src/App/Models/Cipher.cs @@ -0,0 +1,11 @@ +using System; + +namespace Bit.App.Models +{ + public abstract class Cipher + { + public int Id { get; set; } + public string ServerId { get; set; } + public CipherString Name { get; set; } + } +} diff --git a/src/App/Models/CipherString.cs b/src/App/Models/CipherString.cs new file mode 100644 index 000000000..70dff2dda --- /dev/null +++ b/src/App/Models/CipherString.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Bit.App.Abstractions; +using XLabs.Ioc; + +namespace Bit.App.Models +{ + public class CipherString + { + public CipherString(string encryptedString) + { + if(string.IsNullOrWhiteSpace(encryptedString) || !encryptedString.Contains("|")) + { + throw new ArgumentException(nameof(encryptedString)); + } + + EncryptedString = encryptedString; + } + + public CipherString(string initializationVector, string cipherText) + { + if(string.IsNullOrWhiteSpace(initializationVector)) + { + throw new ArgumentNullException(nameof(initializationVector)); + } + + if(string.IsNullOrWhiteSpace(cipherText)) + { + throw new ArgumentNullException(nameof(cipherText)); + } + + EncryptedString = string.Format("{0}|{1}", initializationVector, cipherText); + } + + public string EncryptedString { get; private set; } + public string InitializationVector { get { return EncryptedString?.Split('|')[0]; } } + public string CipherText { get { return EncryptedString?.Split('|')[1]; } } + public byte[] InitializationVectorBytes { get { return Convert.FromBase64String(InitializationVector); } } + public byte[] CipherTextBytes { get { return Convert.FromBase64String(CipherText); } } + + public string Decrypt() + { + var cryptoService = Resolver.Resolve(); + return cryptoService.Decrypt(this); + } + } +} diff --git a/src/App/Models/Data/FolderData.cs b/src/App/Models/Data/FolderData.cs new file mode 100644 index 000000000..4a072c06f --- /dev/null +++ b/src/App/Models/Data/FolderData.cs @@ -0,0 +1,32 @@ +using System; +using SQLite; +using Bit.App.Abstractions; + +namespace Bit.App.Models.Data +{ + [Table("Folder")] + public class FolderData : IDataObject + { + public FolderData() + { } + + public FolderData(Folder folder) + { + Id = folder.Id; + ServerId = folder.ServerId; + Name = folder.Name?.EncryptedString; + } + + [PrimaryKey] + [AutoIncrement] + public int Id { get; set; } + public string ServerId { get; set; } + public string Name { get; set; } + public DateTime RevisionDateTime { get; set; } = DateTime.UtcNow; + + public Folder ToFolder() + { + return new Folder(this); + } + } +} diff --git a/src/App/Models/Data/SiteData.cs b/src/App/Models/Data/SiteData.cs new file mode 100644 index 000000000..6c8c55e0f --- /dev/null +++ b/src/App/Models/Data/SiteData.cs @@ -0,0 +1,44 @@ +using System; +using SQLite; +using Bit.App.Abstractions; + +namespace Bit.App.Models.Data +{ + [Table("Site")] + public class SiteData : IDataObject + { + public SiteData() + { } + + public SiteData(Site site) + { + Id = site.Id; + ServerId = site.ServerId; + FolderId = site.FolderId; + ServerFolderId = site.ServerFolderId; + Name = site.Name?.EncryptedString; + Uri = site.Uri?.EncryptedString; + Username = site.Username?.EncryptedString; + Password = site.Password?.EncryptedString; + Notes = site.Notes?.EncryptedString; + } + + [PrimaryKey] + [AutoIncrement] + public int Id { get; set; } + public string ServerId { get; set; } + public int? FolderId { get; set; } + public string ServerFolderId { get; set; } + public string Name { get; set; } + public string Uri { get; set; } + public string Username { get; set; } + public string Password { get; set; } + public string Notes { get; set; } + public DateTime RevisionDateTime { get; set; } = DateTime.UtcNow; + + public Site ToSite() + { + return new Site(this); + } + } +} diff --git a/src/App/Models/Folder.cs b/src/App/Models/Folder.cs new file mode 100644 index 000000000..4aaffebdd --- /dev/null +++ b/src/App/Models/Folder.cs @@ -0,0 +1,29 @@ +using Bit.App.Models.Data; +using Bit.App.Models.Api; + +namespace Bit.App.Models +{ + public class Folder : Cipher + { + public Folder() + { } + + public Folder(FolderData data) + { + Id = data.Id; + ServerId = data.ServerId; + Name = data.Name != null ? new CipherString(data.Name) : null; + } + + public Folder(FolderResponse response) + { + ServerId = response.Id; + Name = response.Name != null ? new CipherString(response.Name) : null; + } + + public FolderData ToFolderData() + { + return new FolderData(this); + } + } +} diff --git a/src/App/Models/Site.cs b/src/App/Models/Site.cs new file mode 100644 index 000000000..846ea4860 --- /dev/null +++ b/src/App/Models/Site.cs @@ -0,0 +1,47 @@ +using Bit.App.Models.Api; +using Bit.App.Models.Data; + +namespace Bit.App.Models +{ + public class Site : Cipher + { + public Site() + { } + + public Site(SiteData data) + { + Id = data.Id; + ServerId = data.ServerId; + FolderId = data.FolderId; + ServerFolderId = data.ServerFolderId; + Name = data.Name != null ? new CipherString(data.Name) : null; + Uri = data.Uri != null ? new CipherString(data.Uri) : null; + Username = data.Username != null ? new CipherString(data.Username) : null; + Password = data.Password != null ? new CipherString(data.Password) : null; + Notes = data.Notes != null ? new CipherString(data.Notes) : null; + } + + public Site(SiteResponse response) + { + ServerId = response.Id; + ServerFolderId = response.FolderId; + Name = response.Name != null ? new CipherString(response.Name) : null; + Uri = response.Uri != null ? new CipherString(response.Uri) : null; + Username = response.Username != null ? new CipherString(response.Username) : null; + Password = response.Password != null ? new CipherString(response.Password) : null; + Notes = response.Notes != null ? new CipherString(response.Notes) : null; + } + + public int? FolderId { get; set; } + public string ServerFolderId { get; set; } + public CipherString Uri { get; set; } + public CipherString Username { get; set; } + public CipherString Password { get; set; } + public CipherString Notes { get; set; } + + public SiteData ToSiteData() + { + return new SiteData(this); + } + } +} diff --git a/src/App/Models/View/VaultView.cs b/src/App/Models/View/VaultView.cs new file mode 100644 index 000000000..c464a80fa --- /dev/null +++ b/src/App/Models/View/VaultView.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; + +namespace Bit.App.Models.View +{ + public class VaultView + { + public class Site + { + public Site(Models.Site site) + { + Id = site.Id; + Name = site.Name?.Decrypt(); + Username = site.Username?.Decrypt(); + } + + public int Id { get; set; } + public string Name { get; set; } + public string Username { get; set; } + } + + public class Folder : ObservableCollection + { + public Folder(string name) { Name = name; } + + public Folder(IEnumerable sites) + { + Name = "(none)"; + foreach(var site in sites) + { + Items.Add(new Site(site)); + } + } + + public Folder(Models.Folder folder, IEnumerable sites) + : this(sites) + { + Id = folder.Id; + Name = folder.Name?.Decrypt(); + } + + public int? Id { get; set; } + public string Name { get; set; } + public string FirstLetter { get { return Name.Substring(0, 1); } } + } + } +} diff --git a/src/App/Pages/LoginPage.cs b/src/App/Pages/LoginPage.cs new file mode 100644 index 000000000..0db4d851f --- /dev/null +++ b/src/App/Pages/LoginPage.cs @@ -0,0 +1,88 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection.Emit; +using System.Text; +using Bit.App.Abstractions; +using Bit.App.Behaviors; +using Bit.App.Models.Api; +using Xamarin.Forms; +using XLabs.Ioc; + +namespace Bit.App.Views +{ + public class LoginPage : ContentPage + { + public LoginPage() + { + var cryptoService = Resolver.Resolve(); + var authService = Resolver.Resolve(); + + var emailEntry = new Entry + { + Keyboard = Keyboard.Email, + Placeholder = "Email Address" + }; + + emailEntry.Behaviors.Add(new RequiredValidationBehavior()); + emailEntry.Behaviors.Add(new EmailValidationBehavior()); + + var masterPasswordEntry = new Entry + { + IsPassword = true, + Placeholder = "Master Password" + }; + + masterPasswordEntry.Behaviors.Add(new RequiredValidationBehavior()); + + var loginButton = new Button + { + Text = "Log In", + Command = new Command(async () => + { + if(string.IsNullOrWhiteSpace(emailEntry.Text)) + { + await DisplayAlert("An error has occurred", "The Email Address field is required.", "Ok"); + return; + } + + if(string.IsNullOrWhiteSpace(masterPasswordEntry.Text)) + { + await DisplayAlert("An error has occurred", "The Master Password field is required.", "Ok"); + return; + } + + var key = cryptoService.MakeKeyFromPassword(masterPasswordEntry.Text, emailEntry.Text); + + var request = new TokenRequest + { + Email = emailEntry.Text, + MasterPasswordHash = cryptoService.HashPasswordBase64(key, masterPasswordEntry.Text) + }; + + var response = await authService.TokenPostAsync(request); + if(!response.Succeeded) + { + throw new Exception(); + } + + cryptoService.Key = key; + authService.Token = response.Result.Token; + await Navigation.PushAsync(new VaultListPage()); + }) + }; + + var stackLayout = new StackLayout + { + Padding = new Thickness(10, 50, 10, 0) + }; + stackLayout.Children.Add(emailEntry); + stackLayout.Children.Add(masterPasswordEntry); + stackLayout.Children.Add(loginButton); + + Title = "Log In"; + Content = stackLayout; + NavigationPage.SetHasNavigationBar(this, false); + } + } +} diff --git a/src/App/Pages/VaultAddFolderPage.cs b/src/App/Pages/VaultAddFolderPage.cs new file mode 100644 index 000000000..89da50e61 --- /dev/null +++ b/src/App/Pages/VaultAddFolderPage.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection.Emit; +using System.Text; +using Bit.App.Abstractions; +using Bit.App.Models; +using Xamarin.Forms; +using XLabs.Ioc; + +namespace Bit.App.Views +{ + public class VaultAddFolderPage : ContentPage + { + public VaultAddFolderPage() + { + var cryptoService = Resolver.Resolve(); + var folderService = Resolver.Resolve(); + + var nameEntry = new Entry(); + + var stackLayout = new StackLayout(); + stackLayout.Children.Add(new Label { Text = "Name" }); + stackLayout.Children.Add(nameEntry); + + var scrollView = new ScrollView + { + Content = stackLayout, + Orientation = ScrollOrientation.Vertical + }; + + var saveToolBarItem = new ToolbarItem("Save", null, async () => + { + if(string.IsNullOrWhiteSpace(nameEntry.Text)) + { + await DisplayAlert("An error has occurred", "The Name field is required.", "Ok"); + return; + } + + var folder = new Folder + { + Name = new CipherString(nameEntry.Text) + }; + await folderService.SaveAsync(folder); + await Navigation.PopAsync(); + }, ToolbarItemOrder.Default, 0); + + Title = "Add Folder"; + Content = scrollView; + ToolbarItems.Add(saveToolBarItem); + } + } +} diff --git a/src/App/Pages/VaultAddSitePage.cs b/src/App/Pages/VaultAddSitePage.cs new file mode 100644 index 000000000..1d7e6ca4a --- /dev/null +++ b/src/App/Pages/VaultAddSitePage.cs @@ -0,0 +1,79 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection.Emit; +using System.Text; +using Bit.App.Abstractions; +using Bit.App.Models; +using Xamarin.Forms; +using XLabs.Ioc; + +namespace Bit.App.Views +{ + public class VaultAddSitePage : ContentPage + { + public VaultAddSitePage() + { + var cryptoService = Resolver.Resolve(); + var siteService = Resolver.Resolve(); + + var uriEntry = new Entry { Keyboard = Keyboard.Url }; + var nameEntry = new Entry(); + var folderEntry = new Entry { }; + var usernameEntry = new Entry(); + var passwordEntry = new Entry { IsPassword = true }; + var notesEditor = new Editor(); + + var stackLayout = new StackLayout(); + stackLayout.Children.Add(new Label { Text = "URI" }); + stackLayout.Children.Add(uriEntry); + stackLayout.Children.Add(new Label { Text = "Name" }); + stackLayout.Children.Add(nameEntry); + stackLayout.Children.Add(new Label { Text = "Folder" }); + stackLayout.Children.Add(folderEntry); + stackLayout.Children.Add(new Label { Text = "Username" }); + stackLayout.Children.Add(usernameEntry); + stackLayout.Children.Add(new Label { Text = "Password" }); + stackLayout.Children.Add(passwordEntry); + stackLayout.Children.Add(new Label { Text = "Notes" }); + stackLayout.Children.Add(notesEditor); + + var scrollView = new ScrollView + { + Content = stackLayout, + Orientation = ScrollOrientation.Vertical + }; + + var saveToolBarItem = new ToolbarItem("Save", null, async () => + { + if(string.IsNullOrWhiteSpace(uriEntry.Text)) + { + await DisplayAlert("An error has occurred", "The Uri field is required.", "Ok"); + return; + } + + if(string.IsNullOrWhiteSpace(nameEntry.Text)) + { + await DisplayAlert("An error has occurred", "The Name field is required.", "Ok"); + return; + } + + var site = new Site + { + Uri = uriEntry.Text.Encrypt(), + Name = nameEntry.Text.Encrypt(), + Username = usernameEntry.Text?.Encrypt(), + Password = passwordEntry.Text?.Encrypt(), + Notes = notesEditor.Text?.Encrypt() + }; + + await siteService.SaveAsync(site); + await Navigation.PopAsync(); + }, ToolbarItemOrder.Default, 0); + + Title = "Add Site"; + Content = scrollView; + ToolbarItems.Add(saveToolBarItem); + } + } +} diff --git a/src/App/Pages/VaultEditFolderPage.cs b/src/App/Pages/VaultEditFolderPage.cs new file mode 100644 index 000000000..70710710d --- /dev/null +++ b/src/App/Pages/VaultEditFolderPage.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection.Emit; +using System.Text; + +using Xamarin.Forms; + +namespace Bit.App.Views +{ + public class VaultEditFolderPage : ContentPage + { + public VaultEditFolderPage() + { + Title = "Edit Folder"; + Content = null; + } + } +} diff --git a/src/App/Pages/VaultEditSitePage.cs b/src/App/Pages/VaultEditSitePage.cs new file mode 100644 index 000000000..a6fd95eea --- /dev/null +++ b/src/App/Pages/VaultEditSitePage.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection.Emit; +using System.Text; + +using Xamarin.Forms; + +namespace Bit.App.Views +{ + public class VaultEditSitePage : ContentPage + { + public VaultEditSitePage() + { + Title = "Edit Site"; + Content = null; + } + } +} diff --git a/src/App/Pages/VaultListPage.cs b/src/App/Pages/VaultListPage.cs new file mode 100644 index 000000000..f1b4b490b --- /dev/null +++ b/src/App/Pages/VaultListPage.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using Bit.App.Abstractions; +using Bit.App.Models.View; +using Xamarin.Forms; +using XLabs.Ioc; + +namespace Bit.App.Views +{ + public class VaultListPage : ContentPage + { + private readonly IFolderService _folderService; + private readonly ISiteService _siteService; + private ListView _listView; + + public VaultListPage() + { + _folderService = Resolver.Resolve(); + _siteService = Resolver.Resolve(); + + var addSiteToolBarItem = new ToolbarItem("+", null, async () => + { + var addSitePage = new VaultAddSitePage(); + await Navigation.PushAsync(addSitePage); + }, ToolbarItemOrder.Default, 0); + + ToolbarItems.Add(addSiteToolBarItem); + + _listView = new ListView + { + IsGroupingEnabled = true, + GroupDisplayBinding = new Binding("Name") + }; + + _listView.ItemSelected += FolderSelected; + _listView.ItemTemplate = new DataTemplate(() => + { + var cell = new TextCell(); + cell.SetBinding(TextCell.TextProperty, s => s.Name); + cell.SetBinding(TextCell.DetailProperty, s => s.Username); + return cell; + }); + + Title = "My Vault"; + Content = _listView; + NavigationPage.SetHasBackButton(this, false); + } + + protected override void OnAppearing() + { + base.OnAppearing(); + + var folders = _folderService.GetAllAsync().GetAwaiter().GetResult(); + var sites = _siteService.GetAllAsync().GetAwaiter().GetResult(); + + var folderItems = folders.Select(f => new VaultView.Folder(f, sites.Where(s => s.FolderId == f.Id))).ToList(); + // add the sites with no folder + folderItems.Add(new VaultView.Folder(sites.Where(s => !s.FolderId.HasValue))); + _listView.ItemsSource = folderItems; + } + + void FolderSelected(object sender, SelectedItemChangedEventArgs e) + { + + } + + void SiteSelected(object sender, SelectedItemChangedEventArgs e) + { + + } + } +} diff --git a/src/App/Pages/VaultViewSitePage.cs b/src/App/Pages/VaultViewSitePage.cs new file mode 100644 index 000000000..bae7eeeab --- /dev/null +++ b/src/App/Pages/VaultViewSitePage.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection.Emit; +using System.Text; + +using Xamarin.Forms; + +namespace Bit.App.Views +{ + public class VaultViewSitePage : ContentPage + { + private int _siteId; + + public VaultViewSitePage(int siteId) + { + _siteId = siteId; + + Title = "View Site"; + Content = null; + } + } +} diff --git a/src/App/Properties/AssemblyInfo.cs b/src/App/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..f95584e1a --- /dev/null +++ b/src/App/Properties/AssemblyInfo.cs @@ -0,0 +1,28 @@ +using System.Resources; +using System.Reflection; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Bit.App")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("bitwarden")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: NeutralResourcesLanguage("en")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/App/Services/ApiService.cs b/src/App/Services/ApiService.cs new file mode 100644 index 000000000..cde2c3e67 --- /dev/null +++ b/src/App/Services/ApiService.cs @@ -0,0 +1,40 @@ +using System; +using System.Net.Http; +using System.Threading.Tasks; +using Bit.App.Abstractions; +using Bit.App.Models.Api; +using ModernHttpClient; +using Newtonsoft.Json; + +namespace Bit.App.Services +{ + public class ApiService : IApiService + { + public ApiService() + { + Client = new HttpClient(new NativeMessageHandler()); + Client.BaseAddress = new Uri("https://api.bitwarden.com"); + } + + public HttpClient Client { get; set; } + + public async Task> HandleErrorAsync(HttpResponseMessage response) + { + var error = new ApiError + { + Message = "An unknown error has occured.", + StatusCode = response.StatusCode + }; + + try + { + var responseContent = await response.Content.ReadAsStringAsync(); + var errorResponseModel = JsonConvert.DeserializeObject(responseContent); + error.Message = errorResponseModel.Message; + } + catch(JsonReaderException) { } + + return ApiResult.Failed(error); + } + } +} diff --git a/src/App/Services/AuthService.cs b/src/App/Services/AuthService.cs new file mode 100644 index 000000000..41cc67aec --- /dev/null +++ b/src/App/Services/AuthService.cs @@ -0,0 +1,72 @@ +using System; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; +using Bit.App.Abstractions; +using Bit.App.Models.Api; +using Newtonsoft.Json; + +namespace Bit.App.Services +{ + public class AuthService : IAuthService + { + private const string TokenKey = "token"; + + private readonly ISecureStorageService _secureStorage; + private readonly ICryptoService _cryptoService; + private readonly IApiService _apiService; + + public AuthService( + ISecureStorageService secureStorage, + ICryptoService cryptoService, + IApiService apiService) + { + _secureStorage = secureStorage; + _cryptoService = cryptoService; + _apiService = apiService; + } + + public string Token + { + get + { + var tokenBytes = _secureStorage.Retrieve(TokenKey); + return Encoding.UTF8.GetString(tokenBytes, 0, tokenBytes.Length); + } + set + { + if(value != null) + { + var tokenBytes = Encoding.UTF8.GetBytes(value); + _secureStorage.Store(TokenKey, tokenBytes); + } + else + { + _secureStorage.Delete(TokenKey); + } + } + } + + public bool IsAuthenticated + { + get + { + return _cryptoService.Key != null && Token != null; + } + } + + public async Task> TokenPostAsync(TokenRequest request) + { + var requestContent = JsonConvert.SerializeObject(request); + var response = await _apiService.Client.PostAsync("/auth/token", new StringContent(requestContent, Encoding.UTF8, "application/json")); + if(!response.IsSuccessStatusCode) + { + return await _apiService.HandleErrorAsync(response); + } + + var responseContent = await response.Content.ReadAsStringAsync(); + var responseObj = JsonConvert.DeserializeObject(responseContent); + return ApiResult.Success(responseObj); + } + } +} diff --git a/src/App/Services/CryptoService.cs b/src/App/Services/CryptoService.cs new file mode 100644 index 000000000..32b9c85b9 --- /dev/null +++ b/src/App/Services/CryptoService.cs @@ -0,0 +1,166 @@ +using System; +using System.Text; +using Bit.App.Abstractions; +using Bit.App.Models; +using Org.BouncyCastle.Crypto.Digests; +using Org.BouncyCastle.Crypto.Engines; +using Org.BouncyCastle.Crypto.Generators; +using Org.BouncyCastle.Crypto.Modes; +using Org.BouncyCastle.Crypto.Paddings; +using Org.BouncyCastle.Crypto.Parameters; + +namespace Bit.App.Services +{ + public class CryptoService : ICryptoService + { + private const string KeyKey = "key"; + private const int InitializationVectorSize = 16; + private const int KeySize = 256; + private const int Iterations = 5000; + + private readonly PaddedBufferedBlockCipher _cipher; + private readonly ISecureStorageService _secureStorage; + private KeyParameter _keyParameter; + + public CryptoService(ISecureStorageService secureStorage) + { + var engine = new AesEngine(); + var blockCipher = new CbcBlockCipher(engine); + _cipher = new PaddedBufferedBlockCipher(blockCipher); + + _secureStorage = secureStorage; + } + + public byte[] Key + { + get + { + if(_keyParameter != null) + { + _keyParameter.GetKey(); + } + + var storedKey = _secureStorage.Retrieve(KeyKey); + if(storedKey == null) + { + return null; + } + + _keyParameter = new KeyParameter(storedKey); + return _keyParameter.GetKey(); + } + set + { + _secureStorage.Store(KeyKey, value); + _keyParameter = new KeyParameter(value); + } + } + public string Base64Key { get { return Convert.ToBase64String(Key); } } + + public CipherString Encrypt(string plaintextValue) + { + if(Key == null) + { + throw new ArgumentNullException(nameof(Key)); + } + + if(plaintextValue == null) + { + throw new ArgumentNullException(nameof(plaintextValue)); + } + + var plaintextBytes = Encoding.UTF8.GetBytes(plaintextValue); + + var iv = GenerateRandomInitializationVector(); + var keyParamWithIV = new ParametersWithIV(_keyParameter, iv, 0, InitializationVectorSize); + + _cipher.Init(true, keyParamWithIV); + var encryptedBytes = new byte[_cipher.GetOutputSize(plaintextBytes.Length)]; + var length = _cipher.ProcessBytes(plaintextBytes, encryptedBytes, 0); + _cipher.DoFinal(encryptedBytes, length); + + return new CipherString(Convert.ToBase64String(iv), Convert.ToBase64String(encryptedBytes)); + } + + public string Decrypt(CipherString encyptedValue) + { + if(Key == null) + { + throw new ArgumentNullException(nameof(Key)); + } + + if(encyptedValue == null) + { + throw new ArgumentNullException(nameof(encyptedValue)); + } + + var keyParamWithIV = new ParametersWithIV(_keyParameter, encyptedValue.InitializationVectorBytes, 0, InitializationVectorSize); + + _cipher.Init(false, keyParamWithIV); + byte[] comparisonBytes = new byte[_cipher.GetOutputSize(encyptedValue.CipherTextBytes.Length)]; + var length = _cipher.ProcessBytes(encyptedValue.CipherTextBytes, comparisonBytes, 0); + _cipher.DoFinal(comparisonBytes, length); + + return Encoding.UTF8.GetString(comparisonBytes, 0, comparisonBytes.Length).TrimEnd('\0'); + } + + public byte[] MakeKeyFromPassword(string password, string salt) + { + if(password == null) + { + throw new ArgumentNullException(nameof(password)); + } + + if(salt == null) + { + throw new ArgumentNullException(nameof(salt)); + } + + var passwordBytes = Encoding.UTF8.GetBytes(password); + var saltBytes = Encoding.UTF8.GetBytes(salt); + + var generator = new Pkcs5S2ParametersGenerator(new Sha256Digest()); + generator.Init(passwordBytes, saltBytes, Iterations); + return ((KeyParameter)generator.GenerateDerivedMacParameters(KeySize)).GetKey(); + } + + public string MakeKeyFromPasswordBase64(string password, string salt) + { + var key = MakeKeyFromPassword(password, salt); + return Convert.ToBase64String(key); + } + + public byte[] HashPassword(byte[] key, string password) + { + if(key == null) + { + throw new ArgumentNullException(nameof(Key)); + } + + if(password == null) + { + throw new ArgumentNullException(nameof(password)); + } + + var passwordBytes = Encoding.UTF8.GetBytes(password); + + var generator = new Pkcs5S2ParametersGenerator(new Sha256Digest()); + generator.Init(key, passwordBytes, 1); + return ((KeyParameter)generator.GenerateDerivedMacParameters(KeySize)).GetKey(); + } + + public string HashPasswordBase64(byte[] key, string password) + { + var hash = HashPassword(key, password); + return Convert.ToBase64String(hash); + } + + private byte[] GenerateRandomInitializationVector() + { + var rand = new Random(); + var iv = new byte[InitializationVectorSize]; + rand.NextBytes(iv); + return iv; + } + } +} diff --git a/src/App/Services/DatabaseService.cs b/src/App/Services/DatabaseService.cs new file mode 100644 index 000000000..bae64887b --- /dev/null +++ b/src/App/Services/DatabaseService.cs @@ -0,0 +1,23 @@ +using System; +using Bit.App.Abstractions; +using Bit.App.Models.Data; +using SQLite; + +namespace Bit.App.Services +{ + public class DatabaseService : IDatabaseService + { + protected readonly SQLiteConnection _connection; + + public DatabaseService(ISqlService sqlService) + { + _connection = sqlService.GetConnection(); + } + + public void CreateTables() + { + _connection.CreateTable(); + _connection.CreateTable(); + } + } +} diff --git a/src/App/Services/FolderService.cs b/src/App/Services/FolderService.cs new file mode 100644 index 000000000..50815924e --- /dev/null +++ b/src/App/Services/FolderService.cs @@ -0,0 +1,39 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using System.Threading.Tasks; +using Bit.App.Abstractions; +using Bit.App.Models; +using Bit.App.Models.Data; + +namespace Bit.App.Services +{ + public class FolderService : Repository, IFolderService + { + public FolderService(ISqlService sqlite) + : base(sqlite) { } + + public new async Task> GetAllAsync() + { + var data = await base.GetAllAsync(); + return data.Select(f => new Folder(f)); + } + + public async Task SaveAsync(Folder folder) + { + var data = new FolderData(folder); + data.RevisionDateTime = DateTime.UtcNow; + + if(folder.Id == 0) + { + await CreateAsync(data); + } + else + { + await ReplaceAsync(data); + } + + folder.Id = data.Id; + } + } +} diff --git a/src/App/Services/Repository.cs b/src/App/Services/Repository.cs new file mode 100644 index 000000000..907260bc8 --- /dev/null +++ b/src/App/Services/Repository.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Bit.App.Abstractions; +using SQLite; + +namespace Bit.App.Services +{ + public abstract class Repository + where TId : IEquatable + where T : class, IDataObject, new() + { + protected readonly SQLiteConnection _connection; + + public Repository(ISqlService sqlite) + { + _connection = sqlite.GetConnection(); + } + + protected virtual Task GetByIdAsync(TId id) + { + return Task.FromResult(_connection.Get(id)); + } + + protected virtual Task> GetAllAsync() + { + return Task.FromResult(_connection.Table().Cast()); + } + + protected virtual Task CreateAsync(T obj) + { + _connection.Insert(obj); + return Task.FromResult(0); + } + + protected virtual Task ReplaceAsync(T obj) + { + _connection.Update(obj); + return Task.FromResult(0); + } + + protected virtual Task DeleteAsync(T obj) + { + _connection.Delete(obj.Id); + return Task.FromResult(0); + } + } +} diff --git a/src/App/Services/SiteService.cs b/src/App/Services/SiteService.cs new file mode 100644 index 000000000..7b67eeeba --- /dev/null +++ b/src/App/Services/SiteService.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Bit.App.Abstractions; +using Bit.App.Models; +using Bit.App.Models.Data; + +namespace Bit.App.Services +{ + public class SiteService : Repository, ISiteService + { + public SiteService(ISqlService sqlite) + : base(sqlite) { } + + public new async Task> GetAllAsync() + { + var data = await base.GetAllAsync(); + return data.Select(s => new Site(s)); + } + + public async Task SaveAsync(Site site) + { + var data = new SiteData(site); + data.RevisionDateTime = DateTime.UtcNow; + + if(site.Id == 0) + { + await CreateAsync(data); + } + else + { + await ReplaceAsync(data); + } + + site.Id = data.Id; + } + } +} diff --git a/src/App/Utilities/Extentions.cs b/src/App/Utilities/Extentions.cs new file mode 100644 index 000000000..c9ab2a4f0 --- /dev/null +++ b/src/App/Utilities/Extentions.cs @@ -0,0 +1,21 @@ +using System; +using Bit.App.Abstractions; +using Bit.App.Models; +using XLabs.Ioc; + +namespace Bit.App +{ + public static class Extentions + { + public static CipherString Encrypt(this string s) + { + if(s == null) + { + throw new ArgumentNullException(nameof(s)); + } + + var cryptoService = Resolver.Resolve(); + return cryptoService.Encrypt(s); + } + } +} diff --git a/src/App/packages.config b/src/App/packages.config new file mode 100644 index 000000000..25e33ab47 --- /dev/null +++ b/src/App/packages.config @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/iOS/AppDelegate.cs b/src/iOS/AppDelegate.cs new file mode 100644 index 000000000..f69c4c942 --- /dev/null +++ b/src/iOS/AppDelegate.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using XLabs.Ioc; +using XLabs.Ioc.Unity; + +using Foundation; +using UIKit; +using Bit.App.Abstractions; +using Bit.App.Services; +using Microsoft.Practices.Unity; +using Bit.iOS.Services; + +namespace Bit.iOS +{ + // The UIApplicationDelegate for the application. This class is responsible for launching the + // User Interface of the application, as well as listening (and optionally responding) to + // application events from iOS. + [Register("AppDelegate")] + public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate + { + // + // This method is invoked when the application has loaded and is ready to run. In this + // method you should instantiate the window, load the UI into it and then make the window + // visible. + // + // You have 17 seconds to return from this method, or iOS will terminate your application. + // + public override bool FinishedLaunching(UIApplication app, NSDictionary options) + { + global::Xamarin.Forms.Forms.Init(); + + if(!Resolver.IsSet) + { + SetIoc(); + } + + LoadApplication(new App.App(Resolver.Resolve(), Resolver.Resolve())); + + return base.FinishedLaunching(app, options); + } + + private void SetIoc() + { + var container = new UnityContainer(); + + container + .RegisterType(new ContainerControlledLifetimeManager()) + .RegisterType(new ContainerControlledLifetimeManager()) + .RegisterType(new ContainerControlledLifetimeManager()) + .RegisterType(new ContainerControlledLifetimeManager()) + .RegisterType(new ContainerControlledLifetimeManager()) + .RegisterType(new ContainerControlledLifetimeManager()) + .RegisterType(new ContainerControlledLifetimeManager()) + .RegisterType(new ContainerControlledLifetimeManager()); + + Resolver.SetResolver(new UnityResolver(container)); + } + } +} diff --git a/src/iOS/Entitlements.plist b/src/iOS/Entitlements.plist new file mode 100644 index 000000000..0c67376eb --- /dev/null +++ b/src/iOS/Entitlements.plist @@ -0,0 +1,5 @@ + + + + + diff --git a/src/iOS/Info.plist b/src/iOS/Info.plist new file mode 100644 index 000000000..ffbb5beaa --- /dev/null +++ b/src/iOS/Info.plist @@ -0,0 +1,52 @@ + + + + + UIDeviceFamily + + 1 + 2 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationPortraitUpsideDown + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + MinimumOSVersion + 8.0 + CFBundleDisplayName + bitwarden + CFBundleIdentifier + com.bitwarden.bitwarden + CFBundleVersion + 1.0 + CFBundleIconFiles + + Icon-60@2x.png + Icon-76.png + Icon-76@2x.png + Default.png + Default@2x.png + Default-568h@2x.png + Default-Portrait.png + Default-Portrait@2x.png + Icon-Small-40.png + Icon-Small-40@2x.png + Icon-Small.png + Icon-Small@2x.png + + UILaunchStoryboardName + LaunchScreen + CFBundleShortVersionString + 0.0.1 + + diff --git a/src/iOS/Main.cs b/src/iOS/Main.cs new file mode 100644 index 000000000..3d025ad0c --- /dev/null +++ b/src/iOS/Main.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +using Foundation; +using UIKit; + +namespace Bit.iOS +{ + public class Application + { + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, "AppDelegate"); + } + } +} diff --git a/src/iOS/Properties/AssemblyInfo.cs b/src/iOS/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..4e744d735 --- /dev/null +++ b/src/iOS/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Bit.iOS")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("bitwarden")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("72bdc44f-c588-44f3-b6df-9aace7daafdd")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/iOS/Resources/Default-568h@2x.png b/src/iOS/Resources/Default-568h@2x.png new file mode 100644 index 000000000..26c6461e5 Binary files /dev/null and b/src/iOS/Resources/Default-568h@2x.png differ diff --git a/src/iOS/Resources/Default-Portrait.png b/src/iOS/Resources/Default-Portrait.png new file mode 100644 index 000000000..5d0d1ab4c Binary files /dev/null and b/src/iOS/Resources/Default-Portrait.png differ diff --git a/src/iOS/Resources/Default-Portrait@2x.png b/src/iOS/Resources/Default-Portrait@2x.png new file mode 100644 index 000000000..0ee2688e8 Binary files /dev/null and b/src/iOS/Resources/Default-Portrait@2x.png differ diff --git a/src/iOS/Resources/Default.png b/src/iOS/Resources/Default.png new file mode 100644 index 000000000..b74643c0a Binary files /dev/null and b/src/iOS/Resources/Default.png differ diff --git a/src/iOS/Resources/Default@2x.png b/src/iOS/Resources/Default@2x.png new file mode 100644 index 000000000..dbd6bd3e8 Binary files /dev/null and b/src/iOS/Resources/Default@2x.png differ diff --git a/src/iOS/Resources/Icon-60@2x.png b/src/iOS/Resources/Icon-60@2x.png new file mode 100644 index 000000000..4b03c4270 Binary files /dev/null and b/src/iOS/Resources/Icon-60@2x.png differ diff --git a/src/iOS/Resources/Icon-60@3x.png b/src/iOS/Resources/Icon-60@3x.png new file mode 100644 index 000000000..b03ca1bbc Binary files /dev/null and b/src/iOS/Resources/Icon-60@3x.png differ diff --git a/src/iOS/Resources/Icon-76.png b/src/iOS/Resources/Icon-76.png new file mode 100644 index 000000000..587982e2a Binary files /dev/null and b/src/iOS/Resources/Icon-76.png differ diff --git a/src/iOS/Resources/Icon-76@2x.png b/src/iOS/Resources/Icon-76@2x.png new file mode 100644 index 000000000..cd4e2c8fe Binary files /dev/null and b/src/iOS/Resources/Icon-76@2x.png differ diff --git a/src/iOS/Resources/Icon-Small-40.png b/src/iOS/Resources/Icon-Small-40.png new file mode 100644 index 000000000..6acff9441 Binary files /dev/null and b/src/iOS/Resources/Icon-Small-40.png differ diff --git a/src/iOS/Resources/Icon-Small-40@2x.png b/src/iOS/Resources/Icon-Small-40@2x.png new file mode 100644 index 000000000..b833aac26 Binary files /dev/null and b/src/iOS/Resources/Icon-Small-40@2x.png differ diff --git a/src/iOS/Resources/Icon-Small-40@3x.png b/src/iOS/Resources/Icon-Small-40@3x.png new file mode 100644 index 000000000..ab8654e49 Binary files /dev/null and b/src/iOS/Resources/Icon-Small-40@3x.png differ diff --git a/src/iOS/Resources/Icon-Small.png b/src/iOS/Resources/Icon-Small.png new file mode 100644 index 000000000..33db7e714 Binary files /dev/null and b/src/iOS/Resources/Icon-Small.png differ diff --git a/src/iOS/Resources/Icon-Small@2x.png b/src/iOS/Resources/Icon-Small@2x.png new file mode 100644 index 000000000..bf45e2592 Binary files /dev/null and b/src/iOS/Resources/Icon-Small@2x.png differ diff --git a/src/iOS/Resources/Icon-Small@3x.png b/src/iOS/Resources/Icon-Small@3x.png new file mode 100644 index 000000000..7ad3891b9 Binary files /dev/null and b/src/iOS/Resources/Icon-Small@3x.png differ diff --git a/src/iOS/Resources/LaunchScreen.storyboard b/src/iOS/Resources/LaunchScreen.storyboard new file mode 100644 index 000000000..a639c2f1a --- /dev/null +++ b/src/iOS/Resources/LaunchScreen.storyboard @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/iOS/Services/KeyChainStorageService.cs b/src/iOS/Services/KeyChainStorageService.cs new file mode 100644 index 000000000..4cfda0869 --- /dev/null +++ b/src/iOS/Services/KeyChainStorageService.cs @@ -0,0 +1,91 @@ +using System; +using System.Runtime.CompilerServices; +using Bit.App.Abstractions; +using Foundation; +using Security; + +namespace Bit.iOS.Services +{ + public class KeyChainStorageService : ISecureStorageService + { + public void Store(string key, byte[] dataBytes) + { + using(var data = NSData.FromArray(dataBytes)) + using(var newRecord = GetKeyRecord(key, data)) + { + Delete(key); + CheckError(SecKeyChain.Add(newRecord)); + } + } + + public byte[] Retrieve(string key) + { + SecStatusCode resultCode; + + using(var existingRecord = GetKeyRecord(key)) + using(var record = SecKeyChain.QueryAsRecord(existingRecord, out resultCode)) + { + if(resultCode == SecStatusCode.ItemNotFound) + { + return null; + } + + CheckError(resultCode); + return record.Generic.ToArray(); + } + } + + public void Delete(string key) + { + using(var record = GetExistingRecord(key)) + { + if(record != null) + { + CheckError(SecKeyChain.Remove(record)); + } + } + } + + public bool Contains(string key) + { + using(var existingRecord = GetExistingRecord(key)) + { + return existingRecord != null; + } + } + + private static void CheckError(SecStatusCode resultCode, [CallerMemberName] string caller = null) + { + if(resultCode != SecStatusCode.Success) + { + throw new Exception(string.Format("Failed to execute {0}. Result code: {1}", caller, resultCode)); + } + } + + private static SecRecord GetKeyRecord(string key, NSData data = null) + { + var record = new SecRecord(SecKind.GenericPassword) + { + Service = NSBundle.MainBundle.BundleIdentifier, + Account = key + }; + + if(data != null) + { + record.Generic = data; + } + + return record; + } + + private static SecRecord GetExistingRecord(string key) + { + var existingRecord = GetKeyRecord(key); + + SecStatusCode resultCode; + SecKeyChain.QueryAsRecord(existingRecord, out resultCode); + + return resultCode == SecStatusCode.Success ? existingRecord : null; + } + } +} diff --git a/src/iOS/Services/SqlService.cs b/src/iOS/Services/SqlService.cs new file mode 100644 index 000000000..54d8b42f7 --- /dev/null +++ b/src/iOS/Services/SqlService.cs @@ -0,0 +1,23 @@ +using System; +using System.IO; +using Bit.App.Abstractions; + +namespace Bit.iOS.Services +{ + public class SqlService : ISqlService + { + public SQLite.SQLiteConnection GetConnection() + { + var sqliteFilename = "bitwarden.db3"; + var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal); // Documents folder + var libraryPath = Path.Combine(documentsPath, "..", "Library"); // Library folder + var path = Path.Combine(libraryPath, sqliteFilename); + + Console.WriteLine(path); + var conn = new SQLite.SQLiteConnection(path); + + // Return the database connection + return conn; + } + } +} diff --git a/src/iOS/iOS.csproj b/src/iOS/iOS.csproj new file mode 100644 index 000000000..e433cf7cb --- /dev/null +++ b/src/iOS/iOS.csproj @@ -0,0 +1,182 @@ + + + + Debug + iPhoneSimulator + 8.0.30703 + 2.0 + {1F78403F-9A28-405B-9289-B9DBEB55F074} + {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Exe + Bit.iOS + Resources + BitiOS + + + + + true + full + false + bin\iPhoneSimulator\Debug + DEBUG + prompt + 4 + false + i386, x86_64 + None + true + + + none + true + bin\iPhoneSimulator\Release + prompt + 4 + None + i386, x86_64 + false + + + true + full + false + bin\iPhone\Debug + DEBUG + prompt + 4 + false + ARMv7, ARM64 + iPhone Developer + true + Entitlements.plist + + + none + true + bin\iPhone\Release + prompt + 4 + ARMv7, ARM64 + false + iPhone Developer + Entitlements.plist + + + none + True + bin\iPhone\Ad-Hoc + prompt + 4 + False + ARMv7, ARM64 + True + Automatic:AdHoc + iPhone Distribution + Entitlements.plist + + + none + True + bin\iPhone\AppStore + prompt + 4 + False + ARMv7, ARM64 + Automatic:AppStore + iPhone Distribution + Entitlements.plist + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ..\..\packages\CommonServiceLocator.1.3\lib\portable-net4+sl5+netcore45+wpa81+wp8\Microsoft.Practices.ServiceLocation.dll + True + + + ..\..\packages\Unity.3.5.1405-prerelease\lib\portable-net45+wp80+win8+wpa81+MonoAndroid10+MonoTouch10\Microsoft.Practices.Unity.dll + True + + + ..\..\packages\modernhttpclient.2.4.2\lib\Xamarin.iOS10\ModernHttpClient.dll + True + + + ..\..\packages\sqlite-net-pcl.1.1.1\lib\portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10\SQLite-net.dll + True + + + + + + ..\..\packages\Xamarin.Forms.2.2.0.31\lib\Xamarin.iOS10\Xamarin.Forms.Core.dll + True + + + ..\..\packages\Xamarin.Forms.2.2.0.31\lib\Xamarin.iOS10\Xamarin.Forms.Platform.dll + True + + + ..\..\packages\Xamarin.Forms.2.2.0.31\lib\Xamarin.iOS10\Xamarin.Forms.Platform.iOS.dll + True + + + ..\..\packages\Xamarin.Forms.2.2.0.31\lib\Xamarin.iOS10\Xamarin.Forms.Xaml.dll + True + + + + ..\..\packages\XLabs.IoC.2.0.5782\lib\portable-net45+netcore45+wp8+MonoAndroid1+MonoTouch1\XLabs.Ioc.dll + True + + + ..\..\packages\XLabs.IoC.Unity.2.0.5782\lib\portable-net45+netcore45+wp8+MonoAndroid1+MonoTouch1\XLabs.Ioc.Unity.dll + True + + + + + {b490c5da-639e-4994-abd2-54222b8a348e} + App + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + + \ No newline at end of file diff --git a/src/iOS/iTunesArtwork b/src/iOS/iTunesArtwork new file mode 100644 index 000000000..94c8ebd6b Binary files /dev/null and b/src/iOS/iTunesArtwork differ diff --git a/src/iOS/iTunesArtwork@2x b/src/iOS/iTunesArtwork@2x new file mode 100644 index 000000000..fa2ebf72d Binary files /dev/null and b/src/iOS/iTunesArtwork@2x differ diff --git a/src/iOS/packages.config b/src/iOS/packages.config new file mode 100644 index 000000000..f74bf259c --- /dev/null +++ b/src/iOS/packages.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/test/App.Test/App.Test.csproj b/test/App.Test/App.Test.csproj new file mode 100644 index 000000000..bbd19326e --- /dev/null +++ b/test/App.Test/App.Test.csproj @@ -0,0 +1,117 @@ + + + + + Debug + AnyCPU + {A300DCE1-8D10-4267-B96A-CB01AEB7C220} + Library + Properties + Bit.App.Test + Bit.App.Test + v4.6 + 512 + {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages + False + UnitTest + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\packages\NSubstitute.1.10.0.0\lib\net45\NSubstitute.dll + True + + + + ..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll + True + + + ..\..\packages\xunit.assert.2.1.0\lib\dotnet\xunit.assert.dll + True + + + ..\..\packages\xunit.extensibility.core.2.1.0\lib\dotnet\xunit.core.dll + True + + + ..\..\packages\xunit.extensibility.execution.2.1.0\lib\net45\xunit.execution.desktop.dll + True + + + + + + + + + + + + + + + + + {b490c5da-639e-4994-abd2-54222b8a348e} + App + + + + + + + + + + False + + + False + + + False + + + False + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + \ No newline at end of file diff --git a/test/App.Test/CryptoServiceTests.cs b/test/App.Test/CryptoServiceTests.cs new file mode 100644 index 000000000..adbd9173c --- /dev/null +++ b/test/App.Test/CryptoServiceTests.cs @@ -0,0 +1,57 @@ +using System; +using Bit.App.Abstractions; +using Bit.App.Services; +using NSubstitute; +using Xunit; + +namespace Bit.App.Test +{ + public class CryptoServiceTests + { + [Fact] + public void MakeKeyFromPasswordBase64() + { + var service = new CryptoService(Substitute.For()); + var key = service.MakeKeyFromPasswordBase64("123456", "salt"); + Assert.Equal(key, GetKey()); + } + + [Fact] + public void HashPasswordBase64() + { + var service = new CryptoService(Substitute.For()); + var key = Convert.FromBase64String(GetKey()); + var hash = service.HashPasswordBase64(key, "123456"); + Assert.Equal(hash, "7Bsl4ponrsFu0jGl4yMeLZp5tKqx6g4tLrXhMszIsjQ="); + } + + [Fact] + public void EncryptDecrypt() + { + var value = "hi"; + Assert.Equal(EncryptDecryptValue(value), value); + } + + [Fact] + public void EncryptDecryptLongValue() + { + var value = "This is a really long value that should encrypt and decrypt just fine too."; + Assert.Equal(EncryptDecryptValue(value), value); + } + + private string EncryptDecryptValue(string value) + { + var storage = Substitute.For(); + storage.Retrieve("key").Returns(Convert.FromBase64String(GetKey())); + + var service = new CryptoService(storage); + var encryptedHi = service.Encrypt(value); + return service.Decrypt(encryptedHi); + } + + private string GetKey() + { + return "QpSYI5k0bLQXEygUEHn4wMII3ERatuWDFBszk7JAhbQ="; + } + } +} diff --git a/test/App.Test/Properties/AssemblyInfo.cs b/test/App.Test/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..45c38dfcc --- /dev/null +++ b/test/App.Test/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("App.Test")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("App.Test")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("a300dce1-8d10-4267-b96a-cb01aeb7c220")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/test/App.Test/packages.config b/test/App.Test/packages.config new file mode 100644 index 000000000..8656a7d0f --- /dev/null +++ b/test/App.Test/packages.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file