part of SumColumn

This commit is contained in:
Chika 2020-10-16 16:40:54 +03:00
parent b127baeeef
commit 5feb8d42af
13 changed files with 381 additions and 88 deletions

View File

@ -38,16 +38,14 @@
<e p="EvoCalculator.Core.Calculation" t="IncludeRecursive"> <e p="EvoCalculator.Core.Calculation" t="IncludeRecursive">
<e p="bin" t="ExcludeRecursive" /> <e p="bin" t="ExcludeRecursive" />
<e p="Columns" t="Include"> <e p="Columns" t="Include">
<e p="BaseColumnWithXIRR.cs" t="Include" />
<e p="DateColumn.cs" t="Include" /> <e p="DateColumn.cs" t="Include" />
<e p="DateTempColumn.cs" t="Include" /> <e p="DateTempColumn.cs" t="Include" />
<e p="KaskoNmperGrColumn.cs" t="Include" /> <e p="KaskoNmperGrColumn.cs" t="Include" />
<e p="PercentPaymentColumn.cs" t="Include" /> <e p="PercentPaymentColumn.cs" t="Include" />
<e p="SumColumn.cs" t="Include" />
</e> </e>
<e p="EvoCalculator.Core.Calculation.csproj" t="IncludeRecursive" /> <e p="EvoCalculator.Core.Calculation.csproj" t="IncludeRecursive" />
<e p="FinanceFormulas" t="Include">
<e p="XIRR.cs" t="Include" />
<e p="XNPV.cs" t="Include" />
</e>
<e p="obj" t="ExcludeRecursive"> <e p="obj" t="ExcludeRecursive">
<e p="Debug" t="Include"> <e p="Debug" t="Include">
<e p="netcoreapp3.1" t="Include"> <e p="netcoreapp3.1" t="Include">
@ -68,11 +66,25 @@
</e> </e>
</e> </e>
</e> </e>
<e p="EvoCalculator.Core.FinanceFormulas" t="IncludeRecursive">
<e p="bin" t="ExcludeRecursive" />
<e p="EvoCalculator.Core.FinanceFormulas.csproj" t="IncludeRecursive" />
<e p="obj" t="ExcludeRecursive">
<e p="Debug" t="Include">
<e p="netcoreapp3.1" t="Include">
<e p="EvoCalculator.Core.FinanceFormulas.AssemblyInfo.cs" t="Include" />
</e>
</e>
</e>
<e p="XIRR.cs" t="Include" />
<e p="XNPV.cs" t="Include" />
</e>
<e p="EvoCalculator.Core.Models" t="IncludeRecursive"> <e p="EvoCalculator.Core.Models" t="IncludeRecursive">
<e p="bin" t="ExcludeRecursive" /> <e p="bin" t="ExcludeRecursive" />
<e p="Calculation" t="Include"> <e p="Calculation" t="Include">
<e p="Interfaces" t="Include"> <e p="Interfaces" t="Include">
<e p="IColumn.cs" t="Include" /> <e p="IColumn.cs" t="Include" />
<e p="IColumnWithXIRR.cs" t="Include" />
<e p="IFinanceFormula.cs" t="Include" /> <e p="IFinanceFormula.cs" t="Include" />
</e> </e>
<e p="Models" t="Include"> <e p="Models" t="Include">
@ -111,6 +123,7 @@
<e p="DateTempTests.cs" t="Include" /> <e p="DateTempTests.cs" t="Include" />
<e p="KaskoNmperGrTests.cs" t="Include" /> <e p="KaskoNmperGrTests.cs" t="Include" />
<e p="PercentPaymentTests.cs" t="Include" /> <e p="PercentPaymentTests.cs" t="Include" />
<e p="SumColumnTest.cs" t="Include" />
</e> </e>
<e p="FinanceFormulasTests.cs" t="Include" /> <e p="FinanceFormulasTests.cs" t="Include" />
</e> </e>

View File

