Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

import 2b5dbddd740b, new directory structure in the original rx.

  • Loading branch information...
commit cde9fc6a8fe569203cb991121a35c2a9c7f4c420 1 parent 8911e1d
@atsushieno atsushieno authored
Showing with 32,296 additions and 0 deletions.
  1. +22 −0 Ix/NET/.gitattributes
  2. +163 −0 Ix/NET/.gitignore
  3. +180 −0 Ix/NET/Common.targets
  4. +2,696 −0 Ix/NET/Enumerable.cs
  5. +16 −0 Ix/NET/Import.targets
  6. +332 −0 Ix/NET/Interactive Extensions.sln
  7. +6 −0 Ix/NET/Interactive Extensions.vsmdi
  8. +10 −0 Ix/NET/Interactive Extensions.vssscc
  9. +37 −0 Ix/NET/Local.testsettings
  10. +2,019 −0 Ix/NET/System.Interactive.Async/AsyncEnumerable.Aggregates.cs
  11. +262 −0 Ix/NET/System.Interactive.Async/AsyncEnumerable.Conversions.cs
  12. +283 −0 Ix/NET/System.Interactive.Async/AsyncEnumerable.Creation.cs
  13. +381 −0 Ix/NET/System.Interactive.Async/AsyncEnumerable.Exceptions.cs
  14. +1,250 −0 Ix/NET/System.Interactive.Async/AsyncEnumerable.Generated.cs
  15. +755 −0 Ix/NET/System.Interactive.Async/AsyncEnumerable.Multiple.cs
  16. +2,466 −0 Ix/NET/System.Interactive.Async/AsyncEnumerable.Single.cs
  17. +26 −0 Ix/NET/System.Interactive.Async/AsyncEnumerator.cs
  18. +89 −0 Ix/NET/System.Interactive.Async/Disposables.cs
  19. +34 −0 Ix/NET/System.Interactive.Async/EnumerableGrouping.cs
  20. +23 −0 Ix/NET/System.Interactive.Async/IAsyncEnumerable.cs
  21. +34 −0 Ix/NET/System.Interactive.Async/IAsyncEnumerator.cs
  22. +19 −0 Ix/NET/System.Interactive.Async/IAsyncGrouping.cs
  23. +15 −0 Ix/NET/System.Interactive.Async/IOrderedAsyncEnumerable.cs
  24. +37 −0 Ix/NET/System.Interactive.Async/Properties/AssemblyInfo.cs
  25. +47 −0 Ix/NET/System.Interactive.Async/System.Interactive.Async.csproj
  26. +134 −0 Ix/NET/System.Interactive.Async/TaskExt.cs
  27. +37 −0 Ix/NET/System.Interactive.Providers/Properties/AssemblyInfo.cs
  28. +2,327 −0 Ix/NET/System.Interactive.Providers/QueryableEx.cs
  29. +41 −0 Ix/NET/System.Interactive.Providers/System.Interactive.Providers.csproj
  30. +173 −0 Ix/NET/System.Interactive/EnumerableEx.Aggregates.cs
  31. +647 −0 Ix/NET/System.Interactive/EnumerableEx.Buffering.cs
  32. +173 −0 Ix/NET/System.Interactive/EnumerableEx.Creation.cs
  33. +284 −0 Ix/NET/System.Interactive/EnumerableEx.Exceptions.cs
  34. +156 −0 Ix/NET/System.Interactive/EnumerableEx.Imperative.cs
  35. +96 −0 Ix/NET/System.Interactive/EnumerableEx.Multiple.cs
  36. +672 −0 Ix/NET/System.Interactive/EnumerableEx.Single.cs
  37. +37 −0 Ix/NET/System.Interactive/Properties/AssemblyInfo.cs
  38. +41 −0 Ix/NET/System.Interactive/System.Interactive.csproj
  39. +47 −0 Ix/NET/Tests/App.cs
  40. +2,168 −0 Ix/NET/Tests/AsyncTests.Aggregates.cs
  41. +266 −0 Ix/NET/Tests/AsyncTests.Bugs.cs
  42. +312 −0 Ix/NET/Tests/AsyncTests.Conversions.cs
  43. +409 −0 Ix/NET/Tests/AsyncTests.Creation.cs
  44. +551 −0 Ix/NET/Tests/AsyncTests.Exceptions.cs
  45. +787 −0 Ix/NET/Tests/AsyncTests.Multiple.cs
  46. +2,455 −0 Ix/NET/Tests/AsyncTests.Single.cs
  47. +54 −0 Ix/NET/Tests/AsyncTests.cs
  48. +7 −0 Ix/NET/Tests/Properties/AppManifest.xml
  49. +35 −0 Ix/NET/Tests/Properties/AssemblyInfo.cs
  50. +118 −0 Ix/NET/Tests/Tests.Aggregates.cs
  51. +625 −0 Ix/NET/Tests/Tests.Buffering.cs
  52. +224 −0 Ix/NET/Tests/Tests.Creation.cs
  53. +311 −0 Ix/NET/Tests/Tests.Exceptions.cs
  54. +180 −0 Ix/NET/Tests/Tests.Imperative.cs
  55. +74 −0 Ix/NET/Tests/Tests.Multiple.cs
  56. +139 −0 Ix/NET/Tests/Tests.Qbservable.cs
  57. +431 −0 Ix/NET/Tests/Tests.Single.cs
  58. +51 −0 Ix/NET/Tests/Tests.cs
  59. +91 −0 Ix/NET/Tests/Tests.csproj
  60. +21 −0 Ix/NET/TraceAndTestImpact.testsettings
  61. +15 −0 Ix/NET/license.txt
  62. BIN  Rx/NET/Resources/Artwork/Logo.ico
  63. BIN  Rx/NET/Resources/Artwork/Logo.png
  64. BIN  Rx/NET/Resources/Artwork/Logo_Color.png
  65. BIN  Rx/NET/Resources/Artwork/Logo_Zip.ico
  66. +29 −0 Rx/NET/Samples/EventCorrelationSample/EventCorrelationSample.sln
  67. +6 −0 Rx/NET/Samples/EventCorrelationSample/EventCorrelationSample/App.config
  68. +77 −0 Rx/NET/Samples/EventCorrelationSample/EventCorrelationSample/EventCorrelationSample.csproj
  69. +234 −0 Rx/NET/Samples/EventCorrelationSample/EventCorrelationSample/Program.cs
  70. +36 −0 Rx/NET/Samples/EventCorrelationSample/EventCorrelationSample/Properties/AssemblyInfo.cs
  71. +58 −0 Rx/NET/Samples/HOL/CS/Excercise1/Start/Excercise1.csproj
  72. +20 −0 Rx/NET/Samples/HOL/CS/Excercise1/Start/Excercise1.sln
  73. +15 −0 Rx/NET/Samples/HOL/CS/Excercise1/Start/Program.cs
  74. +36 −0 Rx/NET/Samples/HOL/CS/Excercise1/Start/Properties/AssemblyInfo.cs
  75. +58 −0 Rx/NET/Samples/HOL/CS/Excercise2/Start/Excercise2.csproj
  76. +20 −0 Rx/NET/Samples/HOL/CS/Excercise2/Start/Excercise2.sln
  77. +25 −0 Rx/NET/Samples/HOL/CS/Excercise2/Start/Program.cs
  78. +36 −0 Rx/NET/Samples/HOL/CS/Excercise2/Start/Properties/AssemblyInfo.cs
  79. +58 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step03/Excercise2.csproj
  80. +20 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step03/Excercise2.sln
  81. +25 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step03/Program.cs
  82. +36 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step03/Properties/AssemblyInfo.cs
  83. +58 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step04/Excercise2.csproj
  84. +20 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step04/Excercise2.sln
  85. +25 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step04/Program.cs
  86. +36 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step04/Properties/AssemblyInfo.cs
  87. +58 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step05/Excercise2.csproj
  88. +20 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step05/Excercise2.sln
  89. +25 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step05/Program.cs
  90. +36 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step05/Properties/AssemblyInfo.cs
  91. +58 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step06/Excercise2.csproj
  92. +20 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step06/Excercise2.sln
  93. +25 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step06/Program.cs
  94. +36 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step06/Properties/AssemblyInfo.cs
  95. +58 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step07/Excercise2.csproj
  96. +20 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step07/Excercise2.sln
  97. +25 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step07/Program.cs
  98. +36 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step07/Properties/AssemblyInfo.cs
  99. +58 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step08/Excercise2.csproj
  100. +20 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step08/Excercise2.sln
  101. +25 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step08/Program.cs
  102. +36 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step08/Properties/AssemblyInfo.cs
  103. +58 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step09/Excercise2.csproj
  104. +20 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step09/Excercise2.sln
  105. +24 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step09/Program.cs
  106. +36 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step09/Properties/AssemblyInfo.cs
  107. +58 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step10/Excercise2.csproj
  108. +20 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step10/Excercise2.sln
  109. +29 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step10/Program.cs
  110. +36 −0 Rx/NET/Samples/HOL/CS/Excercise2/Step10/Properties/AssemblyInfo.cs
  111. +60 −0 Rx/NET/Samples/HOL/CS/Excercise3/Start/Excercise3.csproj
  112. +20 −0 Rx/NET/Samples/HOL/CS/Excercise3/Start/Excercise3.sln
  113. +15 −0 Rx/NET/Samples/HOL/CS/Excercise3/Start/Program.cs
  114. +36 −0 Rx/NET/Samples/HOL/CS/Excercise3/Start/Properties/AssemblyInfo.cs
  115. +60 −0 Rx/NET/Samples/HOL/CS/Excercise3/Step03/Excercise3.csproj
  116. +20 −0 Rx/NET/Samples/HOL/CS/Excercise3/Step03/Excercise3.sln
  117. +25 −0 Rx/NET/Samples/HOL/CS/Excercise3/Step03/Program.cs
  118. +36 −0 Rx/NET/Samples/HOL/CS/Excercise3/Step03/Properties/AssemblyInfo.cs
  119. +60 −0 Rx/NET/Samples/HOL/CS/Excercise3/Step04/Excercise3.csproj
  120. +20 −0 Rx/NET/Samples/HOL/CS/Excercise3/Step04/Excercise3.sln
  121. +28 −0 Rx/NET/Samples/HOL/CS/Excercise3/Step04/Program.cs
  122. +36 −0 Rx/NET/Samples/HOL/CS/Excercise3/Step04/Properties/AssemblyInfo.cs
  123. +60 −0 Rx/NET/Samples/HOL/CS/Excercise3/Step05/Excercise3.csproj
  124. +20 −0 Rx/NET/Samples/HOL/CS/Excercise3/Step05/Excercise3.sln
  125. +24 −0 Rx/NET/Samples/HOL/CS/Excercise3/Step05/Program.cs
  126. +36 −0 Rx/NET/Samples/HOL/CS/Excercise3/Step05/Properties/AssemblyInfo.cs
  127. +60 −0 Rx/NET/Samples/HOL/CS/Excercise3/Step06/Excercise3.csproj
  128. +20 −0 Rx/NET/Samples/HOL/CS/Excercise3/Step06/Excercise3.sln
  129. +38 −0 Rx/NET/Samples/HOL/CS/Excercise3/Step06/Program.cs
  130. +36 −0 Rx/NET/Samples/HOL/CS/Excercise3/Step06/Properties/AssemblyInfo.cs
  131. +60 −0 Rx/NET/Samples/HOL/CS/Excercise4/Start/Excercise4.csproj
  132. +20 −0 Rx/NET/Samples/HOL/CS/Excercise4/Start/Excercise4.sln
  133. +38 −0 Rx/NET/Samples/HOL/CS/Excercise4/Start/Program.cs
  134. +36 −0 Rx/NET/Samples/HOL/CS/Excercise4/Start/Properties/AssemblyInfo.cs
  135. +60 −0 Rx/NET/Samples/HOL/CS/Excercise4/Step03/Excercise4.csproj
  136. +20 −0 Rx/NET/Samples/HOL/CS/Excercise4/Step03/Excercise4.sln
  137. +34 −0 Rx/NET/Samples/HOL/CS/Excercise4/Step03/Program.cs
  138. +36 −0 Rx/NET/Samples/HOL/CS/Excercise4/Step03/Properties/AssemblyInfo.cs
  139. +60 −0 Rx/NET/Samples/HOL/CS/Excercise4/Step04/Excercise4.csproj
  140. +20 −0 Rx/NET/Samples/HOL/CS/Excercise4/Step04/Excercise4.sln
  141. +38 −0 Rx/NET/Samples/HOL/CS/Excercise4/Step04/Program.cs
  142. +36 −0 Rx/NET/Samples/HOL/CS/Excercise4/Step04/Properties/AssemblyInfo.cs
  143. +60 −0 Rx/NET/Samples/HOL/CS/Excercise5/Start/Excercise5.csproj
  144. +20 −0 Rx/NET/Samples/HOL/CS/Excercise5/Start/Excercise5.sln
  145. +29 −0 Rx/NET/Samples/HOL/CS/Excercise5/Start/Program.cs
  146. +36 −0 Rx/NET/Samples/HOL/CS/Excercise5/Start/Properties/AssemblyInfo.cs
  147. +60 −0 Rx/NET/Samples/HOL/CS/Excercise5/Step03/Excercise5.csproj
  148. +20 −0 Rx/NET/Samples/HOL/CS/Excercise5/Step03/Excercise5.sln
  149. +31 −0 Rx/NET/Samples/HOL/CS/Excercise5/Step03/Program.cs
  150. +36 −0 Rx/NET/Samples/HOL/CS/Excercise5/Step03/Properties/AssemblyInfo.cs
  151. +61 −0 Rx/NET/Samples/HOL/CS/Excercise5/Step04/Excercise5.csproj
  152. +20 −0 Rx/NET/Samples/HOL/CS/Excercise5/Step04/Excercise5.sln
  153. +37 −0 Rx/NET/Samples/HOL/CS/Excercise5/Step04/Program.cs
  154. +36 −0 Rx/NET/Samples/HOL/CS/Excercise5/Step04/Properties/AssemblyInfo.cs
  155. +61 −0 Rx/NET/Samples/HOL/CS/Excercise5/Step05/Excercise5.csproj
  156. +20 −0 Rx/NET/Samples/HOL/CS/Excercise5/Step05/Excercise5.sln
  157. +41 −0 Rx/NET/Samples/HOL/CS/Excercise5/Step05/Program.cs
  158. +36 −0 Rx/NET/Samples/HOL/CS/Excercise5/Step05/Properties/AssemblyInfo.cs
  159. +60 −0 Rx/NET/Samples/HOL/CS/Excercise6/Start/Excercise6.csproj
  160. +20 −0 Rx/NET/Samples/HOL/CS/Excercise6/Start/Excercise6.sln
  161. +31 −0 Rx/NET/Samples/HOL/CS/Excercise6/Start/Program.cs
  162. +36 −0 Rx/NET/Samples/HOL/CS/Excercise6/Start/Properties/AssemblyInfo.cs
  163. +60 −0 Rx/NET/Samples/HOL/CS/Excercise6/Step02/Excercise6.csproj
  164. +20 −0 Rx/NET/Samples/HOL/CS/Excercise6/Step02/Excercise6.sln
  165. +32 −0 Rx/NET/Samples/HOL/CS/Excercise6/Step02/Program.cs
  166. +36 −0 Rx/NET/Samples/HOL/CS/Excercise6/Step02/Properties/AssemblyInfo.cs
  167. +61 −0 Rx/NET/Samples/HOL/CS/Excercise6/Step03/Excercise6.csproj
  168. +20 −0 Rx/NET/Samples/HOL/CS/Excercise6/Step03/Excercise6.sln
  169. +32 −0 Rx/NET/Samples/HOL/CS/Excercise6/Step03/Program.cs
  170. +36 −0 Rx/NET/Samples/HOL/CS/Excercise6/Step03/Properties/AssemblyInfo.cs
  171. +60 −0 Rx/NET/Samples/HOL/CS/Excercise7/Start/Excercise7.csproj
  172. +20 −0 Rx/NET/Samples/HOL/CS/Excercise7/Start/Excercise7.sln
  173. +15 −0 Rx/NET/Samples/HOL/CS/Excercise7/Start/Program.cs
  174. +36 −0 Rx/NET/Samples/HOL/CS/Excercise7/Start/Properties/AssemblyInfo.cs
  175. +104 −0 Rx/NET/Samples/HOL/CS/Excercise7/Step02/Excercise7.csproj
  176. +20 −0 Rx/NET/Samples/HOL/CS/Excercise7/Step02/Excercise7.sln
  177. +15 −0 Rx/NET/Samples/HOL/CS/Excercise7/Step02/Program.cs
  178. +36 −0 Rx/NET/Samples/HOL/CS/Excercise7/Step02/Properties/AssemblyInfo.cs
  179. +6 −0 Rx/NET/Samples/HOL/CS/Excercise7/Step02/Service References/DictionarySuggestService/DictService.disco
  180. +824 −0 Rx/NET/Samples/HOL/CS/Excercise7/Step02/Service References/DictionarySuggestService/DictService.wsdl
  181. +10 −0 ...tep02/Service References/DictionarySuggestService/Excercise7.DictionarySuggestService.Dictionary.datasource
  182. +10 −0 ...2/Service References/DictionarySuggestService/Excercise7.DictionarySuggestService.DictionaryWord.datasource
  183. +10 −0 .../Step02/Service References/DictionarySuggestService/Excercise7.DictionarySuggestService.Strategy.datasource
  184. +10 −0 ...2/Service References/DictionarySuggestService/Excercise7.DictionarySuggestService.WordDefinition.datasource
  185. +1,064 −0 Rx/NET/Samples/HOL/CS/Excercise7/Step02/Service References/DictionarySuggestService/Reference.cs
  186. +31 −0 Rx/NET/Samples/HOL/CS/Excercise7/Step02/Service References/DictionarySuggestService/Reference.svcmap
  187. +12 −0 Rx/NET/Samples/HOL/CS/Excercise7/Step02/Service References/DictionarySuggestService/configuration.svcinfo
  188. +401 −0 Rx/NET/Samples/HOL/CS/Excercise7/Step02/Service References/DictionarySuggestService/configuration91.svcinfo
  189. +46 −0 Rx/NET/Samples/HOL/CS/Excercise7/Step02/app.config
  190. +104 −0 Rx/NET/Samples/HOL/CS/Excercise7/Step03/Excercise7.csproj
  191. +20 −0 Rx/NET/Samples/HOL/CS/Excercise7/Step03/Excercise7.sln
  192. +28 −0 Rx/NET/Samples/HOL/CS/Excercise7/Step03/Program.cs
  193. +36 −0 Rx/NET/Samples/HOL/CS/Excercise7/Step03/Properties/AssemblyInfo.cs
  194. +6 −0 Rx/NET/Samples/HOL/CS/Excercise7/Step03/Service References/DictionarySuggestService/DictService.disco
