Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Updating Starbucks Sample to use RabbitMQ

  • Loading branch information...
commit f0807c51bfb87f7814197d0026fd6fb7d88214a5 1 parent ff6f252
@TravisTheTechie TravisTheTechie authored
View
22 src/Samples/Starbucks/README.md
@@ -0,0 +1,22 @@
+TOSCA Example
+===
+
+This is an example demostrating different aspects of configuring MassTransit and using it to coordinate a multiple actor workflow (ordering a drink).
+
+Getting Started
+---
+
+ 1. Install [Erlang]
+ 1. Install [RabbitMQ]
+ 1. Install RabbitMQ Management Plugins
+ 2. Run `rabbitmq-plugins enable rabbitmq_management` at RabbitMQ command prompt to install management tools
+ 2. Restart service & browse to http://localhost:15672/
+ 2. Login with guest : guest
+ 1. Open up the solution
+ 1. Build
+
+Now you should run the Barista and Cashier app before opening up an instance of a customer. You can run multiple customer apps and see what's happens when more than one orders at the same time.
+
+
+ [Erlang]: http://www.erlang.org/download.html
+ [RabbitMQ]: http://www.rabbitmq.com/download.html
View
25 src/Samples/Starbucks/Starbucks.Barista/DrinkPreparationSaga.cs
@@ -1,4 +1,16 @@
-namespace Starbucks.Barista
+// Copyright 2007-2013 Chris Patterson, Dru Sellers, Travis Smith, et. al.
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+// this file except in compliance with the License. You may obtain a copy of the
+// License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations under the License.
+namespace Starbucks.Barista
{
using System;
using System.Threading;
@@ -38,16 +50,11 @@ public DrinkPreparationSaga(Guid correlationId)
CorrelationId = correlationId;
}
-
- public string Drink { get; set; }
- public string Name { get; set; }
-
public static State Initial { get; set; }
public static State Completed { get; set; }
public static State PreparingDrink { get; set; }
public static State WaitingForPayment { get; set; }
-
public static Event<NewOrderMessage> NewOrder { get; set; }
public static Event<PaymentCompleteMessage> PaymentComplete { get; set; }
@@ -55,13 +62,15 @@ public DrinkPreparationSaga(Guid correlationId)
public IServiceBus Bus { get; set; }
+ public string Drink { get; set; }
+ public string Name { get; set; }
public void ProcessNewOrder(NewOrderMessage message)
{
Name = message.Name;
Drink = string.Format("{0} {1}", message.Size, message.Item);
- Console.WriteLine(string.Format("{0} for {1}, got it!", Drink, Name));
+ Console.WriteLine("{0} for {1}, got it!", Drink, Name);
for (int i = 0; i < 10; i++)
{
@@ -72,7 +81,7 @@ public void ProcessNewOrder(NewOrderMessage message)
private void ServeDrink()
{
- Console.WriteLine(string.Format("I've got a {0} ready for {1}!", Drink, Name));
+ Console.WriteLine("I've got a {0} ready for {1}!", Drink, Name);
var message = new DrinkReadyMessage
{
View
11 src/Samples/Starbucks/Starbucks.Barista/Program.cs
@@ -1,4 +1,4 @@
-// Copyright 2007-2011 Chris Patterson, Dru Sellers, Travis Smith, et. al.
+// Copyright 2007-2013 Chris Patterson, Dru Sellers, Travis Smith, et. al.
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use
// this file except in compliance with the License. You may obtain a copy of the
@@ -46,11 +46,8 @@ static void Main()
{
return ServiceBusFactory.New(sbc =>
{
- sbc.ReceiveFrom("msmq://localhost/starbucks_barista");
- sbc.UseMsmq();
- sbc.UseMulticastSubscriptionClient();
-
- sbc.UseControlBus();
+ sbc.ReceiveFrom("rabbitmq://localhost/starbucks_barista");
+ sbc.UseRabbitMq();
sbc.Subscribe(subs => { subs.LoadFrom(container); });
});
@@ -60,7 +57,7 @@ static void Main()
{
c.SetServiceName("StarbucksBarista");
c.SetDisplayName("Starbucks Barista");
- c.SetDescription("a Mass Transit sample service for making orders of coffee.");
+ c.SetDescription("a MassTransit sample service for making orders of coffee.");
c.DependsOnMsmq();
c.RunAsLocalService();
View
32 src/Samples/Starbucks/Starbucks.Barista/Starbucks.Barista.csproj
@@ -84,12 +84,12 @@
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
- <Reference Include="Topshelf" Condition="'$(TargetFrameworkVersion)' == 'v3.5'">
- <HintPath>..\..\..\..\lib\Topshelf\net-3.5\Topshelf.dll</HintPath>
- </Reference>
- <Reference Include="Topshelf" Condition="'$(TargetFrameworkVersion)' == 'v4.0'">
- <HintPath>..\..\..\..\lib\Topshelf\net-4.0\Topshelf.dll</HintPath>
- </Reference>
+ <Reference Include="Topshelf" Condition="'$(TargetFrameworkVersion)' == 'v3.5'">
+ <HintPath>..\..\..\..\lib\Topshelf\net-3.5\Topshelf.dll</HintPath>
+ </Reference>
+ <Reference Include="Topshelf" Condition="'$(TargetFrameworkVersion)' == 'v4.0'">
+ <HintPath>..\..\..\..\lib\Topshelf\net-4.0\Topshelf.dll</HintPath>
+ </Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="DrinkPreparationSaga.cs" />
@@ -115,9 +115,9 @@
<Project>{6EFD69FC-CBCC-4F85-AEE0-EFBA73F4D273}</Project>
<Name>MassTransit</Name>
</ProjectReference>
- <ProjectReference Include="..\..\..\Transports\MassTransit.Transports.Msmq\MassTransit.Transports.Msmq.csproj">
- <Project>{6F90867C-E092-4EDC-B3DE-600D39DF0335}</Project>
- <Name>MassTransit.Transports.Msmq</Name>
+ <ProjectReference Include="..\..\..\Transports\MassTransit.Transports.RabbitMq\MassTransit.Transports.RabbitMq.csproj">
+ <Project>{6c7149d7-4d97-45df-a05d-61ec7374491d}</Project>
+ <Name>MassTransit.Transports.RabbitMq</Name>
</ProjectReference>
<ProjectReference Include="..\Starbucks.Messages\Starbucks.Messages.csproj">
<Project>{D9486A62-4F12-4018-802B-517DD11DE66A}</Project>
@@ -142,11 +142,11 @@
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
- <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
- Other similar extension points exist, see Microsoft.Common.targets.
- <Target Name="BeforeBuild">
- </Target>
- <Target Name="AfterBuild">
- </Target>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
-->
-</Project>
+</Project>
View
8 src/Samples/Starbucks/Starbucks.Cashier/CashierRegistry.cs
@@ -1,4 +1,4 @@
-// Copyright 2007-2011 Chris Patterson, Dru Sellers, Travis Smith, et. al.
+// Copyright 2007-2013 Chris Patterson, Dru Sellers, Travis Smith, et. al.
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use
// this file except in compliance with the License. You may obtain a copy of the
@@ -33,12 +33,10 @@ public override void Load()
{
return ServiceBusFactory.New(sbc =>
{
- sbc.UseMsmq();
- sbc.UseMulticastSubscriptionClient();
- sbc.ReceiveFrom("msmq://localhost/starbucks_cashier");
+ sbc.UseRabbitMq();
+ sbc.ReceiveFrom("rabbitmq://localhost/starbucks_cashier");
sbc.SetConcurrentConsumerLimit(1); //a cashier cannot multi-task
- sbc.UseControlBus();
sbc.EnableRemoteIntrospection();
});
})
View
7 src/Samples/Starbucks/Starbucks.Cashier/CashierSaga.cs
@@ -1,5 +1,5 @@
-// Copyright 2007-2011 The Apache Software Foundation.
-//
+// Copyright 2007-2013 Chris Patterson, Dru Sellers, Travis Smith, et. al.
+//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use
// this file except in compliance with the License. You may obtain a copy of the
// License at
@@ -69,7 +69,7 @@ void ProcessNewOrder(NewOrderMessage message)
_size = message.Size;
_amount = GetPriceForSize(_size);
- Console.WriteLine(string.Format("I've received an order for a {0} {1} for {2}.", _size, _item, _name));
+ Console.WriteLine("I've received an order for a {0} {1} for {2}.", _size, _item, _name);
var paymentDueMessage = new PaymentDueMessage
{
@@ -110,7 +110,6 @@ void ProcessPayment(SubmitPaymentMessage message)
Bus.Publish(completeMessage);
}
-
static decimal GetPriceForSize(string size)
{
switch (size.ToLower())
View
32 src/Samples/Starbucks/Starbucks.Cashier/Starbucks.Cashier.csproj
@@ -74,12 +74,12 @@
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
- <Reference Include="Topshelf" Condition="'$(TargetFrameworkVersion)' == 'v3.5'">
- <HintPath>..\..\..\..\lib\Topshelf\net-3.5\Topshelf.dll</HintPath>
- </Reference>
- <Reference Include="Topshelf" Condition="'$(TargetFrameworkVersion)' == 'v4.0'">
- <HintPath>..\..\..\..\lib\Topshelf\net-4.0\Topshelf.dll</HintPath>
- </Reference>
+ <Reference Include="Topshelf" Condition="'$(TargetFrameworkVersion)' == 'v3.5'">
+ <HintPath>..\..\..\..\lib\Topshelf\net-3.5\Topshelf.dll</HintPath>
+ </Reference>
+ <Reference Include="Topshelf" Condition="'$(TargetFrameworkVersion)' == 'v4.0'">
+ <HintPath>..\..\..\..\lib\Topshelf\net-4.0\Topshelf.dll</HintPath>
+ </Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="CashierRegistry.cs" />
@@ -106,9 +106,9 @@
<Project>{6EFD69FC-CBCC-4F85-AEE0-EFBA73F4D273}</Project>
<Name>MassTransit</Name>
</ProjectReference>
- <ProjectReference Include="..\..\..\Transports\MassTransit.Transports.Msmq\MassTransit.Transports.Msmq.csproj">
- <Project>{6F90867C-E092-4EDC-B3DE-600D39DF0335}</Project>
- <Name>MassTransit.Transports.Msmq</Name>
+ <ProjectReference Include="..\..\..\Transports\MassTransit.Transports.RabbitMq\MassTransit.Transports.RabbitMq.csproj">
+ <Project>{6c7149d7-4d97-45df-a05d-61ec7374491d}</Project>
+ <Name>MassTransit.Transports.RabbitMq</Name>
</ProjectReference>
<ProjectReference Include="..\Starbucks.Messages\Starbucks.Messages.csproj">
<Project>{D9486A62-4F12-4018-802B-517DD11DE66A}</Project>
@@ -133,11 +133,11 @@
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
- <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
- Other similar extension points exist, see Microsoft.Common.targets.
- <Target Name="BeforeBuild">
- </Target>
- <Target Name="AfterBuild">
- </Target>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
-->
-</Project>
+</Project>
View
46 src/Samples/Starbucks/Starbucks.Customer/OrderDrinkForm.cs
@@ -1,4 +1,16 @@
-namespace Starbucks.Customer
+// Copyright 2007-2013 Chris Patterson, Dru Sellers, Travis Smith, et. al.
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+// this file except in compliance with the License. You may obtain a copy of the
+// License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations under the License.
+namespace Starbucks.Customer
{
using System;
using System.ComponentModel;
@@ -12,28 +24,17 @@ public partial class OrderDrinkForm :
Consumes<PaymentDueMessage>.For<Guid>,
Consumes<DrinkReadyMessage>.For<Guid>
{
- private IServiceBus _bus;
- private Guid _transactionId;
private UnsubscribeAction _unsubscribeToken;
public OrderDrinkForm(IServiceBus bus)
{
InitializeComponent();
- _bus = bus;
+ Bus = bus;
}
- private IServiceBus Bus
- {
- get
- {
- //todo bob
-// if (_bus == null)
-// _bus = ServiceLocator.Current.GetInstance<IServiceBus>();
-
- return _bus;
- }
- }
+ private IServiceBus Bus { get; set; }
+ public Guid CorrelationId { get; private set; }
public void Consume(DrinkReadyMessage message)
{
@@ -43,11 +44,6 @@ public void Consume(DrinkReadyMessage message)
_unsubscribeToken = null;
}
- public Guid CorrelationId
- {
- get { return _transactionId; }
- }
-
public void Consume(PaymentDueMessage message)
{
@@ -78,7 +74,7 @@ private void button1_Click(object sender, EventArgs e)
string size = comboBox2.Text;
string name = txtName.Text;
- _transactionId = CombGuid.Generate();
+ CorrelationId = CombGuid.Generate();
if (_unsubscribeToken != null)
_unsubscribeToken();
@@ -86,7 +82,7 @@ private void button1_Click(object sender, EventArgs e)
var message = new NewOrderMessage
{
- CorrelationId = _transactionId,
+ CorrelationId = CorrelationId,
Item = drink,
Name = name,
Size = size,
@@ -102,10 +98,10 @@ protected override void OnClosing(CancelEventArgs e)
_unsubscribeToken();
_unsubscribeToken = null;
}
- if (_bus != null)
+ if (Bus != null)
{
- _bus.Dispose();
- _bus = null;
+ Bus.Dispose();
+ Bus = null;
}
base.OnClosing(e);
View
10 src/Samples/Starbucks/Starbucks.Customer/Program.cs
@@ -1,4 +1,4 @@
-// Copyright 2007-2011 Chris Patterson, Dru Sellers, Travis Smith, et. al.
+// Copyright 2007-2013 Chris Patterson, Dru Sellers, Travis Smith, et. al.
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use
// this file except in compliance with the License. You may obtain a copy of the
@@ -44,11 +44,9 @@ static IContainer BootstrapContainer()
{
cfg.For<IServiceBus>().Use(context => ServiceBusFactory.New(sbc =>
{
- sbc.ReceiveFrom("msmq://localhost/starbucks_customer");
- sbc.UseMsmq();
- sbc.UseMulticastSubscriptionClient();
-
- sbc.UseControlBus();
+ // The queue name is randomized so that we can launch multiple customer instances at once
+ sbc.ReceiveFrom("rabbitmq://localhost/starbucks_customer_" + Guid.NewGuid().ToString());
+ sbc.UseRabbitMq();
sbc.Subscribe(subs => { subs.LoadFrom(container); });
}));
View
22 src/Samples/Starbucks/Starbucks.Customer/Starbucks.Customer.csproj
@@ -70,7 +70,7 @@
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
- </Reference>
+ </Reference>
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
@@ -126,9 +126,9 @@
<Project>{6EFD69FC-CBCC-4F85-AEE0-EFBA73F4D273}</Project>
<Name>MassTransit</Name>
</ProjectReference>
- <ProjectReference Include="..\..\..\Transports\MassTransit.Transports.Msmq\MassTransit.Transports.Msmq.csproj">
- <Project>{6F90867C-E092-4EDC-B3DE-600D39DF0335}</Project>
- <Name>MassTransit.Transports.Msmq</Name>
+ <ProjectReference Include="..\..\..\Transports\MassTransit.Transports.RabbitMq\MassTransit.Transports.RabbitMq.csproj">
+ <Project>{6c7149d7-4d97-45df-a05d-61ec7374491d}</Project>
+ <Name>MassTransit.Transports.RabbitMq</Name>
</ProjectReference>
<ProjectReference Include="..\Starbucks.Messages\Starbucks.Messages.csproj">
<Project>{D9486A62-4F12-4018-802B-517DD11DE66A}</Project>
@@ -159,11 +159,11 @@
</Content>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
- <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
- Other similar extension points exist, see Microsoft.Common.targets.
- <Target Name="BeforeBuild">
- </Target>
- <Target Name="AfterBuild">
- </Target>
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
-->
-</Project>
+</Project>
View
21 src/Samples/Starbucks/Starbucks.sln
@@ -1,6 +1,6 @@

-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "References", "References", "{1FEFCD44-83A0-4240-B321-A73A53C6DC9E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Starbucks.Messages", "Starbucks.Messages\Starbucks.Messages.csproj", "{D9486A62-4F12-4018-802B-517DD11DE66A}"
@@ -13,8 +13,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Starbucks.Customer", "Starb
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MassTransit", "..\..\MassTransit\MassTransit.csproj", "{6EFD69FC-CBCC-4F85-AEE0-EFBA73F4D273}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MassTransit.Transports.Msmq", "..\..\Transports\MassTransit.Transports.Msmq\MassTransit.Transports.Msmq.csproj", "{6F90867C-E092-4EDC-B3DE-600D39DF0335}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MassTransit.StructureMapIntegration", "..\..\Containers\MassTransit.StructureMapIntegration\MassTransit.StructureMapIntegration.csproj", "{F5E67502-2B30-484C-88C3-97710291F5AA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MassTransit.NinjectIntegration", "..\..\Containers\MassTransit.NinjectIntegration\MassTransit.NinjectIntegration.csproj", "{25A2A3C3-27D0-4C55-A9E9-0B82D6B6913F}"
@@ -23,6 +21,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MassTransit.WindsorIntegrat
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MassTransit.Log4NetIntegration", "..\..\Loggers\MassTransit.Log4NetIntegration\MassTransit.Log4NetIntegration.csproj", "{8D2BE372-A756-4676-B2EA-ED7846809BFE}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MassTransit.Transports.RabbitMq", "..\..\Transports\MassTransit.Transports.RabbitMq\MassTransit.Transports.RabbitMq.csproj", "{6C7149D7-4D97-45DF-A05D-61EC7374491D}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Build|Any CPU = Build|Any CPU
@@ -59,11 +59,6 @@ Global
{6EFD69FC-CBCC-4F85-AEE0-EFBA73F4D273}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6EFD69FC-CBCC-4F85-AEE0-EFBA73F4D273}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6EFD69FC-CBCC-4F85-AEE0-EFBA73F4D273}.Release|Any CPU.Build.0 = Release|Any CPU
- {6F90867C-E092-4EDC-B3DE-600D39DF0335}.Build|Any CPU.ActiveCfg = Release|Any CPU
- {6F90867C-E092-4EDC-B3DE-600D39DF0335}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {6F90867C-E092-4EDC-B3DE-600D39DF0335}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6F90867C-E092-4EDC-B3DE-600D39DF0335}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {6F90867C-E092-4EDC-B3DE-600D39DF0335}.Release|Any CPU.Build.0 = Release|Any CPU
{F5E67502-2B30-484C-88C3-97710291F5AA}.Build|Any CPU.ActiveCfg = Release|Any CPU
{F5E67502-2B30-484C-88C3-97710291F5AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F5E67502-2B30-484C-88C3-97710291F5AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
@@ -87,16 +82,22 @@ Global
{8D2BE372-A756-4676-B2EA-ED7846809BFE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8D2BE372-A756-4676-B2EA-ED7846809BFE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8D2BE372-A756-4676-B2EA-ED7846809BFE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6C7149D7-4D97-45DF-A05D-61EC7374491D}.Build|Any CPU.ActiveCfg = Release|Any CPU
+ {6C7149D7-4D97-45DF-A05D-61EC7374491D}.Build|Any CPU.Build.0 = Release|Any CPU
+ {6C7149D7-4D97-45DF-A05D-61EC7374491D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6C7149D7-4D97-45DF-A05D-61EC7374491D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6C7149D7-4D97-45DF-A05D-61EC7374491D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6C7149D7-4D97-45DF-A05D-61EC7374491D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{6EFD69FC-CBCC-4F85-AEE0-EFBA73F4D273} = {1FEFCD44-83A0-4240-B321-A73A53C6DC9E}
- {6F90867C-E092-4EDC-B3DE-600D39DF0335} = {1FEFCD44-83A0-4240-B321-A73A53C6DC9E}
{F5E67502-2B30-484C-88C3-97710291F5AA} = {1FEFCD44-83A0-4240-B321-A73A53C6DC9E}
{25A2A3C3-27D0-4C55-A9E9-0B82D6B6913F} = {1FEFCD44-83A0-4240-B321-A73A53C6DC9E}
{98D5A59C-96FA-4A1B-A653-EA5A35C45FC9} = {1FEFCD44-83A0-4240-B321-A73A53C6DC9E}
{8D2BE372-A756-4676-B2EA-ED7846809BFE} = {1FEFCD44-83A0-4240-B321-A73A53C6DC9E}
+ {6C7149D7-4D97-45DF-A05D-61EC7374491D} = {1FEFCD44-83A0-4240-B321-A73A53C6DC9E}
EndGlobalSection
EndGlobal
Please sign in to comment.
Something went wrong with that request. Please try again.