Update mappings.

Update mappings.

--- Infopulse.EDemocracy.Web/App_Start/MapperConfig.cs
+++ Infopulse.EDemocracy.Web/App_Start/MapperConfig.cs
@@ -59,8 +59,10 @@
 				.ForMember(dataPetition => dataPetition.KeyWords, keyWords => keyWords.MapFrom(webPetition => string.Join(", ", webPetition.KeyWords)))
 				.ForMember(dataPetition => dataPetition.CategoryID, categoryID => categoryID.MapFrom(webPetition => webPetition.Category.ID))
 				.ForMember(dataPetition => dataPetition.LevelID, levelID => levelID.MapFrom(webPetition => webPetition.Level.ID))
-				.ForMember(dataPetition => dataPetition.OrganizationID, organizationID => organizationID.MapFrom(webPetition => webPetition.Organization == null ? (int?)null : webPetition.Organization.ID));
-			Mapper.CreateMap<EmailVote, DataModels.PetitionEmailVote>()
+				.ForMember(dataPetition => dataPetition.OrganizationID, organizationID => organizationID.MapFrom(webPetition => webPetition.Organization == null ? (int?)null : webPetition.Organization.ID))
+				.ForMember(dataPetition => dataPetition.ApprovedBy, field => field.Ignore())
+				.ForMember(dataPetition => dataPetition.ApprovedDate, field => field.Ignore());
+            Mapper.CreateMap<EmailVote, DataModels.PetitionEmailVote>()
 				.ForMember(dalVote => dalVote.ID, field => field.UseValue(-1))
 				.ForMember(dalVote => dalVote.VoterID, field => field.MapFrom(webVote => webVote.Signer.UserID))
 				.ForMember(dalVote => dalVote.Voter, field => field.Ignore());


updating TileLayer for rename to MaxAttempts.

--- Mapsui/Layers/TileLayer.cs
+++ Mapsui/Layers/TileLayer.cs
@@ -55,7 +55,7 @@
             Task.Factory.StartNew(() => TileSource = tileSourceInitializer());
         }