@ -14,12 +14,19 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="2c3b0650-5589-43d4-b4b7-2979612bb30f" name="Default Changelist" comment=""> <list default="true" id="2c3b0650-5589-43d4-b4b7-2979612bb30f" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs" afterDir="false" /> <change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/BaseColumnWithXIRR.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/Columns/KaskoNmperGrTests.cs" afterDir="false" /> <change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/SumColumn.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/EvoCalculator.Core.FinanceFormulas.csproj" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Interfaces/IColumnWithXIRR.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/Columns/SumColumnTest.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/DateTempColumn.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/DateTempColumn.cs" afterDir="false" /> <change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Interfaces/IColumn.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Interfaces/IColumn.cs" afterDir="false" /> <change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/EvoCalculator.Core.Calculation.csproj" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/EvoCalculator.Core.Calculation.csproj" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/FinanceFormulas/XIRR.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/XIRR.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/FinanceFormulas/XNPV.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/XNPV.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/FinanceFormulasTests.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/FinanceFormulasTests.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.sln" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.sln" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -31,23 +38,15 @@
</component> </component>
<component name="HighlightingSettingsPerFile"> <component name="HighlightingSettingsPerFile">
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/18D5A60D-361A-4AFD-A431-F772FA87FCC3/d9/b0109e6d/TestInvoker`1.cs" root0="SKIP_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/18D5A60D-361A-4AFD-A431-F772FA87FCC3/d9/b0109e6d/TestInvoker`1.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Tests/Calculation/Suite/Columns/DateColumnTests.cs" root0="SKIP_HIGHLIGHTING" /> <setting file="file://$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/XIRR.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Calculation/Columns/DateTempColumn.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/EvoCalculator.Core.Constants/Calculation.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$PROJECT_DIR$/EvoCalculator.Core.Constants/Calculation.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Calculation/Columns/DateColumn.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/9D995D4A-0EBE-4A93-85A6-BE06CB7C70EE/f6/ada9c10c/FactAttribute.cs" root0="SKIP_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/9D995D4A-0EBE-4A93-85A6-BE06CB7C70EE/f6/ada9c10c/FactAttribute.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Models/Calculation/Interfaces/IColumn.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Calculation/Columns/PercentPaymentColumn.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/9152434B-0FAC-463B-87F2-DD9AF798817F/2e/201d3c41/Assert.cs" root0="SKIP_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/9152434B-0FAC-463B-87F2-DD9AF798817F/2e/201d3c41/Assert.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Calculation/Columns/DateColumn.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/AD61CA47-F8B7-4CC6-93A0-BA44CC73B5C7/49/DateTime.cs" root0="SKIP_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/AD61CA47-F8B7-4CC6-93A0-BA44CC73B5C7/49/DateTime.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Calculation/Columns/DateTempColumn.cs" root0="SKIP_HIGHLIGHTING" />
</component> </component>
<component name="IdeDocumentHistory"> <component name="IdeDocumentHistory">
<option name="CHANGED_PATHS"> <option name="CHANGED_PATHS">
<list> <list>
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/UnitTest1.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Class1.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Class1.cs" /> <option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Class1.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core/Controllers/WeatherForecastController.cs" /> <option value="$PROJECT_DIR$/EvoCalculator.Core/Controllers/WeatherForecastController.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core/Startup.cs" /> <option value="$PROJECT_DIR$/EvoCalculator.Core/Startup.cs" />
@ -66,7 +65,6 @@
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/FinanceFormulas/XNPV.cs" /> <option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/FinanceFormulas/XNPV.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/FinanceFormulas/XIRR.cs" /> <option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/FinanceFormulas/XIRR.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core/Controllers/v1/WeatherForecastController.cs" /> <option value="$PROJECT_DIR$/EvoCalculator.Core/Controllers/v1/WeatherForecastController.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/FinanceFormulasTests.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Models/PreparedParams.cs" /> <option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Models/PreparedParams.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Models/PreparedPayments.cs" /> <option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Models/PreparedPayments.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/ComputableColumn.cs" /> <option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/ComputableColumn.cs" />
@ -82,12 +80,24 @@
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Models/Prepared/PreparedPayments.cs" /> <option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Models/Prepared/PreparedPayments.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/Columns/PercentPaymentTests.cs" /> <option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/Columns/PercentPaymentTests.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/KaskoNmperGr.cs" /> <option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/KaskoNmperGr.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/PercentPaymentColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Interfaces/IColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/DateColumn.cs" /> <option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/DateColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/DateTempColumn.cs" /> <option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/DateTempColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/Columns/KaskoNmperGrTests.cs" /> <option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/Columns/KaskoNmperGrTests.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/PercentPaymentColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Interfaces/IColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Interfaces/BaseColumnWithXIRR.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/SumColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.FinanceFormulas/Class1.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.FinanceFormulas/XNPV.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.FinanceFormulas/XIRR.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/XNPV.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs" /> <option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/XIRR.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Models/BaseColumnWithXIRR.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/BaseColumnWithXIRR.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/Columns/SumColumnTest.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Interfaces/IColumnWithXIRR.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/FinanceFormulasTests.cs" />
</list> </list>
</option> </option>
</component> </component>
@ -152,7 +162,9 @@
<workItem from="1602504354370" duration="6573000" /> <workItem from="1602504354370" duration="6573000" />
<workItem from="1602584653395" duration="12605000" /> <workItem from="1602584653395" duration="12605000" />
<workItem from="1602678304213" duration="9304000" /> <workItem from="1602678304213" duration="9304000" />
<workItem from="1602754684591" duration="12926000" /> <workItem from="1602754684591" duration="13639000" />
<workItem from="1602850022326" duration="4617000" />
<workItem from="1602854690202" duration="696000" />
</task> </task>
<task id="LOCAL-00001" summary="rename: flow"> <task id="LOCAL-00001" summary="rename: flow">
<created>1602593830686</created> <created>1602593830686</created>
@ -200,94 +212,94 @@
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="897" height="464" key="DebuggerActiveHint/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767525601" /> <state width="897" height="464" key="DebuggerActiveHint/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767525601" />
<state width="2517" height="437" key="GridCell.Tab.0.bottom" timestamp="1602767710354"> <state width="2517" height="437" key="GridCell.Tab.0.bottom" timestamp="1602768462757">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="2517" height="437" key="GridCell.Tab.0.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710354" /> <state width="2517" height="437" key="GridCell.Tab.0.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462757" />
<state width="2517" height="437" key="GridCell.Tab.0.center" timestamp="1602767710354"> <state width="2517" height="437" key="GridCell.Tab.0.center" timestamp="1602768462757">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="2517" height="437" key="GridCell.Tab.0.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710354" /> <state width="2517" height="437" key="GridCell.Tab.0.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462757" />
<state width="2517" height="437" key="GridCell.Tab.0.left" timestamp="1602767710354"> <state width="2517" height="437" key="GridCell.Tab.0.left" timestamp="1602768462756">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="2517" height="437" key="GridCell.Tab.0.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710354" /> <state width="2517" height="437" key="GridCell.Tab.0.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462756" />
<state width="2517" height="437" key="GridCell.Tab.0.right" timestamp="1602767710354"> <state width="2517" height="437" key="GridCell.Tab.0.right" timestamp="1602768462757">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="2517" height="437" key="GridCell.Tab.0.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710354" /> <state width="2517" height="437" key="GridCell.Tab.0.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462757" />
<state width="2517" height="437" key="GridCell.Tab.1.bottom" timestamp="1602767710355"> <state width="2517" height="437" key="GridCell.Tab.1.bottom" timestamp="1602768462757">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="2517" height="437" key="GridCell.Tab.1.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" /> <state width="2517" height="437" key="GridCell.Tab.1.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462757" />
<state width="2517" height="437" key="GridCell.Tab.1.center" timestamp="1602767710354"> <state width="2517" height="437" key="GridCell.Tab.1.center" timestamp="1602768462757">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="2517" height="437" key="GridCell.Tab.1.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710354" /> <state width="2517" height="437" key="GridCell.Tab.1.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462757" />
<state width="2517" height="437" key="GridCell.Tab.1.left" timestamp="1602767710354"> <state width="2517" height="437" key="GridCell.Tab.1.left" timestamp="1602768462757">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="2517" height="437" key="GridCell.Tab.1.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710354" /> <state width="2517" height="437" key="GridCell.Tab.1.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462757" />
<state width="2517" height="437" key="GridCell.Tab.1.right" timestamp="1602767710354"> <state width="2517" height="437" key="GridCell.Tab.1.right" timestamp="1602768462757">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="2517" height="437" key="GridCell.Tab.1.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710354" /> <state width="2517" height="437" key="GridCell.Tab.1.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462757" />
<state width="2517" height="437" key="GridCell.Tab.2.bottom" timestamp="1602767710355"> <state width="2517" height="437" key="GridCell.Tab.2.bottom" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="2517" height="437" key="GridCell.Tab.2.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" /> <state width="2517" height="437" key="GridCell.Tab.2.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state width="2517" height="437" key="GridCell.Tab.2.center" timestamp="1602767710355"> <state width="2517" height="437" key="GridCell.Tab.2.center" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="2517" height="437" key="GridCell.Tab.2.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" /> <state width="2517" height="437" key="GridCell.Tab.2.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state width="2517" height="437" key="GridCell.Tab.2.left" timestamp="1602767710355"> <state width="2517" height="437" key="GridCell.Tab.2.left" timestamp="1602768462757">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="2517" height="437" key="GridCell.Tab.2.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" /> <state width="2517" height="437" key="GridCell.Tab.2.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462757" />
<state width="2517" height="437" key="GridCell.Tab.2.right" timestamp="1602767710355"> <state width="2517" height="437" key="GridCell.Tab.2.right" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="2517" height="437" key="GridCell.Tab.2.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" /> <state width="2517" height="437" key="GridCell.Tab.2.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state width="2517" height="437" key="GridCell.Tab.3.bottom" timestamp="1602767710355"> <state width="2517" height="437" key="GridCell.Tab.3.bottom" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="2517" height="437" key="GridCell.Tab.3.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" /> <state width="2517" height="437" key="GridCell.Tab.3.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state width="2517" height="437" key="GridCell.Tab.3.center" timestamp="1602767710355"> <state width="2517" height="437" key="GridCell.Tab.3.center" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="2517" height="437" key="GridCell.Tab.3.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" /> <state width="2517" height="437" key="GridCell.Tab.3.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state width="2517" height="437" key="GridCell.Tab.3.left" timestamp="1602767710355"> <state width="2517" height="437" key="GridCell.Tab.3.left" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="2517" height="437" key="GridCell.Tab.3.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" /> <state width="2517" height="437" key="GridCell.Tab.3.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state width="2517" height="437" key="GridCell.Tab.3.right" timestamp="1602767710355"> <state width="2517" height="437" key="GridCell.Tab.3.right" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="2517" height="437" key="GridCell.Tab.3.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" /> <state width="2517" height="437" key="GridCell.Tab.3.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state width="2517" height="437" key="GridCell.Tab.4.bottom" timestamp="1602767710355"> <state width="2517" height="437" key="GridCell.Tab.4.bottom" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="2517" height="437" key="GridCell.Tab.4.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" /> <state width="2517" height="437" key="GridCell.Tab.4.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state width="2517" height="437" key="GridCell.Tab.4.center" timestamp="1602767710355"> <state width="2517" height="437" key="GridCell.Tab.4.center" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="2517" height="437" key="GridCell.Tab.4.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" /> <state width="2517" height="437" key="GridCell.Tab.4.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state width="2517" height="437" key="GridCell.Tab.4.left" timestamp="1602767710355"> <state width="2517" height="437" key="GridCell.Tab.4.left" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="2517" height="437" key="GridCell.Tab.4.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" /> <state width="2517" height="437" key="GridCell.Tab.4.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state width="2517" height="437" key="GridCell.Tab.4.right" timestamp="1602767710355"> <state width="2517" height="437" key="GridCell.Tab.4.right" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state width="2517" height="437" key="GridCell.Tab.4.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" /> <state width="2517" height="437" key="GridCell.Tab.4.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state x="872" y="432" key="Rider.ProjectTemplateDialog.Size" timestamp="1602683469535"> <state x="872" y="432" key="Rider.ProjectTemplateDialog.Size" timestamp="1602854431119">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state x="872" y="432" key="Rider.ProjectTemplateDialog.Size/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602683469535" /> <state x="872" y="432" key="Rider.ProjectTemplateDialog.Size/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602854431119" />
<state x="1108" y="385" key="RiderGenerateDialog" timestamp="1602761716982"> <state x="1108" y="385" key="RiderGenerateDialog" timestamp="1602853905402">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state x="1108" y="385" key="RiderGenerateDialog/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602761716982" /> <state x="1108" y="385" key="RiderGenerateDialog/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602853905402" />
<state x="1078" y="410" key="RollbackChangesDialog" timestamp="1602761804757"> <state x="1078" y="410" key="RollbackChangesDialog" timestamp="1602761804757">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
@ -316,29 +328,12 @@
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state x="930" y="299" width="700" height="801" key="find.popup/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602593714122" /> <state x="930" y="299" width="700" height="801" key="find.popup/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602593714122" />
<state x="943" y="315" width="672" height="678" key="search.everywhere.popup" timestamp="1602764852634"> <state x="943" y="315" width="672" height="678" key="search.everywhere.popup" timestamp="1602850027763">
<screen x="0" y="0" width="2560" height="1400" /> <screen x="0" y="0" width="2560" height="1400" />
</state> </state>
<state x="943" y="315" width="672" height="678" key="search.everywhere.popup/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602764852634" /> <state x="943" y="315" width="672" height="678" key="search.everywhere.popup/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602850027763" />
</component> </component>
<component name="XDebuggerManager"> <component name="XDebuggerManager">
<breakpoint-manager>
<breakpoints>
<line-breakpoint enabled="true" type="DotNet Breakpoints">
<url>file://$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/Columns/KaskoNmperGrTests.cs</url>
<line>254</line>
<properties documentPath="C:\Users\Chika\Projects\EvoCalculator.Core\EvoCalculator.Core.Tests\Calculation\Suite\Columns\KaskoNmperGrTests.cs" initialLine="254">
<startOffsets>
<option value="9276" />
</startOffsets>
<endOffsets>
<option value="9304" />
</endOffsets>
</properties>
<option name="timeStamp" value="17" />
</line-breakpoint>
</breakpoints>
</breakpoint-manager>
<pin-to-top-manager> <pin-to-top-manager>
<pinned-members> <pinned-members>
<PinnedItemInfo parentTag="Frame#EvoCalculator.Core.Tests.Calculation.Suite.Columns.KaskoNmperGrTests.KaskoNmperGrTest2" memberName="preparedValues" /> <PinnedItemInfo parentTag="Frame#EvoCalculator.Core.Tests.Calculation.Suite.Columns.KaskoNmperGrTests.KaskoNmperGrTest2" memberName="preparedValues" />