Sorry, we could not display the entire diff because too many files (1,348) changed.
View
22 Ix/NET/.gitattributes
@@ -0,0 +1,22 @@
+# Auto detect text files and perform LF normalization
+* text=auto
+
+# Custom for Visual Studio
+*.cs diff=csharp
+*.sln merge=union
+*.csproj merge=union
+*.vbproj merge=union
+*.fsproj merge=union
+*.dbproj merge=union
+
+# Standard to msysgit
+*.doc diff=astextplain
+*.DOC diff=astextplain
+*.docx diff=astextplain
+*.DOCX diff=astextplain
+*.dot diff=astextplain
+*.DOT diff=astextplain
+*.pdf diff=astextplain
+*.PDF diff=astextplain
+*.rtf diff=astextplain
+*.RTF diff=astextplain
View
163 Ix/NET/.gitignore
@@ -0,0 +1,163 @@
+#################
+## Eclipse
+#################
+
+*.pydevproject
+.project
+.metadata
+bin/
+tmp/
+*.tmp
+*.bak
+*.swp
+*~.nib
+local.properties
+.classpath
+.settings/
+.loadpath
+
+# External tool builders
+.externalToolBuilders/
+
+# Locally stored "Eclipse launch configurations"
+*.launch
+
+# CDT-specific
+.cproject
+
+# PDT-specific
+.buildpath
+
+
+#################
+## Visual Studio
+#################
+
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+
+# User-specific files
+*.suo
+*.user
+*.sln.docstates
+
+# Build results
+[Dd]ebug/
+[Rr]elease/
+*_i.c
+*_p.c
+*.ilk
+*.meta
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.vspscc
+.builds
+*.dotCover
+
+## TODO: If you have NuGet Package Restore enabled, uncomment this
+#packages/
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opensdf
+*.sdf
+
+# Visual Studio profiler
+*.psess
+*.vsp
+
+# ReSharper is a .NET coding add-in
+_ReSharper*
+
+# 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
+
+# Others
+[Bb]in
+[Oo]bj
+sql
+TestResults
+*.Cache
+ClientBin
+stylecop.*
+~$*
+*.dbmdl
+Generated_Code #added for RIA/Silverlight projects
+
+# 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
+
+
+
+############
+## Windows
+############
+
+# Windows image file caches
+Thumbs.db
+
+# Folder config file
+Desktop.ini
+
+
+#############
+## Python
+#############
+
+*.py[co]
+
+# Packages
+*.egg
+*.egg-info
+dist
+build
+eggs
+parts
+bin
+var
+sdist
+develop-eggs
+.installed.cfg
+
+# Installer logs
+pip-log.txt
+
+# Unit test / coverage reports
+.coverage
+.tox
+
+#Translations
+*.mo
+
+#Mr Developer
+.mr.developer.cfg
+
+# Mac crap
+.DS_Store
View
180 Ix/NET/Common.targets
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <!--
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug40</Configuration>
+ -->
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <TargetFrameworkProfile />
+ </PropertyGroup>
+
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug40|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug40\</OutputPath>
+ <DefineConstants>$(DefineConstants);TRACE;DEBUG</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <BuildPlatform>DESKTOPCLR</BuildPlatform>
+ <BuildFlavor>DESKTOPCLR40</BuildFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release40|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release40\</OutputPath>
+ <DefineConstants>$(DefineConstants);TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <BuildPlatform>DESKTOPCLR</BuildPlatform>
+ <BuildFlavor>DESKTOPCLR40</BuildFlavor>
+ </PropertyGroup>
+
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug35|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug35\</OutputPath>
+ <DefineConstants>$(DefineConstants);TRACE;DEBUG;NO_VARIANCE;NO_TPL;NO_LARGEARITY;NO_RXINTERFACES;NO_ZIP</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ <BuildPlatform>DESKTOPCLR</BuildPlatform>
+ <BuildFlavor>DESKTOPCLR20</BuildFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release35|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release35\</OutputPath>
+ <DefineConstants>$(DefineConstants);TRACE;NO_VARIANCE;NO_TPL;NO_LARGEARITY;NO_RXINTERFACES;NO_ZIP</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ <BuildPlatform>DESKTOPCLR</BuildPlatform>
+ <BuildFlavor>DESKTOPCLR20</BuildFlavor>
+ </PropertyGroup>
+
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugSL4|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\DebugSL4\</OutputPath>
+ <DefineConstants>$(DefineConstants);TRACE;DEBUG;NO_SERIALIZABLE;NO_TPL;NO_REMOTING;NO_SEMAPHORE;NO_RXINTERFACES</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+ <SilverlightApplication>false</SilverlightApplication>
+ <BuildPlatform>SILVERLIGHT</BuildPlatform>
+ <BuildFlavor>SILVERLIGHT4</BuildFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseSL4|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\ReleaseSL4\</OutputPath>
+ <DefineConstants>$(DefineConstants);TRACE;NO_SERIALIZABLE;NO_TPL;NO_REMOTING;NO_SEMAPHORE;NO_RXINTERFACES</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+ <SilverlightApplication>false</SilverlightApplication>
+ <BuildPlatform>SILVERLIGHT</BuildPlatform>
+ <BuildFlavor>SILVERLIGHT4</BuildFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugSL5|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\DebugSL5\</OutputPath>
+ <DefineConstants>$(DefineConstants);TRACE;DEBUG;NO_SERIALIZABLE;NO_TPL;NO_REMOTING;NO_SEMAPHORE;NO_RXINTERFACES</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v5.0</TargetFrameworkVersion>
+ <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+ <SilverlightApplication>false</SilverlightApplication>
+ <BuildPlatform>SILVERLIGHT</BuildPlatform>
+ <BuildFlavor>SILVERLIGHT5</BuildFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseSL5|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\ReleaseSL5\</OutputPath>
+ <DefineConstants>$(DefineConstants);TRACE;NO_SERIALIZABLE;NO_TPL;NO_REMOTING;NO_SEMAPHORE;NO_RXINTERFACES</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v5.0</TargetFrameworkVersion>
+ <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+ <SilverlightApplication>false</SilverlightApplication>
+ <BuildPlatform>SILVERLIGHT</BuildPlatform>
+ <BuildFlavor>SILVERLIGHT5</BuildFlavor>
+ </PropertyGroup>
+
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugWP7|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\DebugWP7\</OutputPath>
+ <DefineConstants>$(DefineConstants);TRACE;DEBUG;WINDOWSPHONE7;NO_TLS;NO_VARIANCE;NO_SERIALIZABLE;NO_TPL;NO_HASHSET;NO_REMOTING;NO_SEMAPHORE;NO_LARGEARITY;NO_ZIP</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <TargetFrameworkProfile>WindowsPhone</TargetFrameworkProfile>
+ <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+ <SilverlightApplication>false</SilverlightApplication>
+ <BuildPlatform>SILVERLIGHT</BuildPlatform>
+ <BuildFlavor>SILVERLIGHTM7</BuildFlavor>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseWP7|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\ReleaseWP7\</OutputPath>
+ <DefineConstants>$(DefineConstants);TRACE;WINDOWSPHONE7;NO_TLS;NO_VARIANCE;NO_SERIALIZABLE;NO_TPL;NO_HASHSET;NO_REMOTING;NO_SEMAPHORE;NO_LARGEARITY;NO_ZIP</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <TargetFrameworkProfile>WindowsPhone</TargetFrameworkProfile>
+ <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
+ <SilverlightApplication>false</SilverlightApplication>
+ <BuildPlatform>SILVERLIGHT</BuildPlatform>
+ <BuildFlavor>SILVERLIGHTM7</BuildFlavor>
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <DefineConstants>$(DefineConstants);$(BuildPlatform);$(BuildFlavor)</DefineConstants>
+ </PropertyGroup>
+
+ <PropertyGroup Condition=" '$(IxRelease)' == 'STABLE' ">
+ <DefineConstants>$(DefineConstants);STABLE</DefineConstants>
+ </PropertyGroup>
+
+ <PropertyGroup Condition=" '$(ProductSignAssembly)' == 'true' AND '$(SignedBuild)' == '1' ">
+ <DefineConstants>$(DefineConstants);SIGNED</DefineConstants>
+ <SignAssembly>true</SignAssembly>
+ <AssemblyOriginatorKeyFile>..\35MSSharedLib1024.snk</AssemblyOriginatorKeyFile>
+ <DelaySign>true</DelaySign>
+ </PropertyGroup>
+
+ <PropertyGroup Condition=" '$(BuildLab)' == '1' ">
+ <DefineConstants>$(DefineConstants);NO_CODECOVERAGE</DefineConstants>
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <GetReferenceAssemblyPathsDependsOn>CP_SetBuildReferencePath</GetReferenceAssemblyPathsDependsOn>
+ </PropertyGroup>
+ <Target Name="CP_SetBuildReferencePath">
+ <PropertyGroup>
+ <TargetFrameworkDirectory>$(ProjectDir)..\..\..\References\$(BuildFlavor)</TargetFrameworkDirectory>
+ </PropertyGroup>
+ </Target>
+
+</Project>
View
2,696 Ix/NET/Enumerable.cs
2,696 additions, 0 deletions not shown
View
16 Ix/NET/Import.targets
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <!-- Non-Portable Library build -->
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" Condition=" '$(TargetFrameworkIdentifier)' != '.NETPortable' And ('$(BuildPlatform)' == 'DESKTOPCLR' Or '$(BuildPlatform)' == 'XNA') " />
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" Condition=" '$(TargetFrameworkIdentifier)' != '.NETPortable' And '$(BuildPlatform)' == 'SILVERLIGHT' AND !('$(BuildFlavor)' == 'SILVERLIGHTM7') " />
+ <Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.$(TargetFrameworkProfile).Overrides.targets" Condition=" '$(TargetFrameworkIdentifier)' != '.NETPortable' And '$(BuildFlavor)' == 'SILVERLIGHTM7' " />
+ <Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.CSharp.targets" Condition=" '$(TargetFrameworkIdentifier)' != '.NETPortable' And '$(BuildFlavor)' == 'SILVERLIGHTM7' " />
+ <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\Microsoft.Xna.GameStudio.targets" Condition=" '$(TargetFrameworkIdentifier)' != '.NETPortable' And '$(BuildPlatform)' == 'XNA' "/>
+
+ <!-- Portable Library Build -->
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" Condition=" '$(TargetFrameworkIdentifier)' == '.NETPortable' " />
+
+ <Target Name="AfterBuild" Condition=" '$(ProductSignAssembly)' == 'true' AND '$(SignedBuild)' == '1' ">
+ <WriteLinesToFile File="$(OutDir)\$(TargetFileName).sign" Overwrite="true" Lines="Auto-generated file. Indicates the corresponding binary file needs to be signed." />
+ </Target>
+</Project>
View
332 Ix/NET/Interactive Extensions.sln
@@ -0,0 +1,332 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Interactive", "System.Interactive\System.Interactive.csproj", "{8E4B04F0-915E-48F9-9796-76278C6094BD}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests\Tests.csproj", "{C4C8532A-F8D2-428B-962E-FD578A1E647C}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{01E445E3-2296-48ED-A70D-F64CE755E0B6}"
+ ProjectSection(SolutionItems) = preProject
+ Interactive Extensions.vsmdi = Interactive Extensions.vsmdi
+ Local.testsettings = Local.testsettings
+ TraceAndTestImpact.testsettings = TraceAndTestImpact.testsettings
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Interactive.Providers", "System.Interactive.Providers\System.Interactive.Providers.csproj", "{6D62E966-469D-4A99-BD43-0A17FA14FB4F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Interactive.Async", "System.Interactive.Async\System.Interactive.Async.csproj", "{7269A578-326A-4C3E-9874-A2D2600095BC}"
+EndProject
+Global
+ GlobalSection(TestCaseManagementSettings) = postSolution
+ CategoryFile = Interactive Extensions.vsmdi
+ EndGlobalSection
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|Mixed Platforms = Debug|Mixed Platforms
+ Debug|x86 = Debug|x86
+ Debug35|Any CPU = Debug35|Any CPU
+ Debug35|Mixed Platforms = Debug35|Mixed Platforms
+ Debug35|x86 = Debug35|x86
+ Debug40|Any CPU = Debug40|Any CPU
+ Debug40|Mixed Platforms = Debug40|Mixed Platforms
+ Debug40|x86 = Debug40|x86
+ DebugPL|Any CPU = DebugPL|Any CPU
+ DebugPL|Mixed Platforms = DebugPL|Mixed Platforms
+ DebugPL|x86 = DebugPL|x86
+ DebugSL4|Any CPU = DebugSL4|Any CPU
+ DebugSL4|Mixed Platforms = DebugSL4|Mixed Platforms
+ DebugSL4|x86 = DebugSL4|x86
+ DebugSL5|Any CPU = DebugSL5|Any CPU
+ DebugSL5|Mixed Platforms = DebugSL5|Mixed Platforms
+ DebugSL5|x86 = DebugSL5|x86
+ DebugWP7|Any CPU = DebugWP7|Any CPU
+ DebugWP7|Mixed Platforms = DebugWP7|Mixed Platforms
+ DebugWP7|x86 = DebugWP7|x86
+ Release|Any CPU = Release|Any CPU
+ Release|Mixed Platforms = Release|Mixed Platforms
+ Release|x86 = Release|x86
+ Release35|Any CPU = Release35|Any CPU
+ Release35|Mixed Platforms = Release35|Mixed Platforms
+ Release35|x86 = Release35|x86
+ Release40|Any CPU = Release40|Any CPU
+ Release40|Mixed Platforms = Release40|Mixed Platforms
+ Release40|x86 = Release40|x86
+ ReleasePL|Any CPU = ReleasePL|Any CPU
+ ReleasePL|Mixed Platforms = ReleasePL|Mixed Platforms
+ ReleasePL|x86 = ReleasePL|x86
+ ReleaseSL4|Any CPU = ReleaseSL4|Any CPU
+ ReleaseSL4|Mixed Platforms = ReleaseSL4|Mixed Platforms
+ ReleaseSL4|x86 = ReleaseSL4|x86
+ ReleaseSL5|Any CPU = ReleaseSL5|Any CPU
+ ReleaseSL5|Mixed Platforms = ReleaseSL5|Mixed Platforms
+ ReleaseSL5|x86 = ReleaseSL5|x86
+ ReleaseWP7|Any CPU = ReleaseWP7|Any CPU
+ ReleaseWP7|Mixed Platforms = ReleaseWP7|Mixed Platforms
+ ReleaseWP7|x86 = ReleaseWP7|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Debug|Any CPU.ActiveCfg = DebugPL|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Debug|Any CPU.Build.0 = DebugPL|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Debug|Mixed Platforms.ActiveCfg = DebugPL|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Debug|Mixed Platforms.Build.0 = DebugPL|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Debug|x86.ActiveCfg = DebugPL|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Debug35|Any CPU.ActiveCfg = Debug35|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Debug35|Any CPU.Build.0 = Debug35|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Debug35|Mixed Platforms.ActiveCfg = Debug35|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Debug35|Mixed Platforms.Build.0 = Debug35|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Debug35|x86.ActiveCfg = Debug35|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Debug40|Any CPU.ActiveCfg = Debug40|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Debug40|Any CPU.Build.0 = Debug40|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Debug40|Mixed Platforms.ActiveCfg = Debug40|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Debug40|Mixed Platforms.Build.0 = Debug40|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Debug40|x86.ActiveCfg = Debug40|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.DebugPL|Any CPU.ActiveCfg = DebugPL|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.DebugPL|Any CPU.Build.0 = DebugPL|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.DebugPL|Mixed Platforms.ActiveCfg = DebugPL|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.DebugPL|Mixed Platforms.Build.0 = DebugPL|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.DebugPL|x86.ActiveCfg = DebugPL|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.DebugSL4|Any CPU.ActiveCfg = DebugSL4|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.DebugSL4|Any CPU.Build.0 = DebugSL4|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.DebugSL4|Mixed Platforms.ActiveCfg = DebugSL4|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.DebugSL4|Mixed Platforms.Build.0 = DebugSL4|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.DebugSL4|x86.ActiveCfg = DebugSL4|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.DebugSL5|Any CPU.ActiveCfg = DebugSL5|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.DebugSL5|Any CPU.Build.0 = DebugSL5|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.DebugSL5|Mixed Platforms.ActiveCfg = DebugSL5|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.DebugSL5|Mixed Platforms.Build.0 = DebugSL5|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.DebugSL5|x86.ActiveCfg = DebugSL5|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.DebugWP7|Any CPU.ActiveCfg = DebugWP7|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.DebugWP7|Any CPU.Build.0 = DebugWP7|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.DebugWP7|Mixed Platforms.ActiveCfg = DebugWP7|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.DebugWP7|Mixed Platforms.Build.0 = DebugWP7|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.DebugWP7|x86.ActiveCfg = DebugWP7|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Release|Any CPU.ActiveCfg = ReleasePL|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Release|Any CPU.Build.0 = ReleasePL|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Release|Mixed Platforms.ActiveCfg = ReleasePL|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Release|Mixed Platforms.Build.0 = ReleasePL|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Release|x86.ActiveCfg = ReleasePL|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Release35|Any CPU.ActiveCfg = Release35|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Release35|Any CPU.Build.0 = Release35|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Release35|Mixed Platforms.ActiveCfg = Release35|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Release35|Mixed Platforms.Build.0 = Release35|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Release35|x86.ActiveCfg = Release35|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Release40|Any CPU.ActiveCfg = Release40|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Release40|Any CPU.Build.0 = Release40|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Release40|Mixed Platforms.ActiveCfg = Release40|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Release40|Mixed Platforms.Build.0 = Release40|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.Release40|x86.ActiveCfg = Release40|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.ReleasePL|Any CPU.ActiveCfg = ReleasePL|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.ReleasePL|Any CPU.Build.0 = ReleasePL|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.ReleasePL|Mixed Platforms.ActiveCfg = ReleasePL|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.ReleasePL|Mixed Platforms.Build.0 = ReleasePL|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.ReleasePL|x86.ActiveCfg = ReleasePL|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.ReleaseSL4|Any CPU.ActiveCfg = ReleaseSL4|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.ReleaseSL4|Any CPU.Build.0 = ReleaseSL4|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.ReleaseSL4|Mixed Platforms.ActiveCfg = ReleaseSL4|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.ReleaseSL4|Mixed Platforms.Build.0 = ReleaseSL4|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.ReleaseSL4|x86.ActiveCfg = ReleaseSL4|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.ReleaseSL5|Any CPU.ActiveCfg = ReleaseSL5|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.ReleaseSL5|Any CPU.Build.0 = ReleaseSL5|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.ReleaseSL5|Mixed Platforms.ActiveCfg = ReleaseSL5|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.ReleaseSL5|Mixed Platforms.Build.0 = ReleaseSL5|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.ReleaseSL5|x86.ActiveCfg = ReleaseSL5|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.ReleaseWP7|Any CPU.ActiveCfg = ReleaseWP7|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.ReleaseWP7|Any CPU.Build.0 = ReleaseWP7|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.ReleaseWP7|Mixed Platforms.ActiveCfg = ReleaseWP7|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.ReleaseWP7|Mixed Platforms.Build.0 = ReleaseWP7|Any CPU
+ {8E4B04F0-915E-48F9-9796-76278C6094BD}.ReleaseWP7|x86.ActiveCfg = ReleaseWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Debug|Any CPU.ActiveCfg = DebugWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Debug|Any CPU.Build.0 = DebugWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Debug|Mixed Platforms.ActiveCfg = DebugWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Debug|Mixed Platforms.Build.0 = DebugWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Debug|x86.ActiveCfg = DebugWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Debug35|Any CPU.ActiveCfg = Debug35|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Debug35|Any CPU.Build.0 = Debug35|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Debug35|Mixed Platforms.ActiveCfg = Debug35|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Debug35|Mixed Platforms.Build.0 = Debug35|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Debug35|x86.ActiveCfg = Debug35|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Debug40|Any CPU.ActiveCfg = Debug40|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Debug40|Any CPU.Build.0 = Debug40|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Debug40|Mixed Platforms.ActiveCfg = Debug40|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Debug40|Mixed Platforms.Build.0 = Debug40|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Debug40|x86.ActiveCfg = Debug40|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.DebugPL|Any CPU.ActiveCfg = DebugWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.DebugPL|Any CPU.Build.0 = DebugWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.DebugPL|Mixed Platforms.ActiveCfg = DebugWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.DebugPL|Mixed Platforms.Build.0 = DebugWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.DebugPL|x86.ActiveCfg = DebugWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.DebugSL4|Any CPU.ActiveCfg = DebugSL4|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.DebugSL4|Any CPU.Build.0 = DebugSL4|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.DebugSL4|Mixed Platforms.ActiveCfg = DebugSL4|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.DebugSL4|Mixed Platforms.Build.0 = DebugSL4|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.DebugSL4|x86.ActiveCfg = DebugSL4|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.DebugSL5|Any CPU.ActiveCfg = DebugSL5|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.DebugSL5|Any CPU.Build.0 = DebugSL5|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.DebugSL5|Mixed Platforms.ActiveCfg = DebugSL5|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.DebugSL5|Mixed Platforms.Build.0 = DebugSL5|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.DebugSL5|x86.ActiveCfg = DebugSL5|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.DebugWP7|Any CPU.ActiveCfg = DebugWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.DebugWP7|Any CPU.Build.0 = DebugWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.DebugWP7|Mixed Platforms.ActiveCfg = DebugWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.DebugWP7|Mixed Platforms.Build.0 = DebugWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.DebugWP7|x86.ActiveCfg = DebugWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Release|Any CPU.ActiveCfg = ReleaseWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Release|Any CPU.Build.0 = ReleaseWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Release|Mixed Platforms.ActiveCfg = ReleaseWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Release|Mixed Platforms.Build.0 = ReleaseWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Release|x86.ActiveCfg = ReleaseWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Release35|Any CPU.ActiveCfg = Release35|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Release35|Any CPU.Build.0 = Release35|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Release35|Mixed Platforms.ActiveCfg = Release35|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Release35|Mixed Platforms.Build.0 = Release35|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Release35|x86.ActiveCfg = Release35|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Release40|Any CPU.ActiveCfg = Release40|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Release40|Any CPU.Build.0 = Release40|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Release40|Mixed Platforms.ActiveCfg = Release40|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Release40|Mixed Platforms.Build.0 = Release40|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.Release40|x86.ActiveCfg = Release40|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.ReleasePL|Any CPU.ActiveCfg = ReleaseWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.ReleasePL|Any CPU.Build.0 = ReleaseWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.ReleasePL|Mixed Platforms.ActiveCfg = ReleaseWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.ReleasePL|Mixed Platforms.Build.0 = ReleaseWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.ReleasePL|x86.ActiveCfg = ReleaseWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.ReleaseSL4|Any CPU.ActiveCfg = ReleaseSL4|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.ReleaseSL4|Any CPU.Build.0 = ReleaseSL4|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.ReleaseSL4|Mixed Platforms.ActiveCfg = ReleaseSL4|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.ReleaseSL4|Mixed Platforms.Build.0 = ReleaseSL4|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.ReleaseSL4|x86.ActiveCfg = ReleaseSL4|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.ReleaseSL5|Any CPU.ActiveCfg = ReleaseSL5|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.ReleaseSL5|Any CPU.Build.0 = ReleaseSL5|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.ReleaseSL5|Mixed Platforms.ActiveCfg = ReleaseSL5|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.ReleaseSL5|Mixed Platforms.Build.0 = ReleaseSL5|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.ReleaseSL5|x86.ActiveCfg = ReleaseSL5|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.ReleaseWP7|Any CPU.ActiveCfg = ReleaseWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.ReleaseWP7|Any CPU.Build.0 = ReleaseWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.ReleaseWP7|Mixed Platforms.ActiveCfg = ReleaseWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.ReleaseWP7|Mixed Platforms.Build.0 = ReleaseWP7|Any CPU
+ {C4C8532A-F8D2-428B-962E-FD578A1E647C}.ReleaseWP7|x86.ActiveCfg = ReleaseWP7|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Debug|Any CPU.ActiveCfg = DebugPL|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Debug|Any CPU.Build.0 = DebugPL|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Debug|Mixed Platforms.ActiveCfg = DebugPL|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Debug|Mixed Platforms.Build.0 = DebugPL|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Debug|x86.ActiveCfg = DebugPL|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Debug35|Any CPU.ActiveCfg = Debug35|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Debug35|Any CPU.Build.0 = Debug35|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Debug35|Mixed Platforms.ActiveCfg = Debug35|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Debug35|Mixed Platforms.Build.0 = Debug35|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Debug35|x86.ActiveCfg = Debug35|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Debug40|Any CPU.ActiveCfg = Debug40|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Debug40|Any CPU.Build.0 = Debug40|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Debug40|Mixed Platforms.ActiveCfg = Debug40|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Debug40|Mixed Platforms.Build.0 = Debug40|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Debug40|x86.ActiveCfg = Debug40|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.DebugPL|Any CPU.ActiveCfg = DebugPL|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.DebugPL|Any CPU.Build.0 = DebugPL|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.DebugPL|Mixed Platforms.ActiveCfg = DebugPL|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.DebugPL|Mixed Platforms.Build.0 = DebugPL|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.DebugPL|x86.ActiveCfg = DebugPL|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.DebugSL4|Any CPU.ActiveCfg = DebugSL4|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.DebugSL4|Any CPU.Build.0 = DebugSL4|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.DebugSL4|Mixed Platforms.ActiveCfg = DebugSL4|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.DebugSL4|Mixed Platforms.Build.0 = DebugSL4|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.DebugSL4|x86.ActiveCfg = DebugSL4|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.DebugSL5|Any CPU.ActiveCfg = DebugSL5|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.DebugSL5|Any CPU.Build.0 = DebugSL5|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.DebugSL5|Mixed Platforms.ActiveCfg = DebugSL5|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.DebugSL5|Mixed Platforms.Build.0 = DebugSL5|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.DebugSL5|x86.ActiveCfg = DebugSL5|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.DebugWP7|Any CPU.ActiveCfg = DebugWP7|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.DebugWP7|Mixed Platforms.ActiveCfg = DebugWP7|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.DebugWP7|x86.ActiveCfg = DebugWP7|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Release|Any CPU.ActiveCfg = ReleasePL|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Release|Any CPU.Build.0 = ReleasePL|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Release|Mixed Platforms.ActiveCfg = ReleasePL|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Release|Mixed Platforms.Build.0 = ReleasePL|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Release|x86.ActiveCfg = ReleasePL|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Release35|Any CPU.ActiveCfg = Release35|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Release35|Any CPU.Build.0 = Release35|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Release35|Mixed Platforms.ActiveCfg = Release35|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Release35|Mixed Platforms.Build.0 = Release35|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Release35|x86.ActiveCfg = Release35|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Release40|Any CPU.ActiveCfg = Release40|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Release40|Any CPU.Build.0 = Release40|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Release40|Mixed Platforms.ActiveCfg = Release40|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Release40|Mixed Platforms.Build.0 = Release40|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.Release40|x86.ActiveCfg = Release40|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.ReleasePL|Any CPU.ActiveCfg = ReleasePL|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.ReleasePL|Any CPU.Build.0 = ReleasePL|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.ReleasePL|Mixed Platforms.ActiveCfg = ReleasePL|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.ReleasePL|Mixed Platforms.Build.0 = ReleasePL|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.ReleasePL|x86.ActiveCfg = ReleasePL|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.ReleaseSL4|Any CPU.ActiveCfg = ReleaseSL4|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.ReleaseSL4|Any CPU.Build.0 = ReleaseSL4|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.ReleaseSL4|Mixed Platforms.ActiveCfg = ReleaseSL4|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.ReleaseSL4|Mixed Platforms.Build.0 = ReleaseSL4|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.ReleaseSL4|x86.ActiveCfg = ReleaseSL4|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.ReleaseSL5|Any CPU.ActiveCfg = ReleaseSL5|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.ReleaseSL5|Any CPU.Build.0 = ReleaseSL5|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.ReleaseSL5|Mixed Platforms.ActiveCfg = ReleaseSL5|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.ReleaseSL5|Mixed Platforms.Build.0 = ReleaseSL5|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.ReleaseSL5|x86.ActiveCfg = ReleaseSL5|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.ReleaseWP7|Any CPU.ActiveCfg = ReleaseWP7|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.ReleaseWP7|Mixed Platforms.ActiveCfg = ReleaseWP7|Any CPU
+ {6D62E966-469D-4A99-BD43-0A17FA14FB4F}.ReleaseWP7|x86.ActiveCfg = ReleaseWP7|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Debug|Any CPU.ActiveCfg = DebugPL|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Debug|Any CPU.Build.0 = DebugPL|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Debug|Mixed Platforms.ActiveCfg = DebugPL|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Debug|Mixed Platforms.Build.0 = DebugPL|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Debug|x86.ActiveCfg = DebugPL|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Debug35|Any CPU.ActiveCfg = Debug35|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Debug35|Mixed Platforms.ActiveCfg = Debug35|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Debug35|x86.ActiveCfg = Debug35|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Debug40|Any CPU.ActiveCfg = Debug40|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Debug40|Any CPU.Build.0 = Debug40|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Debug40|Mixed Platforms.ActiveCfg = Debug40|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Debug40|Mixed Platforms.Build.0 = Debug40|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Debug40|x86.ActiveCfg = Debug40|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.DebugPL|Any CPU.ActiveCfg = DebugPL|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.DebugPL|Any CPU.Build.0 = DebugPL|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.DebugPL|Mixed Platforms.ActiveCfg = DebugPL|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.DebugPL|Mixed Platforms.Build.0 = DebugPL|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.DebugPL|x86.ActiveCfg = DebugPL|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.DebugSL4|Any CPU.ActiveCfg = DebugSL4|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.DebugSL4|Mixed Platforms.ActiveCfg = DebugSL4|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.DebugSL4|x86.ActiveCfg = DebugSL4|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.DebugSL5|Any CPU.ActiveCfg = DebugSL5|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.DebugSL5|Mixed Platforms.ActiveCfg = DebugSL5|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.DebugSL5|x86.ActiveCfg = DebugSL5|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.DebugWP7|Any CPU.ActiveCfg = DebugWP7|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.DebugWP7|Mixed Platforms.ActiveCfg = DebugWP7|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.DebugWP7|x86.ActiveCfg = DebugWP7|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Release|Any CPU.ActiveCfg = ReleasePL|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Release|Any CPU.Build.0 = ReleasePL|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Release|Mixed Platforms.ActiveCfg = ReleasePL|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Release|Mixed Platforms.Build.0 = ReleasePL|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Release|x86.ActiveCfg = ReleasePL|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Release35|Any CPU.ActiveCfg = Release35|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Release35|Mixed Platforms.ActiveCfg = Release35|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Release35|x86.ActiveCfg = Release35|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Release40|Any CPU.ActiveCfg = Release40|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Release40|Any CPU.Build.0 = Release40|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Release40|Mixed Platforms.ActiveCfg = Release40|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Release40|Mixed Platforms.Build.0 = Release40|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.Release40|x86.ActiveCfg = Release40|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.ReleasePL|Any CPU.ActiveCfg = ReleasePL|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.ReleasePL|Any CPU.Build.0 = ReleasePL|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.ReleasePL|Mixed Platforms.ActiveCfg = ReleasePL|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.ReleasePL|Mixed Platforms.Build.0 = ReleasePL|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.ReleasePL|x86.ActiveCfg = ReleasePL|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.ReleaseSL4|Any CPU.ActiveCfg = ReleaseSL4|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.ReleaseSL4|Mixed Platforms.ActiveCfg = ReleaseSL4|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.ReleaseSL4|x86.ActiveCfg = ReleaseSL4|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.ReleaseSL5|Any CPU.ActiveCfg = ReleaseSL5|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.ReleaseSL5|Mixed Platforms.ActiveCfg = ReleaseSL5|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.ReleaseSL5|x86.ActiveCfg = ReleaseSL5|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.ReleaseWP7|Any CPU.ActiveCfg = ReleaseWP7|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.ReleaseWP7|Mixed Platforms.ActiveCfg = ReleaseWP7|Any CPU
+ {7269A578-326A-4C3E-9874-A2D2600095BC}.ReleaseWP7|x86.ActiveCfg = ReleaseWP7|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
View
6 Ix/NET/Interactive Extensions.vsmdi
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<TestLists xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
+ <TestList name="Lists of Tests" id="8c43106b-9dc1-4907-a29f-aa66a61bf5b6">
+ <RunConfiguration id="78477b8c-bd50-44f5-8a17-2b7ba653d0db" name="Local" storage="local.testsettings" type="Microsoft.VisualStudio.TestTools.Common.TestRunConfiguration, Microsoft.VisualStudio.QualityTools.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+ </TestList>
+</TestLists>
View
10 Ix/NET/Interactive Extensions.vssscc
@@ -0,0 +1,10 @@
+""
+{
+"FILE_VERSION" = "9237"
+"ENLISTMENT_CHOICE" = "NEVER"
+"PROJECT_FILE_RELATIVE_PATH" = ""
+"NUMBER_OF_EXCLUDED_FILES" = "0"
+"ORIGINAL_PROJECT_FILE_PATH" = ""
+"NUMBER_OF_NESTED_PROJECTS" = "0"
+"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROJECT"
+}
View
37 Ix/NET/Local.testsettings
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<TestSettings name="Local" id="78477b8c-bd50-44f5-8a17-2b7ba653d0db" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
+ <Description>These are default test settings for a local test run.</Description>
+ <Execution>
+ <TestTypeSpecific>
+ <UnitTestRunConfig testTypeId="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b">
+ <AssemblyResolution>
+ <TestDirectory useLoadContext="true" />
+ </AssemblyResolution>
+ </UnitTestRunConfig>
+ <WebTestRunConfiguration testTypeId="4e7599fa-5ecb-43e9-a887-cd63cf72d207">
+ <Browser name="Internet Explorer 7.0">
+ <Headers>
+ <Header name="User-Agent" value="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" />
+ <Header name="Accept" value="*/*" />
+ <Header name="Accept-Language" value="{{$IEAcceptLanguage}}" />
+ <Header name="Accept-Encoding" value="GZIP" />
+ </Headers>
+ </Browser>
+ </WebTestRunConfiguration>
+ </TestTypeSpecific>
+ <AgentRule name="LocalMachineDefaultRole">
+ <DataCollectors>
+ <DataCollector uri="datacollector://microsoft/CodeCoverage/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TestTools.CodeCoverage.CoveragePlugIn, Microsoft.VisualStudio.QualityTools.Plugins.CodeCoverage, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="Code Coverage">
+ <Configuration>
+ <CodeCoverage xmlns="">
+ <Regular>
+ <CodeCoverageItem binaryFile="System.Interactive.Async\bin\Debug40\System.Interactive.Async.dll" pdbFile="System.Interactive.Async\bin\Debug40\System.Interactive.Async.pdb" instrumentInPlace="true" />
+ <CodeCoverageItem binaryFile="System.Interactive\bin\Debug40\System.Interactive.dll" pdbFile="System.Interactive\bin\Debug40\System.Interactive.pdb" instrumentInPlace="true" />
+ </Regular>
+ </CodeCoverage>
+ </Configuration>
+ </DataCollector>
+ </DataCollectors>
+ </AgentRule>
+ </Execution>
+</TestSettings>
View
2,019 Ix/NET/System.Interactive.Async/AsyncEnumerable.Aggregates.cs
@@ -0,0 +1,2019 @@
+// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Threading;
+
+namespace System.Linq
+{
+ public static partial class AsyncEnumerable
+ {
+ public static Task<TResult> Aggregate<TSource, TAccumulate, TResult>(this IAsyncEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> accumulator, Func<TAccumulate, TResult> resultSelector, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (accumulator == null)
+ throw new ArgumentNullException("accumulator");
+ if (resultSelector == null)
+ throw new ArgumentNullException("resultSelector");
+
+ var tcs = new TaskCompletionSource<TResult>();
+
+ var acc = seed;
+
+ var e = source.GetEnumerator();
+
+ var f = default(Action<CancellationToken>);
+ f = ct => e.MoveNext(ct).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ {
+ try
+ {
+ acc = accumulator(acc, e.Current);
+ f(ct);
+ }
+ catch (Exception exception)
+ {
+ tcs.TrySetException(exception);
+ }
+ }
+ else
+ {
+ var result = default(TResult);
+ try
+ {
+ result = resultSelector(acc);
+ }
+ catch (Exception exception)
+ {
+ tcs.TrySetException(exception);
+ return;
+ }
+
+ tcs.TrySetResult(result);
+ }
+ });
+ });
+
+ f(cancellationToken);
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<TAccumulate> Aggregate<TSource, TAccumulate>(this IAsyncEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> accumulator, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (accumulator == null)
+ throw new ArgumentNullException("accumulator");
+
+ return source.Aggregate(seed, accumulator, x => x, cancellationToken);
+ }
+
+ public static Task<TSource> Aggregate<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, TSource, TSource> accumulator, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (accumulator == null)
+ throw new ArgumentNullException("accumulator");
+
+ var tcs = new TaskCompletionSource<TSource>();
+
+ var first = true;
+ var acc = default(TSource);
+
+ var e = source.GetEnumerator();
+
+ var f = default(Action<CancellationToken>);
+ f = ct => e.MoveNext(ct).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ {
+ try
+ {
+ if (first)
+ acc = e.Current;
+ else
+ acc = accumulator(acc, e.Current);
+ f(ct);
+ }
+ catch (Exception ex)
+ {
+ tcs.TrySetException(ex);
+ }
+
+ first = false;
+ }
+ else
+ {
+ if (first)
+ tcs.TrySetException(new InvalidOperationException());
+ else
+ tcs.TrySetResult(acc);
+ }
+ });
+ });
+
+ f(cancellationToken);
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<int> Count<TSource>(this IAsyncEnumerable<TSource> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ return source.Aggregate(0, (c, _) => c + 1, cancellationToken);
+ }
+
+ public static Task<int> Count<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, bool> predicate, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (predicate == null)
+ throw new ArgumentNullException("predicate");
+
+ return source.Where(predicate).Aggregate(0, (c, _) => c + 1, cancellationToken);
+ }
+
+ public static Task<long> LongCount<TSource>(this IAsyncEnumerable<TSource> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ return source.Aggregate(0L, (c, _) => c + 1, cancellationToken);
+ }
+
+ public static Task<long> LongCount<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, bool> predicate, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (predicate == null)
+ throw new ArgumentNullException("predicate");
+
+ return source.Where(predicate).Aggregate(0L, (c, _) => c + 1, cancellationToken);
+ }
+
+ public static Task<bool> All<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, bool> predicate, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (predicate == null)
+ throw new ArgumentNullException("predicate");
+
+ var tcs = new TaskCompletionSource<bool>();
+
+ var e = source.GetEnumerator();
+
+ var f = default(Action<CancellationToken>);
+ f = ct => e.MoveNext(ct).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ {
+ try
+ {
+ if (!predicate(e.Current))
+ tcs.TrySetResult(false);
+ else
+ f(ct);
+ }
+ catch (Exception ex)
+ {
+ tcs.TrySetException(ex);
+ }
+ }
+ else
+ {
+ tcs.TrySetResult(true);
+ }
+ });
+ });
+
+ f(cancellationToken);
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<bool> Any<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, bool> predicate, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (predicate == null)
+ throw new ArgumentNullException("predicate");
+
+ var tcs = new TaskCompletionSource<bool>();
+
+ var e = source.GetEnumerator();
+
+ var f = default(Action<CancellationToken>);
+ f = ct => e.MoveNext(ct).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ {
+ try
+ {
+ if (predicate(e.Current))
+ tcs.TrySetResult(true);
+ else
+ f(ct);
+ }
+ catch (Exception ex)
+ {
+ tcs.TrySetException(ex);
+ }
+ }
+ else
+ {
+ tcs.TrySetResult(false);
+ }
+ });
+ });
+
+ f(cancellationToken);
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<bool> Any<TSource>(this IAsyncEnumerable<TSource> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ var e = source.GetEnumerator();
+ return e.MoveNext(cancellationToken);
+ }
+
+ public static Task<bool> Contains<TSource>(this IAsyncEnumerable<TSource> source, TSource value, IEqualityComparer<TSource> comparer, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (comparer == null)
+ throw new ArgumentNullException("comparer");
+
+ return source.Any(x => comparer.Equals(x, value), cancellationToken);
+ }
+
+ public static Task<bool> Contains<TSource>(this IAsyncEnumerable<TSource> source, TSource value, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ return source.Contains(value, EqualityComparer<TSource>.Default, cancellationToken);
+ }
+
+ public static Task<TSource> First<TSource>(this IAsyncEnumerable<TSource> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ var tcs = new TaskCompletionSource<TSource>();
+
+ var e = source.GetEnumerator();
+
+ e.MoveNext(cancellationToken).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ tcs.TrySetResult(e.Current);
+ else
+ tcs.TrySetException(new InvalidOperationException());
+ });
+ });
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<TSource> First<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, bool> predicate, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (predicate == null)
+ throw new ArgumentNullException("predicate");
+
+ return source.Where(predicate).First(cancellationToken);
+ }
+
+ public static Task<TSource> FirstOrDefault<TSource>(this IAsyncEnumerable<TSource> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ var tcs = new TaskCompletionSource<TSource>();
+
+ var e = source.GetEnumerator();
+
+ e.MoveNext(cancellationToken).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ tcs.TrySetResult(e.Current);
+ else
+ tcs.TrySetResult(default(TSource));
+ });
+ });
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<TSource> FirstOrDefault<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, bool> predicate, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (predicate == null)
+ throw new ArgumentNullException("predicate");
+
+ return source.Where(predicate).FirstOrDefault(cancellationToken);
+ }
+
+ public static Task<TSource> Last<TSource>(this IAsyncEnumerable<TSource> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ var tcs = new TaskCompletionSource<TSource>();
+
+ var e = source.GetEnumerator();
+ var last = default(TSource);
+ var hasLast = false;
+
+ var f = default(Action<CancellationToken>);
+ f = ct => e.MoveNext(ct).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ {
+ hasLast = true;
+ last = e.Current;
+ f(ct);
+ }
+ else
+ {
+ if (!hasLast)
+ tcs.TrySetException(new InvalidOperationException());
+ else
+ tcs.TrySetResult(last);
+ }
+ });
+ });
+
+ f(cancellationToken);
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<TSource> Last<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, bool> predicate, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (predicate == null)
+ throw new ArgumentNullException("predicate");
+
+ return source.Where(predicate).Last(cancellationToken);
+ }
+
+ public static Task<TSource> LastOrDefault<TSource>(this IAsyncEnumerable<TSource> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ var tcs = new TaskCompletionSource<TSource>();
+
+ var e = source.GetEnumerator();
+ var last = default(TSource);
+ var hasLast = false;
+
+ var f = default(Action<CancellationToken>);
+ f = ct => e.MoveNext(ct).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ {
+ hasLast = true;
+ last = e.Current;
+ f(ct);
+ }
+ else
+ {
+ if (!hasLast)
+ tcs.TrySetResult(default(TSource));
+ else
+ tcs.TrySetResult(last);
+ }
+ });
+ });
+
+ f(cancellationToken);
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<TSource> LastOrDefault<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, bool> predicate, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (predicate == null)
+ throw new ArgumentNullException("predicate");
+
+ return source.Where(predicate).LastOrDefault(cancellationToken);
+ }
+
+ public static Task<TSource> Single<TSource>(this IAsyncEnumerable<TSource> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ var tcs = new TaskCompletionSource<TSource>();
+
+ var e = source.GetEnumerator();
+
+ e.MoveNext(cancellationToken).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ {
+ var result = e.Current;
+ e.MoveNext(cancellationToken).ContinueWith(t1 =>
+ {
+ t1.Handle(tcs, res1 =>
+ {
+ if (res1)
+ tcs.TrySetException(new InvalidOperationException());
+ else
+ tcs.TrySetResult(result);
+ });
+ });
+ }
+ else
+ tcs.TrySetException(new InvalidOperationException());
+ });
+ });
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<TSource> Single<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, bool> predicate, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (predicate == null)
+ throw new ArgumentNullException("predicate");
+
+ return source.Where(predicate).Single(cancellationToken);
+ }
+
+ public static Task<TSource> SingleOrDefault<TSource>(this IAsyncEnumerable<TSource> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ var tcs = new TaskCompletionSource<TSource>();
+
+ var e = source.GetEnumerator();
+
+ e.MoveNext(cancellationToken).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ {
+ var result = e.Current;
+ e.MoveNext(cancellationToken).ContinueWith(t1 =>
+ {
+ t1.Handle(tcs, res1 =>
+ {
+ if (res1)
+ tcs.TrySetException(new InvalidOperationException());
+ else
+ tcs.TrySetResult(result);
+ });
+ });
+ }
+ else
+ tcs.TrySetResult(default(TSource));
+ });
+ });
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<TSource> SingleOrDefault<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, bool> predicate, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (predicate == null)
+ throw new ArgumentNullException("predicate");
+
+ return source.Where(predicate).SingleOrDefault(cancellationToken);
+ }
+
+ public static Task<TSource> ElementAt<TSource>(this IAsyncEnumerable<TSource> source, int index, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (index < 0)
+ throw new ArgumentOutOfRangeException("index");
+
+ var tcs = new TaskCompletionSource<TSource>();
+
+ var e = source.GetEnumerator();
+
+ var next = default(Action<CancellationToken>);
+ next = ct => e.MoveNext(ct).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ {
+ if (index == 0)
+ {
+ tcs.TrySetResult(e.Current);
+ }
+ else
+ {
+ index--;
+ next(ct);
+ }
+ }
+ else
+ {
+ tcs.TrySetException(new ArgumentOutOfRangeException());
+ }
+ });
+ });
+
+ next(cancellationToken);
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<TSource> ElementAtOrDefault<TSource>(this IAsyncEnumerable<TSource> source, int index, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (index < 0)
+ throw new ArgumentOutOfRangeException("index");
+
+ var tcs = new TaskCompletionSource<TSource>();
+
+ var e = source.GetEnumerator();
+
+ var next = default(Action<CancellationToken>);
+ next = ct => e.MoveNext(ct).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ {
+ if (index == 0)
+ {
+ tcs.TrySetResult(e.Current);
+ }
+ else
+ {
+ index--;
+ next(ct);
+ }
+ }
+ else
+ {
+ tcs.TrySetResult(default(TSource));
+ }
+ });
+ });
+
+ next(cancellationToken);
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<TSource[]> ToArray<TSource>(this IAsyncEnumerable<TSource> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ return source.Aggregate(new List<TSource>(), (list, x) => { list.Add(x); return list; }, list => list.ToArray(), cancellationToken);
+ }
+
+ public static Task<List<TSource>> ToList<TSource>(this IAsyncEnumerable<TSource> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ return source.Aggregate(new List<TSource>(), (list, x) => { list.Add(x); return list; }, cancellationToken);
+ }
+
+ public static Task<Dictionary<TKey, TElement>> ToDictionary<TSource, TKey, TElement>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, IEqualityComparer<TKey> comparer, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (keySelector == null)
+ throw new ArgumentNullException("keySelector");
+ if (elementSelector == null)
+ throw new ArgumentNullException("elementSelector");
+ if (comparer == null)
+ throw new ArgumentNullException("comparer");
+
+ return source.Aggregate(new Dictionary<TKey, TElement>(comparer), (d, x) => { d.Add(keySelector(x), elementSelector(x)); return d; }, cancellationToken);
+ }
+
+ public static Task<Dictionary<TKey, TElement>> ToDictionary<TSource, TKey, TElement>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (keySelector == null)
+ throw new ArgumentNullException("keySelector");
+ if (elementSelector == null)
+ throw new ArgumentNullException("elementSelector");
+
+ return source.ToDictionary(keySelector, elementSelector, EqualityComparer<TKey>.Default, cancellationToken);
+ }
+
+ public static Task<Dictionary<TKey, TSource>> ToDictionary<TSource, TKey>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey> comparer, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (keySelector == null)
+ throw new ArgumentNullException("keySelector");
+ if (comparer == null)
+ throw new ArgumentNullException("comparer");
+
+ return source.ToDictionary(keySelector, x => x, comparer, cancellationToken);
+ }
+
+ public static Task<Dictionary<TKey, TSource>> ToDictionary<TSource, TKey>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (keySelector == null)
+ throw new ArgumentNullException("keySelector");
+
+ return source.ToDictionary(keySelector, x => x, EqualityComparer<TKey>.Default, cancellationToken);
+ }
+
+ public static Task<ILookup<TKey, TElement>> ToLookup<TSource, TKey, TElement>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, IEqualityComparer<TKey> comparer, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (keySelector == null)
+ throw new ArgumentNullException("keySelector");
+ if (elementSelector == null)
+ throw new ArgumentNullException("elementSelector");
+ if (comparer == null)
+ throw new ArgumentNullException("comparer");
+
+ return source.Aggregate(new Lookup<TKey, TElement>(comparer), (lookup, x) => { lookup.Add(keySelector(x), elementSelector(x)); return lookup; }, lookup => (ILookup<TKey, TElement>)lookup, cancellationToken);
+ }
+
+ public static Task<ILookup<TKey, TElement>> ToLookup<TSource, TKey, TElement>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (keySelector == null)
+ throw new ArgumentNullException("keySelector");
+ if (elementSelector == null)
+ throw new ArgumentNullException("elementSelector");
+
+ return source.ToLookup(keySelector, elementSelector, EqualityComparer<TKey>.Default, cancellationToken);
+ }
+
+ public static Task<ILookup<TKey, TSource>> ToLookup<TSource, TKey>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey> comparer, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (keySelector == null)
+ throw new ArgumentNullException("keySelector");
+ if (comparer == null)
+ throw new ArgumentNullException("comparer");
+
+ return source.ToLookup(keySelector, x => x, comparer, cancellationToken);
+ }
+
+ public static Task<ILookup<TKey, TSource>> ToLookup<TSource, TKey>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (keySelector == null)
+ throw new ArgumentNullException("keySelector");
+
+ return source.ToLookup(keySelector, x => x, EqualityComparer<TKey>.Default, cancellationToken);
+ }
+
+ class Lookup<TKey, TElement> : ILookup<TKey, TElement>
+ {
+ private readonly Dictionary<TKey, EnumerableGrouping<TKey, TElement>> map;
+
+ public Lookup(IEqualityComparer<TKey> comparer)
+ {
+ map = new Dictionary<TKey, EnumerableGrouping<TKey, TElement>>(comparer);
+ }
+
+ public void Add(TKey key, TElement element)
+ {
+ var g = default(EnumerableGrouping<TKey, TElement>);
+ if (!map.TryGetValue(key, out g))
+ {
+ g = new EnumerableGrouping<TKey, TElement>(key);
+ map.Add(key, g);
+ }
+
+ g.Add(element);
+ }
+
+ public bool Contains(TKey key)
+ {
+ return map.ContainsKey(key);
+ }
+
+ public int Count
+ {
+ get { return map.Keys.Count; }
+ }
+
+ public IEnumerable<TElement> this[TKey key]
+ {
+ get { return map[key]; }
+ }
+
+ public IEnumerator<IGrouping<TKey, TElement>> GetEnumerator()
+ {
+ return map.Values.Cast<IGrouping<TKey, TElement>>().GetEnumerator();
+ }
+
+ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
+ {
+ return GetEnumerator();
+ }
+ }
+
+ public static Task<double> Average(this IAsyncEnumerable<int> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ var tcs = new TaskCompletionSource<double>();
+
+ var count = 0L;
+ var sum = 0.0;
+
+ var e = source.GetEnumerator();
+
+ var f = default(Action<CancellationToken>);
+ f = ct => e.MoveNext(ct).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ {
+ count++;
+ sum += e.Current;
+ f(ct);
+ }
+ else
+ {
+ if (count == 0)
+ tcs.TrySetException(new InvalidOperationException());
+ else
+ tcs.TrySetResult(sum / count);
+ }
+ });
+ });
+
+ f(cancellationToken);
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<double?> Average(this IAsyncEnumerable<int?> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ var tcs = new TaskCompletionSource<double?>();
+
+ var count = 0L;
+ var sum = 0.0;
+
+ var e = source.GetEnumerator();
+
+ var f = default(Action<CancellationToken>);
+ f = ct => e.MoveNext(ct).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ {
+ if (e.Current.HasValue)
+ {
+ count++;
+ sum += e.Current.Value;
+ }
+ f(ct);
+ }
+ else
+ {
+ if (count == 0)
+ tcs.TrySetResult(null);
+ else
+ tcs.TrySetResult(sum / count);
+ }
+ });
+ });
+
+ f(cancellationToken);
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<double> Average(this IAsyncEnumerable<long> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ var tcs = new TaskCompletionSource<double>();
+
+ var count = 0L;
+ var sum = 0.0;
+
+ var e = source.GetEnumerator();
+
+ var f = default(Action<CancellationToken>);
+ f = ct => e.MoveNext(ct).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ {
+ count++;
+ sum += e.Current;
+ f(ct);
+ }
+ else
+ {
+ if (count == 0)
+ tcs.TrySetException(new InvalidOperationException());
+ else
+ tcs.TrySetResult(sum / count);
+ }
+ });
+ });
+
+ f(cancellationToken);
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<double?> Average(this IAsyncEnumerable<long?> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ var tcs = new TaskCompletionSource<double?>();
+
+ var count = 0L;
+ var sum = 0.0;
+
+ var e = source.GetEnumerator();
+
+ var f = default(Action<CancellationToken>);
+ f = ct => e.MoveNext(ct).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ {
+ if (e.Current.HasValue)
+ {
+ count++;
+ sum += e.Current.Value;
+ }
+ f(ct);
+ }
+ else
+ {
+ if (count == 0)
+ tcs.TrySetResult(null);
+ else
+ tcs.TrySetResult(sum / count);
+ }
+ });
+ });
+
+ f(cancellationToken);
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<double> Average(this IAsyncEnumerable<double> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ var tcs = new TaskCompletionSource<double>();
+
+ var count = 0L;
+ var sum = 0.0;
+
+ var e = source.GetEnumerator();
+
+ var f = default(Action<CancellationToken>);
+ f = ct => e.MoveNext(ct).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ {
+ count++;
+ sum += e.Current;
+ f(ct);
+ }
+ else
+ {
+ if (count == 0)
+ tcs.TrySetException(new InvalidOperationException());
+ else
+ tcs.TrySetResult(sum / count);
+ }
+ });
+ });
+
+ f(cancellationToken);
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<double?> Average(this IAsyncEnumerable<double?> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ var tcs = new TaskCompletionSource<double?>();
+
+ var count = 0L;
+ var sum = 0.0;
+
+ var e = source.GetEnumerator();
+
+ var f = default(Action<CancellationToken>);
+ f = ct => e.MoveNext(ct).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ {
+ if (e.Current.HasValue)
+ {
+ count++;
+ sum += e.Current.Value;
+ }
+ f(ct);
+ }
+ else
+ {
+ if (count == 0)
+ tcs.TrySetResult(null);
+ else
+ tcs.TrySetResult(sum / count);
+ }
+ });
+ });
+
+ f(cancellationToken);
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<float> Average(this IAsyncEnumerable<float> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ var tcs = new TaskCompletionSource<float>();
+
+ var count = 0L;
+ var sum = 0f;
+
+ var e = source.GetEnumerator();
+
+ var f = default(Action<CancellationToken>);
+ f = ct => e.MoveNext(ct).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ {
+ count++;
+ sum += e.Current;
+ f(ct);
+ }
+ else
+ {
+ if (count == 0)
+ tcs.TrySetException(new InvalidOperationException());
+ else
+ tcs.TrySetResult(sum / count);
+ }
+ });
+ });
+
+ f(cancellationToken);
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<float?> Average(this IAsyncEnumerable<float?> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ var tcs = new TaskCompletionSource<float?>();
+
+ var count = 0L;
+ var sum = 0f;
+
+ var e = source.GetEnumerator();
+
+ var f = default(Action<CancellationToken>);
+ f = ct => e.MoveNext(ct).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ {
+ if (e.Current.HasValue)
+ {
+ count++;
+ sum += e.Current.Value;
+ }
+ f(ct);
+ }
+ else
+ {
+ if (count == 0)
+ tcs.TrySetResult(null);
+ else
+ tcs.TrySetResult(sum / count);
+ }
+ });
+ });
+
+ f(cancellationToken);
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<decimal> Average(this IAsyncEnumerable<decimal> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ var tcs = new TaskCompletionSource<decimal>();
+
+ var count = 0L;
+ var sum = 0m;
+
+ var e = source.GetEnumerator();
+
+ var f = default(Action<CancellationToken>);
+ f = ct => e.MoveNext(ct).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ {
+ count++;
+ sum += e.Current;
+ f(ct);
+ }
+ else
+ {
+ if (count == 0)
+ tcs.TrySetException(new InvalidOperationException());
+ else
+ tcs.TrySetResult(sum / count);
+ }
+ });
+ });
+
+ f(cancellationToken);
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<decimal?> Average(this IAsyncEnumerable<decimal?> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ var tcs = new TaskCompletionSource<decimal?>();
+
+ var count = 0L;
+ var sum = 0m;
+
+ var e = source.GetEnumerator();
+
+ var f = default(Action<CancellationToken>);
+ f = ct => e.MoveNext(ct).ContinueWith(t =>
+ {
+ t.Handle(tcs, res =>
+ {
+ if (res)
+ {
+ if (e.Current.HasValue)
+ {
+ count++;
+ sum += e.Current.Value;
+ }
+ f(ct);
+ }
+ else
+ {
+ if (count == 0)
+ tcs.TrySetResult(null);
+ else
+ tcs.TrySetResult(sum / count);
+ }
+ });
+ });
+
+ f(cancellationToken);
+
+ return tcs.Task.Finally(e.Dispose);
+ }
+
+ public static Task<double?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, int?> selector, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (selector == null)
+ throw new ArgumentNullException("selector");
+
+ return source.Select(selector).Average(cancellationToken);
+ }
+
+ public static Task<double> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, int> selector, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (selector == null)
+ throw new ArgumentNullException("selector");
+
+ return source.Select(selector).Average(cancellationToken);
+ }
+
+ public static Task<double> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, long> selector, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (selector == null)
+ throw new ArgumentNullException("selector");
+
+ return source.Select(selector).Average(cancellationToken);
+ }
+
+ public static Task<double?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, long?> selector, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (selector == null)
+ throw new ArgumentNullException("selector");
+
+ return source.Select(selector).Average(cancellationToken);
+ }
+
+ public static Task<double> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, double> selector, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (selector == null)
+ throw new ArgumentNullException("selector");
+
+ return source.Select(selector).Average(cancellationToken);
+ }
+
+ public static Task<double?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, double?> selector, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (selector == null)
+ throw new ArgumentNullException("selector");
+
+ return source.Select(selector).Average(cancellationToken);
+ }
+
+ public static Task<float> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, float> selector, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (selector == null)
+ throw new ArgumentNullException("selector");
+
+ return source.Select(selector).Average(cancellationToken);
+ }
+
+ public static Task<float?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, float?> selector, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (selector == null)
+ throw new ArgumentNullException("selector");
+
+ return source.Select(selector).Average(cancellationToken);
+ }
+
+ public static Task<decimal> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, decimal> selector, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (selector == null)
+ throw new ArgumentNullException("selector");
+
+ return source.Select(selector).Average(cancellationToken);
+ }
+
+ public static Task<decimal?> Average<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, decimal?> selector, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (selector == null)
+ throw new ArgumentNullException("selector");
+
+ return source.Select(selector).Average(cancellationToken);
+ }
+
+ public static Task<int> Max(this IAsyncEnumerable<int> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ return source.Aggregate(Math.Max, cancellationToken);
+ }
+
+ public static Task<long> Max(this IAsyncEnumerable<long> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ return source.Aggregate(Math.Max, cancellationToken);
+ }
+
+ public static Task<double> Max(this IAsyncEnumerable<double> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ return source.Aggregate(Math.Max, cancellationToken);
+ }
+
+ public static Task<float> Max(this IAsyncEnumerable<float> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ return source.Aggregate(Math.Max, cancellationToken);
+ }
+
+ public static Task<decimal> Max(this IAsyncEnumerable<decimal> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ return source.Aggregate(Math.Max, cancellationToken);
+ }
+
+ static T? NullableMax<T>(T? x, T? y)
+ where T : struct, IComparable<T>
+ {
+ if (!x.HasValue)
+ return y;
+ if (!y.HasValue)
+ return x;
+ if (x.Value.CompareTo(y.Value) >= 0)
+ return x;
+ return y;
+ }
+
+ public static Task<int?> Max(this IAsyncEnumerable<int?> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ return source.Aggregate(default(int?), NullableMax, cancellationToken);
+ }
+
+ public static Task<long?> Max(this IAsyncEnumerable<long?> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ return source.Aggregate(default(long?), NullableMax, cancellationToken);
+ }
+
+ public static Task<double?> Max(this IAsyncEnumerable<double?> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ return source.Aggregate(default(double?), NullableMax, cancellationToken);
+ }
+
+ public static Task<float?> Max(this IAsyncEnumerable<float?> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ return source.Aggregate(default(float?), NullableMax, cancellationToken);
+ }
+
+ public static Task<decimal?> Max(this IAsyncEnumerable<decimal?> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ return source.Aggregate(default(decimal?), NullableMax, cancellationToken);
+ }
+
+ public static Task<TSource> Max<TSource>(this IAsyncEnumerable<TSource> source, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+
+ var comparer = Comparer<TSource>.Default;
+ return source.Aggregate((x, y) => comparer.Compare(x, y) >= 0 ? x : y, cancellationToken);
+ }
+
+ public static Task<int> Max<TSource>(this IAsyncEnumerable<TSource> source, Func<TSource, int> selector, CancellationToken cancellationToken)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (selector == null)
+ throw new ArgumentNullException("selector");
+
+ return source.Select(selector).Max(cancellationToken);
+ }
+
+ public static Task<long> Max<TSource>(this IAsyncEnumerable&l