-        public TileLayer(ITileSource source = null, int minTiles = 200, int maxTiles = 300, int maxRetries = TileFetcher.DefaultMaxRetries,
+        public TileLayer(ITileSource source = null, int minTiles = 200, int maxTiles = 300, int maxRetries = TileFetcher.DefaultMaxAttempts,
             int maxThreads = TileFetcher.DefaultMaxThreads, IFetchStrategy fetchStrategy = null,
             IRenderGetStrategy renderFetchStrategy = null, int minExtraTiles = -1, int maxExtraTiles = -1)
         {


[Modify] Use it instead

[Modify] Use it instead

--- websocket-sharp/Net/HttpConnection.cs
+++ websocket-sharp/Net/HttpConnection.cs
@@ -60,6 +60,7 @@
   {
     #region Private Fields

+    private int                   _attempts;
     private byte[]                _buffer;
     private static readonly int   _bufferLength;
     private HttpListenerContext   _context;
@@ -268,7 +269,7 @@
     private static void onRead (IAsyncResult asyncResult)
     {
       var conn = (HttpConnection) asyncResult.AsyncState;
-      var current = conn._reuses;
+      var current = conn._attempts;

       if (conn._socket == null)
         return;
@@ -351,7 +352,7 @@
     private static void onTimeout (object state)
     {
       var conn = (HttpConnection) state;
-      var current = conn._reuses;
+      var current = conn._attempts;

       if (conn._socket == null)
         return;
@@ -464,7 +465,9 @@

     internal void BeginReadRequest ()
     {
-      _timeoutCanceled.Add (_reuses, false);
+      _attempts++;
+
+      _timeoutCanceled.Add (_attempts, false);
       _timer.Change (_timeout, Timeout.Infinite);

       try {


Fixed padding logic

Fixed padding logic

--- Cryptopals/Cryptopals/BlockCryptography.cs
+++ Cryptopals/Cryptopals/BlockCryptography.cs
@@ -68,15 +68,38 @@
         if (i == 0)
           plainTextBytes = crypto.XORBuffer(decryptedBytes, IV);
         else
-          // Store this block as the last known cipher
           plainTextBytes = crypto.XORBuffer(decryptedBytes, lastKnownCipher);

+        // Store this block as the last known cipher
         lastKnownCipher = tempBuffer;
         Buffer.BlockCopy(plainTextBytes, 0, plainText, i * this.BLOCKSIZE, this.BLOCKSIZE);
       }

       plainText = this.RemovePKCS7Padding(plainText);
       return Encoding.ASCII.GetString(plainText);
+    }
+
+    public byte[] AppendPKCS7Padding(byte[] plainText, int blockSize)
+    {
+      if (blockSize < 0x01 || blockSize > 0xFF)
+        throw new Exceptions.InvalidPaddingSizeException("Padding size must be between 1 and 255");
+
+      // If the text is bigger than the blocksize, pad the end of the string
+      byte[] textToPad = plainText;
+      int remainingText = 0;
+      if (plainText.Length > blockSize)
+      {
+        remainingText = plainText.Length % blockSize;
+        textToPad = plainText.Skip(plainText.Length - remainingText).ToArray();
+      }
+
+      byte paddingVal = (byte)(blockSize - textToPad.Length);
+      byte[] paddedText = new byte[blockSize - remainingText];
+      for (int i = 0; i < paddedText.Length; i++)
+        paddedText[i] = paddingVal;
+
+      Buffer.BlockCopy(plainText, 0, paddedText, 0, plainText.Length);
+      return paddedText;
     }

     /// <summary>
@@ -86,25 +109,8 @@
     /// <param name="blockSize">The block size to pad to</param>
     public string AppendPKCS7Padding(string plainText, int blockSize)
     {
-      if (blockSize < 0x01 || blockSize > 0xFF)
-        throw new Exceptions.InvalidPaddingSizeException("Padding size must be between 1 and 255");
-
-      // If the text is bigger than the blocksize, pad the end of the string
-      string stringToPad = plainText;
-      if (plainText.Length > blockSize)
-      {
-        int remainingText = plainText.Length % blockSize;
-        stringToPad = plainText.Substring(plainText.Length - remainingText, remainingText);
-      }
-
-      StringBuilder PaddedString = new StringBuilder();
-      PaddedString.Append(stringToPad);
-      string blockSizeString = String.Format("{0}", Convert.ToChar(blockSize - stringToPad.Length));
-
-      for (int i = 0; i < (blockSize - stringToPad.Length); i++)
-        PaddedString.Append(blockSizeString);
-
-      return PaddedString.ToString();
+      byte[] paddedBytes = this.AppendPKCS7Padding(Encoding.ASCII.GetBytes(plainText), blockSize);
+      return Encoding.ASCII.GetString(paddedBytes);
     }

     /// <summary>
@@ -177,7 +183,9 @@
       AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
       aes.Mode = CipherMode.ECB;
       aes.Key = key;
+      aes.Padding = PaddingMode.None;
       ICryptoTransform transform = aes.CreateEncryptor();
+      plainText = this.AppendPKCS7Padding(plainText, this.BLOCKSIZE);

       // Decrypt and write to memory
       using (MemoryStream ms = new MemoryStream())
@@ -185,7 +193,6 @@
         using (CryptoStream cs = new CryptoStream(ms, transform, CryptoStreamMode.Write))
         {
           cs.Write(plainText, 0, plainText.Length);
-          //cs.FlushFinalBlock();
         }

         return ms.ToArray();
@@ -212,7 +219,6 @@
         using (CryptoStream cs = new CryptoStream(ms, transform, CryptoStreamMode.Write))
         {
           cs.Write(cipherText, 0, cipherText.Length);
-          //cs.FlushFinalBlock();
         }

         return ms.ToArray();


Fix bug that group edit control was hidden

--- Joinrpg/Views/GameGroups/_GroupEditControls.cshtml
+++ Joinrpg/Views/GameGroups/_GroupEditControls.cshtml
@@ -49,7 +49,7 @@
                     </a>
                 </li>
             }
-            @if (!Model.FirstInGroup && !Model.LastInGroup && !Model.IsRoot && !Model.IsSpecial)
+            @if ((!Model.FirstInGroup || !Model.LastInGroup) && !Model.IsRoot && !Model.IsSpecial)
             {
                 var moveParameters = new
                 {


Removed generic T constraint IComparable<T>

--- DSA/DSA/DataStructures/Interfaces/ITree.cs
+++ DSA/DSA/DataStructures/Interfaces/ITree.cs
@@ -7,7 +7,6 @@
     /// </summary>
     /// <typeparam name="T">T implements <see cref="IComparable{T}">.</typeparam>
     public interface ITree<T>
-        where T : IComparable<T>
     {
         /// <summary>
         /// Gets the number of elements in the tree.


Fix failing unit tests

Fix failing unit tests

--- KenticoCloud.Delivery.Tests/DeliveryClientTests.cs
+++ KenticoCloud.Delivery.Tests/DeliveryClientTests.cs
@@ -95,7 +95,7 @@
             var articleType = await client.GetTypeAsync("article");
             var coffeeType = await client.GetTypeAsync("coffee");
             var taxonomyElement = articleType.Elements["personas"];
-            var multipleChoiceElement = coffeeType.Elements["processing"];
+            var processingTaxonomyElement = coffeeType.Elements["processing"];

             Assert.Equal("article", articleType.System.Codename);
             Assert.Equal("text", articleType.Elements["title"].Type);
@@ -105,10 +105,10 @@
             Assert.Equal("modular_content", articleType.Elements["related_articles"].Type);
             Assert.Equal("taxonomy", articleType.Elements["personas"].Type);
             Assert.Equal("number", coffeeType.Elements["price"].Type);
-            Assert.Equal("multiple_choice", coffeeType.Elements["processing"].Type);
+            Assert.Equal("taxonomy", coffeeType.Elements["processing"].Type);

             Assert.Equal("personas", taxonomyElement.TaxonomyGroup);
-            Assert.NotEmpty(multipleChoiceElement.Options);
+            Assert.Equal("processing", processingTaxonomyElement.TaxonomyGroup);
         }

         [Fact]
@@ -130,12 +130,12 @@
         public async void GetContentElementAsync()
         {
             var element = await client.GetContentElementAsync(Article.Codename, Article.TitleCodename);
-            var taxonomyElement = await client.GetContentElementAsync(Article.Codename, Article.PersonasCodename);
-            var multipleChoiceElement = await client.GetContentElementAsync(Coffee.Codename, Coffee.ProcessingCodename);
+            var personasTaxonomyElement = await client.GetContentElementAsync(Article.Codename, Article.PersonasCodename);
+            var processingTaxonomyElement = await client.GetContentElementAsync(Coffee.Codename, Coffee.ProcessingCodename);

             Assert.Equal(Article.TitleCodename, element.Codename);
-            Assert.Equal(Article.PersonasCodename, taxonomyElement.TaxonomyGroup);
-            Assert.NotEmpty(multipleChoiceElement.Options);
+            Assert.Equal(Article.PersonasCodename, personasTaxonomyElement.TaxonomyGroup);
+            Assert.Equal(Coffee.ProcessingCodename, processingTaxonomyElement.TaxonomyGroup);
         }

         [Fact]


updated documentation link

updated documentation link

--- Languages/IronPython/IronPython.Modules/_codecs.cs
+++ Languages/IronPython/IronPython.Modules/_codecs.cs
@@ -801,9 +801,9 @@

         public override bool Fallback(byte[] bytesUnknown, int index) {
             // In case of dot net and utf-8 value of index does not conform to documentation provided by
-            // Microsoft. Tested on Windows 7 64, .NET 4.0.30319.18408, all recommended patches as of 06.02.2014
-            // http://msdn.microsoft.com/en-us/library/System.Text.EncoderFallbackBuffer%28v=vs.110%29.aspx
+            // Microsoft http://msdn.microsoft.com/en-us/library/bdftay9c%28v=vs.100%29.aspx
             // The value of index is mysteriously decreased by the size of bytesUnknown
+            // Tested on Windows 7 64, .NET 4.0.30319.18408, all recommended patches as of 06.02.2014
             if (ignoreNext) {
                 // dot net sometimes calls second time after this method returns false
                 // if this is the case, do nothing


Make AutoSizeAxes virtual to allow implementations to track changes

Closes #1203.

--- osu.Framework/Graphics/Containers/CompositeDrawable.cs
+++ osu.Framework/Graphics/Containers/CompositeDrawable.cs
@@ -1127,7 +1127,7 @@
         /// It is not allowed to manually set <see cref="Size"/> (or <see cref="Width"/> / <see cref="Height"/>)
         /// on any <see cref="Axes"/> which are automatically sized.
         /// </summary>
-        public Axes AutoSizeAxes
+        public virtual Axes AutoSizeAxes
         {
             get { return autoSizeAxes; }
             protected set


Move some variable definitions into the inner loop

--- osu.Framework/Graphics/Containers/TextFlowContainer.cs
+++ osu.Framework/Graphics/Containers/TextFlowContainer.cs
@@ -248,18 +248,20 @@
                     curLine.Add(c);
                 }
             }
+
             if (curLine.Count > 0)
                 childrenByLine.Add(curLine);
+
             var firstLine = true;
-            var lineSpacingValue = 0f;
-            var currentLineHeight = 0f;
             var lastLineHeight = 0f;
             foreach (var line in childrenByLine)
             {
                 var firstChild = true;
                 var lineBaseHeightValues = line.OfType<IHasLineBaseHeight>().Select(l => l.LineBaseHeight);
                 var lineBaseHeight = lineBaseHeightValues.Any() ? lineBaseHeightValues.Max() : 0f;
-                currentLineHeight = 0f;
+                var currentLineHeight = 0f;
+                var lineSpacingValue = lastLineHeight * LineSpacing;
+
                 foreach (var c in line)
                 {
                     var nlc = c as NewLineContainer;
@@ -283,9 +285,10 @@

                     firstChild = false;
                 }
+
                 if (currentLineHeight != 0f)
                     lastLineHeight = currentLineHeight;
-                lineSpacingValue = lastLineHeight * LineSpacing;
+
                 firstLine = false;
             }
         }


Add failing test for recursive verification

Like `Verify` and `VerifyAll`, `VerifyNoOtherCalls` should really
perform recursive verification; that is, it should include invocations
on any automatically mocked sub-objects created through multi-dot
expressions.

The test added here shows that this doesn't work yet.

--- Moq.Tests/VerifyFixture.cs
+++ Moq.Tests/VerifyFixture.cs
@@ -1257,6 +1257,16 @@

 			mock.VerifySet(m => m.Bar.Value = 42);
 			mock.VerifyNoOtherCalls();
+		}
+
+		[Fact]
+		public void VerifyNoOtherCalls_performs_recursive_verification()
+		{
+			var mock = new Mock<IFoo>() { DefaultValue = DefaultValue.Mock };
+			mock.Object.Bar.Poke();
+
+			mock.VerifyGet(m => m.Bar);
+			Assert.Throws<MockException>(() => mock.VerifyNoOtherCalls()); // should fail due to the unverified call to `Poke`
 		}

 		public interface IBar


Use MathF utility class instead

Use MathF utility class instead

Co-authored-by: Berkan Diler <7c1ee193e6a63a23b36d4456f58dd47f21b22a19@gmx.de>

--- osu.Game.Rulesets.Osu/Skinning/Legacy/LegacySpinner.cs
+++ osu.Game.Rulesets.Osu/Skinning/Legacy/LegacySpinner.cs
@@ -21,7 +21,7 @@
         /// for positioning some legacy spinner components perfectly as in stable.
         /// (e.g. 'spin' sprite, 'clear' sprite, metre in old-style spinners)
         /// </summary>
-        public static readonly float SPINNER_TOP_OFFSET = (float)Math.Ceiling(45f * SPRITE_SCALE);
+        public static readonly float SPINNER_TOP_OFFSET = MathF.Ceiling(45f * SPRITE_SCALE);

         protected const float SPRITE_SCALE = 0.625f;


Remember to zero out the subitem tags

Remember to zero out the subitem tags

--- MultiMiner.Win/MainForm.cs
+++ MultiMiner.Win/MainForm.cs
@@ -1027,12 +1027,22 @@
         private void ClearDeviceInfoForListViewItem(ListViewItem item)
         {
             item.SubItems["Temp"].Text = String.Empty;
+
             item.SubItems["Hashrate"].Text = String.Empty;
             item.SubItems["Hashrate"].Tag = 0.00;
+
             item.SubItems["Accepted"].Text = String.Empty;
+            item.SubItems["Accepted"].Tag = 0;
+
             item.SubItems["Rejected"].Text = String.Empty;
+            item.SubItems["Rejected"].Tag = 0;
+
             item.SubItems["Errors"].Text = String.Empty;
+            item.SubItems["Errors"].Tag = 0;
+
             item.SubItems["Utility"].Text = String.Empty;
+            item.SubItems["Utility"].Tag = 0.00;
+
             item.SubItems["Intensity"].Text = String.Empty;
             item.SubItems["Pool"].Text = String.Empty;
         }


Add full xmldoc to `HoldToConfirmContainer`

--- osu.Game/Graphics/Containers/HoldToConfirmContainer.cs
+++ osu.Game/Graphics/Containers/HoldToConfirmContainer.cs
@@ -10,6 +10,16 @@

 namespace osu.Game.Graphics.Containers
 {
+    /// <summary>
+    /// A container which adds a common "hold-to-perform" pattern to a container.
+    /// </summary>
+    /// <remarks>
+    /// This container does not handle triggering the hold/abort operations.
+    /// To use this class, please call <see cref="BeginConfirm"/> and <see cref="AbortConfirm"/> when necessary.
+    ///
+    /// The <see cref="Progress"/> is exposed as a transforming bindable which smoothly tracks the progress of a hold operation.
+    /// It can be used for animating and displaying progress directly.
+    /// </remarks>
     public abstract class HoldToConfirmContainer : Container
     {
         public const double DANGEROUS_HOLD_ACTIVATION_DELAY = 500;
@@ -70,6 +80,12 @@
                 config.BindWith(OsuSetting.UIHoldActivationDelay, holdActivationDelay);
         }

+        /// <summary>
+        /// Begin a new confirmation. Should be called when the container is interacted with (ie. the user presses a key).
+        /// </summary>
+        /// <remarks>
+        /// Calling this method when already in the process of confirming has no effect.
+        /// </remarks>
         protected void BeginConfirm()
         {
             if (confirming || (!AllowMultipleFires && Fired)) return;
@@ -79,12 +95,9 @@
             this.TransformBindableTo(progress, 1, holdActivationDelay.Value * (1 - progress.Value), Easing.Out).OnComplete(_ => Confirm());
         }

-        protected virtual void Confirm()
-        {
-            Action?.Invoke();
-            Fired = true;
-        }
-
+        /// <summary>
+        /// Abort any ongoing confirmation. Should be called when the container's interaction is no longer valid (ie. the user releases a key).
+        /// </summary>
         protected void AbortConfirm()
         {
             if (!AllowMultipleFires && Fired) return;
@@ -97,5 +110,15 @@
                 .Delay(200)
                 .TransformBindableTo(progress, 0, fadeout_delay, Easing.InSine);
         }
+
+        /// <summary>
+        /// A method which is invoked when the confirmation sequence completes successfully.
+        /// By default, will fire the associated <see cref="Action"/>.
+        /// </summary>
+        protected virtual void Confirm()
+        {
+            Action?.Invoke();
+            Fired = true;
+        }
     }
 }


Don't add a 'with Video' subtitle.

Don't add a 'with Video' subtitle.

--- osu.Game/Overlays/BeatmapSet/Buttons/DownloadButton.cs
+++ osu.Game/Overlays/BeatmapSet/Buttons/DownloadButton.cs
@@ -16,11 +16,6 @@
         public DownloadButton(BeatmapSetInfo set, bool noVideo = false)
         {
             Width = 120;
-
-            string subtitle = string.Empty;
-
-            if (set.OnlineInfo.HasVideo)
-                subtitle = noVideo ? "without Video" : "with Video";

             BeatmapSetDownloader downloader;
             Add(new Container
@@ -47,7 +42,7 @@
                             },
                             new OsuSpriteText
                             {
-                                Text = subtitle,
+                                Text = set.OnlineInfo.HasVideo && noVideo ? "without Video" : string.Empty,
                                 TextSize = 11,
                                 Font = @"Exo2.0-Bold",
                             },


Add search bar for the `CurrentlyPlayingDisplay`

--- osu.Game/Overlays/Dashboard/CurrentlyPlayingDisplay.cs
+++ osu.Game/Overlays/Dashboard/CurrentlyPlayingDisplay.cs
@@ -1,6 +1,7 @@
 // Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
 // See the LICENCE file in the repository root for full licence text.

+using System.Collections.Generic;
 using System.Collections.Specialized;
 using System.Diagnostics;
 using System.Linq;
@@ -11,6 +12,8 @@
 using osu.Framework.Graphics.Containers;
 using osu.Framework.Screens;
 using osu.Game.Database;
+using osu.Game.Graphics;
+using osu.Game.Graphics.UserInterface;
 using osu.Game.Online.API;
 using osu.Game.Online.API.Requests.Responses;
 using osu.Game.Online.Spectator;
@@ -24,9 +27,16 @@
 {
     internal class CurrentlyPlayingDisplay : CompositeDrawable
     {
+        private const float search_bar_height = 40;
+        private const float search_bar_width = 250;
+
         private readonly IBindableList<int> playingUsers = new BindableList<int>();

         private FillFlowContainer<PlayingUserPanel> userFlow;
+
+        private List<int> currentUsers = new List<int>();
+        private FocusedTextBox searchBar;
+        private Container<FocusedTextBox> searchBarContainer;

         [Resolved]
         private SpectatorClient spectatorClient { get; set; }
@@ -37,13 +47,46 @@
             RelativeSizeAxes = Axes.X;
             AutoSizeAxes = Axes.Y;

-            InternalChild = userFlow = new FillFlowContainer<PlayingUserPanel>
+            searchBarContainer = new Container<FocusedTextBox>
+            {
+                Anchor = Anchor.TopCentre,
+                Origin = Anchor.TopCentre,
+                Padding = new MarginPadding(10),
+                Child = searchBar = new FocusedTextBox
+                {
+                    Anchor = Anchor.TopCentre,
+                    Origin = Anchor.TopCentre,
+                    Height = search_bar_height,
+                    Width = search_bar_width,
+
+                    Colour = OsuColour.Gray(0.8f),
+
+                    PlaceholderText = "Search for User...",
+                    HoldFocus = true,
+                    ReleaseFocusOnCommit = true,
+                },
+            };
+
+            userFlow = new FillFlowContainer<PlayingUserPanel>
             {
                 RelativeSizeAxes = Axes.X,
                 AutoSizeAxes = Axes.Y,
-                Padding = new MarginPadding(10),
+                Padding = new MarginPadding {
+                    Top = 10 + 10 + search_bar_height,
+                    Bottom = 10,
+                    Right = 10,
+                    Left = 10,
+                },
                 Spacing = new Vector2(10),
             };
+
+            InternalChildren = new Drawable[]
+            {
+                searchBarContainer,
+                userFlow,
+            };
+
+            searchBar.Current.ValueChanged += onSearchBarValueChanged;
         }

         [Resolved]
@@ -57,6 +100,57 @@
             playingUsers.BindCollectionChanged(onPlayingUsersChanged, true);
         }

+        private void addCard(int userId)
+        {
+            if (currentUsers.Contains(userId))
+                return;
+
+            users.GetUserAsync(userId).ContinueWith(task =>
+            {
+                var user = task.GetResultSafely();
+
+                if (user == null)
+                    return;
+
+                if (!user.Username.ToLower().Contains(searchBar.Text.ToLower()))
+                    return;
+
+                Schedule(() =>
+                {
+                    // user may no longer be playing.
+                    if (!playingUsers.Contains(user.Id))
+                        return;
+
+                    currentUsers.Add(user.Id);
+
+                    userFlow.Add(createUserPanel(user));
+                });
+            });
+        }
+
+        private void removeCard(PlayingUserPanel card)
+        {
+            if (card == null)
+                return;
+
+            currentUsers.Remove(card.User.Id);
+            card.Expire();
+        }
+
+        private void onSearchBarValueChanged(ValueChangedEvent<string> change)
+        {
+            foreach (PlayingUserPanel card in userFlow)
+            {
+                if (!card.User.Username.ToLower().Contains(change.NewValue.ToLower()))
+                    removeCard(card);
+            }
+
+            foreach (int userId in playingUsers)
+            {
+                addCard(userId);
+            }
+        }
+
         private void onPlayingUsersChanged(object sender, NotifyCollectionChangedEventArgs e) => Schedule(() =>
         {
             switch (e.Action)
@@ -65,24 +159,7 @@
                     Debug.Assert(e.NewItems != null);

                     foreach (int userId in e.NewItems)
-                    {
-                        users.GetUserAsync(userId).ContinueWith(task =>
-                        {
-                            var user = task.GetResultSafely();
-
-                            if (user == null)
-                                return;
-
-                            Schedule(() =>
-                            {
-                                // user may no longer be playing.
-                                if (!playingUsers.Contains(user.Id))
-                                    return;
-
-                                userFlow.Add(createUserPanel(user));
-                            });
-                        });
-                    }
+                        addCard(userId);

                     break;

@@ -90,7 +167,7 @@
                     Debug.Assert(e.OldItems != null);

                     foreach (int userId in e.OldItems)
-                        userFlow.FirstOrDefault(card => card.User.Id == userId)?.Expire();
+                        removeCard(userFlow.FirstOrDefault(card => card.User.Id == userId));
                     break;
             }
         });


Add fade to prevent jarring transitions

Add fade to prevent jarring transitions

--- osu.Game/Screens/Ranking/Statistics/StatisticsPanel.cs
+++ osu.Game/Screens/Ranking/Statistics/StatisticsPanel.cs
@@ -94,6 +94,7 @@
                         RelativeSizeAxes = Axes.Both,
                         Direction = FillDirection.Vertical,
                         Spacing = new Vector2(30, 15),
+                        Alpha = 0
                     };

                     rows.AddRange(newScore.Ruleset.CreateInstance()
@@ -111,6 +112,7 @@

                         spinner.Hide();
                         content.Add(d);
+                        d.FadeIn(250, Easing.OutQuint);
                     }, localCancellationSource.Token);
                 }), localCancellationSource.Token);
             }