View File

@ -0,0 +1,37 @@
using System;
using EvoCalculator.Core.FinanceFormulas;
using EvoCalculator.Core.Models.Calculation.Interfaces;
namespace EvoCalculator.Core.Models.Calculation.Models
{
public class BaseColumnWithXIRR : IColumnWithXIRR<double>
{
public double[] Values { get; set; }
public double IRR { get; set; }
public DateTime[] Dates { get; set; }
protected Flow[] Flows
{
get
{
Flow[] flows = new Flow[Values.Length];
for (var i = 0; i < Values.Length; i++)
{
flows[i] = new Flow()
{
Date = Dates[i],
Value = Values[i]
};
}
return flows;
}
}
public void ComputeXIRR()
{
var XIRR = new XIRR(this.Flows);
IRR = XIRR.GetResult();
}
}
}

View File

@ -1,5 +1,5 @@
using System; using System;
using EvoCalculator.Core.Calculation.FinanceFormulas; using EvoCalculator.Core.FinanceFormulas;
using EvoCalculator.Core.Models.Calculation.Interfaces; using EvoCalculator.Core.Models.Calculation.Interfaces;
using EvoCalculator.Core.Models.Calculation.Models; using EvoCalculator.Core.Models.Calculation.Models;
using EvoCalculator.Core.Models.Calculation.Models.Prepared; using EvoCalculator.Core.Models.Calculation.Models.Prepared;