Last code quality tweak for this pull request.

--- MagicalLifeGUIWindows/Rendering/Map/MapRenderer.cs
+++ MagicalLifeGUIWindows/Rendering/Map/MapRenderer.cs
@@ -93,6 +93,9 @@
                 case MagicalLifeAPI.Entity.AI.Task.ActionSelected.Chop:
                     MapDrawer.Draw(AssetManager.Textures[AssetManager.NameToIndex[TextureLoader.GUIAxeMapIcon]], x32Target, RenderLayer.GUI);
                     break;
+                default:
+                    //Do nothing.
+                    break;
             }
         }
     }


make the timeout in the sample unit test more obvious/explicit

--- MetricsTracker.SampleGrainTests/SampleUnitTests.cs
+++ MetricsTracker.SampleGrainTests/SampleUnitTests.cs
@@ -42,7 +42,8 @@
             var blood = Cluster.GrainFactory.GetGrain<IBloordGrain>(Guid.NewGuid());
             await blood.Poof(Guid.NewGuid());

-            var snapshot = await ClusterMetricsGrain.GetNextClusterMetrics(TimeSpan.FromSeconds(10));
+            var snapshot = await ClusterMetricsGrain.GetNextClusterMetrics(
+                timeout: TimeSpan.FromSeconds(10));

             var poofCount = snapshot.Metrics.ContainsKey("Poof") ? snapshot.Metrics["Poof"] : 0;


Update DumpAllTheStuff.cs

Update DumpAllTheStuff.cs

--- DataTool/ToolLogic/Dump/DumpAllTheStuff.cs
+++ DataTool/ToolLogic/Dump/DumpAllTheStuff.cs
@@ -14,20 +14,20 @@
             if (flags.OutputPath == null)
                 throw new Exception("no output path");

-            new ListAchievements().Parse(GetFlagsForCommand(flags,"achievements"));
-            new ListArcadeModes().Parse(GetFlagsForCommand(flags,"arcade-modes"));
-            new ListChatSettings().Parse(GetFlagsForCommand(flags,"chat-settings"));
-            new ListEsportTeams().Parse(GetFlagsForCommand(flags,"esport-teams"));
-            new ListGameModes().Parse(GetFlagsForCommand(flags,"gamemodes"));
-            new ListGameParams().Parse(GetFlagsForCommand(flags,"game-rulesets"));
-            new ListGeneralUnlocks().Parse(GetFlagsForCommand(flags,"general-unlocks"));
-            new ListHeroes().Parse(GetFlagsForCommand(flags,"heroes"));
-            new ListLoobox().Parse(GetFlagsForCommand(flags,"lootboxes"));
-            new ListMaps().Parse(GetFlagsForCommand(flags,"maps"));
-            new ListReportResponses().Parse(GetFlagsForCommand(flags,"report-responses"));
-            new DumpStrings().Parse(GetFlagsForCommand(flags,"strings", true));
-            new ListSubtitles().Parse(GetFlagsForCommand(flags,"subtitles"));
-            new ListHeroUnlocks().Parse(GetFlagsForCommand(flags,"unlocks"));
+            new ListAchievements().Parse(GetFlagsForCommand(flags, "achievements"));
+            new ListArcadeModes().Parse(GetFlagsForCommand(flags, "arcade-modes"));
+            new ListChatSettings().Parse(GetFlagsForCommand(flags, "chat-settings"));
+            new ListEsportTeams().Parse(GetFlagsForCommand(flags, "esport-teams"));
+            new ListGameModes().Parse(GetFlagsForCommand(flags, "gamemodes"));
+            new ListGameParams().Parse(GetFlagsForCommand(flags, "game-rulesets"));
+            new ListGeneralUnlocks().Parse(GetFlagsForCommand(flags, "general-unlocks"));
+            new ListHeroes().Parse(GetFlagsForCommand(flags, "heroes"));
+            new ListLoobox().Parse(GetFlagsForCommand(flags, "lootboxes"));
+            new ListMaps().Parse(GetFlagsForCommand(flags, "maps"));
+            new ListReportResponses().Parse(GetFlagsForCommand(flags, "report-responses"));
+            new DumpStrings().Parse(GetFlagsForCommand(flags, "strings", true));
+            new ListSubtitles().Parse(GetFlagsForCommand(flags, "subtitles"));
+            new ListHeroUnlocks().Parse(GetFlagsForCommand(flags, "unlocks"));
             new DumpFileLists().Parse(toolFlags);
         }


Routing. Added a Route to GetCustomers() method in CustomerController.cs.

--- WebApi2/WebApi2/Controllers/CustomerController.cs
+++ WebApi2/WebApi2/Controllers/CustomerController.cs
@@ -1,14 +1,9 @@
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Data.Entity;
+using System.Data.Entity;
 using System.Data.Entity.Infrastructure;
 using System.Linq;
 using System.Net;
-using System.Net.Http;
 using System.Web.Http;
 using System.Web.Http.Description;
-using WebApi2;

 namespace WebApi2.Controllers
 {
@@ -17,7 +12,12 @@
         private PurchaseOrderDBEntities db = new PurchaseOrderDBEntities();

         // GET: api/Customer
-        public IQueryable<Customers> GetCustomers()
+        //public IQueryable<Customers> GetCustomers()
+        //{
+        //    return db.Customers;
+        //}
+        [Route("api/customers")]
+        public IQueryable GetCustomers()
         {
             return db.Customers;
         }


CA-226253 XenCenter: Handle new error code when a disk space precheck error occurs

Removed code that I used when dev testing

Signed-off-by: Gabor Apati-Nagy <fea1aad7ceb67d3aeb88acb6b51e51467c21418e@citrix.com>

--- XenAdmin/Diagnostics/Checks/PatchPrecheckCheck.cs
+++ XenAdmin/Diagnostics/Checks/PatchPrecheckCheck.cs
@@ -112,8 +112,6 @@

                     log.DebugFormat("Pool_update.precheck returned livepatch_status: '{0}'", livepatchStatus);

-                    return FindProblem(string.Empty);
-
                     if (livePatchCodesByHost != null)
                         livePatchCodesByHost[Host.uuid] = livepatchStatus;


Fixed some lineendings

Fixed some lineendings

--- Duplicati/Library/Backend/HubiC/Strings.cs
+++ Duplicati/Library/Backend/HubiC/Strings.cs
@@ -13,17 +13,17 @@
 //
 //  You should have received a copy of the GNU Lesser General Public
 //  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 using Duplicati.Library.Localization.Short;
 namespace Duplicati.Library.Backend.Strings
 {
-    internal static class HubiC {
-        public static string Description { get { return LC.L(@"This backend can read and write data to HubiC. Supported format is ""hubic://container/folder""."); } }
-        public static string DisplayName { get { return LC.L(@"HubiC"); } }
-        public static string MissingAuthID(string url) { return LC.L(@"You need an AuthID, you can get it from: {0}"); }
-        public static string AuthidShort { get { return LC.L(@"The authorization code"); } }
-        public static string AuthidLong(string url) { return LC.L(@"The authorization token retrieved from {0}", url); }
-
-    }
+    internal static class HubiC {
+        public static string Description { get { return LC.L(@"This backend can read and write data to HubiC. Supported format is ""hubic://container/folder""."); } }
+        public static string DisplayName { get { return LC.L(@"HubiC"); } }
+        public static string MissingAuthID(string url) { return LC.L(@"You need an AuthID, you can get it from: {0}"); }
+        public static string AuthidShort { get { return LC.L(@"The authorization code"); } }
+        public static string AuthidLong(string url) { return LC.L(@"The authorization token retrieved from {0}", url); }
+
+    }
 }


Actually show dialog for confirming learning of skill

--- EndlessClient/Dialogs/SkillmasterDialog.cs
+++ EndlessClient/Dialogs/SkillmasterDialog.cs
@@ -292,6 +292,7 @@
                     if (e.Result == XNADialogResult.OK)
                         _skillmasterActions.LearnSkill(skill.Id);
                 };
+                dlg.ShowDialog();
             }
         }


Commentaire Don

Commentaire Don

--- Logic/Model/Entities/Don.cs
+++ Logic/Model/Entities/Don.cs
@@ -7,18 +7,24 @@
 namespace Nutritia.Logic.Model.Entities
 {

+    /// <summary>
+    /// Classe représentant un Don
+    /// </summary>
     public class Don
     {
-
+        //Global unique identifier comme no de transaction.
+        //Chance presque null d'avoir une collision.
         private Guid noTransaction;
-
-        public static uint ProchainNoTransaction { get; private set; }

         public Guid NoTransaction { get { return noTransaction; } }

+        //DateHeure où la transaction a eu lieu.
         public DateTime DateHeureTransaction { get; private set; }
+        //Nom du propriétaire de la carte de crédit qui a fait le Don.
         public string NomAuteur { get; private set; }
         public double Montant { get; private set; }
+
+        //Type de carte de crédit utilisé pour le Don.
         public ModePaiement ModePaiementTransaction { get; private set; }

         public Don()
@@ -26,6 +32,13 @@
             noTransaction = Guid.NewGuid();
         }

+        /// <summary>
+        /// Constructeur Don sans DateTime.
+        /// Lorsqu'on envoie un Don, le temps est mit sur le côté serveur.
+        /// </summary>
+        /// <param name="nom"></param>
+        /// <param name="montant"></param>
+        /// <param name="modePaiement">Type de carte de crédit</param>
         public Don(string nom, double montant, ModePaiement modePaiement)
             : this()
         {
@@ -34,12 +47,25 @@
             ModePaiementTransaction = modePaiement;
         }

+        /// <summary>
+        /// Constructeur Don avec DateTime
+        /// Lorsqu'on reçois un Don de la base de données, nous pouvons setter le DateTime avec le temps du Don
+        /// tel qu'enregistré dans la BD.
+        /// </summary>
+        /// <param name="nom"></param>
+        /// <param name="montant"></param>
+        /// <param name="modePaiement">Type de carte de crédit</param>
+        /// <param name="dateHeure"></param>
         public Don(string nom, double montant, ModePaiement modePaiement, DateTime dateHeure)
             : this(nom, montant, modePaiement)
         {
             DateHeureTransaction = dateHeure;
         }

+        /// <summary>
+        /// Données de Don formatté dans le format utilisé pour encoder le codeQC.
+        /// </summary>
+        /// <returns></returns>
         public override string ToString()
         {
             StringBuilder sb = new StringBuilder();


Some fixes at ProductController

Some fixes at ProductController

--- Web/E-shop-MVC.Web/Views/Product/AddProduct.cshtml
+++ Web/E-shop-MVC.Web/Views/Product/AddProduct.cshtml
@@ -45,13 +45,6 @@

-

-        @Html.LabelFor(model => model.SellerId, new { @class = "col-md-1 control-label" })
-

-            @Html.EditorFor(model => model.SellerId)
-

-

-

         <input type="submit" value="Add product" class="btn btn-primary btn-lg" />


Test CounterClockwise method.

Test CounterClockwise method.

--- WmcSoft.Mathematics.Tests/Geometry2D/PointTests.cs
+++ WmcSoft.Mathematics.Tests/Geometry2D/PointTests.cs
@@ -5,6 +5,7 @@
 using System.Text;
 using System.Threading.Tasks;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
+using static WmcSoft.Geometry2D.Helpers;

 namespace WmcSoft.Geometry2D
 {
@@ -26,5 +27,15 @@
             Assert.AreEqual("(2,4)", p1.ToString("C", iv));
             Assert.AreEqual("P1 (2,4)", p1.ToString(iv));
         }
+
+        [TestMethod]
+        public void CanTurnCounterClockwise() {
+            var p0 = new Point(2d, 0);
+            var p1 = new Point(1.5d, 1d);
+            var p2 = new Point(0.5d, 1d);
+
+            Assert.AreEqual(1, CounterClockwise(p0, p1, p2));
+            Assert.AreEqual(-1, CounterClockwise(p2, p1, p0));
+        }
     }
 }


GetOrCreateImdp is now public.

GetOrCreateImdp is now public.

--- WpfDataUi/DataTypes/TypeMemberDisplayProperties.cs
+++ WpfDataUi/DataTypes/TypeMemberDisplayProperties.cs
@@ -68,7 +68,7 @@
             newImdp.DisplayName = displayName;
         }

-        private InstanceMemberDisplayProperties GetOrCreateImdp(string name)
+        public InstanceMemberDisplayProperties GetOrCreateImdp(string name)
         {
             InstanceMemberDisplayProperties newImdp = DisplayProperties.FirstOrDefault(item => item.Name == name);
             if (newImdp == null)


PortableSettingsProvider.cs: source comments

--- Files/Settings/PortableSettingsProvider.cs
+++ Files/Settings/PortableSettingsProvider.cs
@@ -27,7 +27,7 @@
 namespace ArachNGIN.Files.Settings
 {
     /// <summary>
-    /// Třída na ukládání Properties.Settings do souboru v adresáři aplikace
+    /// Class for storing app settings in app directory
     /// </summary>
     public sealed class PortableSettingsProvider : SettingsProvider, IApplicationSettingsProvider
     {
@@ -93,12 +93,18 @@
             }
         }

+        /// <summary>
+        /// Gets or sets the name of the currently running application.
+        /// </summary>
         public override string ApplicationName
         {
             get { return Path.GetFileNameWithoutExtension(Application.ExecutablePath); }
             set { }
         }

+        /// <summary>
+        /// Gets the friendly name used to refer to the provider during configuration.
+        /// </summary>
         public override string Name
         {
             get { return ClassName; }
@@ -106,6 +112,10 @@

         #region IApplicationSettingsProvider Members

+        /// <summary>
+        /// Resets the application settings associated with the specified application to their default values.
+        /// </summary>
+        /// <param name="context">A <see cref="T:System.Configuration.SettingsContext" /> describing the current application usage.</param>
         public void Reset(SettingsContext context)
         {
             LocalSettingsNode.RemoveAll();
@@ -113,23 +123,46 @@
             _xmlDocument.Save(FilePath);
         }

+        /// <summary>
+        /// Returns the value of the specified settings property for the previous version of the same application.
+        /// </summary>
+        /// <param name="context">A <see cref="T:System.Configuration.SettingsContext" /> describing the current application usage.</param>
+        /// <param name="property">The <see cref="T:System.Configuration.SettingsProperty" /> whose value is to be returned.</param>
+        /// <returns>
+        /// A <see cref="T:System.Configuration.SettingsPropertyValue" /> containing the value of the specified property setting as it was last set in the previous version of the application; or null if the setting cannot be found.
+        /// </returns>
         public SettingsPropertyValue GetPreviousVersion(SettingsContext context, SettingsProperty property)
         {
             // do nothing
             return new SettingsPropertyValue(property);
         }

+        /// <summary>
+        /// Indicates to the provider that the application has been upgraded. This offers the provider an opportunity to upgrade its stored settings as appropriate.
+        /// </summary>
+        /// <param name="context">A <see cref="T:System.Configuration.SettingsContext" /> describing the current application usage.</param>
+        /// <param name="properties">A <see cref="T:System.Configuration.SettingsPropertyCollection" /> containing the settings property group whose values are to be retrieved.</param>
         public void Upgrade(SettingsContext context, SettingsPropertyCollection properties)
         {
         }

         #endregion

+        /// <summary>
+        /// Initializes the provider.
+        /// </summary>
+        /// <param name="name">The friendly name of the provider.</param>
+        /// <param name="config">A collection of the name/value pairs representing the provider-specific attributes specified in the configuration for this provider.</param>
         public override void Initialize(string name, NameValueCollection config)
         {
             base.Initialize(Name, config);
         }

+        /// <summary>
+        /// Sets the values of the specified group of property settings.
+        /// </summary>
+        /// <param name="context">A <see cref="T:System.Configuration.SettingsContext" /> describing the current application usage.</param>
+        /// <param name="collection">A <see cref="T:System.Configuration.SettingsPropertyValueCollection" /> representing the group of property settings to set.</param>
         public override void SetPropertyValues(SettingsContext context, SettingsPropertyValueCollection collection)
         {
             foreach (SettingsPropertyValue propertyValue in collection)
@@ -149,6 +182,14 @@
             }
         }

+        /// <summary>
+        /// Returns the collection of settings property values for the specified application instance and settings property group.
+        /// </summary>
+        /// <param name="context">A <see cref="T:System.Configuration.SettingsContext" /> describing the current application use.</param>
+        /// <param name="collection">A <see cref="T:System.Configuration.SettingsPropertyCollection" /> containing the settings property group whose values are to be retrieved.</param>
+        /// <returns>
+        /// A <see cref="T:System.Configuration.SettingsPropertyValueCollection" /> containing the values for the specified settings property group.
+        /// </returns>
         public override SettingsPropertyValueCollection GetPropertyValues(SettingsContext context,
                                                                           SettingsPropertyCollection collection)
         {
@@ -163,6 +204,10 @@
             return values;
         }

+        /// <summary>
+        /// Sets the value.
+        /// </summary>
+        /// <param name="propertyValue">The property value.</param>
         private void SetValue(SettingsPropertyValue propertyValue)
         {
             XmlNode targetNode = IsGlobal(propertyValue.Property)
@@ -182,6 +227,11 @@
             }
         }

+        /// <summary>
+        /// Gets the value.
+        /// </summary>
+        /// <param name="property">The property.</param>
+        /// <returns></returns>
         private string GetValue(SettingsProperty property)
         {
             XmlNode targetNode = IsGlobal(property) ? GlobalSettingsNode : LocalSettingsNode;


fix upload mirror algo

fix upload mirror algo

--- FluentFTP/Client/FtpClient_FolderUpload.cs
+++ FluentFTP/Client/FtpClient_FolderUpload.cs
@@ -120,10 +120,7 @@
 						continue;
 					}
 				}
-
-				// record that this folder should exist
-				shouldExist.Add(localFile.ToLower(), true);
-
+
 				// absorb errors
 				try {

@@ -184,7 +181,7 @@
 				}

 				// record that this file should exist
-				shouldExist.Add(localFile.ToLower(), true);
+				shouldExist.Add(remoteFile.ToLower(), true);

 				// absorb errors
 				try {


Update Deploy

Update Deploy

--- Framework.UnitTest/Application/UnitTest.cs
+++ Framework.UnitTest/Application/UnitTest.cs
@@ -3,11 +3,13 @@
     using Database.Calculated;
     using Framework;
     using Framework.Application;
+    using System;

     public class UnitTest : UnitTestBase
     {
         public void ColumnNameIsId()
         {
+            throw new Exception();
             UtilFramework.Assert(UtilApplication.ConfigColumnNameSqlIsId("") == false);
             UtilFramework.Assert(UtilApplication.ConfigColumnNameSqlIsId("Id") == true);
             UtilFramework.Assert(UtilApplication.ConfigColumnNameSqlIsId("IdX") == true);


Add visitor test : AllowsSkippingASubTree

--- GraphQLSharp.Test/Language/VisitorTests.cs
+++ GraphQLSharp.Test/Language/VisitorTests.cs
@@ -207,5 +207,62 @@
             visitor.Visit(ast);
             visitor.DidVisitAddedField.Should().BeTrue();
         }
+
+        public class VisitedNodes : StackWalker
+        {
+            public ImmutableArray<Tuple<bool, NodeType, object>> Visited = ImmutableArray<Tuple<bool, NodeType, object>>.Empty;
+
+            public override INode Enter(INode node)
+            {
+                AddVisited(node, true);
+                return (node is Field && (node as Field).Name.Value == "b") ? null : node;
+            }
+
+            private void AddVisited(INode node, bool isEnter)
+            {
+                object value = null;
+                var valueProp = node.GetType().GetProperty("Value");
+                if (valueProp != null)
+                {
+                    value = valueProp.GetValue(node);
+                }
+                Visited = Visited.Add(Tuple.Create(isEnter, node.Kind, value));
+            }
+
+            public override INode Leave(INode node)
+            {
+                AddVisited(node, false);
+                return node;
+            }
+        }
+
+        [Fact]
+        public void AllowsSkippingASubTree()
+        {
+            var ast = Parser.Parse("{ a, b { x }, c }", new ParseOptions
+            {
+                NoLocation = true,
+            });
+            var visitor = new VisitedNodes();
+            visitor.Visit(ast);
+            visitor.Visited.ShouldBeEquivalentTo(ImmutableArray.Create(
+                Tuple.Create(true, NodeType.Document, (object)null),
+                Tuple.Create(true, NodeType.OperationDefinition, (object)null),
+                Tuple.Create(true, NodeType.SelectionSet, (object)null),
+                Tuple.Create(true, NodeType.Field, (object)null),
+                Tuple.Create(true, NodeType.Name, (object)"a"),
+                Tuple.Create(false, NodeType.Name, (object)"a"),
+                Tuple.Create(false, NodeType.Field, (object)null),
+                Tuple.Create(true, NodeType.Field, (object)null),
+                Tuple.Create(true, NodeType.Field, (object)null),
+                Tuple.Create(true, NodeType.Name, (object)"c"),
+                Tuple.Create(false, NodeType.Name, (object)"c"),
+                Tuple.Create(false, NodeType.Field, (object)null),
+                Tuple.Create(false, NodeType.SelectionSet, (object)null),
+                Tuple.Create(false, NodeType.OperationDefinition, (object)null),
+                Tuple.Create(false, NodeType.Document, (object)null)
+                ));
+        }
+
     }
 }


allow singles before

allow singles before

--- IPTables.Net/IpUtils/Utils/IpController.cs
+++ IPTables.Net/IpUtils/Utils/IpController.cs
@@ -42,6 +42,18 @@
                 return null;
             }
             int i = 0;