View File

@ -0,0 +1,35 @@
using System;
using EvoCalculator.Core.Models.Calculation.Interfaces;
using EvoCalculator.Core.Models.Calculation.Models;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
public class SumColumn : BaseColumnWithXIRR
{
public SumColumn(int count, DateTempColumn dateTempColumn)
{
base.Values = new double[count];
base.Dates = new DateTime[dateTempColumn.Values.Length];
for (var i = 0; i < dateTempColumn.Values.Length; i++)
{
base.Dates[i] = dateTempColumn.Values[i];
}
}
public void ComputeValues(PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn)
{
Values[0] = -preparedValues.BaseCost;
Values[1] = preparedValues.FirstPaymentSum;
Values[2] = 98647.7277641429;
for (var i = 3; i < Values.Length - 1; i++)
{
Values[i] = Values[2] * percentPaymentColumn.Values[i] / 100;
}
Values[^1] = preparedValues.LastPaymentSum;
}
}
}

View File

@ -5,6 +5,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\EvoCalculator.Core.FinanceFormulas\EvoCalculator.Core.FinanceFormulas.csproj" />
<ProjectReference Include="..\EvoCalculator.Core.Models\EvoCalculator.Core.Models.csproj" /> <ProjectReference Include="..\EvoCalculator.Core.Models\EvoCalculator.Core.Models.csproj" />
</ItemGroup> </ItemGroup>