+            for (; i < strs.Length; i++)
+            {
+                var k = strs[i];
+                if (IsSingle(k))
+                {
+                    ret.Singles.Add(k);
+                }
+                else
+                {
+                    break;
+                }
+            }
             if (firstKey != null)
             {
                 var v = strs[i];


version 1.5d

version 1.5d

--- ImprovedAssetsPanel/ImprovedAssetsPanel.cs
+++ ImprovedAssetsPanel/ImprovedAssetsPanel.cs
@@ -311,6 +311,7 @@

                 var button = uiView.AddUIComponent(typeof(UIButton)) as UIButton;
                 button.size = new Vector2(32.0f, 32.0f);
+                button.tooltip = assetType.ToString();

                 if (assetType != AssetType.ColorLUT && assetType != AssetType.All)
                 {
@@ -1010,6 +1011,7 @@
                 var active = panel.Find<UICheckBox>("Active");
                 active.relativePosition = new Vector3(370.0f, 200.0f, active.relativePosition.z);
                 active.zOrder = 7;
+                active.tooltip = "Activate/ deactivate asset";

                 var favButton = panel.AddUIComponent<UIButton>();
                 favButton.anchor = UIAnchorStyle.Bottom | UIAnchorStyle.Right;
@@ -1019,8 +1021,11 @@
                 favButton.focusedFgSprite = "InfoIconHealth";
                 favButton.size = new Vector2(36.0f, 36.0f);
                 favButton.relativePosition = new Vector3(362.0f, 164.0f);
-                favButton.opacity = config.favoriteAssets.ContainsKey(packageEntry.publishedFileId.AsUInt64) ? 1.0f : 0.5f;
+
+                var isFavorite = config.favoriteAssets.ContainsKey(packageEntry.publishedFileId.AsUInt64);
+                favButton.opacity = isFavorite ? 1.0f : 0.5f;
                 favButton.zOrder = 7;
+                favButton.tooltip = "Set/ unset favorite";

                 favButton.eventClick += (uiComponent, param) =>
                 {
@@ -1061,6 +1066,7 @@
                 view.focusedBgSprite = "";
                 view.pressedFgSprite = "OptionsPressed";
                 view.pressedBgSprite = "";
+                view.tooltip = "View in Workshop";

                 var share = panel.Find<UIButton>("Share");
                 share.zOrder = 7;


Remove obsolete test

Remove obsolete test

--- InfinniPlatform.Sdk.Tests/SignInApiTest.cs
+++ InfinniPlatform.Sdk.Tests/SignInApiTest.cs
@@ -9,6 +9,7 @@
 {
 	[TestFixture]
 	[Category(TestCategories.IntegrationTest)]
+	[Ignore("Obsolete")]
 	public sealed class SignInApiTest
 	{
 		private const string Route = "1";


cleaned up

cleaned up

--- LogicAppTemplate.Test/CDSConnectorTests.cs
+++ LogicAppTemplate.Test/CDSConnectorTests.cs
@@ -70,9 +70,7 @@
             var inputs = action.Value<JObject>("inputs");

             var path = inputs.Value<string>("path");
-            //"/datasets/@{encodeURIComponent(encodeURIComponent('az-customer-d365.cloudax.dynamics.com'))}/tables/@{encodeURIComponent(encodeURIComponent('ProductCategoryAssignments'))}/items"
-            //[concat('/datasets/@{encodeURIComponent(encodeURIComponent(', parameters('__apostrophe'), parameters('Lists_items_present_in_table-instance'), parameters('__apostrophe'), '))}/tables/@{encodeURIComponent(encodeURIComponent('ProductCategoryAssignments'))}/items')]
-            Assert.AreEqual("[concat('/v2/datasets/@{encodeURIComponent(encodeURIComponent(', parameters('__apostrophe'), parameters('List_records-environment'), parameters('__apostrophe'), '))}/tables/@{encodeURIComponent(encodeURIComponent(''cdmtmp_accounts''))}/items')]", path);
+               Assert.AreEqual("[concat('/v2/datasets/@{encodeURIComponent(encodeURIComponent(', parameters('__apostrophe'), parameters('List_records-environment'), parameters('__apostrophe'), '))}/tables/@{encodeURIComponent(encodeURIComponent(''cdmtmp_accounts''))}/items')]", path);

         }


Fix storing the next clause

Fix storing the next clause

--- LogicalShift.Reason/Solvers/ChoicePoint.cs
+++ LogicalShift.Reason/Solvers/ChoicePoint.cs
@@ -39,6 +39,7 @@
             _previousChoicePoint    = previousChoice;
             _arguments              = arguments.Select(arg => new SimpleReference(arg)).ToArray();
             _trail                  = trail;
+            _nextClause             = nextClause;
         }

         /// <summary>


Implement a few API for tvOS so that our unit test app works a bit better.

--- MonoTouch.Dialog/Elements.cs
+++ MonoTouch.Dialog/Elements.cs
@@ -934,26 +934,32 @@

 		static public CGSize StringSize (this string self, UIFont font)
 		{
-			// FIXME
-			return CGSize.Empty;
+			return ((NSString) self).GetSizeUsingAttributes (new UIStringAttributes () {
+				Font = font,
+			});
 		}

 		static public CGSize StringSize (this string self, UIFont font, CGSize size, UILineBreakMode mode)
 		{
-			// FIXME
-			return size;
+			// FIXME: use GetBoundingRect instead
+			return ((NSString) self).GetSizeUsingAttributes (new UIStringAttributes () {
+				Font = font,
+			});
 		}

 		static public CGSize StringSize (this NSString self, UIFont font, CGSize size, UILineBreakMode mode)
 		{
-			// FIXME
-			return size;
+			return self.GetSizeUsingAttributes (new UIStringAttributes () {
+				Font = font,
+			});
 		}

 		static public CGSize StringSize (this NSString self, UIFont font, float width, UILineBreakMode mode)
 		{
-			// FIXME
-			return new CGSize (width, 0);
+			// FIXME: use GetBoundingRect instead
+			return self.GetSizeUsingAttributes (new UIStringAttributes () {
+				Font = font,
+			});
 		}

 		static public CGSize DrawString (this string self, CGRect rect, UIFont font)


Whoops, not building

Whoops, not building

--- MyMortgage.Runner/Program.cs
+++ MyMortgage.Runner/Program.cs
@@ -1,4 +1,6 @@
-namespace MyMortgage.Runner
+using System;
+
+namespace MyMortgage.Runner
 {
     class Program
     {


[Mono.Debugging.Soft] Commenting HitCount out on CreateExceptionRequest

--- Mono.Debugging.Soft/SoftDebuggerSession.cs
+++ Mono.Debugging.Soft/SoftDebuggerSession.cs
@@ -1017,7 +1017,11 @@
 			ExceptionEventRequest request;

 			request = vm.CreateExceptionRequest (excType, true, true);
-			request.Count = cp.HitCount; // Note: need to set HitCount *before* enabling
+			//Commenting Count so we have better control of counting
+			//because VM only allows count equal to some number but we need also
+			//lower, greater, equal or greater...
+			//Plus some day we might want to put filtering before counting...
+			//request.Count = cp.HitCount; // Note: need to set HitCount *before* enabling
 			if (vm.Version.AtLeast (2, 25))
 				request.IncludeSubclasses = cp.IncludeSubclasses; // Note: need to set IncludeSubclasses *before* enabling
 			request.Enabled = cp.Enabled;


[Mono.Debugging.Soft] Added support for conditions/tracing on exception

--- Mono.Debugging.Soft/SoftDebuggerSession.cs
+++ Mono.Debugging.Soft/SoftDebuggerSession.cs
@@ -1026,6 +1026,8 @@
 				request.IncludeSubclasses = cp.IncludeSubclasses; // Note: need to set IncludeSubclasses *before* enabling
 			request.Enabled = cp.Enabled;
 			bi.Requests.Add (request);
+
+			breakpoints[request] = bi;
 		}

 		static bool CheckTypeName (string typeName, string name)
@@ -1554,18 +1556,27 @@
 			bool steppedOut = false;
 			bool resume = true;

-			if (es[0].EventType == EventType.Exception) {
+			if (es [0].EventType == EventType.Exception) {
 				var bad = es.FirstOrDefault (ee => ee.EventType != EventType.Exception);
 				if (bad != null)
 					throw new Exception ("Catchpoint eventset had unexpected event type " + bad.GetType ());
-				var ev = (ExceptionEvent)es[0];
-				if (ev.Request == unhandledExceptionRequest)
+				var ev = (ExceptionEvent)es [0];
+				exception = ev.Exception;
+				if (ev.Request == unhandledExceptionRequest) {
 					etype = TargetEventType.UnhandledException;
-				else
-					etype = TargetEventType.ExceptionThrown;
-				exception = ev.Exception;
-				if (ev.Request != unhandledExceptionRequest || exception.Type.FullName != "System.Threading.ThreadAbortException")
-					resume = false;
+					if (exception.Type.FullName != "System.Threading.ThreadAbortException")
+						resume = false;
+				} else {
+					//Set exception for this thread so CatchPoint Print message(tracing) of {$exception} work
+					activeExceptionsByThread [es[0].Thread.ThreadId] = exception;
+					if (!HandleBreakpoint (es [0].Thread, ev.Request)) {
+						etype = TargetEventType.ExceptionThrown;
+						resume = false;
+					}
+					//Remove exception from thread so when program stops because stepFinished/programPause/breakPoint...
+					//we don't have outdatted exception
+					activeExceptionsByThread.Remove (es[0].Thread.ThreadId);
+				}
 			} else {
 				//always need to evaluate all breakpoints, some might be tracepoints or conditional bps with counters
 				foreach (Event e in es) {
@@ -1910,7 +1921,7 @@
 			if (!breakpoints.TryGetValue (er, out binfo))
 				return false;

-			var bp = binfo.BreakEvent as Breakpoint;
+			var bp = binfo.BreakEvent;
 			if (bp == null)
 				return false;

@@ -1974,9 +1985,10 @@
 			return new SourceLocation (frame.Method.Name, frame.FileName, frame.LineNumber, frame.ColumnNumber);
 		}

-		static string FormatSourceLocation (Breakpoint bp)
-		{
-			if (string.IsNullOrEmpty (bp.FileName))
+		static string FormatSourceLocation (BreakEvent breakEvent)
+		{
+			var bp = breakEvent as Breakpoint;
+			if (bp == null || string.IsNullOrEmpty (bp.FileName))
 				return null;

 			var location = Path.GetFileName (bp.FileName);
@@ -2000,7 +2012,7 @@
 			return false;
 		}

-		string EvaluateExpression (ThreadMirror thread, string expression, Breakpoint bp)
+		string EvaluateExpression (ThreadMirror thread, string expression, BreakEvent bp)
 		{
 			try {
 				var frames = thread.GetFrames ();


fix get notification

fix get notification

--- Nofy.EntityFrameworkCore/NotificationRepository.cs
+++ Nofy.EntityFrameworkCore/NotificationRepository.cs
@@ -110,11 +110,6 @@

 			query = query.Where(t => recipients.Contains(new NotificationRecipient(t.RecipientType, t.RecipientId)));

-			foreach (var recipient in recipients)
-			{
-				query = query.Where(t => t.RecipientType == recipient.RecipientType && t.RecipientId == recipient.RecipientId);
-			}
-
 			var data = query
 				.Include(t => t.Actions)
 				.OrderByDescending(n => n.Id)


soft debugger null check for Preview 17.4 version 1

--- Mono.Debugging.Soft/SoftDebuggerSession.cs
+++ Mono.Debugging.Soft/SoftDebuggerSession.cs
@@ -2268,28 +2268,28 @@
 			string assemblyName;
 			bool hasSymbol;
 			if (!isDynamic) {
-				var metaData = asm.GetMetadata ();
-				assemblyName = metaData.MainModule.Name;
-				hasSymbol = metaData.MainModule.HasSymbols;
+				var metaData = asm?.GetMetadata() ?? null;
+				assemblyName = metaData?.MainModule?.Name ?? string.Empty;
+				hasSymbol = metaData?.MainModule?.HasSymbols ?? false;
 			} else {
 				assemblyName = string.Empty;
 				hasSymbol = false;
 			}
 			var assembly = new Assembly (
 					assemblyName,
-					asm.Location,
+					asm?.Location ?? string.Empty,
 					true,
 					hasSymbol,
 					string.Empty,
 					string.Empty,
 					-1,
-					name.Version.Major.ToString (),
+					name?.Version?.Major.ToString () ?? string.Empty,
 					// TODO: module time stamp
 					string.Empty,
-					assemblyObject.Address.ToString (),
-					string.Format ("[{0}]{1}", asm.VirtualMachine.TargetProcess.Id, asm.VirtualMachine.TargetProcess.ProcessName),
-					asm.Domain.FriendlyName,
-					asm.VirtualMachine.TargetProcess.Id,
+					assemblyObject?.Address.ToString () ?? string.Empty,
+					string.Format ("[{0}]{1}", asm?.VirtualMachine?.TargetProcess?.Id ?? -1, asm?.VirtualMachine?.TargetProcess?.ProcessName ?? string.Empty),
+					asm?.Domain?.FriendlyName ?? string.Empty,
+					asm?.VirtualMachine?.TargetProcess?.Id ?? -1,
 					hasSymbol,
 					isDynamic
 			);


Exit from the injection loop if PCSX2 is closed

--- OpenKh.Tools.ModsManager/Services/Pcsx2Injector.cs
+++ OpenKh.Tools.ModsManager/Services/Pcsx2Injector.cs
@@ -301,13 +301,10 @@
             _cancellationToken = _cancellationTokenSource.Token;
             _injectorTask = Task.Run(async () =>
             {
-                while (!_cancellationToken.IsCancellationRequested)
-                {
-                    var gameName = await Pcsx2MemoryService.GetPcsx2ApplicationName(process, _cancellationToken);
-                    var processStream = new ProcessStream(process, 0x20000000, 0x2000000);
-                    WritePatch(processStream, gameName);
-                    MainLoop(processStream);
-                }
+                var gameName = await Pcsx2MemoryService.GetPcsx2ApplicationName(process, _cancellationToken);
+                using var processStream = new ProcessStream(process, 0x20000000, 0x2000000);
+                WritePatch(processStream, gameName);
+                MainLoop(processStream);
             }, _cancellationToken);
         }

@@ -323,6 +320,9 @@
             while (!_cancellationToken.IsCancellationRequested && !isProcessDead)
             {
                 var operation = stream.SetPosition(OperationAddress).ReadInt32();
+                if (stream.Position == OperationAddress)
+                    break; // The emulator stopped its execution
+
                 switch ((Operation)operation)
                 {
                     case Operation.LoadFile:


pass attemptNumber instead of 0

pass attemptNumber instead of 0

--- Mono.Debugging.Soft/SoftDebuggerSession.cs
+++ Mono.Debugging.Soft/SoftDebuggerSession.cs
@@ -185,7 +185,7 @@
 				try {
 					if (timeBetweenAttempts > 0)
 						Thread.Sleep (timeBetweenAttempts);
-					ConnectionStarting (startArgs.ConnectionProvider.BeginConnect (dsi, callback), dsi, false, 0);
+					ConnectionStarting (startArgs.ConnectionProvider.BeginConnect (dsi, callback), dsi, false, attemptNumber);
 				} catch (Exception ex2) {
 					OnConnectionError (ex2);
 				}


New data type tags

New data type tags

--- PART/Source/Core/Schemas/Intervals/DataTypeTags.cs
+++ PART/Source/Core/Schemas/Intervals/DataTypeTags.cs
@@ -65,6 +65,7 @@
         MarketingProtection,
         PNR,
         Citizenship,
-        BirthRegistration
+        BirthRegistration,
+        BasicInformation
     }
 }


cache TiledTilesetTile lookups so we don't loop through tiles every time we need it

--- Nez-PCL/PipelineRuntime/Tiled/TiledTile.cs
+++ Nez-PCL/PipelineRuntime/Tiled/TiledTile.cs
@@ -21,14 +21,20 @@
 		{
 			get
 			{
-				for( var i = 0; i < tileset.tiles.Count; i++ )
+				if( !_tilesetTileIndex.HasValue )
 				{
-					// id is a gid so we need to subtract the tileset.firstId to get a local id
-					if( tileset.tiles[i].id == id - tileset.firstId )
-						return tileset.tiles[i];
+					_tilesetTileIndex = -1;
+					for( var i = 0; i < tileset.tiles.Count; i++ )
+					{
+						// id is a gid so we need to subtract the tileset.firstId to get a local id
+						if( tileset.tiles[i].id == id - tileset.firstId )
+							_tilesetTileIndex = i;
+					}
 				}

-				return null;
+				if( _tilesetTileIndex.Value < 0 )
+					return null;
+				return tileset.tiles[_tilesetTileIndex.Value];
 			}
 		}

@@ -39,6 +45,12 @@
 		public bool flippedVertically;
 		public bool flippedDiagonally;
 		internal TiledTileset tileset;
+
+		/// <summary>
+		/// we use this for 3 states: HasValue is false means we havent yet checked for the TiledTilesetTile, less than 0 means there is no
+		/// TiledTilesetTile for this, and 0+ means we have a TiledTilesetTile.
+		/// </summary>
+		int? _tilesetTileIndex;

 		public TiledTile( int id )


Add some comments to PSBT

Add some comments to PSBT

--- NBitcoin/BIP174/PSBTInput.cs
+++ NBitcoin/BIP174/PSBTInput.cs
@@ -409,6 +409,24 @@
 			this.sighash_type = null;
 		}

+		/// <summary>
+		/// Represent this this input as a coin that can be used for signing operations.
+		/// Returns null if <see cref="WitnessUtxo"/>, <see cref="NonWitnessUtxo"/> is not set
+		/// or if <see cref="PSBTCoin.WitnessScript"/> or <see cref="PSBTCoin.RedeemScript"/> are missing but needed.
+		/// </summary>
+		/// <returns>The input as a signable coin</returns>
+		public new Coin? GetSignableCoin()
+		{
+			return base.GetSignableCoin();
+		}
+
+		/// <summary>
+		/// Represent this this input as a coin that can be used for signing operations.
+		/// Returns null if <see cref="WitnessUtxo"/>, <see cref="NonWitnessUtxo"/> is not set
+		/// or if <see cref="PSBTCoin.WitnessScript"/> or <see cref="PSBTCoin.RedeemScript"/> are missing but needed.
+		/// </summary>
+		/// <param name="error">If it is not possible to retrieve the signable coin, a human readable reason.</param>
+		/// <returns>The input as a signable coin</returns>
 		public override Coin? GetSignableCoin(out string? error)
 		{
 			if (witness_utxo == null && non_witness_utxo == null)
@@ -929,6 +947,11 @@
 			return false;
 		}

+		/// <summary>
+		/// Represent this this input as a coin.
+		/// Returns null if <see cref="WitnessUtxo"/> or <see cref="NonWitnessUtxo"/> is not set.
+		/// </summary>
+		/// <returns>The input as a coin</returns>
 		public override Coin? GetCoin()
 		{
 			var txout = GetTxOut();


#194 fix pull request

#194 fix pull request

- Change VolumePerUnit from float to decimal

--- OctoAwesome/OctoAwesome/BlockDefinition.cs
+++ OctoAwesome/OctoAwesome/BlockDefinition.cs
@@ -31,7 +31,7 @@
         /// <summary>
         /// Gibt das Volumen für eine Einheit an.
         /// </summary>
-        public virtual float VolumePerUnit => 125;
+        public virtual decimal VolumePerUnit => 125;

         /// <summary>
         /// Array, das alle Texturen für alle Seiten des Blocks enthält


more bluez

more bluez

--- Plugin.BluetoothLE.MonoBlueZ/GattCharacteristic.cs
+++ Plugin.BluetoothLE.MonoBlueZ/GattCharacteristic.cs
@@ -39,41 +39,27 @@
         public override IObservable<CharacteristicResult> WhenNotificationReceived() => Observable.Create<CharacteristicResult>(ob =>
         {
             var readCharPath = new ObjectPath("/org/bluez/hci0/dev_F6_58_7F_09_5D_E6/service000c/char000f");
-            var readChar= Bus.System.GetObject<GattCharacteristic1>(BlueZPath.Service, readCharPath);
+            var readChar = Bus.System.GetObject<GattCharacteristic1>(BlueZPath.Service, readCharPath);
             var properties = Bus.System.GetObject<Properties>(BlueZPath.Service, readCharPath);

-            //properties.PropertiesChanged += new PropertiesChangedHandler(
-            //    new Action<string,IDictionary<string,object>,string[]>((@interface,changed,invalidated)=>{
-            //        System.Console.WriteLine("Properties Changed on "+@interface);
-            //        if(changed!=null)
-            //        {
-            //            foreach(var prop in changed.Keys)
-            //            {
-            //                if(changed[prop] is byte[])
-            //                {
-            //                    foreach(var b in ((byte[])changed[prop]))
-            //                    {
-            //                        System.Console.Write(b+",");
-            //                    }
-            //                    System.Console.WriteLine("");
-            //                }
-            //                else
-            //                {
-            //                    System.Console.WriteLine("{0}={1}",prop,changed[prop]);
-            //                }
-            //            }
-            //        }
+            var handler = new PropertiesChangedHandler((@interface, changed, invalidated) =>
+            {
+                if (changed != null)
+                {
+                    foreach (var prop in changed.Keys)
+                    {
+                        if (changed[prop] is byte[])
+                        {

-            //        if(invalidated!=null)
-            //        {
-            //            foreach(var prop in invalidated)
-            //            {
-            //                System.Console.WriteLine(prop+" Invalidated");
-            //            }
-            //        }
-            //    }));
+                        }
+                    }
+                }
+            });
+            properties.PropertiesChanged += handler;
+
             return () =>
             {
+                properties.PropertiesChanged -= handler;
                 //agentManager.UnregisterAgent (agentPath);
                 //gattManager.UnregisterProfile (gattProfilePath);
             };


Accidentally didn't push one file...

Accidentally didn't push one file...

--- Octokit.Reactive/ObservableGitHubClient.cs
+++ Octokit.Reactive/ObservableGitHubClient.cs
@@ -61,7 +61,8 @@
         public IObservablePullRequestsClient PullRequest { get; private set; }
         public IObservableRepositoriesClient Repository { get; private set; }
         public IObservableGistsClient Gist { get; private set; }
-        public IObservableReleasesClient Release { get; private set; }
+        [Obsolete("Use Repository.Release instead")]
+        public IObservableReleasesClient Release { get { return Repository.Release; } }
         public IObservableSshKeysClient SshKey { get; private set; }
         public IObservableUsersClient User { get; private set; }
         public IObservableNotificationsClient Notification { get; private set; }


Users/PreviewStats logic

Users/PreviewStats logic

--- Openbook/OpenBookClient.cs
+++ Openbook/OpenBookClient.cs
@@ -112,6 +112,12 @@
                 OpenbookUri.Markets.Category, query);
         }

+        public async Task<UserPreviewStatsResult> GetPreviewStats(string username)
+        {
+            return await GetResult<UserPreviewStatsResult>(
+                OpenbookUri.Users.PreviewStats + username);
+        }
+
         internal Uri GetQueryUri(string baseUri,
             IDictionary<string, string> queryParams = null)
         {


Fixing 12 hr issue

Fixing 12 hr issue

--- PokemonGoRaidBot/Services/Parsing/MessageParser.cs
+++ PokemonGoRaidBot/Services/Parsing/MessageParser.cs
@@ -272,10 +272,44 @@
                         hour += 12;

                     var actualTime = DateTime.Today.AddHours(hour).AddMinutes(minute).AddHours(TimeOffset * -1);
-                    //var tsout = ParseTimeSpanBase(string.Format("{0}:{1}", hour, minute), TimeOffset * -1);
-
-                    //if (tsout.HasValue)
-                    //{
+
+                    message = message.Replace(match.Groups[0].Value, matchedTimeWordReplacement);
+
+                    if (joinReg.IsMatch(message))
+                    {
+                        message = joinReg.Replace(message, matchedWordReplacement);
+                        actualJoinTime = actualTime;
+                    }
+                    else
+                        actualRaidTime = actualTime;
+                }
+
+                if (joinTimeSpan.HasValue && raidTimeSpan.HasValue)
+                    return;
+            }
+
+            var actualRegStart = Language.CombineRegex(" ?", "timeActualStartPre", "timeActualStart");
+            if (actualRegStart.IsMatch(message))
+            {
+                var matches = actualRegStart.Matches(message).Cast<Match>();
+                foreach (var match in matches)
+                {
+                    var hr = match.Groups[2].Value;
+                    var min = match.Groups[3].Value;
+
+                    int hour = Convert.ToInt32(hr),
+                        minute = string.IsNullOrEmpty(min) ? 0 : Convert.ToInt32(min),
+                        currentHour = DateTime.Now.AddHours(TimeOffset).Hour;
+
+                    if (currentHour > 9 && currentHour < 13)
+                    {//this is tricky because someone just said like "1:30" and didn't specify that it was meant to be PM
+                        var part = currentHour > hour ? "p" : DateTime.Now.ToString("tt").ToLower();
+
+                        if (part.First() == 'p' && hour < 12) hour += 12;
+                    }
+
+                    var actualTime = DateTime.Today.AddHours(hour).AddMinutes(minute).AddHours(TimeOffset * -1);
+
                     message = message.Replace(match.Groups[0].Value, matchedTimeWordReplacement);

                     if (joinReg.IsMatch(message))
@@ -285,59 +319,6 @@
                     }
                     else
                         actualRaidTime = actualTime;// = tsout.Value;
-                    //}
-                }
-
-                if (joinTimeSpan.HasValue && raidTimeSpan.HasValue)
-                    return;
-            }
-
-            var actualRegStart = Language.CombineRegex(" ?", "timeActualStartPre", "timeActualStart");
-            if (actualRegStart.IsMatch(message))
-            {
-                var matches = actualRegStart.Matches(message).Cast<Match>();
-                foreach (var match in matches)
-                {
-                    var hr = match.Groups[2].Value;
-                    var min = match.Groups[3].Value;
-
-                    int hour = Convert.ToInt32(hr),
-                        minute = string.IsNullOrEmpty(min) ? 0 : Convert.ToInt32(min),
-                        currentHour = DateTime.Now.Hour;
-
-                    if (currentHour > 9 && currentHour < 13)
-                    {
-                        var part = currentHour > hour ? "p" : DateTime.Now.ToString("tt").ToLower();
-
-                        if (part.First() == 'p' && hour < 12) hour += 12;
-                    }
-
-                    var actualTime = DateTime.Today.AddHours(hour).AddMinutes(minute).AddHours(TimeOffset * -1);
-
-                    message = message.Replace(match.Groups[0].Value, matchedTimeWordReplacement);
-
-                    if (joinReg.IsMatch(message))
-                    {
-                        message = joinReg.Replace(message, matchedWordReplacement);
-                        actualJoinTime = actualTime;// = tsout.Value;
-                    }
-                    else
-                        actualRaidTime = actualTime;// = tsout.Value;
-                    /*
-                    var tsout = ParseTimeSpanBase(string.Format("{0}:{1}", hour, minute), TimeOffset * -1);
-
-                    if (tsout.HasValue)
-                    {
-                        message = message.Replace(match.Groups[0].Value, matchedTimeWordReplacement);
-
-                        if (joinReg.IsMatch(message))
-                        {
-                            message = joinReg.Replace(message, matchedWordReplacement);
-                            joinTimeSpan = tsout.Value;
-                        }
-                        else
-                            raidTimeSpan = tsout.Value;
-                    }*/
                 }

                 if (joinTimeSpan.HasValue && raidTimeSpan.HasValue)


Setup database data

Setup database data

--- Projects/GeometryTestProject/TestInitialization.cs
+++ Projects/GeometryTestProject/TestInitialization.cs
@@ -2,6 +2,8 @@
 using Microsoft.VisualStudio.TestTools.UnitTesting;
 using System;
 using BackendlessAPI;
+using System.Collections.Generic;
+using System.Linq;

 namespace GeometryTestProject
 {
@@ -24,5 +26,53 @@
       Backendless.URL = BKNDLSS_URL;
       Backendless.InitApp( APP_API_KEY, DOTNET_API_KEY );
     }
+
+    [AssemblyInitialize]
+    public static void SetupDatabaseData( TestContext context )
+    {
+      ////////////Сreation of the parent table "Order"////////////
+
+      Dictionary<String, Object> data = new Dictionary<String, Object>();
+      data.Add( "age", 10 );
+      data.Add( "name", "Nikita" );
+
+      Dictionary<String, Object> dataIdParent_1 = Backendless.Data.Of( "Order" ).Save( data );//////////First object in the "Order" table
+      /////////////////////////////////////////////
+      data.Clear();
+      data.Add( "age", 5 );
+      data.Add( "name", "Tommy" );
+
+      Dictionary<String, Object> dataIdParent_2 = Backendless.Data.Of( "Order" ).Save( data );//////////Second object in the "Order" table
+                                                  /////////////////////////////////////////////
+
+      ////////////Creation of the children table "Area"////////////
+
+      data.Clear();
+      data.Add( "AreaA", "Munich" );
+      data.Add( "Categories", false );
+      data.Add( "UserId", 3 );
+
+      Dictionary<String, Object> dataIdChildren_1 = Backendless.Data.Of( "Area" ).Save( data );//////////First object in the "Area" table
+      ////////////////////////////////////////////
+      data.Clear();
+      data.Add( "AreaA", "London" );
+      data.Add( "Categories", true );
+      data.Add( "UserId", 6 );
+
+      Dictionary<String, Object> dataIdChildren_2 = Backendless.Data.Of( "Area" ).Save( data );//////////Second object in the "Area" table
+                                                                                ////////////////////////////////////////////
+
+      ///Сreating a connection between the objects "Order" and "Area"///
+
+      Object[] children = new Object[] { dataIdChildren_1 };
+
+      Backendless.Data.Of( "Order" ).SetRelation( dataIdParent_1, "Related:Area:n", children );//First relation
+      //////////////////////////////////////////////////////////////////////////////////////////
+
+      children = new Object[] { dataIdChildren_2 };
+
+      Backendless.Data.Of( "Order" ).SetRelation( dataIdParent_2, "Related:Area:n", children );//Second relations
+      //////////////////////////////////////////////////////////////////////////////////////////
+    }
   }
 }


**ALERT** .Net Guid appears to render to strings differently than Java and others (w/r/t byte ordering).  So whenever using .Net Guid for time based GUIDs, you must avoid string conversions and deal directly with byte arrays when translating.

--- NoSql/Cassandra/Uuid/Uuid.cs
+++ NoSql/Cassandra/Uuid/Uuid.cs
@@ -156,9 +156,28 @@
             return sb.ToString();
         }

-        #region ICloneable Members
+				public Uuid(string str)
+				{
+					int offset = 0;
+					for (int i = 0; i < 16; ++i)
+					{
+						switch (i)
+						{
+							case 4:
+							case 6:
+							case 8:
+							case 10:
+								offset++;
+								break;
+						}
+						mBytes[i] = (byte)int.Parse(str.Substring(offset, 2), System.Globalization.NumberStyles.AllowHexSpecifier);
+						offset += 2;
+					}
+				}

-        public object Clone()
+				#region ICloneable Members
+
+				public object Clone()
         {
             return new Uuid(mBytes);
         }


Changed name.

Changed name.

--- Nodes/BaseFunctionPtrNode.cs
+++ Nodes/BaseFunctionPtrNode.cs
@@ -10,7 +10,7 @@
 	public abstract class BaseFunctionPtrNode : BaseNode
 	{
 		private IntPtr address = IntPtr.Zero;
-		private readonly List<string> assembledCode = new List<string>();
+		private readonly List<string> disassembledCode = new List<string>();

 		/// <summary>Size of the node in bytes.</summary>
 		public override int MemorySize => IntPtr.Size;
@@ -21,7 +21,7 @@

 			DisassembleRemoteCode(memory, ptr);

-			return string.Join("\n", assembledCode);
+			return string.Join("\n", disassembledCode);
 		}

 		protected int Draw(ViewInfo view, int x, int y, string type, string name)
@@ -78,7 +78,7 @@

 				DisassembleRemoteCode(view.Memory, ptr);

-				foreach (var line in assembledCode)
+				foreach (var line in disassembledCode)
 				{
 					y += view.Font.Height;

@@ -99,7 +99,7 @@
 			var h = view.Font.Height;
 			if (levelsOpen[view.Level])
 			{
-				h += assembledCode.Count * view.Font.Height;
+				h += disassembledCode.Count * view.Font.Height;
 			}
 			return h;
 		}
@@ -110,7 +110,7 @@

 			if (this.address != address)
 			{
-				assembledCode.Clear();
+				disassembledCode.Clear();

 				this.address = address;

@@ -121,9 +121,9 @@
 						address,
 						200,
 #if WIN64
-						(a, l, i) => assembledCode.Add($"{a.ToString("X08")} {i}")
+						(a, l, i) => disassembledCode.Add($"{a.ToString("X08")} {i}")
 #else
-						(a, l, i) => assembledCode.Add($"{a.ToString("X04")} {i}")
+						(a, l, i) => disassembledCode.Add($"{a.ToString("X04")} {i}")
 #endif
 					);
 				}


Supply the encoding, not boolean

Supply the encoding, not boolean

--- RestSharp/Authenticators/HttpBasicAuthenticator.cs
+++ RestSharp/Authenticators/HttpBasicAuthenticator.cs
@@ -31,17 +31,18 @@
     /// </remarks>
     public class HttpBasicAuthenticator : IAuthenticator
     {
-        readonly string authHeader;
+        readonly string _authHeader;

         public HttpBasicAuthenticator(string username, string password)
-            : this(username, password, useIso88591: false)
+            : this(username, password, Encoding.UTF8)
         {
         }

-        public HttpBasicAuthenticator(string username, string password, bool useIso88591)
+        public HttpBasicAuthenticator(string username, string password, Encoding encoding)
         {
-            var token = Convert.ToBase64String(Encoding.GetEncoding(useIso88591 ? "ISO-8859-1" : "UTF-8").GetBytes($"{username}:{password}"));
-            this.authHeader = $"Basic {token}";
+            var token = Convert.ToBase64String(encoding.GetBytes($"{username}:{password}"));
+
+            _authHeader = $"Basic {token}";
         }

         public void Authenticate(IRestClient client, IRestRequest request)
@@ -55,7 +56,7 @@

             // only add the Authorization parameter if it hasn't been added by a previous Execute
             if (!request.Parameters.Any(p => "Authorization".Equals(p.Name, StringComparison.OrdinalIgnoreCase)))
-                request.AddParameter("Authorization", authHeader, ParameterType.HttpHeader);
+                request.AddParameter("Authorization", _authHeader, ParameterType.HttpHeader);
         }
     }
 }


Fix failing tests

Fix failing tests

--- Palaso.Tests/reporting/ErrorReportTests.cs
+++ Palaso.Tests/reporting/ErrorReportTests.cs
@@ -41,7 +41,7 @@

 			// Verify
 			// (ErrorReport.Properties is a string dictionary which converts all keys to lowercase)
-			Assert.That(ErrorReport.Properties.Keys, Has.No.Member("desktopenvironment"));
+			Assert.That(ErrorReport.Properties.Keys, Has.No.Member("DesktopEnvironment"));
 		}

 		[Test]
@@ -64,7 +64,7 @@

 			// Verify
 			// (ErrorReport.Properties is a string dictionary which converts all keys to lowercase)
-			Assert.That(ErrorReport.Properties.Keys, Has.Member("desktopenvironment"));
+			Assert.That(ErrorReport.Properties.Keys, Has.Member("DesktopEnvironment"));
 		}

 		[Test]


Fixed bug when not downloading from the Internet

--- SDelete-Gui/SDelete-Gui/ViewModel/MainViewModel.cs
+++ SDelete-Gui/SDelete-Gui/ViewModel/MainViewModel.cs
@@ -45,11 +45,11 @@

         private void ExecuteConfigure()
         {
-            string systemFolder = Environment.GetFolderPath(Environment.SpecialFolder.System);
-            string sdeletePath = Path.Combine(systemFolder, "sdelete.exe");
-            if (!DownloadSdelete(sdeletePath) && !File.Exists(sdeletePath))
+            string systempath = Environment.GetFolderPath(Environment.SpecialFolder.SystemX86);
+            string sdeletePath = Path.Combine(systempath, "sdelete.exe");
+            if (!File.Exists(sdeletePath) && !DownloadSdelete(sdeletePath))
             {
-                ErrorMessage = "Cannot download SDelete right now or it does not exists in " + systemFolder;
+                ErrorMessage = string.Format("SDelete.exe not found in {0} and cannot be downloaded from the Internet", systempath);
                 return;
             }

@@ -160,5 +160,7 @@
                 return false;
             }
         }