View File

@ -0,0 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>EvoCalculator.Core.FinanceFormulas</RootNamespace>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\EvoCalculator.Core.Models\EvoCalculator.Core.Models.csproj" />
</ItemGroup>
</Project>

View File

@ -2,7 +2,7 @@
using EvoCalculator.Core.Models.Calculation.Interfaces; using EvoCalculator.Core.Models.Calculation.Interfaces;
using EvoCalculator.Core.Models.Calculation.Models; using EvoCalculator.Core.Models.Calculation.Models;
namespace EvoCalculator.Core.Calculation.FinanceFormulas namespace EvoCalculator.Core.FinanceFormulas
{ {
public class XIRR : IFinanceFormula<double> public class XIRR : IFinanceFormula<double>
{ {

View File

@ -3,7 +3,7 @@ using System.Linq;
using EvoCalculator.Core.Models.Calculation.Interfaces; using EvoCalculator.Core.Models.Calculation.Interfaces;
using EvoCalculator.Core.Models.Calculation.Models; using EvoCalculator.Core.Models.Calculation.Models;
namespace EvoCalculator.Core.Calculation.FinanceFormulas namespace EvoCalculator.Core.FinanceFormulas
{ {
public class XNPV : IFinanceFormula<double> public class XNPV : IFinanceFormula<double>
{ {

View File

@ -0,0 +1,12 @@
using System;
using EvoCalculator.Core.Models.Calculation.Models;
namespace EvoCalculator.Core.Models.Calculation.Interfaces
{
public interface IColumnWithXIRR<T> : IColumn<T>
{
public double IRR { get; set; }
public DateTime[] Dates { get; set; }
public void ComputeXIRR();
}
}

View File

@ -0,0 +1,182 @@
using System;
using EvoCalculator.Core.Calculation.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using Xunit;
namespace EvoCalculator.Core.Tests.Calculation.Suite.Columns
{
public class SumColumnTest
{
[Fact]
public void SumColumnTest1()
{
var preparedValues =
new PreparedValues()
{
BaseCost = 2842960.70661055,
FirstPaymentSum = 636000,
Nmper = 30,
LastPaymentSum = 25440
};
var percentPaymentColumn = new PercentPaymentColumn(preparedValues.Nmper + 1)
{
Values = new[]
{
0.00,
0.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
0.00,
}
};
var dateTempColumn = new DateTempColumn()
{
Values = new[]
{
new DateTime(2018, 10, 31),
new DateTime(2018, 10, 31),
new DateTime(2018, 11, 30),
new DateTime(2018, 12, 31),
new DateTime(2019, 1, 31),
new DateTime(2019, 2, 28),
new DateTime(2019, 3, 31),
new DateTime(2019, 4, 30),
new DateTime(2019, 5, 31),
new DateTime(2019, 6, 30),
new DateTime(2019, 7, 31),
new DateTime(2019, 8, 31),
new DateTime(2019, 9, 30),
new DateTime(2019, 10, 31),
new DateTime(2019, 11, 30),
new DateTime(2019, 12, 31),
new DateTime(2020, 1, 31),
new DateTime(2020, 2, 29),
new DateTime(2020, 3, 31),
new DateTime(2020, 4, 30),
new DateTime(2020, 5, 31),
new DateTime(2020, 6, 30),
new DateTime(2020, 7, 31),
new DateTime(2020, 8, 31),
new DateTime(2020, 9, 30),
new DateTime(2020, 10, 31),
new DateTime(2020, 11, 30),
new DateTime(2020, 12, 31),
new DateTime(2021, 1, 31),
new DateTime(2021, 2, 28),
new DateTime(2021, 3, 31),
new DateTime(2021, 4, 30),
new DateTime(2021, 5, 31),
new DateTime(2021, 6, 30),
new DateTime(2021, 7, 31),
new DateTime(2021, 8, 31),
new DateTime(2021, 9, 30),
new DateTime(2021, 10, 31),
new DateTime(2021, 11, 30),
new DateTime(2021, 12, 31),
new DateTime(2022, 1, 31),
new DateTime(2022, 2, 28),
new DateTime(2022, 3, 31),
new DateTime(2022, 4, 30),
new DateTime(2022, 5, 31),
new DateTime(2022, 6, 30),
new DateTime(2022, 7, 31),
new DateTime(2022, 8, 31),
new DateTime(2022, 9, 30),
new DateTime(2022, 10, 31),
new DateTime(2022, 11, 30),
new DateTime(2022, 12, 31),
new DateTime(2023, 1, 31),
new DateTime(2023, 2, 28),
new DateTime(2023, 3, 31),
new DateTime(2023, 4, 30),
new DateTime(2023, 5, 31),
new DateTime(2023, 6, 30),
new DateTime(2023, 7, 31),
new DateTime(2023, 8, 31),
new DateTime(2023, 9, 30),
new DateTime(2023, 10, 31),
new DateTime(2023, 11, 30),
new DateTime(2023, 12, 31),
new DateTime(2024, 1, 31),
new DateTime(2024, 2, 29),
new DateTime(2024, 3, 31),
}
};
var sumColumn = new SumColumn(preparedValues.Nmper + 1, dateTempColumn);
sumColumn.ComputeValues(preparedValues, percentPaymentColumn);
var expected = new[]
{
-2842960.70661055,
636000,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
25440,
};
var values = sumColumn.Values;
Assert.Equal(expected, values);
sumColumn.ComputeXIRR();
Assert.InRange(sumColumn.IRR, 0.220325, 0.220327);
}
}
}

View File

@ -1,6 +1,6 @@
using System; using System;
using System.Linq; using System.Linq;
using EvoCalculator.Core.Calculation.FinanceFormulas; using EvoCalculator.Core.FinanceFormulas;
using EvoCalculator.Core.Models.Calculation.Models; using EvoCalculator.Core.Models.Calculation.Models;
using Xunit; using Xunit;
using Xunit.Abstractions; using Xunit.Abstractions;

View File

@ -10,6 +10,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EvoCalculator.Core.Models",
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EvoCalculator.Core.Constants", "EvoCalculator.Core.Constants\EvoCalculator.Core.Constants.csproj", "{A2774317-9EC4-425C-B63F-C5255BE2E5E2}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EvoCalculator.Core.Constants", "EvoCalculator.Core.Constants\EvoCalculator.Core.Constants.csproj", "{A2774317-9EC4-425C-B63F-C5255BE2E5E2}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EvoCalculator.Core.FinanceFormulas", "EvoCalculator.Core.FinanceFormulas\EvoCalculator.Core.FinanceFormulas.csproj", "{57FC4E65-3E6B-4C10-8792-58639D068F71}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -36,5 +38,9 @@ Global
{A2774317-9EC4-425C-B63F-C5255BE2E5E2}.Debug|Any CPU.Build.0 = Debug|Any CPU {A2774317-9EC4-425C-B63F-C5255BE2E5E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A2774317-9EC4-425C-B63F-C5255BE2E5E2}.Release|Any CPU.ActiveCfg = Release|Any CPU {A2774317-9EC4-425C-B63F-C5255BE2E5E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A2774317-9EC4-425C-B63F-C5255BE2E5E2}.Release|Any CPU.Build.0 = Release|Any CPU {A2774317-9EC4-425C-B63F-C5255BE2E5E2}.Release|Any CPU.Build.0 = Release|Any CPU
{57FC4E65-3E6B-4C10-8792-58639D068F71}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{57FC4E65-3E6B-4C10-8792-58639D068F71}.Debug|Any CPU.Build.0 = Debug|Any CPU
{57FC4E65-3E6B-4C10-8792-58639D068F71}.Release|Any CPU.ActiveCfg = Release|Any CPU
{57FC4E65-3E6B-4C10-8792-58639D068F71}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
EndGlobal EndGlobal