+
+
     }
 }


The View Images button for each tag now works, executing a search on Search/TagSearch.

--- Phocalstream_Web/Views/Home/TagList.cshtml
+++ Phocalstream_Web/Views/Home/TagList.cshtml
@@ -46,7 +46,7 @@

@Html.DisplayFor(model => tag.PhotoCount) photos from @Html.DisplayFor(model => tag.First) to @Html.DisplayFor(model => tag.Last)

-                                    View Collection
+                                    View Images


Turn off the max length steam for testing.

--- PrinterCommunication/Io/MaxLengthStream.cs
+++ PrinterCommunication/Io/MaxLengthStream.cs
@@ -53,6 +53,9 @@
             if (movesToSend.Count == 0)
             {
                 string lineFromChild = base.ReadLine();
+
+                // disable this for a test
+                return lineFromChild;

                 if (lineFromChild != null
                     && LineIsMovement(lineFromChild))


Don't bother asking for group members if there is no current group

--- Programs/examples/TestClient/TestClient.cs
+++ Programs/examples/TestClient/TestClient.cs
@@ -220,7 +220,7 @@
         private void AgentDataUpdateHandler(object sender, PacketReceivedEventArgs e)
         {
             AgentDataUpdatePacket p = (AgentDataUpdatePacket)e.Packet;
-            if (p.AgentData.AgentID == e.Simulator.Client.Self.AgentID)
+            if (p.AgentData.AgentID == e.Simulator.Client.Self.AgentID && p.AgentData.ActiveGroupID != UUID.Zero)
             {
                 GroupID = p.AgentData.ActiveGroupID;


- modificacion proceso mailing para que trabaje con mas entidades - modificacion sistema ProcessExecution para abstraerlo del sistema de operaciones - documentacion

(TFS CS 4490)

--- Signum.Engine.Extensions/Processes/PackageLogic.cs
+++ Signum.Engine.Extensions/Processes/PackageLogic.cs
@@ -67,18 +67,14 @@
     public abstract class PackageAlgorithm<T>: IProcessAlgorithm
         where T:class, IIdentifiable
     {
-        public Enum OperationKey { get; private set; }
-
         Func<List<Lite<T>>> getLazies;

-        public PackageAlgorithm(Enum operationKey)
-        {
-            this.OperationKey = operationKey;
-        }
-
-        public PackageAlgorithm(Enum operationKey, Func<List<Lite<T>>> getLazies)
-        {
-            this.OperationKey = operationKey;
+        public PackageAlgorithm()
+        {
+        }
+
+        public PackageAlgorithm(Func<List<Lite<T>>> getLazies)
+        {
             this.getLazies = getLazies;
         }

@@ -106,14 +102,6 @@
             return package;
         }

-        protected virtual PackageDN CreatePackage(object[] args)
-        {
-            PackageDN package = new PackageDN { Operation = EnumLogic<OperationDN>.ToEntity(OperationKey) };
-
-            if (args != null && args.Length > 0)
-                package.Name = args.TryGetArg<string>(0);
-            return package;
-        }

         public FinalState Execute(IExecutingProcess executingProcess)
         {
@@ -167,24 +155,37 @@
         }

         public int NotificationSteps = 100;
-
+        protected abstract PackageDN CreatePackage(object[] args);
         public abstract void ExecuteLine(PackageLineDN pl, PackageDN package);
     }

-    public class PackageExecuteAlgorithm<T> : PackageAlgorithm<T> where T:class, IIdentifiable
-    {
+    public class PackageExecuteAlgorithm<T> : PackageAlgorithm<T> where T : class, IIdentifiable
+    {
+        public Enum OperationKey { get; private set; }
+
         public PackageExecuteAlgorithm(Enum operationKey)
-            : base(operationKey)
-        {
-        }
-
-        public PackageExecuteAlgorithm(Enum operationKey, Func<List<Lite<T>>> getLazies):base(operationKey, getLazies)
-        {
+        {
+            this.OperationKey = operationKey;
+        }
+
+        public PackageExecuteAlgorithm(Enum operationKey, Func<List<Lite<T>>> getLazies)
+            : base(getLazies)
+        {
+            this.OperationKey = operationKey;
         }

         public override void ExecuteLine(PackageLineDN pl, PackageDN package)
         {
             OperationLogic.ExecuteLite<T>(pl.Target.ToLite<T>(), OperationKey);
+        }
+
+        protected override PackageDN CreatePackage(object[] args)
+        {
+            PackageDN package = new PackageDN { Operation = EnumLogic<OperationDN>.ToEntity(OperationKey) };
+
+            if (args != null && args.Length > 0)
+                package.Name = args.TryGetArg<string>(0);
+            return package;
         }
     }

@@ -192,13 +193,17 @@
         where T : class, IIdentifiable
         where F : class, IIdentifiable
     {
+        public Enum OperationKey { get; private set; }
+
         public PackageConstructFromAlgorithm(Enum operationKey)
-            : base(operationKey)
-        {
-        }
-
-        public PackageConstructFromAlgorithm(Enum operationKey, Func<List<Lite<F>>> getLazies):base(operationKey, getLazies)
-        {
+        {
+            this.OperationKey = operationKey;
+        }
+
+        public PackageConstructFromAlgorithm(Enum operationKey, Func<List<Lite<F>>> getLazies)
+            : base(getLazies)
+        {
+            this.OperationKey = operationKey;
         }

         public override void ExecuteLine(PackageLineDN pl, PackageDN package)
@@ -209,6 +214,15 @@

             pl.Result = result.ToLite<IIdentifiable>();
         }
+
+        protected override PackageDN CreatePackage(object[] args)
+        {
+            PackageDN package = new PackageDN { Operation = EnumLogic<OperationDN>.ToEntity(OperationKey) };
+
+            if (args != null && args.Length > 0)
+                package.Name = args.TryGetArg<string>(0);
+            return package;
+        }
     }
 }


IMPROVED Version to 1.0.1.

IMPROVED Version to 1.0.1.

--- SmoothOnTop/SmoothOnTop/Properties/AssemblyInfo.cs
+++ SmoothOnTop/SmoothOnTop/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@
 // You can specify all the values or you can default the Build and Revision Numbers
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: AssemblyVersion("1.0.1")]
+[assembly: AssemblyFileVersion("1.0.1")]


DetailsJson to RuleResponse

DetailsJson to RuleResponse

--- SnapMD.VirtualCare.ApiModels/Rules/RuleResponse.cs
+++ SnapMD.VirtualCare.ApiModels/Rules/RuleResponse.cs
@@ -8,6 +8,8 @@
 {
     public class RuleResponse : RuleRequest
     {
+        public string DetailsJson { get; set; }
+
         public int? Version { get; set; }

         public DateTime CreatedDate { get; set; }


Added OscillationDetector3D that encapsulates 3 OscillationDetectorD for vector components.

--- Math/OscillationDetector.cs
+++ Math/OscillationDetector.cs
@@ -185,5 +185,54 @@
 				Math.Abs(s.z) > Threshold;
 		}
 	}
+
+	public class OscillationDetector3D
+	{
+		double threshold;
+		readonly OscillationDetectorD x_OD, y_OD, z_OD;
+
+		public double Threshold
+		{
+			get { return threshold; }
+			set
+			{
+				threshold = value;
+				x_OD.Threshold = threshold;
+				y_OD.Threshold = threshold;
+				z_OD.Threshold = threshold;
+			}
+		}
+
+		public Vector3d Value { get; private set; }
+
+		public OscillationDetector3D(double low_freq, double high_freq, int freq_bins, int time_window, float smoothing, double threshold)
+		{
+			this.threshold = threshold;
+			x_OD = new OscillationDetectorD(low_freq, high_freq, freq_bins, time_window, smoothing, threshold);
+			y_OD = new OscillationDetectorD(low_freq, high_freq, freq_bins, time_window, smoothing, threshold);
+			z_OD = new OscillationDetectorD(low_freq, high_freq, freq_bins, time_window, smoothing, threshold);
+		}
+
+		public Vector3d Update(Vector3d input, double dt)
+		{
+			Value = new Vector3d(x_OD.Update(input.x, dt),
+			             	     y_OD.Update(input.y, dt),
+			                     z_OD.Update(input.z, dt));
+			return Value;
+		}
+
+		public Vector3 Update(Vector3 input, double dt)
+		{ return Update((Vector3d)input, dt); }
+
+		public override string ToString()
+		{
+			return Utils.Format("OscillationDetector3D: Threshold={}, Value={}", Threshold, Value);
+//			return Utils.Format("OscillationDetector3D: Threshold={}, Value={}\n" +
+//			                    "\nx_OD:\n{}" +
+//			                    "\ny_OD:\n{}" +
+//			                    "\nz_OD:\n{}",
+//			                    Threshold, Value, x_OD, y_OD, z_OD);
+		}
+	}
 }


Perform Inspector registration only in debug

--- MatterControlApplication.cs
+++ MatterControlApplication.cs
@@ -110,6 +110,7 @@
 				AggContext.StaticData = new MatterHackers.Agg.FileSystemStaticData();
 			}

+#if DEBUG
 			WindowsFormsAbstract.InspectorCreator = (systemWindow) =>
 			{
 				if (systemWindow == Instance)
@@ -123,6 +124,7 @@
 					return new InspectForm(systemWindow);
 				}
 			};
+#endif
 		}

 		private MatterControlApplication(double width, double height)


ComplexTest now runs for every platform (to test the test correctness)

--- projects/Epicycle.Commons_cs-Test/_System/Numerics/ComplexTest.cs
+++ projects/Epicycle.Commons_cs-Test/_System/Numerics/ComplexTest.cs
@@ -16,8 +16,6 @@
 // For more information check https://github.com/open-epicycle/Epicycle.Commons-cs
 // ]]]]

-#if NET35
-
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -372,5 +370,3 @@
         #endregion
     }
 }
-
-#endif


adding smaller label

adding smaller label

--- MergePDF/IndexController.cs
+++ MergePDF/IndexController.cs
@@ -74,20 +74,38 @@
                 }

                 var urls = JsonConvert.DeserializeObject<string[]>(json);
-                var url = Create4x6(urls.First());
+                var url = CreateLabel(urls.First(), 4, 6, 5, 0.95f);

                 return Response.AsJson(new
                 {
                     url = url
                 });
             };
-        }
-
-        public static string Create4x6(string url)
+
+            Post["/imageTo2point3x4"] = _ =>
+            {
+                string json = null;
+
+                using (var reader = new StreamReader(Request.Body))
+                {
+                    json = reader.ReadToEnd();
+                }
+
+                var urls = JsonConvert.DeserializeObject<string[]>(json);
+                var url = CreateLabel(urls.First(), 2.3125m, 4, -3, 0.90f);
+
+                return Response.AsJson(new
+                {
+                    url = url
+                });
+            };
+        }
+
+        public static string CreateLabel(string url, decimal x, decimal y, float absoluteX, float scale)
         {
             var pdfpath = Path.GetTempFileName();
             Document doc = new Document();
-            doc.SetPageSize(new Rectangle(4 * 72, 6 * 72));
+            doc.SetPageSize(new Rectangle((float)(x * 72), (float)(y * 72)));
             doc.SetMargins(0, 0, 0, 0);
             doc.PageCount = 1;

@@ -103,11 +121,11 @@
                     png.RotationDegrees = 90f;
                 }

-                png.ScalePercent((float)Math.Floor(doc.PageSize.Height / Math.Max(png.Height, png.Width) * 100)* 0.95f);
+                png.ScalePercent((float)Math.Floor(doc.PageSize.Height / Math.Max(png.Height, png.Width) * 100)* scale);

                 //float yOffset = doc.PageSize.Height / 2 + 8;

-                png.SetAbsolutePosition(5f, 0f);
+                png.SetAbsolutePosition(absoluteX, 0f);

                 doc.Add(png);
             }


Migrate module path property

Migrate module path property

--- OpenCover.UI/Model/Module.cs
+++ OpenCover.UI/Model/Module.cs
@@ -34,9 +34,19 @@
 		public bool ShouldSerializeSummary() { return !ShouldSerializeSkippedDueTo(); }

 		/// <summary>
+		/// The full path name to the module.
+		/// Replaced by ModulePath in 4.6.476
+		/// </summary>
+		public string FullName
+		{
+			get { return ModulePath; }
+			set { ModulePath = value; }
+		}
+
+		/// <summary>
 		/// The full path name to the module
 		/// </summary>
-		public string FullName { get; set; }
+		public string ModulePath { get; set; }

 		/// <summary>
 		/// A list of aliases


LIBOMV-358 Fixes minor capitalization deficiency in previous patch :)

git-svn-id: c32cf1ecefca26b8770d7b0740bc0c5c174087e4@2119 c754d5e9-d413-0410-bcdf-9574c9dba6b7

--- OpenMetaverse/EstateTools.cs
+++ OpenMetaverse/EstateTools.cs
@@ -477,7 +477,7 @@
         public void BanUser(UUID userID, bool allEstates)
         {
             List<string> listParams = new List<string>();
-            uint flag = AllEstates ? (uint)EstateAccessDelta.BanUserAllEstates : (uint)EstateAccessDelta.BanUser;
+            uint flag = allEstates ? (uint)EstateAccessDelta.BanUserAllEstates : (uint)EstateAccessDelta.BanUser;
             listParams.Add(Client.Self.AgentID.ToString());
             listParams.Add(flag.ToString());
             listParams.Add(userID.ToString());
@@ -490,7 +490,7 @@
         public void UnbanUser(UUID userID, bool allEstates)
         {
             List<string> listParams = new List<string>();
-            uint flag = AllEstates ? (uint)EstateAccessDelta.UnbanUserAllEstates : (uint)EstateAccessDelta.UnbanUser;
+            uint flag = allEstates ? (uint)EstateAccessDelta.UnbanUserAllEstates : (uint)EstateAccessDelta.UnbanUser;
             listParams.Add(Client.Self.AgentID.ToString());
             listParams.Add(flag.ToString());
             listParams.Add(userID.ToString());


Minor changes.

Minor changes.

--- Source/Main/NProxy.Core/ProxyTypeBuilderFactory.cs
+++ Source/Main/NProxy.Core/ProxyTypeBuilderFactory.cs
@@ -207,7 +207,7 @@
                 throw new ArgumentNullException("parentType");

             var typeId = Interlocked.Increment(ref _nextTypeId);
-            var uniqueTypeName = String.Format("{0}{1}<{2}>d__{3:x}", DynamicDefaultNamespace, Type.Delimiter, typeName, typeId);
+            var uniqueTypeName = String.Format("{0}{1}<{2}>z__{3:x}", DynamicDefaultNamespace, Type.Delimiter, typeName, typeId);

             return _moduleBuilder.DefineType(
                 uniqueTypeName,


Changed data annotation for items.

Changed data annotation for items.

--- Models/SettingsPostModel.cs
+++ Models/SettingsPostModel.cs
@@ -5,7 +5,7 @@
     public class SettingsPostModel
     {
         [Required]
-        [RegularExpression("[0-9]{1,3}")]
+        [Range(1,100)]
         public int Items { get; set; }

         [Required]