From b341bc090833695184276c48dd36cd946791a00c Mon Sep 17 00:00:00 2001 From: BlueWall Date: Thu, 13 Jan 2011 11:39:50 -0500 Subject: [PATCH 001/138] Make FireAndForgetWrapper a singleton class Made FireAndForgetWrapper a singleton class to allow us to drop dependancy on the BclExtras35 library. BclExtras is broken in Mono 2.8.2 and we used the library in only one function. --- OpenSim/Framework/Util.cs | 27 ++++++++++++++++++++++++--- bin/BclExtras35.dll | Bin 153600 -> 0 bytes prebuild.xml | 2 -- 3 files changed, 24 insertions(+), 5 deletions(-) delete mode 100644 bin/BclExtras35.dll diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index 8d1671a885..d1d8736062 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs @@ -46,7 +46,7 @@ using System.Threading; using log4net; using Nini.Config; using Nwc.XmlRpc; -using BclExtras; +// using BclExtras; using OpenMetaverse; using OpenMetaverse.StructuredData; using Amib.Threading; @@ -1375,8 +1375,29 @@ namespace OpenSim.Framework /// /// Created to work around a limitation in Mono with nested delegates /// - private class FireAndForgetWrapper + private sealed class FireAndForgetWrapper { + private static volatile FireAndForgetWrapper instance; + private static object syncRoot = new Object(); + + public static FireAndForgetWrapper Instance { + get { + + if (instance == null) + { + lock (syncRoot) + { + if (instance == null) + { + instance = new FireAndForgetWrapper(); + } + } + } + + return instance; + } + } + public void FireAndForget(System.Threading.WaitCallback callback) { callback.BeginInvoke(null, EndFireAndForget, callback); @@ -1445,7 +1466,7 @@ namespace OpenSim.Framework ThreadPool.QueueUserWorkItem(callback, obj); break; case FireAndForgetMethod.BeginInvoke: - FireAndForgetWrapper wrapper = Singleton.GetInstance(); + FireAndForgetWrapper wrapper = FireAndForgetWrapper.Instance; wrapper.FireAndForget(callback, obj); break; case FireAndForgetMethod.SmartThreadPool: diff --git a/bin/BclExtras35.dll b/bin/BclExtras35.dll deleted file mode 100644 index 7a7480a3a174bb26fadd394ba7b8566d61cda0ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153600 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 - @@ -1597,7 +1596,6 @@ - From b492f1ce99d27bcf29eb5805564c8778aa4df748 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sat, 12 Feb 2011 20:50:24 -0500 Subject: [PATCH 002/138] Fix unsitting of avatar on linked sets --- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index cd70de8440..cb2543f03d 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -472,7 +472,7 @@ namespace OpenSim.Region.Framework.Scenes SceneObjectPart part = m_scene.GetSceneObjectPart(m_parentID); if (part != null) { - return m_parentPosition + (m_pos * part.GetWorldRotation()); + return m_parentPosition + (m_pos * part.RotationOffset); } else { From 0d495ced4c4077ab456119650693c979eeb9d1ea Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 13 Feb 2011 00:29:06 -0500 Subject: [PATCH 003/138] Revert "Fix unsitting of avatar on linked sets" This reverts commit b492f1ce99d27bcf29eb5805564c8778aa4df748. --- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index cb2543f03d..cd70de8440 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -472,7 +472,7 @@ namespace OpenSim.Region.Framework.Scenes SceneObjectPart part = m_scene.GetSceneObjectPart(m_parentID); if (part != null) { - return m_parentPosition + (m_pos * part.RotationOffset); + return m_parentPosition + (m_pos * part.GetWorldRotation()); } else { From 6601771f812a360e6bc949da242878980ac0dd72 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 13 Feb 2011 00:30:43 -0500 Subject: [PATCH 004/138] Set filter to send proper rotations for root part This allows the root prim, alone or in a set, to send it's rotation. This fixes unsitting the avatar on sit-offsest type teleports where the sit target is in the root prim of a linkset. --- OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 6a92378ea7..4d5eedfc95 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -2099,7 +2099,7 @@ namespace OpenSim.Region.Framework.Scenes { Quaternion newRot; - if (this.LinkNum == 0) + if (this.LinkNum == 0 || this.LinkNum == 1) { newRot = RotationOffset; } From 61371c7c16eea3b856a852b94c98b18b99ccf8fb Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Mon, 28 Mar 2011 10:00:53 -0700 Subject: [PATCH 005/138] Implements adaptive queue management and fair queueing for improved networking performance. Reprioritization algorithms need to be ported still. One is in place. --- .../ClientStack/LindenUDP/LLClientView.cs | 359 ++++++++++++------ .../Region/Framework/Scenes/Prioritizer.cs | 71 +++- 2 files changed, 307 insertions(+), 123 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 2c6795fc3e..db149a1d26 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -49,6 +49,8 @@ using Timer = System.Timers.Timer; using AssetLandmark = OpenSim.Framework.AssetLandmark; using Nini.Config; +using System.IO; + namespace OpenSim.Region.ClientStack.LindenUDP { public delegate bool PacketMethod(IClientAPI simClient, Packet packet); @@ -298,6 +300,77 @@ namespace OpenSim.Region.ClientStack.LindenUDP ///

Used to adjust Sun Orbit values so Linden based viewers properly position sun private const float m_sunPainDaHalfOrbitalCutoff = 4.712388980384689858f; + // First log file or time has expired, start writing to a new log file +// +// ----------------------------------------------------------------- +// ----------------------------------------------------------------- +// THIS IS DEBUGGING CODE & SHOULD BE REMOVED +// ----------------------------------------------------------------- +// ----------------------------------------------------------------- + public class QueueLogger + { + public Int32 start = 0; + public StreamWriter Log = null; + private Dictionary m_idMap = new Dictionary(); + + public QueueLogger() + { + DateTime now = DateTime.Now; + String fname = String.Format("queue-{0}.log", now.ToString("yyyyMMddHHmmss")); + Log = new StreamWriter(fname); + + start = Util.EnvironmentTickCount(); + } + + public int LookupID(UUID uuid) + { + int localid; + if (! m_idMap.TryGetValue(uuid,out localid)) + { + localid = m_idMap.Count + 1; + m_idMap[uuid] = localid; + } + + return localid; + } + } + + public static QueueLogger QueueLog = null; + + // ----------------------------------------------------------------- + public void LogAvatarUpdateEvent(UUID client, UUID avatar, Int32 timeinqueue) + { + if (QueueLog == null) + QueueLog = new QueueLogger(); + + Int32 ticks = Util.EnvironmentTickCountSubtract(QueueLog.start); + lock(QueueLog) + { + int cid = QueueLog.LookupID(client); + int aid = QueueLog.LookupID(avatar); + QueueLog.Log.WriteLine("{0},AU,AV{1:D4},AV{2:D4},{3}",ticks,cid,aid,timeinqueue); + } + } + + // ----------------------------------------------------------------- + public void LogQueueProcessEvent(UUID client, PriorityQueue queue, uint maxup) + { + if (QueueLog == null) + QueueLog = new QueueLogger(); + + Int32 ticks = Util.EnvironmentTickCountSubtract(QueueLog.start); + lock(QueueLog) + { + int cid = QueueLog.LookupID(client); + QueueLog.Log.WriteLine("{0},PQ,AV{1:D4},{2},{3}",ticks,cid,maxup,queue.ToString()); + } + } +// ----------------------------------------------------------------- +// ----------------------------------------------------------------- +// ----------------------------------------------------------------- +// ----------------------------------------------------------------- +// + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); protected static Dictionary PacketHandlers = new Dictionary(); //Global/static handlers for all clients @@ -3547,18 +3620,23 @@ namespace OpenSim.Region.ClientStack.LindenUDP #region Primitive Packet/Data Sending Methods + /// /// Generate one of the object update packets based on PrimUpdateFlags /// and broadcast the packet to clients /// public void SendPrimUpdate(ISceneEntity entity, PrimUpdateFlags updateFlags) { - double priority = m_prioritizer.GetUpdatePriority(this, entity); + //double priority = m_prioritizer.GetUpdatePriority(this, entity); + uint priority = m_prioritizer.GetUpdatePriority(this, entity); lock (m_entityUpdates.SyncRoot) - m_entityUpdates.Enqueue(priority, new EntityUpdate(entity, updateFlags, m_scene.TimeDilation), entity.LocalId); + m_entityUpdates.Enqueue(priority, new EntityUpdate(entity, updateFlags, m_scene.TimeDilation)); } + private Int32 m_LastQueueFill = 0; + private uint m_maxUpdates = 0; + private void ProcessEntityUpdates(int maxUpdates) { OpenSim.Framework.Lazy> objectUpdateBlocks = new OpenSim.Framework.Lazy>(); @@ -3566,23 +3644,55 @@ namespace OpenSim.Region.ClientStack.LindenUDP OpenSim.Framework.Lazy> terseUpdateBlocks = new OpenSim.Framework.Lazy>(); OpenSim.Framework.Lazy> terseAgentUpdateBlocks = new OpenSim.Framework.Lazy>(); - if (maxUpdates <= 0) maxUpdates = Int32.MaxValue; + if (maxUpdates <= 0) + { + m_maxUpdates = Int32.MaxValue; + } + else + { + if (m_maxUpdates == 0 || m_LastQueueFill == 0) + { + m_maxUpdates = (uint)maxUpdates; + } + else + { + if (Util.EnvironmentTickCountSubtract(m_LastQueueFill) < 200) + m_maxUpdates += 5; + else + m_maxUpdates = m_maxUpdates >> 1; + } + m_maxUpdates = Util.Clamp(m_maxUpdates,10,500); + } + m_LastQueueFill = Util.EnvironmentTickCount(); + int updatesThisCall = 0; +// +// DEBUGGING CODE... REMOVE +// LogQueueProcessEvent(this.m_agentId,m_entityUpdates,m_maxUpdates); +// // We must lock for both manipulating the kill record and sending the packet, in order to avoid a race // condition where a kill can be processed before an out-of-date update for the same object. lock (m_killRecord) { float avgTimeDilation = 1.0f; EntityUpdate update; - while (updatesThisCall < maxUpdates) + Int32 timeinqueue; // this is just debugging code & can be dropped later + + while (updatesThisCall < m_maxUpdates) { lock (m_entityUpdates.SyncRoot) - if (!m_entityUpdates.TryDequeue(out update)) + if (!m_entityUpdates.TryDequeue(out update, out timeinqueue)) break; avgTimeDilation += update.TimeDilation; avgTimeDilation *= 0.5f; +// +// DEBUGGING CODE... REMOVE +// if (update.Entity is ScenePresence) +// LogAvatarUpdateEvent(this.m_agentId,update.Entity.UUID,timeinqueue); +// + if (update.Entity is SceneObjectPart) { SceneObjectPart part = (SceneObjectPart)update.Entity; @@ -3679,36 +3789,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else { - // if (update.Entity is SceneObjectPart && ((SceneObjectPart)update.Entity).IsAttachment) - // { - // SceneObjectPart sop = (SceneObjectPart)update.Entity; - // string text = sop.Text; - // if (text.IndexOf("\n") >= 0) - // text = text.Remove(text.IndexOf("\n")); - // - // if (m_attachmentsSent.Contains(sop.ParentID)) - // { - //// m_log.DebugFormat( - //// "[CLIENT]: Sending full info about attached prim {0} text {1}", - //// sop.LocalId, text); - // - // objectUpdateBlocks.Value.Add(CreatePrimUpdateBlock(sop, this.m_agentId)); - // - // m_attachmentsSent.Add(sop.LocalId); - // } - // else - // { - // m_log.DebugFormat( - // "[CLIENT]: Requeueing full update of prim {0} text {1} since we haven't sent its parent {2} yet", - // sop.LocalId, text, sop.ParentID); - // - // m_entityUpdates.Enqueue(double.MaxValue, update, sop.LocalId); - // } - // } - // else - // { - objectUpdateBlocks.Value.Add(CreatePrimUpdateBlock((SceneObjectPart)update.Entity, this.m_agentId)); - // } + objectUpdateBlocks.Value.Add(CreatePrimUpdateBlock((SceneObjectPart)update.Entity, this.m_agentId)); } } else if (!canUseImproved) @@ -3802,26 +3883,24 @@ namespace OpenSim.Region.ClientStack.LindenUDP public void ReprioritizeUpdates() { - //m_log.Debug("[CLIENT]: Reprioritizing prim updates for " + m_firstName + " " + m_lastName); - lock (m_entityUpdates.SyncRoot) m_entityUpdates.Reprioritize(UpdatePriorityHandler); } - private bool UpdatePriorityHandler(ref double priority, uint localID) + private bool UpdatePriorityHandler(ref uint priority, ISceneEntity entity) { - EntityBase entity; - if (m_scene.Entities.TryGetValue(localID, out entity)) + if (entity != null) { priority = m_prioritizer.GetUpdatePriority(this, entity); + return true; } - return priority != double.NaN; + return false; } public void FlushPrimUpdates() { - m_log.Debug("[CLIENT]: Flushing prim updates to " + m_firstName + " " + m_lastName); + m_log.WarnFormat("[CLIENT]: Flushing prim updates to " + m_firstName + " " + m_lastName); while (m_entityUpdates.Count > 0) ProcessEntityUpdates(-1); @@ -11704,86 +11783,85 @@ namespace OpenSim.Region.ClientStack.LindenUDP #region PriorityQueue public class PriorityQueue { - internal delegate bool UpdatePriorityHandler(ref double priority, uint local_id); + internal delegate bool UpdatePriorityHandler(ref uint priority, ISceneEntity entity); - private MinHeap[] m_heaps = new MinHeap[1]; + // Heap[0] for self updates + // Heap[1..12] for entity updates + + internal const uint m_numberOfQueues = 12; + private MinHeap[] m_heaps = new MinHeap[m_numberOfQueues]; private Dictionary m_lookupTable; - private Comparison m_comparison; private object m_syncRoot = new object(); - + private uint m_nextQueue = 0; + private UInt64 m_nextRequest = 0; + internal PriorityQueue() : - this(MinHeap.DEFAULT_CAPACITY, Comparer.Default) { } - internal PriorityQueue(int capacity) : - this(capacity, Comparer.Default) { } - internal PriorityQueue(IComparer comparer) : - this(new Comparison(comparer.Compare)) { } - internal PriorityQueue(Comparison comparison) : - this(MinHeap.DEFAULT_CAPACITY, comparison) { } - internal PriorityQueue(int capacity, IComparer comparer) : - this(capacity, new Comparison(comparer.Compare)) { } - internal PriorityQueue(int capacity, Comparison comparison) + this(MinHeap.DEFAULT_CAPACITY) { } + internal PriorityQueue(int capacity) { m_lookupTable = new Dictionary(capacity); for (int i = 0; i < m_heaps.Length; ++i) m_heaps[i] = new MinHeap(capacity); - this.m_comparison = comparison; } public object SyncRoot { get { return this.m_syncRoot; } } + internal int Count { get { int count = 0; for (int i = 0; i < m_heaps.Length; ++i) - count = m_heaps[i].Count; + count += m_heaps[i].Count; return count; } } - public bool Enqueue(double priority, EntityUpdate value, uint local_id) + public bool Enqueue(uint pqueue, EntityUpdate value) { - LookupItem item; + LookupItem lookup; - if (m_lookupTable.TryGetValue(local_id, out item)) + uint localid = value.Entity.LocalId; + UInt64 entry = m_nextRequest++; + if (m_lookupTable.TryGetValue(localid, out lookup)) { - // Combine flags - value.Flags |= item.Heap[item.Handle].Value.Flags; + entry = lookup.Heap[lookup.Handle].EntryOrder; + value.Flags |= lookup.Heap[lookup.Handle].Value.Flags; + lookup.Heap.Remove(lookup.Handle); + } - item.Heap[item.Handle] = new MinHeapItem(priority, value, local_id, this.m_comparison); - return false; - } - else - { - item.Heap = m_heaps[0]; - item.Heap.Add(new MinHeapItem(priority, value, local_id, this.m_comparison), ref item.Handle); - m_lookupTable.Add(local_id, item); - return true; - } + pqueue = Util.Clamp(pqueue, 0, m_numberOfQueues - 1); + lookup.Heap = m_heaps[pqueue]; + lookup.Heap.Add(new MinHeapItem(pqueue, entry, value), ref lookup.Handle); + m_lookupTable[localid] = lookup; + + return true; } - internal EntityUpdate Peek() + internal bool TryDequeue(out EntityUpdate value, out Int32 timeinqueue) { - for (int i = 0; i < m_heaps.Length; ++i) - if (m_heaps[i].Count > 0) - return m_heaps[i].Min().Value; - throw new InvalidOperationException(string.Format("The {0} is empty", this.GetType().ToString())); - } - - internal bool TryDequeue(out EntityUpdate value) - { - for (int i = 0; i < m_heaps.Length; ++i) + for (int i = 0; i < m_numberOfQueues; ++i) { - if (m_heaps[i].Count > 0) + // To get the fair queing, we cycle through each of the + // queues when finding an element to dequeue, this code + // assumes that the distribution of updates in the queues + // is polynomial, probably quadractic (eg distance of PI * R^2) + uint h = (uint)((m_nextQueue + i) % m_numberOfQueues); + if (m_heaps[h].Count > 0) { - MinHeapItem item = m_heaps[i].RemoveMin(); - m_lookupTable.Remove(item.LocalID); + m_nextQueue = (uint)((h + 1) % m_numberOfQueues); + + MinHeapItem item = m_heaps[h].RemoveMin(); + m_lookupTable.Remove(item.Value.Entity.LocalId); + timeinqueue = Util.EnvironmentTickCountSubtract(item.EntryTime); value = item.Value; + return true; } } + timeinqueue = 0; value = default(EntityUpdate); return false; } @@ -11791,68 +11869,107 @@ namespace OpenSim.Region.ClientStack.LindenUDP internal void Reprioritize(UpdatePriorityHandler handler) { MinHeapItem item; - double priority; - foreach (LookupItem lookup in new List(this.m_lookupTable.Values)) { if (lookup.Heap.TryGetValue(lookup.Handle, out item)) { - priority = item.Priority; - if (handler(ref priority, item.LocalID)) + uint pqueue = item.PriorityQueue; + uint localid = item.Value.Entity.LocalId; + + if (handler(ref pqueue, item.Value.Entity)) { - if (lookup.Heap.ContainsHandle(lookup.Handle)) - lookup.Heap[lookup.Handle] = - new MinHeapItem(priority, item.Value, item.LocalID, this.m_comparison); + // unless the priority queue has changed, there is no need to modify + // the entry + pqueue = Util.Clamp(pqueue, 0, m_numberOfQueues - 1); + if (pqueue != item.PriorityQueue) + { + lookup.Heap.Remove(lookup.Handle); + + LookupItem litem = lookup; + litem.Heap = m_heaps[pqueue]; + litem.Heap.Add(new MinHeapItem(pqueue, item), ref litem.Handle); + m_lookupTable[localid] = litem; + } } else { - m_log.Warn("[LLCLIENTVIEW]: UpdatePriorityHandler returned false, dropping update"); + m_log.WarnFormat("[LLCLIENTVIEW]: UpdatePriorityHandler returned false for {0}",item.Value.Entity.UUID); lookup.Heap.Remove(lookup.Handle); - this.m_lookupTable.Remove(item.LocalID); + this.m_lookupTable.Remove(localid); } } } } + public override string ToString() + { + string s = ""; + for (int i = 0; i < m_numberOfQueues; i++) + { + if (s != "") s += ","; + s += m_heaps[i].Count.ToString(); + } + return s; + } + #region MinHeapItem private struct MinHeapItem : IComparable { - private double priority; private EntityUpdate value; - private uint local_id; - private Comparison comparison; - - internal MinHeapItem(double priority, EntityUpdate value, uint local_id) : - this(priority, value, local_id, Comparer.Default) { } - internal MinHeapItem(double priority, EntityUpdate value, uint local_id, IComparer comparer) : - this(priority, value, local_id, new Comparison(comparer.Compare)) { } - internal MinHeapItem(double priority, EntityUpdate value, uint local_id, Comparison comparison) - { - this.priority = priority; - this.value = value; - this.local_id = local_id; - this.comparison = comparison; + internal EntityUpdate Value { + get { + return this.value; + } } - internal double Priority { get { return this.priority; } } - internal EntityUpdate Value { get { return this.value; } } - internal uint LocalID { get { return this.local_id; } } + private uint pqueue; + internal uint PriorityQueue { + get { + return this.pqueue; + } + } + + private Int32 entrytime; + internal Int32 EntryTime { + get { + return this.entrytime; + } + } + + private UInt64 entryorder; + internal UInt64 EntryOrder + { + get { + return this.entryorder; + } + } + + internal MinHeapItem(uint pqueue, MinHeapItem other) + { + this.entrytime = other.entrytime; + this.entryorder = other.entryorder; + this.value = other.value; + this.pqueue = pqueue; + } + + internal MinHeapItem(uint pqueue, UInt64 entryorder, EntityUpdate value) + { + this.entrytime = Util.EnvironmentTickCount(); + this.entryorder = entryorder; + this.value = value; + this.pqueue = pqueue; + } public override string ToString() { - StringBuilder sb = new StringBuilder(); - sb.Append("["); - sb.Append(this.priority.ToString()); - sb.Append(","); - if (this.value != null) - sb.Append(this.value.ToString()); - sb.Append("]"); - return sb.ToString(); + return String.Format("[{0},{1},{2}]",pqueue,entryorder,value.Entity.LocalId); } public int CompareTo(MinHeapItem other) { - return this.comparison(this.priority, other.priority); + // I'm assuming that the root part of an SOG is added to the update queue + // before the component parts + return Comparer.Default.Compare(this.EntryOrder, other.EntryOrder); } } #endregion diff --git a/OpenSim/Region/Framework/Scenes/Prioritizer.cs b/OpenSim/Region/Framework/Scenes/Prioritizer.cs index f9599f5a96..2764b05f1a 100644 --- a/OpenSim/Region/Framework/Scenes/Prioritizer.cs +++ b/OpenSim/Region/Framework/Scenes/Prioritizer.cs @@ -58,7 +58,7 @@ namespace OpenSim.Region.Framework.Scenes public class Prioritizer { -// private static readonly ILog m_log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + private static readonly ILog m_log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); /// /// This is added to the priority of all child prims, to make sure that the root prim update is sent to the @@ -76,7 +76,74 @@ namespace OpenSim.Region.Framework.Scenes m_scene = scene; } - public double GetUpdatePriority(IClientAPI client, ISceneEntity entity) +// + public uint GetUpdatePriority(IClientAPI client, ISceneEntity entity) + { + if (entity == null) + { + m_log.WarnFormat("[PRIORITIZER] attempt to prioritize null entity"); + throw new InvalidOperationException("Prioritization entity not defined"); + } + + // If this is an update for our own avatar give it the highest priority + if (client.AgentId == entity.UUID) + return 0; + + // Get this agent's position + ScenePresence presence = m_scene.GetScenePresence(client.AgentId); + if (presence == null) + { + m_log.WarnFormat("[PRIORITIZER] attempt to prioritize agent no longer in the scene"); + throw new InvalidOperationException("Prioritization agent not defined"); + } + + // Use group position for child prims + Vector3 entityPos = entity.AbsolutePosition; + if (entity is SceneObjectPart) + { + SceneObjectGroup group = (entity as SceneObjectPart).ParentGroup; + if (group != null) + entityPos = group.AbsolutePosition; + } + + // Use the camera position for local agents and avatar position for remote agents + Vector3 presencePos = (presence.IsChildAgent) ? + presence.AbsolutePosition : + presence.CameraPosition; + + // Compute the distance... + double distance = Vector3.Distance(presencePos, entityPos); + + // And convert the distance to a priority queue, this computation gives queues + // at 10, 20, 40, 80, 160, 320, 640, and 1280m + uint pqueue = 1; + for (int i = 0; i < 8; i++) + { + if (distance < 10 * Math.Pow(2.0,i)) + break; + pqueue++; + } + + // If this is a root agent, then determine front & back + // Bump up the priority queue for any objects behind the avatar + if (! presence.IsChildAgent) + { + // Root agent, decrease priority for objects behind us + Vector3 camPosition = presence.CameraPosition; + Vector3 camAtAxis = presence.CameraAtAxis; + + // Plane equation + float d = -Vector3.Dot(camPosition, camAtAxis); + float p = Vector3.Dot(camAtAxis, entityPos) + d; + if (p < 0.0f) + pqueue++; + } + + return pqueue; + } +// + + public double bGetUpdatePriority(IClientAPI client, ISceneEntity entity) { double priority = 0; From 8022400bd4c852c3faf0db61006a2c60f5200342 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 31 Mar 2011 22:16:09 +0100 Subject: [PATCH 006/138] Remove unused Datastore parameter from RegionInfo (legacy from early 2008) --- OpenSim/Framework/RegionInfo.cs | 11 ----------- OpenSim/Region/Framework/Scenes/Scene.cs | 1 - OpenSim/Region/Framework/Scenes/SceneBase.cs | 2 -- 3 files changed, 14 deletions(-) diff --git a/OpenSim/Framework/RegionInfo.cs b/OpenSim/Framework/RegionInfo.cs index 680e702a11..afedcf5d09 100644 --- a/OpenSim/Framework/RegionInfo.cs +++ b/OpenSim/Framework/RegionInfo.cs @@ -347,7 +347,6 @@ namespace OpenSim.Framework public bool commFailTF = false; public ConfigurationMember configMember; - public string DataStore = String.Empty; public string RegionFile = String.Empty; public bool isSandbox = false; public bool Persistent = true; @@ -746,10 +745,6 @@ namespace OpenSim.Framework m_regionLocX = Convert.ToUInt32(locationElements[0]); m_regionLocY = Convert.ToUInt32(locationElements[1]); - - // Datastore (is this implemented? Omitted from example!) - DataStore = config.GetString("Datastore", String.Empty); - // Internal IP IPAddress address; @@ -846,9 +841,6 @@ namespace OpenSim.Framework string location = String.Format("{0},{1}", m_regionLocX, m_regionLocY); config.Set("Location", location); - if (DataStore != String.Empty) - config.Set("Datastore", DataStore); - config.Set("InternalAddress", m_internalEndPoint.Address.ToString()); config.Set("InternalPort", m_internalEndPoint.Port); @@ -1025,9 +1017,6 @@ namespace OpenSim.Framework case "sim_location_y": m_regionLocY = (uint) configuration_result; break; - case "datastore": - DataStore = (string) configuration_result; - break; case "internal_ip_address": IPAddress address = (IPAddress) configuration_result; m_internalEndPoint = new IPEndPoint(address, 0); diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index d407a6f033..353b7c2e44 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -563,7 +563,6 @@ namespace OpenSim.Region.Framework.Scenes m_regInfo = regInfo; m_regionHandle = m_regInfo.RegionHandle; m_regionName = m_regInfo.RegionName; - m_datastore = m_regInfo.DataStore; m_lastUpdate = Util.EnvironmentTickCount(); m_physicalPrim = physicalPrim; diff --git a/OpenSim/Region/Framework/Scenes/SceneBase.cs b/OpenSim/Region/Framework/Scenes/SceneBase.cs index f343bc861e..c4547f2b46 100644 --- a/OpenSim/Region/Framework/Scenes/SceneBase.cs +++ b/OpenSim/Region/Framework/Scenes/SceneBase.cs @@ -136,8 +136,6 @@ namespace OpenSim.Region.Framework.Scenes get { return m_permissions; } } - protected string m_datastore; - /* Used by the loadbalancer plugin on GForge */ protected RegionStatus m_regStatus; public RegionStatus RegionStatus From 7bba31e8d943f03e2ea54317703e1bd9e243b70b Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 31 Mar 2011 22:20:12 +0100 Subject: [PATCH 007/138] remove some mono compiler warnings --- OpenSim/Data/MSSQL/MSSQLAvatarData.cs | 2 +- OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs | 4 ++-- OpenSim/Data/MSSQL/MSSQLGridUserData.cs | 2 +- OpenSim/Data/MSSQL/MSSQLManager.cs | 4 +--- OpenSim/Data/MSSQL/MSSQLPresenceData.cs | 2 +- OpenSim/Data/MSSQL/MSSQLXInventoryData.cs | 4 ++-- 6 files changed, 8 insertions(+), 10 deletions(-) diff --git a/OpenSim/Data/MSSQL/MSSQLAvatarData.cs b/OpenSim/Data/MSSQL/MSSQLAvatarData.cs index 49a6b09f76..301b42490a 100644 --- a/OpenSim/Data/MSSQL/MSSQLAvatarData.cs +++ b/OpenSim/Data/MSSQL/MSSQLAvatarData.cs @@ -43,7 +43,7 @@ namespace OpenSim.Data.MSSQL public class MSSQLAvatarData : MSSQLGenericTableHandler, IAvatarData { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); +// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); public MSSQLAvatarData(string connectionString, string realm) : base(connectionString, realm, "Avatar") diff --git a/OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs b/OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs index 904366e995..6a5d6eb58a 100644 --- a/OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs +++ b/OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs @@ -40,8 +40,8 @@ namespace OpenSim.Data.MSSQL { public class MSSQLGenericTableHandler where T : class, new() { - private static readonly ILog m_log = - LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); +// private static readonly ILog m_log = +// LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); protected string m_ConnectionString; protected MSSQLManager m_database; //used for parameter type translation diff --git a/OpenSim/Data/MSSQL/MSSQLGridUserData.cs b/OpenSim/Data/MSSQL/MSSQLGridUserData.cs index 1870273616..9e215f9fb2 100644 --- a/OpenSim/Data/MSSQL/MSSQLGridUserData.cs +++ b/OpenSim/Data/MSSQL/MSSQLGridUserData.cs @@ -43,7 +43,7 @@ namespace OpenSim.Data.MSSQL public class MSSQLGridUserData : MSSQLGenericTableHandler, IGridUserData { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); +// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); public MSSQLGridUserData(string connectionString, string realm) : base(connectionString, realm, "GridUserStore") diff --git a/OpenSim/Data/MSSQL/MSSQLManager.cs b/OpenSim/Data/MSSQL/MSSQLManager.cs index 575fd210c1..cf963e3f07 100644 --- a/OpenSim/Data/MSSQL/MSSQLManager.cs +++ b/OpenSim/Data/MSSQL/MSSQLManager.cs @@ -41,7 +41,7 @@ namespace OpenSim.Data.MSSQL /// public class MSSQLManager { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); +// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); /// /// Connection string for ADO.net @@ -180,8 +180,6 @@ namespace OpenSim.Data.MSSQL return parameter; } - private static readonly Dictionary emptyDictionary = new Dictionary(); - /// /// Checks if we need to do some migrations to the database /// diff --git a/OpenSim/Data/MSSQL/MSSQLPresenceData.cs b/OpenSim/Data/MSSQL/MSSQLPresenceData.cs index e7b3d9c367..8068d23bb1 100644 --- a/OpenSim/Data/MSSQL/MSSQLPresenceData.cs +++ b/OpenSim/Data/MSSQL/MSSQLPresenceData.cs @@ -43,7 +43,7 @@ namespace OpenSim.Data.MSSQL public class MSSQLPresenceData : MSSQLGenericTableHandler, IPresenceData { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); +// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); public MSSQLPresenceData(string connectionString, string realm) : base(connectionString, realm, "Presence") diff --git a/OpenSim/Data/MSSQL/MSSQLXInventoryData.cs b/OpenSim/Data/MSSQL/MSSQLXInventoryData.cs index 739eb55ad4..5bc4fe41e5 100644 --- a/OpenSim/Data/MSSQL/MSSQLXInventoryData.cs +++ b/OpenSim/Data/MSSQL/MSSQLXInventoryData.cs @@ -40,8 +40,8 @@ namespace OpenSim.Data.MSSQL { public class MSSQLXInventoryData : IXInventoryData { - private static readonly ILog m_log = LogManager.GetLogger( - MethodBase.GetCurrentMethod().DeclaringType); +// private static readonly ILog m_log = LogManager.GetLogger( +// MethodBase.GetCurrentMethod().DeclaringType); private MSSQLGenericTableHandler m_Folders; private MSSQLItemHandler m_Items; From efd0c003a3baf3c8d1abd1bab422ae5bb015ab87 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 31 Mar 2011 22:47:18 +0100 Subject: [PATCH 008/138] Put in temporary logging message to find out if scene objects are requesting land objects for co-ordinates outside the region --- .../CoreModules/World/Land/LandManagementModule.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index 52e3718bc7..fac25741c6 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs @@ -762,13 +762,14 @@ namespace OpenSim.Region.CoreModules.World.Land { try { - //if (m_landList.ContainsKey(m_landIDList[x / 4, y / 4])) - return m_landList[m_landIDList[x / 4, y / 4]]; - //else - // return null; + return m_landList[m_landIDList[x / 4, y / 4]]; } catch (IndexOutOfRangeException) { + m_log.WarnFormat( + "[LAND MANAGEMENT MODULE]: Tried to retrieve land object from out of bounds co-ordinate ({0},{1}) in {2}", + x, y, m_scene.RegionInfo.RegionName); + return null; } } From 88bd38690a56f5e381f8038b971950c9f5842c51 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 31 Mar 2011 23:03:42 +0100 Subject: [PATCH 009/138] Remove unused RegionInfo.getInternalEndPointPort() in favour of RegionInfo.InternalEndPoint.Port --- OpenSim/Framework/RegionInfo.cs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/OpenSim/Framework/RegionInfo.cs b/OpenSim/Framework/RegionInfo.cs index afedcf5d09..daf0a256d6 100644 --- a/OpenSim/Framework/RegionInfo.cs +++ b/OpenSim/Framework/RegionInfo.cs @@ -1164,11 +1164,6 @@ namespace OpenSim.Framework return regionInfo; } - public int getInternalEndPointPort() - { - return m_internalEndPoint.Port; - } - public Dictionary ToKeyValuePairs() { Dictionary kvp = new Dictionary(); @@ -1187,4 +1182,4 @@ namespace OpenSim.Framework return kvp; } } -} +} \ No newline at end of file From 6ae76ede98c3fa7731daf7149a8831f474770fee Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 31 Mar 2011 23:09:06 +0100 Subject: [PATCH 010/138] suspend check that IAR control file is loaded for now I was mistaken - some previous opensim versions don't save this file first. Will have to bump iar version number and only check iars after the bump --- .../Inventory/Archiver/InventoryArchiveReadRequest.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index 9b98de3b67..01170aaf65 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs @@ -77,7 +77,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver /// private Stream m_loadStream; - protected bool m_controlFileLoaded; + /// + /// FIXME: Do not perform this check since older versions of OpenSim do save the control file after other things + /// (I thought they weren't). We will need to bump the version number and perform this check on all + /// subsequent IAR versions only + /// + protected bool m_controlFileLoaded = true; protected bool m_assetsLoaded; protected bool m_inventoryNodesLoaded; From 4d0cffa06e1c4071d137834e1d5c2cd06c933441 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 31 Mar 2011 23:56:26 +0100 Subject: [PATCH 011/138] If the prim count gets an object with invalid bounds, don't try to count it. This appears to be the more probable explanation for some failures seen. Either we're counting attachments which are temporarily out of bounds (shouldn't be due to the IsAttachment) check or we're counting scene objects which have out of bounds co-ordinates (seems more likely) --- .../Region/CoreModules/World/Land/LandManagementModule.cs | 6 +++--- OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index fac25741c6..2b5f7a037a 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs @@ -766,9 +766,9 @@ namespace OpenSim.Region.CoreModules.World.Land } catch (IndexOutOfRangeException) { - m_log.WarnFormat( - "[LAND MANAGEMENT MODULE]: Tried to retrieve land object from out of bounds co-ordinate ({0},{1}) in {2}", - x, y, m_scene.RegionInfo.RegionName); +// m_log.WarnFormat( +// "[LAND MANAGEMENT MODULE]: Tried to retrieve land object from out of bounds co-ordinate ({0},{1}) in {2}", +// x, y, m_scene.RegionInfo.RegionName); return null; } diff --git a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs index d1e2328728..f07ae31e1c 100644 --- a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs @@ -183,6 +183,11 @@ namespace OpenSim.Region.CoreModules.World.Land Vector3 pos = obj.AbsolutePosition; ILandObject landObject = m_Scene.LandChannel.GetLandObject(pos.X, pos.Y); + + // If for some reason there is no land object (perhaps the object is out of bounds) then we can't count it + if (landObject == null) + return; + LandData landData = landObject.LandData; // m_log.DebugFormat( From 39c610c16554de05dae975cb9258881dce1d17ed Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 1 Apr 2011 00:41:52 +0100 Subject: [PATCH 012/138] Log which address and port the UDP listener is configured for. This will match that given for InternalAddress in the config (e.g. 0.0.0.0) Can't obtain actually bound address until the UDP socket is used for the first time. --- OpenSim/Region/ClientStack/LindenUDP/OpenSimUDPBase.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/OpenSim/Region/ClientStack/LindenUDP/OpenSimUDPBase.cs b/OpenSim/Region/ClientStack/LindenUDP/OpenSimUDPBase.cs index d2779ba302..6eebd9df3a 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/OpenSimUDPBase.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/OpenSimUDPBase.cs @@ -100,6 +100,10 @@ namespace OpenMetaverse const int SIO_UDP_CONNRESET = -1744830452; IPEndPoint ipep = new IPEndPoint(m_localBindAddress, m_udpPort); + + m_log.DebugFormat( + "[UDPBASE]: Binding UDP listener using internal IP address config {0}:{1}", + ipep.Address, ipep.Port); m_udpSocket = new Socket( AddressFamily.InterNetwork, From e1ceb461c0e37cfe56fdfeb91a9ac4b4aa54b931 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 1 Apr 2011 00:51:10 +0100 Subject: [PATCH 013/138] Make default answer for 'do you wish to join region to an existing estate' yes instead of no. --- OpenSim/Region/Application/OpenSimBase.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 640581181c..f98d70283a 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -860,7 +860,7 @@ namespace OpenSim = MainConsole.Instance.CmdPrompt( string.Format( "Do you wish to join region {0} to an existing estate (yes/no)?", regInfo.RegionName), - "no", + "yes", new List() { "yes", "no" }); if (response == "no") From 8f4bf435344af76d7ff6436ec74eab92399c3a99 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 1 Apr 2011 00:55:05 +0100 Subject: [PATCH 014/138] When asked to join region to existing estate, make first estate name the default instead of None --- OpenSim/Region/Application/OpenSimBase.cs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index f98d70283a..ea9edf686b 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -876,15 +876,12 @@ namespace OpenSim = MainConsole.Instance.CmdPrompt( string.Format( "Name of estate to join. Existing estate names are ({0})", string.Join(", ", estateNames.ToArray())), - "None"); - - if (response == "None") - continue; + estateNames[0]); List estateIDs = EstateDataService.GetEstates(response); if (estateIDs.Count < 1) { - MainConsole.Instance.Output("The name you have entered matches no known estate. Please try again."); + MainConsole.Instance.Output("The name you have entered matches no known estate. Please try again."); continue; } From 8c8a0a182e28f3486ce89fc0570b56fe53f69934 Mon Sep 17 00:00:00 2001 From: dahlia Date: Thu, 31 Mar 2011 21:14:53 -0700 Subject: [PATCH 015/138] implement LSL "print()" API function --- .../ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 8 +++++++- .../Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs | 1 + .../Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs | 5 +++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 72ee495906..e3e16bd4e2 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -81,7 +81,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api /// public class LSL_Api : MarshalByRefObject, ILSL_Api, IScriptApi { - //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); protected IScriptEngine m_ScriptEngine; protected SceneObjectPart m_host; protected uint m_localID; @@ -10278,6 +10278,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return GetLinkPrimitiveParams(obj, rules); } + + public void print(string str) + { + // yes, this is a real LSL function. See: http://wiki.secondlife.com/wiki/Print + m_log.Info("LSL print():" + str); + } } public class NotecardCache diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs index 561e3b3213..bd6a094aa7 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs @@ -398,6 +398,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces LSL_Vector llWind(LSL_Vector offset); LSL_String llXorBase64Strings(string str1, string str2); LSL_String llXorBase64StringsCorrect(string str1, string str2); + void print(string str); void SetPrimitiveParamsEx(LSL_Key prim, LSL_List rules); LSL_List GetLinkPrimitiveParamsEx(LSL_Key prim, LSL_List rules); diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs index 451163fe99..3b298615d0 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs @@ -1847,5 +1847,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase { return m_LSL_Functions.llClearPrimMedia(face); } + + public void print(string str) + { + m_LSL_Functions.print(str); + } } } From e974fde95313e17c239e4e35487da897f725a904 Mon Sep 17 00:00:00 2001 From: dahlia Date: Thu, 31 Mar 2011 22:56:04 -0700 Subject: [PATCH 016/138] check threat configuration for LSL print() --- .../ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index e3e16bd4e2..43b0da320e 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -10282,7 +10282,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api public void print(string str) { // yes, this is a real LSL function. See: http://wiki.secondlife.com/wiki/Print - m_log.Info("LSL print():" + str); + IOSSL_Api ossl = (IOSSL_Api)m_ScriptEngine.GetApi(m_itemID, "OSSL"); + if (ossl != null) + { + ossl.CheckThreatLevel(ThreatLevel.High, "print"); + m_log.Info("LSL print():" + str); + } } } From 3a113f9902b859d11c200f9b0db06c2317eb53cc Mon Sep 17 00:00:00 2001 From: Melanie Date: Fri, 1 Apr 2011 22:04:29 +0100 Subject: [PATCH 017/138] A stab at making CHANGED_OWNER work --- .../InventoryAccess/InventoryAccessModule.cs | 24 ++++++------------- .../Scenes/SceneObjectPartInventory.cs | 10 ++++---- 2 files changed, 12 insertions(+), 22 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 798547a82d..8d0c35a746 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -668,28 +668,18 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess if ((item.Flags & (uint)InventoryItemFlags.ObjectOverwriteGroup) != 0) part.GroupMask = item.GroupPermissions; } + + foreach (SceneObjectPart part in group.Parts) + { + part.LastOwnerID = part.OwnerID; + part.OwnerID = item.Owner; + part.Inventory.ChangeInventoryOwner(item.Owner); + } group.ApplyNextOwnerPermissions(); } } - foreach (SceneObjectPart part in group.Parts) - { - if ((part.OwnerID != item.Owner) || (item.CurrentPermissions & 16) != 0) - { - part.LastOwnerID = part.OwnerID; - part.OwnerID = item.Owner; - part.Inventory.ChangeInventoryOwner(item.Owner); - part.GroupMask = 0; // DO NOT propagate here - } - if ((item.Flags & (uint)InventoryItemFlags.ObjectOverwriteEveryone) != 0) - part.EveryoneMask = item.EveryOnePermissions; - if ((item.Flags & (uint)InventoryItemFlags.ObjectOverwriteNextOwner) != 0) - part.NextOwnerMask = item.NextPermissions; - if ((item.Flags & (uint)InventoryItemFlags.ObjectOverwriteGroup) != 0) - part.GroupMask = item.GroupPermissions; - } - rootPart.TrimPermissions(); if (!attachment) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index fa404c01bd..3281eabd33 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs @@ -175,12 +175,12 @@ namespace OpenSim.Region.Framework.Scenes foreach (TaskInventoryItem item in items) { if (ownerId != item.OwnerID) - { item.LastOwnerID = item.OwnerID; - item.OwnerID = ownerId; - item.PermsMask = 0; - item.PermsGranter = UUID.Zero; - } + + item.OwnerID = ownerId; + item.PermsMask = 0; + item.PermsGranter = UUID.Zero; + item.OwnerChanged = true; } } From 5b0936d4b52a972af4f9efa2e69c938e334ad3c7 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 2 Apr 2011 01:07:52 +0100 Subject: [PATCH 018/138] If the land has no group ownership (it is UUID.Zero) then don't put prims in the group count when they are also not group owned. Also adds simple test for others owned count when an object is added --- .../CoreModules/World/Land/PrimCountModule.cs | 4 ++-- .../World/Land/Tests/PrimCountModuleTests.cs | 21 +++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs index f07ae31e1c..992cd72787 100644 --- a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs @@ -210,7 +210,7 @@ namespace OpenSim.Region.CoreModules.World.Land { if (obj.OwnerID == landData.GroupID) parcelCounts.Owner += partCount; - else if (obj.GroupID == landData.GroupID) + else if (landData.GroupID != UUID.Zero && obj.GroupID == landData.GroupID) parcelCounts.Group += partCount; else parcelCounts.Others += partCount; @@ -219,7 +219,7 @@ namespace OpenSim.Region.CoreModules.World.Land { if (obj.OwnerID == landData.OwnerID) parcelCounts.Owner += partCount; - else if (obj.GroupID == landData.GroupID) + else if (landData.GroupID != UUID.Zero && obj.GroupID == landData.GroupID) parcelCounts.Group += partCount; else parcelCounts.Others += partCount; diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs index 5a60f22a48..521effcf47 100644 --- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs @@ -161,6 +161,27 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pc.Simulator, Is.EqualTo(1)); } + [Test] + public void TestAddOthersObject() + { + TestHelper.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + IPrimCounts pc = m_lo.PrimCounts; + + SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_dummyUserId, 0x01); + m_scene.AddNewSceneObject(sog, false); + + Assert.That(pc.Owner, Is.EqualTo(0)); + Assert.That(pc.Group, Is.EqualTo(0)); + Assert.That(pc.Others, Is.EqualTo(3)); + Assert.That(pc.Total, Is.EqualTo(3)); + Assert.That(pc.Selected, Is.EqualTo(0)); + Assert.That(pc.Users[m_userId], Is.EqualTo(0)); + Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(3)); + Assert.That(pc.Simulator, Is.EqualTo(3)); + } + /// /// Test the count is correct after is has been tainted. /// From 2c86f6ba7ddcf4816618db5b19a8ca111a8425b5 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 2 Apr 2011 01:13:10 +0100 Subject: [PATCH 019/138] refactor: rename m_dummyUserId to m_otherUserId --- .../World/Land/Tests/PrimCountModuleTests.cs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs index 521effcf47..49ad705969 100644 --- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs @@ -45,7 +45,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests public class PrimCountModuleTests { protected UUID m_userId = new UUID("00000000-0000-0000-0000-100000000000"); - protected UUID m_dummyUserId = new UUID("99999999-9999-9999-9999-999999999999"); + protected UUID m_otherUserId = new UUID("99999999-9999-9999-9999-999999999999"); protected TestScene m_scene; protected PrimCountModule m_pcm; protected ILandObject m_lo; @@ -81,7 +81,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pc.Total, Is.EqualTo(0)); Assert.That(pc.Selected, Is.EqualTo(0)); Assert.That(pc.Users[m_userId], Is.EqualTo(0)); - Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); + Assert.That(pc.Users[m_otherUserId], Is.EqualTo(0)); Assert.That(pc.Simulator, Is.EqualTo(0)); SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01); @@ -93,7 +93,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pc.Total, Is.EqualTo(3)); Assert.That(pc.Selected, Is.EqualTo(0)); Assert.That(pc.Users[m_userId], Is.EqualTo(3)); - Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); + Assert.That(pc.Users[m_otherUserId], Is.EqualTo(0)); Assert.That(pc.Simulator, Is.EqualTo(3)); // Add a second object and retest @@ -106,7 +106,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pc.Total, Is.EqualTo(5)); Assert.That(pc.Selected, Is.EqualTo(0)); Assert.That(pc.Users[m_userId], Is.EqualTo(5)); - Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); + Assert.That(pc.Users[m_otherUserId], Is.EqualTo(0)); Assert.That(pc.Simulator, Is.EqualTo(5)); } @@ -131,7 +131,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pc.Total, Is.EqualTo(6)); Assert.That(pc.Selected, Is.EqualTo(0)); Assert.That(pc.Users[m_userId], Is.EqualTo(6)); - Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); + Assert.That(pc.Users[m_otherUserId], Is.EqualTo(0)); Assert.That(pc.Simulator, Is.EqualTo(6)); } @@ -157,7 +157,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pc.Total, Is.EqualTo(1)); Assert.That(pc.Selected, Is.EqualTo(0)); Assert.That(pc.Users[m_userId], Is.EqualTo(1)); - Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); + Assert.That(pc.Users[m_otherUserId], Is.EqualTo(0)); Assert.That(pc.Simulator, Is.EqualTo(1)); } @@ -169,7 +169,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests IPrimCounts pc = m_lo.PrimCounts; - SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_dummyUserId, 0x01); + SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_otherUserId, 0x01); m_scene.AddNewSceneObject(sog, false); Assert.That(pc.Owner, Is.EqualTo(0)); @@ -178,7 +178,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pc.Total, Is.EqualTo(3)); Assert.That(pc.Selected, Is.EqualTo(0)); Assert.That(pc.Users[m_userId], Is.EqualTo(0)); - Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(3)); + Assert.That(pc.Users[m_otherUserId], Is.EqualTo(3)); Assert.That(pc.Simulator, Is.EqualTo(3)); } @@ -202,7 +202,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pc.Total, Is.EqualTo(3)); Assert.That(pc.Selected, Is.EqualTo(0)); Assert.That(pc.Users[m_userId], Is.EqualTo(3)); - Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0)); + Assert.That(pc.Users[m_otherUserId], Is.EqualTo(0)); Assert.That(pc.Simulator, Is.EqualTo(3)); } } From c13502a5cf938e898ef27f471ac27f0707698543 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 2 Apr 2011 01:15:17 +0100 Subject: [PATCH 020/138] add remove others object prim count test --- .../World/Land/Tests/PrimCountModuleTests.cs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs index 49ad705969..b9eef796e8 100644 --- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs @@ -182,6 +182,29 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pc.Simulator, Is.EqualTo(3)); } + [Test] + public void TestRemoveOthersObject() + { + TestHelper.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + IPrimCounts pc = m_lo.PrimCounts; + + m_scene.AddNewSceneObject(SceneSetupHelpers.CreateSceneObject(1, m_otherUserId, 0x1), false); + SceneObjectGroup sogToDelete = SceneSetupHelpers.CreateSceneObject(3, m_otherUserId, 0x10); + m_scene.AddNewSceneObject(sogToDelete, false); + m_scene.DeleteSceneObject(sogToDelete, false); + + Assert.That(pc.Owner, Is.EqualTo(0)); + Assert.That(pc.Group, Is.EqualTo(0)); + Assert.That(pc.Others, Is.EqualTo(1)); + Assert.That(pc.Total, Is.EqualTo(1)); + Assert.That(pc.Selected, Is.EqualTo(0)); + Assert.That(pc.Users[m_userId], Is.EqualTo(0)); + Assert.That(pc.Users[m_otherUserId], Is.EqualTo(1)); + Assert.That(pc.Simulator, Is.EqualTo(1)); + } + /// /// Test the count is correct after is has been tainted. /// From 01b399055b06b69848ffcdeb3cafec83cbeb06d2 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 2 Apr 2011 01:37:46 +0100 Subject: [PATCH 021/138] add test for adding group object, factor out initial zero counts test --- .../World/Land/Tests/PrimCountModuleTests.cs | 52 ++++++++++++++++--- 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs index b9eef796e8..38b2356d37 100644 --- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs @@ -45,6 +45,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests public class PrimCountModuleTests { protected UUID m_userId = new UUID("00000000-0000-0000-0000-100000000000"); + protected UUID m_groupId = new UUID("00000000-0000-0000-8888-000000000000"); protected UUID m_otherUserId = new UUID("99999999-9999-9999-9999-999999999999"); protected TestScene m_scene; protected PrimCountModule m_pcm; @@ -65,14 +66,11 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests } /// - /// Test count after a parcel owner owned object is added. + /// Test that counts before we do anything are correct. /// [Test] - public void TestAddOwnerObject() + public void TestInitialCounts() { - TestHelper.InMethod(); -// log4net.Config.XmlConfigurator.Configure(); - IPrimCounts pc = m_lo.PrimCounts; Assert.That(pc.Owner, Is.EqualTo(0)); @@ -82,7 +80,19 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pc.Selected, Is.EqualTo(0)); Assert.That(pc.Users[m_userId], Is.EqualTo(0)); Assert.That(pc.Users[m_otherUserId], Is.EqualTo(0)); - Assert.That(pc.Simulator, Is.EqualTo(0)); + Assert.That(pc.Simulator, Is.EqualTo(0)); + } + + /// + /// Test count after a parcel owner owned object is added. + /// + [Test] + public void TestAddOwnerObject() + { + TestHelper.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + IPrimCounts pc = m_lo.PrimCounts; SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01); m_scene.AddNewSceneObject(sog, false); @@ -159,7 +169,35 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pc.Users[m_userId], Is.EqualTo(1)); Assert.That(pc.Users[m_otherUserId], Is.EqualTo(0)); Assert.That(pc.Simulator, Is.EqualTo(1)); - } + } + + [Test] + public void TestAddGroupObject() + { + TestHelper.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + m_lo.DeedToGroup(m_groupId); + + IPrimCounts pc = m_lo.PrimCounts; + + SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_otherUserId, 0x01); + sog.GroupID = m_groupId; + m_scene.AddNewSceneObject(sog, false); + + Assert.That(pc.Owner, Is.EqualTo(0)); + Assert.That(pc.Group, Is.EqualTo(3)); + Assert.That(pc.Others, Is.EqualTo(0)); + Assert.That(pc.Total, Is.EqualTo(3)); + Assert.That(pc.Selected, Is.EqualTo(0)); + + // Is this desired behaviour? Not totally sure. + Assert.That(pc.Users[m_userId], Is.EqualTo(0)); + Assert.That(pc.Users[m_groupId], Is.EqualTo(0)); + Assert.That(pc.Users[m_otherUserId], Is.EqualTo(3)); + + Assert.That(pc.Simulator, Is.EqualTo(3)); + } [Test] public void TestAddOthersObject() From 8e668abc6db47eb21d6eb294cf696d6bc10d51a6 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 2 Apr 2011 01:46:06 +0100 Subject: [PATCH 022/138] add test for removing group owned objects --- .../World/Land/Tests/PrimCountModuleTests.cs | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs index 38b2356d37..f006db2a62 100644 --- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs @@ -199,6 +199,38 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pc.Simulator, Is.EqualTo(3)); } + /// + /// Test count after a parcel owner owned object is removed. + /// + [Test] + public void TestRemoveGroupObject() + { + TestHelper.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + m_lo.DeedToGroup(m_groupId); + + IPrimCounts pc = m_lo.PrimCounts; + + SceneObjectGroup sogToKeep = SceneSetupHelpers.CreateSceneObject(1, m_userId, 0x1); + sogToKeep.GroupID = m_groupId; + m_scene.AddNewSceneObject(sogToKeep, false); + + SceneObjectGroup sogToDelete = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x10); + m_scene.AddNewSceneObject(sogToDelete, false); + m_scene.DeleteSceneObject(sogToDelete, false); + + Assert.That(pc.Owner, Is.EqualTo(0)); + Assert.That(pc.Group, Is.EqualTo(1)); + Assert.That(pc.Others, Is.EqualTo(0)); + Assert.That(pc.Total, Is.EqualTo(1)); + Assert.That(pc.Selected, Is.EqualTo(0)); + Assert.That(pc.Users[m_userId], Is.EqualTo(1)); + Assert.That(pc.Users[m_groupId], Is.EqualTo(0)); + Assert.That(pc.Users[m_otherUserId], Is.EqualTo(0)); + Assert.That(pc.Simulator, Is.EqualTo(1)); + } + [Test] public void TestAddOthersObject() { From 7bba0177fea621fa7116df8dfc1680dc9045fbd3 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 2 Apr 2011 01:53:47 +0100 Subject: [PATCH 023/138] If land is not group owned (group ID is always UUID.Zero) then don't check if a prim should be added to the group count --- OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs index 992cd72787..bc140aee5b 100644 --- a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs @@ -219,8 +219,6 @@ namespace OpenSim.Region.CoreModules.World.Land { if (obj.OwnerID == landData.OwnerID) parcelCounts.Owner += partCount; - else if (landData.GroupID != UUID.Zero && obj.GroupID == landData.GroupID) - parcelCounts.Group += partCount; else parcelCounts.Others += partCount; } From 4f56c732bc00588cd8ced1be85bc4d13815f86bd Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 2 Apr 2011 02:29:42 +0100 Subject: [PATCH 024/138] Comment out some startup logging lines to make up for the one I added earlier on. Most of these are where the region modules are telling us they are disabled. Convention is only to log when enabled (even that is really noisy) --- OpenSim/Region/Application/OpenSim.cs | 2 +- .../CoreModules/Scripting/EMailModules/EmailModule.cs | 2 -- .../Avatar/Concierge/ConciergeModule.cs | 9 ++------- .../Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs | 6 ------ .../Avatar/Voice/VivoxVoice/VivoxVoiceModule.cs | 8 -------- .../Avatar/XmlRpcGroups/GroupsMessagingModule.cs | 3 --- .../OptionalModules/Scripting/Minimodule/MRMModule.cs | 10 +--------- 7 files changed, 4 insertions(+), 36 deletions(-) diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index 408188824d..ec1fb042c1 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs @@ -123,7 +123,7 @@ namespace OpenSim m_log.Info("===================================================================="); m_log.Info("========================= STARTING OPENSIM ========================="); m_log.Info("===================================================================="); - m_log.InfoFormat("[OPENSIM MAIN]: Running "); + //m_log.InfoFormat("[OPENSIM MAIN]: GC Is Server GC: {0}", GCSettings.IsServerGC.ToString()); // http://msdn.microsoft.com/en-us/library/bb384202.aspx //GCSettings.LatencyMode = GCLatencyMode.Batch; diff --git a/OpenSim/Region/CoreModules/Scripting/EMailModules/EmailModule.cs b/OpenSim/Region/CoreModules/Scripting/EMailModules/EmailModule.cs index c0975eaaa0..9255791c76 100644 --- a/OpenSim/Region/CoreModules/Scripting/EMailModules/EmailModule.cs +++ b/OpenSim/Region/CoreModules/Scripting/EMailModules/EmailModule.cs @@ -111,14 +111,12 @@ namespace OpenSim.Region.CoreModules.Scripting.EmailModules { if ((SMTPConfig = m_Config.Configs["SMTP"]) == null) { - m_log.InfoFormat("[SMTP] SMTP server not configured"); m_Enabled = false; return; } if (!SMTPConfig.GetBoolean("enabled", false)) { - m_log.InfoFormat("[SMTP] module disabled in configuration"); m_Enabled = false; return; } diff --git a/OpenSim/Region/OptionalModules/Avatar/Concierge/ConciergeModule.cs b/OpenSim/Region/OptionalModules/Avatar/Concierge/ConciergeModule.cs index 2fcc477dc2..0d6313acb4 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Concierge/ConciergeModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Concierge/ConciergeModule.cs @@ -80,16 +80,11 @@ namespace OpenSim.Region.OptionalModules.Avatar.Concierge m_config = config.Configs["Concierge"]; if (null == m_config) - { - m_log.Info("[Concierge]: no config found, plugin disabled"); return; - } if (!m_config.GetBoolean("enabled", false)) - { - m_log.Info("[Concierge]: plugin disabled by configuration"); return; - } + m_enabled = true; @@ -113,9 +108,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.Concierge { m_replacingChatModule = false; } + m_log.InfoFormat("[Concierge] {0} ChatModule", m_replacingChatModule ? "replacing" : "not replacing"); - // take note of concierge channel and of identity m_conciergeChannel = config.Configs["Concierge"].GetInt("concierge_channel", m_conciergeChannel); m_whoami = m_config.GetString("whoami", "conferencier"); diff --git a/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs b/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs index 05a1c3b427..7909d8a8ec 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs @@ -106,16 +106,10 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice m_Config = config.Configs["FreeSwitchVoice"]; if (m_Config == null) - { - m_log.Info("[FreeSwitchVoice] no config found, plugin disabled"); return; - } if (!m_Config.GetBoolean("Enabled", false)) - { - m_log.Info("[FreeSwitchVoice] plugin disabled by configuration"); return; - } try { diff --git a/OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice/VivoxVoiceModule.cs b/OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice/VivoxVoiceModule.cs index 34d0e248c6..534bf929a4 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice/VivoxVoiceModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Voice/VivoxVoice/VivoxVoiceModule.cs @@ -121,16 +121,10 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice m_config = config.Configs["VivoxVoice"]; if (null == m_config) - { - m_log.Info("[VivoxVoice] no config found, plugin disabled"); return; - } if (!m_config.GetBoolean("enabled", false)) - { - m_log.Info("[VivoxVoice] plugin disabled by configuration"); return; - } try { @@ -218,7 +212,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice m_pluginEnabled = true; m_log.Info("[VivoxVoice] plugin enabled"); - } catch (Exception e) { @@ -228,7 +221,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice } } - // Called to indicate that the module has been added to the region public void AddRegion(Scene scene) { diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsMessagingModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsMessagingModule.cs index 3d34441a90..8c01d75b8f 100644 --- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsMessagingModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsMessagingModule.cs @@ -86,13 +86,10 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups return; } - m_log.Info("[GROUPS-MESSAGING]: Initializing GroupsMessagingModule"); - m_debugEnabled = groupsConfig.GetBoolean("DebugEnabled", true); } m_log.Info("[GROUPS-MESSAGING]: GroupsMessagingModule starting up"); - } public void AddRegion(Scene scene) diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs index df60709535..74f52087fe 100644 --- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs @@ -75,7 +75,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule if (source.Configs["MRM"].GetBoolean("Enabled", false)) { - m_log.Info("[MRM] Enabling MRM Module"); + m_log.Info("[MRM]: Enabling MRM Module"); m_scene = scene; // when hidden, we don't listen for client initiated script events @@ -90,14 +90,6 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule scene.RegisterModuleInterface(this); } - else - { - m_log.Info("[MRM] Disabled MRM Module (Disabled in ini)"); - } - } - else - { - m_log.Info("[MRM] Disabled MRM Module (Default disabled)"); } } From e8e940e33e458622ef3c1f6fbd206fcf13b2f700 Mon Sep 17 00:00:00 2001 From: Melanie Date: Sun, 3 Apr 2011 13:50:19 +0200 Subject: [PATCH 025/138] Make CHANGED_OWNER work for deeding and god-mode in-world change --- OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index fcbcf593ba..73dd531536 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -2069,7 +2069,10 @@ namespace OpenSim.Region.Framework.Scenes SceneObjectPart[] partList = sog.Parts; foreach (SceneObjectPart child in partList) + { child.Inventory.ChangeInventoryOwner(ownerID); + child.TriggerScriptChangedEvent(Changed.OWNER); + } } else { @@ -2085,6 +2088,7 @@ namespace OpenSim.Region.Framework.Scenes { child.LastOwnerID = child.OwnerID; child.Inventory.ChangeInventoryOwner(groupID); + child.TriggerScriptChangedEvent(Changed.OWNER); } sog.SetOwnerId(groupID); From b385d4aa036ad7bf58d033a9923452535c82ef69 Mon Sep 17 00:00:00 2001 From: Melanie Date: Thu, 7 Oct 2010 01:13:17 +0200 Subject: [PATCH 026/138] Implement taking of coalesced objects. WARNING!!!!! You can TAKE them, but you can't REZ them again. Only the first of the contained objects will rez, the rest is inaccessible until rezzing them is implemented. Also, rotations are not explicitly stored. This MAY work. Or not. --- .../InventoryAccess/InventoryAccessModule.cs | 529 ++++++++++-------- .../Scenes/AsyncSceneObjectGroupDeleter.cs | 4 +- OpenSim/Region/Framework/Scenes/Scene.cs | 9 + 3 files changed, 309 insertions(+), 233 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 8d0c35a746..88dff022c3 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -28,6 +28,7 @@ using System; using System.Collections.Generic; using System.Net; +using System.Xml; using System.Reflection; using System.Threading; @@ -205,11 +206,11 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess public virtual UUID DeleteToInventory(DeRezAction action, UUID folderID, List objectGroups, IClientAPI remoteClient) { - // HACK: This is only working for lists containing a single item! - // It's just a hack to make this WIP compile and run. Nothing - // currently calls this with multiple items. UUID ret = UUID.Zero; + // The following code groups the SOG's by owner. No objects + // belonging to different people can be coalesced, for obvious + // reasons. Dictionary> deletes = new Dictionary>(); @@ -221,262 +222,328 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess deletes[g.OwnerID].Add(g); } - foreach (List objlist in deletes.Values) - { - foreach (SceneObjectGroup g in objlist) - ret = DeleteToInventory(action, folderID, g, remoteClient); - } - - return ret; - } - - private UUID DeleteToInventory(DeRezAction action, UUID folderID, - SceneObjectGroup objectGroup, IClientAPI remoteClient) - { + // This is pethod scoped and will be returned. It will be the + // last created asset id UUID assetID = UUID.Zero; - Vector3 inventoryStoredPosition = new Vector3 - (((objectGroup.AbsolutePosition.X > (int)Constants.RegionSize) - ? 250 - : objectGroup.AbsolutePosition.X) - , - (objectGroup.AbsolutePosition.X > (int)Constants.RegionSize) - ? 250 - : objectGroup.AbsolutePosition.X, - objectGroup.AbsolutePosition.Z); - - Vector3 originalPosition = objectGroup.AbsolutePosition; - - objectGroup.AbsolutePosition = inventoryStoredPosition; - - string sceneObjectXml = SceneObjectSerializer.ToOriginalXmlFormat(objectGroup); - - objectGroup.AbsolutePosition = originalPosition; - - // Get the user info of the item destination - // - UUID userID = UUID.Zero; - - if (action == DeRezAction.Take || action == DeRezAction.TakeCopy || - action == DeRezAction.SaveToExistingUserInventoryItem) + // Each iteration is really a separate asset being created, + // with distinct destinations as well. + foreach (List objlist in deletes.Values) { - // Take or take copy require a taker - // Saving changes requires a local user - // - if (remoteClient == null) - return UUID.Zero; + Dictionary xmlStrings = + new Dictionary(); - userID = remoteClient.AgentId; - } - else - { - // All returns / deletes go to the object owner - // - - userID = objectGroup.RootPart.OwnerID; - } - - if (userID == UUID.Zero) // Can't proceed - { - return UUID.Zero; - } - - // If we're returning someone's item, it goes back to the - // owner's Lost And Found folder. - // Delete is treated like return in this case - // Deleting your own items makes them go to trash - // - - InventoryFolderBase folder = null; - InventoryItemBase item = null; - - if (DeRezAction.SaveToExistingUserInventoryItem == action) - { - item = new InventoryItemBase(objectGroup.RootPart.FromUserInventoryItemID, userID); - item = m_Scene.InventoryService.GetItem(item); - - //item = userInfo.RootFolder.FindItem( - // objectGroup.RootPart.FromUserInventoryItemID); - - if (null == item) + foreach (SceneObjectGroup objectGroup in objlist) { - m_log.DebugFormat( - "[AGENT INVENTORY]: Object {0} {1} scheduled for save to inventory has already been deleted.", - objectGroup.Name, objectGroup.UUID); - return UUID.Zero; - } - } - else - { - // Folder magic - // - if (action == DeRezAction.Delete) - { - // Deleting someone else's item - // - if (remoteClient == null || - objectGroup.OwnerID != remoteClient.AgentId) - { + Vector3 inventoryStoredPosition = new Vector3 + (((objectGroup.AbsolutePosition.X > (int)Constants.RegionSize) + ? 250 + : objectGroup.AbsolutePosition.X) + , + (objectGroup.AbsolutePosition.X > (int)Constants.RegionSize) + ? 250 + : objectGroup.AbsolutePosition.X, + objectGroup.AbsolutePosition.Z); - folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.LostAndFoundFolder); - } - else - { - folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.TrashFolder); - } - } - else if (action == DeRezAction.Return) - { + Vector3 originalPosition = objectGroup.AbsolutePosition; - // Dump to lost + found unconditionally - // - folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.LostAndFoundFolder); - } + // Restore attachment data after trip through the sim + if (objectGroup.RootPart.AttachPoint > 0) + inventoryStoredPosition = objectGroup.RootPart.AttachOffset; + objectGroup.RootPart.Shape.State = objectGroup.RootPart.AttachPoint; - if (folderID == UUID.Zero && folder == null) - { - if (action == DeRezAction.Delete) - { - // Deletes go to trash by default - // - folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.TrashFolder); - } - else - { - if (remoteClient == null || - objectGroup.OwnerID != remoteClient.AgentId) - { - // Taking copy of another person's item. Take to - // Objects folder. - folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.Object); - } - else - { - // Catch all. Use lost & found - // - - folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.LostAndFoundFolder); - } - } - } - - // Override and put into where it came from, if it came - // from anywhere in inventory - // - if (action == DeRezAction.Take || action == DeRezAction.TakeCopy) - { - if (objectGroup.RootPart.FromFolderID != UUID.Zero) - { - InventoryFolderBase f = new InventoryFolderBase(objectGroup.RootPart.FromFolderID, userID); - folder = m_Scene.InventoryService.GetFolder(f); - } - } - - if (folder == null) // None of the above - { - folder = new InventoryFolderBase(folderID); - - if (folder == null) // Nowhere to put it - { - return UUID.Zero; - } - } - - item = new InventoryItemBase(); - item.CreatorId = objectGroup.RootPart.CreatorID.ToString(); - item.CreatorData = objectGroup.RootPart.CreatorData; - item.ID = UUID.Random(); - item.InvType = (int)InventoryType.Object; - item.Folder = folder.ID; - item.Owner = userID; - } - - AssetBase asset = CreateAsset( - objectGroup.GetPartName(objectGroup.RootPart.LocalId), - objectGroup.GetPartDescription(objectGroup.RootPart.LocalId), - (sbyte)AssetType.Object, - Utils.StringToBytes(sceneObjectXml), - objectGroup.OwnerID.ToString()); - m_Scene.AssetService.Store(asset); - assetID = asset.FullID; - - if (DeRezAction.SaveToExistingUserInventoryItem == action) - { - item.AssetID = asset.FullID; - m_Scene.InventoryService.UpdateItem(item); - } - else - { - item.AssetID = asset.FullID; - - if (remoteClient != null && (remoteClient.AgentId != objectGroup.RootPart.OwnerID) && m_Scene.Permissions.PropagatePermissions()) - { - uint perms = objectGroup.GetEffectivePermissions(); - uint nextPerms = (perms & 7) << 13; - if ((nextPerms & (uint)PermissionMask.Copy) == 0) - perms &= ~(uint)PermissionMask.Copy; - if ((nextPerms & (uint)PermissionMask.Transfer) == 0) - perms &= ~(uint)PermissionMask.Transfer; - if ((nextPerms & (uint)PermissionMask.Modify) == 0) - perms &= ~(uint)PermissionMask.Modify; + objectGroup.AbsolutePosition = inventoryStoredPosition; // Make sure all bits but the ones we want are clear // on take. // This will be applied to the current perms, so // it will do what we want. objectGroup.RootPart.NextOwnerMask &= - ((uint)PermissionMask.Copy | + ((uint)PermissionMask.Copy | (uint)PermissionMask.Transfer | (uint)PermissionMask.Modify); objectGroup.RootPart.NextOwnerMask |= (uint)PermissionMask.Move; - item.BasePermissions = perms & objectGroup.RootPart.NextOwnerMask; - item.CurrentPermissions = item.BasePermissions; - item.NextPermissions = objectGroup.RootPart.NextOwnerMask; - item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask & objectGroup.RootPart.NextOwnerMask; - item.GroupPermissions = objectGroup.RootPart.GroupMask & objectGroup.RootPart.NextOwnerMask; - - item.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm; - } - else - { - item.BasePermissions = objectGroup.GetEffectivePermissions(); - item.CurrentPermissions = objectGroup.GetEffectivePermissions(); - item.NextPermissions = objectGroup.RootPart.NextOwnerMask; - item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask; - item.GroupPermissions = objectGroup.RootPart.GroupMask; + string sceneObjectXml = SceneObjectSerializer.ToOriginalXmlFormat(objectGroup); - item.CurrentPermissions &= - ((uint)PermissionMask.Copy | - (uint)PermissionMask.Transfer | - (uint)PermissionMask.Modify | - (uint)PermissionMask.Move | - 7); // Preserve folded permissions + objectGroup.AbsolutePosition = originalPosition; + + xmlStrings[objectGroup.UUID] = sceneObjectXml; } - // TODO: add the new fields (Flags, Sale info, etc) - item.CreationDate = Util.UnixTimeSinceEpoch(); - item.Description = asset.Description; - item.Name = asset.Name; - item.AssetType = asset.Type; + string itemXml; - m_Scene.AddInventoryItem(item); + if (objlist.Count > 1) + { + float minX, minY, minZ; + float maxX, maxY, maxZ; - if (remoteClient != null && item.Owner == remoteClient.AgentId) - { - remoteClient.SendInventoryItemCreateUpdate(item, 0); - } - else - { - ScenePresence notifyUser = m_Scene.GetScenePresence(item.Owner); - if (notifyUser != null) + Vector3[] offsets = m_Scene.GetCombinedBoundingBox(objlist, + out minX, out maxX, out minY, out maxY, + out minZ, out maxZ); + + // CreateWrapper + XmlDocument itemDoc = new XmlDocument(); + XmlElement root = itemDoc.CreateElement("", "CoalescedObject", ""); + itemDoc.AppendChild(root); + + // Embed the offsets into the group XML + for ( int i = 0 ; i < objlist.Count ; i++ ) { - notifyUser.ControllingClient.SendInventoryItemCreateUpdate(item, 0); + XmlDocument doc = new XmlDocument(); + SceneObjectGroup g = objlist[i]; + doc.LoadXml(xmlStrings[g.UUID]); + XmlElement e = (XmlElement)doc.SelectSingleNode("/SceneObjectGroup"); + e.SetAttribute("offsetx", offsets[i].X.ToString()); + e.SetAttribute("offsety", offsets[i].Y.ToString()); + e.SetAttribute("offsetz", offsets[i].Z.ToString()); + + XmlNode objectNode = itemDoc.ImportNode(e, true); + root.AppendChild(objectNode); + } + + float sizeX = maxX - minX; + float sizeY = maxY - minY; + float sizeZ = maxZ - minZ; + + root.SetAttribute("x", sizeX.ToString()); + root.SetAttribute("y", sizeY.ToString()); + root.SetAttribute("z", sizeZ.ToString()); + + itemXml = itemDoc.InnerXml; + } + else + { + itemXml = xmlStrings[objlist[0].UUID]; + } + + // Get the user info of the item destination + // + UUID userID = UUID.Zero; + + if (action == DeRezAction.Take || action == DeRezAction.TakeCopy || + action == DeRezAction.SaveToExistingUserInventoryItem) + { + // Take or take copy require a taker + // Saving changes requires a local user + // + if (remoteClient == null) + return UUID.Zero; + + userID = remoteClient.AgentId; + } + else + { + // All returns / deletes go to the object owner + // + + userID = objlist[0].RootPart.OwnerID; + } + + if (userID == UUID.Zero) // Can't proceed + { + return UUID.Zero; + } + + // If we're returning someone's item, it goes back to the + // owner's Lost And Found folder. + // Delete is treated like return in this case + // Deleting your own items makes them go to trash + // + + InventoryFolderBase folder = null; + InventoryItemBase item = null; + + if (DeRezAction.SaveToExistingUserInventoryItem == action) + { + item = new InventoryItemBase(objlist[0].RootPart.FromUserInventoryItemID, userID); + item = m_Scene.InventoryService.GetItem(item); + + //item = userInfo.RootFolder.FindItem( + // objectGroup.RootPart.FromUserInventoryItemID); + + if (null == item) + { + m_log.DebugFormat( + "[AGENT INVENTORY]: Object {0} {1} scheduled for save to inventory has already been deleted.", + objlist[0].Name, objlist[0].UUID); + return UUID.Zero; + } + } + else + { + // Folder magic + // + if (action == DeRezAction.Delete) + { + // Deleting someone else's item + // + if (remoteClient == null || + objlist[0].OwnerID != remoteClient.AgentId) + { + + folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.LostAndFoundFolder); + } + else + { + folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.TrashFolder); + } + } + else if (action == DeRezAction.Return) + { + + // Dump to lost + found unconditionally + // + folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.LostAndFoundFolder); + } + + if (folderID == UUID.Zero && folder == null) + { + if (action == DeRezAction.Delete) + { + // Deletes go to trash by default + // + folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.TrashFolder); + } + else + { + if (remoteClient == null || + objlist[0].OwnerID != remoteClient.AgentId) + { + // Taking copy of another person's item. Take to + // Objects folder. + folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.Object); + } + else + { + // Catch all. Use lost & found + // + + folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.LostAndFoundFolder); + } + } + } + + // Override and put into where it came from, if it came + // from anywhere in inventory + // + if (action == DeRezAction.Take || action == DeRezAction.TakeCopy) + { + if (objlist[0].RootPart.FromFolderID != UUID.Zero) + { + InventoryFolderBase f = new InventoryFolderBase(objlist[0].RootPart.FromFolderID, userID); + folder = m_Scene.InventoryService.GetFolder(f); + } + } + + if (folder == null) // None of the above + { + folder = new InventoryFolderBase(folderID); + + if (folder == null) // Nowhere to put it + { + return UUID.Zero; + } + } + + item = new InventoryItemBase(); + // Can't know creator is the same, so null it in inventory + if (objlist.Count > 1) + item.CreatorId = UUID.Zero.ToString(); + else + item.CreatorId = objlist[0].RootPart.CreatorID.ToString(); + item.ID = UUID.Random(); + item.InvType = (int)InventoryType.Object; + item.Folder = folder.ID; + item.Owner = userID; + if (objlist.Count > 1) + item.Flags = (uint)InventoryItemFlags.ObjectHasMultipleItems; + } + + AssetBase asset = CreateAsset( + objlist[0].GetPartName(objlist[0].RootPart.LocalId), + objlist[0].GetPartDescription(objlist[0].RootPart.LocalId), + (sbyte)AssetType.Object, + Utils.StringToBytes(itemXml), + objlist[0].OwnerID.ToString()); + m_Scene.AssetService.Store(asset); + assetID = asset.FullID; + + if (DeRezAction.SaveToExistingUserInventoryItem == action) + { + item.AssetID = asset.FullID; + m_Scene.InventoryService.UpdateItem(item); + } + else + { + item.AssetID = asset.FullID; + + uint effectivePerms = (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify | PermissionMask.Move) | 7; + foreach (SceneObjectGroup grp in objlist) + effectivePerms &= grp.GetEffectivePermissions(); + effectivePerms |= (uint)PermissionMask.Move; + + if (remoteClient != null && (remoteClient.AgentId != objlist[0].RootPart.OwnerID) && m_Scene.Permissions.PropagatePermissions()) + { + uint perms = effectivePerms; + uint nextPerms = (perms & 7) << 13; + if ((nextPerms & (uint)PermissionMask.Copy) == 0) + perms &= ~(uint)PermissionMask.Copy; + if ((nextPerms & (uint)PermissionMask.Transfer) == 0) + perms &= ~(uint)PermissionMask.Transfer; + if ((nextPerms & (uint)PermissionMask.Modify) == 0) + perms &= ~(uint)PermissionMask.Modify; + + item.BasePermissions = perms & objlist[0].RootPart.NextOwnerMask; + item.CurrentPermissions = item.BasePermissions; + item.NextPermissions = perms & objlist[0].RootPart.NextOwnerMask; + item.EveryOnePermissions = objlist[0].RootPart.EveryoneMask & objlist[0].RootPart.NextOwnerMask; + item.GroupPermissions = objlist[0].RootPart.GroupMask & objlist[0].RootPart.NextOwnerMask; + + // Magic number badness. Maybe this deserves an enum. + // bit 4 (16) is the "Slam" bit, it means treat as passed + // and apply next owner perms on rez + item.CurrentPermissions |= 16; // Slam! + } + else + { + item.BasePermissions = effectivePerms; + item.CurrentPermissions = effectivePerms; + item.NextPermissions = objlist[0].RootPart.NextOwnerMask & effectivePerms; + item.EveryOnePermissions = objlist[0].RootPart.EveryoneMask & effectivePerms; + item.GroupPermissions = objlist[0].RootPart.GroupMask & effectivePerms; + + item.CurrentPermissions &= + ((uint)PermissionMask.Copy | + (uint)PermissionMask.Transfer | + (uint)PermissionMask.Modify | + (uint)PermissionMask.Move | + 7); // Preserve folded permissions + } + + // TODO: add the new fields (Flags, Sale info, etc) + item.CreationDate = Util.UnixTimeSinceEpoch(); + item.Description = asset.Description; + item.Name = asset.Name; + item.AssetType = asset.Type; + + m_Scene.AddInventoryItem(item); + + if (remoteClient != null && item.Owner == remoteClient.AgentId) + { + remoteClient.SendInventoryItemCreateUpdate(item, 0); + } + else + { + ScenePresence notifyUser = m_Scene.GetScenePresence(item.Owner); + if (notifyUser != null) + { + notifyUser.ControllingClient.SendInventoryItemCreateUpdate(item, 0); + } } } } - return assetID; } diff --git a/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs b/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs index 64567db9d8..8feb0227fc 100644 --- a/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs +++ b/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs @@ -137,7 +137,7 @@ namespace OpenSim.Region.Framework.Scenes x = m_inventoryDeletes.Dequeue(); m_log.DebugFormat( - "[ASYNC DELETER]: Sending object to user's inventory, {0} item(s) remaining.", left); + "[ASYNC DELETER]: Sending object to user's inventory, action {1}, count {2}, {0} item(s) remaining.", left, x.action, x.objectGroups.Count); try { @@ -177,4 +177,4 @@ namespace OpenSim.Region.Framework.Scenes return false; } } -} \ No newline at end of file +} diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 353b7c2e44..35a798e2d0 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -4865,8 +4865,17 @@ namespace OpenSim.Region.Framework.Scenes { float ominX, ominY, ominZ, omaxX, omaxY, omaxZ; + Vector3 vec = g.AbsolutePosition; + g.GetAxisAlignedBoundingBoxRaw(out ominX, out omaxX, out ominY, out omaxY, out ominZ, out omaxZ); + ominX += vec.X; + omaxX += vec.X; + ominY += vec.Y; + omaxY += vec.Y; + ominZ += vec.Z; + omaxZ += vec.Z; + if (minX > ominX) minX = ominX; if (minY > ominY) From a4b3439025f7ae8cf3a795f540675714d6324122 Mon Sep 17 00:00:00 2001 From: Melanie Date: Thu, 7 Oct 2010 05:12:39 +0200 Subject: [PATCH 027/138] Implement rezzing coalesced objects --- .../InventoryAccess/InventoryAccessModule.cs | 287 +++++++++++------- 1 file changed, 177 insertions(+), 110 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 88dff022c3..a7d59c71b9 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -458,7 +458,14 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess item.Folder = folder.ID; item.Owner = userID; if (objlist.Count > 1) + { item.Flags = (uint)InventoryItemFlags.ObjectHasMultipleItems; + } + else + { + item.SaleType = objlist[0].RootPart.ObjectSaleType; + item.SalePrice = objlist[0].RootPart.SalePrice; + } } AssetBase asset = CreateAsset( @@ -522,7 +529,6 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess 7); // Preserve folded permissions } - // TODO: add the new fields (Flags, Sale info, etc) item.CreationDate = Util.UnixTimeSinceEpoch(); item.Description = asset.Description; item.Name = asset.Name; @@ -598,6 +604,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess AssetBase rezAsset = m_Scene.AssetService.Get(item.AssetID.ToString()); + SceneObjectGroup group = null; + if (rezAsset != null) { UUID itemId = UUID.Zero; @@ -606,34 +614,78 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess // item that it came from. This allows us to enable 'save object to inventory' if (!m_Scene.Permissions.BypassPermissions()) { - if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == (uint)PermissionMask.Copy) + if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == (uint)PermissionMask.Copy && (item.Flags & (uint)InventoryItemFlags.ObjectHasMultipleItems) == 0) { itemId = item.ID; } } else { - // Brave new fullperm world - // - itemId = item.ID; + if ((item.Flags & (uint)InventoryItemFlags.ObjectHasMultipleItems) == 0) + { + // Brave new fullperm world + itemId = item.ID; + } } string xmlData = Utils.BytesToString(rezAsset.Data); - SceneObjectGroup group - = SceneObjectSerializer.FromOriginalXmlFormat(itemId, xmlData); + List objlist = + new List(); + List veclist = new List(); - Util.FireAndForget(delegate { AddUserData(group); }); - - group.RootPart.FromFolderID = item.Folder; + XmlDocument doc = new XmlDocument(); + doc.LoadXml(xmlData); + XmlElement e = (XmlElement)doc.SelectSingleNode("/CoalescedObject"); + if (e == null || attachment) // Single + { + SceneObjectGroup g = + SceneObjectSerializer.FromOriginalXmlFormat( + itemId, xmlData); + objlist.Add(g); + veclist.Add(new Vector3(0, 0, 0)); - // If it's rezzed in world, select it. Much easier to - // find small items. - // - if (!attachment) - group.RootPart.CreateSelected = true; + float offsetHeight = 0; + pos = m_Scene.GetNewRezLocation( + RayStart, RayEnd, RayTargetID, Quaternion.Identity, + BypassRayCast, bRayEndIsIntersection, true, g.GetAxisAlignedBoundingBox(out offsetHeight), false); + pos.Z += offsetHeight; + } + else + { + XmlElement coll = (XmlElement)e; + float bx = Convert.ToSingle(coll.GetAttribute("x")); + float by = Convert.ToSingle(coll.GetAttribute("y")); + float bz = Convert.ToSingle(coll.GetAttribute("z")); + Vector3 bbox = new Vector3(bx, by, bz); + + pos = m_Scene.GetNewRezLocation(RayStart, RayEnd, + RayTargetID, Quaternion.Identity, + BypassRayCast, bRayEndIsIntersection, true, + bbox, false); + + pos -= bbox / 2; + + XmlNodeList groups = e.SelectNodes("SceneObjectGroup"); + foreach (XmlNode n in groups) + { + SceneObjectGroup g = + SceneObjectSerializer.FromOriginalXmlFormat( + itemId, n.OuterXml); + objlist.Add(g); + XmlElement el = (XmlElement)n; + float x = Convert.ToSingle(el.GetAttribute("offsetx")); + float y = Convert.ToSingle(el.GetAttribute("offsety")); + float z = Convert.ToSingle(el.GetAttribute("offsetz")); + veclist.Add(new Vector3(x, y, z)); + } + } + + int primcount = 0; + foreach (SceneObjectGroup g in objlist) + primcount += g.PrimCount; if (!m_Scene.Permissions.CanRezObject( - group.PrimCount, remoteClient.AgentId, pos) + primcount, remoteClient.AgentId, pos) && !attachment) { // The client operates in no fail mode. It will @@ -646,123 +698,139 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess return null; } - group.ResetIDs(); - - if (attachment) + for (int i = 0 ; i < objlist.Count ; i++ ) { - group.RootPart.Flags |= PrimFlags.Phantom; - group.RootPart.IsAttachment = true; + group = objlist[i]; + + Vector3 storedPosition = group.AbsolutePosition; + if (group.UUID == UUID.Zero) + { + m_log.Debug("[InventoryAccessModule]: Inventory object has UUID.Zero! Position 3"); + } + group.RootPart.FromFolderID = item.Folder; + + // If it's rezzed in world, select it. Much easier to + // find small items. + // + if (!attachment) + { + group.RootPart.CreateSelected = true; + foreach (SceneObjectPart child in group.Parts) + child.CreateSelected = true; + } + group.ResetIDs(); + + if (attachment) + { + group.RootPart.Flags |= PrimFlags.Phantom; + group.RootPart.IsAttachment = true; + } // If we're rezzing an attachment then don't ask // AddNewSceneObject() to update the client since - // we'll be doing that later on. Scheduling more - // than one full update during the attachment - // process causes some clients to fail to display - // the attachment properly. - // Also, don't persist attachments. - m_Scene.AddNewSceneObject(group, false, false); - } - else - { + // we'll be doing that later on. Scheduling more than + // one full update during the attachment + // process causes some clients to fail to display the + // attachment properly. m_Scene.AddNewSceneObject(group, true, false); - } - // m_log.InfoFormat("ray end point for inventory rezz is {0} {1} {2} ", RayEnd.X, RayEnd.Y, RayEnd.Z); - // if attachment we set it's asset id so object updates can reflect that - // if not, we set it's position in world. - if (!attachment) - { - group.ScheduleGroupForFullUpdate(); - - float offsetHeight = 0; - pos = m_Scene.GetNewRezLocation( - RayStart, RayEnd, RayTargetID, Quaternion.Identity, - BypassRayCast, bRayEndIsIntersection, true, group.GetAxisAlignedBoundingBox(out offsetHeight), false); - pos.Z += offsetHeight; - group.AbsolutePosition = pos; - // m_log.InfoFormat("rezx point for inventory rezz is {0} {1} {2} and offsetheight was {3}", pos.X, pos.Y, pos.Z, offsetHeight); + // if attachment we set it's asset id so object updates + // can reflect that, if not, we set it's position in world. + if (!attachment) + { + group.ScheduleGroupForFullUpdate(); + + group.AbsolutePosition = pos + veclist[i]; + } + else + { + group.SetFromItemID(itemID); + } - } - else - { - group.SetFromItemID(itemID); - } + SceneObjectPart rootPart = null; - SceneObjectPart rootPart = null; - try - { - rootPart = group.GetChildPart(group.UUID); - } - catch (NullReferenceException) - { - string isAttachment = ""; + try + { + rootPart = group.GetChildPart(group.UUID); + } + catch (NullReferenceException) + { + string isAttachment = ""; - if (attachment) - isAttachment = " Object was an attachment"; + if (attachment) + isAttachment = " Object was an attachment"; - m_log.Error("[AGENT INVENTORY]: Error rezzing ItemID: " + itemID + " object has no rootpart." + isAttachment); - } + m_log.Error("[AGENT INVENTORY]: Error rezzing ItemID: " + itemID + " object has no rootpart." + isAttachment); + } - // Since renaming the item in the inventory does not affect the name stored - // in the serialization, transfer the correct name from the inventory to the - // object itself before we rez. - rootPart.Name = item.Name; - rootPart.Description = item.Description; - - if ((item.Flags & (uint)InventoryItemFlags.ObjectSlamSale) != 0) - { + // Since renaming the item in the inventory does not + // affect the name stored in the serialization, transfer + // the correct name from the inventory to the + // object itself before we rez. + rootPart.Name = item.Name; + rootPart.Description = item.Description; rootPart.ObjectSaleType = item.SaleType; rootPart.SalePrice = item.SalePrice; - } - group.SetGroup(remoteClient.ActiveGroupId, remoteClient); - if ((rootPart.OwnerID != item.Owner) || - (item.CurrentPermissions & 16) != 0 || // Magic number - (item.Flags & (uint)InventoryItemFlags.ObjectSlamPerm) != 0) - { - //Need to kill the for sale here - rootPart.ObjectSaleType = 0; - rootPart.SalePrice = 10; - - if (m_Scene.Permissions.PropagatePermissions()) + group.SetGroup(remoteClient.ActiveGroupId, remoteClient); + if ((rootPart.OwnerID != item.Owner) || + (item.CurrentPermissions & 16) != 0) { - foreach (SceneObjectPart part in group.Parts) - { - if ((item.Flags & (uint)InventoryItemFlags.ObjectOverwriteEveryone) != 0) - part.EveryoneMask = item.EveryOnePermissions; - if ((item.Flags & (uint)InventoryItemFlags.ObjectOverwriteNextOwner) != 0) - part.NextOwnerMask = item.NextPermissions; - if ((item.Flags & (uint)InventoryItemFlags.ObjectOverwriteGroup) != 0) - part.GroupMask = item.GroupPermissions; - } + //Need to kill the for sale here + rootPart.ObjectSaleType = 0; + rootPart.SalePrice = 10; - foreach (SceneObjectPart part in group.Parts) + if (m_Scene.Permissions.PropagatePermissions()) + { + foreach (SceneObjectPart part in group.Parts) + { + if ((item.Flags & (uint)InventoryItemFlags.ObjectHasMultipleItems) == 0) + { + part.EveryoneMask = item.EveryOnePermissions; + part.NextOwnerMask = item.NextPermissions; + } + part.GroupMask = 0; // DO NOT propagate here + } + + group.ApplyNextOwnerPermissions(); + } + } + + foreach (SceneObjectPart part in group.Parts) + { + if ((part.OwnerID != item.Owner) || + (item.CurrentPermissions & 16) != 0) { part.LastOwnerID = part.OwnerID; part.OwnerID = item.Owner; part.Inventory.ChangeInventoryOwner(item.Owner); + part.GroupMask = 0; // DO NOT propagate here + } + part.EveryoneMask = item.EveryOnePermissions; + part.NextOwnerMask = item.NextPermissions; + } + + rootPart.TrimPermissions(); + + if (!attachment) + { + if (group.RootPart.Shape.PCode == (byte)PCode.Prim) + { + // Save attachment data + group.RootPart.AttachPoint = group.RootPart.Shape.State; + group.RootPart.AttachOffset = storedPosition; + + group.ClearPartAttachmentData(); } - group.ApplyNextOwnerPermissions(); + // Fire on_rez + group.CreateScriptInstances(0, true, m_Scene.DefaultScriptEngine, 1); + rootPart.ParentGroup.ResumeScripts(); + + rootPart.ScheduleFullUpdate(); } } - rootPart.TrimPermissions(); - - if (!attachment) - { - if (group.RootPart.Shape.PCode == (byte)PCode.Prim) - { - group.ClearPartAttachmentData(); - } - - // Fire on_rez - group.CreateScriptInstances(0, true, m_Scene.DefaultScriptEngine, 1); - rootPart.ParentGroup.ResumeScripts(); - - rootPart.ScheduleFullUpdate(); - } - if (!m_Scene.Permissions.BypassPermissions()) { if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) @@ -778,9 +846,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess } } } - - return rootPart.ParentGroup; } + return group; } return null; From adb14ad20acce44cb4b269b0d518b210f9f5eae4 Mon Sep 17 00:00:00 2001 From: Melanie Date: Thu, 7 Oct 2010 05:12:39 +0200 Subject: [PATCH 028/138] Implement rezzing coalesced objects --- .../InventoryAccess/InventoryAccessModule.cs | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index a7d59c71b9..9fbfc3477f 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -247,11 +247,6 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess Vector3 originalPosition = objectGroup.AbsolutePosition; - // Restore attachment data after trip through the sim - if (objectGroup.RootPart.AttachPoint > 0) - inventoryStoredPosition = objectGroup.RootPart.AttachOffset; - objectGroup.RootPart.Shape.State = objectGroup.RootPart.AttachPoint; - objectGroup.AbsolutePosition = inventoryStoredPosition; // Make sure all bits but the ones we want are clear @@ -815,13 +810,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess if (!attachment) { if (group.RootPart.Shape.PCode == (byte)PCode.Prim) - { - // Save attachment data - group.RootPart.AttachPoint = group.RootPart.Shape.State; - group.RootPart.AttachOffset = storedPosition; - group.ClearPartAttachmentData(); - } // Fire on_rez group.CreateScriptInstances(0, true, m_Scene.DefaultScriptEngine, 1); From 6885b7220c6f782034d7c0220762244adf00e3d3 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Mon, 28 Mar 2011 10:00:53 -0700 Subject: [PATCH 029/138] Implements adaptive queue management and fair queueing for improved networking performance. Reprioritization algorithms need to be ported still. One is in place. --- .../ClientStack/LindenUDP/LLClientView.cs | 359 ++++++++++++------ .../Region/Framework/Scenes/Prioritizer.cs | 71 +++- 2 files changed, 307 insertions(+), 123 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 2faffae58e..e9e1fa3611 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -49,6 +49,8 @@ using Timer = System.Timers.Timer; using AssetLandmark = OpenSim.Framework.AssetLandmark; using Nini.Config; +using System.IO; + namespace OpenSim.Region.ClientStack.LindenUDP { public delegate bool PacketMethod(IClientAPI simClient, Packet packet); @@ -298,6 +300,77 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// Used to adjust Sun Orbit values so Linden based viewers properly position sun private const float m_sunPainDaHalfOrbitalCutoff = 4.712388980384689858f; + // First log file or time has expired, start writing to a new log file +// +// ----------------------------------------------------------------- +// ----------------------------------------------------------------- +// THIS IS DEBUGGING CODE & SHOULD BE REMOVED +// ----------------------------------------------------------------- +// ----------------------------------------------------------------- + public class QueueLogger + { + public Int32 start = 0; + public StreamWriter Log = null; + private Dictionary m_idMap = new Dictionary(); + + public QueueLogger() + { + DateTime now = DateTime.Now; + String fname = String.Format("queue-{0}.log", now.ToString("yyyyMMddHHmmss")); + Log = new StreamWriter(fname); + + start = Util.EnvironmentTickCount(); + } + + public int LookupID(UUID uuid) + { + int localid; + if (! m_idMap.TryGetValue(uuid,out localid)) + { + localid = m_idMap.Count + 1; + m_idMap[uuid] = localid; + } + + return localid; + } + } + + public static QueueLogger QueueLog = null; + + // ----------------------------------------------------------------- + public void LogAvatarUpdateEvent(UUID client, UUID avatar, Int32 timeinqueue) + { + if (QueueLog == null) + QueueLog = new QueueLogger(); + + Int32 ticks = Util.EnvironmentTickCountSubtract(QueueLog.start); + lock(QueueLog) + { + int cid = QueueLog.LookupID(client); + int aid = QueueLog.LookupID(avatar); + QueueLog.Log.WriteLine("{0},AU,AV{1:D4},AV{2:D4},{3}",ticks,cid,aid,timeinqueue); + } + } + + // ----------------------------------------------------------------- + public void LogQueueProcessEvent(UUID client, PriorityQueue queue, uint maxup) + { + if (QueueLog == null) + QueueLog = new QueueLogger(); + + Int32 ticks = Util.EnvironmentTickCountSubtract(QueueLog.start); + lock(QueueLog) + { + int cid = QueueLog.LookupID(client); + QueueLog.Log.WriteLine("{0},PQ,AV{1:D4},{2},{3}",ticks,cid,maxup,queue.ToString()); + } + } +// ----------------------------------------------------------------- +// ----------------------------------------------------------------- +// ----------------------------------------------------------------- +// ----------------------------------------------------------------- +// + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); protected static Dictionary PacketHandlers = new Dictionary(); //Global/static handlers for all clients @@ -3547,18 +3620,23 @@ namespace OpenSim.Region.ClientStack.LindenUDP #region Primitive Packet/Data Sending Methods + /// /// Generate one of the object update packets based on PrimUpdateFlags /// and broadcast the packet to clients /// public void SendPrimUpdate(ISceneEntity entity, PrimUpdateFlags updateFlags) { - double priority = m_prioritizer.GetUpdatePriority(this, entity); + //double priority = m_prioritizer.GetUpdatePriority(this, entity); + uint priority = m_prioritizer.GetUpdatePriority(this, entity); lock (m_entityUpdates.SyncRoot) - m_entityUpdates.Enqueue(priority, new EntityUpdate(entity, updateFlags, m_scene.TimeDilation), entity.LocalId); + m_entityUpdates.Enqueue(priority, new EntityUpdate(entity, updateFlags, m_scene.TimeDilation)); } + private Int32 m_LastQueueFill = 0; + private uint m_maxUpdates = 0; + private void ProcessEntityUpdates(int maxUpdates) { OpenSim.Framework.Lazy> objectUpdateBlocks = new OpenSim.Framework.Lazy>(); @@ -3566,23 +3644,55 @@ namespace OpenSim.Region.ClientStack.LindenUDP OpenSim.Framework.Lazy> terseUpdateBlocks = new OpenSim.Framework.Lazy>(); OpenSim.Framework.Lazy> terseAgentUpdateBlocks = new OpenSim.Framework.Lazy>(); - if (maxUpdates <= 0) maxUpdates = Int32.MaxValue; + if (maxUpdates <= 0) + { + m_maxUpdates = Int32.MaxValue; + } + else + { + if (m_maxUpdates == 0 || m_LastQueueFill == 0) + { + m_maxUpdates = (uint)maxUpdates; + } + else + { + if (Util.EnvironmentTickCountSubtract(m_LastQueueFill) < 200) + m_maxUpdates += 5; + else + m_maxUpdates = m_maxUpdates >> 1; + } + m_maxUpdates = Util.Clamp(m_maxUpdates,10,500); + } + m_LastQueueFill = Util.EnvironmentTickCount(); + int updatesThisCall = 0; +// +// DEBUGGING CODE... REMOVE +// LogQueueProcessEvent(this.m_agentId,m_entityUpdates,m_maxUpdates); +// // We must lock for both manipulating the kill record and sending the packet, in order to avoid a race // condition where a kill can be processed before an out-of-date update for the same object. lock (m_killRecord) { float avgTimeDilation = 1.0f; EntityUpdate update; - while (updatesThisCall < maxUpdates) + Int32 timeinqueue; // this is just debugging code & can be dropped later + + while (updatesThisCall < m_maxUpdates) { lock (m_entityUpdates.SyncRoot) - if (!m_entityUpdates.TryDequeue(out update)) + if (!m_entityUpdates.TryDequeue(out update, out timeinqueue)) break; avgTimeDilation += update.TimeDilation; avgTimeDilation *= 0.5f; +// +// DEBUGGING CODE... REMOVE +// if (update.Entity is ScenePresence) +// LogAvatarUpdateEvent(this.m_agentId,update.Entity.UUID,timeinqueue); +// + if (update.Entity is SceneObjectPart) { SceneObjectPart part = (SceneObjectPart)update.Entity; @@ -3679,36 +3789,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else { - // if (update.Entity is SceneObjectPart && ((SceneObjectPart)update.Entity).IsAttachment) - // { - // SceneObjectPart sop = (SceneObjectPart)update.Entity; - // string text = sop.Text; - // if (text.IndexOf("\n") >= 0) - // text = text.Remove(text.IndexOf("\n")); - // - // if (m_attachmentsSent.Contains(sop.ParentID)) - // { - //// m_log.DebugFormat( - //// "[CLIENT]: Sending full info about attached prim {0} text {1}", - //// sop.LocalId, text); - // - // objectUpdateBlocks.Value.Add(CreatePrimUpdateBlock(sop, this.m_agentId)); - // - // m_attachmentsSent.Add(sop.LocalId); - // } - // else - // { - // m_log.DebugFormat( - // "[CLIENT]: Requeueing full update of prim {0} text {1} since we haven't sent its parent {2} yet", - // sop.LocalId, text, sop.ParentID); - // - // m_entityUpdates.Enqueue(double.MaxValue, update, sop.LocalId); - // } - // } - // else - // { - objectUpdateBlocks.Value.Add(CreatePrimUpdateBlock((SceneObjectPart)update.Entity, this.m_agentId)); - // } + objectUpdateBlocks.Value.Add(CreatePrimUpdateBlock((SceneObjectPart)update.Entity, this.m_agentId)); } } else if (!canUseImproved) @@ -3802,26 +3883,24 @@ namespace OpenSim.Region.ClientStack.LindenUDP public void ReprioritizeUpdates() { - //m_log.Debug("[CLIENT]: Reprioritizing prim updates for " + m_firstName + " " + m_lastName); - lock (m_entityUpdates.SyncRoot) m_entityUpdates.Reprioritize(UpdatePriorityHandler); } - private bool UpdatePriorityHandler(ref double priority, uint localID) + private bool UpdatePriorityHandler(ref uint priority, ISceneEntity entity) { - EntityBase entity; - if (m_scene.Entities.TryGetValue(localID, out entity)) + if (entity != null) { priority = m_prioritizer.GetUpdatePriority(this, entity); + return true; } - return priority != double.NaN; + return false; } public void FlushPrimUpdates() { - m_log.Debug("[CLIENT]: Flushing prim updates to " + m_firstName + " " + m_lastName); + m_log.WarnFormat("[CLIENT]: Flushing prim updates to " + m_firstName + " " + m_lastName); while (m_entityUpdates.Count > 0) ProcessEntityUpdates(-1); @@ -11713,86 +11792,85 @@ namespace OpenSim.Region.ClientStack.LindenUDP #region PriorityQueue public class PriorityQueue { - internal delegate bool UpdatePriorityHandler(ref double priority, uint local_id); + internal delegate bool UpdatePriorityHandler(ref uint priority, ISceneEntity entity); - private MinHeap[] m_heaps = new MinHeap[1]; + // Heap[0] for self updates + // Heap[1..12] for entity updates + + internal const uint m_numberOfQueues = 12; + private MinHeap[] m_heaps = new MinHeap[m_numberOfQueues]; private Dictionary m_lookupTable; - private Comparison m_comparison; private object m_syncRoot = new object(); - + private uint m_nextQueue = 0; + private UInt64 m_nextRequest = 0; + internal PriorityQueue() : - this(MinHeap.DEFAULT_CAPACITY, Comparer.Default) { } - internal PriorityQueue(int capacity) : - this(capacity, Comparer.Default) { } - internal PriorityQueue(IComparer comparer) : - this(new Comparison(comparer.Compare)) { } - internal PriorityQueue(Comparison comparison) : - this(MinHeap.DEFAULT_CAPACITY, comparison) { } - internal PriorityQueue(int capacity, IComparer comparer) : - this(capacity, new Comparison(comparer.Compare)) { } - internal PriorityQueue(int capacity, Comparison comparison) + this(MinHeap.DEFAULT_CAPACITY) { } + internal PriorityQueue(int capacity) { m_lookupTable = new Dictionary(capacity); for (int i = 0; i < m_heaps.Length; ++i) m_heaps[i] = new MinHeap(capacity); - this.m_comparison = comparison; } public object SyncRoot { get { return this.m_syncRoot; } } + internal int Count { get { int count = 0; for (int i = 0; i < m_heaps.Length; ++i) - count = m_heaps[i].Count; + count += m_heaps[i].Count; return count; } } - public bool Enqueue(double priority, EntityUpdate value, uint local_id) + public bool Enqueue(uint pqueue, EntityUpdate value) { - LookupItem item; + LookupItem lookup; - if (m_lookupTable.TryGetValue(local_id, out item)) + uint localid = value.Entity.LocalId; + UInt64 entry = m_nextRequest++; + if (m_lookupTable.TryGetValue(localid, out lookup)) { - // Combine flags - value.Flags |= item.Heap[item.Handle].Value.Flags; + entry = lookup.Heap[lookup.Handle].EntryOrder; + value.Flags |= lookup.Heap[lookup.Handle].Value.Flags; + lookup.Heap.Remove(lookup.Handle); + } - item.Heap[item.Handle] = new MinHeapItem(priority, value, local_id, this.m_comparison); - return false; - } - else - { - item.Heap = m_heaps[0]; - item.Heap.Add(new MinHeapItem(priority, value, local_id, this.m_comparison), ref item.Handle); - m_lookupTable.Add(local_id, item); - return true; - } + pqueue = Util.Clamp(pqueue, 0, m_numberOfQueues - 1); + lookup.Heap = m_heaps[pqueue]; + lookup.Heap.Add(new MinHeapItem(pqueue, entry, value), ref lookup.Handle); + m_lookupTable[localid] = lookup; + + return true; } - internal EntityUpdate Peek() + internal bool TryDequeue(out EntityUpdate value, out Int32 timeinqueue) { - for (int i = 0; i < m_heaps.Length; ++i) - if (m_heaps[i].Count > 0) - return m_heaps[i].Min().Value; - throw new InvalidOperationException(string.Format("The {0} is empty", this.GetType().ToString())); - } - - internal bool TryDequeue(out EntityUpdate value) - { - for (int i = 0; i < m_heaps.Length; ++i) + for (int i = 0; i < m_numberOfQueues; ++i) { - if (m_heaps[i].Count > 0) + // To get the fair queing, we cycle through each of the + // queues when finding an element to dequeue, this code + // assumes that the distribution of updates in the queues + // is polynomial, probably quadractic (eg distance of PI * R^2) + uint h = (uint)((m_nextQueue + i) % m_numberOfQueues); + if (m_heaps[h].Count > 0) { - MinHeapItem item = m_heaps[i].RemoveMin(); - m_lookupTable.Remove(item.LocalID); + m_nextQueue = (uint)((h + 1) % m_numberOfQueues); + + MinHeapItem item = m_heaps[h].RemoveMin(); + m_lookupTable.Remove(item.Value.Entity.LocalId); + timeinqueue = Util.EnvironmentTickCountSubtract(item.EntryTime); value = item.Value; + return true; } } + timeinqueue = 0; value = default(EntityUpdate); return false; } @@ -11800,68 +11878,107 @@ namespace OpenSim.Region.ClientStack.LindenUDP internal void Reprioritize(UpdatePriorityHandler handler) { MinHeapItem item; - double priority; - foreach (LookupItem lookup in new List(this.m_lookupTable.Values)) { if (lookup.Heap.TryGetValue(lookup.Handle, out item)) { - priority = item.Priority; - if (handler(ref priority, item.LocalID)) + uint pqueue = item.PriorityQueue; + uint localid = item.Value.Entity.LocalId; + + if (handler(ref pqueue, item.Value.Entity)) { - if (lookup.Heap.ContainsHandle(lookup.Handle)) - lookup.Heap[lookup.Handle] = - new MinHeapItem(priority, item.Value, item.LocalID, this.m_comparison); + // unless the priority queue has changed, there is no need to modify + // the entry + pqueue = Util.Clamp(pqueue, 0, m_numberOfQueues - 1); + if (pqueue != item.PriorityQueue) + { + lookup.Heap.Remove(lookup.Handle); + + LookupItem litem = lookup; + litem.Heap = m_heaps[pqueue]; + litem.Heap.Add(new MinHeapItem(pqueue, item), ref litem.Handle); + m_lookupTable[localid] = litem; + } } else { - m_log.Warn("[LLCLIENTVIEW]: UpdatePriorityHandler returned false, dropping update"); + m_log.WarnFormat("[LLCLIENTVIEW]: UpdatePriorityHandler returned false for {0}",item.Value.Entity.UUID); lookup.Heap.Remove(lookup.Handle); - this.m_lookupTable.Remove(item.LocalID); + this.m_lookupTable.Remove(localid); } } } } + public override string ToString() + { + string s = ""; + for (int i = 0; i < m_numberOfQueues; i++) + { + if (s != "") s += ","; + s += m_heaps[i].Count.ToString(); + } + return s; + } + #region MinHeapItem private struct MinHeapItem : IComparable { - private double priority; private EntityUpdate value; - private uint local_id; - private Comparison comparison; - - internal MinHeapItem(double priority, EntityUpdate value, uint local_id) : - this(priority, value, local_id, Comparer.Default) { } - internal MinHeapItem(double priority, EntityUpdate value, uint local_id, IComparer comparer) : - this(priority, value, local_id, new Comparison(comparer.Compare)) { } - internal MinHeapItem(double priority, EntityUpdate value, uint local_id, Comparison comparison) - { - this.priority = priority; - this.value = value; - this.local_id = local_id; - this.comparison = comparison; + internal EntityUpdate Value { + get { + return this.value; + } } - internal double Priority { get { return this.priority; } } - internal EntityUpdate Value { get { return this.value; } } - internal uint LocalID { get { return this.local_id; } } + private uint pqueue; + internal uint PriorityQueue { + get { + return this.pqueue; + } + } + + private Int32 entrytime; + internal Int32 EntryTime { + get { + return this.entrytime; + } + } + + private UInt64 entryorder; + internal UInt64 EntryOrder + { + get { + return this.entryorder; + } + } + + internal MinHeapItem(uint pqueue, MinHeapItem other) + { + this.entrytime = other.entrytime; + this.entryorder = other.entryorder; + this.value = other.value; + this.pqueue = pqueue; + } + + internal MinHeapItem(uint pqueue, UInt64 entryorder, EntityUpdate value) + { + this.entrytime = Util.EnvironmentTickCount(); + this.entryorder = entryorder; + this.value = value; + this.pqueue = pqueue; + } public override string ToString() { - StringBuilder sb = new StringBuilder(); - sb.Append("["); - sb.Append(this.priority.ToString()); - sb.Append(","); - if (this.value != null) - sb.Append(this.value.ToString()); - sb.Append("]"); - return sb.ToString(); + return String.Format("[{0},{1},{2}]",pqueue,entryorder,value.Entity.LocalId); } public int CompareTo(MinHeapItem other) { - return this.comparison(this.priority, other.priority); + // I'm assuming that the root part of an SOG is added to the update queue + // before the component parts + return Comparer.Default.Compare(this.EntryOrder, other.EntryOrder); } } #endregion diff --git a/OpenSim/Region/Framework/Scenes/Prioritizer.cs b/OpenSim/Region/Framework/Scenes/Prioritizer.cs index f9599f5a96..2764b05f1a 100644 --- a/OpenSim/Region/Framework/Scenes/Prioritizer.cs +++ b/OpenSim/Region/Framework/Scenes/Prioritizer.cs @@ -58,7 +58,7 @@ namespace OpenSim.Region.Framework.Scenes public class Prioritizer { -// private static readonly ILog m_log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + private static readonly ILog m_log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); ///
/// This is added to the priority of all child prims, to make sure that the root prim update is sent to the @@ -76,7 +76,74 @@ namespace OpenSim.Region.Framework.Scenes m_scene = scene; } - public double GetUpdatePriority(IClientAPI client, ISceneEntity entity) +// + public uint GetUpdatePriority(IClientAPI client, ISceneEntity entity) + { + if (entity == null) + { + m_log.WarnFormat("[PRIORITIZER] attempt to prioritize null entity"); + throw new InvalidOperationException("Prioritization entity not defined"); + } + + // If this is an update for our own avatar give it the highest priority + if (client.AgentId == entity.UUID) + return 0; + + // Get this agent's position + ScenePresence presence = m_scene.GetScenePresence(client.AgentId); + if (presence == null) + { + m_log.WarnFormat("[PRIORITIZER] attempt to prioritize agent no longer in the scene"); + throw new InvalidOperationException("Prioritization agent not defined"); + } + + // Use group position for child prims + Vector3 entityPos = entity.AbsolutePosition; + if (entity is SceneObjectPart) + { + SceneObjectGroup group = (entity as SceneObjectPart).ParentGroup; + if (group != null) + entityPos = group.AbsolutePosition; + } + + // Use the camera position for local agents and avatar position for remote agents + Vector3 presencePos = (presence.IsChildAgent) ? + presence.AbsolutePosition : + presence.CameraPosition; + + // Compute the distance... + double distance = Vector3.Distance(presencePos, entityPos); + + // And convert the distance to a priority queue, this computation gives queues + // at 10, 20, 40, 80, 160, 320, 640, and 1280m + uint pqueue = 1; + for (int i = 0; i < 8; i++) + { + if (distance < 10 * Math.Pow(2.0,i)) + break; + pqueue++; + } + + // If this is a root agent, then determine front & back + // Bump up the priority queue for any objects behind the avatar + if (! presence.IsChildAgent) + { + // Root agent, decrease priority for objects behind us + Vector3 camPosition = presence.CameraPosition; + Vector3 camAtAxis = presence.CameraAtAxis; + + // Plane equation + float d = -Vector3.Dot(camPosition, camAtAxis); + float p = Vector3.Dot(camAtAxis, entityPos) + d; + if (p < 0.0f) + pqueue++; + } + + return pqueue; + } +// + + public double bGetUpdatePriority(IClientAPI client, ISceneEntity entity) { double priority = 0; From 15c4bbea59066c5d5ed3d76d253a096788ac295a Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Mon, 4 Apr 2011 13:19:45 -0700 Subject: [PATCH 030/138] Fixed the prioritizer functions for the new priority queues --- .../Region/Framework/Scenes/Prioritizer.cs | 306 +++++------------- 1 file changed, 89 insertions(+), 217 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Prioritizer.cs b/OpenSim/Region/Framework/Scenes/Prioritizer.cs index 2764b05f1a..a14bb7001c 100644 --- a/OpenSim/Region/Framework/Scenes/Prioritizer.cs +++ b/OpenSim/Region/Framework/Scenes/Prioritizer.cs @@ -60,15 +60,6 @@ namespace OpenSim.Region.Framework.Scenes { private static readonly ILog m_log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - /// - /// This is added to the priority of all child prims, to make sure that the root prim update is sent to the - /// viewer before child prim updates. - /// The adjustment is added to child prims and subtracted from root prims, so the gap ends up - /// being double. We do it both ways so that there is a still a priority delta even if the priority is already - /// double.MinValue or double.MaxValue. - /// - private double m_childPrimAdjustmentFactor = 0.05; - private Scene m_scene; public Prioritizer(Scene scene) @@ -76,9 +67,19 @@ namespace OpenSim.Region.Framework.Scenes m_scene = scene; } -// + /// + /// Returns the priority queue into which the update should be placed. Updates within a + /// queue will be processed in arrival order. There are currently 12 priority queues + /// implemented in PriorityQueue class in LLClientView. Queue 0 is generally retained + /// for avatar updates. The fair queuing discipline for processing the priority queues + /// assumes that the number of entities in each priority queues increases exponentially. + /// So for example... if queue 1 contains all updates within 10m of the avatar or camera + /// then queue 2 at 20m is about 3X bigger in space & about 3X bigger in total number + /// of updates. + /// public uint GetUpdatePriority(IClientAPI client, ISceneEntity entity) { + // If entity is null we have a serious problem if (entity == null) { m_log.WarnFormat("[PRIORITIZER] attempt to prioritize null entity"); @@ -89,6 +90,78 @@ namespace OpenSim.Region.Framework.Scenes if (client.AgentId == entity.UUID) return 0; + uint priority; + + switch (m_scene.UpdatePrioritizationScheme) + { + case UpdatePrioritizationSchemes.Time: + priority = GetPriorityByTime(client, entity); + break; + case UpdatePrioritizationSchemes.Distance: + priority = GetPriorityByDistance(client, entity); + break; + case UpdatePrioritizationSchemes.SimpleAngularDistance: + priority = GetPriorityByDistance(client, entity); // TODO: Reimplement SimpleAngularDistance + break; + case UpdatePrioritizationSchemes.FrontBack: + priority = GetPriorityByFrontBack(client, entity); + break; + case UpdatePrioritizationSchemes.BestAvatarResponsiveness: + priority = GetPriorityByBestAvatarResponsiveness(client, entity); + break; + default: + throw new InvalidOperationException("UpdatePrioritizationScheme not defined."); + } + + return priority; + } + + + private uint GetPriorityByTime(IClientAPI client, ISceneEntity entity) + { + return 1; + } + + private uint GetPriorityByDistance(IClientAPI client, ISceneEntity entity) + { + return ComputeDistancePriority(client,entity,false); + } + + private uint GetPriorityByFrontBack(IClientAPI client, ISceneEntity entity) + { + return ComputeDistancePriority(client,entity,true); + } + + private uint GetPriorityByBestAvatarResponsiveness(IClientAPI client, ISceneEntity entity) + { + uint pqueue = ComputeDistancePriority(client,entity,true); + + ScenePresence presence = m_scene.GetScenePresence(client.AgentId); + if (presence != null) + { + if (!presence.IsChildAgent) + { + if (entity is SceneObjectPart) + { + // Non physical prims are lower priority than physical prims + PhysicsActor physActor = ((SceneObjectPart)entity).ParentGroup.RootPart.PhysActor; + if (physActor == null || !physActor.IsPhysical) + pqueue++; + + // Attachments are high priority, + // MIC: shouldn't these already be in the highest priority queue already + // since their root position is same as the avatars? + if (((SceneObjectPart)entity).ParentGroup.RootPart.IsAttachment) + pqueue = 1; + } + } + } + + return pqueue; + } + + private uint ComputeDistancePriority(IClientAPI client, ISceneEntity entity, bool useFrontBack) + { // Get this agent's position ScenePresence presence = m_scene.GetScenePresence(client.AgentId); if (presence == null) @@ -97,7 +170,10 @@ namespace OpenSim.Region.Framework.Scenes throw new InvalidOperationException("Prioritization agent not defined"); } - // Use group position for child prims + // Use group position for child prims, since we are putting child prims in + // the same queue with the root of the group, the root prim (which goes into + // the queue first) should always be sent first, no need to adjust child prim + // priorities Vector3 entityPos = entity.AbsolutePosition; if (entity is SceneObjectPart) { @@ -125,8 +201,8 @@ namespace OpenSim.Region.Framework.Scenes } // If this is a root agent, then determine front & back - // Bump up the priority queue for any objects behind the avatar - if (! presence.IsChildAgent) + // Bump up the priority queue (drop the priority) for any objects behind the avatar + if (useFrontBack && ! presence.IsChildAgent) { // Root agent, decrease priority for objects behind us Vector3 camPosition = presence.CameraPosition; @@ -141,210 +217,6 @@ namespace OpenSim.Region.Framework.Scenes return pqueue; } -// - public double bGetUpdatePriority(IClientAPI client, ISceneEntity entity) - { - double priority = 0; - - if (entity == null) - return 100000; - - switch (m_scene.UpdatePrioritizationScheme) - { - case UpdatePrioritizationSchemes.Time: - priority = GetPriorityByTime(); - break; - case UpdatePrioritizationSchemes.Distance: - priority = GetPriorityByDistance(client, entity); - break; - case UpdatePrioritizationSchemes.SimpleAngularDistance: - priority = GetPriorityByDistance(client, entity); // TODO: Reimplement SimpleAngularDistance - break; - case UpdatePrioritizationSchemes.FrontBack: - priority = GetPriorityByFrontBack(client, entity); - break; - case UpdatePrioritizationSchemes.BestAvatarResponsiveness: - priority = GetPriorityByBestAvatarResponsiveness(client, entity); - break; - default: - throw new InvalidOperationException("UpdatePrioritizationScheme not defined."); - } - - // Adjust priority so that root prims are sent to the viewer first. This is especially important for - // attachments acting as huds, since current viewers fail to display hud child prims if their updates - // arrive before the root one. - if (entity is SceneObjectPart) - { - SceneObjectPart sop = ((SceneObjectPart)entity); - - if (sop.IsRoot) - { - if (priority >= double.MinValue + m_childPrimAdjustmentFactor) - priority -= m_childPrimAdjustmentFactor; - } - else - { - if (priority <= double.MaxValue - m_childPrimAdjustmentFactor) - priority += m_childPrimAdjustmentFactor; - } - } - - return priority; - } - - private double GetPriorityByTime() - { - return DateTime.UtcNow.ToOADate(); - } - - private double GetPriorityByDistance(IClientAPI client, ISceneEntity entity) - { - ScenePresence presence = m_scene.GetScenePresence(client.AgentId); - if (presence != null) - { - // If this is an update for our own avatar give it the highest priority - if (presence == entity) - return 0.0; - - // Use the camera position for local agents and avatar position for remote agents - Vector3 presencePos = (presence.IsChildAgent) ? - presence.AbsolutePosition : - presence.CameraPosition; - - // Use group position for child prims - Vector3 entityPos; - if (entity is SceneObjectPart) - { - // Can't use Scene.GetGroupByPrim() here, since the entity may have been delete from the scene - // before its scheduled update was triggered - //entityPos = m_scene.GetGroupByPrim(entity.LocalId).AbsolutePosition; - entityPos = ((SceneObjectPart)entity).ParentGroup.AbsolutePosition; - } - else - { - entityPos = entity.AbsolutePosition; - } - - return Vector3.DistanceSquared(presencePos, entityPos); - } - - return double.NaN; - } - - private double GetPriorityByFrontBack(IClientAPI client, ISceneEntity entity) - { - ScenePresence presence = m_scene.GetScenePresence(client.AgentId); - if (presence != null) - { - // If this is an update for our own avatar give it the highest priority - if (presence == entity) - return 0.0; - - // Use group position for child prims - Vector3 entityPos = entity.AbsolutePosition; - if (entity is SceneObjectPart) - { - // Can't use Scene.GetGroupByPrim() here, since the entity may have been delete from the scene - // before its scheduled update was triggered - //entityPos = m_scene.GetGroupByPrim(entity.LocalId).AbsolutePosition; - entityPos = ((SceneObjectPart)entity).ParentGroup.AbsolutePosition; - } - else - { - entityPos = entity.AbsolutePosition; - } - - if (!presence.IsChildAgent) - { - // Root agent. Use distance from camera and a priority decrease for objects behind us - Vector3 camPosition = presence.CameraPosition; - Vector3 camAtAxis = presence.CameraAtAxis; - - // Distance - double priority = Vector3.DistanceSquared(camPosition, entityPos); - - // Plane equation - float d = -Vector3.Dot(camPosition, camAtAxis); - float p = Vector3.Dot(camAtAxis, entityPos) + d; - if (p < 0.0f) priority *= 2.0; - - return priority; - } - else - { - // Child agent. Use the normal distance method - Vector3 presencePos = presence.AbsolutePosition; - - return Vector3.DistanceSquared(presencePos, entityPos); - } - } - - return double.NaN; - } - - private double GetPriorityByBestAvatarResponsiveness(IClientAPI client, ISceneEntity entity) - { - // If this is an update for our own avatar give it the highest priority - if (client.AgentId == entity.UUID) - return 0.0; - if (entity == null) - return double.NaN; - - // Use group position for child prims - Vector3 entityPos = entity.AbsolutePosition; - if (entity is SceneObjectPart) - { - SceneObjectGroup group = (entity as SceneObjectPart).ParentGroup; - if (group != null) - entityPos = group.AbsolutePosition; - else - entityPos = entity.AbsolutePosition; - } - else - entityPos = entity.AbsolutePosition; - - ScenePresence presence = m_scene.GetScenePresence(client.AgentId); - if (presence != null) - { - if (!presence.IsChildAgent) - { - if (entity is ScenePresence) - return 1.0; - - // Root agent. Use distance from camera and a priority decrease for objects behind us - Vector3 camPosition = presence.CameraPosition; - Vector3 camAtAxis = presence.CameraAtAxis; - - // Distance - double priority = Vector3.DistanceSquared(camPosition, entityPos); - - // Plane equation - float d = -Vector3.Dot(camPosition, camAtAxis); - float p = Vector3.Dot(camAtAxis, entityPos) + d; - if (p < 0.0f) priority *= 2.0; - - if (entity is SceneObjectPart) - { - PhysicsActor physActor = ((SceneObjectPart)entity).ParentGroup.RootPart.PhysActor; - if (physActor == null || !physActor.IsPhysical) - priority += 100; - - if (((SceneObjectPart)entity).ParentGroup.RootPart.IsAttachment) - priority = 1.0; - } - return priority; - } - else - { - // Child agent. Use the normal distance method - Vector3 presencePos = presence.AbsolutePosition; - - return Vector3.DistanceSquared(presencePos, entityPos); - } - } - - return double.NaN; - } } } From 8b134f37f2c8cc7895153af2fdc79e785f3b93e2 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Mon, 4 Apr 2011 14:18:26 -0700 Subject: [PATCH 031/138] Fix a bug in the computation of the RTO. Basically... the RTO (the time to wait to retransmit packets) always maxed out (no retransmissions for 24 or 48 seconds. Note that this is going to cause faster (and more) retransmissions. Fix for dynamic throttling needs to go with this. --- OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index 65a8fe3ca8..9a8bfd357c 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs @@ -149,7 +149,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// Caches packed throttle information private byte[] m_packedThrottles; - private int m_defaultRTO = 3000; + private int m_defaultRTO = 1000; // 1sec is the recommendation in the RFC private int m_maxRTO = 60000; /// @@ -557,7 +557,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP int rto = (int)(SRTT + Math.Max(m_udpServer.TickCountResolution, K * RTTVAR)); // Clamp the retransmission timeout to manageable values - rto = Utils.Clamp(RTO, m_defaultRTO, m_maxRTO); + rto = Utils.Clamp(rto, m_defaultRTO, m_maxRTO); RTO = rto; From f58941e89f122c2e1fd54a2f817fb8114e6c80ed Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 5 Apr 2011 01:30:13 +0100 Subject: [PATCH 032/138] Make the "All Estates" option work from the client (this makes chosen changes to all the estates that the user owns). This applies to adding/removing estate users, groups, managers and bans. This is the application of the AllEstates_0.5.patch from http://opensimulator.org/mantis/view.php?id=5420 Thanks very much, Snoopy! --- OpenSim/Data/MSSQL/MSSQLEstateData.cs | 5 + OpenSim/Data/MySQL/MySQLEstateData.cs | 30 ++++ OpenSim/Data/SQLite/SQLiteEstateData.cs | 22 +++ OpenSim/Data/SQLiteLegacy/SQLiteEstateData.cs | 24 ++- .../ClientStack/LindenUDP/LLClientView.cs | 24 ++- .../World/Estate/EstateManagementModule.cs | 149 +++++++++++++++++- .../Region/CoreModules/World/Sun/SunModule.cs | 6 +- .../Interfaces/IEstateDataService.cs | 6 + .../Framework/Interfaces/IEstateDataStore.cs | 6 + .../BareBonesShared/BareBonesSharedModule.cs | 3 + .../Simulation/EstateDataService.cs | 5 + 11 files changed, 268 insertions(+), 12 deletions(-) diff --git a/OpenSim/Data/MSSQL/MSSQLEstateData.cs b/OpenSim/Data/MSSQL/MSSQLEstateData.cs index 92a8d80b9a..d10ebe4f48 100644 --- a/OpenSim/Data/MSSQL/MSSQLEstateData.cs +++ b/OpenSim/Data/MSSQL/MSSQLEstateData.cs @@ -372,6 +372,11 @@ namespace OpenSim.Data.MSSQL return new List(); } + public List GetEstatesByOwner(UUID ownerID) + { + return new List(); + } + public bool LinkRegion(UUID regionID, int estateID) { // TODO: Implementation! diff --git a/OpenSim/Data/MySQL/MySQLEstateData.cs b/OpenSim/Data/MySQL/MySQLEstateData.cs index 6d72e82e2b..86416d1775 100644 --- a/OpenSim/Data/MySQL/MySQLEstateData.cs +++ b/OpenSim/Data/MySQL/MySQLEstateData.cs @@ -484,6 +484,36 @@ namespace OpenSim.Data.MySQL return result; } + public List GetEstatesByOwner(UUID ownerID) + { + List result = new List(); + + using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) + { + dbcon.Open(); + + using (MySqlCommand cmd = dbcon.CreateCommand()) + { + cmd.CommandText = "select estateID from estate_settings where EstateOwner = ?EstateOwner"; + cmd.Parameters.AddWithValue("?EstateOwner", ownerID); + + using (IDataReader reader = cmd.ExecuteReader()) + { + while (reader.Read()) + { + result.Add(Convert.ToInt32(reader["EstateID"])); + } + reader.Close(); + } + } + + + dbcon.Close(); + } + + return result; + } + public bool LinkRegion(UUID regionID, int estateID) { using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) diff --git a/OpenSim/Data/SQLite/SQLiteEstateData.cs b/OpenSim/Data/SQLite/SQLiteEstateData.cs index 6afc5401d8..2f05a6e9f4 100644 --- a/OpenSim/Data/SQLite/SQLiteEstateData.cs +++ b/OpenSim/Data/SQLite/SQLiteEstateData.cs @@ -412,6 +412,28 @@ namespace OpenSim.Data.SQLite return result; } + public List GetEstatesByOwner(UUID ownerID) + { + List result = new List(); + + string sql = "select EstateID from estate_settings where estate_settings.EstateOwner = :EstateOwner"; + + SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); + + cmd.CommandText = sql; + cmd.Parameters.AddWithValue(":EstateOwner", ownerID); + + IDataReader r = cmd.ExecuteReader(); + + while (r.Read()) + { + result.Add(Convert.ToInt32(r["EstateID"])); + } + r.Close(); + + return result; + } + public bool LinkRegion(UUID regionID, int estateID) { SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); diff --git a/OpenSim/Data/SQLiteLegacy/SQLiteEstateData.cs b/OpenSim/Data/SQLiteLegacy/SQLiteEstateData.cs index ad28c000c6..4dd225fddb 100644 --- a/OpenSim/Data/SQLiteLegacy/SQLiteEstateData.cs +++ b/OpenSim/Data/SQLiteLegacy/SQLiteEstateData.cs @@ -401,7 +401,29 @@ namespace OpenSim.Data.SQLiteLegacy return result; } - + + public List GetEstatesByOwner(UUID ownerID) + { + List result = new List(); + + string sql = "select EstateID from estate_settings where estate_settings.EstateOwner = :EstateOwner"; + + SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); + + cmd.CommandText = sql; + cmd.Parameters.Add(":EstateOwner", ownerID); + + IDataReader r = cmd.ExecuteReader(); + + while (r.Read()) + { + result.Add(Convert.ToInt32(r["EstateID"])); + } + r.Close(); + + return result; + } + public bool LinkRegion(UUID regionID, int estateID) { SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 2faffae58e..f8a0e0758a 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -8809,13 +8809,29 @@ namespace OpenSim.Region.ClientStack.LindenUDP case "instantmessage": if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false)) { - if (messagePacket.ParamList.Length < 5) + if (messagePacket.ParamList.Length < 2) return true; + UUID invoice = messagePacket.MethodData.Invoice; - UUID SenderID = new UUID(Utils.BytesToString(messagePacket.ParamList[2].Parameter)); - string SenderName = Utils.BytesToString(messagePacket.ParamList[3].Parameter); - string Message = Utils.BytesToString(messagePacket.ParamList[4].Parameter); UUID sessionID = messagePacket.AgentData.SessionID; + + UUID SenderID; + string SenderName; + string Message; + + if (messagePacket.ParamList.Length < 5) + { + SenderID = AgentId; + SenderName = Utils.BytesToString(messagePacket.ParamList[0].Parameter); + Message = Utils.BytesToString(messagePacket.ParamList[1].Parameter); + } + else + { + SenderID = new UUID(Utils.BytesToString(messagePacket.ParamList[2].Parameter)); + SenderName = Utils.BytesToString(messagePacket.ParamList[3].Parameter); + Message = Utils.BytesToString(messagePacket.ParamList[4].Parameter); + } + OnEstateBlueBoxMessageRequest(this, invoice, SenderID, sessionID, SenderName, Message); } return true; diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs index 57ab13550a..b6d64acb80 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs @@ -200,12 +200,13 @@ namespace OpenSim.Region.CoreModules.World.Estate } Scene.RegionInfo.RegionSettings.Save(); TriggerRegionInfoChange(); + sendRegionHandshakeToAll(); sendRegionInfoPacketToAll(); } private void handleCommitEstateTerrainTextureRequest(IClientAPI remoteClient) { - sendRegionHandshakeToAll(); + // sendRegionHandshakeToAll(); } public void setRegionTerrainSettings(float WaterHeight, @@ -274,8 +275,25 @@ namespace OpenSim.Region.CoreModules.World.Estate { if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions()) { + if ((estateAccessType & 1) != 0) // All estates + { + List estateIDs = Scene.EstateDataService.GetEstatesByOwner(Scene.RegionInfo.EstateSettings.EstateOwner); + EstateSettings estateSettings; + + foreach (int estateID in estateIDs) + { + if (estateID != Scene.RegionInfo.EstateSettings.EstateID) + { + estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); + estateSettings.AddEstateUser(user); + estateSettings.Save(); + } + } + } + Scene.RegionInfo.EstateSettings.AddEstateUser(user); Scene.RegionInfo.EstateSettings.Save(); + TriggerEstateInfoChange(); remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, Scene.RegionInfo.EstateSettings.EstateAccess, Scene.RegionInfo.EstateSettings.EstateID); } @@ -289,10 +307,26 @@ namespace OpenSim.Region.CoreModules.World.Estate { if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions()) { + if ((estateAccessType & 1) != 0) // All estates + { + List estateIDs = Scene.EstateDataService.GetEstatesByOwner(Scene.RegionInfo.EstateSettings.EstateOwner); + EstateSettings estateSettings; + + foreach (int estateID in estateIDs) + { + if (estateID != Scene.RegionInfo.EstateSettings.EstateID) + { + estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); + estateSettings.RemoveEstateUser(user); + estateSettings.Save(); + } + } + } + Scene.RegionInfo.EstateSettings.RemoveEstateUser(user); Scene.RegionInfo.EstateSettings.Save(); - TriggerEstateInfoChange(); + TriggerEstateInfoChange(); remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, Scene.RegionInfo.EstateSettings.EstateAccess, Scene.RegionInfo.EstateSettings.EstateID); } else @@ -304,8 +338,25 @@ namespace OpenSim.Region.CoreModules.World.Estate { if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions()) { + if ((estateAccessType & 1) != 0) // All estates + { + List estateIDs = Scene.EstateDataService.GetEstatesByOwner(Scene.RegionInfo.EstateSettings.EstateOwner); + EstateSettings estateSettings; + + foreach (int estateID in estateIDs) + { + if (estateID != Scene.RegionInfo.EstateSettings.EstateID) + { + estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); + estateSettings.AddEstateGroup(user); + estateSettings.Save(); + } + } + } + Scene.RegionInfo.EstateSettings.AddEstateGroup(user); Scene.RegionInfo.EstateSettings.Save(); + TriggerEstateInfoChange(); remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, Scene.RegionInfo.EstateSettings.EstateGroups, Scene.RegionInfo.EstateSettings.EstateID); } @@ -318,10 +369,26 @@ namespace OpenSim.Region.CoreModules.World.Estate { if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions()) { + if ((estateAccessType & 1) != 0) // All estates + { + List estateIDs = Scene.EstateDataService.GetEstatesByOwner(Scene.RegionInfo.EstateSettings.EstateOwner); + EstateSettings estateSettings; + + foreach (int estateID in estateIDs) + { + if (estateID != Scene.RegionInfo.EstateSettings.EstateID) + { + estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); + estateSettings.RemoveEstateGroup(user); + estateSettings.Save(); + } + } + } + Scene.RegionInfo.EstateSettings.RemoveEstateGroup(user); Scene.RegionInfo.EstateSettings.Save(); - TriggerEstateInfoChange(); + TriggerEstateInfoChange(); remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, Scene.RegionInfo.EstateSettings.EstateGroups, Scene.RegionInfo.EstateSettings.EstateID); } else @@ -349,6 +416,29 @@ namespace OpenSim.Region.CoreModules.World.Estate if (!alreadyInList) { + if ((estateAccessType & 1) != 0) // All estates + { + List estateIDs = Scene.EstateDataService.GetEstatesByOwner(Scene.RegionInfo.EstateSettings.EstateOwner); + EstateSettings estateSettings; + + foreach (int estateID in estateIDs) + { + if (estateID != Scene.RegionInfo.EstateSettings.EstateID) + { + EstateBan bitem = new EstateBan(); + + bitem.BannedUserID = user; + bitem.EstateID = (uint)estateID; + bitem.BannedHostAddress = "0.0.0.0"; + bitem.BannedHostIPMask = "0.0.0.0"; + + estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); + estateSettings.AddBan(bitem); + estateSettings.Save(); + } + } + } + EstateBan item = new EstateBan(); item.BannedUserID = user; @@ -358,6 +448,7 @@ namespace OpenSim.Region.CoreModules.World.Estate Scene.RegionInfo.EstateSettings.AddBan(item); Scene.RegionInfo.EstateSettings.Save(); + TriggerEstateInfoChange(); ScenePresence s = Scene.GetScenePresence(user); @@ -403,8 +494,25 @@ namespace OpenSim.Region.CoreModules.World.Estate if (alreadyInList && listitem != null) { + if ((estateAccessType & 1) != 0) // All estates + { + List estateIDs = Scene.EstateDataService.GetEstatesByOwner(Scene.RegionInfo.EstateSettings.EstateOwner); + EstateSettings estateSettings; + + foreach (int estateID in estateIDs) + { + if (estateID != Scene.RegionInfo.EstateSettings.EstateID) + { + estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); + estateSettings.RemoveBan(user); + estateSettings.Save(); + } + } + } + Scene.RegionInfo.EstateSettings.RemoveBan(listitem.BannedUserID); Scene.RegionInfo.EstateSettings.Save(); + TriggerEstateInfoChange(); } else @@ -424,8 +532,25 @@ namespace OpenSim.Region.CoreModules.World.Estate { if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions()) { + if ((estateAccessType & 1) != 0) // All estates + { + List estateIDs = Scene.EstateDataService.GetEstatesByOwner(Scene.RegionInfo.EstateSettings.EstateOwner); + EstateSettings estateSettings; + + foreach (int estateID in estateIDs) + { + if (estateID != Scene.RegionInfo.EstateSettings.EstateID) + { + estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); + estateSettings.AddEstateManager(user); + estateSettings.Save(); + } + } + } + Scene.RegionInfo.EstateSettings.AddEstateManager(user); Scene.RegionInfo.EstateSettings.Save(); + TriggerEstateInfoChange(); remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, Scene.RegionInfo.EstateSettings.EstateManagers, Scene.RegionInfo.EstateSettings.EstateID); } @@ -438,10 +563,26 @@ namespace OpenSim.Region.CoreModules.World.Estate { if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions()) { + if ((estateAccessType & 1) != 0) // All estates + { + List estateIDs = Scene.EstateDataService.GetEstatesByOwner(Scene.RegionInfo.EstateSettings.EstateOwner); + EstateSettings estateSettings; + + foreach (int estateID in estateIDs) + { + if (estateID != Scene.RegionInfo.EstateSettings.EstateID) + { + estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID); + estateSettings.RemoveEstateManager(user); + estateSettings.Save(); + } + } + } + Scene.RegionInfo.EstateSettings.RemoveEstateManager(user); Scene.RegionInfo.EstateSettings.Save(); - TriggerEstateInfoChange(); + TriggerEstateInfoChange(); remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, Scene.RegionInfo.EstateSettings.EstateManagers, Scene.RegionInfo.EstateSettings.EstateID); } else diff --git a/OpenSim/Region/CoreModules/World/Sun/SunModule.cs b/OpenSim/Region/CoreModules/World/Sun/SunModule.cs index cea7c78ce8..4e14c73a25 100644 --- a/OpenSim/Region/CoreModules/World/Sun/SunModule.cs +++ b/OpenSim/Region/CoreModules/World/Sun/SunModule.cs @@ -469,8 +469,8 @@ namespace OpenSim.Region.CoreModules m_SunFixedHour = FixedSunHour; m_SunFixed = FixedSun; - m_log.DebugFormat("[SUN]: Sun Settings Update: Fixed Sun? : {0}", m_SunFixed.ToString()); - m_log.DebugFormat("[SUN]: Sun Settings Update: Sun Hour : {0}", m_SunFixedHour.ToString()); + // m_log.DebugFormat("[SUN]: Sun Settings Update: Fixed Sun? : {0}", m_SunFixed.ToString()); + // m_log.DebugFormat("[SUN]: Sun Settings Update: Sun Hour : {0}", m_SunFixedHour.ToString()); receivedEstateToolsSunUpdate = true; @@ -480,7 +480,7 @@ namespace OpenSim.Region.CoreModules // When sun settings are updated, we should update all clients with new settings. SunUpdateToAllClients(); - m_log.DebugFormat("[SUN]: PosTime : {0}", PosTime.ToString()); + // m_log.DebugFormat("[SUN]: PosTime : {0}", PosTime.ToString()); } } diff --git a/OpenSim/Region/Framework/Interfaces/IEstateDataService.cs b/OpenSim/Region/Framework/Interfaces/IEstateDataService.cs index 38c10a6d1b..7066cf21e0 100644 --- a/OpenSim/Region/Framework/Interfaces/IEstateDataService.cs +++ b/OpenSim/Region/Framework/Interfaces/IEstateDataService.cs @@ -70,6 +70,12 @@ namespace OpenSim.Region.Framework.Interfaces /// List GetEstates(string search); + /// + /// Get the IDs of all estates owned by the given user. + /// + /// An empty list if no estates were found. + List GetEstatesByOwner(UUID ownerID); + /// /// Get the IDs of all estates. /// diff --git a/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs b/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs index c82661db74..d790a30b8a 100644 --- a/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs +++ b/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs @@ -74,6 +74,12 @@ namespace OpenSim.Region.Framework.Interfaces /// Name of estate to search for. This is the exact name, no parttern matching is done. /// List GetEstates(string search); + + /// + /// Get the IDs of all estates owned by the given user. + /// + /// An empty list if no estates were found. + List GetEstatesByOwner(UUID ownerID); /// /// Get the IDs of all estates. diff --git a/OpenSim/Region/OptionalModules/Example/BareBonesShared/BareBonesSharedModule.cs b/OpenSim/Region/OptionalModules/Example/BareBonesShared/BareBonesSharedModule.cs index 781fe952d2..dddea3e1d8 100644 --- a/OpenSim/Region/OptionalModules/Example/BareBonesShared/BareBonesSharedModule.cs +++ b/OpenSim/Region/OptionalModules/Example/BareBonesShared/BareBonesSharedModule.cs @@ -33,6 +33,9 @@ using Nini.Config; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; +[assembly: Addin("BareBonesSharedModule", "0.1")] +[assembly: AddinDependency("OpenSim", "0.5")] + namespace OpenSim.Region.OptionalModules.Example.BareBonesShared { /// diff --git a/OpenSim/Services/Connectors/Simulation/EstateDataService.cs b/OpenSim/Services/Connectors/Simulation/EstateDataService.cs index d0588bff09..7184ba188e 100644 --- a/OpenSim/Services/Connectors/Simulation/EstateDataService.cs +++ b/OpenSim/Services/Connectors/Simulation/EstateDataService.cs @@ -111,6 +111,11 @@ namespace OpenSim.Services.Connectors return m_database.GetEstatesAll(); } + public List GetEstatesByOwner(UUID ownerID) + { + return m_database.GetEstatesByOwner(ownerID); + } + public bool LinkRegion(UUID regionID, int estateID) { return m_database.LinkRegion(regionID, estateID); From b2fbadeae82f0bdbfb3b7bdc8e14cb7f5b693092 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Mon, 4 Apr 2011 20:02:13 -0700 Subject: [PATCH 033/138] Updates NullStorage plugin. Thanks MisterBlue... --- OpenSim/Data/Null/NullEstateData.cs | 123 ++++++++++++++++++++++++ OpenSim/Data/Null/NullSimulationData.cs | 17 ++++ 2 files changed, 140 insertions(+) create mode 100755 OpenSim/Data/Null/NullEstateData.cs diff --git a/OpenSim/Data/Null/NullEstateData.cs b/OpenSim/Data/Null/NullEstateData.cs new file mode 100755 index 0000000000..6ce7a367fe --- /dev/null +++ b/OpenSim/Data/Null/NullEstateData.cs @@ -0,0 +1,123 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.Reflection; +using log4net; +using OpenMetaverse; +using OpenSim.Framework; +using OpenSim.Region.Framework; +using OpenSim.Region.Framework.Interfaces; + +namespace OpenSim.Data.Null +{ + public class NullEstateStore : IEstateDataStore + { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + private string m_connectionString; + + protected virtual Assembly Assembly + { + get { return GetType().Assembly; } + } + + public NullEstateStore() + { + } + + public NullEstateStore(string connectionString) + { + Initialise(connectionString); + } + + public void Initialise(string connectionString) + { + m_connectionString = connectionString; + } + + private string[] FieldList + { + get { return new string[0]; } + } + + public EstateSettings LoadEstateSettings(UUID regionID, bool create) + { + // This fools the initialization caller into thinking an estate was fetched (a check in OpenSimBase). + // The estate info is pretty empty so don't try banning anyone. + EstateSettings oneEstate = new EstateSettings(); + oneEstate.EstateID = 1; + return oneEstate; + } + + public void StoreEstateSettings(EstateSettings es) + { + return; + } + + public EstateSettings LoadEstateSettings(int estateID) + { + return new EstateSettings(); + } + + public List LoadEstateSettingsAll() + { + List allEstateSettings = new List(); + allEstateSettings.Add(new EstateSettings()); + return allEstateSettings; + } + + public List GetEstatesAll() + { + List result = new List(); + return result; + } + + public List GetEstates(string search) + { + List result = new List(); + return result; + } + + public bool LinkRegion(UUID regionID, int estateID) + { + return false; + } + + public List GetRegions(int estateID) + { + List result = new List(); + return result; + } + + public bool DeleteEstate(int estateID) + { + return false; + } + } +} diff --git a/OpenSim/Data/Null/NullSimulationData.cs b/OpenSim/Data/Null/NullSimulationData.cs index eb4e313f84..e8d733b582 100644 --- a/OpenSim/Data/Null/NullSimulationData.cs +++ b/OpenSim/Data/Null/NullSimulationData.cs @@ -38,6 +38,15 @@ namespace OpenSim.Data.Null /// public class NullSimulationData : ISimulationDataStore { + public NullSimulationData() + { + } + + public NullSimulationData(string connectionString) + { + Initialise(connectionString); + } + public void Initialise(string dbfile) { return; @@ -85,12 +94,20 @@ namespace OpenSim.Data.Null return new List(); } + Dictionary m_terrains = new Dictionary(); public void StoreTerrain(double[,] ter, UUID regionID) { + if (m_terrains.ContainsKey(regionID)) + m_terrains.Remove(regionID); + m_terrains.Add(regionID, ter); } public double[,] LoadTerrain(UUID regionID) { + if (m_terrains.ContainsKey(regionID)) + { + return m_terrains[regionID]; + } return null; } From 18e206d2ed5cc1828f2ada27ff4698bdc0b84352 Mon Sep 17 00:00:00 2001 From: "Teravus Ovares (Dan Olivares)" Date: Mon, 4 Apr 2011 23:45:28 -0400 Subject: [PATCH 034/138] * Bugfix - Compile NullEstateData implement public List IEstateDataStore.GetEstatesByOwner(UUID) --- OpenSim/Data/Null/NullEstateData.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/OpenSim/Data/Null/NullEstateData.cs b/OpenSim/Data/Null/NullEstateData.cs index 6ce7a367fe..0cebff55aa 100755 --- a/OpenSim/Data/Null/NullEstateData.cs +++ b/OpenSim/Data/Null/NullEstateData.cs @@ -119,5 +119,15 @@ namespace OpenSim.Data.Null { return false; } + + #region IEstateDataStore Members + + + public List GetEstatesByOwner(UUID ownerID) + { + return new List(); + } + + #endregion } } From c1dec225abd09efc5061b2ffd40996ad13fd16e9 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 5 Apr 2011 17:47:11 +0100 Subject: [PATCH 035/138] Handle the client's parcel info requests asynchronously rather than synchronously. Handling these synchronously kills the inbound packet loop if many requests are made for remote land and those requests are handled slowly or timeout (timeout is 10s) This can happen if a user searches for "land for sale" and then clicks many of the parcels in the list (or just presses down arrow to move through every entry). --- OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index f8a0e0758a..34d72ac69b 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -4938,7 +4938,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP AddLocalPacketHandler(PacketType.TeleportLocationRequest, HandleTeleportLocationRequest); AddLocalPacketHandler(PacketType.UUIDNameRequest, HandleUUIDNameRequest, false); AddLocalPacketHandler(PacketType.RegionHandleRequest, HandleRegionHandleRequest); - AddLocalPacketHandler(PacketType.ParcelInfoRequest, HandleParcelInfoRequest, false); + AddLocalPacketHandler(PacketType.ParcelInfoRequest, HandleParcelInfoRequest); AddLocalPacketHandler(PacketType.ParcelAccessListRequest, HandleParcelAccessListRequest, false); AddLocalPacketHandler(PacketType.ParcelAccessListUpdate, HandleParcelAccessListUpdate, false); AddLocalPacketHandler(PacketType.ParcelPropertiesRequest, HandleParcelPropertiesRequest, false); From 3d400fc663104b6d899ee37afeb7f83c68af45d4 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 5 Apr 2011 18:24:23 +0100 Subject: [PATCH 036/138] If an object is selected, then don't include it in owner/group/others prim counts. This fixes the total prim count that the viewer displays when prims are selected - it appears to ignore the total that we pass it and adds up the counts separately. --- .../CoreModules/World/Land/PrimCountModule.cs | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs index bc140aee5b..7a04eb18f8 100644 --- a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs @@ -206,25 +206,29 @@ namespace OpenSim.Region.CoreModules.World.Land else parcelCounts.Users[obj.OwnerID] = partCount; - if (landData.IsGroupOwned) + if (obj.IsSelected) { - if (obj.OwnerID == landData.GroupID) - parcelCounts.Owner += partCount; - else if (landData.GroupID != UUID.Zero && obj.GroupID == landData.GroupID) - parcelCounts.Group += partCount; - else - parcelCounts.Others += partCount; + parcelCounts.Selected += partCount; } else { - if (obj.OwnerID == landData.OwnerID) - parcelCounts.Owner += partCount; + if (landData.IsGroupOwned) + { + if (obj.OwnerID == landData.GroupID) + parcelCounts.Owner += partCount; + else if (landData.GroupID != UUID.Zero && obj.GroupID == landData.GroupID) + parcelCounts.Group += partCount; + else + parcelCounts.Others += partCount; + } else - parcelCounts.Others += partCount; + { + if (obj.OwnerID == landData.OwnerID) + parcelCounts.Owner += partCount; + else + parcelCounts.Others += partCount; + } } - - if (obj.IsSelected) - parcelCounts.Selected += partCount; } } @@ -380,6 +384,7 @@ namespace OpenSim.Region.CoreModules.World.Land count = counts.Owner; count += counts.Group; count += counts.Others; + count += counts.Selected; } } From dc6ce2444385730a3ea1ba1104f2e2caa15a907a Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 5 Apr 2011 20:31:52 +0100 Subject: [PATCH 037/138] switch llGetParcelPrimCount() to use new prim counts module --- .../Shared/Api/Implementation/LSL_Api.cs | 87 +++++++++---------- 1 file changed, 40 insertions(+), 47 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 43b0da320e..5f8ca91550 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -9835,63 +9835,56 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api public LSL_Integer llGetParcelPrimCount(LSL_Vector pos, int category, int sim_wide) { m_host.AddScriptLPS(1); + + ILandObject lo = World.LandChannel.GetLandObject((float)pos.x, (float)pos.y); + + //LandData land = World.GetLandData((float)pos.x, (float)pos.y); - LandData land = World.GetLandData((float)pos.x, (float)pos.y); - - if (land == null) - { + if (lo == null) return 0; - } + + IPrimCounts pc = lo.PrimCounts; - else + if (sim_wide != 0) { - if (sim_wide != 0) + if (category == 0) { - if (category == 0) - { - return land.SimwidePrims; - } - - else - { - //public int simwideArea = 0; - return 0; - } + return pc.Simulator; } - else { - if (category == 0)//Total Prims - { - return 0;//land. - } - - else if (category == 1)//Owner Prims - { - return land.OwnerPrims; - } - - else if (category == 2)//Group Prims - { - return land.GroupPrims; - } - - else if (category == 3)//Other Prims - { - return land.OtherPrims; - } - - else if (category == 4)//Selected - { - return land.SelectedPrims; - } - - else if (category == 5)//Temp - { - return 0;//land. - } + // counts not implemented yet + return 0; } } + else + { + if (category == 0)//Total Prims + { + return pc.Total; + } + else if (category == 1)//Owner Prims + { + return pc.Owner; + } + else if (category == 2)//Group Prims + { + return pc.Group; + } + else if (category == 3)//Other Prims + { + return pc.Others; + } + else if (category == 4)//Selected + { + return pc.Selected; + } + else if (category == 5)//Temp + { + return 0; // counts not implemented yet + } + } + return 0; } From f030ba8992a17553b5824955c95096b8326b23c8 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 5 Apr 2011 20:39:58 +0100 Subject: [PATCH 038/138] replace magic numbers in llGetParcelPrimCount() with constants --- .../Shared/Api/Implementation/LSL_Api.cs | 30 +++++-------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 5f8ca91550..e5be641d26 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -9837,17 +9837,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api m_host.AddScriptLPS(1); ILandObject lo = World.LandChannel.GetLandObject((float)pos.x, (float)pos.y); - - //LandData land = World.GetLandData((float)pos.x, (float)pos.y); if (lo == null) return 0; IPrimCounts pc = lo.PrimCounts; - if (sim_wide != 0) + if (sim_wide != ScriptBaseClass.FALSE) { - if (category == 0) + if (category == ScriptBaseClass.PARCEL_COUNT_TOTAL) { return pc.Simulator; } @@ -9859,30 +9857,18 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } else { - if (category == 0)//Total Prims - { + if (category == ScriptBaseClass.PARCEL_COUNT_TOTAL) return pc.Total; - } - else if (category == 1)//Owner Prims - { + else if (category == ScriptBaseClass.PARCEL_COUNT_OWNER) return pc.Owner; - } - else if (category == 2)//Group Prims - { + else if (category == ScriptBaseClass.PARCEL_COUNT_GROUP) return pc.Group; - } - else if (category == 3)//Other Prims - { + else if (category == ScriptBaseClass.PARCEL_COUNT_OTHER) return pc.Others; - } - else if (category == 4)//Selected - { + else if (category == ScriptBaseClass.PARCEL_COUNT_SELECTED) return pc.Selected; - } - else if (category == 5)//Temp - { + else if (category == ScriptBaseClass.PARCEL_COUNT_TEMP) return 0; // counts not implemented yet - } } return 0; From 0e465da187c93e7ff21f91742f75ee9f3b76b04e Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 5 Apr 2011 21:25:54 +0100 Subject: [PATCH 039/138] remove now unused individual LandData prim counts. However, the calls to the land management module to record prims need to remain, since they were also being used to return owner object lists, etc. This is probably why prim counts were being done there in the first place. --- OpenSim/Framework/ILandChannel.cs | 1 - OpenSim/Framework/ILandObject.cs | 2 +- OpenSim/Framework/LandData.cs | 65 +-------------- .../Tests/LandDataSerializerTests.cs | 8 +- .../CoreModules/World/Land/LandChannel.cs | 10 --- .../World/Land/LandManagementModule.cs | 39 +++------ .../CoreModules/World/Land/LandObject.cs | 83 ++++--------------- OpenSim/Region/Framework/Scenes/Scene.cs | 14 ---- .../RegionCombinerLargeLandChannel.cs | 5 -- 9 files changed, 31 insertions(+), 196 deletions(-) diff --git a/OpenSim/Framework/ILandChannel.cs b/OpenSim/Framework/ILandChannel.cs index 30bae16d81..869d4c8184 100644 --- a/OpenSim/Framework/ILandChannel.cs +++ b/OpenSim/Framework/ILandChannel.cs @@ -77,7 +77,6 @@ namespace OpenSim.Region.Framework.Interfaces /// void Clear(bool setupDefaultParcel); - bool IsLandPrimCountTainted(); bool IsForcefulBansAllowed(); void UpdateLandObject(int localID, LandData data); void ReturnObjectsInParcel(int localID, uint returnType, UUID[] agentIDs, UUID[] taskIDs, IClientAPI remoteClient); diff --git a/OpenSim/Framework/ILandObject.cs b/OpenSim/Framework/ILandObject.cs index 931e24aebb..98ea01ee31 100644 --- a/OpenSim/Framework/ILandObject.cs +++ b/OpenSim/Framework/ILandObject.cs @@ -89,7 +89,7 @@ namespace OpenSim.Framework void SendForceObjectSelect(int local_id, int request_type, List returnIDs, IClientAPI remote_client); void SendLandObjectOwners(IClientAPI remote_client); void ReturnLandObjects(uint type, UUID[] owners, UUID[] tasks, IClientAPI remote_client); - void ResetLandPrimCounts(); + void ResetOverMeRecord(); void UpdateLandSold(UUID avatarID, UUID groupID, bool groupOwned, uint AuctionID, int claimprice, int area); void DeedToGroup(UUID groupID); diff --git a/OpenSim/Framework/LandData.cs b/OpenSim/Framework/LandData.cs index a9a493d876..145ccddb44 100644 --- a/OpenSim/Framework/LandData.cs +++ b/OpenSim/Framework/LandData.cs @@ -54,12 +54,10 @@ namespace OpenSim.Framework private int _claimPrice = 0; //Unemplemented private UUID _globalID = UUID.Zero; private UUID _groupID = UUID.Zero; - private int _groupPrims = 0; private bool _isGroupOwned = false; private byte[] _bitmap = new byte[512]; private string _description = String.Empty; - private uint _flags = (uint) ParcelFlags.AllowFly | (uint) ParcelFlags.AllowLandmark | (uint) ParcelFlags.AllowAPrimitiveEntry | (uint) ParcelFlags.AllowDeedToGroup | (uint) ParcelFlags.AllowTerraform | @@ -72,17 +70,13 @@ namespace OpenSim.Framework private int _localID = 0; private byte _mediaAutoScale = 0; private UUID _mediaID = UUID.Zero; - private string _mediaURL = String.Empty; private string _musicURL = String.Empty; - private int _otherPrims = 0; private UUID _ownerID = UUID.Zero; - private int _ownerPrims = 0; private List _parcelAccessList = new List(); private float _passHours = 0; private int _passPrice = 0; private int _salePrice = 0; //Unemeplemented. Parcels price. - private int _selectedPrims = 0; private int _simwideArea = 0; private int _simwidePrims = 0; private UUID _snapshotID = UUID.Zero; @@ -283,19 +277,6 @@ namespace OpenSim.Framework } } - /// - /// Number of SceneObjectPart that are owned by a Group - /// - [XmlIgnore] - public int GroupPrims { - get { - return _groupPrims; - } - set { - _groupPrims = value; - } - } - /// /// Returns true if the Land Parcel is owned by a group /// @@ -453,20 +434,6 @@ namespace OpenSim.Framework } } - /// - /// Number of SceneObjectPart that are owned by users who do not own the parcel - /// and don't have the 'group. These are elegable for AutoReturn collection - /// - [XmlIgnore] - public int OtherPrims { - get { - return _otherPrims; - } - set { - _otherPrims = value; - } - } - /// /// Owner Avatar or Group of the parcel. Naturally, all land masses must be /// owned by someone @@ -480,19 +447,6 @@ namespace OpenSim.Framework } } - /// - /// Number of SceneObjectPart that are owned by the owner of the parcel - /// - [XmlIgnore] - public int OwnerPrims { - get { - return _ownerPrims; - } - set { - _ownerPrims = value; - } - } - /// /// List of access data for the parcel. User data, some bitflags, and a time /// @@ -541,19 +495,6 @@ namespace OpenSim.Framework } } - /// - /// Number of SceneObjectPart that are currently selected by avatar - /// - [XmlIgnore] - public int SelectedPrims { - get { - return _selectedPrims; - } - set { - _selectedPrims = value; - } - } - /// /// Number of meters^2 in the Simulator /// @@ -666,10 +607,6 @@ namespace OpenSim.Framework landData._claimPrice = _claimPrice; landData._globalID = _globalID; landData._groupID = _groupID; - landData._groupPrims = _groupPrims; - landData._otherPrims = _otherPrims; - landData._ownerPrims = _ownerPrims; - landData._selectedPrims = _selectedPrims; landData._isGroupOwned = _isGroupOwned; landData._localID = _localID; landData._landingType = _landingType; @@ -731,4 +668,4 @@ namespace OpenSim.Framework return land; } } -} +} \ No newline at end of file diff --git a/OpenSim/Framework/Serialization/Tests/LandDataSerializerTests.cs b/OpenSim/Framework/Serialization/Tests/LandDataSerializerTests.cs index 70e87b3c08..c69c89dc0a 100644 --- a/OpenSim/Framework/Serialization/Tests/LandDataSerializerTests.cs +++ b/OpenSim/Framework/Serialization/Tests/LandDataSerializerTests.cs @@ -42,10 +42,7 @@ namespace OpenSim.Framework.Serialization.Tests private LandData landWithParcelAccessList; private static string preSerialized = "\n\n 128\n 0\n 00000000-0000-0000-0000-000000000000\n 10\n 0\n 0\n 54ff9641-dd40-4a2c-b1f1-47dd3af24e50\n d740204e-bbbf-44aa-949d-02c7d739f6a5\n False\n AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\n land data to test LandDataSerializer\n 536870944\n 2\n LandDataSerializerTest Land\n 0\n 0\n 1\n d4452578-2f25-4b97-a81b-819af559cfd7\n http://videos.opensimulator.org/bumblebee.mp4\n \n 1b8eedf9-6d15-448b-8015-24286f1756bf\n \n 0\n 0\n 0\n 00000000-0000-0000-0000-000000000000\n <0, 0, 0>\n <0, 0, 0>\n 0\n 0\n"; - private static string preSerializedWithParcelAccessList = "\n\n 128\n 0\n 00000000-0000-0000-0000-000000000000\n 10\n 0\n 0\n 54ff9641-dd40-4a2c-b1f1-47dd3af24e50\n d740204e-bbbf-44aa-949d-02c7d739f6a5\n False\n AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\n land data to test LandDataSerializer\n 536870944\n 2\n LandDataSerializerTest Land\n 0\n 0\n 1\n d4452578-2f25-4b97-a81b-819af559cfd7\n http://videos.opensimulator.org/bumblebee.mp4\n \n 1b8eedf9-6d15-448b-8015-24286f1756bf\n \n \n 62d65d45-c91a-4f77-862c-46557d978b6c\n \n 2\n \n \n ec2a8d18-2378-4fe0-8b68-2a31b57c481e\n \n 1\n \n \n 0\n 0\n 0\n 00000000-0000-0000-0000-000000000000\n <0, 0, 0>\n <0, 0, 0>\n 0\n 0\n"; - - - + private static string preSerializedWithParcelAccessList = "\n\n 128\n 0\n 00000000-0000-0000-0000-000000000000\n 10\n 0\n 0\n 54ff9641-dd40-4a2c-b1f1-47dd3af24e50\n d740204e-bbbf-44aa-949d-02c7d739f6a5\n False\n AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\n land data to test LandDataSerializer\n 536870944\n 2\n LandDataSerializerTest Land\n 0\n 0\n 1\n d4452578-2f25-4b97-a81b-819af559cfd7\n http://videos.opensimulator.org/bumblebee.mp4\n \n 1b8eedf9-6d15-448b-8015-24286f1756bf\n \n \n 62d65d45-c91a-4f77-862c-46557d978b6c\n \n 2\n \n \n ec2a8d18-2378-4fe0-8b68-2a31b57c481e\n \n 1\n \n \n 0\n 0\n 0\n 00000000-0000-0000-0000-000000000000\n <0, 0, 0>\n <0, 0, 0>\n 0\n 0\n"; [SetUp] public void setup() @@ -62,7 +59,6 @@ namespace OpenSim.Framework.Serialization.Tests this.land.ClaimPrice = 0; this.land.GlobalID = new UUID("54ff9641-dd40-4a2c-b1f1-47dd3af24e50"); this.land.GroupID = new UUID("d740204e-bbbf-44aa-949d-02c7d739f6a5"); - this.land.GroupPrims = 0; this.land.Description = "land data to test LandDataSerializer"; this.land.Flags = (uint)(ParcelFlags.AllowDamage | ParcelFlags.AllowVoiceChat); this.land.LandingType = (byte)LandingType.Direct; @@ -132,4 +128,4 @@ namespace OpenSim.Framework.Serialization.Tests "Reified LandData.Name != original LandData.Name (pre-serialized with parcel access list)"); } } -} +} \ No newline at end of file diff --git a/OpenSim/Region/CoreModules/World/Land/LandChannel.cs b/OpenSim/Region/CoreModules/World/Land/LandChannel.cs index 7d990c265c..7fc358dc54 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandChannel.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandChannel.cs @@ -133,16 +133,6 @@ namespace OpenSim.Region.CoreModules.World.Land return new List(); } - public bool IsLandPrimCountTainted() - { - if (m_landManagementModule != null) - { - return m_landManagementModule.IsLandPrimCountTainted(); - } - - return false; - } - public bool IsForcefulBansAllowed() { if (m_landManagementModule != null) diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index 2b5f7a037a..adfac0511f 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs @@ -89,7 +89,6 @@ namespace OpenSim.Region.CoreModules.World.Land /// private readonly Dictionary m_landList = new Dictionary(); - private bool m_landPrimCountTainted; private int m_lastLandLocalID = LandChannel.START_LAND_LOCAL_ID - 1; private bool m_allowedForcefulBans = true; @@ -122,18 +121,18 @@ namespace OpenSim.Region.CoreModules.World.Land m_scene.EventManager.OnParcelPrimCountAdd += EventManagerOnParcelPrimCountAdd; m_scene.EventManager.OnParcelPrimCountUpdate += EventManagerOnParcelPrimCountUpdate; + m_scene.EventManager.OnObjectBeingRemovedFromScene += EventManagerOnObjectBeingRemovedFromScene; + m_scene.EventManager.OnRequestParcelPrimCountUpdate += EventManagerOnRequestParcelPrimCountUpdate; + m_scene.EventManager.OnAvatarEnteringNewParcel += EventManagerOnAvatarEnteringNewParcel; m_scene.EventManager.OnClientMovement += EventManagerOnClientMovement; m_scene.EventManager.OnValidateLandBuy += EventManagerOnValidateLandBuy; m_scene.EventManager.OnLandBuy += EventManagerOnLandBuy; m_scene.EventManager.OnNewClient += EventManagerOnNewClient; m_scene.EventManager.OnSignificantClientMovement += EventManagerOnSignificantClientMovement; - m_scene.EventManager.OnObjectBeingRemovedFromScene += EventManagerOnObjectBeingRemovedFromScene; m_scene.EventManager.OnNoticeNoLandDataFromStorage += EventManagerOnNoLandDataFromStorage; m_scene.EventManager.OnIncomingLandDataFromStorage += EventManagerOnIncomingLandDataFromStorage; - m_scene.EventManager.OnSetAllowForcefulBan += EventManagerOnSetAllowedForcefulBan; - m_scene.EventManager.OnRequestParcelPrimCountUpdate += EventManagerOnRequestParcelPrimCountUpdate; - m_scene.EventManager.OnParcelPrimCountTainted += EventManagerOnParcelPrimCountTainted; + m_scene.EventManager.OnSetAllowForcefulBan += EventManagerOnSetAllowedForcefulBan; m_scene.EventManager.OnRegisterCaps += EventManagerOnRegisterCaps; m_scene.EventManager.OnPluginConsole += EventManagerOnPluginConsole; @@ -779,34 +778,24 @@ namespace OpenSim.Region.CoreModules.World.Land #region Parcel Modification - public void ResetAllLandPrimCounts() + public void ResetOverMeRecord() { lock (m_landList) { foreach (LandObject p in m_landList.Values) { - p.ResetLandPrimCounts(); + p.ResetOverMeRecord(); } } } - public void EventManagerOnParcelPrimCountTainted() - { - m_landPrimCountTainted = true; - } - - public bool IsLandPrimCountTainted() - { - return m_landPrimCountTainted; - } - public void EventManagerOnParcelPrimCountAdd(SceneObjectGroup obj) { Vector3 position = obj.AbsolutePosition; ILandObject landUnderPrim = GetLandObject(position.X, position.Y); if (landUnderPrim != null) { - ((LandObject)landUnderPrim).AddPrimToCount(obj); + ((LandObject)landUnderPrim).AddPrimOverMe(obj); } } @@ -816,7 +805,7 @@ namespace OpenSim.Region.CoreModules.World.Land { foreach (LandObject p in m_landList.Values) { - p.RemovePrimFromCount(obj); + p.RemovePrimFromOverMe(obj); } } } @@ -849,8 +838,7 @@ namespace OpenSim.Region.CoreModules.World.Land foreach (LandObject p in landOwnersAndParcels[owner]) { simArea += p.LandData.Area; - simPrims += p.LandData.OwnerPrims + p.LandData.OtherPrims + p.LandData.GroupPrims + - p.LandData.SelectedPrims; + simPrims += p.PrimCounts.Total; } foreach (LandObject p in landOwnersAndParcels[owner]) @@ -867,7 +855,7 @@ namespace OpenSim.Region.CoreModules.World.Land // "[LAND MANAGEMENT MODULE]: Triggered EventManagerOnParcelPrimCountUpdate() for {0}", // m_scene.RegionInfo.RegionName); - ResetAllLandPrimCounts(); + ResetOverMeRecord(); EntityBase[] entities = m_scene.Entities.GetEntities(); foreach (EntityBase obj in entities) { @@ -880,15 +868,13 @@ namespace OpenSim.Region.CoreModules.World.Land } } FinalizeLandPrimCountUpdate(); - m_landPrimCountTainted = false; } public void EventManagerOnRequestParcelPrimCountUpdate() { - ResetAllLandPrimCounts(); + ResetOverMeRecord(); m_scene.EventManager.TriggerParcelPrimCountUpdate(); FinalizeLandPrimCountUpdate(); - m_landPrimCountTainted = false; } /// @@ -952,8 +938,6 @@ namespace OpenSim.Region.CoreModules.World.Land m_landList[startLandObjectIndex].ForceUpdateLandInfo(); } - EventManagerOnParcelPrimCountTainted(); - //Now add the new land object ILandObject result = AddLandObject(newLand); UpdateLandObject(startLandObject.LandData.LocalID, startLandObject.LandData); @@ -1020,7 +1004,6 @@ namespace OpenSim.Region.CoreModules.World.Land performFinalLandJoin(masterLandObject, slaveLandObject); } } - EventManagerOnParcelPrimCountTainted(); masterLandObject.SendLandUpdateToAvatarsOverMe(); } diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index e7bdb19e56..9803bdfd0a 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs @@ -64,8 +64,6 @@ namespace OpenSim.Region.CoreModules.World.Land #endregion - #region ILandObject Members - public int GetPrimsFree() { m_scene.EventManager.TriggerParcelPrimCountUpdate(); @@ -213,6 +211,7 @@ namespace OpenSim.Region.CoreModules.World.Land return simMax; } } + #endregion #region Packet Request Handling @@ -909,9 +908,12 @@ namespace OpenSim.Region.CoreModules.World.Land lock (primsOverMe) { +// m_log.DebugFormat( +// "[LAND OBJECT]: Request for SendLandObjectOwners() from {0} with {1} known prims on region", +// remote_client.Name, primsOverMe.Count); + try { - foreach (SceneObjectGroup obj in primsOverMe) { try @@ -950,6 +952,7 @@ namespace OpenSim.Region.CoreModules.World.Land public Dictionary GetLandObjectOwners() { Dictionary ownersAndCount = new Dictionary(); + lock (primsOverMe) { try @@ -986,8 +989,10 @@ namespace OpenSim.Region.CoreModules.World.Land public void ReturnLandObjects(uint type, UUID[] owners, UUID[] tasks, IClientAPI remote_client) { - Dictionary> returns = - new Dictionary>(); +// m_log.DebugFormat( +// "[LAND OBJECT]: Request to return objects in {0} from {1}", LandData.Name, remote_client.Name); + + Dictionary> returns = new Dictionary>(); lock (primsOverMe) { @@ -1060,82 +1065,24 @@ namespace OpenSim.Region.CoreModules.World.Land #region Object Adding/Removing from Parcel - public void ResetLandPrimCounts() + public void ResetOverMeRecord() { - LandData.GroupPrims = 0; - LandData.OwnerPrims = 0; - LandData.OtherPrims = 0; - LandData.SelectedPrims = 0; - - lock (primsOverMe) primsOverMe.Clear(); } - public void AddPrimToCount(SceneObjectGroup obj) + public void AddPrimOverMe(SceneObjectGroup obj) { - - UUID prim_owner = obj.OwnerID; - int prim_count = obj.PrimCount; - - if (obj.IsSelected) - { - LandData.SelectedPrims += prim_count; - } - else - { - if (prim_owner == LandData.OwnerID) - { - LandData.OwnerPrims += prim_count; - } - else if ((obj.GroupID == LandData.GroupID || - prim_owner == LandData.GroupID) && - LandData.GroupID != UUID.Zero) - { - LandData.GroupPrims += prim_count; - } - else - { - LandData.OtherPrims += prim_count; - } - } - lock (primsOverMe) primsOverMe.Add(obj); } - public void RemovePrimFromCount(SceneObjectGroup obj) + public void RemovePrimFromOverMe(SceneObjectGroup obj) { lock (primsOverMe) - { - if (primsOverMe.Contains(obj)) - { - UUID prim_owner = obj.OwnerID; - int prim_count = obj.PrimCount; - - if (prim_owner == LandData.OwnerID) - { - LandData.OwnerPrims -= prim_count; - } - else if (obj.GroupID == LandData.GroupID || - prim_owner == LandData.GroupID) - { - LandData.GroupPrims -= prim_count; - } - else - { - LandData.OtherPrims -= prim_count; - } - - primsOverMe.Remove(obj); - } - } + primsOverMe.Remove(obj); } - #endregion - - #endregion - #endregion /// @@ -1157,5 +1104,7 @@ namespace OpenSim.Region.CoreModules.World.Land LandData.MusicURL = url; SendLandUpdateToAvatarsOverMe(); } + + #endregion } } diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 35a798e2d0..a62d6d7e0d 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -1427,20 +1427,6 @@ namespace OpenSim.Region.Framework.Scenes ); } - /// - /// Recount SceneObjectPart in parcel aabb - /// - private void UpdateLand() - { - if (LandChannel != null) - { - if (LandChannel.IsLandPrimCountTainted()) - { - EventManager.TriggerParcelPrimCountUpdate(); - } - } - } - /// /// Update the terrain if it needs to be updated. /// diff --git a/OpenSim/Region/RegionCombinerModule/RegionCombinerLargeLandChannel.cs b/OpenSim/Region/RegionCombinerModule/RegionCombinerLargeLandChannel.cs index 98e5453d1e..a133e51da6 100644 --- a/OpenSim/Region/RegionCombinerModule/RegionCombinerLargeLandChannel.cs +++ b/OpenSim/Region/RegionCombinerModule/RegionCombinerLargeLandChannel.cs @@ -130,11 +130,6 @@ public class RegionCombinerLargeLandChannel : ILandChannel } } - public bool IsLandPrimCountTainted() - { - return RootRegionLandChannel.IsLandPrimCountTainted(); - } - public bool IsForcefulBansAllowed() { return RootRegionLandChannel.IsForcefulBansAllowed(); From acacee98c6e4398b0ea808f23333a31689966133 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 5 Apr 2011 22:15:06 +0100 Subject: [PATCH 040/138] properly refresh object owner list when refresh button is hit on land parcel object tab --- .../World/Land/LandManagementModule.cs | 17 +++++++++-------- .../Region/CoreModules/World/Land/LandObject.cs | 6 +++++- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index adfac0511f..abc7a3afc0 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs @@ -62,8 +62,7 @@ namespace OpenSim.Region.CoreModules.World.Land public class LandManagementModule : INonSharedRegionModule { - private static readonly ILog m_log = - LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly string remoteParcelRequestPath = "0009/"; @@ -307,8 +306,8 @@ namespace OpenSim.Region.CoreModules.World.Land /// The parcel created. protected ILandObject CreateDefaultParcel() { -// m_log.DebugFormat( -// "[LAND MANAGEMENT MODULE]: Creating default parcel for region {0}", m_scene.RegionInfo.RegionName); + m_log.DebugFormat( + "[LAND MANAGEMENT MODULE]: Creating default parcel for region {0}", m_scene.RegionInfo.RegionName); ILandObject fullSimParcel = new LandObject(UUID.Zero, false, m_scene); fullSimParcel.SetLandBitmap(fullSimParcel.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); @@ -778,7 +777,7 @@ namespace OpenSim.Region.CoreModules.World.Land #region Parcel Modification - public void ResetOverMeRecord() + public void ResetOverMeRecords() { lock (m_landList) { @@ -855,7 +854,7 @@ namespace OpenSim.Region.CoreModules.World.Land // "[LAND MANAGEMENT MODULE]: Triggered EventManagerOnParcelPrimCountUpdate() for {0}", // m_scene.RegionInfo.RegionName); - ResetOverMeRecord(); + ResetOverMeRecords(); EntityBase[] entities = m_scene.Entities.GetEntities(); foreach (EntityBase obj in entities) { @@ -872,7 +871,7 @@ namespace OpenSim.Region.CoreModules.World.Land public void EventManagerOnRequestParcelPrimCountUpdate() { - ResetOverMeRecord(); + ResetOverMeRecords(); m_scene.EventManager.TriggerParcelPrimCountUpdate(); FinalizeLandPrimCountUpdate(); } @@ -1193,6 +1192,7 @@ namespace OpenSim.Region.CoreModules.World.Land if (land != null) { + m_scene.EventManager.TriggerParcelPrimCountUpdate(); m_landList[local_id].SendLandObjectOwners(remote_client); } else @@ -1424,7 +1424,8 @@ namespace OpenSim.Region.CoreModules.World.Land private string ProcessPropertiesUpdate(string request, string path, string param, UUID agentID, Caps caps) { IClientAPI client; - if (! m_scene.TryGetClient(agentID, out client)) { + if (!m_scene.TryGetClient(agentID, out client)) + { m_log.WarnFormat("[LAND MANAGEMENT MODULE]: Unable to retrieve IClientAPI for {0}", agentID); return LLSDHelpers.SerialiseLLSDReply(new LLSDEmpty()); } diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index 9803bdfd0a..c4fb11e232 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs @@ -925,7 +925,7 @@ namespace OpenSim.Region.CoreModules.World.Land } catch (NullReferenceException) { - m_log.Info("[LAND]: " + "Got Null Reference when searching land owners from the parcel panel"); + m_log.Error("[LAND]: " + "Got Null Reference when searching land owners from the parcel panel"); } try { @@ -1073,12 +1073,16 @@ namespace OpenSim.Region.CoreModules.World.Land public void AddPrimOverMe(SceneObjectGroup obj) { +// m_log.DebugFormat("[LAND OBJECT]: Adding scene object {0} {1} over {2}", obj.Name, obj.LocalId, LandData.Name); + lock (primsOverMe) primsOverMe.Add(obj); } public void RemovePrimFromOverMe(SceneObjectGroup obj) { +// m_log.DebugFormat("[LAND OBJECT]: Removing scene object {0} {1} from over {2}", obj.Name, obj.LocalId, LandData.Name); + lock (primsOverMe) primsOverMe.Remove(obj); } From 2497962360258eb6cb1a78c7b4d5227d88eabb87 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 5 Apr 2011 22:25:00 +0100 Subject: [PATCH 041/138] Change some text to make the autoreturn mechanism more obvious, and align with the fact that it's one word rather than two. --- OpenSim/Framework/LandData.cs | 2 +- OpenSim/Region/Framework/Scenes/Scene.cs | 5 ++++- OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 6 ++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/OpenSim/Framework/LandData.cs b/OpenSim/Framework/LandData.cs index 145ccddb44..c107143a6c 100644 --- a/OpenSim/Framework/LandData.cs +++ b/OpenSim/Framework/LandData.cs @@ -560,7 +560,7 @@ namespace OpenSim.Framework } /// - /// Number of minutes to return SceneObjectGroup that are owned by someone who doesn't own + /// Autoreturn number of minutes to return SceneObjectGroup that are owned by someone who doesn't own /// the parcel and isn't set to the same 'group' as the parcel. /// public int OtherCleanTime { diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index a62d6d7e0d..f0acc38820 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -1521,8 +1521,11 @@ namespace OpenSim.Region.Framework.Scenes } /// - /// Return object to avatar Message + /// Tell an agent that their object has been returned. /// + /// + /// The actual return is handled by the caller. + /// /// Avatar Unique Id /// Name of object returned /// Location of object returned diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index f17fb28f8d..a7107f0184 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -1313,8 +1313,10 @@ namespace OpenSim.Region.Framework.Scenes parcel.LandData.OtherCleanTime) { DetachFromBackup(); - m_log.InfoFormat("[SCENE]: Returning object {0} due to parcel auto return", RootPart.UUID.ToString()); - m_scene.AddReturn(OwnerID, Name, AbsolutePosition, "parcel auto return"); + m_log.DebugFormat( + "[SCENE OBJECT GROUP]: Returning object {0} due to parcel autoreturn", + RootPart.UUID); + m_scene.AddReturn(OwnerID, Name, AbsolutePosition, "parcel autoreturn"); m_scene.DeRezObjects(null, new List() { RootPart.LocalId }, UUID.Zero, DeRezAction.Return, UUID.Zero); From fa202a05e914395d5a1facf8bdadb6a553516bfe Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 6 Apr 2011 17:19:31 +0100 Subject: [PATCH 042/138] Add method doc to some land bitmap methods in ILandObject. Also changes prim count tests to use the correct upper region bounds, though the method actually ignores the overage. --- OpenSim/Framework/ILandObject.cs | 18 +++++++ .../CoreModules/World/Land/LandObject.cs | 14 +---- .../World/Land/Tests/PrimCountModuleTests.cs | 52 +++++++++++++++++-- 3 files changed, 66 insertions(+), 18 deletions(-) diff --git a/OpenSim/Framework/ILandObject.cs b/OpenSim/Framework/ILandObject.cs index 98ea01ee31..02775e92f3 100644 --- a/OpenSim/Framework/ILandObject.cs +++ b/OpenSim/Framework/ILandObject.cs @@ -82,8 +82,26 @@ namespace OpenSim.Framework void ForceUpdateLandInfo(); void SetLandBitmap(bool[,] bitmap); + /// + /// Get a land bitmap that would cover an entire region. + /// + /// The bitmap created. bool[,] BasicFullRegionLandBitmap(); + + /// + /// Create a square land bitmap. + /// + /// + /// Land co-ordinates are zero indexed. At the moment, the smallest parcel of land is 4m x 4m, so if the + /// region is 256 x 256m (the SL size), the largest land parcel starts at (0,0) and ends at (63,63). + /// + /// + /// + /// + /// + /// The bitmap created. bool[,] GetSquareLandBitmap(int start_x, int start_y, int end_x, int end_y); + bool[,] ModifyLandBitmapSquare(bool[,] land_bitmap, int start_x, int start_y, int end_x, int end_y, bool set_value); bool[,] MergeLandBitmaps(bool[,] bitmap_base, bool[,] bitmap_add); void SendForceObjectSelect(int local_id, int request_type, List returnIDs, IClientAPI remote_client); diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index c4fb11e232..c2f104e370 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs @@ -701,23 +701,11 @@ namespace OpenSim.Region.CoreModules.World.Land return LandBitmap; } - /// - /// Full sim land object creation - /// - /// public bool[,] BasicFullRegionLandBitmap() { return GetSquareLandBitmap(0, 0, (int) Constants.RegionSize, (int) Constants.RegionSize); } - - /// - /// Used to modify the bitmap between the x and y points. Points use 64 scale - /// - /// - /// - /// - /// - /// + public bool[,] GetSquareLandBitmap(int start_x, int start_y, int end_x, int end_y) { bool[,] tempBitmap = new bool[64,64]; diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs index f006db2a62..4acba18fcf 100644 --- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs @@ -49,6 +49,10 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests protected UUID m_otherUserId = new UUID("99999999-9999-9999-9999-999999999999"); protected TestScene m_scene; protected PrimCountModule m_pcm; + + /// + /// A parcel that covers the entire sim. + /// protected ILandObject m_lo; [SetUp] @@ -60,9 +64,9 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests SceneSetupHelpers.SetupSceneModules(m_scene, lmm, m_pcm); ILandObject lo = new LandObject(m_userId, false, m_scene); - lo.SetLandBitmap(lo.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); - m_lo = lmm.AddLandObject(lo); - //scene.loadAllLandObjectsFromStorage(scene.RegionInfo.originRegionID); + lo.SetLandBitmap( + lo.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize / 4 - 1, (int)Constants.RegionSize / 4 - 1)); + m_lo = lmm.AddLandObject(lo); } /// @@ -124,7 +128,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests /// Test count after a parcel owner owned copied object is added. /// [Test] - public void TestCopiedOwnerObject() + public void TestCopyOwnerObject() { TestHelper.InMethod(); // log4net.Config.XmlConfigurator.Configure(); @@ -143,7 +147,45 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pc.Users[m_userId], Is.EqualTo(6)); Assert.That(pc.Users[m_otherUserId], Is.EqualTo(0)); Assert.That(pc.Simulator, Is.EqualTo(6)); - } + } + + /// + /// Test that parcel counts update correctly when an object is moved between parcels, where that movement + /// is not done directly by the user/ + /// + //[Test] + public void TestMoveOwnerObject() + { +// TestHelper.InMethod(); +//// log4net.Config.XmlConfigurator.Configure(); +// +// IPrimCounts pc = m_lo.PrimCounts; +// +// SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01); +// m_scene.AddNewSceneObject(sog, false); +// +// Assert.That(pc.Owner, Is.EqualTo(3)); +// Assert.That(pc.Group, Is.EqualTo(0)); +// Assert.That(pc.Others, Is.EqualTo(0)); +// Assert.That(pc.Total, Is.EqualTo(3)); +// Assert.That(pc.Selected, Is.EqualTo(0)); +// Assert.That(pc.Users[m_userId], Is.EqualTo(3)); +// Assert.That(pc.Users[m_otherUserId], Is.EqualTo(0)); +// Assert.That(pc.Simulator, Is.EqualTo(3)); +// +// // Add a second object and retest +// SceneObjectGroup sog2 = SceneSetupHelpers.CreateSceneObject(2, m_userId, 0x10); +// m_scene.AddNewSceneObject(sog2, false); +// +// Assert.That(pc.Owner, Is.EqualTo(5)); +// Assert.That(pc.Group, Is.EqualTo(0)); +// Assert.That(pc.Others, Is.EqualTo(0)); +// Assert.That(pc.Total, Is.EqualTo(5)); +// Assert.That(pc.Selected, Is.EqualTo(0)); +// Assert.That(pc.Users[m_userId], Is.EqualTo(5)); +// Assert.That(pc.Users[m_otherUserId], Is.EqualTo(0)); +// Assert.That(pc.Simulator, Is.EqualTo(5)); + } /// /// Test count after a parcel owner owned object is removed. From 63533412f882fd55c0c40989d97f8a8262bc4e3c Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 6 Apr 2011 18:57:50 +0100 Subject: [PATCH 043/138] Improve previous ILandObject method doc. For test code, take a part name prefix when creating objects, so that these can be more easily identified in the logs --- OpenSim/Framework/ILandObject.cs | 8 +- .../World/Land/LandManagementModule.cs | 12 +++ .../CoreModules/World/Land/PrimCountModule.cs | 22 ++-- .../World/Land/Tests/PrimCountModuleTests.cs | 102 ++++++++++-------- .../Tests/Common/Setup/SceneSetupHelpers.cs | 16 ++- 5 files changed, 104 insertions(+), 56 deletions(-) diff --git a/OpenSim/Framework/ILandObject.cs b/OpenSim/Framework/ILandObject.cs index 02775e92f3..5a55b02f8e 100644 --- a/OpenSim/Framework/ILandObject.cs +++ b/OpenSim/Framework/ILandObject.cs @@ -92,8 +92,12 @@ namespace OpenSim.Framework /// Create a square land bitmap. /// /// - /// Land co-ordinates are zero indexed. At the moment, the smallest parcel of land is 4m x 4m, so if the - /// region is 256 x 256m (the SL size), the largest land parcel starts at (0,0) and ends at (63,63). + /// Land co-ordinates are zero indexed. The inputs are treated as points. So if you want to create a bitmap + /// that covers an entire 256 x 256m region apart from a strip of land on the east, then you would need to + /// specify start_x = 0, start_y = 0, end_x = 252 (or anything up to 255), end_y = 256. + /// + /// At the moment, the smallest parcel of land is 4m x 4m, so if the + /// region is 256 x 256m (the SL size), the bitmap returned will start at (0,0) and end at (63,63). /// /// /// diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index abc7a3afc0..bfab7b88e4 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs @@ -612,6 +612,10 @@ namespace OpenSim.Region.CoreModules.World.Land { if (landBitmap[x, y]) { +// m_log.DebugFormat( +// "[LAND MANAGEMENT MODULE]: Registering parcel {0} for land co-ord ({1}, {2}) on {3}", +// new_land.LandData.Name, x, y, m_scene.RegionInfo.RegionName); + m_landIDList[x, y] = newLandLocalID; } } @@ -741,8 +745,16 @@ namespace OpenSim.Region.CoreModules.World.Land // Corner case. If an autoreturn happens during sim startup // we will come here with the list uninitialized // + int landId = m_landIDList[x, y]; + +// if (landId == 0) +// m_log.DebugFormat( +// "[LAND MANAGEMENT MODULE]: No land object found at ({0}, {1}) on {2}", +// x, y, m_scene.RegionInfo.RegionName); + if (m_landList.ContainsKey(m_landIDList[x, y])) return m_landList[m_landIDList[x, y]]; + return null; } } diff --git a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs index 7a04eb18f8..dca842ab91 100644 --- a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs @@ -173,23 +173,31 @@ namespace OpenSim.Region.CoreModules.World.Land // NOTE: Call under Taint Lock private void AddObject(SceneObjectGroup obj) - { -// m_log.DebugFormat("[PRIM COUNT MODULE]: Adding object {0} {1} to prim count", obj.Name, obj.UUID); - + { if (obj.IsAttachment) return; if (((obj.RootPart.Flags & PrimFlags.TemporaryOnRez) != 0)) - return; + return; Vector3 pos = obj.AbsolutePosition; ILandObject landObject = m_Scene.LandChannel.GetLandObject(pos.X, pos.Y); // If for some reason there is no land object (perhaps the object is out of bounds) then we can't count it if (landObject == null) + { +// m_log.WarnFormat( +// "[PRIM COUNT MODULE]: Found no land object for {0} at position ({1}, {2}) on {3}", +// obj.Name, pos.X, pos.Y, m_Scene.RegionInfo.RegionName); + return; + } LandData landData = landObject.LandData; +// m_log.DebugFormat( +// "[PRIM COUNT MODULE]: Adding object {0} with {1} parts to prim count for parcel {2} on {3}", +// obj.Name, obj.Parts.Length, landData.Name, m_Scene.RegionInfo.RegionName); + // m_log.DebugFormat( // "[PRIM COUNT MODULE]: Object {0} is owned by {1} over land owned by {2}", // obj.Name, obj.OwnerID, landData.OwnerID); @@ -473,7 +481,9 @@ namespace OpenSim.Region.CoreModules.World.Land m_OwnerMap[landData.GlobalID] = landData.OwnerID; m_SimwideCounts[landData.OwnerID] = 0; -// m_log.DebugFormat("[PRIM COUNT MODULE]: Adding parcel count for {0}", landData.GlobalID); +// m_log.DebugFormat( +// "[PRIM COUNT MODULE]: Initializing parcel count for {0} on {1}", +// landData.Name, m_Scene.RegionInfo.RegionName); m_ParcelCounts[landData.GlobalID] = new ParcelCounts(); } @@ -583,4 +593,4 @@ namespace OpenSim.Region.CoreModules.World.Land } } } -} +} \ No newline at end of file diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs index 4acba18fcf..d161bb846f 100644 --- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs @@ -51,9 +51,14 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests protected PrimCountModule m_pcm; /// - /// A parcel that covers the entire sim. + /// A parcel that covers the entire sim except for a 1 unit wide strip on the eastern side. /// protected ILandObject m_lo; + + /// + /// A parcel that covers just the eastern strip of the sim. + /// + protected ILandObject m_lo2; [SetUp] public void SetUp() @@ -63,10 +68,19 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests m_scene = SceneSetupHelpers.SetupScene(); SceneSetupHelpers.SetupSceneModules(m_scene, lmm, m_pcm); + int xParcelDivider = (int)Constants.RegionSize - 1; + ILandObject lo = new LandObject(m_userId, false, m_scene); + lo.LandData.Name = "m_lo"; lo.SetLandBitmap( - lo.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize / 4 - 1, (int)Constants.RegionSize / 4 - 1)); + lo.GetSquareLandBitmap(0, 0, xParcelDivider, (int)Constants.RegionSize)); m_lo = lmm.AddLandObject(lo); + + ILandObject lo2 = new LandObject(m_userId, false, m_scene); + lo2.SetLandBitmap( + lo2.GetSquareLandBitmap(xParcelDivider, 0, (int)Constants.RegionSize, (int)Constants.RegionSize)); + lo2.LandData.Name = "m_lo2"; + m_lo2 = lmm.AddLandObject(lo2); } /// @@ -98,7 +112,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests IPrimCounts pc = m_lo.PrimCounts; - SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01); + SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, "a", 0x01); m_scene.AddNewSceneObject(sog, false); Assert.That(pc.Owner, Is.EqualTo(3)); @@ -111,7 +125,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pc.Simulator, Is.EqualTo(3)); // Add a second object and retest - SceneObjectGroup sog2 = SceneSetupHelpers.CreateSceneObject(2, m_userId, 0x10); + SceneObjectGroup sog2 = SceneSetupHelpers.CreateSceneObject(2, m_userId, "b", 0x10); m_scene.AddNewSceneObject(sog2, false); Assert.That(pc.Owner, Is.EqualTo(5)); @@ -135,7 +149,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests IPrimCounts pc = m_lo.PrimCounts; - SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01); + SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, "a", 0x01); m_scene.AddNewSceneObject(sog, false); m_scene.SceneGraph.DuplicateObject(sog.LocalId, Vector3.Zero, 0, m_userId, UUID.Zero, Quaternion.Identity); @@ -156,35 +170,37 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests //[Test] public void TestMoveOwnerObject() { -// TestHelper.InMethod(); -//// log4net.Config.XmlConfigurator.Configure(); -// -// IPrimCounts pc = m_lo.PrimCounts; -// -// SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01); -// m_scene.AddNewSceneObject(sog, false); -// -// Assert.That(pc.Owner, Is.EqualTo(3)); -// Assert.That(pc.Group, Is.EqualTo(0)); -// Assert.That(pc.Others, Is.EqualTo(0)); -// Assert.That(pc.Total, Is.EqualTo(3)); -// Assert.That(pc.Selected, Is.EqualTo(0)); -// Assert.That(pc.Users[m_userId], Is.EqualTo(3)); -// Assert.That(pc.Users[m_otherUserId], Is.EqualTo(0)); -// Assert.That(pc.Simulator, Is.EqualTo(3)); -// -// // Add a second object and retest -// SceneObjectGroup sog2 = SceneSetupHelpers.CreateSceneObject(2, m_userId, 0x10); -// m_scene.AddNewSceneObject(sog2, false); -// -// Assert.That(pc.Owner, Is.EqualTo(5)); -// Assert.That(pc.Group, Is.EqualTo(0)); -// Assert.That(pc.Others, Is.EqualTo(0)); -// Assert.That(pc.Total, Is.EqualTo(5)); -// Assert.That(pc.Selected, Is.EqualTo(0)); -// Assert.That(pc.Users[m_userId], Is.EqualTo(5)); -// Assert.That(pc.Users[m_otherUserId], Is.EqualTo(0)); -// Assert.That(pc.Simulator, Is.EqualTo(5)); + TestHelper.InMethod(); + log4net.Config.XmlConfigurator.Configure(); + + SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, "a", 0x01); + m_scene.AddNewSceneObject(sog, false); + SceneObjectGroup sog2 = SceneSetupHelpers.CreateSceneObject(2, m_userId, "b", 0x10); + m_scene.AddNewSceneObject(sog2, false); + + sog.AbsolutePosition = new Vector3(254, 2, 2); + + IPrimCounts pclo1 = m_lo.PrimCounts; + + Assert.That(pclo1.Owner, Is.EqualTo(2)); + Assert.That(pclo1.Group, Is.EqualTo(0)); + Assert.That(pclo1.Others, Is.EqualTo(0)); + Assert.That(pclo1.Total, Is.EqualTo(2)); + Assert.That(pclo1.Selected, Is.EqualTo(0)); + Assert.That(pclo1.Users[m_userId], Is.EqualTo(2)); + Assert.That(pclo1.Users[m_otherUserId], Is.EqualTo(0)); + Assert.That(pclo1.Simulator, Is.EqualTo(2)); + + IPrimCounts pclo2 = m_lo2.PrimCounts; + + Assert.That(pclo2.Owner, Is.EqualTo(3)); + Assert.That(pclo2.Group, Is.EqualTo(0)); + Assert.That(pclo2.Others, Is.EqualTo(0)); + Assert.That(pclo2.Total, Is.EqualTo(3)); + Assert.That(pclo2.Selected, Is.EqualTo(0)); + Assert.That(pclo2.Users[m_userId], Is.EqualTo(3)); + Assert.That(pclo2.Users[m_otherUserId], Is.EqualTo(0)); + Assert.That(pclo2.Simulator, Is.EqualTo(3)); } /// @@ -198,8 +214,8 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests IPrimCounts pc = m_lo.PrimCounts; - m_scene.AddNewSceneObject(SceneSetupHelpers.CreateSceneObject(1, m_userId, 0x1), false); - SceneObjectGroup sogToDelete = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x10); + m_scene.AddNewSceneObject(SceneSetupHelpers.CreateSceneObject(1, m_userId, "a", 0x1), false); + SceneObjectGroup sogToDelete = SceneSetupHelpers.CreateSceneObject(3, m_userId, "b", 0x10); m_scene.AddNewSceneObject(sogToDelete, false); m_scene.DeleteSceneObject(sogToDelete, false); @@ -223,7 +239,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests IPrimCounts pc = m_lo.PrimCounts; - SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_otherUserId, 0x01); + SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_otherUserId, "a", 0x01); sog.GroupID = m_groupId; m_scene.AddNewSceneObject(sog, false); @@ -254,11 +270,11 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests IPrimCounts pc = m_lo.PrimCounts; - SceneObjectGroup sogToKeep = SceneSetupHelpers.CreateSceneObject(1, m_userId, 0x1); + SceneObjectGroup sogToKeep = SceneSetupHelpers.CreateSceneObject(1, m_userId, "a", 0x1); sogToKeep.GroupID = m_groupId; m_scene.AddNewSceneObject(sogToKeep, false); - SceneObjectGroup sogToDelete = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x10); + SceneObjectGroup sogToDelete = SceneSetupHelpers.CreateSceneObject(3, m_userId, "b", 0x10); m_scene.AddNewSceneObject(sogToDelete, false); m_scene.DeleteSceneObject(sogToDelete, false); @@ -281,7 +297,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests IPrimCounts pc = m_lo.PrimCounts; - SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_otherUserId, 0x01); + SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_otherUserId, "a", 0x01); m_scene.AddNewSceneObject(sog, false); Assert.That(pc.Owner, Is.EqualTo(0)); @@ -302,8 +318,8 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests IPrimCounts pc = m_lo.PrimCounts; - m_scene.AddNewSceneObject(SceneSetupHelpers.CreateSceneObject(1, m_otherUserId, 0x1), false); - SceneObjectGroup sogToDelete = SceneSetupHelpers.CreateSceneObject(3, m_otherUserId, 0x10); + m_scene.AddNewSceneObject(SceneSetupHelpers.CreateSceneObject(1, m_otherUserId, "a", 0x1), false); + SceneObjectGroup sogToDelete = SceneSetupHelpers.CreateSceneObject(3, m_otherUserId, "b", 0x10); m_scene.AddNewSceneObject(sogToDelete, false); m_scene.DeleteSceneObject(sogToDelete, false); @@ -326,7 +342,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests TestHelper.InMethod(); IPrimCounts pc = m_lo.PrimCounts; - SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01); + SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, "a", 0x01); m_scene.AddNewSceneObject(sog, false); m_pcm.TaintPrimCount(); diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index 57850c1cc7..709dd78063 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs @@ -489,32 +489,38 @@ namespace OpenSim.Tests.Common.Setup /// public static SceneObjectGroup CreateSceneObject(int parts, UUID ownerId) { - return CreateSceneObject(parts, ownerId, 0x1); + return CreateSceneObject(parts, ownerId, "", 0x1); } /// /// Create a scene object but do not add it to the scene. /// - /// The number of parts that should be in the scene object + /// + /// The number of parts that should be in the scene object + /// /// + /// + /// The prefix to be given to part names. This will be suffixed with "Part" + /// (e.g. mynamePart0 for the root part) + /// /// /// The hexadecimal last part of the UUID for parts created. A UUID of the form "00000000-0000-0000-0000-{0:XD12}" /// will be given to the root part, and incremented for each part thereafter. /// /// - public static SceneObjectGroup CreateSceneObject(int parts, UUID ownerId, int uuidTail) + public static SceneObjectGroup CreateSceneObject(int parts, UUID ownerId, string partNamePrefix, int uuidTail) { string rawSogId = string.Format("00000000-0000-0000-0000-{0:X12}", uuidTail); SceneObjectGroup sog = new SceneObjectGroup( - CreateSceneObjectPart("part0", new UUID(rawSogId), ownerId)); + CreateSceneObjectPart(string.Format("{0}Part0", partNamePrefix), new UUID(rawSogId), ownerId)); if (parts > 1) for (int i = 1; i < parts; i++) sog.AddPart( CreateSceneObjectPart( - string.Format("obj{0}", i), + string.Format("{0}Part{1}", partNamePrefix, i), new UUID(string.Format("00000000-0000-0000-0000-{0:X12}", uuidTail + i)), ownerId)); From 8318915d7ec7ed3bd25ff1027a9a8dfb695f2609 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 6 Apr 2011 20:45:59 +0100 Subject: [PATCH 044/138] Signal prim count taint if the AbsolutePosition of a scene object changes. This updates prim counts correctly if an object is moved by something other than an avatar (e.g. scripts, region modules) Create TestMoveOwnerObject() regression test for this case. --- .../World/Land/Tests/PrimCountModuleTests.cs | 30 ++++++++++++++++--- .../Framework/Scenes/SceneObjectGroup.cs | 2 ++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs index d161bb846f..67b00ac759 100644 --- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs +++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs @@ -167,17 +167,18 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests /// Test that parcel counts update correctly when an object is moved between parcels, where that movement /// is not done directly by the user/ /// - //[Test] + [Test] public void TestMoveOwnerObject() { TestHelper.InMethod(); - log4net.Config.XmlConfigurator.Configure(); +// log4net.Config.XmlConfigurator.Configure(); SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, "a", 0x01); m_scene.AddNewSceneObject(sog, false); SceneObjectGroup sog2 = SceneSetupHelpers.CreateSceneObject(2, m_userId, "b", 0x10); m_scene.AddNewSceneObject(sog2, false); + // Move the first scene object to the eastern strip parcel sog.AbsolutePosition = new Vector3(254, 2, 2); IPrimCounts pclo1 = m_lo.PrimCounts; @@ -189,7 +190,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pclo1.Selected, Is.EqualTo(0)); Assert.That(pclo1.Users[m_userId], Is.EqualTo(2)); Assert.That(pclo1.Users[m_otherUserId], Is.EqualTo(0)); - Assert.That(pclo1.Simulator, Is.EqualTo(2)); + Assert.That(pclo1.Simulator, Is.EqualTo(5)); IPrimCounts pclo2 = m_lo2.PrimCounts; @@ -200,7 +201,28 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests Assert.That(pclo2.Selected, Is.EqualTo(0)); Assert.That(pclo2.Users[m_userId], Is.EqualTo(3)); Assert.That(pclo2.Users[m_otherUserId], Is.EqualTo(0)); - Assert.That(pclo2.Simulator, Is.EqualTo(3)); + Assert.That(pclo2.Simulator, Is.EqualTo(5)); + + // Now move it back again + sog.AbsolutePosition = new Vector3(2, 2, 2); + + Assert.That(pclo1.Owner, Is.EqualTo(5)); + Assert.That(pclo1.Group, Is.EqualTo(0)); + Assert.That(pclo1.Others, Is.EqualTo(0)); + Assert.That(pclo1.Total, Is.EqualTo(5)); + Assert.That(pclo1.Selected, Is.EqualTo(0)); + Assert.That(pclo1.Users[m_userId], Is.EqualTo(5)); + Assert.That(pclo1.Users[m_otherUserId], Is.EqualTo(0)); + Assert.That(pclo1.Simulator, Is.EqualTo(5)); + + Assert.That(pclo2.Owner, Is.EqualTo(0)); + Assert.That(pclo2.Group, Is.EqualTo(0)); + Assert.That(pclo2.Others, Is.EqualTo(0)); + Assert.That(pclo2.Total, Is.EqualTo(0)); + Assert.That(pclo2.Selected, Is.EqualTo(0)); + Assert.That(pclo2.Users[m_userId], Is.EqualTo(0)); + Assert.That(pclo2.Users[m_otherUserId], Is.EqualTo(0)); + Assert.That(pclo2.Simulator, Is.EqualTo(5)); } /// diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index a7107f0184..ca7d9d9d57 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -325,6 +325,8 @@ namespace OpenSim.Region.Framework.Scenes //m_rootPart.GroupPosition.Z); //m_scene.PhysicsScene.AddPhysicsActorTaint(m_rootPart.PhysActor); //} + + m_scene.EventManager.TriggerParcelPrimCountTainted(); } } From 9bc2705f37bfc057cdb74a4479d1c72fda4e0aa9 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 6 Apr 2011 20:52:36 +0100 Subject: [PATCH 045/138] Fix bug where on duplication, the root part local id was continually used in populating the local id scene object index instead of each part's local id --- OpenSim/Region/Framework/Scenes/SceneGraph.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 60855b2c36..97af0a0b47 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs @@ -1855,7 +1855,7 @@ namespace OpenSim.Region.Framework.Scenes { SceneObjectGroupsByLocalPartID[copy.LocalId] = copy; foreach (SceneObjectPart part in children) - SceneObjectGroupsByLocalPartID[copy.LocalId] = copy; + SceneObjectGroupsByLocalPartID[part.LocalId] = copy; } // PROBABLE END OF FIXME From a6b1927cff19c72fe0c879ab41fcca8052737617 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 6 Apr 2011 22:05:07 +0100 Subject: [PATCH 046/138] bump main branch version number to 0.7.2. A separate 0.7.1-post-fixes branch now exists. --- OpenSim/Framework/Servers/VersionInfo.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Framework/Servers/VersionInfo.cs b/OpenSim/Framework/Servers/VersionInfo.cs index c9d4c93d49..53a3f17b86 100644 --- a/OpenSim/Framework/Servers/VersionInfo.cs +++ b/OpenSim/Framework/Servers/VersionInfo.cs @@ -29,7 +29,7 @@ namespace OpenSim { public class VersionInfo { - private const string VERSION_NUMBER = "0.7.1"; + private const string VERSION_NUMBER = "0.7.2"; private const Flavour VERSION_FLAVOUR = Flavour.Dev; public enum Flavour From 1b1e6f78fd61b1eb22ea140ba58cf7df3829fd20 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 7 Apr 2011 21:44:54 +0100 Subject: [PATCH 047/138] Bundle a built-from-source Mac OS X sqlite3 universal dylib with OpenSim and use this instead of the system one. This means that Mac OS X users can now use the standard sqlite adaptor instead of the legacy one. This is SQLite 3.7.5. I configured the build with the line CFLAGS="-Os -g -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch i386 -arch x86_64 -arch ppc7400 -DSQLITE_ENABLE_COLUMN_METADATA" LDFLAGS="-arch i386 -arch x86_64 -arch ppc7400" ./configure --disable-dependency-tracking The SQLITE_ENABLE_COLUMN_METADATA flag exports the metadata symbols that modern Mono SQLite adaptors need. The -Os removes debugging symbols (as per the sqlite3 source pkg README) The other parts are to cross compile for x86_64, i386 and ppc. On Mac OS X, Mono can actually only P/INVOKE 32-bit libraries even on 64 bit platforms so i386 is being used. The dylib has not been tested on ppc. --- bin/Mono.Data.Sqlite.dll.config | 1 + bin/libsqlite3.dylib | Bin 0 -> 2175300 bytes 2 files changed, 1 insertion(+) create mode 100755 bin/libsqlite3.dylib diff --git a/bin/Mono.Data.Sqlite.dll.config b/bin/Mono.Data.Sqlite.dll.config index 6a95476537..ccc0cf59d8 100644 --- a/bin/Mono.Data.Sqlite.dll.config +++ b/bin/Mono.Data.Sqlite.dll.config @@ -1,4 +1,5 @@ + diff --git a/bin/libsqlite3.dylib b/bin/libsqlite3.dylib new file mode 100755 index 0000000000000000000000000000000000000000..94dcca8e103947026be7670e81cbfb4ab417d227 GIT binary patch literal 2175300 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

ke~deJDlNuh3sN|SRUc;Da0&Fl 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ν2)LVk*v#?8-7|r1pKptQ zU>2_CTC#xLWxrWoL=zM$5W7jIx#X?>5l^{&PN*i*VDCdnjGAs;zmr?gJ_^b+2wi9& zY#Esgy=s(t@=dT9jQYB-aX%39n-RXi-V)QBt>gzM+F6(tFr;zWa?_6O#S1+E0XDl< z@~M{yV?3l5SbH-9EAAbKpXreV-T`r>}4cUb)VecH*`kv z%{_H7^@3w4{1iE$`YrE$jzyTpaW^&ko)${Wu8!YBO_a900;~lrrG@i>EFg zTO)Jctt}t8egw_@;d!dmi+DXc%Ki<=i-+Vx&2v!G7=(Y9J+}BI4!h~*j;zP}BdSt+ zTvU$jG4H7=!Bs#^P<@(HbqXYp@ix5?J=VG?c2H60q(S!pmJ5y{>6U&=bfvAthW!>a z%)$J%>Bgfd7}4Uf*tA3FwwKmf5(|BX#;OY*{xd=1-)sDJ)wltKOkeBtto-GIdKxTfV^WwJfh zumUf!+DAkidhx{nkaK`vmbKs+yzq3HtW$O44Ldin#87KQF*K*`EI6>7O+YEeb9m7= zk@{m``AWVKXrlfb@eElgpC7&*LU<0hX$8jSZ?Kn#y^-i7+*65X6vD!0A&26cI+53b%7 zudO)LugEay)Kb_!{5dq7KLH3RmMGPb443*m)RXKb2vN|{I~uXx?8C8+u?@+p(t;t- zxRDESVbsRhAHEMzvETF0we34b!dvl4B#5-iaB<_zstSkSSN^4#s>pJBrgGd>bi^7=%Sk!H-Z=2ogJT##sN&;W5u9C=xcykX5!?0vHf}nqWCQ> zp>sSg5kLCN)!R98wYjzF1^6HqrfS;)OMy~ zX5gZGe5+Oh1kU|nk%om65Y3NV@h*Xat6Ou52Ijhw8Rb;@V!fxX9KqJVbIWZwxfIv^ ztQ*)TU96C1t#w1eHUZYS&YB8Dh`I=DNDm`@yv!W-UWFKlHyiBFEVg#j8i|9WJedOQ z7xOc&BNt)~!86RK3j*3=C$Ca2x5>*0Oig8h~IhU6oPl%+tvQJ=M&m_ zXd^9lakp(MDbgbVj0|TWe|ieAf>76dWL_tB5g+NSmPG?}G@t!?rm%AmXo$0;vdPyt z+SLdFK4qLfv`UrWykFt?`MFS$`%~neaYt6YgKDqDWqqi_o;$KLJQ@>|FPNf*nj1!! z-RO;ci=LcgF$XavI0xT*R`|tAJ^zv+Ug2f11Sge3Jvf&EZlWJy(C`njN|iHJ_UBJ| zjZ$G}$ZgDU0j~$G4$$lz?q@fGEr0Sxti7lKD>|@ulr<830iM$5A~0H>K>r=YuPce= zgo0Krpti?%kl;0E$9>9C^p30i0K94gSGUBU#cmc8ReEg9lLA( zAUMq54Y;dxZ>mc00YgZbl54hd)cC&U0RAT9y8sH`JLAyH`k;hZ@$V~qezpV|?Y4ac zylS2;`I2$SH6!pJ&OU8Iy{sV_-(=F9`@Q#|V~K@;mTG6>Has}7b5DdF1+IDVZ{k%s zgh!tNmFog3>2Xs*N4NJ-I5u zk#Kyg?f6za^aKhDZ~;^R4%AWAO1wM1PCHKMQ;+bPq&7ZkDXOGIbke=n+G4DeaYF|f zJA>tsv0wdtkLTZE&`jc2aDvBkHh#C@w+6pD%j3BnzkBfQeR$gZ1HVbo1=rzM46pDT z@k`*xI*y#?@ofBp$MZNgoIk;D_GpjiinBeQS@@Ngc|42G(Z8B=J)RRT^my*X@1~1A zp1+rSJeO7ASLyL=n(XoX6~DcgdpzI2LjV3P;PLQxO0~zc7{C8K>i0$nWyAXSOs&VW zbc)Bb^2;92cKmkF(7!Whc|5m%1#p|+E%oU09FOM^ejDd{JU_s1I&@6_ngA<*=U(IS ze2ic6tLQsm9|^d7#~lAxbREX|^!~rUoaFHw^BdvuFz*1=_c-wSqpx{9KfV#ml$-SL z0sQ;P0^kk_ITC<9t#ts z4ZqRrKm!i&g5N}N3XX67?|zK!=lFdU__zzdr}0b1J!Zb7&-4KmnpLbm;L)^wI+{@q zDHn%grrWKg>NF4dt2RjtLxGK|gb;Gk9_o0|dt`Fzkjn_bFtY?(E>rA;6b-YeuCGdp z${bKNoyB@er_cEx>Yj-xl6$#0KBf^#Hq9IWHr!_5-)E*;Pfcejq8L5Lk1qI}z`sIg z4X@n!DmxB;B=H4ApvBcp=)3zZW~shSa|yd@vbQRL6Ct>SvI-H7vB^-%fcMyxgR+aQ z=a$LE^V-@F2dF}e4^)007JLul&f&LU3D9dJK4e^R4dUKYx4Udqs`(3w}m^J zdDyCEwZB#)1|FfU^EeDJItWWKxmV(F5wV~CE18xse7kzS+joCU^$kh}&0aJQ(J;Wz zuG4bLT_>nE@;%staT$tPEj$Dkq!Kc`5=80;RRYNiBK)GaQT`fK5PYHhukgbWHjlYntyp zwJ-LU1&9H61N;0bCWZ?sutwHtgW^OTzoR7md(01aptYKm%QLei{R}_1YJM9k_2;s_ z?Rooa{`4k(78cy;8H|1Ff92>+WZBcP+vrZFXd6W=h;1uyc03(LX`bJ_i`#lEg}WH6 z<|sQPBA_Q+TF`iwwJpJVtZgE(Cxu5t?)Ii0+N&1>JEi;VK(ZRF4~ziHS@b1;^x&rr zG*Zeu!&0da7dl8J6xj1+v|-pj=>sm}33q4Mi{WN19LccgnPFg42ms_QMJhwJ);;fl z7v%&L7jrI=AV15(@zo)`Ei*=^Ujy^XVHe8WRI(C1?PmDY-24mV2)jYZozL+4SgoK4 zP%YJ?)5C-d2@%e$jlDNk&l;#$nA%Rs9?cO%GaZg?)F~r-_68aY3#Z^#vC3M&eIDR` z+T+i*@wd6K?Y4o5y2OE12QMSXxd}V|5+4w^Akl>fvJTOXobnE*K zDqLpA$&Qj?82~w(|A*^I%S^>}0MH=C$|3lbRxqL2SRk@1T|pQO5=A4>ZTUKEp$;|6 zryG45L4!Q0O98e^9H$ps&7VRPfEtE8E!5EbK3>yni1q(7O^SX&I#I*>Dt!?ep5z zv$J%R<-$~W5NSuFO;Eu$(rCfs`0nGWGWpaKIK8-WMC$wTnLWz|5{#yr;cxutfOa+slEXjSQEFT4{q%c%L=;l6Yq&=q|*fYq#2ncB2XqiGYH zZe^*S(CGnii|*7a^JyJFnaabZn}hnv*4~dN&3M>Y z!xuceWBUp;<6?ysFTk0|+J@7boJz4h1*ZQuJ)yh$1dB`46~e@EGF8t>a2Kpc01j8d z+^2;(b@#`}EPa4cPfLNqnc!{Gh3VPc4D*Cl{=LktD}ywa?sOt<1vaA0OHHxY)39nr zsRuyGL?`PLrqvQ2oxU+&EOGqxw4U4nOb2VgcUy%vc#1M=bf@w?7^!jmX6Qz=7OhwL z_SiD=qEHMCm0H`|HHtUm7TX7WWc$!G&JLAs_F2up#G(Ych?poR*vV0 zHdc`-8ZU37wkXdL=nl+()j5}n_lTsP~A#1)ou^tvoj{uSmS=Z>#=|fhr^9GU|tP9mWSPm~6 zXf=PefH}U_k$LgWw%3H~#QD!wSRdlA;^A#6`{v_({zDsa{O04#@U}GIrW4OPy&q%TuBUVw;%{&!en2j1U~%ikYt(cc`tAy1s|K-NAhela>>-7OxyG7*7c zn6N|<$Z;+|IaiNx1HTo&9t;wN@83;K7c832=Omt&)Epnvs4`K9sql83e_hP(1Fj8b zTluWoUcz78dE2v_J=P2nf&E}!CW=OC6eZbfKIfyzft3H}IPy!$;yC}+wF2M(`tbmm ztabOj`0LI?ZSKj|8bbCFfEf<<-W&Kwiz@yRbGf zmBouFRP}-e*B!bOXDm61 z4nCvrB8c)xzgk*s+$@vI9Z{#K0>!AU1ONR<}YQb!%gQ5*s+aV9J zqM8vwC+3(H!5r-Dh$22Hz4+V27g;M-E|kNrnh!H6UY(K-7lT?mGb%Z&Z5Rp@cupVN zdJyz|`*+FbQjc5;k2k)RdnHL^jVvj&@P|`+^zc_2M@A3NZoD9RcvhtLOeuDz z6w4G1mbbz3rd140(3xr6Ss+y!0{`ir-yWFQ*V8cuPGD9rnK|>Q?~ix=_K5u&_NOGv z9xM1-K79X5G;LbO;TH@o^f~3*TutQ=I<@N(^b;}2=RlwVA+A7!d%sa%{QBCSQ1P%i zCFxnL$>=>%j@s4TC+^xyA7 z<@w6CTX|2Y6#CF>_zZv_1;F63A%6~DFziridK-%$j}ENubD(MMp^kMQ^281lck~tx z-qTDMtF*!|pG%!^Y56!Md!$@_S6o3a;3Jn_EOQzya@4Yg?-rXP)hXi;i?8HU1@x(zAN% ze+a#96y7zD*YQFAatCUYtXSR#5NPk<<|BPQVLT2(?$_~RXc4vx!39#!1bOK>>%!rU zrM^7bw`76d>b>?Xy(7@DVL6^|$M1*u-G`rzpJo=AL>t>P7iM1)?U^$>9w!?aotOIW z?U|w3EI({V_3ry8yeQcKA!O7ODlBfSkU%g|!x-FUirtYzFqB-FMm0ms8RjylsaCd) zvw2w5_D49DQ5<;XkP=#|FxNy%wP2iv!aQz>nCq8K;N9s@$li^pgB~G_5sG%40ySsO zft^<5l~(R4D$^VAM>(tmN6H2(*(*}z8|>CMSW=gtx}nH+aKx|=`!%@u2h~z7O)WQ|cr`?l}wn0VHS9;&RRxnRqO#^L4=6 z#oJh<^{fKmB{L%RUlR`ZL4Qwx2=>{c1-a~_pN8g^q^@O3{wP-x%T!sHnSHDv{LG~) zc%m1|7i-(P!rt}RE@{{|CRLBc=* z&o*ZFBEnB~NnT^GQ|27on6FbtZUAggnTe_Os22KujLSj}`M>SK&~GzF22DoMD@R36 z6fTncAhV6)c@Y~qY96PrJ8sKn3nsvicll@NO_20Nz8*uFJvAK^P9^-fD7*PIfUjo8 z!(1zhHs?2IJl&l+e~EENlu$eV2-Z`dJ&j#c5B&DJai42GG3D&7pP`twy{@!j)jP05 zy#UEjSDK7-^0P8`@1@4*z2&P7qZp`p0B*D@)wNpvtqjjbD3I!@hJ{sQhnsDuKS0jtve6!#f@>uoi8jsf!nIFk4{OQU zKr&xyh&5e?3lFT_p*ha!a?9$N{fgM56U7^CBs=_fiN@?8iX4|3K zOg>J=E(A`pbafivWJ9vDy4G5I)3^94{2AvBo%d0#s;;x+2j!twk5Of4cH~4=J=>0_ zkeogTmYrmLGGHRM9G}B~3Z;n7K@+vGTP2iZ*G)CR&7JM0)GFx$m^sL-7qw;fuES2SM&0L10dxs2>tdQl zoE@5nFy5hggj+dG7x(|A#WD{kpsgLSPQYI0B=~}GoY#&%j69gVlkmPu?xQJ;dOeFz z%XvItC5AmI|IL2~8U6vqRh-ClYNBv|VJ#J15aKglupO>1-QGv8RRUkdz7;dEfGtHn z;x@bZ6g0qijQK`mn;t1^+pN*Bs7`z(b?;mG^WwbkuvM;1HAL9O58VB6D&&|-aDlD#;1_Mscso_6cDz$i zm>?lx2A_6@Akf=wOAGnMly5_Yt|MGmR~ zL^sLN$b8(>(6nmzK2g{( z&6Vr$Iv}0Gx)1=cE3`v9zMl;3b1B3?I>VV6)Q0Em}Wr z1BpKjNofn%?simS69zdAgE}TO8-nBCSi5_?@F=XoZ)yMaOE0}-JzG)${hj2{o!a^= zmsu2Qf~gX0{y;Es5#Ia|sg+-p&>50`Hx}Gi=Hc*t&Y&v@C8o*PC+;tTkI7E30LJdwg4ZK8oiv5 zzcCTR*w`khm94~?wdNoAtCu2XXDum}b6EQ1$!#8+7>$EtZEV@!bWq8I-Nvcs?ZpM2 zS%72{4s{)tOQ`i#?;7;a0eWRCD`+|aCywzih)6R8>3F9U)ytd_ZCwJGEQW}vah<2W zuJs|ijTB^@h^lMF2vqU9bYdI(R59a*_#a7(df-~QChla08eAkuo=KcddO1;&!M>0L#|qxE!Mko3FbB@ z39ha-0@Uu-8_%h}ld}9@GMk~1e=3EX7ymTBq4Z>m&^G3^+x8M*nNcc1T)-1k2z(d* z7PhfPyX__Bamg`6=sIvxHr6|E$%@$FLAb#j;Ywut0frH{4WbMVufx%I4)*l6u!aQF zVuvA!oVz~W{{aQjuAvk}umGcOr~DNAa0Y(u%-j+JJbZxSi@&&h(%wd!LyA&ES$KiNX|0H467!+eI+)C&VS?o)O$B^{3C;$&0 z48ya0fmTlP=?skarr-Sra=1$gyq>R~C4z=6dY&XO_Y`RXp((uaq5@U^&eAISn{daJp(` zg{qB-wir9$yNZsi_|S2Y5RWT4P24AFxoa!y!X!TOEF$jst#d z(QFS7KXZ?FKSE{}LWAr$FcN9os_;-O4+WA7NO|i97b!5~gJ`J;^Z@eA8M(Df{`!M? zfE^4AiCbHx^UccXU(?Id9T78;r{GAzV`NL>B*29dk*zId>RH-m;(bjcoY)fMO-+%X zZoyVJ&Pv5u5ID}o>)kUx!8GmHt(P^iJFN zmxJktRgx&%JZjDR%jGX<-xG&Rwlxrb~Sh^KVPKUh?C>SD;#~J#Bkz2jR$g3|0H>1A^(YN#A#wZLOih^ z`%g0tX1|J~v9lVz(4gKU1NQvNlQj**dJ7_#$9Av7D0){8%UtBd+EF|v%&!2qMaK5& z+EDLr-FgL^M11cEtD$I;_yauC& zbGeE^qPtT+!*+1ansCZ|N`A^+y<9ho<3+yZPrB&6xTpGr0tCcf%_T-=P-kF)R|Nu? zE`R6Lks0yyIaIRwxaw*-t)APw$XsA+&KoE)L%l{5HC05J7tpqU--$a#*9+mBelky` zs0)$Z8W1mTH2{UK)}=*-FtchCN<;aHZ@UKg6e#*^)|LJ#6R@uyaJ>{|y4W&Z(k=X$ zv-$|Dq1A`;RZ|`3_V2!iT++$t(o&eR_Q0pL8!WJ0Zy`V-zFALkaNf}xd9j^Br%ltH z*r1x6HyZ@5z@}CSZMQdF=)|sazw<7+J2tTOMhQ&9?k zr)EETsYD9k%qZ{gZCK1hA*J5*Pf*O59jw^XhK4T&--HX^(}sr2$VR2r8V$srq->LsUhqb3mkL(`k=GX4oLthB5964bni8|-Nuk8!HS^;u|S40f$NpU<}%4Xteu%_J^s#Z;&dq;HL`4!;s# zAIvH{WE?3$SRrSv6p&3nvjPzJx0^?zpU2%)o{oKc8GFWVlEMLBs_SfbjNyk5M@}eR z`Ws{~YJq$g7N?_YXG$oQto$4;u)T^}5?cmUDSl2pz%_IJ7~ZJ|zcaMJlm2`*$6lbJ zm$Xpg%p4^WZy1RZjWYW~@qkGE@ikoiJS3+;890QXE3qlv{KacotIU+}Br;kJJ@w{W zI}Z0b_j`hvB$|KU@*qyEhbJkxEy@ID^Z`an<(Yp4K1>8bIeq~g=H)S9^?J6fJ*HEd zWewxtKlD{JFU%#nbb-f;uflr{+MK%Q5(vhSbiw#aTFu$RlkR_B75`dV8(E55goY{Ekm9 z7<~b+cIB})&&PVv-RnXANb+~A;`pf+{&oupW<3dyTJ{0iNuOL6v)DV>2aUL{5b?ZsnO zK&`T#zC@e6L^*{39`m~#L(l?HR+@GGm}nx!5h!9zNfM73M-R9tpY-TOm*M&f`EDfw zXXvN&LcnV#D`KqT?i$kt7!0va!yG4Rrdk%U1Eeo@pwjJt^gh-hh0dTqDz@fh`vz0) z@{k~>2%=5>Xo5RmQ8@l*!sE_mJxOl3IzIzhlWZ_p&CPgp#8)p{;%Vq=p47WP$d$l# zHhL6vMjTuiEJt^z7h~p5f1EbTA*12PY8#!>Z-Ymf+>+X;K z!FS}N|DldMH_5!n^j&Cz{gODt!;y}7Dgpm$wxUv*?cRtX|6=0S$ifJQs@*6L3e8T zaQw61?7--q9GS6*?hS8d@nnua1(L*x;_RMx)+M7*BvlH-qNJ#^3J^!JWf^}G4{+U_ z?r*T>wmZ+z`4X?EU~hB(k`tMRr+wBMg>0I;ah4)2qhJR%Zm5uisSs(#o3;|*nXI!I2L+C4hv&>Gb1B<1DIDfL=@K5oRwUQ80^k@A|HES zngM*sN|9@XU!$WsBM1XCNyc28nzi?K)nt2SApIYbO++%?G7pk6Xo}_%yTSFxCZmLx z5YCst2K^edi13FTB8ld_3b?uw=bWLbFb}0kLwd{|F?{BC$FP8`nd=Dd9gT0v@6ZAn zVD^=??RMsL^OOwK0`@EgT+lQ@FP}Wi2SrYf^?orjjINCaQxCz|pSdt6meWUO(KUqg z+_Q2}Fj4Eq zId_vgn0PFQ@og|w`lEX}9AZ~87par!bMrZ{%kkA4{c!3GbIW>ySXilP;2q>3t6QNPY`Fa%$;EIV zkVUJ|5H56^;={FyD8-R}fOWPC%|jRuLxea@YGjGSrh=iwY6rr7i_~XaY|VZvhx#ar z(Q{vUQZs(x4wkDk15liS6aZ3-&H^Q7*C&4ki<#ISlfxGt_?s9ki;@Ct8FF%IOU5O7 zB+%6GUS9)dc9+Je}oUo^KgEfUTVv>m7VBD zK}S0;=x&SUGuBZ9c9`XkM-fNrGMMo6%CASm0f&+*U{hQ{lx*-Qsd*way7$q-#BMs{ zS20gQAX`*yFDpq;0he*LyCNQrGAoT5Z1fu9nWXL0Jo?;*0dvZ2*cs6ur@T9dWd*fq zdWk+7X^XOYEP-b^JX{x-J?g@*w=cAYhU3%V+FH#;3`9L(8v}5d(9<0(LY`c5G0C87 zS&YJHfD_3=iCGS$3)pov>FdMjs$oSg(=tSuet|4dm*m+mQG`M@s%V44byYJbTwv7t19KG-=Z}ACzPh#Dkpl^C@i;DQ&;jT zL>O9Hn!j6M_YUsX(UlxwCw2m|r4KUZt5aRXQkV8{c!h4`h}oqfrDl_ZH2p)ox*Q)K zGZiR=ejd)w=y>=hdCNzcfp_NENgewoLI*g)ylMfUPa>u8LuL#P%RvTyFB`V z-|vtJV$}=fcLqjzGs9z@-q`C1Hp1pL>1E|H8PuN$ujVHA!VFJK(U)x5P|JXC$f8Kz zRP`jV$-lZhld_yANMVK$rk)v27NWg0i;}h+fHHnJ-KkFi{_z)(I^P||>aLQb54zkP zauFF_%As3^ce~p@q6wxVK_sp`83!B%v3Fv9EIpKTO{Ln@Vrj(?ehW|<}2%IUTcd8-16O+|aJv?6JyO7PGWeRQkuUILOHi$;&fk_~knEx9#j#00rhI?{*RQ5F|t z8*sR)3&1AapZhR-YUDN-V?@QTs48gsaaqX!FpfI2C-v3rGDnwpvFr$zpN}jsw$Ud9 zupSukv{ar^42S!0zd7up2bz$91sKn_titskltA5kFtDUnxk!6WOOV8z-%$B3Vwj`_J>;_b~1(88dy2ZHe`4P~Dt2Z2_$I9F`=E2mPTl3MkCV)z0 znnjn6_E^odENCAd*HM>~lI`Uf=f8B+eXXyzpQA2|n-y%HACe*7Q0`QH7~R#U>MzHW zw%X$^=2mjnf8o@7bGEtjjW#YapfU`1+mE^Bk|16Xap9-~j9L?$_8PTmt zLyq6sp^>?hR&qosho(ksEeqx96#_<;2x4FxaTKkXgJtdo=Aa%Ta$xbKYj$Zsa!Xm7 z$A6o(ALMy~Tyr@pJf5bf4-`c2!hZfR-2^>I5S`=~SHY%o*XbS{bgU{@Gbicgi$-Kl zSf+Oq(yB7(S(ABRg|J+Z2HA|GK|*(sfm3?c1b5d)vS}0Q+t2-@FS8t$w+&C`6Vl~G zwjm^3o#xlmHxp*O-2aouxATwwghWEny)jEp(WU#v!zr5#81#%dn$d6yXj`>@a@Xc+ z0^MmARij|2hNJP)hQocy5F{(s`k@&JIm=H85p6J=YK2bRag4|W4hb2=G*nR%h1Ofi zLs&;J6H2su=)rC;TT_l$t6nSUgWQETqnGL@n zGc?)7Z@Q6*VqJ%)0gy$0{%wxov4l@;gxH};WN!dj3bJ?~+=+uN>0cr-uZPBFa8=|4 z)2-2uV^R(^FQf8=t`GC|kh|S#kPs#$_#*Q;yi*#9}wXehHfPm1E7K_f>uj*;wasd7E32j z4?lKIew1B7X_b0k>h}-1vr6=2;mWvv2d+~DDYay?`?=r1ra!$DP#jBSuFZ#oBX|_| zJd4Ew-u?`b zRlrRdf1Si_=p7=(Va=jX2I1-uT<3#vOm zWCz|em@51ito_Zu_QJZ%m)Ma4Yt4RCSea;MnR|XE)WGt!P7%&;K zM?&i0i&G8PP`|bIZWN6jK`_l#@<8X$Wv=t*2yy;wWgEDnL;_k=bS}EqacYn zu=*foaio9C4(+UGb8gIfXG^Ig|rPt`(g$Gvfc`2Tac(3NioH6O5wp63V@V zFt?nQ_e><_^-QmkzSlyS$F5o?;prm?FMqRl3AUJ7->PNv@G%- ztu<*@A7^vXr6)n{Z^yft{re?au&L<1t%u>vPeu@#tYl`ZDYb~7n_7!4MWY-_N1#B6 zC-7B=^6mVOpxQJ94B8_6Zl*Jk$w_QM3jDW0dYaXk-hnSONq|ee{ce6Qaj_;woaG?L zXrsx$G*ouTO|dKQ%0b8MZo@zQFdw>ss4gj<=pwuU@a1Q1Dt}x~GO+Cn}sOK+W6=J$wnEb~i?w zJ^h%cXfn7HNBajA;?h4{TplROoPb-DE1OCpg^1IkpdLm(kPoH!Q0uR}iyyFUAs=+O zWpDatXeLMOjzC4LkW9@*MbP$f2QEDnpoJKF;S%lqG{KkJc#VrSqwoZP2dnv|FOu$r zoy!8iJM%Wf_=zWL{bTs<6h-YW93|0OoVVsT#lvR*rX+nYKIOp4YUgxz(#}TQ=B2Ef z_#0LMR>7rr?a*L%Ocy>);*)< zpBLk4kI|6+hQ(uvLuq@OF0ut;as za@^`hLCAUPs<2KgMJV^O5q7-`Pgzr&)K^rNdS)Q6X2B^XG1+PVL#-}wi7WV#72m%B zMFLxA^>Utyf8nviF#M8k2U+p13&`Dx->klU`dY3RHsIFBl_5br& zt8|U7xuOUW8x5~XT>~bI)3mzU**jcl%uQVB-w7h5jk}6zs?=kr4SMjHLsOsYI}1Y5 zD?E`S_J{7B1&9sqii{(vkDg*H;Di&@LTrK+S9C;%@Fv$#ab|?w0h87Vs%i|*V|=8l z$JkY43^?~a1aM@uSIrPt>vV|V==IRjVi4$2GVWi3Qj-FXeN7gsQ3yR%W-SKCK29K~B%ygIsVg<;RzM=U0HHY-<88ctayzU-$r35rp-xtcV!1uV z%(;#)LCUl{b%;SP!d@~94iBbg|E;&rhU%i#QU2AjF_yom)eqyYWSr$NFv212Hb2Vi z9Co~j&%(fPtybYt_{Ovw$?r=MkGU8RsSAG&3=C4y&47p=?C}z$!qm%5@N`P?-!Ke2 z?=!jeWBf(5F8pN=lJU>7Pn=y$1Jej8X(PIHu*YiVF#=F)z&P*14;~5s%z>An(SbL8 zFETm4IML2IchW7yc{jdJd<6|m*Bgng(WyINJx;M064)YB94)@#QpdSb<7|l z886B{72|0EGAH9Dcp3v2na=oW{Ms2GssA|@{}d=05|EQx7;u`(oH=8xZBuZ1DKv)1 zmk=AYT8=OAL5?qVIB|}X9dCyUJe8D*_a5XriluJ7 z1oxQqIM3XU(%cCZ@+o-&8<6!X&aPACYrG(K#M?BM7HM?Db?PuWlvH#5m!K)Qg^$XI z`?YjiKiK0oAR{6GYkg1-s{nW4&beV2$r@G)oZX+XC zi3iaES|i-{ltWl}c5lQus%{)7sjaaxTibJgk=oA7)z)|hYvcL9Y&{972WO&Q9DAfM zlsV;D8R};q0*)NjOguYmyRwzEvgAZ%x?#mH!%mx~7&S0EsVZbrHC{;3rrKnJVQ0jN z?bZX9YgVvCf}f3MRYFMnf9w42&K=!rRx)8ZnK7p*&R>)|t)xt>mtKDm$ufrndR>`0 zN5ASfoeu-R^Vg3eFaCMvXNYxP0IPwP*?Q$gsVJQ=xDP z15B;>9&(5f#&*pY^?sX}=g!3>iv0pX6Df$n@ri1=*2EN?c>{3KMh?js;jn+5PcO`) z;)GkxZzCBl7`Nl3e|kTjv&s`UF0;YzmiZCEYYg1Xx>L2d$&)Ye)FKG*kr9iUnw>0G zQ17guMOJ$;rWX+B}DB%gb z!C_GJJ<+-B_!wZ!PL$zqR-I*3JA;Z3fq~#>qy*-}v3=%-_B97a4+N5fH5;LO?D4>9 zcWTc@*`jEp_F6SS736O)>8%4pMurNuYDX+NeXiSUi$(E zz>T;^nYoofNzqs@So@_Q3P@!p;vn_ip5fdK4!`!pV z_8c%IrU6*|RSD)#{o%hMz(f8%DGi>}%CfKt??Wuy{^JG`CWtL_N8u8M%tV~ato2nm z?9lQvSNbaw?BL=7AdbvQI$69dB>7IRc0d&`rvEgSLWPD2LTV^7>m`(aeq0u9P&Q}4 zWlPWl%Kr6DpzQzDpRsy`E~>pvj4qRl6GR<^CxII;<1I?&ES`80t$9_j4v!Rb>_NP} z#9OI)Or_+Eyps+|8&Y8HTZBd1#eKx0;tf;BdyOhZKt9@{fo-k-DkV?rM`NYq|VN8{TTolqNHj4 zz7C4GyvlOThH+bHR?;Mhg;>>i#Fe@1y0Ip^zGz~h4;P=gpNiE?_$TOWB?>z~<{7(# zGcVFFjI@Mn=G-s1at`|lx&&I#O&Ne}XssI1>N2n~r)CdWHkVDjyTaw(qu3)Jmg&L= zt$f>)V)6z+nP`qGz797BPDtshSf%=+G9()~k}eFBjK)|sLCq}JEM2>W83(dCx4AjX zlcC#C(BRVkp41}CI9&OyZ|Sg`VBaXi=BS!A7Lg<`l1|_f#1If8Jq6kA0R7q6fWzVy zC-daw8l7X(MdY#CX>C2LHnGvLqPatF2*?^|uCH+R8eSXF@lIi(d#FY34^TQp>W4j` z^!9VuK`Btj%TGs>=~6`L&U#nz(BZIqc@iU*TJ)BADEmBeqmMd zh?%&+hTg39ekj=S2U%oEHujpGtpV`{3JvnKBX@4KC(};v^j2a0R1Dh9nUph#wj~)P zT|zkX_5Tv5nOxqT*0P0GDTbHj|8B4}2XjeGDtb>qj~c}>xt@-S+!sJ-2?=K7h1fWN zbkG!@7@I;reP+`1`dIHLBqf%z{?5qId@^pz481&9g%EU^AD~j>FZ37pfDSYn<5y1i z0Nicpfly;{N1yYOib2!axXFKC3fooxxXB_fC?ImCA{@{C%Ou22cKmEk9B@FJOFqIx zuPX&?X7V1Tl?dg}DNZ>bQbrIGv|OQ;41Jtw$+4}ASP_j(rmTtDd<$C_YKNeLO4>If zPbJj>n`=kobS{!p|9u@-B5XYU2Hstg&bvEjVo&DWiqCNvrf&%207n5Cm6Ai+)aFaw z2hTzca7eSOiaUJP`i4=c%ddM;m0$Bj>&%VnB@a7>T*M;y25KI!Xk-%;U(aU3C9 zi^RcQc6cF-0Jt+8wzjEWAIv+8qIbc(dm9ARL@W>Cm>~i~HE$6eDjwkKr_Oihh1%z6 z)gCr71KaG?zSw)diqDsSq(9i}o@9Z()%>10Jrw)gvwW-O>h`*4`6;=EpTI8>M?jzD zwc{J8YE>9_rmZ`rhU4GJ=P+yE%%g7P6RA=8EGu6Abe0hwYYGvPfKAFcgIn8X4A9%; z`mBM`7_1sZb<%o}Rj}j~6%Npb+<01S}*3h{EuriLUf{BEw^oyiJ4D!g6Sb1I;NjafiS?AkAlE4<>ea0D>GH8DPav!kb=d zMVsKrGdT9_I-;y;iW4itt>MVy+&>NvR&bA=JQw3drlB^xVs~B-pSkerKfmOj-zVDB z>qkptR{R~jsRtgzUs%*4xxEgd80gKTe+TYwNY0Aiio)s?M@Q(%JMp2`Zb1#4GjI>+ zn>8j^qJkwPKhSp)DqQ-@+*GvUr}6VzX}-Pj%lKUQdVYJK61sb$_zMHa5S>wNe}rve z0s0uOztk-yr3xeq(f23$ z@HP}gk+YOkE87z_soP(tQ&|M@yIR7-Tf!sK<4{U>MkQEvCp=8G95F6Ua(0hisUCb~ zSJ9P&g9#Jq)Log1n$#+%8ho9$s6*5hagmi|LjWeL`Ass+jj`~9&>(gAA+f1;X`5>H zT3cgN)jE}3JCd=7H1GTGld&J_-u|^8FJ^6S)UQ9x!+LxtlC$hvb2x?vjo|v$n+>Uw z!^4|fb~$2CYx@3z6T8R#j6-w`%kaTP{YdxgtXPZ?SZ&&^H*gq)Ws5K9e7{|FJNJ?3Un`UVoUtXxw`J~ zIqDgJsT+>RmvX3s2&U=EgnXA1a#9bVZ)#mg&3z*#-^Ua=f&_u_sp zesY<+6)*64JpH!2uKw6|YLEp>=|kV)4jrLO-6S>`0Tj!NML3!;mDN;_9oMNJg{4mf z(bd{jTtA+puQojiriQ#I3T_3he83H-aGr`T9Wa20tfNRt2Fe64j+<|mYo=F@v=^@- zFi&D*fn1ySWAbXwsUeFODHS7Hz0R;;YBE)CVuw0ZwG=s1f*mZ)>FA3D%q)Qkzdy*jn) z`aB$7N~wyFaZ|fo%0o7$)dgaEO2IEvBU=jiPjO4Nm;d4h(1MmJg{qa{{I6XUn3*mL zdLQ>2Rvb%EAY2;^++%g=Wt28%cN~lU$Qg#8t)YV2FZNV=Mpoi=h8K9#0lrFg*0$QB z=I0|gFH6MsRG)}Tht3iyCXLZG|2BNcDXm(%>FwLbVxQjX>OKiK>b5v{A}3Zp-*P}x zP4cO6YUPr;#v##_vprV)>=Lv(cdFf$nNT^Qah!5kb7ieBat1EjVA;!R{f)z;hYPHD zFP0{q;d*cS1FliTy7&^J)X$xo8Lr||tlAgxRbJG1mSU8$$b0Fns2o%+b=tK)8>2E6 z@p+*>lHn7E$@NiqJ9%GcW#p6Rubzoem@^?kHzk zU*mH6dEZU^A=pf!77R`mr~oXTjmVknhipfV$xJt{A!}K>vV21XmkY2;Qg>!zb;S$I z|6A!esaOXmSVfk7jUdk@DWuvi%#ygwBCy!zRnScsBTW0!-@EZ2ed+Ho$)KVCZhBF1 z))HWJY6B$14Gfi#wsrp=L>af+R{UoW2+EPq zGt2G$nL>3n4$4@~yu(|0E2KyygXCGou-6UIGp+KX$Ooy!1umY_H!`y{+!?+Zp@=nc z{7+c9?)T`P_!8XDA+IavHk2$y1LYjCWPCZg$tN{LEh?@M;))En=awg{!4`m`1T$nT zwQ4dE25P*Q57^g&|4rrvC7-#+jdQ!q$>0n$fFPVHsRD>SSGDp(GUR7{$*{DGnf&Fu zblfDDc(R@Iq!$k*WF%iHB1V5cxxL1Pzo1l6|A**BZ0>*t7h*Hv3eIZX#Sn)pb>)5k zfZP?Jp10z0#71&mVYya9Oexok#oZZ&T%k09iC0HZ@H6f%nXHT!M3Y!wU1|DMW-!hdukBC{EMPuz&F>&F_OBr?* zu2H@gvn>%QGq!E4oy53|e+3^fR%*G#9Sn9XDKXIndoTscNpkpH;{%g2*K6ZeY|mJP z?1cx1k_a5O?`{+7L-He>%>TuR$4206jlafvcfUqtXW(WaIy|nGE$JjIfe2KuC$WSB5vpjO^jl(D1w{RiltB?CRwN`2D_~=nb_7b2GG+}cXfeJoGPJJB|!yfR>#SRZtLI|+92!T);nU7T6 zS9iWk_nP$!-G}c1QsNSqx*Z;0oB%pkkJOug|C+vuI{pcolS_+EoI-mZv5w`)!FSzl zC2M{SKt2?*smFjzHPDWi~lNJejX&F3)RO z@u8GlRXJqAzDs0vhCnJ+>|x(5P&{Er5(ZqRS$FEz_3WF>X*mom=4Z@}97ZtaGB4yW zHTlyBv)M1m2FVz}M3?-8xd;MX{m1b|^PLE>Itbp(>CXEi7vX$)LE(B9FE8kPM0e^Bj=HEC(FeFR%^ zxUncbk}w&W1G#U-Zy$mLJ>1`W32o$#b^VoJWHF?6bH&4BV{al2IVf3kj@sIA4Ne0_ zh_g<$PB3c6AH=}oW-1|+hw&E`U}`>srv=i=W;}JqAID#BXZ#n;&>4S>|EL73u@f8d z;yCr#S6&%8HzwJ*Os!t@g99TcIEu2BYTI#@>Sf-{zDf z7I>)iX|8LX`&)6mfL9zo34INBq@SbXw3vyCX-mwKh2e|=pGwNoybRag6MM(sIQs37 z|Lyq{G#m>NG_8`WyexeJ>%&gayJ$tV38m4qhcO?oZjt*1KHq0G|CBJ~`RrxyY3ia$ zL=)CQc47KR6O#}HU~$w}8jyd`FD-Q?ZszC_N5g`~Q=@H#Kme}i6f3>SaSLwBLijLL zh0dT`pXn!nPLk>eda9t1d8Oj=Hz1>b%q}1vJ`3XfASG*?l#*=(>9DUXGrDJQ0O}r8 zD`rTLYK7IwWS|G$qXqC8yGG&`I``LroDJd4z;*5u`!Z!{0(Z;}lHzer06gW;p1KXi z!<9`Vm%lDvhR*#{b5#_f3gwUx3WX@(89=1T=!fi9QVkqq@i%%U#OV2a)kObM6ibIr z-B6Utt2d#ul%)5GK^SL}%u*5^_|t7b##)G|J{?WhRg;@L7PEc|Sk0O2ruizwAg0A? zjqoTz`7SPwfEy<^gL9c;5%%kCUO>>DiUmLGTh%uNvJ76;VhP|?Y0uI32?%?9(pDm_wSsF6;&8p*KI;^#}%BRV%m+wyB zifWzM2z^_QU+d;r^FhCq)tnCZ{M}Km&3!mZr9T0K(QX=e16vfBadDz>X{TutE|rne z&eBPl61_-tmQ8~1i71TDU6XQ404LT-env5gMu{IQ+ZMDBPg+S^L^WlWYYoE+*s%WS z$}@1VT`#s-fNGW}Q@TnDMCt>1a2CJ0r87r+W@x%!#LH zK+GDKw3v^BC8xoZ@DFmw1Tlk%%3x(c-FwwiEWd)RErL!ulR#Xl%UF1uu-5q~+_#=W zBG$%XU0^jMBs_Y<59)!3@d3--rO}nkJ&{Fbe4`{PsOC57BUgx!y!1bC;8Gs~O6(&0 z6V#4hwG|mh-Ma&SZ#fjGwmeVs&nJI$N=_CWw@W8-+vpLuyoMZJ~WF;i8Lp%ctY<9DX$~%0xidsr$r(0ZK0tU^U zIJD)jO7K}XE0-VY<;i?CaVI;3#rdVYlQc5)a-oa(cQ77U)#?Q}hMSZ_m5Wpvy6ObK67dCxF$ zBh#0mUc<0iYib?NxM`)3`uJxciS)zYMFF!~romS7O{w|}WQ;xGuRjbG;0pZFI#A18 zIFU(?v2Knleu5ky{Fpc)uS=b^4E$_6iA}!`=leo5Zp>e7bHV$777`z32vP3RV`19S z-%0O!9jP0#>*l*lK+XGBkxW5nps`)-w3v>vysxAzwNuf5ca=FZimB3BZwE_By(kVv_8>cEU4O$Cc6sj`Vx)u;&l6e*v%nQ1tWZ z%m0My<7mQ3?Zwtaj%^U<6Edi80sd$eGyU-2QQn>GBpEt7lE<&k_ERDSLYU_9c-Tjn zH}&$Tz@Q$G2d+e4PdS3x=8Q~l!AKmXIbDI(ZTebVF`(fgtXkrvACSaN=mOz4iB~N| zO;7E{;RChe;Kf(qPTkQ90o-*Tt4Oa}@!9jw)!ToLy+6sm?qfUBYp?i>DDqs3yCCb| zu&2GH0ws3vph6((`Zv_Hx3psx98k%oq97ByGuFGncmhm2$kn}HEx|qYb-3^>c4X+1 z*^b(=1heUt#^H{70Z%xg?Zn#fU}3vcQ1RXqLI&_*9?4o;hQRC>JYd?GJOi>sdn}7j zeOdx>Rn3N%KAfPP>W}xQZ0yz4A5_&fU@RV7d4ph)_F`ZYj=y^AVBWOs)-kvRe!+7 z-3UjIU+q!jry_n8EK>EwHqc!E5_IfxC-%-F;J>|ubB>(sivw{wA-1tmHwsF`CV?ka z1JBonXHW9zP%gOYC|rZy>d5)Ow}_3}Wbjo|oeIH=uCdMu9t0{>{XRAACGdjBNwL9K z@#PXV?H~-^&pWaAzsvFN!gw=G1p4qQIXLBa-G5;_8Wk9I=ZA1Jri_jZUbW&?PK?Oe z$M9T~It`^d!)JH^h%nd4t7qfNzheNcI~q@O=X_<=`|H?C{5;pH;7CmNx5 z4>Ap5LsyL9C9mj$sxM1|?V_X8aAGuv1+EEzg`Mz(@L)tz6$;CWU^}f1=R*D4IRS;3 ze!`cSzKiK&x!#Vv8tW{yBm1z(=r~Yd2R9{y6u{`kWBkX7-Tg}pMesrA{w6-uZ*)}s zAv{dmkPNO9ghyT-7gjtJrG3g%E>$FkDXT62e0j2h|ppVV@^b ztl9N!_d{?OYD+!PiP5az1#dKVdM;&$9$R3LI)3}t(QsrJed2=$jWIhtf!XSJAkeUy z)}_k*YDLL$Z{=zImB({g^9cUacpw(+8kxJ9M?P&VluuLof?HH%b46s!@}H~VmWoas z`!hh)`-!4T0x_*bGoM@B4n+JE=0gW^ejc>D({c)cWURRambXEFPr%|5aM}(vvkWIM zB3mjN_mo*RD>eoy_AT$mpB97@+V9%581|{qi z;f4=CZ$aTsLjEGuVPv%js(Qb^@dg7t*j_kUzu2KbGBjDJ2em)Zf~RDt{HO2jI!6WD z?S&;Am1Q-_;NJGOZk`Dmhq`d;00}IEty#QcvnjY2=Z!0u7Z)}9`+|EbrtMw+u9~)C zCuT1XgM96DEEhwi@pgnZ0B^0|%Ud6tN?`_qBPb~9RlC+7Yby0No$h`fNen}h6if0z zB*Oz=}){tm<|ltk=R1JnufES&?Nt1Aa%{RB!p^ZB(KS$AsgNuTxU({T0cfTQbPB1wX* zN>p%PWvFyTsZ_top6v&EC1nUxfV|n>A|Wk*73w|2dh7S0hJmP1Y9KBL32N;PBF}<; zy2V5$fKhNn`suLpZcb2Yl$mtW0FAhb*-a2m^kp;0E0C*V~8f=t>fGHD!{uiy?@L;z{d z5@S`<{GC;lOk3pxW(cCz1}Hq}#^A)X@TkjFCxg3KMfwDeA;-Ry_RAkr@4LfqM>Z#e zTcn9#mt-491O?lZff9NB8uZ(3RH~5BiM{ld?b>i z6Z-=zpmMKWTY)g>U96kV^sKlSR6r&b-_FufAE2`^m%v5Ehc0*kH#-Lp=-Nf1aAK<9 zff#fcRB;}H#(-HHz#4DVl{ojm$!iNSz?dLXcG>~xhp9KKsj7j^76uO_neH)qelnoP zQm;dk0qXl){tZVd%8OI4%F0fZCe?Tqt1PmI97n&1y?>ki9Im{t#(hJP0cuuRW`Mn? zaBcvdI#Gqk7KY1k)z#{MM-wW1J~~{faMCO?I2jgLaRV~W2H{vhxLo0w0Yc3d1ne;W zAFHZ;c6hQKE{lcFM}W^Xm!oQKnG>$VwZgm;1mftY04Te)!2Zwm2ojyulsA>UUiQ8LaBJT951*)Nx>t z9o%B$W!uo^=kFR&dEJANXHf&PV*+?P>}i{wtGxDe$>2WS@Jsq1MvpoaJy-^T^imuto|i5+zy7BZMfaWi`(#~$g?WA8QpC;6O{`L?P}USryQO|)_NLe z2}$svx7!XrVumgFh_zN+;_Ej%r6*TjKdEWFQ#8t+_82A;sJfgaIUCEko$f?=5%6*# zgOBkxqPgYX`pwjuz?P&$a5GDUZbGK(C#dV7fxf{WCWCM3f4X$HU*((qd%^g_`5k{% zI^JbE-X$G>V_5xL=y(@2>}I&4SPsvAwssj7Bu+B0!j8$!qO+0Bj6S(ERK0Vs&a9@b2k|{jtDy z<}n#Iaj%`2&qt(Ur~C#yGPrGg0Una^srbvvl5vI~)=#zONndtO@@&V4^j>ZRg0<4o z_M6DU#)jL8+xY0PjJ}CoO>Uw4CP7Pm4Xa{XY9^P-wU%DWy5cN~57(u?8eY(jT(n zPyoQ$WV3SBwbb1Vo!TeA^v`FlbuWk zH?wB5JWB>2X5W&*N0>-HBv;qx&&Wq)Mm}t2yiC~I^G#%*FS7e zd&Jsifd~34+s;S3k!Qey$VE~11r-o&{z56)|MN$>@TO&o|lJ<&Sc2dIi^CsnS^}DR*`|urjv4dU7 zV7{zK_LC#djG?wO0dQm{<)qd>6CQnFp~s33Ro`W88-iiOfe6-Au_ppq2Kgnjqr{Kc zTGP6myS(Xge6-oSU9e=ilsXih1s$))#sQY-8`O%8<0H{gE1D61>o5X+pa}Yb*~BOJ z;_`iiyCQ$(?#_H9fd*Z&!sdg%uZj+iiKGSXYUugaFFRb05>KJ_3d} z8!41b>9uGdm!9JlPQ>_I=#V&g9bRl-w56chdhGK-9Ulzh-3pOR^v1rGN?IDX&)a3o zld9jKrfszAqxQ6BSg27L>UfQA)4PX5N^MWCxe3Ef^U+}`3Drxt+3EA+x<_4Ga0BSY z4o2{3Gnp`ZRb34=w_9+q(bBlvPG)M7+&Fn?TudpMUFNNmpoxa$q3lEvxO!jJ_!L` z{w87#vJn_n48xm5a5enj-Oq@Z0{=y-sf+>38mQ^Z0MIhBbrRMb0?4Yp6s!H@>?RDG zk+Z>O;N2+2SxrIo2H?b|#$n7n4&*y10Xi_}FK4d`HmA;+zzt1MVSJ+xlP35oygdP> z(Uk3uofa}P<1apkJxDU%ii`>w!S?U@)<4J)kOfO>*nK18x#Hui$x!tXH18x6*{Df8 zpNU`+x{kd#OQtIxj*>LDy+L!E7ZZC!!?WM;%&_ix9A(odu-W=(wOzl?fngaSbyE}x zNN<2=J1`swo(=3f;rt|!fBX*@@+ZjJL03Gt&9SE>I10AE?dRf8I``x)?A!*_;$hcL zKB{XChuDh^CiCazZZD>?k;sOQcMG^yd;no&?BGTqxcPE?pkCnCLj-=~8tD|^`Q(+@ zo)aLi-8BmOSD6L;8FFP8@Zf{?|3}=rz(-k~`QvAj2?UHJXjHVQBa%WiKmw?QfRM`s zf+T@l@K&1+$%LdNnK&0nEK%$vmg&p1-m+y~f0gap)@}W*t`)=!ii$*AYt>Sv)oodq zwlfXgdaEMZ=KuXZ=e#qM5VYO@{y+bq@0|DCFVA_-b34!5c=w6jKg{~(vHRFOjSmmG zx3TB(f5XEH9cH6k81|`Mdj4Q))NV$}I-!%2>AZJ1y!#@J_cI^bm)J~+74fK9Q&#xy z+hlVe#>SdP;XqIv_vb+7X7%0A5z~#o720X_-HY5b?d_@<=izoZpQ-6vK_*n%(42maj4G65_Ixm^b(9(_JD<&fcp7r z*n}aC`Z0-5A3HyMI4%4tnp8#tp7b5RIN3`7vS5IP(UVl?%RR=*q( z+-QRstW5>PZu^+R(t{8ywOOG%t?5r%^-k-G%*acVUJEvoOeD_XJnCKWGRN2dGfY}} zu2nxRbuBs3AlI3pnHh9&)&`h%>EIyluc4_Gx>w&p_L9C^w?r_ofqgwqHuOj@A0y++ zQM`McJ3wUcp@8MyVT}hr(&nFDO0@Z-)%1%W6TFs}TzBi1Kk?)MzT3ZmGL}QJ zhmc@a`v*mzjDVU(VJ{+w|C6C>5fc7>7{tfT`-uo`%osj8R@7k>5$+r-GkQnKHJpsh z*polt1xnbDV=c(OFT%PAhmYS;@~~+5__qM{ST!S|cw;x!TP(W|&B~=1*p|Xwki>=> zPF~TZ9iu9`-Bc9%3d$eifVK1li~iE3P;bc_noz@iC$IC&(RE&qI!~T?Ob4bSbF$5A zMzslUXJYuT-cZ>vMLB}ZvFrp~@u?KOV-^|)D2$tS8PYh(=YI~iJ1Y^2bT9m1`AkP} zN#yN3k~7+Z;?D5re~q2`Dl91Oc!$J*J2Sj5ff!Spi`{u9q{U-&lgV`kRKFgnK8ORs zfaYVFXe8!1Mo)~PASLFJW7zRn#gzR=0F60cB&bX9`R2a>Hi_iVu!m(*ZaxYu_^f$3 zXWl2Q^}O)M**D@dM<9MXjsfx;4{D{*a0b;_=Zx*_Rbv!!WFrovlfX=G@`pIcy`Nxa z#w~>PvDkKa@Y2xsJ>&xH^9=bX7N8Upfb$L{e#{W+jk;ePavRym%dFF|KtPOKw03#0xhYBihCZ%VpA34u@_^%E8?DfGj`^D(2gI3&PL)4 zY}er&Cca=2Kf>==@mKih*wIrJbz>H$j)t+^N*U;(p-`xS5@wAeN9bzFn87aQaYz;s z;wb|Bd<1BW%Xjylzl>~sGQ!aY=bohGdnqN&Iqj8Vax|W_*v0U!Xg6qz%|)@3G;-~U zxz)*Y-*IB@S07>BN5;aR{VLzKo1S+`(7B8B}vZ!yaoCje|lQgttam?sdc z2}FBtDSer?91c@Bd5#MJTS5XSgt*nThNW5)4*W?QM}xOGBcUBp=X2aqoQ}lS*ekR% zw65P@gEEadyxx0WMt1)XaCnKtfwVH{d~KcrY~Y8fJ=gk|Faa^Rz41%favzM@a&qoZ ziDSzV?AX!oU(D0)2n$C*nUG_I`U?Pa7*C>&*gqD6C)ILYF%_ibM~L;{!BgY+p=QjdrV8~G|Ky7RzrG!jzL%5o z8m`Or!ybLUW9^-0IbQi4aAxDnSX(&@NW^8ve$MMuAmUyI5f@rT7`lEMDvU0C#Jc>1 z8vgkEk4M1W!$T?A48s^TW|pj)cH?cPkssxg$b&tg?%%z94IPPsdzQiB<`9%C$70WX z^4Afu02y-MiK;N!nOpY=KFIFBfoD4yJM7ktP0mxnj zvcEAMdk&IqT*(`l%Ah+3{&aa14GMaIO!Jk;PD5_Cy!LI4ApVupuUDiGJ`}%}g)d`g zKqE4dtAkJUt&*_h>`x3E5P&V>P8%ynXw~KvJs^{#?n-@GjBx7ntePxXoa4) zFb5TnWD1DIrWcZI4T8dc5nvs8NAJBWFA~QeK{II@b1%6Cj(6Q##Q-PA3f_j##o`0u zDZu(N?rEPKSgp|3sB?Z~;)whCu=_&Q(POJ+x?e}pXg_G0&~TOKvY z+hD_7RL#l%?H>&`gj8}HrZTo_76_Nnk>QP;L_w*Rpj06NMo9<+eqMZ#FiXxyok+Lzc`X4u$XxD_r#e)lMb{OrIR!BZem z2D26a2^UCjhZnEXZ1%t*WKJCMI&C?&(wL|ycb6NgDc~EP!w2~j{{|kAQm2OwMnd;T z-upB~VdTT`(BxDZ`QNW6bQXUcdJ5{ei{1A-Am|o-VLFT{s_%o4A>#Z-DfEU`-~Qsh z`?9yU0)&RoN)@|czBs4DD-u&sb|EkVWi-8K;^#xCt#=lu1tx2%9z1IydHU*|j-ugr zt-hUB!#%(W!~^NMJFL(SE9={l*YaN~+6T8w<+vJfkF%UxX2rDS#m{c}SrN`09_MO! z9_$g)Lw84DSh6z(meb2^Sf*%qcx&^>P5JLRuDcro@BLd|91X%}ahd_bGltE20)%%G zgugZuAb8!8;Z-SsnOL~$yRqc3jnH^xh1k~#B)_sQ0hY^V2v~CdAkSHZ>XN76MSLR~ zyA#cG>Mois7z1gx282M-(@)}TcpydgIugs z+R4_03T8K2!p6+(-MOc48)VJ>ul7zT4}W}0Xb>nNy*i6}5OS!KhaD?$Bc#_^JQVtX z3I?!pJEf;u2Q=i~A-&Zr9=&Q5oZl_FpdCgRv_o`3JEu0@yFv?O>^_NfPwRr5#lHzX zwF3H$$Ej^C?z=PltLHmKIZe$FYJz46wTfnl^`*Oao(|g^EjS1D(|C|pZPieM+^Rb% zg4#XoVw_$klS&|9mK&|>o=8}jJgoEIr$@s@Q<2|{*|+!0c4j; zYP>%&9*PjPwpsSAY}fm&>Ib3T7cwOpa717M$kyddO>nZQnwt|^Kbf8et?wIO$uF(r z);!i1NOs$Nj7|Eo4=1hTfY$q$M{^fM8lNa`#8ku1S7|~jx@1am-}b)GN1e+cwia?2 zx-o3K&2NY4r2Uq&#M9?it%(uI=NGj0_xf^B^n1S`aL8wN%@B_l2pU1bzzeqQ z1?;?XXUQfws_0r(9&Wl)prR*-xjnhz_4dVYM}Ljf34uzKv}T4!%5!{JyXOH zSqoFVQ~^NPz10zJ?1xkxD6Ba21pNN?9XzEEUi%c-Z}7IDD5lsI9Fz(mW&~-{-^Q#m1y5#NF}sdAA}w%fW7R2?0zmN=qui=1m6qt zAO}}`uK`Js%MUO7%9>d8Jk)`GC~h=w4R?Z*%@-@peqWe;hgv_2t?iiiG3!x0ay;MbEb}DIG1ms zBavNKap9_Sp=w&|WKVIE12Gh4Q;@AY`^{hJ&W09}qNK!IG|QjaPk2O1_VdZ}K!PvT z6CC?@yck^fp`f&M!DmHptjzvq80&}2QCfbr4H<31ad+g<&HK4yN8#P09H=lB5z(R< ztv}$k-xM4xl+u$cW^6|B2667OGeC%7K|l#N9tHqj4tY%MBVc`@E((p#K|n!JFuYdp z;z~yQUXJV~j8h3Es>}HOz+}NN(u!JmTcRm$|ax5;eF@uHQJ7{OGYfdaG#$o2?eQZs_;b6Gup z1px6osuv)yN!w!skd|zGnKlSekxYU7Q&+c{)#1{GoLaH)5k2epUKis5rQEHDB7NI6 zlZcxS?z^p9x1&WEj&GG4ek!~FJZ7ey8TJ%{5qt`6P4SAE+5H)KGZ$%LGW5y(qd1Qp)l``g+Wxa&R3AzPBaROYq=7Xn)iQIZ(^Bbllbe`Ar1ibdTZpv z1W8HYMOQ`{R~(oOuSQtLRKoG(#ue_Jut7~6K-5<00~N*VC;nw+{Ts?r|S~C*09`OmbUeN z2B2gA2YGP~m?}o zzaaYzS2@oPUkxTVT6STv`_8^X1GZI#aBYZ!(N!~Wlsr$>Y9Gv4B&xvy$LEas$l=}* zKHvzy&UQ~(q+)HrduQR^50L#)%vK7r4mbzTd3a5T3tS}|d|oTXx;ZLP|Ii!Mma@M$B=bEu#k8KVsc zvWm~U>6ziPir%pBZP#BSeLH5EJSje)K72c_IHZ>kzZu>?J*6)vW1v&aKA{l}Vp`Ry$l_ob8pP$4;UQ=ZOt2ztzXf9kS(Q#4$ z7JTrAD-KxqMI@^w4OwuRB%cv9=ZQsstPnOqd=Xyk$i8PEt{UQP(%agH4?Zb@H)~mB zFBC{PQV+87$ZO#P)1lf8SQ9YXcKzW!tBkg~=in>$p-C`pN5UF7hCP-Rsxr&BhJ675XKOMqu{x-d@F569a7X+nr12}l2d3eBG>9oF z-Vz?qb5rvB!>NdBI+lg~wu+;m7I)E6g&ezdH4zn)lgQw$3|m(&#@Q0x&M<7{cWslL zTO$Mg3_#2~xD|o;9gz3IH4cJSRY4?Lfa=2^rNK&X7hA%`f2LGS07zx`UxU2y0m?7L zjLm^Bm&%PSYZp7z*1qU4{1sE59wB@am(7_wwg`0K2@MoU(2T_TGK?B#u2)+L%3zbYYG@;8gFGak6J%VC7ps zJki9HyFS#uYq~|UI(_gk3ZEWj*R@VBtGbtUA{5Dq<7JFMaQ zn2>xIpXQ-+JRpcD^U%2C_aKT>fZ+f@0@F8*73tC#3_LwZcG~Gp5K6mpAAVqAO)Nw< z82~0`Yx1>$*e38I=qb0&HdGH6CCrAm8`xOoKB=5YOki^_Q^N;;$4Tp6(j<)w_~dl=`# zNFnMOCS)4VS@3@lmHt&9GI*;J=L-CS?j=?YFLT^@y0*O)sZH#UxW)|qw?P=<6iVZ- z$RLTkluPd~u*qG5nkTF*5#$)keiGOjo8k#}WF(j&S}9G@74K#FJ{a2^iX6XKDvL;z z?%wbm3muf`iv?fm9@t1#wzck!zyh2tpb3ELG%Q=LB{PbU=<`h(0pmNF3)=`FLeG-1 ze>okX11z#98#5^;$NDP0J{PQF{YB>R0MDIi#j?4xx8w3AV0k~Q+C}W1+`{HIzZ_7- zi_G;?$w@tO74h^S%cbLD`=Ap=^@m6yF^h&?j_lfrq&T+*#C-By3IwrBa*rVg@BpkKyXgOcCej*+N{j@o^G{~JWU ztUt6<+c(2E3*L(M#s04kQzqYXM8m|cx-no^-8@-_@0wOMc4f<_N7?d8v1>#s1o2rs z!0E~U8WhQBg|nQmlVs5&xanog#P36f$Yfsqg4x1^_&I`vWo?$sj8Ej7{$y5N0rfG$9sbD?7%PXMJ_3;k(b!F}Dlqh%CYDa4S)OdDA#q~DtlV0+aZTNajg`aa6u^nb z1EI5%$R}AK-i+K)5Ypn8D|X9wV38X-9CiMgwdLbFa-wRu%@NB#435@113e6Y9v=)c zP<;r@9s=>-qMVfmN@WU2ZOMhQ_aP;aA!&@nFo~3=4VP79U1wg7rR=;3SPy7$D+eIUV zN!C#oydH+K&?hGeS4@Fk_50qlSDkAe0|E&lQx#vij*;v;Ahi!V;~ z(I^St^<>~OwY0Iu)N+R5{0iTz#pj|Ch7|B1XIArt)+Ai8yT5>>5+`UFeg_WX`qgqC zHLZWax>1^?Pe)m#(72W@%|*Xv5G$fPDY=0 zPyk`pQ~1H~(Ip~i1z_4HJeBy!&hqGz0hCnP5A}1i zGlnNyj_}juUQa12{?(RuBger&G#X1f%;M1U0``G+)R=8FuDD?V63}0{55`(y^+0>Q zvH~WdmW`Am10tVIzwXW9N_hT=lpT}jC)l)EB{j}1!^3Xr!E|J^u5qPbGky3xz%Xnu zmLsPB)t-07ln!?`j>VS$C%n#0h;D`y`AG3~NBpm|cFavI6SlAW!uywunu^udb(xrr z5nSVj8L)CxLi8cRd+Um6w3_gskI^f{2vY`9?m}IWUs)4k_q>f`u6!C}L3D95T!OGw zZdX86aN~tuHA<|PZF&HeZ;MNcDEQo ze8Lg6tD$oFiOZGTdcfg}fIJ|Q=kbGERWAJGU<&}$Z8%3S^@$Eif8)VD+)uHm#Rwi9 zg-0sg#A_2ZCa9cF_a*CGR?XPDrJfwCocwZ@Ob`P4)|pgcO-fY1URTe&=>1nr)#cMU z`{gc7i)c$iVA6x!!=Y2G?wsOZ!_^)UhZ~m|SEsDY%||KUqflbG0Ex`yol$r)slGLe zeeK>(%-^_;XurB&j5oJ(rU$nW5z=;LCdRo&du)z%6^nKqPV(KE2bNE82q?)#>z_I) zDT-f9u`4EwlP#qs@thLiJN{WD4>+4DE4B%ws3jkwJN8kHok=-R4xG!`jyX-4j(nn;YmQ95nv+UW;M zCpv~o>DrtVYxO`O6q<;$U#u6>!Xdfpe$?*Di02gCD%pSa6zm|}hdH0LR@b)tB&PIfxn$-@eHM^G{23YG;RyVT+=?22$hHHc z=Fr~(?;PQ(j-c(Wlxb?zFj6nxlw>%=n?(ascs143Z6}LmB%<=v2`5-w1w!Q#BoxQa;N4JZgh~ zf(R{>B)EW;UCp7QzxZYvfa6!(OtO*rR)A_HEh}~t;0#B8c*yz5qg3J0#kAPE-BJia zI^>e!IIcFYL1kiUVO3AF9I+OBA1Y$5tU?CXIL%5EzDwJ%-3q9V&&ESv{1S7hdoA6e z<Rge=``|DQ)e~P2Ey+EXG}ViSGakaB zvL-`I*24SpwC+I2+X9rAd&09BprIZKeF9CifdME*#55x;_K^ybHWB(~?@n9d3g#}E z6wHAO*{mg}1~ZqO5_B%f3gyCx7zIb<7TYkqmp%%bN-HCxH6LpY3EaA755S2Obn!Qi zlt|6l-{df?%8x1Q5HObtxEM2MYC0d62h`RZ9ga}F?!(p_oby5}@Cl!cCG&1vwxsx` zlB7}MQyIuSd{*|8V2V1>8@gn#D8tP~zJTfC*kJlGF^4N#FkXUi28IsU@Ou$rd-!#xg_0 zmGo+B@eH{6L*2uUvJ$ay0ZlH0*}5ccMrc@vFLpl>tw_UFr~Nt)#FIFYSDDjF+Qo&s ztu&pQByOcN0U{TfG4)A&0#k*pf;q%V0Tk3DP!T|@7d$6{LAPVn0KRSfiIXV8*@}uI zpi1`Wq|_WVjJm%8@xoCp!DK|qhLfC>n|u`rq{@Z}i-OnW(x+fFO?wih4l*}Vfe|T# zf?34~KFCR>!R-m}E96?1=0={z8@^8pNn>>3a~x~bS!CQ;8d=bgcGEJn zT*!KSLyftHmb>^PzOHhixzmmkBKUG6>Pue(lIRe=4S`c6y>Xjn*K9t5y*QV>;6M%+ z3u**oS-o}Z630cMT-?K`-jiOMi&ilh6`zESht7d7PQ!EU5_4+zE6@MD#N#3QZld@jaC>S=&_I=XP8bT;X&n(&P^OZW544# z+#rDg-2=~B>G;-bWl7PNw^%*UV&7lD#k=3_K)Diel&cyzG!Lzb=@5|nOCJnZqgHJygZ1X30XyAn&Bu$j0J0%XL+Dr;v0K}WG z5wCU;A)7T?k>k)ebcgfk)~pfUQ+5_Zzx_=?(R!rSJGCW0W&o?Z?_x2v$0bytnsjab z(YV9x_`4HZj2H9tGVMs+=Xc9KH#@k92yKAQP(UNd*0yX+kxQx=v<}H)&^p}IvN6rJ z#m3aP0`HcMY3gHbKax(q8Q#|r`!dK8aXA;7)QSa&i^))8E%kl_oRsAbmC;2UPTZYX zRjf8hK9WM%Ds-Ea8^s5s;X4lSiZ5=Pj(`;)TLKvS-MQ@kL8y%3f2?r_u;oRt{So*! z+l6iv+=sAuXEA+C&d412ZZ#P)rQtqgknuEPesa>q1x2K9KkX&xq=lJ_!hg*O)vyyQ z<;(GZ!FJLILl`6wScIwQc&y;B$KYELV|@q7LkhGnffi0R;UNbb2xrB^k(Hn=AC6xI z7J)+*z0<%0$ZqXz!9L{8aZ)&-uC!0v;U?Y8bluEpZ05NHNb?qrzJxNQ5X2EjvH?DZ z&>Ft}!k6J;W8;GFrGp|8xn+u;MSh~8u6h`>C2+z~tlbn9^@(s=#AjrX%LeCB%< z6}uCu!fdkV=y;JpBemiu91y*dWPG>31Q zd~19d4sU>LoRMdS|7=O8BdY+B59x(60ZKFDS0WdvHrsrPIyOx<#xkCQ1(h6q3y_BhRzOw`#@KVW(pbr)9~M3 z^p%`qKfWo2iCWFoDq}}MMN4Clwi1!qM+>Hi6YwbVjYNJGI}H*y+!~z@tNIU*@iyZu zHbHa?YMnSMF=Gja;Lrn{p6o~9KD9ct6*L=1_8RKsfpg$boR9brUbh~ffiF2jG`;os z?CgO*A`pKE4*^oJIEn500JxL*m3SCau35)>j1uHk;<$bO^|Act~esZ*t-bThTZp1i|^p4 zx2pH&SMPIFKM|kuK1Kt>ZL&zCc%~&V$Iv`eWFQ7FgOR}_cv|72dobr*Z&R<5r?E+%eSOd5I4E7p*i0-eisVCO}&>eB1q!c`-hf z#0LDdo6B;b6c6850YKrHlglL1;iwdkN^z`(8wT>j+7}<2(KVFue!Vj~ChJ#GlQqCG zV1wdf9Yg%SG8l)$2y#Dt5`8@M1+;tMQNF$Ry*+rU;NGzQZ zACST`Qs!h0Z2)I#e|Wy?g5>B2n2#G|0;-5!2~@!d$4A3(no~MbwPao>y=*vR)xfL0 zf6_?@oKxpQ_s&eOnar;YPvYpdl{(5wD~peBc~{3rD<(UJ)SPBt7e4;$Y;J=f3zN$p zS!GV}^qv~-kMOZ6p&-6Yh3F4T3)8X(NC-y&@vGq9$M zke|nWbfAq=d*)Bf$#cvcyy1fZ%Ksg~>+zK<)QPj2I~teQu!pa+_R1oRz>rs#10tm$ zZmQVx20n%ZMeG+D8%zcm#{B-8OJ zG)QIi_|rI=N$+9TNu7{JvF`>e$KHZWeAKvq^RAtfsN)s9fl|Li_E7ba1^56<>`vH- z-n^f?ZPfNViffE|`(ZDG{5*=ehohRo3I?iSz_6SFH@?uegn>IAf=QhBJ4z?kd$a46coA)xeLPB=G5Ad(kkc7}t zr10;PN2lPOV9eIv`=Kd=3PP~UgU5RIF7`Nt;+W{k77TY*BVzbMOb_u>>?<%~P3(&W z(g-u~4_~cDC{i{ZhIdhK1WozDuV>lW+Kh7*Ub)bb#NV2g z`oNv*%I>W%@4EyVN)58``*g)YQvESd%c{-LAJ`A}_ zuoDL|J12{e*2o~pNmhRzjxpM){Fs{XHY zCH2Z+neT^HH@Ma@jp-fs=?!(6hJs6UZ7_0`4LDh05)RyM(+@WvU5U9G>x5g$HR!8=8G8vQkDwHeH6(>&_`p;l0wX}qOZmuNA@5MWAeNY4k--6kMh6bEBbbrs zUic0dYd9aY3%GrOoCo?ZVI;og$JtAcQ_kMF+z*lwV}_R`njT#(>6hD~t-{WSQIx$1 z$*STM`;M0|d|q-k$EITjQHJnBJfoNHgXQ1>`g4R2BRq*H1fNAmUR*GUM054XGdc3; zE*a}Cg*ZcmIFv)heh6JfWEVTh3H>Qs;Vx#0@E_L5jA0i`Dd3rZ#XLoZwmy;ZbIj4a z;EZJ65AD2zk{46ZCwVRD1&_X7z7H%!OVQei@P~1MHOLO)`*LS4nfF)|TF$P(XM9=Q z@$NR~S(T+FyO_H#^X8AZpf~<3>bwl!K}HlkStgr)&@|0PGG!s93o2z{-5{0rNj6>I5~)vm=Rjvfs)pwASrDl_A+ zVjiO5gP4yL3hF!EjHH^0HGq!Cp{inEyA8Gx(mTG!x8ecYUDN{vFe$N$Isn0$;Oy9~ zm#5(BY<#;ccm>7GXG3H)Txu5&dSIf9iojG)!j9AU4`M1*ykdB&RR=#(0wc7kat_z% zPGBfDxTkRv@v4NOb`4)@FlZ^}Ds)$T9p*;YfX~fhe&DnkA3s@r52QnB!GG4Zv9z9g z>kc`|3=>@oG<2dnt?Q0OLZ86q3buE@<;e*jF`+!Gd>SnJK%jrl>du7y1(<4(2C_$7 z5m@I}=4>m^iM(uG2NzrRr?I9*QmTSerU$!5U?luH>SrtPkVAL0 zjssI)*Iwm~M|m_xMH(QH_%SA?QldhTD>EG^X|Bw$a+s3S6QZs+BDXLjVospFVpwwR zRj0Bcd%t9T-|QJHo|jJ*iX5H)Jk2MYXe*bbSMXlHcK9Fjg&RFmLgv+sOHkVc7! zx3^@$m6_ZY_NNuSkS;zsPM6mEUkTm$=wwXV%ItxD?B{qN9^vC@!5k?bJ`OYR4nz%C zM#Ii;2^17NLKnlA7(PLN378sfNQAG?H~4#eh6TTs(F~1 zS{gHp(+rvRG>YP=>&HjV$dB~@5m~KOAa{cp?~oW15IsTc`}|6zgmO+M_hsRySXkUG zSzpY8xi>A$gfd}&c%VVSz}rI13mRKgN>W?{ z;JVJ-Ex#TTea&W;au?G-)tR^>!-L!zc^YW!QiNk){WZ=(6utq!s2q6t`kw+XOD7|h zS>SiEU$LP1F+d}9)VOl-d_`79lA(WKsF9)V4AE*N{#Ay84Ds?uTbQ9P zhHhi1g`w{=bPYpKF|>xEUoce3&{2k#FhnF6pU+SpL$euL&d_-beUYJDhQ7kkWQM-S zkYeaLhCYDAt?l;=9c768NBk{@PQ_6gKg7^esHWYH&BH;`#FzEVyib;etySU9#}9%Pv_|sQkXo?JcURrop|! zU8kD;UQf`gg8udm8@zrM^mca3!{_(-dzH7VMR|L=J3Q?mVCEMV70oFunlpcqtLU=D zg$ov6Qt0xwTy{xu%O##-Z_D}x>(_fOX|N06UDVuinF@5Z zcXxY(%GcT&@CF0Q*Bxx{Y`?*)Iz7SWw)U=8pXzE2sCg~kP4hy2PgjetQ@KiODqL!r z%2PF-8a1b?t5sdh2meP`Si^c=U>&gqUaXi=e2E74052DZkUo)CYq`7>prffTC~$kku1(b+mV( zg%;L*ZQk6X!oYPZ5KsXx9_{#PS6;7b!T%e&+VQIdBs^+;hgWs1S6rqW+Es_A%hw+C zD7I-{03gj?)!y8NA|~WfelIioHmLRuz7Exn3OxMj@E~^(fgp0D5bE}Y(0oTAgtceQ zD5hKR`_N2hpdCfpH+j)hjAm22Y7KQrxFggmzbx1ulw84fq%+)(?lvoL(9?`DZDM!P z8`cwSM@$E!?cxd@=>+KG$p_nJL1t9}Y>2K6E}!4EzQea3OXqW~Z{L8K-Pq;Z+~xB6 z{XRdY$G2W}g*q@g%)j0~Jwc40SrlVYp!)gJ3b&3mE0MO=bSvotfr68{*-?hOPw8MZ?v<}e1liM%g z0^kKWf6^6u3IK$GAorC&$TSQcEt<`O?riV|lbf^E@AXRd4zH&bupa6P+Kb>K#B-CQ zbY4dX9v93lx?}@@3GmWcidpkPti+1XGaJjhTF0+O{e+#hu zY^=wocHk1%W=}xU^Hq6UJF*Fw$PBnz+FNl51X#VqqGkXfPQA7uRt=fa0RB$eMyIF8 z)q&YXd%-pjE5V5p1fX{b;G{QR{(}HY#kuHUk#3JAeU!Z-`Y}#>Q#l#bs~^FjKzT>~BY3Qe&`AK#QZI*86=M zy~IQq1UC?SkQadPI0YR^Pfo~FAo;MB=i&dnz+9Hb@0>ter^+jw4`ft$>D&da_*sDP z+@ec2Ah?jx3tQ$egFNs$zh!aaF(%cONRTWFo5GccDg&;sX{XjScQP*Q(m8ngB)*dJ$)BbI8vv-O&rgZR&#Q4(MSah0!Pc;?yxX99SR7 zzH0+IFNYi{NVMx2g{#Y|YD(*_R@frm_6=P;N|Q?R8C(J2 ze4x-I?dH6iWzh~k(hv# zQl92!LD1X;bLBryb+_Nw*1jGaqGfD`v8kb88|D{#5lh-(gFE`*P7(}qvY}GalX9B4 zX5(OK?+kUi^f5&gW^*#^^kNr>iqjjr)UKbrOY+QZ@pb@V&ohvM`RUO3)~0Vo&K}qLP@s1lhHEkS889<8=1TxQ@fe5}@O<3#EkHBi+Tp-VD+(=O00(;9V9}AUGZCxOmbV$HL2lcb5eZl+$icU1x zM9?1v7lIE0phq#UHYF@m1z<9yz3`1Pf80ys<`qTFObhuCom&#Gxm#`gCh9BA9te9--$U$K!$G5rOO0dbFkZ0ZH;QI zuc}$0JaQP8F0;pHRR=Li2|KlyUtyQj=NN8 zV?!-KvZ~z0j4~SJ%?ni3RJgBVK-ZuXjP%E~20)Dy%5{bNYL=QUvZ1BRFq!tt<;!G- zC1J_vgp^z+WnEQWLn9bZ-DPPRgIKIvo_(W`?x+ci<-V%iy{17m)>Luo`E->+p2L3C z)w|1)!sT!^xU1K=%H}lGx!o>|wR%l$BSb=Gf~wq@jTY%1e)0mcqK)JcfM`K>kMkp^!gF zu}@f=Z~-$1I!bvw9`NBHs2gk=CFSgvV^9v|#6G~N6l6WE9+2}c$j)#~B#v)`6!eKL zbL4^O#-0S6HK7iDYLX0bp;4S^&F%i?5Oy@iiCV#M^PJ*A*Xil%1}s>Y z&|g1GBZBERTL*3zgw`CJ1OZ{R-Wvpy+T|(|Y>ri_t*Zb5m#E0j3StxpzZI3ST4EW! zZNcAHS7BcCwl<{ANi(D0_3qVxLLSsYs&sf;aRB2W(F`Mb8HnP1(t@lo$(8`wj3iM5 za)UE#R!jF-2@#bL7nm#*0dB^^k}mPMbkpP$h13H{EG#+TAt`wnXI@E%Lrl_Q$}1Zp z)rz{>Mr@+1$-e_1_9W&GlTzQHfP7Y$)?sti)wx%fHn<^ibzkK!2Z4++Vw9=a$jB2h z`~;X2{2^Yj&tIEtKs3-F67W}7T2=1`4?#j##*YOBcGXf>Lomyii7 zjK9+d_9V}cfdW1r7wLPOJ{BaM;0kyU&yigMJZ=x$UUWbx`HfUuzOr;3alYh4KNDk0 z@G42>z+NJBmrFgS^6}t&41}V7z9IH#w4rMvtJ z41sh9(Kp)1PQg$xv#CV;_<3ziX1A!pRRPix|0#$P{+7NP#Rfoq$@&u=1>~qk z1EcGg*cm05QdLn`yT)`0{h5{QRLOWLy1H?bOxIXxO3A89m-{MU797rcz*r=Z#lcx) z+CCv)z$@aS05g7CeaP3+?w|Fkd0KqURJ(k3n_y68+2k0xl_DGWyFfA&xY}EK3WSSs zRo2y3b3}%>)OnE`cq2%0F1DS0w3?%zJ0x)~P`m-M8`4mbeUt466x$_$KNCU+Ew(4s z>Is^2NNC>z2(o=a%Gc1N>pOIZWC4Mt6Np8YE3xNo>YEI^+2F}Et@1;3eG2{>XE1Zn z*B)#Pj@3v%N*n%OIkl&Q0=!;sN6d?|2QI=4lVmrI$*={=!o=8lIRG^Ww6!5xnwmN7 zO&kCFoFJ z1{(=Mfljqw*l1G+G?+nQ|C%;=nnR&Z6zTF(O-20=gp(ru92K@R3Nt`?46;)brZqGw z8QlaBhvWhpL{tje!$rZSOiMC>{cggU+0)x3l_Yg3I5D(fQ&I(@RG_!3xeX|dN;g&S zY4rwsA(7tX?ZEOTBv7_Ys~v1?3l$rws)uIijpei;3&w7V?yIG>BZy&vepKBXF>X+? z;6|a(g#@At3Ob3PE{73VTOn5MHN_kv0Vk1`TIg3ppf^EYrX$ds#lp2agWcp{CYVTHZj$qTbygT3rcLxGPH=S2rkd@a3fyZe*)*18xEU7BcOW zj-a)T(0KB(fx10W;$hx^}0(@(3ez!$t1YU ziE<(7Y#>C+N?C_`EB&Ac{2GDg7sZd;dUpX(wWwO=&o z*mzqL6unJ(-INb{Ts5T)jdkEzMQm*E1fl6caf2-dO|E%S%{(M=pyXNagQfzx$Qz_) zlZ8zne<4|I+$jwK!+;Jl6c|8fjveM^r+yKWOxTe6WdKP+PF@8XFhZT?3P3w+M8`?q zKvyqaF`Nb|NkKANrVS9J)kgvW$dD3iBd1Psyhhn#$^<~lLkR5;VkJ!{lwI98t7*=S z(RHwjKraL$ow^29<_5d&R;867ni6M?DT7I}>z9_joAt>xHeXdueS^ES!c|+Dn%|zY zdhSoKZXz^oQFG?FfHPLW5Qfm?1D?@xUmFep)naFoA}2|KV!>qgBom2IEUpT$`8@z! zuB5?s1mcv}COM>=bXPPU17b}|7|dafsn=)^C$y_gtIF)w)o;iyAqWDhe`X^RO1`!HKi_rbN_QRkV4<5$J)i+c)k29dGuDXG z3DqWLlMRd=-HL%>yP16VYLp(6MRabaANekKO+^8TQITJvdiG7w=~CC|rXdt%$yqLG zHgB!&lw=k2hFPW=qIsF+ygV&F)e=>SGKEjb+BD0xWeb|-6FeE1uGy>@mLL}wEkYkT z3TX+wHM3@S88TZfq&0$D-A9P!Mm3vwHxo1~KXuM!?M(L*iVYGuW+L=pu~dn7>>aaS zrdW#j^`sy$c5%kcdkQ#|xmQ%xP$CJj5_s{|tIJBuuQ(C&0#gC%TSC~FV&j#v#q@Db zI*k-iLQZCHaNvHF?1BLX0JmYrVjxOr(tET99CCG!zg?(7!%Evq4O>vQOiRj^<$-dt zMR2eQ1j5kec)%tSl1w=IYqP`@Vhc!s>M@74*`%D~6D1=k3e@YaYbbE(i7${tu>yiL zY`&x-C~4CoXOG4SC<-YxWKT(no`Hm`*3>p6>P-stiHHA(m153D zVZ78+L9g5BbjY-b z8r$F0>}<#u>{4D!DR6SnjDsunrYBY^68kS8f>{Nw6VU>5K#OT30h%2UCF)&IgU;j@ z6&)-s;Xq!3+3~^nkXDtV6{F&_VMdZqG+G-#1-TwC%yqCm5>SOQP^dy&gCVFZ$H;B; zu(hQMXgX1_8G=JKpj<0N*q@b0WZ0jQX-!?}it17z$hk@O(+F~5z_I}*Smb!}Q<(Oo zC`cbN6bs=HUg|1R<#lczSXye-1GR?A3*bEB53%B?WLYUZv;b+gsbw7fPJsv;TxBqD z%P$$f3L#5oXeAJKju;51s)%sz=uVonlhtE{Q=i%yorm?=E#;SJ{K5BH*J#OE6>pmJ@(%L6qbvO5n1|AU|ll>HFFVrdklxCnhZ6l`#N5y@ay2K_=LjE-yn-hsy zzCOFh8>20kn|;!$gm4R3;8Vv(nceJ@O^?=Ondu>|gtd{M(R0OZMS5msRYirn2Ae~c zR=*`pFl>pNU3RpB6DQ;eG+`={qvxD9DOiqY^bx)&dKLq`aH|bJeCk4Y=gwarmUmRY4=%7 znb>QwrxV*!8d-Jw+dFBz3>g^5N9{iJ%XRK*cTEG?Nv%jUibD`bIM~L+ODDi*0`|Zc zYM?`3rE`fCfj`5IN?(Bk>(K|jDxN?9TLq#wb8Es7IiSi?kO9t9TQTD@tUuVs7QYX7 zKxDlP1!oJ@G0o-_B-|T@A(cPi9E>SrfI$TDrZjLI3MYXfg&j<3n{xRS{Q?+PEevpb$HY zbOPuI1;VZa9hsdscYYx)iC{_sJ3Jo4>+{8gX>ndR{$p{E-|y*FwxSvZdX#59jG6Uy z1{XR=BP*L~Fv>~W_*kwy*m-Pupf=RP;j7KD=D5hGB`8~w-br)3t78j^0(N$3$PZ~2 z!4r^*Q9mb!?3K`?4)SN71*ODsw|69vK#tfCn-%--^QwWmL+6J3X^rY5i zk1Nr~IYjm;ItmdNi=|^?4osguC8w>7Fs5iCYcq-v?p;I2b1QtR4o+h*O!*jPTs1X) zws3y2ORWaOPZfX|gA(gP_ikUO5J@5EHkdR+k+0MmeYFb*X}61<1;u&5{t3$-BGcMX z5cAh1ibctzugh$p#jV&TqYN+@p2m((0{#!zm~{3H$^+Pw6?MmqG$+spvW#?-B@3>&P`#IfrA81RZ6?OWDUX! z8`&68T|v>pd}#UQgfo~=oBP>#TbnVC=8J*)$6!fX3Xp5IPv^@E$M!?hC!f)elXe5m zxwLf991DirndKVWjydQ*tGW3_pE~Rl+8b4E9u@ZXJg3rHV}^Hq$QSg=0g_LNelDVdW_9jGD~JcGMsEx#*tV2UF(uc8+=B;OJ?Z~C$o*$DNRJ06kGg>1^WMd zuKwoEod~wrFypV^=mEOyl_Sle$&DnlG#1<1+i9HDbB)?nq!DHT4I2@&EmB5#{2_X_ zrf^b(Qug**T9}`dIccV1w8#k>BQ*;o73h>yNrdW|#Y;Us3ILoqyIn#VfQzB7MjNV= zb~JcU&i#blC40m~`-B%(5T`pYIF2fis&dn0hE~Gp>M(GLw5!n~D|3s$=+%X%5Mo}_ z;;GdGlj|a4j7XaU=qW)EK}W8Qb9m_$6h?jNI`VavMZPlx~T@yFGd_r(@3E!l`?{tQPxZpoZ0b2%j1=^#SE!dP%LN1pR630?u5o9 z5+%kl&a!7E)jW&sB;wi7_~j^~0W>D9v`jh1m#C!OI&8XeBQ$CHX)Zh@_rAe-V+2iR zKWMSWQr9vYtB#*rEhbOBST$6ysi>;Mde8IXF7@?+Cfveq@dcD|Cjjkixw~miUF}s@ zH?6KMzk=42dOvp)DsU^#ROEu}FX(FX@>b-6xtGnogzIGU9kl7zvQ2{vQdBdu!K27l zpuH3s7UDh_2kRG`Pe?@A+ZHsnT)<`tR4VDgT=&N4b~ZQMOfdK^q^Kxi%1j_ox$yxjjpPBwMOA&$KxI?;vt#6`Vz6up z0fRPsk^u|oVD_{DG3H%gvXUEc#=wrOx0}Ke%mUs8E)w-BRai8C!NN-}y=+l&X<0ce zl#=hB_03SrKw%yTcD49%1@zPY#`3+XIMQGOIZ!~_BrpNBNZL?ywxOOhvan?`C#&NE z-VaHoamHYt@zN6b@Fa;udgCS8_lc`1i|&n>KHpYcEGs|-$-XxGaP>IQ?46z35jk1g zp*l-lfyB&7^98P={FAgVT{eQ?Wd(_UXw7)*mLat*;dp0Xbi&k)*I~PVc9{ZTu^z3x7`Obmus1%4 zoFJndMGF{EG|TKNb2nV+hJA>>V6|*qxU%US8;tU9zHAaP+`F ztB-csv7H>Zk9Ou0XRrfoStswb;;A2Cfqbn>>&tob1JY9nR|Al1;$D-2d7Ia-cvH%c z(_iCH)dtrr?X6;mY@9~vABt|pHBUQS1!*%c+h*3h>f6ChF!?hP#y(b?%QlJlZQK;N zMSw{R|@;FwswoT|{~_!KT%Ue%yrZ&Iy@WEA#X>1x~;^57aH)~GcI z!U$d=;AVxiUpstO`J4Sdh_V|SDi`rFM?Z@$g%vzsi!NO+0XxEeM*`FFwC(w60}azD zcoYNtz`F#e24YB>I0L9%OS);>Y2>!B zXg9JCcpO8;sGdgk3A<^J++4AjSi2>nGKR(i1w_vZrk#HHYNHb$)m@~z=d11os(Yd8 zz65aENty>%{TvJSkqi#2146w+tpNFs2X?WllPj(2>UOY$Y9$oRRjoDT0~mxXKzq)@ z@1+Y>J-Q2dgCv)63$HWwYN{IEKvcP}yB8N0`K*&=se@Oea%es3akHS(I2chiKKN{F zX{qY$gsYlBunazjg2?abC~XxF5xr^+Sga6+M-%#T`Y*vXj8!4*kt#TsYh`&<3P@3j z64joK-a42lfe$gAPqo1wx1?6*i!EEZEW|ddT-E#)?q8O_L`Sk zIQL>M#lV&HTO%RXr=fxI?rz+U2TRoWBM)87KB^=@2^D?sO_SsA}o48)@k=wIfbfQx%Z4M-TO{SGliO zD}o9G#85Fl(>+^mjkuYqt8Mvm?0>&0x-4OTfeSrDMaZK}f!+>lV*U~AW7$98(u zYT)%!Tdz_9ZMV+CkS-{32C)j{^Kwb~M$RFCgniZ_0Sg^$Krb+f`eG~^!}Zw8jj|Bv ze&xoh)@xu8rK-K1)wtSQ)w%}K8i25O1D=vnx?w|o(A%x>TS>=-aE)c7D78voZK~$( zUZ-y`Re@nOLHI4f9V8`VSWThdx-#zu+`V0=hp*Pz6SR(is@7G)wIBMl&g>nGp+l{c zm0wpUKA6FSVm98|oL>VYnu7yA@p}G}SlY{>0KE)vyxBa7BG-C13tu|2fjq zof#7*W=@)XO4g}UvU8@Mc6#m^XP!0f>~lUh{oM1;cU>^!!kKxWpEW!GqKgaW%$=7U z+v1WXOD|ux{NxjK?H8{5V$+vSp8l0BeK+2;_2#dJ`v-3M+P28ot?kioeDl`ZZolKs z!GHMHj(@!CpYHxY-@a$(KY!<6?)~ofzJK4p{@{oA|KERm;K6@?=tmFl+Wp9$M<09q ziM>xgweRU?p56c4fuZML`0-C({OL6uf2Zgm%n=B&HwoIZw~+GTmN-lRh_AZ>!HD_*7TH*HD z(}Foo+fM0>_$Qp()?_W3lzVDmN$Zzxy7ZEcGtQ`JNxxvrS2kueO-*Y`rRNp9JsYxD=6!zhtfsQE=82(7U%}?4q6<%}x?yos zQ&vfL@6yZXU7uLEGKkf@x<`En|GulfkAFW@52_!jJ!-FdMm?u~qFz$3 zs$Z(#$iKJLZ{ZU659+_w`|6k)Q5lY@j2smt)xRC&&AaPaGo-XWFE+?6lLfgkP8O{mLjPwZ;(27s(G54 zsx}v$r82&JHomdh+q$UdlIaW7mFi3905I_JqN}cJXrD5xO;xMY8aKLBXm#h}xoecV zX13}ETmii5N|vbHVzp4!xkcyersM?&seID{6ppR=BT%oB@m@uU-*P zm6d9#6LDB2@1sDr>8`8eE3S%&^Ow5PntFXtQ{TYDoi93yur=;-h1}LMX{RvSh%sR} z4P}t*E4-jB&9lY6SjdI=9TK6wL9_RuC-ExaozXpc)qOLL$nA!#!)58I% zxf#j}3%pqa)JumLT5VC@2>%#04Na^?d+DsIu69>c;gxRWc=16rHJFB)($!aAb!#(rROar)L}8(_U$4?N(V@wVE;j`oE)>)2pj0tLiy$k*}G%v*H(zuJY_FEpRh| z>8!13q&psMxk2-?s+y{XDmd)9`j@}R_{jCo&95hbb(}!UWQPMYtnrAMSH{3e{Bc@AL@c)-FrWlaM`-r>GgAZRIiJN@Qvr5sKIMe>8e{9D7b0q#uOyd27 z05jl2PbdA83X-Y+JN2KZil#}S70zpEX49j~O7C*JM&zxDUvr<5F0dr^CNdU<-MW4rS* z^|iF6Y417y)zRcQ!|@Y!v-({6XaDme&jaZn;osvUKTrG{8Ck5p4tQn#pZ4$UwB0G` zosL=QcW3M#;lEQes?^od4mp|7ZQ*aemkNE$3~{J5c9#=Nry9 z@$U)qPmfbSf0*8;?n^64TLHv$F#R0$V){?gA4(rcZ%w~E{qyOUf{1%$?Xgc&(SPLWC^N+cweQzW7T62I4L?faU!m1#bY_xJtB z@B4jx_RO{RbFKZ{*S^=i?zQ&XYp;E;yn&0}V}YN%)`50`liovtcfIJq3GWlHSRh|u zg?CLLE}#P$-kaV*?@#X?Z;!Xo>*fvhR(S)xpG-L~#VhJ1c~!mg-pyXnJ7q4JjpkFc z)XX>4%}Dd2nT@sP8uO@WVeZ0xtoc(HGG}x?^M!s*Ni_-+J#46CPiWa*#s)P^SI2@A;ZD&7Y>kKVD_FH^;lltKePl zmGMS-5#DuPaj%G1%Ioa4_1bxfUI(uWo>S7h&ufY$^Pu;z_qdnfJ>=E#YI|>)x>#>> zE9*G3Cu?5m*7q8Ck9m)JkL38w1>Sr-mYU<^|MrS6;kEuS{Ch6zRp0ggG{2bbS>u0y zemU=mdCQxO*L%%7WX7BGSpKKXU~{b(g}-s$wTLx%b_|RdZ#Z~E%)-CTYj0c9zt1_xpEpbVM>GG$ zx$=2qt}ustuU|2KrJM6uES^;m(ebL!{?Sy$^eWz+US)4G=H@j-Kl6fF?XC0HdhcOP zUg<5xnw{Y-!n*yoH`klx_4oREFM2O{&wI~#&wBm5K3*Eu@UmWM?;3BW*ULL>zBk{Q zH_b9{v^U9{=-uK?@Wy-T-dJoWUiNOpcIO-OwAa-eYleD5yjQ(p-Uw`wv^U0#G83`I z{@i?RzB0SbF7u_?X?B=NW|qk?Tg+Q(gec^A#^<~I}c0v_JZy$j~FDeOgK3s%T$?J2L7H^ZCmP4lLDQ@l3bQ{KJa-QHX? z&kVx0?j>)4_cpd_b476jgO$)D?*Vt?1we*^MO}q!Z`@M!;_B(6~=ALXFi%(D4$L!*qN21%L zME6RKcc;YS_*Hs3PSt6gUbza60N&YsYA7^gW{Hxao`o|qugKKLeO_GacI}JXBVY0D z_S9@$EBTxF@PV+$TU4&nCoMU?O=9VGI8^v#>w#Tvdish?`P@v={sF}&TbFE`UKiy^ zN$-_9EPckz?wvz8v{kuED7HrN(Ax|8w0V0$T>JP{@14CO(~E8<9A|48w{Q{WB0aW5 z$>k+V#-^1hS>nji4?{Y#8 z)7vDrsTr!3QleMtz_@Z5nJp_=Dz04RXugUSZ@VocGi7?O)GD!YHR7+x)YqN6jo-z^eHER^ zxr<9L8CNep{j=?D66bW;8;T7jSFX}86rYiqkr`L)ct&Py+^P60Gi`G-#m4Q4L*3rD zzifK?to`+H29XDAJ48}(*J=J^Y#r%<&JZW)=^a2_)2r{4dQ3(pswdPX6uKonbQR9+zHs z10TiwrXywbPxPD>;}CdgV|&z)H+utKG5zrtfo19E{>0=x%i8}L`X+r` zL@0a+d;?0E7K)BZj~zE2uRP994wc8##zn^z2p4GdnDOcH)hA4Qiv`*+y>8kDykth^ z#*foCzgYeG=h8oU7B9g9ZNW>VhuUupy%38kC{c0<7Dz_s*6&%MQ2X?~=^Li>nG$~G zV3*L&kbn3;y>5|=%rAZqPfq_LbY1^4>BzSjt?uSfo1I^zw-1GOV&tw+4V3oYP)yx!vU(CxhIoE{rm5(+I1Va*JM4)+MPUVJ!h<>IB27cVY4W%9{e zr%WC)Wy;T!>rYv`_Vs>TY^v*lSe)xRJoE3A% zzVpuKo8I~O^N;83X#GJ(#=95aefQ$}iznXu<(G@^UCh4ybj99s3EY&85_kl`JJSE` z7M61u*3j>J@2Ochc(qWan&##%75?LK`|w{i9A&NQ|5d^9_S^7juZQW5PXV4uFpaYO z68h?X1gq>IZc_Q_qynp&SqDuT?kmjG3b* z=@j##eojBDBh?AbGHq5LtB=&(s=uzNr|M+$ovw?|gxyWDsc$Z+R;JCrlxbRyWr{K1 zs|)&1{fc@AS9~p{U&1#I1ND4-H}SY0q5o9htG`sVep%1G;?cX!Pl{!lZcgLTDSnx6 zHp_K(jkeJ5>YMOMJLh`(JcqiipKF~Q?e;C~|9>e{W{zbVj!*fMbhNp{+^gAYD*DUeG`>^fSaTe2n5y&R^J{aoxO%3oUWwxd zt;_?em|vzZbUCxmH)|XEWz7J6qbaKz>-$VC)6$&#monXzV|$vUE1Sxuu<2&&=v~!S zmpA!MAJkTJGgY5fl}sh92d(`wH9~ow@@rwL-^Nd>YUXzQMVZlfq=lNOzfdguJQdO_ zyhyXc%X!(opJP3>H05CW1>Ykk zo9oRkJxAZC$No#19?fyRYl)>kN#BTLG3C|U>ZE$co1|-+n&uPK&DXkwc?k8gSC3Sq zRUeaP5-`>dOQ}ANVsTsWGLA;IGHq2=Jy#bsP3@djH|dy@@}`R}Vsc(~lX5K6B>fcT z{E)t+7pggELACU0eHgFP0kt&(%V?553Mz$ichIGzeRTahes#CG89OS?1Bz!+R zRrkXqLvUoXl}YmJsg>!X^5T0}mg}G@qFb7|>V91U_pMB4^`*}9AJ$Vzzc%`!RC85l zUE1({t(8f{x6t4EkA(bTGRm85lJHucR2oXw*e}ym%`N&=z1uH+vRQ*?wpZU_I1KTc zI)-|>HHY`Roa-qDWeL|)X|ol}XMy@$eT&x|s@Qsx(Sl#VYbKi%)MYY`WtTEdOkZ%m+Uo;oTdmB4c>D>!Ow+JVPKC1#PBPY(sk*=Fhcg3OnN|pV z?}5^{%%Pr2=ddlfMUB&u+EeXKlpe08>F%budQ0b1oAslnkD8?RsZDwUUX6c~742kv z33e@pJ$<_ej(AVfqx7w2j4osHqQnz)l752agb=Z$*{V~}AI z&Ln7M9#`qA0=_Meg*_F=V59WSY6{LFn2Nf740F_6tyfL-GwK7l&5)&}p*>q4!E23E zHLX2D4^WSpdysV`j$-#T%TZ6^cg?2eVN+0TL@8UD`|&QBY&aKDnCH%B8D5R^+zGGj z+R0`D?1pe>=rXW7VxA}AIg@;QrtW2ysK0a+=HeGM9mmWk_;Wc`Z_qo`o!Be+2G49| z9>Y?3RJAZS;oF4@`dZl6sn?O^M*W8VQFAUPVZUNO+#Bp%6hiqQ!;(!l_o$kfg919A z|L$JSuOa5dnI7hZ3fB;q$zvuD&c&Fd)Lky@qPx!8*@^^?tYn77Kh63*aQs&0jO zr}+r;)>M_z4_`6Qlk|0%i}7lx{#^y&ZBieoe0aqMDCKV`OFHjOlrBKS;09LGuSFTt1fkSB#xi89D;r zFC?1>5O1p2baCuYmDPjsn1PdQ?!t6WKcUZKO0qeu?#B2brOXdll0WNXI4fngI;xN8 z-uj@Pr6P1sovLSIXZ}ldK!2lWs5jIzdZ&I?J*HRVJLlH=NzHE>af&w1dRU=8!5J;F z>K(mUzptZJJClhsS8AyZsu{i)x>?_1D&RYVvG_LTd3{D-!g(uIbi6*RFW~6=FZxs6 zO0U;7%njyebqkKz7cdv~2Jd(M8-{NpcBP`KoH(HPJ#-SCCGh@|Q&A%~*f8(*VaPN%?jxiG=-qMrRWV~liQWFCc%~Wryp5e{Z z__&MraBLIz2E(8~9$19wOYoi4 zGPMlH6IXcrdlyF+-^JebyJoq!+^ke9alCPwnr2qvNHz9&&3lpW1@V`6jas7@tHs`0 zwbrcD{2LQ^-@LEJM2!iI(bM&G?*sjT`9N>Xvq|GmeQG{cA9^2}4+GoGHoXm>H9o>I z^zG`iNd8SxQ*d;1hu&d!csm04J`3CO&%Mvh&cIH!MQ!nR2X7{m8{?%x4@z%XcMa_D6SaPR+ptG_jw!GroBhW_ILJQn;u_Y=|eahYpJ(7xY|3c4ja~tU7isv=Ml8)@ZZ}wE_zHK#oor4;E(xEU{CD? zwgNwC{COwUN$+R%vpMb^$7g}l-Y@DG?-z3_@>JBRApSI7KVm&v>Uu1JF%e_DvkJ$2 zv7N$#2%p-=G*i zL~ER(70zqd7kvK=vXXxum&XZNw>s)~)dr_Ql){0vhs+;3%*y8)uhpkQ;|6DtU}&k>4L#Z(Sho5L0u~7U5{s!MYh8DymdY9BN3Qo z_XV?FISi4?!dg^{->o{rONR1EI99bsNhX9-c-KneeGV@n%}vFw|jBd;eu-AAHKE%0eF z%;CADjLony9=-(#pb`Ul@)ySG5^_tu{JqyE@U5DnwqAZpwZa)Uef1#y0*)6{!+To; z{rTmRYER&cz^8!^11kfw0s{gq0?h+=1g;HS^3Hk3ypi5;eA~hAOrG}Y;(LJ7-Z^~d zaMm2bH(0x|1)7dy{1b8fzk_LK5>0Eof7dkyO(gau_TqfPZF)6Y>wEfZ?3e#H{{|^$ z>mPW-dpuA(P&1GxaNPS4-%~WedX<5F*2-RcGv50~RmHazw|d9$O~h_}oyjgiS-cla z!}n`jyu86koN;J^5hlW@;N`$yf!_na22KS|27U@03;YoH7F(qmfl+~xfgyqC1F3i`uvD;K@OYqhux9Ybz~MlR;Q2soFgjQ?SR`0DSSVO2 zSTJ}xkUy9&cysWk;O@YVzzxCj!E(XtgQbJl21^FLU>=@R8N3+S7T6p(8_>aD0zU_K z295@n2c`uk1ttcD1=0d91*Qk41`+~EfrkV42kHju1R4Zd2A&Mm3Oo|1AGj}2F|g5F zjqlzf1DCxBwm~lt5rs3ocw_r5k9ZEj^DS>g)l^dgJtowZh~6M1L?ajHmI7OWw-Wp1%3SD`!9b zZoueWO(M3R9#}s-{on`oo|_onYWqXg$lf2k@2!cvt-7!3+?eeJ#vh0EXgq@8Zdx1&$(Yo18D=iAFo{OJQKGmdw+RgYBd|@6T=Ib;~pYEmLg9C z%<0y0Z=`CE=!WQn7>F2#7>k&Sn1@(`ScCWou>-LeaR~7<;vB;4i&Xg$v53-$n-SFz zwGfREk0M$lIw4XJ&mvw%j6h64%tS0itU$bv*n;>HaR6})aRzY_5wSl~6-JamltbKx zsE(+MXpDFq(H8MEA`S5(VklxXVlrY5Vlm=9#3saNh&_n!5kDb*N2qTiRbE7HH`ZwH zKb2ZiMXTt2S~UQ7z8NPXBmNt=vDZea*$Cb?aWa%hX9M3C-`+E>g5h;kVh^yUxPS@&u1)O8r!&6Nj z^;B8J^hZ4PIHDR(%Wk+2XQv{X;_;ghQxR|MQR-(z0#3Pp_90K5{ZgsXh{RM+UGC+n zX^2QX_tJi)_97a7gY6KaC#Kg$eBIMiBQX9nqB|ac5U~O=8ZiTpRY06e@l;#fZ`!TY z1*{#3_(Hu*vZsbU!9Rj0hCj&=4_QN)Qp5o!qH zMx4ca67e{8CXOxhRQ?%SRjsF0XsTAvAvS@BAzt`GsT0$++Jcym7>ejWNvlh{lp6mv zPT_rBtHd=%_4qNMu74n?GV%JY@Vdj0dw(6R+F^dzp?r@V!@kCPqt;?RUc`7hVh-X0 z=CvWF-+?HHh(;{I^nT?$)w89iGEmmGh{PIN;RGSIqbZgv+v;jhz4c6_YJs}A4$-xn zr}`aMs>XS(x+2yc(&|&3Yn*||i!+0d2GqfTvs$IV*^2ViLVI`+^L7#QTn%qJBRXmI@ME4@*xXaAu}ioZQGbO| zL$M0B#v4zQCp`5Umd_o?7hMZw$8yYrkAw$*z;+GOp22({Ls@ux7j>yyc&ZuhdD}T9 zLKU7Gp`ssBYW{nk>QXzXcJ0;bZt$?Bk!pTsr0R~X><=}9Dj(WkGG6pqj910|OSr%1 zJ=FK(N}Yf8pWA~#nJ85Wk%kzBScKS&ID}BwN2!X46vRTrX+-I=@DLXfmC8k_wus?~ z&4|;8QstvmBSb&MY{V9XQ316L_c)MIA!2UCwgE8|@o%>c9kqI}4RYgt zFxtde#7x9|gxoHnP2AI3se{-)zK?gtPiHCh@qVrD|5mBc0j2IjEWx^dwcF!ZrcWVS zT~O-Bol3oc*J_Jsf%u=?D&V=dBkn}hMl?V?h}rDYB27HBHlpAZ3USAYJ0x{_k1tjf_uL2?zH3k?D!A3=k2(?_eU@| zjqyJaml590QEJl#yqDs>JOT?^-Nk$SKgfH0AZ*F|(l}$A_n0uqzb~zZ`}eig4F6u~ z)#3Z7t^R#L9rEvAQos85_;`2=pC6^7{d;9@2;bus!#B^LyD&eK5Z)$otZLW`KkzR@ z9JI-L^uZ&tmx2$9&hzV{&L4Khvz`EGjp^+WT@cS8x+8ib(hz+S0}w+IC;r5K1n#eP zz&PZ63o#ur7qJMj60sKXAz~}y3&dB5{fNVeA(krlC? zAz~0E5#gP5l0bc5a$q= z5fQgWsRD=?L_FepL;(Ej_h$@JhhBJ5wme#MFwJ9jHgP6 zu#YlVsks}jo>!(a|H7kJ&)*Bre`h0pBewv*4EjIFKj_%i^QWV%QxLBr{?q*2VvNWk zf1`!ipZip)earsy{H&jU%RlVDkiSU|<&W)!YlyeQdnVe(e_B5*f7u-J2a>UG^|Vr( z@bj+!G=CD>?(}Zh{@VL)xIg#|)<=8a5BIh4xZHMQ{3PN$BBCYQWoC{dzi}Dqb5@Rm%ibwa3s_>tjE(Ki-?8 zufE;>pw>U9^Zkc)#M{IBv)_N-b@pp;STt9MhCJKNv-WR!a&wr6`vttYc|Q1Cp4^9!v&(bQc`eNQRr9C{Zqv)o|L2d{9O*djYxQ%Sf{ugN%1T<@Suf%p$DMa~ zzDnodoN?OW?T+J?XYzO1^Ikg#XQq?qi5#21Lux?M%Bczid{|~ci#DeIXGV3 zyTeWTq|?TlU(DXlBad!)6{o4=V43FXWX-e#*al>cJ@r?1Tln6Y57+ssO!jjADF+DdfW2xXenC9XB@3~4KS5o)?POfq+*MBKjW#sDiU&>Vz zxl;a1x$Z}TR{JW`{7GEPBraXPJOCeU z{XQOY^8as}K6k;}RsN@C{(ss1pVq@f zN>oZEMAV}VS~p0k-gb;`*tT$^fBfJ7MBUbPo@$U%3TjLaQ97mgV-4__+~?%U^wKbe z|4;9WKi1IstH&8n$?ps+7*}h3a4JzwTp2OTYcjbpspVJoyxyeO#n=VqzkC zie-1TU7kto+`AomNPVQI8Wo<7E;f6mU?i!3H*|WN*1LToFP_k`ml`<1jOrQXKRc;w zpQNr;@vDxW`TcSK0vQ}F?2jgQOzx1JrMy8=RQkhmfJgrBPO;gGr&n^_N55eb_ z_NVvGe!X(x3Ak*TeP#trXxE_wue1lhBFE4dE4dQ51AAR9hwiXiR;g6UFK{(Z#g#?T zPv{lXt7CdnH{a)zYx<*E^Htj)?ZG}X@nC&_EVX|!M;c+IQ->}n(G~d``;)t;b-Q9} zQ%?1}uEaB&aRe6)?Vi?&iCS{BSI3Uz*5uR$9`SjikI!isaYK^k(3`zZ`_-0)QS_1Bp>GmX_Y048?B0iC&xglS(9tZ$ z2I}xApW34nySK)~mpKu0h0cL7Ik6X~4fUs`qN7`m4d)oHJOYWMqx?~{5_Fo0(Xld$ zPJ%Hy!Hy=g|6q(yw&Q3&9G&iuK7;E7aBQ|ehHLFzF~jrxslB`ZefmO9=VH9VUd*W} z=q&ciMYznLoYsX8B%<@-j{OpoZ2z)&;g$bCD2#{J{PQ7M=I{UWp|oE8<X);IuQE^HqhP!XCny3n>=nkrLvie;2Qj1Nh8t(N_2fdDJY@of`9_XXC z1$(P45uMeL$aZRTWRm(as+;;DZ<^YY4;}d~&)-QcD}XN36Vc@y~>Mxu%m!f8B_DJ3Z9bT(1 z3n|mJTSwcGzFMif;X>+aPhMsGPW3<5>_PuioCvZ%KfXs8ihlnB{`!DZ&O72F$o&)5 z@%-Vn`|}vPMf)yR1^vz0WP>ip@%}Nxprxxh#=nG#T42KdNqnoAfx@XzIXKS2u;NJH zQ5`q-+Nj|oZZ3rG^m`(m_nw1Z4O6_{9orSyfPD|?1x4SwJ%|)zUDc0T2$gyH7 z(5rh_Hj#Z^a$2GqnioCgr>e|oXyZ!Yq^x)x$iQ{C1_sb)ynmg5PSUUW+&I2v{1vBA z2T5vVz+VH;W0p7HiRX0pyN6fv0{v8Guvag&x|lMlUC^_666OfqQ>!h3zg>1ipiUuUQlh#Lg^t&;kn{FV#iCeHSOt6e-DR_5_US=hU^Luyb10a~ex>&p zW2fq=UDUWZzd)1XJhk`%)ck4=mL;HQ>_$3CZ4RcP+$fGZP_QF@F^QQy)KsZpyKcSF zrv40e!d$;mAXRGW`(nwq&i2K!r+;+Sex`&9CiUpeUbkmO;GIs*i%3)NMsyGN|D5P= zZ|3D~ucpO%>QYm@dio<8Z*WT@JT(U=_8V@GK8#@B(LWdS)Dlj@wHp#~L45;AMY@|)Smpx zpb2C|hOenGql7a3{1^BjlGn5HyNN%5gIK$npmXP59XoTC>d-?Si$uTg&P5@PM`L}# zJf4e0gGZ5n$E%*_lXwLKl^)g2@4h~u9gRl5o6c+!1JRLjW;#nON`(Q@Y zA}p+lu%ggaKDM=30~6Kzd9to&aWb|$JM=#r%dF>P?J^n}=NJ4yasOf*zZMU_^o8Qe z3%}0SdAKjwPyJfhFWUt)$7OhpfUWGodHuIZH6=fHu~6^Z3-FQzSXqt~_0&f&4c|<8 z*)laXuYG7%UR3R)So9}2xPWh5gYEmLVaH@=UVl5PPQ{~3^WWmb`(`6c_zgu zDIboG*V;aVH&#{zhV*buFv!u!l`7xbIgo`SYvohh2t^3D}y zle=V_^~Gqv#l02dx45k_%1cx$3u1|mh*4uP)*YMpWc5WsT=BR)8q}Z||GE}KQO2)k zdnm$R7_y|{D}JC?{8V+mAj;rt%Q466=21Yx*9xhTg#v2yd_L_ghByr2DWWTrimkMJmk(z3^ zLA_L{a6rw?pxmLOnpU`bYA39X{8)tzbgKFZ)jKSc2~T3EOn7DLr8X4y_p*DZsgLpe zH{PM~vp-zDgkJbMcvyzV3Wv8>r_naXFQsN^ z%J37<7E$N%#J&C#FY$?f{TEduF{d-%W4ezp^rucMszR80+@CrErvoeOAn+3!uH(>6 zeNYsaKVY+etwcbb+rme2VTbIhJ6M!g)i@d(P~V;jAnllo9PS?+#Bk}W9Da0hS-QRP#?J|e2rAJ`+^CAwv+3b8q>a` zS{0+#qk#|IKy|)9+~N;U_`~5FIep?zJ{dFiU5q*k`{2ism^$eb4%hj^U$>Ay{FK89 z+c=#68HcAa#MX!x(h1jcCf>Ib@p%f@gyBBZIn?##BQyt}rs=OrTZ$#8c2?_A(^G%p zL#xhk_@h7E^iy8&pmQ94i=jVH=ZdL`vHm;_iN!p<5v#`F$zv{2n(Ysl`@@eg#QQuq z_!+Uhe#|atUtP+}t@NTv!(`Rw&tl1oH^M~8#kQXlC@TCk6e_4#@cv<^z+vD)LzBiW3 zwBp#Jhu^=|8oV8%Jm1D8_Nk%{$EjbC`}h(+>oN|MxYoc5UFY9iX$ z=+F4rXWKbEh9O!P9(=pFT8sw=@8INF{%{k9{?kA8pZ-O0wFkzquW0t@ zy%YU7h0psRh3Vxib9y;MMF2Sg17Z67t-wO-lj+beg%Dqu{%klOTc0fcGXU|0=@-hQ z)ECw#i_gcz7v}xFSf379pDg}+PI-js{{iQ?^~vJnbh)hj!t{$^eY{|OviQ9mUzk46 z&o74a@L8W^@ryXVFnylOU*7s;@zJ2N$|Fpl=lxf=K3RNJZI&-gpT7}kWPP&uJd2N< zfPpZ5{`RD`^~vI2>-fU-`FoWV>yvZy`J0wktWOrdw3A<$`T0AT3DzfzFJ)l)h3WIR z2#c&w7GLUwzA%0MZefk}$+`Lbjl&k}lf_3<@|pRCnV-Lh*lT^V_)_Qeh3WIR6F*v? zoSXk3ob%Qvi!bxY{KCx7-(*BS6>gto@uduZFAskk5@&s~_>%MQ`T0ANo2*aH&F62M z?zTQTH~$$pk6NEB{tHh13v+&t!D(-OviRISl39LX`i=1hkY;_d__tvHLwsTSeWR6n z$@*mR_W;BfrvGp;rAAqwEdCa!Ji_$jWAS@D>yyRb=J>+&kHA@KeX{sf9beebABXL; z~?;h4C=jQXA@WIw6=jQX=@d?%^=jQV~^99x?=jQW#^flHe=jQVq_U+au z=jQX=tAo}ji;q>!XV#}M>yzhYov=Px{G66oBRGFqpPZZjFq{I3;r2-uKiw&hFw1io zPHF3t#Xsu!!t_5ah2Py-pDcbu#}}qw^cw6BSf4C@C&w42-w#eJ>yyQA>G;C*cfi5X zQh)!4EIuaroPY_!^l!fw{ef7YEPfNm7pDI_oB`G+i$BKkh3OZ%PN}!7PZmGJ@rCKH zh4Z%c$>QJb_`>x6fV0l}Wbtb`zA*heO5^v6)+dXf;P}Gy2g5mReX{ruIleIc&)}T5 zK3RO3#{^6erqADN=W82YUSv%A*Zuhka4J}zEIuar%>2U4e-6%_)+b|L+zHLEje;|tSIs(}4T>yyRDTTNDe zVfy@?{@vCmi;r)@vV39s{7rvT>yyQoeT)Q55T-u|P6z9g#mBB?R(@gne!l?LC+Fs~ z-+|%QCyQUe$uG?OTj5NzK3RNelPte5{oQchvp!jTtU5l^7pBjCDYjdmEPg@97pBiX zCyrU4EPheP7pBj?BQ9B=EI!`)vdSY&pZ#GJZ69twWbq|u0wxI4XTKDctWOqSmMMK< z`j5k@XMM8xvd=(Ym_GYNc*6Q*@$uH=GkszDuff4_CBOZX#qa6(!t~kK#4FY(i~pG8 z3)5#m6Emz&7GKs8mPeRA`%zhLeX{tGPJUtf>~m$K^~vJPI>r3L^k0Ru)B0rbcRTro z>9@WGeMDHFEdHyGFHHY?IA^R+7Qchz3)62<5udj)f!iOl_)>=nm>^7l0-PA@lf|#+ zh;MB4{S^SqBUzmRCtx7esK3V*C9bcIK&9|YATAwU_AIBG_ zKON3s>yyRD*Ka;2;9i(ME_bZPTc0fcWhcKd{i>C5Ov?IX@xOI^Vfsa@;62s)Wbr?A zd|~=u!P#nkviO@EUzq-+syKdVeX{r;JH9ae_SNtkKkJjl@8$Ty^uL4?l@xAoWbvhq zC18Ru{TuJV@j&a7#V-gT(-)?H$DMe;vp$(lImBN8GJRqCRjOl~Xnisr`m&DG7p7kW zPBZJ1#eWdbA=4M8KNt=Ug!}6kS^Nc#FHHZo8aRexeX{s`jLiJPyl;KCQZHMdOs5=T zlapVVe(8I#KW2Th_qdqMHWAwlV6zm*-uk(>yyPV==j3) z**{fP>yyQooC%m9OrQNQ)we!5H$Mr^lh!AT|GZNkVdg&w2Pazk?UO8iOUDtF&V2-9cZS(~j-7C*m}Uzk4owmN8i zviL#A7pA`q&N=Io#ZPp6VfxVzDTTB2{Q4w||E1##(?1HQjP=Rl1AR`w1Y!DB8siv& z^~vJPXF&SG^x4N$ee09O&+p_Hrq4d89lg}`egCDI=(Rdad4JepDh04jxS9A1e{gYCyPJa@rCL4 zO~CPF>yyQw?)bv=;~qvgfYv9A|Dxjy`{jr8yOiJYJ3GEG{flt&U;_8|$dbRg;|tS& zq$&E%us&IQslxlg01t_`>vW#>QxX^~vJr1&|Xk5T?&QLWWzPOs5)+dX<*71eu z2by8~X??QzO-y!qgz2--xD4x)#UJhD7pDIMoR6$e&du-LLa9C0CyS4_dY=<8L74g1 z!Z~GqviP?+zA*h`a4uV)EdB-nnfZn3&u@i&;x6I#Os2#7AMMnSFn#t3SK9hy@hdy! z5vJb_PG#$p#eWt+W_g6^A9)JyyPVyyPV z;P}Gy*=HTj_4U_xviNx%Uzk4oxqH?6WbvK}S1WXX7|0wrchYg| zlf_5Zj#>GI>GQMfdFzwKpX1~grqBMkBD;o{7g_wL9bcG!LK51)^~vJj<@mz%Ux9P2 z^~vIobbMj@G1&L1V12Uq*E{Q%F#S8R?pCutS$vtt1WXX7&;9`FSf4C@38y^5^nZub z*!pDgr#ikc{jsR~mewbWFLlE52-DvRrgz2*%u!Gho)8YI+>Sg=F^w~ezIqQ?fFXXg0Vfy9M@c9$<&ixs(_^&(V z7pA`$PEqTV#V-LMCtx5Q&Dd|~?2`k*eXPZoc& z;|tTjr!T%wv_4tdt>B`^~vJ@ z3Lqz7AWXmOi#UGuOt`&~>99V#L}mNJ^gn+U#|NxW7Jnpw%>2Ui+YZGs3+t2VF#jD0 z@rCJ+gVWIZWbr3EzA*jDui-t?`egCfJH9ae({P@)K3V*N0CEBb!t^f$$_(=dV%Ogzx87%AvtWT!H`fmdu(-)@y$#^U?>yzowmo`9OnEtW} zSm&)z7QYvsL#8iG|AvX!C$>IW{6UT{On)AnQPwAm{{?`|{KE8~orGgv)+f_p`R{S^ z3)5c?XQ}nc;;(UhVfsC>vG~~fWbrFHzA%0ExBiXw$>L*E=W_xk2-7b+1^e{YCyO5m zAk!D7fAds)e!zYP*B3G!&hJ}Jeqs8X;9O&UviLh3Uzq;bX*iy4eX{uS8K315rayH$ zwkg&pi~pjNUzmQW8Tfo>eX{u2wD`>Y!t@uw>1=&6Ci(L#ZHB%u{aa_^J{>?gUT^~vHB$SjYr?=QsmR(!DdW1_NsVfyUH_#W$% z#g8%BzA$}Wv*JyyPV z@A$&>AAobr`egBoIleG`UW4He>yyQooC%m9OrO_oKtBS0{gcI)ob-k1Pk<9`eX{sT zPI-jsUxag$^~vH(oiM*JeO?FSe(RIPFY4qMrr!k4lh!ATf2ZRM(;o~c#rkCNuXTK3 z`ZM6XV12Uqw>!Qt{T*<|S)VL^bH^8^Uw$>(ob}1#%Qh_m6NKsW`XpPr*8y#Pm ze%|%?j>P(8@mDy$FnwP8<2LJ)#mBCw&k2|yOuyOt_)gdQWbtb|zA*i&v|%Ogxb6V4~rCyU?S z$uCU5$TnteX{t20A!X&nErR4;rtTolj)R0%y9Ax(;u`Q-xv1` zw|}zuvQNVN!t~d|xyJfr@oPExh3WqZr;_!_;y>s3!u0#>!1mYrWbvg=SRP^eo8UCF zK3V*#PJUtff51t!K3V*ojxS7q%jeiUSf4EZ8;&nbpVx&NVtumsH#oj9eO?=Dmi5Wv z7jk@I`n+z&O6!xwF9RSaU?5C?5oTtS^~rSD9%?%Ih3WHpLwl`H7XLcO7p5QerBXjx zpDey?^I0BY`n(1fKd^Ftl`MWUC%-U#UPJ9V>yyQA=lH_(dEK>ptWVC(=k>ChTc0d` z2PeNU^Yc1eovrU*a|<5p^M1z{rq64f4YocxxBR@;*<02p=jQWTaGBO8=jQX8ZJVr5 z&dujF*mhZ;oSV<n zYkY3EK3V+MjxS7~*Q0yD`egAtI=(P{UdyeW^~vHt<@mz%TkXZ~7pzYfe}Ll))87MU zkoC#pcXxbY`n)#b6zh}4zt!=D>GL{n9R!t`(Z9{U^CCyOuJ1m+i}zX;AS>yyQoZ4`ZB z`bB?0om!tP{#d6x!u03BdEfeE@iEC~<`<@4@(}hPtWOsI4aXOzKM&3+>yyRDu31)o zVfws2r`IRke#qj7uh|^lo(R()dIY~|u|Byh_+{kgO`dzFyyR5+3|(x^BPyyRL@A$&>N5GkHeX{uN9AB9JDLBilPZmEa5at9-5T^gfPdGMfeX{t4O|~yg zKk^hlTUnnhe#j}0F#Uyaez87T{0@#UOux`+?5kLxEdK3|FHFA{oM!<`OwxUi$BHjh3Q{}bHDY;;&Xi=@1Cqr7XL2C7pC7CPTqdu_Cpq5 zw*Lv3AWZ)VoNKL57JrqKUzq;1b10Mb$>QJb_`>wRhEvb_Wbx(uDV9f={txGIKB)D{ z;`ed#3)63P0l%lUK3V+t9AB7z^q)%gw?0|?DvmEqpVuiLWqq>vl^kD~KCf{;!}?_L z%R9a>{kPy`TAwU_D`$HpO#kd(`0a`H$>PTV$O#w-(~rE2bD6A9ro;AsGk{EAn0{qU zJ#Bq59r`aJ$n=HjFTvEv{^9mUrbB$Lx?7(t{$~Jk0tUkL+vd}1 zkoC!QSpGH$@rCKHgEPkZWbvN^h%ZdPMggs6Tc0dG-YTyyP#bjl-4zYm-f)+dWU)v14B`Y|POHR5N(?Tsw{ zAt%2u{c~`xu|8RR*@h%wf-wE=rL?MIeX{u5o&3V|@4W`sShGG^e5pg`7p6Z6PLlP> z;>YL9u1{h5%PMH~y!FZAqiOie{KE9t-=x(@>yyQQ&?&z#{XAItCt05?ek;cprr#dU zV(XK|N58sRsDM_&iZ8WA9eBz)87PVm-WfwuW@`~`U5dIYJIZ!?2VS3fPpam zqLpx6(dWYLhfIg-qa5F$FHHYFI0daw79X45to*|CYgX2(wDrm2w{(1A`eWf#vOZb- zha6v+{iazyx9XOW^dhK3RNhdVQuZOn*gHtzNV~ zS^N}d{S~Hv!<|}pG=3#YdS)FVftQmv^VRM#b4_9!t__b zIV9zGeAx$Md4%bguc6gt>yst_-A;aC`iXF2pAWY;viMTx%r8v;CpfoRpDccYlV6zr z-FIvCu=UB}Pj-A^`n%z@wLV#VnMamKn0|wMwCZbpviKF8{KE8;;k;&jviR5(`ON&n z^wVo<^``a7;wL%zh3Q{_^S1TL;y>W{!u0E*F|D>fS$x@tXL*F_N7vHoOY4)xKkKw- zVfqnuu>G+Pg<5X&P>e?Od<7sBm_EWT{R=?l}pp{`c9Tc0fc za;H4P^!LGOWPP&uvW;SXVfs~Zz0`KrCyO8BPg8 z#qtQ#-vno_^~vJPJ~@41`n=xjYU`85ukDmam_D!ly2<+F+QGuAhZ0!^p7;q>a6w2bhtgd=;Rls|9wL^FNWKX&(@dUcQC&&{dXE^RmA#a z$$!AfFHC>r16q}|K3V*OjxS8V$AenkVtumsvX9F02-9!zkXH9vpDg|3`N9*Zs9VS$sJL z#qtQ#Z`DDoeby(7Khi0WF#Th24qKlrei_FXrk^KCtKY0o7XO^%3)9yfaXtD0;r34! zzrN!O({BK$nDxoxW0UQ30wxI4-vFnA^~vIQbbMj@H+0hKZtIi9@8bBv^hdyHYJIZ! zsDiBW2-DBs8Sn4bCyPJR**_PipYgO-Db^>8|5z|Pzc78BqSedRCyPJBDUUGynQ&%W zpDg||#}}smcu#yjwLV$=>W(i=e*~Nltxp#JRmT^mAJa>#udGiNzcPTFfPpam2C3+4 z+xlcWT;DtA%l3uoFMLs}Q`RSoFUORaUzq*@IA&nDeUinOHb!5V{u2YVinl&l{8W^Q zOkbG(HaJzRPZs}E#}}qQaiCTYTAwWbdB+!~Kl&wnzOX)7{I-rSO#cj=q=Di2C5!*2 z;|tRtJV>iF>yyQw=lH_(ZyBuBtJWurKhg1p>2HEF#`yyPF=HwS<{?y_4{A+!(_@6tzF#Y;(Xw}gA zWbu1BzA*h2a9UZPEPiXp7p7ly1di`npDg|e#}}qQ9nOo^CyQUz@rCK{gfrawWbvO4 zWG^pa`uC2}YKryA;!7D4FhQ99RygymPZocXQyyXZ{l;pw&iZ8W?{a)$`k8QcTc0ex z9@ueevVn6EdCo#eqs7Q!ntI9viLy&nfZn3|D3K>(Lv$%Nv6Z?bAKnlF#XQs zwYt^%Wbq$$d|~>l;MBA}S$z2n!tw~yKMUu6>yvZyZ=ImkCQ3nEqFA&Rd@>eqobcpThKyPSL8+;Bb2* zi+`V!Uzq+4Q}O+U^~vHlcYI;`&%wFh`egBMc6?#_AvlTFC+FsGhtu2oWbv0c`GuMP zrD^#5Vtums;~ig^e(~vAjkZ2nd|9Rmm>^7lD4e<0CyQUk$uCTQKAiWhPtMKX0_SV% zlXLS=z&UMwa&CV98TdZp<#2l-=jPuEr-b#%;`esuSD5oV6V46RCyU?I@rCK1fm74^ zWbtoxd|~?6&BXqm^~t&Ujp4MgK3V*&PJUtLkDG=4J?oRj&krCcU?5Dt>};))txu*? z4)JRs+ZXop&&U3rOhdd|~>3!Z~1lviRGa?VB+D%^CRoVtums zuK~yj7zopUWU*HHUkSH=GM#dWJODC%Vfs(Jqg8q9lj+d^1|hyM{kxWERoD7t@zVg} z3)5e)6#IMDCyOtiky##L`Zq1ps-yME;;(YbBTWB$IH}eri!V9PgC2J;Kk{|L?$>yyPl=;RlsKW7E@53NrYzo^q5gz2wbiS}uIviJu9 zWR^#m{)G4N{hjs6bhvz_%=Crne*x#P^~vJ@eoc0MVfvf*X!VEn$>OKuHOR~_Oux<7 zT1DUhKsn2FSf0KBGJRqCyY^~T-1=lX^lKr+7p5P*566G3PZoch;|tS223_T*=QCKJEdE`AY+soErGr{MW__~w9|6b-7zoqf^u1Q?txu-I`R(VFN0@%i zAGGRkeX{to9bcIKK{z9s6 zCyOuNxg=nMF#WW{_#q#B~0Htr`1I3lf|Fp%&##0sc@EBpPZXt<2=4^vOZb-N=|-Z=I;vUfc44Z$2z{S zKfiF!T7Q7!Z*uBKn0~#B_`civWXWF|Ku*9wn0|-9@cC$HxIL5UaC_1sD%%&P|6b6j z($*)7KQ&LbFHFBBI?}q+`egApIP)t^KOP_6?zcW!{OOJ_On()eMC+5q|ITS|!t~!l zM*}I=CyW0pfSiDVF#Qp+M!jNvG9A`WM}+vo^v}W>V|}vt+nn+U(|^B&Q46h47JpeV zJHIgfw9-bcu|8S+Elzoa>DMY_)ECw#i{IJth3SXj9JfAM{3?zwO#dr5e_5X_K0eC$ zoPc{_`u)lpRrs}Vdn1dV;rPPzZzylnb=D_~pWu{7n0^|ZYSt%<{~>^!fPpam8aEpC zp!LagxO`VfX8XeQf4$A9C#+8v|7if3`Gx7Xsbo}V>yzm)e{t?o2xp7qJ%%XbzDm>^7l7o64BCyQUvX`jOMbxpK4>yyR* z)hWL){oml6us&J*#f~pbKXk8Ak;B66hb;abjxS7qFPxjLPZs~I;|tT@R?DdStWOsI zg5wL*|M)(mp0qw${Ney|0tUkLzpZUlck7esus!rFknIc8Z<=7#K99PD5aJ8dZ~VAX8>~+jf3M>U)4!pGQCqD~7GK%` z%Ogy`L`$RgSf4Due8!|NO#cr!r>svFf3s5_VfyQ_vy%7qaQh*Pe?wIE{0h@Q+|H=$ ztxp#JZs+}1nErK1Mpd>xS^UyYd4%cT2j^bvlf@t8_`>uzz-eNAviKi5zA*h)J7Rlf zeX{sDef|w}GU^%Ylg01hEWcPZs|-r+$R#&wkOUO4cWfUlc%Q zeqs761{l@Q`eZsR&v7TeF#YKR(f+MZ7Jo8;%>2UiYoa5PWb2dZFn<##zcBsR;Jj>o zviJubUzmQ^!N%{8vYch{y8y^6k1+kuUp8u*%}=Jo^2~GEvoQVsLydad`egA(1IWxT zOh4Z+qn2BrOo#dB1IYA+=`VZTsLj?V)1kisL8dQEzxQyX4qBf~hkmN#3)4Ra=Zy8q z;{WE%uQ2^@Mj3U<`egCtJ&xrOrhoiRqYAx&GFTRWms1{L`s>lLdui*F#qWX-X=LUX zrhnsnqi(W3S^TEKY+smu-wdPfvOZb-)z11ZOux!IMm4oQS^RXz7pA{?sZnjMPZs}q z#}}qwe}z%cTc0fcqfYsS>8GP`Z(5%$emAE+h3T6$Mun_T7XK;77p9*GXQlPY;@{%< z!t{s1*F$+`J0;Iy$mS^U~g`Gr~j@o-YDPZqzF zv;GRxU%Jt#SFKML{}m^{F#YNu7&Y4ZWbx%Y+yqPzrr#INRO^$)f6mD-O#cj=x2;bW ze-(ht{KE7Xd}!1r>yzoQJq&i{SD5~7pJ01veX{s@0c7SEreA%FQ75fWrt|-?_a5+Z zRrmJqmPfKhNvH`unBIkZfdDSDu)vm#82qh2*Eg|sM+I#)Z>=}tm?z{KB_rLGjpU=qOv(GyF?6Z5{w10!B z{%=hE{trTPMu=~orC*5u`7G@>rv4|;Zy`OI8rt6z>5Zx1=Aj{Ol=NiN*8|A3-DK|6-kADl9!LFCda~)CjqEq3{?;dkxa*}Sn|@NHH>Uny(EL_*t{W9plqM*UEFvgxNq;blzy%0CWqL(hbr zV$;_~@!y#G3!fX}Hjtid`UBu5GTmcL{TtBiEIrxuzXy=1H>UoVFCagZo=gqD*Xrcd z8&m)77t!9Ao^1L*;u$ja#?&u)3Hhh=WYa$q>5Zx1@8uzGp7dnX4~zWMnEC@=8R8a5 zPd5FG$bMt$zXQ!;>B**lDAF5K-}{##?l|emrhhup8+-S^I>dd$+z&SWdjN71{uom~ z>GdJ*9O=o_(EmRd#Rp^RXTCYaT`E1<^y_}UWWO=>hyDxsv-D)se=~BwG4+3i<|gUM zrayGelKsZi?~lm(8|lfW|88|jZ%qB))=s%6q$itxcH|yo>Zju4Uy`0|`kzI5W9t72 z&HK`mP5%V|xe0%asb6=Ulp6{UV0t7|L;qhM*>6n!DbTDhJ=yfP0?4%AnEHL!OS!G3 zCsRZFPmIFXnELxROu6yWlTE)}BM4Ky9nlTCj|q&KF%dz+N&lb&pPv$F{X#?-HX=4;ZEO>cP) z^~Thvw@tZ|r6-%-?5wnZDKy`fo^1NxM(#JJ{gby#x$jF)HvO)V-kACxXl{|7Z2IS; z{LPs9<{eY+*V2W!(N zU6*qIlAcTr^|#_@dSmL>**)bxe-<=i(`Nx>+HXw#(h(`Qt@LDSX#cwaGWEvP_l!!p z-K8f}Lwy&1rZ=Yk_t5MsJ=yfXiuA_RpEo+?z9K!@^yx@%O#O$@WThvY9#zuBJ;v03 zeN4&~q$ivHo=9&@{p_(R_YLXErpHv5#C~JyYsaVDh0>EvZ*|%x7#LGufQDyOFucg7 zzcz|*#?)`UN6OtPJ=yecMD91Hew{s2?lI}frawE<8&iKdG=GtvZ2HS1y)pIEznpSI zz7^b0HvLtR-kAEgpy3%C{9dx@Q`IH^G^YNYNhvo*da~&si0n6}{+E+eZie(^)BhvV z8&iMFl$1M6da~&si}c3SpEWh*mPt=GJ&HijO)xN~e(U;_J5_qJ>FB*+wKhhghziUIvJt#fd^z$RVG4(5;c}aS* z=`9a$f`KvhGxklnccdqq9z*?}sW+y+u`%VUSBCgQHvPyby%qB8|lfWe<9Kv zQ$G`fLwie4HvPT;GVM2}e&xX_caZdCYWTfJNA??2zri7>?@3QKy|w9RzcKZ#(5#f6 zYB*+wEYcfOpXx&XCOz5o!y~;h_1i%6xpPANA)9`yNN-Gi zJv7@&Pd5GKQGRIb-G6w>eOdZfz^1=6vfr5cQx>M&H0jBv|5Kzlras%9a%t(wrnfd@ z6AX;0->N6&j*^~idYdCny)pGqLUW$34|SZ%q9xXnra^ z`Lpy(p!uEjMy1kE$jlTH6fJNivl=NiNPmc7))L#P4bm_^aH#?hPU`+iVpgB}}vgt=f_8U{b zRvz_v>B*)aAL)&$p90PC(vwZUd!#p}ei1b1Nl!L?U8Far{$gmZm7Z++!y>&g^`AiV zYw5|KrEe`D{zy+Y{g}vpW7_{MXx^5dZ2CPSy)pIoL6bT!#2>QhH;MGd)V~bP2GWyF ze?qF19*wDAxFqFvl%8z*?#O;)>K}(@tn_5lHv!1}-B-bk|0I5Q5**HW%qda~({h`!gD`s0p5{YrYW>8C{Y8&iKLG%KYioBoPO zZ%lpm=#;xmda~)KM|xxGuY=}B>B**_9qEm!PaT8)M(N3>-!ak~Q@;x|f0UkVdaENf z!N8dMerVp8o^1N>MfMw0zvZzgAHN;qC)xDBj`YUVzYNVT(vwY(E)~yok1_R2j!U^o z(vwa9=!2Z;iy$FFlzW#?RKseq-v7 zh2}Kr$)@iCkZHd$^?yAP<)iduYH0s6k^RQh-}80EAL+@azdX_#Q=dC2B**_8R?Cw-|M?6cbD{J)2{-MoAAe&`e&|8x#y)P zQ^WZ1v$aZkW9rZTG1_<1lTF_OAk%(h>R-7b1|FO^~Th1`7_k7q$itxLS(-&_4A=Q zM0)aP>Cb>BCq3EpZ$|bT)BdAwO1WdDC!5~t40OLS^*i32a%V_SHvRgM{l?Vq0nIAu z$)?XmdSmLZhUPly$)=wl>5Zv(KS%vvda~(@k=~g4A~a7)Pd5E=k=~g4_n>)Ida~)4 zMCsR<`kvbmKfe>=C)xCpt0>i_nul-o^ua-s*2X@8ZN z`nT^)xyjO#sbPAV6Me5S^$mBW++69&rnfOx+HXvK_1!7ASbDPQEsvt!nEIoj`KI(_ z)887o$C&y(e~s}<>B*))InoZOJkx$->hJhn%6%w3+4OI&UD6vNbx5h;w{*X;?Wg_i2rhf4g$ls(V zC;BM9!5h3e^?N;?ayv**HvP@jCHELp|NgVc-=rs-{))(djH$oyxs+>=o^1M`MtWoF zTb@V$COz5o=SF&C>R*Lsk@RHKKN#taslWLJ)aRuqoBn{B()Suuzt&$+{z^|a{pOK> z8dJZ+>&UO9C!79@0CE%l7*oI38!30Y^kiz79$y_+(i?mG-^KWm*$+1T{OEg)sXq#u z*Q6(#ek}l*?lGqRGzNFPh;xO{3qI*(vwa9`^bJ{>N6jq|6h8t z>6;_HG4(e5ZxH{y61Mm!53;{Q=}A{4u8fr=O(U zCDN0rVfgL@AX9Hl{j;vx{aAW3HPn9{Khqmi-&s}d?vtKu`qu!aH>Q3z2B%+RX0ayDgZB)|{%?{07*oGyW3_9Lo^1M^hn4I%rhd$yw^r z`uS0QWla5r^Q+wo>B**V`(nv{W9mQYsdnc}Pd5FR0puq9F{XacT(!GKdNMVPKbvh> z(i>AhZ$-7cNqVyB7vdQ*?Kh_W7tlN`J=ye_TA1jKssGW5)$V!e$);Z?@_%FMZ$GWt zy(2x@^!AN(k1_TCJiXctxg^9lvgzC4b~5$G)PMDiYPZ29K~JWJ{&QRuUdGfvdsemE zUV5_Wr$patO#RkpSG&EWC!7B305aWUO#Rj8RJ+DYf_uo+&^>44N2cDG`n}Jsc3-_D z=*iSjKN~=%-kAC`&#QL1OM;$E4fWHb?=`0Wi3_UTanh4bzel7urhfg4tKB)$lTE+X z?j`paQ$PCtYIn8tWYb$6z6l1#)PL_m#82tTroR9{rrwzPX%APs`!5OKOQwe3J0^;6 z#?&wSL$!NOda~)aUb|$!G4&U`RPEl7o^1LPBmXg`eyhJ!yN{(Oo4yHdA~)fWG4(lU z*1a^ipKSUoqxfb_{TE-ac3+a7Z2F@k`;DnT8=76DCx4cH!#Aqkc779zcKAU z;jh(hiu7dD?*SlFZ%qB|Z&tfz>B-bEyv72^)EiU(_qP!Lr6*HE{W$zgZ%qBpf2($f zOHVfawNZE(Q~w8SrnW?Svgxf)mF_X7{<8OwpG!|R{a!;#?lGqR*$=AS8PbzY|Fy_H z#?&ADQMJ23da~({h{_9N>K|Xf#$6*l+4N`vd2WJ%G4;g_YTV7zlTCkWR6jSS-fdFj zel0!O^tMLZz_J=yesiQI2Y{pMTOxW7tIHvOZK z-kAEgp!ryOvgxlITJj%b>Mz-;#;tQ%NRMRGPg%F5H>UoDi8XGx^kmcD9l6Jt`m6V- zaigRsn|{;klKsZi|7!0VH%WT3>Cr{vxd{fw)VJX7riSUA^OMNb8&f~E zzQ$cDJ((JxpG5vSR!sfU={4?p>B*+IJ~!HLO#Rl4HSTul$)-owQQ{tB>R*^q`h`t3?rrJG)X@D0NA5SK{%$N5{aAXk>9^gpWWO=>ubx)pK6iQWGqUN2 z4=L%5sbBNV8n=b?WYeDz{gvm`xP7H3Q?o68x8P@b zW9r+^Mf{YWZ2Bjo^4ggCy)LhD3#BKU{`XOM8B@RhRWT}S1Q+l%L ze^6a=zcKZj|DeWwS9-GP$4B)OW9nP5InhnhlTE*2 z{SR-haetDYOwG3VT@ih+v3JkUYurcX9B*-5TvVPKQ@{HwH7+MT z+4QGxQ*ysC^|!7y)Ey-~+4P%5?l-3XiO&sn=SxpE{fe5B{l?TEjK!!wmY!_-BhZOV zZo(g9>L2eM>V7Fb+4Li;OL}AKYrBWKN2Mp5ev8Qc#?)`uJJh`@J=yff)RgQurv8e; zQ1=h%$)>kH;U*XuQ-6JNs9W#5A^wm}|3d(odSmJjTRhZlBR!cK#6n!UeKH`J^8cr%b>YZda~({29TTZ$C&niaMVzDgY;x-7+zNA zr{0+Q-HsXR?vkEt`r{(^8&iKRG>=P9HvN-P{%=hE$;S_Mf03SS`aL51jj8_?G#^P% zHoe7xCKwn~?@k!%*10moXR_(<2au^ZrvCmDhq^CGPo{?cGYdeb-kAC?oix;qlAcTr z_14Cu-kADsX!enwYb8&m%xG&$+XrXL^W&&JemcJ@$r zob+VV|12smjH!R*J44->(vwYZe%=HFW9rwvXsEkXda~&)OsO}fem`h#l%8z*6Qb`m zrv3qFZj+vDdJM69rv1j$AAa#rcaQXB(`Nu=>W#hqtA@H~&3>@yZO%XS#?-%i$x!!q z>B*))B+Ac?sXyTIp>FM~Li{8r`Y62|BBuTaR}OVsOHVfa5m9~2nEIV=80yAJPd5GH z$UVl?U;Go~x6+eM|7PT$#?+tw)1mHA>B*+QF0$X4`h9Lj{FI(-`uB&G{NI@Ralb@< zD?QotDc5sB zhCPOYo@{z6vuM9D_5Uagb9+foHa(W|d#2u)`WF`ubF-u;n;xH@=#8nLanvx^BR$#l zn?~ikG4&lQhPk7qC!78i0GaMFroQQfVeXsKlc`~N{Qy7H8&m&JXs(i;Z2FHQy)pG4 zo;b|iEj`)v)(1%U7*jv`q+#v}>B)&cvOmtBd!Ttmda~)yTeIYTW7=QytzqsT(vwZU zH1bbl>W@5cm|GJa0BpaIP5(xuH>UpZi-x(ar6-&I)X4qD)V~MK-qMpzZ+kK{!N8dM zp+6YrW=Kyq{aOGr^~Th%_rqasf%If*7{2EL$kZECfAzJ)+;Zv3)KHJ91c~05`cr;9 z%$*`V+4N&RSJE3(f7>0y+=bGUO@DM`zcKZD-8szNAU)ailWI%$8&iMey~EsX(vwYJ z6QwU>>W_P5n7dzkvg!B7HUj=Xg-#n zZ2GCyCHIim`Mz@)F7^M0gSQ7?wMDJlL%jKyYF)GVc<`a(TZY%V4)HVKMdFviM~heP zRO`+Vue)=tyHI@0h+6kOGUEPWBWvC5#-nQ8z2axVPZ^J{b$>R^m|FLDGY3~)BYVcy zy3dP`7+>qQ5FZcTRlEv3R=o3sTDP}&B)CaD37i%m1MU&u0Y1hw6Kmb+;xoZ#i@yiH z()8dP#h>4!*4-uE8T^QN9QZl$6!2@}2JnaC{lL}8IK5wizhJy)t=mR?40we24)8wW z;rrCO{f+Bu-GSms`_;OPcon!$eDAzkccl1P@X6w14y<*n#Ooha>#h+G2j4EP2memo z0DeL|9sH7bKkz%^nc&n9!*|UEuP;6jytTL&JVv}6JWad`+#-G!oEEQrFup~+Irtdy zB=Ab{Vc<)}o#5-lz2G~<{own=$AF&^zkO(}dsXbdTI>EH9syqS+VCwC!JCPvfOjOX ziT!rcwQf)GD)7GI;R|Zr9PzX5weB#}XKG!q>A^>d?*N}Iegb@r*mcypo5YjA_lpk$ zzbIY>{+sw&@W7Pw8^4lanhz{iWb!QT@1fiD#o!PknHf^QKY0ltU4mUG8|pAbI_ zeqB6#G4e4?o}y;b61ZP{2Y5U2@a45`GtWt1J`CI|p7ga^cN}?b(TE5Ld2O7IEd zOTnD?K>M!-qsr!aNBGOn#Jhv<7LNlzCY}U-Njwewu6RE%_ui$Q2Y@#a&jWK!KFtpW zj}tEhH;89^F3f|cX2}L{zs#Gzfb|dJP0)vYg7{@H_gSERlZ~*Cp}1-jjCqSs19Pt& zYEIk~XFZC~0lzE$4mbr*r{;3-2I3!r>%=#LCyVa}W1DfWe;j6i`U!? zW1Qm6z}Jg+1>Y*341Pe|4Ca1Abk9rR55)IwjavZ4pl5yTNthj_t5UUHlRF5b>-XF!xt{0r)iW$va_AfVgvK%zqO1f`1`C z5&V$&kXR%T9r3hXk=AO0+s*@jQT!B`E`A(*ulRz|sP~H(j6qvP{3sYh58lol#-hC~9y<>25Rbwl z3htZF_f7;ii&ua%;<|}Q`{G0Pz_^8Y_@3}jaeE``wc=;NcZhG;59^@B8|;s?BmOh^ zeetLnI7<(C6W!1Y-b}n4ysP+F@ZRE+!264@2QLusIurc@;+$ug2oEM)6ULk(B6?-3x=O2c=PkcN0dU1OiX-d3z z8}caei{K~4P3>4iD?S1ImUzRAb03Mvbz&Xkn&DfX25%^S4?JAFvJ3qb;(Nfe#A6Oe znITSfqbv{?z{iXK1pcP@ui)>9t9uZ)#dr21Zi~N&0`Wfac13)P_($Nk#J}suI`FlE zn;!sgD!zCz#z@3_E`giH7c9lRK=J;|FitGK4O|fSEQkM#+rNf+B;pUjH;em^K$#`Z z9)-M1{LqQWyTpf`1b3|++;%p2OYz8)vA?$XE$|fa$EV;NBk{^pF{ecQ!_&~$Caymn zd6#(iGq4U^JoilO$0XkBEYtzSr-7dpbAPf|#N4~G#52Jk ziC2KvSU0%s67W{y2f-7?+x;ASc!@uME5cpe2F{45-v<8_uX#K6un^w?zCt|b4%A!3 zE5Q$mxBUgqun}JgenZ^wOVnG$*MZkqFSv8`U04$$KILA_ZxCMut`lDio+MuHKI8-9 zR`3GxbN8dpAU^H^^oxma1)nYcC-`#l;s;S@5Z?*DQ~W;o_u}6@gg78R^ApQuvLVV2IJl8GQ`8N0lal<9wY-uMf_o)Pb(oDz3}CyQSOw}>zP0OJ|rKY)wk7e2%|z4*X?AdeDn@K5Y# zA)W@lQ``@JSbRSC74bX&Lfh(#!9Bx1L7i4S5-r}H#n*!;ix;5r*eq_VuJY$nu+H|^ znksj!%>Oa8%6(IO)*4mr3h`m+l>dqNHt?^-6EWH4aq(8L>^1Sx;D3oX!i2fcZxr0Q z7`&r+!_BJPB=HB}x#Hf*5Q*7mIJeAldce+pz%YHt`xe<9vDX0`M#1 z{BBk51M!{UH8&3KIi?Qhaf{aaP0$_?8jxaTL}t;O3-ta1~@uY(T~?|}iQh2qD+$BC!y z2{(v)z!!?o!Ge<;#s2``EuOkpmHU%;C^mh2N8ABkd(+^a?Wf>;XYo_uy~Tf@igWG7 zW9qBiJaG}66<-HlEPi=fl{;SiJUS&-nr3>HyGVRSW0hmS0OMqCzbc%47?|>>dLVPrMFY#mGCh`5~4Ed_~z&4}{@hjk^ z;;KxQ`-XTL_#*Kyz&{di-vPfBpT4NdJt5vOk27b*)6m)SmiU^Zs$6RG;O0MqHx(a* z0ou{xZy$s7D?aPkDmPR7HuzBSisO)8#JjAhaz}{o1fL;3{P-&OUGa@4RJmKk$DUZ_ z?iWu#8D}?(cRB^H6jVf2YMQ~@~RJc=Ie_EB>P5cw^6!H3}SGn2ZRp7(KkAN46 z_xe_qJ5qcP_$=|#l~wM0;%mXThz~it$~`Rp3;1Pm=ebqxUGYs|_od*@cfjk2cRR1j zZ7#kEyq)-u--h3c$Dd#24i>KhFBPwGL6tjI{0;Dh;>W?)iyycMaaDZm#Z~SB@y4qV z?&94pLAZ-A1rOaaxbtoBhT<(Rt#Vt5XMpR(8(miA#*4SPyvofo^Q)^|TFkTTb7G!T zzg)~S=vRn&zWjM&o*jR+nCHUZE#{f;e-iUN_m9Lpt9^sv!Oc8}eM>RVSl>;|^V27a zc{cjKVxD_GU(7Sj+r&Jte7Trsk)I*vIpY_Ld4~9PVxA9vhnVMpKP=|C-p`A9X7^iS zp2z)(m}hN&ZmZyao}<0Fm}g{<7W4e;>85!R<&l`@Ca1+b6S+ss^Nx=a^DN_UhG_!Oc9o_6uU3OS`l9^e+x^6U01E z_5d-@icO1o4(t*!&v-pU%=23>74vM?8^t_#^-eL*RQ-dP=cT?W=2@tph$o z@(j~$#XO&Mq?l)q&J^=p(Zj?%GjxfV=YgIn=2@TDh=W}0$|J=*Uvj0GXGdNu=DCo+7W2%<$HY9( z@p&=NYJ6MFa~MAn^NhuHw+n9O`H92DJR5OWG0#2RTg)>J4-oUb!h^*;i*TWs=L{|u z^9;ciVxA9px|nDGT_WbWe%Fh6X5TNwJdf}9VxG14nwaP4eIn)=dFyW<+|Tpxb`tY! zyNP0+VOKBanRLx!o;P=pm}klLhYjN2y-SGm^d{=J`j5i+Q%u z5n`TObhemh68%uj^L=g?^X#7Aig`xQV`84U^M;t`>AWxISvf;?3U1>$IG+>qjGIlw zJilf;G0&PADdsscdzj|cA#R$O=f4~v=GiU>ig|8JmzZa=ED`g(m9L9=mdZ*o&q?{N zm}j8eDCYSlzYz26l83}Rm*izJ&m4JM{PxBvOaKhu$g@J$6!RRAFNk@@$ChHA-?6ip zXLC#tr?|Z@z8rkIm}d=KDdsr> zcZhjLz!PHb|Npv}d;8by8r;Br`!^PET@ODLbHDuwV(z8iAm%>#hlsfc{vt8=w?A6U zz3a~ub6@()#N0#vTJg_kWAA-2_cp&v%zee57IRPRSH;}#`UA1wt9iHJe(rm`mY912 z4;OR)+mT}K^*Tk&eOzaYxkqcKnES65#oSx<>tgPkdcK%@qJCdI^lOOEV(w-7h?x77 zJ}>4Tq<3?xVQIi11$Sk+_kV`ycKs=H7;Th`Dd!0b=e+xKPaf29FeTFTpd! z+$V6An0o;JRLuSTek^?E~D|yxj)zhal>73o0$806~)}M>vS>q7z@zngOR zi@8_Qb7Jm;^p2Q&9Hqttw{icXFNnD}(N1FSJ2XnnJ%#oXbHAV&V(tZWpqTsoEE01M zpX0^cpXVGg_ul!DnEUG7Bj%nte-Lv&oOi|C>t@K<;7;yiv!0lH)a)eY{xkcCxwlM< znES?bh`A@skz(%ma)y|Dxm+mbJ}ozjxd+Q#V(zctnDDR26=gAu5f;+jN z$#60ED%n-ceMlyYxyQ(CG4~J2h`Be&GBNl4I91F&JuVb;zmDs~+>7H*G56VcP|Q6v zo)dF_jCaJ`%Yu`K*f!xl6>E#R2gOEW?k};en0rTz7IR;SeZ<`JVTPFdIebOTy&BrZ z+=ro0%sm#46?6ZDGsN5*;X*O@J@~$udm8*q%>4>}CFWiPkBGU?z>8w;A@Hu4`vVM{ z5WbOX`8O1Eo&MHhuEDPpbAA0}G1tP+6LXz=hnQ>F3u3M}|GJoK$-gD$I`K=zTmyc+ znCrXm5_9eL(_*g6eoM?X*KT5PGuKnEE9P41?ZsRNy{DLKoSVd4zkH~eYmsw zX|SgFDlyj!-z?@@;77$==liahYj~^o2=3wf+zrHBd%L@s>uRTqxn_30nCoG)Vy<0X zCg!@-GsRqUda0P}F|QYMt>vv^uA{t1%r%lvh`IjpB{A1Fz9;6o#o9fCo4F=&Q!&>Y z?k471!bxJT6Koc94Pcv?>-+k|T)VeI%yoII#9VXtV=>p${X)#Oa*v3)4(??!*SNhY z=K8gd#9W)U-j{=$A6PZiZ71fMvc1GyFV-UFTCh$r*LfW&<{GZk#ay4YO3bxa*NeHX z>Q`c}nR-mj^-wQ~xz_0&G1oCw?-ks}HA)+bx&CM?G1nH25OZBmgP3b}4is}e&SEjw z+MFcjI-2vvTqARxnCo925OZzIb7HPr`J0$)Qc`;dw{gA624b!y*+tBCBKwND24t?7 z>pK>TxprfPnCmjWCFYuoE5uw+ajTeXC4MdDI*7-`T;uSfnClnb6mxCDuzi9%x$aoAKl@w>`~~9dmubBr(?)%oTHeL7SNC3%bQzU$8{X^#v!0xxV0RG1nJdD(3ov zACZy8aDBmD##mGEu$b!$o-@Y!f;UWqH3k1LbMUZ9vIpx6HWYJx!8T&9FBm1}`hq>h zTwhQx=K6v;Vy-Xf6mxw+LCp09Cz=Lp2Ud!?zTg5e*BAW2^x&V1xxU~YG1nLTLCp09 ze-?9n!QaGOU+{^T>kHPLtZxKwX1r&u+eysz1>?kAUocI~^#unQ*JB>CnClA`in+dE zv6$-%R*1R2;0!U>7kpRD^##|9xxU~oG1nJ7DCYWtKZ?1&;59MV7knt@`hqp4gzw_| zf{n#oU$CQ?>kIY}bA7@7Vy-VZP|WoOono#pSS;rHf)mADUvR#d>kF2#av%- zx0ve-9uaeW!3$!pFL+DrC*w^G?&tb~b;Vp?u$7qW3+l*gI={YPvY6`&W{SDK;2<&A z7j&2&YX^#^2Olry`hp9@Twid#*kQfE?czz`N5zMMUlp$czb}3kTwNdB#`Oj3iMhUD z8!^`x>?Y>=f<47tU$DQJ>kAGQbA3U#nClCU7IS^USz@j)SY>+fbz-hBxI@hK1^0`& zzTjCg*B88Hdho|$t}j?;TKE>OFW6Gd^#!|$xxQc@G1nI~i@CnwU@_MhWW`)xuuRPL z1*eF)zTn$pt}nPs%=HB~in+evmtw9jc!<0f<~W1@DCYWtx5ZpvFsvbHxV~UZG1nLD zBIf#niDIrPm?`F(fJV&;J?v z0mNM6JX6g5>eJ%Wp1?W;@n6BGiJS2MMdH?pm~$fL*^zgN-+2^s%*1Db|7m*kt*yIX za1YON+Fs0ap!OCI+X-`z#UDS7xx3;g!DopZp22zt@z&tG#XNuN88OeU`kR>NWDVOt zy!UkIHy0lc9xd*L{mtV2z&+xhfKL*i1-?Sev$}2;^IWip#5_~%WiikH`bd1|W0>toYF$oIuR1g{jYximRJ zvoB!2hj?AY)qe4q9WcLCd^+Y$oh9a;v8%-McEa3p@j~#uV$OyCqnLXb{)>#bHVJix zFU$>YJNlg}w~P2%q>HKIUEqfK;se3G;!_YGjubyV8S^*9Y2>Rv5Z{LMdx!V{jBh?F zo{w?izld)|-s0v3Hyj217scm*cM^XWytnut_^yM*4X~$IJQjSscw6v=;tjwzh_8n| zzadv+&iEE+f64qjq?gyk#h0pF)%@U|?;yQzB3`;J>I~u`2)n(-Km9%2Bj)+MdGQ>W z9}k9Y$Uv|jC*pG>z9QluN6hs(_Ur?mafyG=NBl;l`5@xdS4z*W74dozZx!+Ah`${1 zw1{U$JSXBz#QhN;5%CETem&YU#P>z~Sj2yf_~nTI8u3RFuW?|>f7Xq7 z8Bc2%Xq==g%J}lx~#79SbPQ>4f__m0DAMtAuuX9l8TXu+eO2jP@9~AL| zh!;h?JmTXbK0V?KBfci$8zR0n;=3chKjOzDekS6VB7QI8k0bv4!Tk1+F82H)_KC-D zFZ}k#Zy)?7;Wrh(di@aw>@6TdF}viKd2 z-$MMl@$12_7rz{SefTZHFOOdVzaoD9_$|h734TlQTZZ3q{Jw_Y5%?X6-%PmO6>Q;jXo{r>nJnS$B3pYgZ=Sp2@q`wp>qNe=)OPeS!zh zEb;W2EwOp4zb-85&K5JHn+sF>^Z86~aZa`;)7V=aH^#N<*33*#OLloCzMh@y?``kz zi;Wt4v&HzjrK`W#o?FuET6=T3zL{{<(jZALr}ef+Hz#*@=h~v{hI|IEjKoELU~)Yt zzbv|%kx4Ixy06%khfhQ=i%tCd^iB1dMg6&A>6<1Oa}9~>agmL_f8R_I9x{4Va(`BT zab7x~?Ja$8ViKwFScNJviB!|mg|3Ed@CkUp!l_-EwuQ4Zg-m{NrhNts_?5g7^W0vV zxYqvO?9!G@TQQdp0mSS2%;IcYW@=YDpKgPfWede@TLE5^D`b~8=J={izOkpT+w3hj zYtI#Fb-7{3K%;a=U%93)pIf@D+^DysP;TIz*WI$LC%7EmF(X|lPRr+W2w4Tplx%Tv zrfp895P5D}x~(fSJJX#>7Z76k+>(||aSo!#oZJk2o|!b&XEJ>>h5;hM=ur!@MSS>@ zJfpWR`qG`5Jbki$0lb74;eKmdSGu<|(}rm6qnW=o3-`TAB28zDt-0RT;Q3zDvaGjl zdak%%u0P+KhM(#y_-LN@^ysvuZQcEa?BWdH4L7B`eK;5Td!{TaW*9uhd{4TMkM-tU z>w+RaV^%s}$V|<2ch4%qd&-TFjB$g3?r(Nvifvu9(#yJYX(TDRVP5+JCggeP?*39d zr{U~Ox_h80Qh8H<4{kIJ^a0xncTm$K3zr@`&$mtP z=*S{7fHggtp2PFK2yuFZE*i4knGjpMGTF|qVsl3e-q40%%q;E8BV?z0W7mrOCDT3) zW=*+vJ&_m%3-|zUHWsGldJDz0PmtcS0j437qiu}^cuEGrlY9$Jr!tDQAR(2!ipGpz zQ<0~pE6gj+n5^cc7j&1Nrb#2x+EVxpV#cyUwlD*s6TOy-`UOqtp3+0+bHPs)2y}5L7Yf|G2YZ%j}3ws*(gP%Mm2a^ntMOhMZBPM?`6 zcI6PCY3Rc!$HZ<|`gEA#!@XgyBYt8^rZd|c8^B|Fvc=eBO178TZ+M)+F|9k(gHN0S zN77gU(17<_HcbU?6#2I;*SE|gQcan-DYMl4g$`@UbRx+i=<9QB-HcE@@cXhGExCO3 zWsS&!(#6cE(zi0^=wbU<1mvu)JTkffd3E)9}9f?y2257Ril-0E=Vz#$4IL0T5*|{ZIUs-L> zc=Y*GVi9uGq=294b4s~@H+tI{N^|n*-hySSx;rPI?L;|Ln6}i{V*1iWB!W`HDA}>l zN=RRlEYD2t?96965v5R+*{w)j_L1TKtUO}}(sWB2b%kX!GK(|F3RoJ1`@Za&TR`wUBzYn zf?zN^y#)0NB;&^3Heb*s5BQI;??WD#+(5iV_K_r}P$8P0Svn^-r8~#kaL8ukN^dYx z!^~$yT~RLQGfsI3YYwwB{k}TUU|CXE&y;jNpJgIN-WAe0V34eUc8B{uhZ)!eYR|O< z2M2%cKq(a}J-*_XPopiS2!;$JgLbSHmrU7sKO-gUgnArTh`K(v&6kB#L%0))Yu(AB zv4kALXK@98QI8r*K8N~kAIc!qxWc_~k=#?*(?%9ba!6!4E90Z?9K^sv@t+9Sz*coXu%egsEuVY+}Coo|i!SYzK2f<4%w zSYc(@Tx4P$ctpm^g=eOhGTJ1@Q(2iV#9aoVRhPIpk4idnTEwgtwA=fTF*EoS!)Ep8 zX_v0%_M%;cx)%LdKGx6z_(h6g}vXM2SMid@Nx)>NZ2>s9(A+N7r zApcaAC;1HBpI1yTu-Bl1(2eR*8u?ySI5oDjk`h`{h>VE6%4_nOLauvpX4WX*9%I;q zXwGIDau+1nCe#Jsv20yi91IeqZItx=J?tw$RV1#i1n0^sbnMXYf>~QWgJJ{S5;N(k z(aX@-L_-9TSq=-0hR`@sU?-nl5hs#hpPfN#A-S5{+m}rm2BW9=ie;!q>9yX-XCjCP ziDOE_0jBT`AG1Q^FSZ5s*U88X=cU{F`%77|w+at^`mMJ9e8xhh!agLwQft@S6f&Gp zfj%gcM+{>8VpgH(ITx3#`uWJIzzUV0kU?05EL??N9m!}@dGIn?R%F(}rM~=4yi4ss z`-nDXcNJBFaA^vCCi4X|T7ps?8C<#_jfs$5dK0FSI3@*oDApM1 z(^6y&1dYsgW}f}*vr0aqOqiIqAQS0H2N!fKlr`q&=rbl4i^y+U`WG;Yl^kV7WeBP` zbc4ke??DtwOhOqO9_(XJ4(qh2%OwKlb|u3&=^@gx7gMi85>}%o)QWpTe~9I#NuNl0 z(EG%XS}CJesV^pZXOd+isnH#+@J=-_^x9cI2QR%P$WYus8dXDsaliT!?O9rhM8nsW zXW{f--3TcVc}crIZ+d$vG{f5)*d>*8TXmx2E4Ppx#%#7tSyqomRByreFqi@RZ&({- zX%^QV```sMo0TiDGC4EjONYp0Dw^Smk2gTc<|))!_Fy1BP|6s}f;KeVLO-;bqvDb7 zo{pBTHKJ8-9K;%Hz_UW@tGlvZZVL@^xiCsqmX5tqOCS2%9YVra{+TR%obe4rg#q7e z?Q47)8hzP?ndZJ?LwC9p--EmGpzfB;BGgIQ4X($0Nx;r6c12nwN0-@z1)+~oGWtb% zH1#Izf|g=(d%Lfsl`2=sElQJ%slGG`ffa5jf`?2|wlO+~uEIEtg^tKJ^ev&F@cl%Q z9O(vrfI>7Hbx@J0Zs2K4!)GRL(e0M5G*aM_vN%!xWZ4rTI|(kxpax6#u>06oPv8n) zn<{$(DFEG^_~uehu&&h=@x5e-bN}KxzS{)qIyx?%(8(Qui zWer>3m_#)f-6(AQL@r6H4WYJQ<`8@i9ABU7_uZ7C!yAtlbH#MG`oD46jjov1tnVLU zPdi(5z6BgY8AV&6km-R9%pXcsNA#HZEMQ5x+oC_4zHPqBjk2Po^p);7y9iao^6GIg zgKO~t{R<8co$KL^zRX1zVy>sx_j1UatTr?mEk4HN%+kJYvm9Q1dguxVQu{!v7&xK@g#E90j zFS{%`!2>8o+();?WOddjkIZN72)#In5_r&h{`6TPaZg3rmMwj2;%OF468oB4Xy(d< zuVo0$NH1WIM{Jtu*%u$mm!hmGWrqGT)TMmFE!{~k?krtkU@3^otwdvjX#rVlH1z2m zk?DcgAX$aJfbyp-4rR&)IP_S^X<;QAfzkUbn=y#uu5~$T%?r@k5IWY{aww{n7L(+W zDWU+w=mDh7c?}8{F}RfLFnv!SYS+0wmg}9FVlXWrb7;$CeR=6x(bdgbg>LmnrAT@~ zL8fI+^YIzoeWlQwTkIG)u9%y^?y?;EhHMza=YpXc$2O#oi%fsM!-4S%*^#f%(2#u% zhf4Jh*+18%}H-#rl=88{TtmXU-z>b1zTDHt*! zrg;koT0J|{73TtU93@tdiQdjHEZ|FnJ#odEBGs3oI$IOkC($Jz5A74He9?*4_0bcm z%jy+ZvorZ3byI|TW(SJGfo*#$6%aAA%+-*0^!K4wgG{ItS7mRg6rz5Nq9vq)z#-Nw zVJCfD+3oXHZ*L5LM+d!bhQa6h1xXg`GhEBgECWWa+8!5z^EDvsyF!vkLDSG!R1^yB zP?l5@!afwez6X$2CQtJ1=pOL>m#Ty#mkVwRE=TdWjNMEa&(8REgtaE@M!8+qDJRo^-gItXyN{8zfM zt+HAlZo#qH-o>cR^7CZW+>7!v+mX$*dpASko3AKme2!ExQV_!3k6(Hx&skFHzY3o- zFq$YA2)UgXp>B+h(Xs+4m~(8z&tC|G7wxD9qpK8+4LFN=HdW~N$SmO$fCccfBxt?E z26_(52Jbg5MSOBu{lGurBdn?t{=1p@!dv?AuGtx+R|GjSc|@_&y&jD2%*jpd%622B zhl|;qLeS#}hJ(S3Oh?)E>|Cx?Bk(WhoRjhoXvpSi)Q*v&FbvwB>By%$>25j7&(1&! zQoRt9E<&#)lVYfI_-Y?M*1sY=1?O|@6{@e8IF8@J_6mG_6h4eyKjHH|T383C$C2CD)qQ0K=_bru>BpCL zgo!Gl?GP+N)76Jo@GrzBrbm{I$b*Z%*0>~o5CT{WHXhrY>W0vJs?4V)Rf5w>_>}E*q!O^EOrIsc68lh1kMj7`&wIj23>RxlO&f0 zLqGK|AextjqU^{P;8pmB!~46ls0Lsd#arQ9f^(Em5aWGUJn9f#Atz;nw7y&QRbDh8 zCd^6~yLx@QH;4KRrYZPIdg!Y0YBXki%`4m8-Pk)f=`{{E``BJGGXftzx|#?ZMJg6ihdEEBvUg6Vr;l^Id~p`Cn+6P7cq*51i(S7NZ_rzLy~}nHBD*+uMDcwybf&Tj+1Gxp#6K zO$UUIqI#Q;sBj%8OK_@~eUCQ}QEM?uqPe}8+u>W!oDYEP6QvFe%JU1<>(Gwk+_C9s zOQW3dmV_<_*Xq+y;?r!Uqx%n;B&-Q}bDN)Q5LzD%>1;QKbwYy#-C)^vYfi|4Gec#( zR6k8(+hPPJ>wlr&Q)3jq)3(|BH+r$y8Nh%?1<%jjV0E7fUDx5WWyF{t4D@Do6z160 zE(H|4J(NQ%9`pJBzG6kxsb7HmP4(TUBqXSy3kF|8>hL$sqXi!remHB$^F7DG%9{(x%~^<^Hx?`O3MpB|Lv zL993W{!(_LvKETB4N@$J&Pc_WN z_l-esfAFVz_$J*ZCg}`CL#L&U^PD8%%qYcMRM1%64$f@uFZT5pF`$MV8?%f+yrLt03Rog8CF^o|YUk9aH8)g5oTVHIQPh52g#1uPdrsk8t! zTVF!>WPz+6*AX^j&JBmFBcpkk3fiyk?GS5Zd*U&uuA#=1yi8HYTY)s0jpu|UY1=nH z+p(SkUfzKv7#zb4`B`Eu#t3{p&QJA5>CXOjC0F%wBi)s!Uj`98k50j?*mwdp#x9qZ z;zVe>)5wQN@=BP{isV|;OQQ8S7JGam$v_)Y3oE;N(lE4MeKok^Erb=Hd`$Q_3l#KMkHg^ra6z9)94HD?_=>5Md*@)%6$iO zp#8!GR8;w{M8={4F}hH$X8G0FtB9mHK`)}Zu_<}jjOO@c8zR`WMTl@%=MbVSec2Bl zL}Qlr6#ow%-Pd2}YVIxOIO^@|(cU$U$UCqsg%edXs1p0^lFtlyJsJ?cldLRFwIN%^ z@+vAGI z{rF0xCLeYzWXa;&`Y7yKDHr?36@`KpAv z5-~iIwLF>47a0?i+&TCb8c&#ugocUFy46`iUD89^j$lCE;3vqV{6=fM3AbJA)UF)n zPR+=qQCsv6hX@^n%&vGVNd0Z=!o(z(HjG1}vnp80#xbS_`5^bg(vV(gy|-X4c&M_5 z5he{*uXQnR1={A(+`5LaWG->JvZspXpn4pAr9F{`>K2PE-`9v*n6j-zp=;#SWi3Kx z4kdMH-Y3tL-%N}f7Ebo{l2Qg2)&43fes-r+Z}Kg<(xVp7lF;FLj^tI78PWU~C#8J( zy%1f@U#*K6K3~dlX7~5{uqc^u4tcx|irpV5A1jS@J#w7)Q&ipPzb(ZcI8P~vG07u7 zFVvaBm2dNfnA)k~Fc&f2qZOl%N3mT7{!UWG~Jh{H5#zv2N*pq?o!wA^?#H8gail}_>$ zOQad3Uib!c>r5LR;xCeL&tgiXjZn(438_5OUY?NnLX>nE1S>ZWW|gr%II6r%gvX*& zrU$h)-+=M6_;SnGyI$5~%dDaNL7!QawUao=QDzX{7Yb{(^*L%Fg{n~HR|9%oD$Cta zez4xoe05F^X*Edz4e)i=<}t>{)oBcbWK_1SyOYA?PFS>n5v*Ed7FZEVN-1ceXnorS^yCDI&@o#d{!Lqvxv}`ZZcbreipkY6mw?c`!xMX57z7S zly_^gmaYEOIb4LpK2=@YbZY-NGaBo6WoH>GhSBP1c93$`Egnay*X@QEiv0_QcV)WK zH;fFkh^kI2GH>LF=(OaF(z-Dt$Bmwds^kDejQKC0neNQCVVRLHV$!w*ZaHe9brUC! z9Sen@K~$)lIAH>^xaCL*zsqo>Sk`$fU7)CI~n?ux{k|(IcQRHx@f4_&~!d8@w!!>FZc? z#g#e@#X=({2d49NW5J7N_5 z5d8|xSghIOukk@X$1LEBCSsR#%n-)dbhyIzbs{E)#wW)BNKJ@IzBj*J3l!z*sYSF? zeMdP)15kOX8$DsvXxh$6udsX!juht%W{2w`0h@&G%PQ)diMcPh} z!|jpuPjq4=lk#CUf-ybo8;o^hMob(H$7d0ZF*d`?QAl=Ki{!Y($5^1E&f-G=Bh>wE znbr_GX-+h*8#T_SAC?T9m{B)+#JKTzOD>NITZra$qb80R%easE%_ReRA?GI5jTt*~ zJY0d;W@*D0wgviIp_6fLBtI)uf+qK6af6wl^*v9m8#Q*^D8%+L=*n}Wt<#nUSO&GzvWI0o2-RQC7Cc@cR&DYC*B!)4AD7~B` z|7?aa2pKPtL$D6dOJ-}KlHb~aHb~v*F|d+OU#WVz?nER!dquMMxCyYV> zafp9;Pnt zU-zS9G>JB{31&=&6}F*WhqTWsQl)EYZRsxK`_fN+mRU;0&7u$RGDp&g@w3bj_0Ooc zDY%p6Y{i$uA6m;7GkCuVs{Zr_=EN%0nSEaZbrq%clLSUDfqhl$0&br?*%_`H*HOKb$wu(Ek-{Bs{R4d|#8I~>j zK)?nmO$V`}BHX2J*Pv@_dC(4acMv-v(8y#*#LXQO#oK4qYft#vVCQAvo-T}C&KZVpy3>2|@FyRCj&bo6XK&jv}E zK@S(Wn3rbq=!58tJ&Zj~(fy@;VH1Sp0TzwOqFV7}h1GTkJ^iTK!dK8uRI&-eJ?$EAIp8k{&Mzf~$_8v4# zqcx_imthx*R?f#lv)HVXX&2_lF5!UKfIH=hzo!o~A-N7Jd7g05qq6C)d zz{)E6B7N^sMd9olc_@_OD@X~*t*wvA-jBd#Xm+6j0!vHo3g#7gTOrwGGkH901eIL& zRwit2qs09}`_T2`JM|K2`Hk4OZIM;v8V*S$Pgay-!R6n5n!@y;4 zwvB_+W_PGgsY(PtOP6QvzIzt~LpHxQc?^Rf1IwDQJ*cmfW2IyC62EO|*xDqqp?qCz zVvKDyquAp67O@m}kQ#m%d#(t6?v*E}lG#8vgftc>rdS=PC7GAia0ir|=nwEyMN8pC6YPBDXE>Cb z_G87-0P_Kb+Ty~1^~35b7`Jv{#wwL1lg@thxd$V3Fy#?bTU+}}Z|XUXZZRz5+jZMw<(-_74Wk(@4z-U%%S!w5r4$L(4 z6WdU=Yg>YE$N!n$#s2?3E<(q(Z)|s9UOrdqBID$BD{@FoO5x-Qs~6GxnS+F2@c(l{ zhX-GB_AK-x$vr*kzQ{2>{oH9NGN8vqmnibnvCnAN57lZk9*RyVKHt$1*|DgA2{#xqKtqmmA}YQ( zsi9zsPw46i!uAZpsXXX;6^A^cVaU~s`EJa@qa5J(?Ev_W8sz+5!cgTpiSBGK0=2)u z@+@+q#ghuBV;gL2U5b%EpAn;bj2$sz zcc=7T*Y=-zst(oqg6te!S6YvUWEVHT%d6St_YkLoLrO4;fi;r|!y2tV4_Z^C+4iz}u6&?GTqbLX&)OUb09 z8qjMRYP#jk^?}{%|3NS9fKj@NO|XJXwff;dwVORhT+y^D?=CLyXW@jV!8)HqZos-J z$8<^_@hP1an2EJ|-+bR(u{n#Hqd5vKPtA9X=PQ;>SMQsT*&wU;%?~>auiiJGn>BL= zVUpv74Lmt-8%C@5&G&szVb{LZ`{r}@6Q{MJko)i5H~&+HG1=ogNZ;=2UH1Q<*k#`; zXraGn^`85zVsY6+=!W8!c=e&%HPj`_S6Kv+)jW8W+~*vKiaqzut5I!bUt~N8O5e8$ z4;X1^2@G4!{HqWcK=EuCBBz)w*T=!&aNjTJsskWHj5wCOmFK^9nA*q32 zKd$mAgWh4Z+V_1aK=p9T|DC=3?ZxO^2=j5|f{Ix;$@DADER2WkD(@v#fM|%zUh^Lf zlzqxr_n;%7p?Om=EDAp!!1@HZV~1N&gQH~j32E&+~VIl+~U*Los>q+Y_rj@D=8;?_`&d*|0f)J z!ND?4A&I8O`+OtQQ`S-CmnaW*4hAL}W6AHJ)AD3b3wE3L2jV4lmeP&-iZv*zS67Y` z%6O2OpJB!koCVWM9QBm*H@^KWejnm#Dy0 zqR`|F89P_PKWrxo{2RxA*cWmJR6JSSdKp*>`;%I@zrennoP<07LyiTpZwuj|F?DP@ z{J-g}5c7k03W1+|z*%Ph6OIwF4^Up|Clz4c=D&5gNX4_EALdgQ7=)YUi$dUYm})`V=nyP;u=uJty1I-Gev#Tmh|9+d7@_P;1mBb`HzKh$)bTP2K@Blk|17q6?h5~v(0!8 ziQ3OB)?Ok0jF!+4wMF6aQ7`5^tf?MkwMo)3i#(+~uNh!~rZU&?eb#C{R2#6_a#BqD zp#iHmSRu}a_3EQ#k|3Y5`e>QeN6Um1!*sm*Xc@n)vYjN8Boi~h4E)5*D+l)8arDuS zlJR*qMnvp7ISvLRq>$0yF&*pww@1s^Jm|6okHOn2Ch-lj@@&9bH0y!z&B6cFp){>p zPlpm`uX$~Rp>AJJ6q@WxXXP&r?H1`a%gyPW!vPrQ!78PWwi zt%}hKp%5zGPve#bY6X=$F?bV9Kq{SE$8F)brQQDT#S7RZn{8>N9s%pSh!G<0l+d?r$?Ktkw}A~9nfchA-EY{LF+_BrJ779N#1I|Ddq79KDbye{NkFClzxPyirxPyg z?7H9c-|vHmbe%eNuJ1YLJ@0vM2Z_&0YAgZ9gFnZWQbyCr_~WdsiFGlgnzMF)qfvt? ztwh0tfO7EyD{)ogW~&7E!+@^g{9lhHl8iWO$sxITffZCFlh9ZQl(Kk`A9fycp^Fz- z{ZG8Wii83wPNC@Np{u%*C$s+%dswAjs;5O;^kQ6J`qcsUGaJGa;%G&W6|MI=Kw)VWXR=M2}G(h zBZ)hAzqm~IWDGTki&te0Y+<^CQ)Bzm70cO6QmvfmeD{BNaTfWcN*L-G!2iqd(n?&A zth;AE%fTJHJx9N5mfU;|Tx@Mrc=4(&sPQdM0LTE!|M;u6&g}=dW{A5|A6&8V7rcNg zff6q0#5DD&e{R2~#=T#d?%s>nd97KCD`<398=(o(Q@D7Y*Pvr$1r7`_l45sn65nbO zGV6UBNPeJW{`0y!PvV%C%of zhp|aFq8D%ex_I*!nE_n9`Rn4%U+^vku2uELo4+pJ`~}SB#h&GhS=8X4PRBXlQKkvSnCMCWR)U&>#!&L#(DEK1p?`XCzMg~LQSHD# zo5?@$LgnEmjyoT?m)&MibawmB+-#I%)^pLj5o8e#qde*}{iAzDa4mv+~2>t zMKAB?Mxzq%EHnL_)xKKYNsN(TXnzZD)645zq9>qt8iT~YL48N$O6WM66oD_zQS1kRk-Dt?nl)V z4Q*e}r+RtOqxyGxPwnq8lj(N-i~dXV?l1;ym#wh00CzedWsg zF-P>N0<(+rmX~W3XF_?Yu&4P^p7@66%9Z!taiQ{ZjrKT=Lg+oUJZfL%pz?-}>)`&D zb?NKt_8dJEy(jvXQcN<4t9IyGzvRE6@O$={v0f+WN$CB;<=we{eX_K($KzQWVGNUL zP0Hj*EiZM=Q92q|0e>r3`n(I~d)(dxPI2nxn92-j8SkBi`a8ibwXETIFT)>!g~g{) z{tW$U5}aJ`xOWy@W7D6(u%1~s6StqNy%VYE-$eXT-nP#2W6yi~|8}-N_Vp#F6zc-_bhRu4tdza4mQLSKu=W|;hFgavU_PRr#Prr=nUDgTK~)Arw(OqkE6 z8vN0}hB5lz9)!z~#=~OI{o{B%)6{g1Pg#g7#vj#1b(&0@@n<&rtM_!#CJ43fn^``n zqb%*kpNkN<2!V?bxCnuZ5V#0|ixBw#Cj^!V@*nvn{NhD|e8#5^|KY-P6W>AvxKADP z^e@s)8Yjftyzwv}Z|4L3aq(KNc|>D}IErfy^IY@Da<19tET3Z=B_8$!LmS6&%^iX| z<`!hcS2KN_V;d>igg_*{=p8}s7lLugu8k7nA%C$+>X-KxeA)0}JRYBm>aKXlfm(-8 zMrL2_hdy;iDI%(s320fhd{}-=y8;O=M+RHz^-_8Z5wO}YZ=lst?K&oHD+=Ah-^#D(*h>H@3I*b} z4I_lwHwD%H#M=&&px8R~PyYI;CN5}0Zhw8gNgBPo6I3$KO5=C2GDj*K9B!p5%dISP z0%Vr@wD>_j5X$18pAyt=lzaHTSopME?g{r#DQH#aS%Y1icYpYlg;#x!+E-iEFDS(PzXKv?8*tD&N#rRe--~rUXp#0h2!gpadOhLZr$; zP>ED!5kMkUPI|;T@gpdl&=5Awe99v1dhFe6zLvJ%Q!B{rLfv1jlS}AJT551F4SRkJ={N+;JUWUbnBIN zq2LhO(eVX$+wf(t(kM+wn02vz*Gs?s*$?IRzGLS7;nTz9b~b(FMcHe+oM77&9NHx} zH8mx^+mqjO?&&IJg`#82(aDkXbK5Ek%tBzFWV_Z0iso@>es7RtI`AAMz|=X$LYV6ZkSKGzrw)u-WknU;y)TSNzbZc@kJL2Q2}T8wsq)HIF5vXaZ8Sh;Mm{Lcohan(4sM z&m$+=Y;yul(t|GuVV&qj^UL_9Y)kOUfA*g;bB%9;xg*rJ`qb>=)!ecWCQ%yyA{~hR zr>s&Ys@Lp-`Bg0wEo#`FZt~V1@VVaP0)K~WTr;+W)@nIi-fJ_NrNjQyGbE?CcAub@ z7Dqg9Bj#y3yVI|!j~<_I6(i{c)%0c>~q=N5{`seIMuD(V$p*nfci z%hHMk)z-}I?g|_$6l%K!b#^&ggq&V;yH5@Y1?^r}>xR(={5$wP3?tR!S8pI%=dg)( z!S(*uW~%vh%^{fIM1EE`7nsIUa@h1(O6jQo)J*C7)wTP)=!bWAvKcu*oM=Wk5G^Dm zI=jZl+8=+J0pyS9B-flQMYQ`|y<1=L0<2n&p3r9ohVAqfgwR~>(dStDbiK;=k<))_ zl{nUa$|H{CcT*2Aq9;@NZ-g1yqEisyBpbopj<359cwH3$$QY22S~idEo6*!8k8 z(4JsNeU>&U4l2Xe3;>%1*BkXEi2PK$7LoEBTBf(h@k`38jrZ0Vm16y8?3*3SpV63Ta!49tR6@X1`H~@?o=)d%#QM6f{=^(V`w9`{t zO)&y<;ZX%?fjd%DJ=sBSHTQUqdSH3v0n6EdMY8r3i?SpyPLhmbP- z1<#H2m}nt6+;Ts_TtB%eq)j+$S)-+<*fn3pz!_HcP1Y=HEU}c zeqCGt;KLr&2NLxoALr@x$zuU0(e8D1ZdeacNLcu<8M$OIS}$oFEZ0pvQcv6k3^jYo9KQp-de*lLYO2nF^R zbrp4JqlI`_2%H)wmZ94}VnkaF>U9D6Y_tdZGq!%+8n?yD&I} z1i(QatGC3G+{yySbA5{a*5@21uVNBpPd|3+7IcCB#f4yxSW?!s!69Imm3sp1{-&yQ zLHWtNQA#;%Q*G#srDO)&+I)Q69xXY2<|P!LHl zV)Kzw{}?`k^i|f3_Quf0@!_NCS5S_ORy{2--eXgcmX||(LpObr59v8<8DX>{mq#10 zqh_>+kBt(-M{|V?Rtd4`V;|!OCAu?Ok&0@u^BExz>bauf2o;4!$?fip(BQ0eD2x4y zva*(?v3jPm96d%GQYsymQYrEAHIbJ)c)fh!V!e!XR>tK#D%8ty%k9)+TS{gkjkN2K zgwr#lxeh)f96oA8$VR}9TG6*~cW(FyP|N;|{YF=5(DmtTkdP-aZWsbH24JKyNS%N? zjgVHw0I|@*8Z<6&v|g_aP|7$Yk6>e?T~35%^h-unSA*g_82C88i)NkRI>EUQ$)iE? zq!5}B0+=Z=wTC`ih@-DJFYyUyz19wpn(PROmocd?(fui3Hou(mvY7 zA~-k7hm>WGV3+h^!(2aSGHn=(?ICKFLs&oQ&cKoM*ZKq9W^IwYKYYy6GP2xpY2Q(V z?&+$N+Y377R`vU4Z7TLa;~YHAt(KeJax0QNPl@Huz9V{azMvEFa;M^c%oz+x2XIa{ z03@&I@yV9Me%?@h%2ti%%@X1G` z%}Alyyz-9zlN1r+{9Tx&=ABi&i}!uW`y@K;lxac}aKpD9CNkk#M&&1DMP6A^SZV?sfoC zj0W-=IQ9TcPM_-OkvqfDoF@J0Z1S9-cSn=wi>4(f1=J*;V72(S%7u|(7gO7 zETU{s)vlhp^rDdev|YLsuoaNqEq@%ZDMsU*{>|BT347mHHp%90s?8Pv4xe&Yp2H|p zS(uA+X(KwsHQ#6jt0vr?LyhMVV13~&tQWw~XjLGT!^@pKTJCN#$!~-|bCxx&GXvwr z98H3ysm7`&x)opPLu%aZZIJhsnP;?>S&p`qSufG+Cw>zE!sgAN1m&?Pjbkt*j#wSo zINh`{T`9wxmH>TMo1uDQ;5%V1O;fIHt;N^koOC68?h3?r{@ZNXYe^) z2zG3B?l6}GevSkWrOE8cV+LST3+!_ycUztPr61pU`OlaiI0Z)=up#sEzCgcS8Yw6* zw4;ppQz87K=y%<6H;Qniu#Bibm`gbSXMrn(rBDNy>?Yh6ugOQ29Q1*rF!|T`l;wpi zJDqCvfR1w*NKQvQUm+WKDMm>&vRw0n914;>Uuh_*o}vgESy*ac?WScAuc=WyUm2rY z+vQUyU9D42fP$FrRx;emjW(>li5~MIw{?VD?zC3gDnTv@fi{QNb#lWe+MUV>d4I!E zQ=E1u2k=REj=5ECzXFAuFiFj=;aHA&zuUaOQq3BrEUxMiJSo<;^)BZs!7r2gLBDL0SfE}3IrMiz!b?qgFdBd9k;V8OP#$=sO|NtvjLt;aCJvu ztIud(eRMvMHygJfXmSs+B6eKKIw#Z)rE?A)F?)sokOq$VCwQ5Zk$MFA?VA? ztZou=djdFSlqP&`2$iS{c9X-a9%}H7M=a_8zj@Zk~ zf8h31JuGbVDL;>FXCqg?)C7E@E-U7CidA*A5j_RSaXS~)2-ZbqMIF4qF3)0;tjhdi zPw-Q5I53*ImD^cyQ$f3CqbDz?5fPuj=RW1$Jf}|)^Nig>shX{?E~Tp2zy`o7+|Ffr zy{$GeO;DMyLb~Z;%Yz)wiqk_BQHqF%rX>k~zcvMH^XMoM zd)>mTlx4XXtbQONNA$xJY>zi)3t@E3mb~o_F`X5zUAx^TI_LY%UG!<%*ubh(ovyoh)xQ`kif!#}?uFUp~Yx8h@kQ=0tnqycaUu2yll z5O1faeRW`do^5rYHt$omt0b7JMCgq2@A(-OCT3uVE5>0#OCGe647RU%xfitxK zT@>nVHFH4))zi4I5tL;)fiu>v*m65T7z(aV$*z_=wEJi-5evGg6V0uZ}N>y%e zTbXFJR^=Qz7C34KS1C(xpI!?9lm+T#&)*SI5KPHpK4+^yhmBt_JKn&VA zETRYTmN;|_rm5M~&ytpc-n(kMMO=VQ>!`l`qBQ+6O`^VIv;xFyltr{EyD?!{^t{j5 z!r(xFcZ0~yVY5^luG8ZcPI`3=Cb|>L&0l||Rk|*EKZcgp&33bx)>d()UCYB#rjS{i zfb~rwi{=b;TLS%Neei8f6<2c26<4OxGc?8kVvb3)D^<2s7#dJksxTqbk_Rw41bqx> z5SF6po}rZ0l%#F70OcuF`Dew{oE5WtXv{cb-gIC_NK>@S1f?9O02?MqYSCcj2!U{} zyTnrWK9))DU!0@xFU?V392*Jv>M$U{L%#B5#B-b`0y>H%9}wqoi^Bk8w$8mOH z0HN3t&v9-6i|wtjIz-w!@qKe{^m%L~;Id#U6!q$TzD&c>YM{@9bI04L+a*`my{mYR zgPm1T!}c{}1}{fj0w0^jD=>ae6AoQ8jM6B!B&1=hTb#KF=3-!53PI$^;f5n|97B7n ztTsB0U=aeZ0P1$)Qt7hZg3c?@>A9-UY*zUJna_E4PaJbRMV}HHEsWlSe7yV;-@DH& zVh}ewan6Z`SY#VsbLjQo=~cC*@#dG@GM0yN+&OD|1R6YTmC|}EEoNx~Xo}Jwiz7Cq zl}?Z*YQsu@vSEy751h7$BO+BfG#WZ{B8j$BV~rU+c*T0lv#>;j`VY_AP0= z90pqeO9xy}mNcBBeHiT8crBB@WZwjiBxL9F)=@Qlmi*v4w|pb&`H3HmY2)>(9--qW zCSKK=BrJy#?K&L=qP<_p=n?19bnt>c`kXW_I1WKUc?fO8 zDF1|wG8eS4$n`m1r7kZg+GxZQCJ>bMxfGil?Z&!>d?fe=#p=5*j%Z$GabBTtX{&H~ zMIk5=F1Qn)aai!>S@^!N3FicH9LP$v(8e|XExz#}cpW8}GI#R+(!6crO0VL>E`a0V z5+j|oL1(SJ>Xk##$9N_HMm~V%&{l#S>y3xl*+>NIp$D234iYVng=lf4ctlGp>Pcb=L;xmmiQHE3e#6K3I@hhNbnx+)t7~8OhL6~N)`j4*jCtn~647{-kwwUE;GqGX zlSsjv4WCe6@W#FJVOO6tn}n!g)4T#2X!{9b9u4AeU`Xvz!g59=u~st+=+~ z6pSir#XA~Ki5pjm;?3;+PHA+R|4glzhTm0E;qE(8fHse!AarOrb?+Uk9+aT|B3-Rz zqsb`ijtA~tE#@Jw^uS%>B%IsPMbq`-{cA}}%na3@ye%2X9=?k>Qf2n`~*xQ6UNI>T1wHMdK1F=(exF66rGJ}mhF_% z%l)NSn#5t%$}Pp!;Aj3!8{t(doL;%oSuL-3YT4dMCF3&8S8Sgnws@gD`*Wki3EABu ztdWx2fSW=X2$0azAx%Sw(=6&Pq-jdktkL` ztU%q*!Q7u9ZJwvv-oqDsT3RD0Sr&Z8(`Lb#Lzor}X{9tMi@kE#SXp7P7}4!9AYn;a zYb5Dn>3U<`8c;clqw+^p%z;kA(?B(V+Fq35bi3Z+eo%{1WyphQNMofX2ht#*Fq=ty zsM^1NEZx*=v)IH*5zhhEN>w@#{rN}4Wbqt`(K#He-R~m(vsVi~&~X6+$&47(7kuiq z`s4bt4fHlf-3l3?{4OtpBYZG$2E+$|VAK;@ zbH?yO7vgm^`Fp6BAcDb#&O+eJbm<9wcS>*?QUtNOZU#DC174O_K2R;cgtfvocFD7j(9qaXFGca>K!Jo@s~(KG|x71Wa&@D;iV!MT#u;OHTZFJJ0F@2C_vciQx-Zr z+#a(J6hnswQJvcr-jb`7&jv-Xyri;F`V=}T!abqoK4@1cH4qst&)0CgsxPdDGTYN3 z+A&EpFH?K25&IUYe_<`QVfuU8Hiq}fyZVlK2EQMEr=-<<+ zb4$5KICt-J#$2KuEFCsa@{IVUm%}^oAnbTn>@PURPL52hHGWtJCNt z$r@=ZMxlqb>oNOt1=PTBWFe!pWzRN2-V&k;WzUm>THOf_?O{RP@+6r5?a>l!mn)U4ua`4}(v6K()m z0XkV%o&}e=IRn@MT33VzfDUYhb8J^bHw(J61CiNR&&e*tPOI8SZDxwJHmf!g>1`M| z=-^6f3mK9PLGnp}05d?&1zvZbTe*^B&1;!Q@lM*vinc1L>2M9^7{pE zaLvOSJEWsrv!&NoY{NLnZ$^KNsT$~?Al5RSH7H}1x7i9W1J_BLLN86(g$VQhEvCz) zVJTm|@t4rjC8owM32M0Fpig=kz@=9)CIRW&>Ua&TT&@{{c4?c|%9zNcj;xD|djipn zQi*%)dzfz66tLvUI8vy!JtCMpiQca?pB2F#$OZuw&3px#OLGLgXdFt4hIqbP5!9d2a(=}e4pVt3(sMQqxk=7A1;*t zOiKA5qJKlvQoo1BeVgy8^;5a`qTlrVIi9+LQ0yq0Uv=MbjxBDb19Q#U4XAVqJ#c z*!38@h!uu|rr6aiIF5o>u^`%HicMm{r4$^=g3BqGhM>RRJQY0Y<|+%QWBx_75EP#@ zB4WLnQhY=$j_(Vco+?2AWt~N&U=^l+CmMld9|4h57b4bYC^hAdSieibU$LMML7aP0 z$Mrn-^uAa%VyU~(X?H}d3-DEYp!5dOS6WK%i|Ku3#JZ3Q_}-wTHT20{dIKd}LgC_w zwVIMuAQ=@e;sX(d+LVZOK0TohZmt8@(z=L}O=8Wt1wkFOv5_o-Y)xZi4IHuFM8Q8} z)FM_=evKVNki^z)QWmhW%Z$KS!Xfc}P+kPV>jKXBAT}AP{HL#yP|t0Y>t0p>A-vcf ztbi&rhI%|OFb%Iw8WpiVL?0i=M|?2hL&VyE7@8~c>wLjiTr+f3TXo${WH?5;n}o=K zwZNt*HfDnbY4j3%BGyNcpEb(nDqV#mjYqnXYhLU!qxpK8Nl;u9?WECGOdl-3)sJE~ zU}Wc&d|;o2^fA?J*98h^pEGnAqcuRjL;yR{jO~?DG}cNpAM@nQ3ULw*F!oPh&6~0$@S5Ty(%%&6RW|7)v#7Cm}@RatkIp%A$u@y1;`swLX33$ z^umZTXPSDj%lIXg_W;+tAH-j^yq_BD*j_2x!35Hl1Wx5kJa)0IrM&9SGZR6URm^%d z5;VaSuK5d6R;z8(m!v&#ra(I4KV2Xp_de|kW1?N+KRrjv@z>p8o+FLK2mJTeLfawx z2F#2{Q92j=SF}%09s5TFF(a>%Zi-j~tmBvg*p`QXjZIU_7Pdhf)gh%N0SxGo0vLu6 zEyB=UCA~`=MW}&>5~=WE0X4{rmSQgb4h89Bl0Z8c8M`(GNeFr=!}Te#AV~%+TeU2s zMg})13SgfeLb4EvtzNqnrF-}2mcI((L@!|cvJBvky$^K4?LMUPeWlB| z$Nr3Qp@UJatRGf$8H~n*FNq>xu zKm^jx;DW;_Cr!C@N|;LtGo{aBpJI{@L}yd<3Pis*DEe!>fxY5tm9*Gi3PbN4%dK#G zCD-^{yfc=t{Dv1gIYiE}Z(g;=jOiH*#47x!inzy?Af0}Oe68CXjBr7fRtM8A!ju7v z3M|9N&`E(6h5(CdB=j3N19s&Y1azCQUycV6`T}SL5Rl9Q3&vnC^MNnH;~I@bxDuDs0jXdKF*iP%i-Qv#TgdR&KLkmVEh_!v46)8gtHQeUb4aSuqpuAvs+3u!TI66aZ|GS4A#{xOb;nlzC^%~^17ABI@x?5wqYWj?$t4WBe8QM z_VY21uwb@D8%v)8(P7|t+@(JG5$bsUF8rvrOx_jRG7Q?Z1&7GCW-GMp($}7d(!wWm zsCBICdX>6(6?{0M;Y$I+Z1Fll2@p((Pc}{YZ99Ts5J7bILI}ZlCkZPe0gA?vIj&{K zS(qS`B4CX?My3)2z2=#8AaEvg!(>RB-HQ7Mw}S&P3h>HUpKfwxH*pKHo8-kmxIL*T zmEb6V!pPTKs{i7oPxef=K&_pun&|g3aRh#Em)vJrGfm-(JEf7ZW^$ROTxQJ_2wSwY zrff26B6Fr5Z*2$0n+Uwug>7Wbq}LLu%m*ML)SzE~<78ftE6a%HV6vv74(|)}0SBtN z+FhjKXI<*>KWsONHU5Wf7F4BVf+xH&Q>iKhJJ=PLicugz!zbTX=8;>Gs!YmLEI3?G zE~zT4A0G%=|qxj9vDCx-y$}Ksh zNcK{>YP)iPK450J?DS5mQ+%K_&njh;3<#X<&!TT3V>MJbbF@Et6_|3!5D%@u;}a&V zhb+(=@R*#*leG?EjBBPIN;Et9?9zsV^&T(k3?H=?wL&)`9trl=A8#O5f4$tP=Yn+h zFcj&!p-2a1I;qDeZ!whV`gr*buzewx?hpd>B&A!_Y~CUK;9F zP`9!rp=mTkLm1+70vJ?~!FjA?qH1w2mhkjs3o;4nFnIu-=952}be3i?ROjX@ z4||%-V0eM;<&itxu+7>JLc#1A-^B-xrt^VTD=f@Lx!Sf~&C4e|1&6$~VOSD@364FX z6x?q#s4U)81qlvl43rYWq~u*E>OMhfFlK49IZbZakQOo7+V}4#e4So;l{m59fqsuD zy-Z6hy+ypL^meI2ONRkm1Fc=i1>#|d9YEmU23$plkz%u`X*WVJZYFr+Bjgj@Gp*tc zpvOK(y6+%TD}th;Q@}v_k`Al@p}tO!#!mSbZkef5_*p$S15jsf0WT zG+0K$Jn|R>*v2aC!t7jQ;+}3LM81_mWNq9jO#qvAo#3ikC#5NA)6%s}?x&a=A=Pa% z^h8qmdr+=C2m=Av7chHps}IM$wGlyeN1$}!Y3Jovw5zek`UT}0KK=#-VPKnY1Velg zVk&x|4b%_iwjP{eJg(z)Z}9O~g}{C74p{ST%9t{6&4i zdF40J5VvwU)~;RG%<##yunAqY>y!5qe6xt-2;*t6!uo<&Bn-y~d>q!5;M682+dw_> zq_zcAPKEHtc0n#3n?PEajerw4^C27e>xKDX)MENTlWCN$##YQXp>R@YE99HXV8Kqo zd;}o{pde;!8B7r}P8sC&UJGfWQkN`T za}8z{ER`JUBn$6)Z|ijVE!bE2aJGzt8>`MYlh7YYTbVJSqsh`V&&)^Md8|%so38gr z`f?W9qNzsmpQl6mB-FLo4&sDt%LH9P%?%0(6j-+2+9MSsRKVtx=v~ z#Q@@gR!k-KrW9(IsPi1M%93~T$|N()_s*X@2gz?tl-};4?p7%MK=B^M z#)_YD-t;CdM{b8{E_9U~GV2)a-+IHLIB9^wr(|NLK#z#5oEc|GEQcAbYLitTjA-ML zI7tPi4_t56O?A88s=oqE3^9}2oeqU{h{wkAat84mM&L=9F1|0e69cVV7c3tj3hv?17ah0UM|Ky2ZLk6(^;ZFX|PNY8;-y>tZT|YTeJ_i^X>i2N2Kz7GW zX@ghw(Z^Bv@CLS+qIj|N-lT1`7DtDrC%|LDzT=e8WNLGzI~V8d6~SeOTFI5O6?M=cnD{=`6K+4!F5rcYEYj zlZ-tn(SNhl15FL07DCv;hx5vkNx?3jd&V;@p~f^+RCo@xy4$_-AAqj~)n1m#1gOs< zn7_yllWXK946yBh z!iug=gF$jg8cR%8rhDtQZ}-Z&xh4$6b>(I34K@k7SU_3lus%2&eKK_{Lld+d+b6Vh zOO$10N@W=|?fHV2HjN_nGvy(uE7S|oDm$hI#F-HP8Zp-*hVS6?53RPt2X#n zDEJUXyGivVK}dJH4oX=WKXcX;O}d=OMFe^yLmp+oxRLwu!8ANv_;p6l%jr zAgoF|U<)NfQGyG0V{$=&yh8}|bKDaoHizi>ML}H$qWzQTl^wvsEFB%T+%D-wF7Utg zG%bQ6A=hVFlBHfet>V=jetgP@ghLtXbb`f^*$-PKPc5o<9x|hX4N+8PRuodI zTR=>?Juk}mAAAiX_BCiOtAP4jq)aN%aLn`x=U)1WI+g5V4)4azK>}N;VV;!FL8FsJ#l6Hu>?Fs3D|- z2YufT=@FQ8LmA0-611uYQ$3jKvs!ONRfqIic?83x^ggK85Y>7ks}%_V9jYyGCSUrE zS6-aw^d`0lzRjI?H3*2hJe*DA;%ZEeZp@!(bXFUhfmHddsmhWl(IZZ%E`&&Xc!J={ zq29B~^>(l(QNO7jW#~Ow#uDyCr{jX`o5>{`R%3W4;Ge+^67*mGvx zAXXnP;%0!f^r^pimIjFitcd1X^a&*MsY{-Xy^riZYob?#Fr66K(Y`w{elbB4_5NAjo6FKR41+Bej!Z<{v zK^T5O!!J&ZZ?ZhfmL1**!3QFlus0BLz^lL%NddUGQH9Wr`L9-hbqn1QpZpF^z+7-V z?JpfA`zkqyh4bkYL-Q>0(gG;Y{OU{8)v;uIR}-3nau0T$=j=&ww`n{8Uph4=+2 zhf}PRR9v?nxl?gn;B!YuY-v1=SweTjJ~Kkm4-iP06Li~kwAm5cYka2VOsGp&t=Rzv zAC`j$xQk2(JRv-B%*EbBdW%fu2L=Ps(!s6-$bJwVwKE=9JS{VR3j>uvfB8c*BAym_ ze=-GHqYCb zxgSK|`YjC{5azB|`xbrpi@)86#u)CcpkZ?guAcS_Eup`@^^=1%!sP8`NmNjuWAwDT zB?_z4G|9Y7OHE;WFc?1x)9}RPgzXNB84pz@ zL0zmX`7*oTQ)C3p{rUtk+D4(SqAn!kqVhm(V1J`fI(F(UPLv2VkPGvboT4sQ57+p= zFd5w{s^%VBi~t5(9g{^}PiUxc zQ%u$PP>jF1#^3Uka3U`8yzv}qE|flz@0&iq&9cr{=eJP@m9dLSYwWu+9RTe7Nm@3B z14F81?aG9!XYKed5Q{~Q!H+_Q9ZP`M8DTcKa_ zQs84J;3a=SZWW#)RD*7dqoc(ri9qGfoAg4a4ejE25Ej|sA(7RpG=hkkC@Jl-=;#dA z5@{IYRUkI5jg0=eKc$F~7)OwHDLh!lZ`BzUxv;8n%X>-w|FkFC=7|BXEa?PBIt+DX zGLBN0bQX2&9`|r=C~BuJb^tF0e}f4WeUd6E1P5|F*&)D!yCIwjo^ap{mMhUEAjH%$ z8L7*)7_l4icboC|y_9ewF7f=n@vSr^&4tn@@_p0iw^`Qt>ijn9pfbP)sc1Mwz!k5= z6DwAnj3;0#j>QuvUulw-6*y%VC-JhFH%S}wJQE;}c%H3g?RmD=KLY-QrB0F<`R40+ zLEl;H`KjJ-xSszSd5!hFGMVQ>>zQpD@=2`If2OR5&$px+j_<(S!t|vz{|Y1oVmhqL zqzuiwn~7nobn4cEN@;S_RtofEf((SmGP@odC++=201rbwI515W0$X;Nq|1SuP%zfr z_}y52ICgy!{r#T@7s5`}12PS^o{Y`zWD5oiY6>~#4dkf;=7Q1sl-#m)D3Ul^1k`Yx z?p%P5si4?r+(QmhL4_@Wn+B|>_Zsj{7BGLHrlAkei@}*OT8(bTVHJQRyO5+e_#{5S zNLfFIUeea+AkDUF^?pIiC(~wPBTQkSk;Ww028p~+o;!dY4!lOAwT>+-znRspBkG9Z%Z zKLRTFui?mzqdHp@C+8@`P?s0^LHn5a_|*^HXdoCb~INKhSv=nEP~5Wy!wQFmk2yz&Lc zd~J0%6ZyB8E?aa%I~2O$yiSp#yI!ll)2X}YO=B*4iI_GY669fQbtT-P4wNWGi{jBA zW4)8#0XR>Ecfk3Z=*TfrUyq3#g51{;`{aave8S6aQi$$|9ZAL{{W4)mlDi-*bZ|dN zLy)EzA)e>~B&I3$03xIJ;Ki6?q`AeW*q}Y};`|y|Tj!gTL*r?F>AEo!Ti6bltt-qp z;f*N=)Sjb-_DWE-NmJz^C#a-*B*N3&V;1a>$>AH`!-g*ypfTNSppE{|^)Y=Hod4*L z@nVcAX}Fv{rn?YJID;et^hfWB@X%+ukuEh&YItb+zx4gvEbDxAe;ajB8M>Rm1{z%& z*4PGwq6MENp?yEz8MN_n;1Ia_NtzD?@9!Fa^qvS0eG-nQxYRVM;i2jO()Vw(tn=0V zZPY_79G+N6yO0`3l58+72m3l3Fwr*rkP@oApb5ues-IHQ9&3KAr?qdrVr7|<21xmO>?32iG1Jm`E8bUzB<2+I;aec=v;kYzENX12|Q~j;&)Oo!N&pKPc2PUHH1gwr0 zyhXPUkYZ4qPmV{;8Yuh-Xzx2fd$*g!#cnxP@YZ}ayOflk%&_H)cLYwE>TM#Y!4{xA zF2whj=8DI(X>R#M!CQ>6rDofPCLXN~OG)gOKX(`O!OOvU2}pf+z=0Uz4EZGKT|w&& zri*2yaPe_`O#Y7?nEbcq<-oxec=>_uv_Lwgt6qJYC7JTyUWj^^bA@H!nB;oB&xSV?!E=98VUNjW`2@y5mj1S_E-l}}C)yRdu zplm1k{4>rnWflWDP$st6_1nLz5noKee!X16{lMq}CxTDwGE8g{gqOH`v zxR7&p+ZgWCn>WsA9%;>z6&=YAmpREWw~;(Vz~O;>i0luBH}epWlEryhoD|3%2}QsT zNC)6b`eV5h{`IbtyWk7f21STbK1h6&IoeXbHGD&)UMSL9@CDOgoC_ph2xU8n8oq!Oh3OD0*ZqfCHX=(+M{JLgB~|GP;skII zUx$7bL=e4Y6X90l79cFF8R-g;;nBYV>8_6hHjNEs#@Lu2$0)sU`LWAYB;m5up8N8qtUNytFV zLC7{jKGl9=F04d;#b&5yhfi52xRuRW)$$R;W%dI;Fel&{r5aPZL{K0^>SG4^P&UyG z@?jC$1ML->0BJDow}?kIdr_|uV?j(B*b-X0e>7mxT(Q*V)orc zntFk-%^TQT=y9E{dpr)kh=6B@Q}Mj$@*LnEzk`~qctQ{sl86Qj$Solgsf&3+N?AUH zyX>Rv*}gA;U|QbTRjD*d3{DO zf0!S^(B{P(F!MJ-%O=ocCiOI)tKJ7)P8dLYtYr^~m`N zOc898$;{zH!}SS8OqgSvEKR`#%5}?K;1j#S5Q$1q@_-uz;2<|-vl6NMFqdr&J`fET z*0M|O8}wm&h|yu!Qu?;nQ}89PU!TLqoBGy$Jto9oVL}Y<9(Blr(f8Gcs+DT6R>&io zeV#JgLGyv`k6?x>bZtaCu8lx%##8q`!fb%%Hoc>FrQ9MDFKz~$K6 ztiLPTqd_S0d!Zmn{aw)xRTaIz+~fCR7LXVAbM!fJ+XU1*UL#R#$+Vx3gEjV}|3nj9x@Bro78pG`dHeRmIgQEcPDlY`D<#HCNLjMi9 zSP_D`4IXizh3LNl?)`YodK(t!9^(?B1Xn(Fq85`|066=L`Dnpo>aPw67PCkG^J=%e z4%<|jGd52D($2mhdQCALD>!4Hqi3u6zC_HTNe zm&L6`9Peb_qmdUiA@3T*!MVYMh*-!X9zew1PHj0N;5CSn+?!YIRc_65YIEQs4l!<2 zNLuS|Qu*+-_~hyxK6%M@pS7S}0 zHmn9PWneP|fEvl2SGD5B3k*Nzv6q|h0#7sr?By1`KnCt$<Zp$)7SkY8NzZ4CNZ z*aSXIC_1pOcnGclIRP(vQ{(V;S~Ybw)&3^HM6?t3Q6e-XI83W5#Ei&?-aps)Jifxy z*?G497n<~~|NqQheH}!Vb+`_F0F(s?R_4|Ud2xdSvw`VGL*KQ& zMQ?tB74EN}WfF7!^)pS?}T?Or&M zhdb;&Uj*8$OoGIcBQcyHPiH6~A=yu2UwKIg!a^V~C_X@E4yYD?#n5(Wr$yl3a};i_B>g^{WUf+{{nfWb|!+P12h7%Vn@ zxIOEq)3hKKcVb##zrU`nVy0Ou+Bypk`=+z`hG}GEIBObF+7_A+S_W#soTJ@-ki@(P zARRC; zAwVU(0)%63^5AikrD@4Q+U@{BYm*0eHIe78FXyn^yN+TY;rF~5=9`{ZKu5>!f=CNT z5i-3Ewt->ncAesae}#Zn1cfYcCqVAE!c6FTNGVKPvvGuv?}g&?6(PI^LVmFazT~czBF~@Rp zXR_2Ipt0+>mLky=rv7;RdedPDg=Y|b+I{BwGdS*u(4#%THQtO#!Mpwht7-(`!3MYW zaE-%AJtzZj{EJ^BDQs4_;Nxg6rY4%z?Nc|v8Ij(udj{Htjpa>jEJy)bW^nVo@it7y zu_^8AruK19Y{#@2)JCrH89ge|PA>R+3~8($v9J{i?x2^u@dEH4qG=6YzPU73oL84*;?bR*4V#83Zf6J>_!4pts;8cD6 z2;v~Yzs1$Yeo1Zq0TKGljm4N~QKGvr0)|P--iA|bu$HS0`cMG@Wff~9$Oj>f6xmG|V^{1Wh#VL=KSltp#*Btd++O(KVxxN-ulkcK5$@wK)kBGuXghm=u@d_+ z!tbGMBupLR{d!cQ_0sSdG2Y2@!J~M>rjWp;ZZ)54R>5v>(5wP$Vcc1>N<=Y(;dLjA zN!IxN*o}xNy-ixfH7|g1#a4?^S54~Je1p0!Fl+2=*66p>X;$oofm18QOmZaK5nGLQ zhAZ}fz5cuEg^$!g|B5p1={D_&z$v(hpv@V0taOFA8D#PX@PoEK$fo6gTN6C4_BvRt zx7XX*=7fI3_Q=)FHayPVgDav2fndqE2l`9~`j`z^ftG0@!)kD0a}o=~?ds)%bk2{B zN3`1&lZImplN|hS&9NUc7+ph4^$eTxHR_{Dgf^R|Lyv*bW}iLZKMb6y$8_i!nCURJ%*8o+E^ump%#yNQrS5kj;dFvTFv3sT&plO{Lln_+Awm@PV7<#bMNS;RNUc)ySc|)xS4s$=MKN9O;8LL3BA}1NE49!Wx zKgvlApFuf)q30}QIZ1aYkrSr~Rwp$S@|xO|Tz`xOS*{JsNvTLfn5umYPk1U-mxF8c zk(=97NP5WYb16v_(-H>KCnh|Qo-vz`zoJitPwW2(*b+Q-4}8HMs;8S>k!qyA(m~9%iF8hoBiiuC$XX1gt-Y05Db9r2xQUkW?-MoJ*1VFbV z-8gKyNcSv)v$|MtI{*i^*L|>t+wv@3_VY5<6^}Du4eWMi=sB-M^0)tmC2vA-p`%r_ z{ufl{zhRp+Q+cRRnd?=T5^HumIB9`a8(hu}*O$g?-OMup6SRDYrMv+~f;mk6inUuL zpBsJA$EYo2Rg$ryoy3*6Z(+0-bB2MO$5Io9dD^uS;+f{+bWO0j$`~DBz=6@3i*mdf zFz`(d&JjBH`!f2^FY!&C6|hUgiHJO0$ge8j@v2LxPh*WfMWoC`pEL(LbfWI#qL5c^ z^Y*>rt$kMre`wb(XZS^#&9KyOsNF!s-e4PCuM^h5ZPmo4zpC!Aq4_!3`A*{89qoUS zk<#A3*W&coX`-iEEsSIc>O!unhQAaI2+o>$KuYL4FJN zAHO{Y?*^U&H2Yz0csnx2enMgS2s3ZRUXBF3^806TW`nupFxQ2VVm+aOYK@5 z+{P`ykBmQfwm)EVxnH(%)%cO|r`q5ZAdG7s4??7>EIGjAR`nlz7qxid+8LapCn3Zl zNf#VERUaUlqCCddXNEQnT|>IKQVkRJw*}=nf()hDiJ71B`ZGcW4f_b7LwIee*hc_< zg=o&FZo$RttDcNq!Qi{p;ge4>gWkSqN0e2Z$+*<9(fE$$GFZaiw=Y_Wc6pRX36>sZ zL0*MgngKnZd2km*4$VySR58~fs6H#qD*MgiL;%j|e%is!bU)?TFar?gZQRUC+e2eu z0EsBR1Rv|_72Z}-X{+Br?l4?$*8e7^pePuLNUMr)k9ih=kTN>%fWsIXDw_snr9MI< z@nVckd)-0Jg|S&2a10t41w+BRFgTDC)31ylhm8 zCXxQD05ij^!VoCKntb6JF!PDco)PHw<2qsH_W+#2y^g)or#|&YGmY?YpG;RaPODlI zZK4>WGXyQTpU&JV$W=Ibw^Cxbbr;N4>yj37@|O_tC{_VmY3xw~a#0uV z0+)Q%>T>vq$4&0EiXaUgrqR8=C?V{HFa@k}+$+pjy6>CfwnymUHfKFbAIWtb zQOsVIyuDbB7L)&a9|I~o<$Bc{Gg-@E8QA7E6NKScCebnh_mQAwo%r~M-l}$C+dOqP z7FegxjLYRBRoSSao^_JB5{3~ZB+QtpT<~wvaopLO1iMdNnt2x30S5v*oDUHkaCbXZ zQ_usb<7UADkjquLGtDViVULD_4r_U}T0YQn5>O3lc><=?EjW`kV2aU1>z%B*YWW#6 znZ<6vZJw#y5Lu+WDJY{!-)pV%9qqflmNOET5kB?1tVbA^#K>Y` zXk>NxZ?adr4oe@<0MJBY0<|!WGNzO&rk!#1)&Go_XXgp>=z%S2F%*-&1P|UB{j0wP zmW3G}ZgGOih?LDv6p%zz;1~%UPNJIP=qe<__B__p_z^BHxU)Wu_kVTg*0C+MH0`tH zR=4A*=y036v3KJbaVKI?q&BQE#KO23w43L4?@LzC$Qh+7tE6(ev}iS?y%xzQ1efJY zs29G4YGF-H6|1<#h~091t7R%_82yyJHJ2=vL)@H(JRmY}tm0nLw*-mMJ3mle<< zZWfg5Z@-r^<9>zsm{$-DQXoF24uQVIR(m79$@Z=IEwMj~Uv7c@Z&=h*_*LvOet|yh z4S1H={|UcH@OOB~_P@q2E9z1zQ@Q>$ne?ER@o3*eh=SUOa*3V3F;U3iYim1VB+elX ztE8RdS8zC#YZ4c*OPW5#Nat!Z<|((%!XUpRLggL93jn0iu;WHUkTYhKz-~Lj1x?<- zOSzsB+-O;MAQ}VaB;CSXKq9e44HhF(Gv~3nME3zviP85Ea4U;QqA$)uOktGvxkyDm z6#~xzh4hS66dSLC@hoG{0a*`OAEIzv^RN;#q9lqvF0M_5ED)l*&1HgGAqcJrEPp&G zoYhiF0d!_Io<8|Q^i?`Ec-GOhN0B%b*B3{J>-qAdHWnx`P8%QSFphnO^Qj(8wcTR* zp-fp{Y?5#QgqssmZb9|=XwXKzL39vDJB)IEi8oytPbzwlwTL8e(qIY z%qzyHD3dWo8uO;pmW6-G;bGUXCESdqEJCs1?777Td!gPu1IRqR4NRRx0c`#b48=sG zV(VnU(0YU^Q`B@$$(7O zB2CqR@+)%ZDW$p5lc#Cu@Dj1*>J6rIv%_6-&!oDyiSNOrw?1W?A72MRlR!%;fYIj# z8u=Z%C=6U>+&@eE&Iee_FEFx2se9KM?Zhh`tO8%&0HRC&gr-I8KD2@YgIkS*2bx^; zjy48fI5!GPU5+#QLuA+cU+5|M1vRSfD6YnEm_$mn92^B4i7RIVeY!@ABed~w+_~J? ze&LhkgE(Bs=p*A*wrq_485~@1#Iq5_V37o=IQj>hPaR_onfgg^GDR7t0wAt~RKF06 zR_Sh>UFd+TTiGZ43BLJI*`dJ!VUyc~(5u@_8; zezc2J`gyr>l25(|43GEtJ(<7{8VIouqDR0AH&AMXaZcnlg>LA}pPw~~UcVzQP%3h; z*d+=!Kd7viszisYmgQr$go?|RG0ITRRZ`0W9X~=E@{Ud$JcY=GcdY(l4=GRJ!qHz zv>0ob`jiici*zQqQz+TF5mWfVn-L&B`}!Jg=VQwe04W4N^wpGTS|ZV9i9}GPXQuCh zjHB~TGJ=o);8y%Eos13E$Ct39J#?Nu7{D0ZGQiSRC~1KUsfJO%eVVMfwj%b0n$ zu(eG@39#|+@(v?M-9E4KJC>J*(?{qUTMB)le_n)HZ3riq#ejdyB#ne4^+|m>VxXiP zZ4MS#f}7iqjZ$BcP9Qx;-A7Ec(HHGTJOjW0etiW|gYfInp@C8fIHA#BB(kOs#*>H~ zvLTV{VP!IIeizyv`$u%atZbMK=fF5pK?5%bj+@>mO}`CLd5hxg0*#>JCjOZJ|0C{Q z;G3%N#{Z;kAlyuV7CQ$TwQBKN9BOMplO};gQ>+5Y6qT*6x_KE&f<XS=X<{A zd%t|XpYP{-aFn=Ih{oU(`%0L6F@J+oXEYqF$M!>8V~Lc= z({m&e$On|JaY{ssM6fO{`N*tWZE`tw{ogGGkA;IbCnC7(c*@MC)vdz6d=6P_!bRFIgA<9 zmNCFJ07z7>tG&^20RCe14nq2mYS}c(S9QupR6r{ihc=G?D+gj0#rA(-Zlm0-C#b%7sRgyen=|t) z*Ie_Im*wLo3(`i}nXpb3^JXlo^8^{M%E=A0ownO%5m4$1!IQ5cV4dhsUnNJD zBPua?k<-R~j}Vrl_|+XhkTBQ1J9t()?&p{5-hDhY$KCuUg?6Dk+!P_a(BGKLI$d-Y z5$Z-h`Qxjz6@8mXTDyOzwkf~p3@M}N6n-mONVu<1SF8?229<&`n0WrM$e)@Sn zzQY_?BmPZknKo`OF%j*IlzixCuVs!%1K`8ScC&~JdX$awbkR%SRO4%wQ8{in73+>c z{JJjLtT{fH662FK9=0gXnY;2Gf0n3~p-RWi1Qr#xI}$uu98Aa_b#G1$ZFek?3}#%q zXa-dX&dI`yh$n)gtIRs{9p5II=9tZIrDF-dtccrH)UEvLj_diw(wO5~o|TSe{F2}f z9-1S{uUH9JYqqbQ9@$UDvfd}R%8E46%`>S~FY1!@wIh06#kdW;FPhDA-70CcprL#; zIv(dOQI*ylYY6C$ZTw0Tw(zWUyv;97c#VhVcv*hOZIln=UguYL?BZ7q+YSP$%XLT9 zELqLbIoi0DD%m=f?6FL;hX{zxL-ya5f;Ge!8@A|i`HriI*BmqXt#sTjiKjW{s;KYr zORrKg>-6g6bkPmekV4FJ@=I16i1iHOWZC}nicH7ooM5KrrnW{W;ZILKbSS-a{!mz} zhD=r}s5@4WhZawu#HOASKai5lhW@vl+xp}itdFD8MQ`yDhY&?K_g@`5VJGX3gRi&A zegG2wZp9^*_IG8AK>w-WeWG_E%4!W8MVk#jz9D_1pq0ig?}CHGKXa~?rUqQox>yo>l90nWeJ#2}VE<9py}Ixbd?RVY+I!*BA#pBp0QBlfm*$GO(WQ`6g1 zCtG1&Oy~~RzJ$1?t_lcgP=j?T z3X2;eK>uFsE%c{c4{r}A3ZRO|1zm27U&*hXrn~NqOW(0f-LAe!{pMF5YE&T4AJ0c= zg#62GXM0?lN$yPpvvM(AxLvYo_X(pZq$%6l5v^&i96id4wqOz1;B&*xDwiY)W%Z9Y zk#$-t6)ZcHZOX+leP)!EMI zZ4v!HJ1CnwQ^Xb66V~rl5-#vj^-<=1t>Q{&?1R+Q4d#ekXbe*WEmrn{KHm^rUq&&c zp_pvu4QW@RxAr}^U~RK7zAnbhW@%N3rts9OAa3-9a(!DU;@a^gWwzLNBYK@DqMxPD zcgEZDK-7LHz(wd z^PEfnA!dSge;NJ`z74Mc=&w)b1@RIh4{w+dDrIwj1TmZDpvJt^x#0k-#c-&Gh&Emn zf&&-=lLy;f?3epJXiSuyN|Dn&#K0vWCVg?4sA{)YsndkoAlTxeqhaCMNa{x_JxdW| zKbuiBt=vv$xlR|+q%88HOkHU&w!U|q{l(`FrQ3`~Rv+qsfy7m5Otr!%kpZbmeHVg! z%^`m3L4uwkdBFb6bB8eak6HW!gW_HG#PF@GN}Ija{#@(p1=_*Zg9t6#69r;Y%4Xkg zKY*3GA+1%-!^imWH3RP{FNlrxKLij&H7Km(xdWk!p3yGX3t$#Qa8$VVAA*x&g`oS7gDADD4@x-z)U63=i`Sao z%uT(F4YJdXn`P~bFcL-IL7>B@i@y5I4y|gqR^<%W&UeD1DhTO|*BXknD0Y3dJd<=H zLpWKPvE}PC?}L(`SFODRRiq`7?}6?Y&gXnWt&OjP=uTKGDAE0(pMesm(#zQD4puI4 zE_xcuN=C*9S(GC{uRc4|Tx+a%)Zk_bQ~4s=AU7Acyxe21{aJ#`yN&UC_>{rf4_~=` zw-k4EuAia?s!yIj-8^(hq>J9DA*fHjj+lsc(#`5|#x3$)8+Qc{cpLnRcIU1oLqjVG zaFu*ulU7tGX-stFVafm+9JZ@Flk*rPLGI0M#KO==9J+*4xidP};@C_lueA^`g$zP< znKX#oVg+Wv{w#G=JkKQwm70*|cz}0knSdP#mBcW`qr}W4rk^*Z;DrDHv??^R-(*K& zM!RT?YFKuWG9my2_t(M0c)IYr#Rg)`7#qrKZj?f;|hMkiE4Ogj*Ix^7(Yw0s7uF5 zgmlNz{0idc;#ui@-HpL?gkDq;OlkP99^gA&;t}mo{$c0`YhnqS@`@LyEqQ>l(zH~UF{T*=I#B3O6u!Ck@7uO*+rPVYZ@y2P$*J&~A;u7_ z5{_o>>L{YuHj+s^Y+Gf?T%U1}Lv>5GFg!>%B*rSh9?qX#QkoPSAAyRqTt8Srz?Y7c zFcxCgnbnPor;rV@)3e|Ure}ego=ce?Qd-mF8+dxAqHg9LE?im0+@{8y8f(33%r^m@ zWwPL2DGrCL=?a0PAd=d?U`4c~#I^ivB3M~H7FYouJ}k3L9?QzEoP2@WMCJUtE@{^s zXQ{~NWEb7tKv!ASU9yXqAJ(}eA_F@48MUv*y`(%`a%uhx&q~J% zelwfv5%v9tEPB~|ck--stmc=k@oOHM;}`r|TjNg`OK?~0+j4XKwh(d5OX6h;rk%@I z^Wq<%Osj3*l`Q(?vx!lc(ebLx6Zx%l1o@?!3sh7&zg9It$)oMeZoFJ-Y_U(naoBdQ zAW+`CLUcn^r(7YpTHEt)2eeO~@6tZ38;|Jd62-R|frezdX!k_|_&6rJx7wpMVGL=A z<)=tRSG1sRSPc@$OdO};dv#6E$By$QuBgW;pI8FpxY%zL|Bj1{wpECCLW|RO?%!VL zJ07n&>UUHs;ETUi5cON79#z*gt1xzDZn5vCzMUx(98#6J<+oOuv2*KuLuQwZ5|+kk zQbfwF3iukoqhg~oErTYi(iP%7?@0%RWcqh{x~PcGrAnmfkEMQ^sR-;%RdiLRqUgrd z(*e!ASDFhiV-EuffoWk8G3d;S82pBJ0c4hl!K1wPh#1H@x9lCY<+O}(ZsU)?!M4&a z#_)0@_?ql@$1^NT-Mp~q>cYa75WQK_6u|x(U*V3uAF2pBV@beTnd}#+{rC&uSR4_k zs4a-S$63c_&NF29h(EVwTcpySb&=s(0qYgj#}Qz|IHaryV*)y;yj2kc zKnV;v5W7t;ny0F-4k1_RmWc|wsdW+tQ??<(5%ZYi6S6}qnGSrJ+j+YiS54+sIfHMEYsDgTy+j(;w+Zu)t5TzYOvF&L`lw7?Pi?vBr; z1|r694{Kavi?#+bOID=LWKQ~2>XS;9e$aivr=w@b4>+P{_z;mFOFNs%oI8!u$dRNM z+ht?*tG6YE^gy~f{iI7isH9AXX`3k$EQplkXjuHT4P7Z-vV&FXYoF>S!j}A;9~rQi zTaB{&PSG~2P9K*V5p2Gxq&TR3zYvg(!yYw6`3z5?95BX{ zuLkBwz3$U0{`>mi0d=ex!` z@YaLc1#(dSySo>8H)zWd@Spn-FuSkyw zjB_>BvBAXp!X`S3`;0Al^4rF=JMQ%{?Jaqbal`}#nmn?j@P)WRs4V*8KVfU~oS%zr zY*%9~g-B+5HuDu@at+S-&}ux%L0mETZYxd`iB`Pwz(T@b>9} zTC{Y%cQ3wgl_E4#qmUQN1nmi6JOGeH(NJ0l`RfNE`}TC#iWlgtSgUpMS^hrA31{Lm z&pp<++%&o2OuGN=^Q$atpf-FJbx0Yxt1DFNIOjsax6PU5YoC?1i#3d0^AVYYHz`Jg zjoXQ}CMN+TP?OWk=5slzy!ggMq3u*47L8gfhCvc!P6-ZEiF zXEM(U4{(;7r{BlQKY_ws4od2BQu2GIW{qjQaSCCN<*U=!ZC?e5kunf?t8Y>h# z&O}>X%V(20gN;oAb)8b0{1y8_&OXM_I@{1E;^-7)_F^eO4ps2kQwb}h&vjaG3()O~ z^G)ccQVUHP|H5kZb84o4tPZ{=b>94z7i-Ob%(30in)lFzQ~2A>XZiaR=XWOD_c_5z zmzyRx+&BHd`~FpyHBjAOMIBOxn&l>)5z!qT<^5m+;^ilIUatQUHj_7lvc++%PvglI*=a6fsi3A>W_Gs#czXG=aQ zA$4#)N{Hca64T$l_yJrettJKoG9YxlaEAXPTF#aGc*X0(b0iVSTm;*jdLabX`as;6)9OYI!#k|#eC0cH^Mb@o$iQH;;P*n14 zJ_+)WFA4Iv97(eADYx!8>KvgFo0pK((YoUh^60&8C4!ao*^0(56DEXxhHpj{FBXIq z?^4bRy#?@C*0aA`9dJu?bR8$b!=h)OHlSrTt zi{DJxWswGMDNOyrTrqOQCf|T#{{^&wTsaM|$+9)voz`Vv?)a{||4x@E^hG%`?mIiX z@LGi9%qRKwLOv2NSi6(6BjbzdOx;{=KOl|q{C{MZn|Pp6%dHo@k#Q5B0kV$dPf}&V zeV?)>`=&Wk`o8(U=>4lKYoNNmiaMkWbCDhWgm`63xgiVs-Tz0ZPgeD5fh(}#~ z@e9C_3A;?KALBpZ=))`Q*I(ZNxTVmEkd;BjX{@Li^g~%qz5s6A)V*|saiERjxkHH# zKhI@{(umBt?*2Nj>7skeghkaZ9OD%#xV2h)+gH)C$*t|5F7JV#D`m2|e~6o|{QoJ6mml}QvmO~ky5b`n9+`Ht5}k1QjsSbI<#j1jZvm*L~T?}7Dd&p3aN9D~L#qW|vgkO#z^!lah8rf6VPP4Am9Go|Hj@LbdYAb&pw(NL2Lb4)$q1 zRpqq)QgTQEqQo^Mr2j%y;Sfy{3Rm#vLP;S9X|Kj-gisnb3P-?(QyG!(sn0az;Av9q zJm-XT>bQmrhQ|s+wbS6b-qS!@l+)qM1fDv8x&C-tapl5^i~iXbmtyD>5))=2ZdT0} zDMg8gh-gNSoJcQ5yt3&LYY~h4>FBk_wG2D*&@Hy;bf0VEoy`;r3kQ-qM?j?Z)6{uk z{Z45G+EO0j(|WjuhxAyBaMfOo%Uumy{|%Flv&9Da5(7pNA zISv~}WhC<pASAWSAydT-WR}%A6$8lUai&xHc}AhE}vKJ=%Bx9&M=hd6D##c82u8 z_5(^6zxMQ#poQ55HEG zm~>*OHXXV#T^`O~>`9A^-ezSF3=VDElvBA-<>We(Txvn|bN;D~`!}xIphQKtykN(l z-z8S>GqKmJ*osUn*DFa|rD9L)6I-cbM`U7UQW4znOFfpq}}_x zv_Tv!$PAd=PvEL&$AJhKAhJ~YG>@`Y*P^Dteid@#_)Cc^?r>H1yvKA5h5Xl6; z2MN8@DMCi#oAPvoI6`)3JyOb?!Au=x6W0VD*|#sGPDc2ZM0aFPz=b3-qY#y?a<=(L zv9+#}^&b0&TF-45CiuS7b(h$JP#dfFibk@61scL!o2eNMXep&g)647Iub6D4!ts8m zK7F|FG$eqv>BHd(B7il1J0e)Jmo9smlC!xFo+8}RMJ1(1*OQ_EYbqwcK)CP5P$CFG zsEo8ARsR>65yU9FZFE3;TgtvpT962oq!CT-5g{xDV*Hq-J&;NXboByTxzb!OBD{kI z8VvS~rIeidCQE(VJ}igqM@Gt&dkg2!D9IIk>k-`m;j&T&w9~L?4}+~Vq!(-tA(Upm zXk)hrD{m?(o9__E6lGz(pv01T#23-H*G^U{)F^tyGi- zE%3a8?BcyzM+qta)dQ(#>r1HnywVY&QHzPLY&vg1BKFfLDYi=plTk=dEo@jSC&79d68wN=0JbY# zwBrQPo{FJCs$Bg5AOPD6%-fUV1wk2ROdYR|i@q&+fV|R@41|A06_P1@82VKt=%-+_ z%ro?h3lX?Gq0b3YL7o9lkZ0(n37-0!Fol0~t6g`k)A)$PlYv79IW!lw=Mr3Q{FUyA z9-wl2g7tE7yD3Y)qlGYM?~2Zn*DBCoOHb!()rh5XlJe!YAFt z=(lxo`A*z2$SCv(N08<#2ILwcateX4;TetB5gej`Qt0`$ozevfoZje zRVODry*pI_Zd0sJ`ghogzrm9^@xMqKB#T{gh#Cu^f5{Aj_cq*d5?DsV9Vgp^UqgOv zOP*TY$K|YU^~rit(qnxgY=6K&%tjzGW(=lA>D2MI=;&bMyV#HPDF&CX zJWz5{469e~`ds%B^fi2rtFn6oB`1SGec?vicwDAA+;j$>;l7}s^Mo-LXy7w$K^Bga z#I}fa<9E95^QzU33HtAyaKw=aWUDryO7!tT-}ksttLbAg6=WPjy*wmWnT9UbOF+8; zIr@69v}Fjymvm7H<$l@OZ#gzI`~962xkzbg2sfbkkkfEPf}5DksmF}oL>bs&7A=op zM?jw|f=ogfJ5H@!%v@tV$!?;85~0wGq^USl}n{4lMME)SLAl8 zK^Fk0F0n1?ni^z8)oh%Wvo2|&l$6DO|1!>83^1411MF41az5X~XIZxK!|Z}HTiM-# ze7kY_R;I|58Xpm^eL*ZGv>W?kB1_o!s!P`Xz=sG*HY~+7j@x+X=d3SNF#Df0O7WMS z&B2Xwhg0VtLMpS4Ed>h2}HEAP{Lae zXmLlhg-**ckXRJf{5Lc#-Uw#2AG?To&HgiygB@g35ZfI|1h@Uod=asx{l4_&rK)kU z;oaB?jh@rypI}d&rEEhO6CW3`-dcnoIdYheql7YuQ@Qqn5^0~z=UION{o}%OziRcr z1A-cs;vIDcHcM1@V;7+e5n@%ypv8vA%k4|5Lh}W-IswpwIR`?loQoYFRo_ z*I-t)MfEv4NI4N#15nBfa>R^`@yR?1zGe&|Dpj`8OWno;J^7C{m(la2N{tHDwzD|~ zagU6B9lQsJG71r!xikEYnKo=qJ$oBv9R^h_x(beQJ@LIFO&!vg6l1#~Z$h_mDdo2N z3)Q;sA%;M?`i%J&PtPBQ9>Qk#@AnR-k$E|~jNIgwI>kQFamKeEk(DNNsTljgw1}=` z#m(f@0^K?n`^z0k(0oyAgVdruqdgbV_8OjrB;J8iSZUq5q4uVhdXLz*7)xtxTpntl z57i!s*x#qr`{?bup!m6#8}hu#>QKfMWvC(j|u2D%|CYS(2-EU zsu%5egeno0M)o^%}4V!I#nPv3tScc!yseAwf!8N+D^_4JINXc1&gmqo9k zsk<TJ`4W+}>2yJ4G!ojqlt7Cc=@)QN$S11R$tm8>$$|2MD8}f^K0k zx>L-h&s;(ox6jXDTow-8o{)Z?cz*Wn|JZc>9I+paUa05E;W}RR;vy%SX6TXMp*A@; zE*D#yDPo%BN%zonEf)fZ=;CM#oML@mCR7`2K1sop)n`qnSqb;EI$TZPWZNfK(N&Yl>5sf(_s`lKH^6FQB# zf`7_!{l2m0(X6q(KUV8?<;mYtckiNa5a8kw;G+D+b5E-(PI<-CJjAX}vFv)Qn#1yL=Xg5ofWOsvs=&{Liip;#2%{3|GVvFuv<3!dn1-qrNGG>c#v4qV%YdVuj zD+oNVRN|v%Y@m)wdK&s z7pxOsF5$$~vQR}^bPUBP3@Xe1NKTQa#VrPEj6ij`%&%eI;N4<%Tibmwvaom~pwrEnEB) zDpr+=J!ZnHvKBA}!m6^z2%D8bWj%AzcB?Mqe&YLVSBItdUZ#q0vXGVhgC}4vh6WS{-D;Tf`r9p zSV8@tsM1aFw+jGdLOlh<|Fv4J%WUbGnG@=>c_j#L=gGbdLUE#J2 z55kECuHQaYjssi!)Jf)}Tpq-R)H8u`^YPTg1$%8u;IbPNPNxebG_8lfiwCbqjKQQ3 zq?#Ktct3&RnSeqJp*2JSKbt_X)ZKSY`vL@^^Lg}Wmr@kqQ_QJ!i0eSoqNL-|F{kNL>(ca7Q89+Pg2&)nN`eX zc9kg5lfr4Hz+_PVceaqIUM^4ibiuo0p2S46Ews+w5w6&J8+W;l|jiKCDG58hI z;| z90oW0ewKCqW{i6D$0JnhS%fx)b7XAa%^r_K9p_>py4Qv9NB~?<$O#MqB_vnXnlEG% zt#p{20l9F6vU{;FD=f;-A9t z8tUiTVv8^zub^kUSHaG9l#10jcum0B?k$z~cCVtLw|hPEMxHY3>6K@@*M#BTaw|4u zJ!hF;XPA!~D|U`N+q}2tn)J+WWc(5c31{sS`XHKBO9jcYr>ISkuUlFH~-ck&eNpyM64rySsBaWTh+A;^mo=*yB>ZUxX}@**d477SG=$o%lL~aVKBHN z2HsPrhV@_WBqzG%=E$wMN{Cu2N%i=Tu=dFya}cF##6J8medc;BRh5{segnzY<+vqL za(?lpUYp?37s7DRuLV9_Up(JoEW|%4*B~KNCdE7mJmp|WK*q>$?Mx2>I#81HX^ihN zyDt$fvC}BHB;y{-gCdu?LnxbO*%uRu&$$E%i5I4C!_v|A+lPx0PP8TN6r~+G!teQ| z9NS!O@U~Sg6t_u&sU;l4cEEfp3q+X1+U;Nf z)#&*c(&Xd3O|nM|g?oy~d7}suOmesy|BGi%Ch?kDt*Y zb?Hu=vl`wBt)X;GI*H5JE2Zq=wwOoAk2TDuvUKPh8ZB{oU28CY4mVBGolTib&d4NE ztD~mO{B(4ra&gDvk(qCBR%tt*1WlSllWe%oQ&nc%Wk{9q%J8RAP!h%@|60-rxv4#^ zic~JXr8KYc{x29=it$P@mMwAf>e)p^%3(BopQ%@Jcd-w}D=ZRO>r3RD@gzr*+)>Rf zhL3}Wg=g8Ko`!{I+G1n4raI~C-$XA(Dcy>h_qlEUvlOEmh8=RF>#eNfMX=lW#$si) zLXCiI8)4q;h>qDHXGHokuXL%<5gjB#EQNOYEwahdme6SRK1MVge6C;{ORld-t;xM$ zLwb$Re@=(m{a%Wdi89V(1VZ`~W-nl!7<2CcX5ZYfkVf7}H)I3KQXieJnbW<+86Aen zB3#lr(jC#SABoY}lXILhao@0z=3^$b5W$@2(1wMh2gT$K4rCGH5u-twYEPFF|6GpS zxv638UJ<+Exb}MG$k;~{yLe}y#CtVua5wvlBwxG#bmCd~{yEn326?vm$Mjf~8i3{O z<=_N$#`JMOzd&S(qQms5V}(7ihY~<%x_H3fFBa7i<*Hhg^BbR%*or4s@o+UNVwhzv zlTO*hw0(BWMq0}l$CebjS@J=Ycndn2sVL%V`ZaOM-|;hWe`kWfi%SzAqe8T{hguI_ z7~1~{{5z1GRpe!C1THE%67p&aM(U4t5e1Ed;Y&xyV88tku%dm6msoj*Inh_V&|Wmtm6<^C#PFa2E}{a8PPcabPfO=7O1}XK=zi> z-_cOUkOSrr67p%!Ds<)eS0G2QxRG)>SFjRue0yXTTutk!lqRsBvT_RtKO4*pk21Lz z%+7+LLH6dv;Azl-eTgO;RGrDTLpIy(ryz8m_BCyd9V@b;6J^t_pg3bc1Qn4SkQezE z25e8nw7YU2(aFvh9*XPn7v-3pI3BxnoVHB9x&My0f1zN-H?0POA}g_{FXHp}H&!)_ zRY-dYEs|=*2>PE+;JePvb|#!W24s$GjA3B(x-M8jYOMLh>KcbtW|c$|bLr+bEYg}o4j@_&W*E2Rl%%!RY*Mkcz zJD8>;^Q*Cp6#wM7`N3u2b9US9lb3y>p66hqplMU=%!Du9)EYZw9jje##{wbOu>rMB zNZe>~8E0MnhV1@1DaX3+5Fy)OgttQ`hb{Vzkq9GHU8aN)2G|?9h^Be&XQbxv-{!T& zCIR@%A*Yd=KB-62N$I(Dm?p>f95Uz`bB^fTOhN<4;t{vYM8dD*f9iLXqx7fPOv@1Yfds zaq)z{uX{>qL2PewlceC>bn{e6ojpm9wUSCr<-YU`v91>#qD*tiRYx^o9heQkklJt0 z)(+kkue8O^T_>=~#PI%nDdU&`o@$lhTH*ZI+e3)%gllJ%lyDT>&1V)i9-kH#*Tomo zK8Kj;F0M=aPxYmrjg6NP38fHE3wDIsDV34IGKDGUGdMLm%vH#poWWG96k4&ua{D_x z`hc5tkO?cLfd29yz4!%1vw>(!5e7DL#@@NfIP5P zNU^>eL_va&*;^7d_6glsW(d`GL~5T(ial*%hwE!s6#y&JF<+?m5L56Z-7ZkZ$s_iz z4_#MAnw=k3xvreu%$#fw*B1Pw_ve85c}BA{bzwgReBe5j0zRm6o!V~!e5L^TOaT?I zM$ZaX9EcXyxz238{V4g39ec-Ep3l!8<4Y8jiASIrv=95%TH*3^8#Yp`*utM!k-l_G z#jCEnL@kD*Tz4HKqY*z$xGi@EWPftAM(!ehh>_pOxM&~B$bak`|35t=-x9JPkO{y( zqJR$N0r>+i-c;OSKpK)k2f9MbNE?5jhR94OmR)YDcsW*-C^!nPz1VeM+@Tl#6fxb# z)TQE?U{nIj?|gaAmx(?jRNETV3ziGHhdIZd;?pKIrrR)szJg*G>HVOG1K>wx=z<{tiML`PA&7ue+Z5m35KeP4t_j+PY+AOP zBi0s6ikG9Y)%wW+Ej9kbQ0*>UOUte0t!j3s{f)48Y_*0>@By!2Ik%v4HQGYTkd4N8 zDo5T>YGo@0*P@8N7H5QEES|e!9T9vfM<9^ZzJ$}|j)rD@%Hw8uFF5s%*t-qiN-xzq z0^?iKEp3DBA!ajCz+Faq_);iew*KOlFdnw^uV%Miy%yOtalorUd?;~yt^-~?IpYR+ zQ&_na9@^L`o}533bz#BZt`wIO1u~v2!B-I&+9+p4I59ozM7Z7b1C8Vf4vCTJk=!qe z`{Pbr_I8+FkY6&rLgSkmJOVu^ro;YR#QqdwgCl%TNasTd{~`Q7<2hL@wY#Rh%*aCV z1Z2M&8sDbvlkN`=p{CgS9^LPz``6R`19V@NX;U4qc*@lzw3CQl-C`E&>$V??&WLEw z22nOweXkbJ&G_rs$0XB0`o5WB&Ay-KZR{3*$}h!U3nixFOd7Y%G#JMp!4@u@ZIV7> z-x*2F&O0PCFWYsguiJLW)p!cS64BZiVl_b3iBQ&QGfRarVuV=?GDgZ*cBIEwc25u1 z;{8lgi|g#f4Ev#^cnVu`o$3x9aWy_8o%_l=V?UI-Q7vS85*r%Uo>u)zUBU3nu&GsD zov6tjHoS40!zSLi4;!|e9$CYN>*k$wDG!+Nba)v^5eoQCPC56$t<=lMAkNBv)RK$- z&l|uFnOl#oN=>1p77?|MVJL73)A$M7WWcR7{=i{7$v%_4gTtrAs|`1erl1zJ#$8Qq zys9z7$wPGLM(IQHLzN`h(Z>0QKWhysT9FEqU{FrPwJJCWAXug82llCO|LNk(A3pq~b>J;_rcdK>mG6p-3^<2OrI!W_m|g`wR%# zXP@Ddo{D9kS*bo>tP>Db)T=uX zd(mE{0V5SxEZ8B_eMjpl*vM)?lz}B%9tPnBv(DZ z2T@Ex#yCV6&rb+i^K(h=NcD1BZ;e!^HBw@%!rpF-y2a!Gb!dwUI> zU59u$# zxYEXN1sYXez4P{6rW%HMHL>{KIe617Ff}d%TJ?IC^dk|idbMg#I+~AmD^)#WB2b`H zGgn9SQ4x5EpaBi#_SmJ7#4Pr~)$D^;EbNJ$k-HBVsoZ@Kso0d=2LWvKn;W4AE9mew zAlu{+QIt!o6IV*vU>%vVs}ogUy6n>rE4#%)`hYh=41;yas?cI9g2>V~RUkbkn5c*) zMZe)|D}W9Ub%4?S7fyNxJ~8&m3O;>MD!&>-?jYd`$+Aw&P{Q1B7NTLEm>^klVxFxK zjZno?f@t)@vKVI3dw4m6NJJ9;+|_3y5{Ch}%qd%)n4Nz}K|2N&z$&N~Czb+t)pGpe z?-;*6B6Xw(SA-K2^CJ~6Mn_{3Z#_cwu_e_NuPj+W)S{?(Uqdh>wvv@(N(97K5xm3# zgKAwMu`B1BuxquvGZrT-b1>X>CgwflEjZJGzTUAhQjfz+5h331U}>*lm#4=!H(oK zVFRmGiR?wQvCynhJZ)jNyqQ@vYXoZi`zJG!_J`HjlKiKM_sKrEOiA9TnVhPEa>oQd z_Sy#mM!r^Ec`}SKzz8>`0I)k5X2Q%2};V}0?r?a^W2t@7nA6ix7bUOJ&O`BQR-YNwA4-MFJ% zktf@YB^L;d%wHC%FeHZ~xAhgx20u68^FL5AEO0iKkzTh5pvijV z&~^*0N@!XrWf!M5_oVp(Hnd1afwDApx*B!akrtzdXA1*qYp7W1YPwB6=sw}+x*EU3 zOSkuIx2sWX$HIM@C3H=%M{o)Uj_zU~@CF*hrn_XyWWk(j@S62Lu zH!A5pz=XVDY(lT`I~y*}F9>V@Bf1U)E|>mQxNE<`j7MsB zrDj&^m$EWmM2^YQp@LYE(V+q=iw@ODwKR@ac0| zrw$d3a@>s#7{FIYWer)KZyx5@hCcxc}isu$PwCAd| zXQ>zMtj^foxM0D%3Lat)P!5cH5nG?x(Ova*HjY;|PQvl*o4^y4kt6!>?f;*T!v7CL zkh&`ViDStSG#v&D{HjjOL;MnA@AQ{sX|~JKoDBvLLZhh+W~wL9d;|KYCT+Ca=qwk} zm8m%IEM}Cz5tg;9<$}`q_eVmyXGo6?$Com3NAqAB@k_>9Z0cOgfZHOjz<~%X;loMS z>aK))RDh{SWc30PSrb~I{+8nq;lgAbu}1ToXXPu%dPEMcS4rywRgn+LR#KFKL`Y=> z$G_)WhA2|{!f;~wDr%5JUwO@jo7QeDx+Jr8V^QG$Twh}T0-=h3{l!eY8n=2bqitR% zSWkUvo3{+=LVZn}cUHcLR0($;vWC#mNWC+1h74vo?)EeeseH-A92^j5bn~K+V zv6PrL)-MuOtTz=P_%gI;M8LRHeJq1$T#T}2b?sZ>);DpAl1iOm8aG+w;Rs8^?u&`= zSA2_yn}_S}Ygzy4&A!TOoQrn)mem!fx$K7Z4P8Ws+wYWz{F98QV>@j%;r?vUUF$JE zp}}%Q!XbJs^{z-k{+R2t?@5_7-+J}C(JNtmgr;i4`ZV`NiLn(hPm$aJ+#+1P-)LV* z8K!r6mF%2g#al?()V_dfAch9GTNI$WBv<9YP$vP7g}_kQvU1@K48 zHkfGitQ2%#(1hKNaP4OhX&mAFC89~2f9@dU3F!`esM%->@5VWraTK#8hCI)XSe&1F3W zJKBSf*%y}U)c88koMsE zS$s{MDS}zZDjg?J_Bq=fvtG8Civ(^DONLjEEjpOjGH5DX@=i+Q(FX(spdTs8>)u)r zL&ga+H(9hGyBWuC7oG%eYvxd3 z+scOEOiv5uiRqWGg=*p3LbTIZ1zQiM7Fy9@8f^c<*;$(9jH!omP zF)#?Hn{thXxUMW4Bn)sw2gD$e;f(KX8V#Mru`!q_Q-7!>$W zZh_g@`>ewLZCnS)V`9l+Osa_v-(Q%bh6`54W>#EY7OO$YY$8gY3!H6(zHQzJTpL?L z`lW7YdTi>6s$Is>s&<7VaXOoZ@=(4Fl(4-(wD%k5V44|PLTZ-a*byzM(Cqz|2Aph6 z(Z0*XUMk2pXk52H-x)<3L-aB--vnP3dCA88uloLqL@^QfBnYW;7sJ)Dg1wCF3y~Fub9G5io4@ zQH_Uq?k(9Htv8S1_v)cW0 z=ovDR*U3YT<0+J$E!?znKINk2Q$$ZR}2UtFs>CORfNCPi5ZrJ}YCDgbq zZG*+N;k#5~oGYX;(;m<{3hr8@j9F%n+0QqYTk+j;ex44nl952LU|X}_p2`q1c4MC- za}jQrpdyG=Zjsb9_sigMNN~Wh{8-F5$^2I^kFLiDZJ0wd0isKWtW0;@*fJ|IcaFfs zcb3Sy7oh2Cbg3EVDB*ZR6AQ=*t#oEbo$|MiPmI?n;UYbHno}}9#$vii3!Lbb7`nIL z_>C2VHK^!mK+^rj3M;0V8(rYE302L36DL&Zfzu{dk#VAmER)DG$x$OYuCa2|sE=pM z$FnaY$1JI8mV`VKQsjw(y0lm2ECo_Z=69g8$=6aTu3WaLicUlJlIU`Y_DaGTRxMsB zFeKkXID{7v#O)@C_CvetuFDkB@j9a zO0Z+*@ilyQ3OoeYhAr^}CqzfY4_t-EjE2wV#KxpVzSn7d{mny2t$ubw%uyG=IM3Ve z7yVBVdG+zo8;8=VcaFF~`=fA}>r~i*;7n&J5)X%B>LkG@HUuf&SgCdol%dxVcU0G! z{l>K&vSR;vB>IMh8}Ad-Df+K!6e_zbdSb)IdV)656%(%QrjYimF^6epABHSMnL3Cy zUy_biOASvk0%z_!G9^l@J^+`7M26s0*()W7Layqf2w!VYs~)bD9Ey4@hYptAmb{zzkZS|>c)Z0buE5lBNIu91;;}dB zT62Yc2!a8*No27l8!}1UlB9LFbI5iAd41C|RJP;{NxS9>j9OBpGHN+BW7Kl0Y1C3& z4P%NY(+HtzC66_8<+bjHwl+22vVu9)A+|857ARYonKoWxAJPHN>Un-#Yc9z&pp^nt10xxyBbXdD!3L~ap$sY59ds$iW~#iD;+5IjtIf-28kjXX?aOZ`z0Lea|g$=c)ECntisVQt%UC=Fyb zP!z*-3bFt~RSvF7L0U5;cPKH56*ZU=MyL`xOlA#|=do4B-DD=#XBWxEsUTXIUq&1* z9}|EjbiuMAiiDAnH1Zd(W;-fO%=dmRX z+1`k3P`^?^IUsLKgDK#sFcG;nh2l#}ZLUUd1Ia5UX03Zm z0XKgA3K&^CgkG}Lncl$=my*ers>7_vWvC6oa+p{mh69cjad4+`oOA&O2-LPz##$n~ znq~oYvvTGHilrEdQRRvD)7kcvd$l);^orRAjr&|yn3{7oXZYWt?-){p|MU;z1ZlRO z|7FK3TV=QZBxh`tLaj?0-h3l4#89XqgvY*zjCJgOYCJB-Hn&Oi$c%Hrz8MYK)7gcW z86E4;74tNf86U=7@d@YRP@+3J1Y|8;^d4#;U_{&=Q^$cihw>NJ8wu4Je|=q5d%y#T zRs_2(<*tqKX6g~T-9H+h_>I&lf&#w~V-cdBKDbTkG9Z7JDg4(I-pAK{M#P0B^*K6` zBI&|faAJ5gz7R>E5rUSDpngGM1!<5dDis| zLzdHLYD1c)Riw+JWhK&Fg0DC7jOb?tU29^eW-M62(?kRsz=Y^gxvV0wbnw3MN}UwC zxja(w#%-z8wA?i17|$`6FIKZ?@NA|e#VTb|=(}5T-!Hi>P#}Q8E()-!tj)pZ*s0dp zYC+D78JI)bhcwRh`0X``iECKv9%BMS0rk@(MTRLdkSO^DE99D*aP3F1dZ7rsZ=AJ} zsxKSgCL&n1+?+!b!gJ z9cxgt*w#K^25bVQyddCKqyYyp`H3m+_yLz|IXW;lFqS_4`h-3pe}?sxu$Mnk3z0bC zD9+(e;{Ss`iOc*+T*fS!tLf+RhT?3GEr+tJX(MDDMtxZKl>7py=O@zaaD079xg7ej z3KRUj_YOGp8Bm)FqO%Z@${0Eu)w?v{y4qRBYuCw$Le|2VMb>V_QxZ8q&iiGovPsPa zm|;?blV;2hPL)L@8V`xFo0#a-nV2nbyEe>2tm%E@r&7B~T+i9kZhB#B%hy;v#lG}5 z#c=EFf32Gszl_CrB{xLQ2)lC;l$S8ccWiXr%$^+RSPsTgn($Tf2<9%+<@!h z-BS{iJZWrf#Di<0q&?!R3_2J6Kw9QsC3|4z>VS5>3_&{$rrqc9$XwE~eH_-BWMe9- zY&!WTQb@z6>DQGPbLVz7if*{Fm67KVa>7pkyZ)mlpxVZ|E`hDXeOe|Xlc;1oK>+bpVj55>qb$Dj6 zcNA^79oldVw=80YBHXU}AzfrPSDCY!3LM^3tPHFs5yhHT4>DHtVFa@T<)E#SZIxP(cC{ zWttux+TXVd9)S@;2+-QA;r#jatR?&v)f?YrxH1R1r^BXq&hNmq$QomDn9gBQ$+nu6BX>Zt=`LaCwWx4v&nelBY@?f|ozPCK|w}<{{{u5r?{@0O}DyY*gFKe4} zw!Ll2H#q6$6-z5TwiH-Vd%Eb;je~7kYwE|@>5v1w6b$DB*T~>b`Qh%uA2zDw;wQJi zV3*wa?#M%;f^${^3tc57Fe8I;&kGnlW41S&xR z!D2JkLC|dm2N841z%i@-<(LN4HNS z_I5tOJ~q)3lXMmUZ!m5ug2J1AHXMI94?!ga-m4!GI$AjXPF^_vo)dcSfP`!8dH7&f8AbZ(P=1SFc&t1i@(rh56JS4n{lJd1fY^OOQt@RR~q zt}9a@56#~~Q-%Mxyf-ZV6W4k{))7VAjxiSjeju7k(Aa3*btnySpfcDIyF(AYP#N47 zyDglUT{6)sODV~JFdC&+(bSslGrbAOAuDu+iGn+^)#(7;MCg#`TAq+1lt7?|X9w@4 zYBH-JS#}AH4G{vAOYO??LMhZOhoXl8c6Gct>5Q|^IO{RX+C zMR0pSV_k0#*%22&J1T406RTdy4WkBSEYj{|1+j{H8B;R#$DYBTP9$+Xyw6sn*w+j> zx7Bd_n!R=juq(WIzUI04;Y6r_SR4AxQu7NKyF@-|MgjsZcB>ki{p#7L0`dW3E-ti^sAr!f zM_}4z?q7l%v11~7Y1>q<9XfyU?lU-wubmi4Or345PEZzeb)HDe!ikw>VkT=MLLIU% z*bHn4wYAs{YHP6@)Yf7*sI661DtH5%3p>?fk6i7pOc^%PK<)^tGDJ{B%HXNW;Hk>s zSvt_QPE^JNiCbVVr(?$_UuQQ#rWCQf{U2&AI2zo77$vxK2OpqCsrwfYf0u9Bq>=`t zdu~4g+YAU|Ydd`Lw+1UzD4->u@7llJ=LrC_Z#!w$mhtrd4ZnC zs}RsQPl&?5U(D{)3pTJrBNh9ip+LfmRhdn#d-MJ_vdVe9wtfHWgm2uj2tqIMVn(4L zH6pz!esGbZ^Sb=ou^y-g?sAKg$sQ>Rj_6%zEx{;EFN!^wxzw3g>6{B419>Pj7MCTL z(?G^TMuOYR#qmXNBm8u_X~68kp8>yU;1I3&VlD8tJ5_jbI}hoA>B=P;$<6(bOZ4d5 zZr`#CWXR?Z_376*!Tf)df~L~n;Q5?^G4AAGRRZ7h)=Izk?>2i)ld!S4DVSJn*IMv? za3|f|frqO2l7c&2cXrZ(R7tR6(VfV*Zsn!-xNHyV5y{XQ`=?}>?7DL$X*Q_2NE<(c zrv^(o#~IC?d<`eA$QkwdnI(um4`x+sRwwtBTL8e-!CKri-h&%frdV1$fP`1qu}_E6lR6u7usUyO)9{dG-YDawGmb^wYb zc?^L<>cIs>B2rS|15F}5!T`$3n0&v0UX=&*g+iUAUtDTVg#Q}OpHd&FtS`Qu+haXy z1c!`kL8KTM^LB%=<=;0@(4rS)90n97U^qC|vs_C6@(Yn#)GYRzW;}k}Wot%Z8mAeEVMrQHEF;od6=ZvmK15PP}WTIqg*SKZ?U4Y_sbqUXxTgEd9v-E6kAx@Uq#{(0&tj%tnRpX zsfgw?l43}T-4aS9Oqr#`K1qfanU*jlq&KMuhth@7nz~fneJXC*rmJN^Y4`0UGWk2) zMol^?dLoJ)s{g4x6hP8ksPZSBg!3)FqU-Vwqmlv%uC-&n4O1GiaVjnSDFE7qbk$U& zNXly@hik+3wx*+KJyZ%@e7Gdk*5o!HXPOV8jM@@aUGW2M*YaO6aze}=F3Q)3W%FFH0P-($a}+y+T3%{+SicPK zxm6sPRZjhUZYe|dzh>2<%Gyv^k{XjJ*qE5)%e*Hp+8+O8$o##&zsWL;A3QU5eNMFq z`cFDFR{dqF%L5lUc$`mr4xd53@y}(-PZe`b)6nDVTcZJFpRg-_@TOR4PKBmg!K9mF zqca7VF;B>*U}n}`FR;?J!CtXFhIFw-S}%H#XzqJe0sWVbh!HO&fSCkQ5v_uVT(o+|!B){i#LB$iwf9Ui;bOJz@At=>&nI*CIcJ}J zU3=}d)?SyXSy@K(7ABLkpR2MH`S{+5bPR|bJTClnjXmKzd?TJMnm<05!j~Q^`E%MN z?Kk{gv1kReBnkx0>esmFDS2S3UtiNFfJ-4IGe7HSR!T2I1I*mJ2lM748Z1GA(*Fww zx?BY6R{y^x{TTo4+{^!QgI%tx_!k(Hd-*n_-_kO-KFDg>7WM=%_bL7yQ-aBMf>53R z6jFi>SrAQ&MdB3PzvGFss64TNn@!@sFjC7Pa6t28unTzktlf>>I%%tT3tudLf|)O6QaPYFV)u^tvo zB2xo*+4kH<{fG8W_5PjWHM%37%|VPAbhn!aOFAP5vzLv=bC$dmi$y!{9$~J~;VIb^ zOm>Bd?`G$mD~1a8&=Y42K#L=9SZnXBMMq?m(RXSaG?0_aeO5m1lURp<`dM!U4-I6X?Jf6 zN38Os^-5RMQwnnto)qfI0|=ZfUUh8Gm#+o&QK9~{wO;mUoB_0K4*$)3)?bo{n`}5f zt1@TuBTQ!+WklL@eP(4&f0VHuW&7^MUZ09ymw+(-_!oTA_8>ogqqb}7Uw6cBK4$CA z&gc}z|E$D`I&p@82w|U=D-c2Pqp)?kWMC$8jC-eEZgg$Hs+fd41^m z?+yc$MIXU5R71ZrIYjbwi}nn;5d)^N?imWYPMq?OUJSme{`S zrh-(~R};r>efIUCH%g9Y@gp{1tLF_#w{P9JZO``CZyJ%x_gZ4m)@Ld5S!7CE*Y4P} z@PqBIZQqi}dA&RN{8nejy9@Vi-;&BYeft)=bqd{TdPqCEU4sazqTQ-NzN&z0c z{xgw-|5)Pjmp#992*|rLdI2MwojBW9@_|lgB~GI7?68q~MJ9-Y#87|heUg>5&wL+T zA{*i0`vjadU<_K9UQ6c3x_horp0P@SS!+~L7M7wX)IJ#iSDo1DE)_DP`5keboV+bX8S4Lipnpva?>{c--vG+dMVw)E`=Snbr=Qsi0FpdV|Wb5NtPe z4w%!MCNbmU;e(!$jzMH3f`iD}0H4?>=vlS%-|exH^39!%)oT=I%NwG`QpltxPglYElK!?fsFhSe4F64fq#I*UW1 z+x0E9vik%-8+Vo>Ik41zSt2e5r`vfGgAHn1MI&>f#^Q-VA~SED>XtBr8-mH_%RX*= z5AW3q$Xy`&8h1}3r?VnintTC}jwF-ey_PD!f1UAl!1m|ZXMz@HCbmmp!&hKt#qVW@ z?o=Q)HgUn{_}umQdQY6Eu zt(|`x7tqpL5kMj!8MjY-{P-ruw8+!V8WcxKfwJdAa*{#=--M047tGNu<$!iNd?$BQ z+5Q=Bdy@C?VQfw+^jueCM!Oh(ziG=^M~%6>jf?Z=8upH8dyS=ETKc7>UJ|&w#qjdulS-fr>!O8Hg20HKxN~K$LNVwhb*yF1zQYQSs<-a zaciK+e_y2iaPmKB4ep-_9>I4gk06vE3exDNQ1}9L2=;}}Q|xGpmr9S~+P|d$9ad|# ztB=+C70+w*V5UBUz1D14`qSIVlG&LI@J)T0$lAUog;Bz%T8}E)?v3carD&BahAv%F z{s+C4!N;DYYo^Yxm-9{C?zBklGnU6N51@^M~NS9e@{#+(2z@sIh3)^O*~W{PT$pD$q-X4 zW9pi2oh62ZMAe>7#A|mmyZZaY5U5ggg1c~LV`f2qr%u6}_iU09%;j@b7wvh{MSW0KW7={^ zrbzFc<*Fh(UynN8Is(b$?teDw$Vy5n0W8jME+xdGm?312uS_!ITPGJi*J2eVW8z!} zc%>R?a*WmgxUkLxiV?%lG`!+73MTNtR7E_oU z7*B3pDFk)PY8f!w-g!WJCcnC8Z;{G?9EV$aCOxMN3CzizOML5?(Kfj=qwR8uMIYfJ zqZ^BM^`A0`p`L5MGbu z=|P^Z$(L#R8X%UTe{!fi5Ct`@$DRaBkX9o!Z=Oh|+Apk-|D};^c9g+51BX ztm}J3(bJyLEtN3jA}IcdeL))u^+^N|Q@60cJ}~lTk4-d*hNN>lT}!z=845`zB4x}Y zy$LN9T%J+3=!RyR1Zk*?BnRD$RC?$+V6oNvm|0pBO?R6XeS@#sWC);g8<`JInvH*Cg%)8zrs~xH)9eJt}beS!>Voym#L~SVmMH?V-Q;n19ka!V;r57856|yN5cK8yDBy$(e#?t37T|kk^%;5iW{ul7SmW6l; z*n2Y6+nfB$dvVx%2Uqd`D)(OWf=nRwd{*Smq!ld0e?lte>G`S5p2(?Vo;{>xUB^6c zr=G?as7x>QzIZN`ieJtPOD!GQ`}54T!ECk8?V#6G7$pH^yIgln9p3LNr!Q`Hob&_*_&x<-)Nb-4|EGGG^PL`7F(n++LJkRK41Vzt%KQ zr4)s_vgN5zDLHlZOx8(A3D5aDiLl*so=z5$9IunbB**DwDao^Saw5qybh08|^e;C} zM(vuP^p4uqIw_-el}^g2eN882)Mo3Xj9R@;%BWqUlQL=-k&NF9RDd-HlXiti0JMWb z16^x)sMa$;`!9~;>K~`au}!7aI6kVAGLC=HNg2oA>7fkX1-Q9}He^0k7@$j1V(8&Uup>G({5m2rQI@4vuDQsv`c{FCoXE3^OgR?hh1 zRi5(2Klx|{t-KNh^Mz+Z@wzgcV<{rF_`jr+0>&rlq=4~gofI%0rIP~2BXv^1c!W+0 z80YGwEdHT786-JaC+kQKBpLq=Xbm|3!;jK%e)V^Oa}H$$&WEr)|7*SRTuy-+U(8l1 z1?TlTDR6#?P70h~q>}>YH99G9UagY?=Tmi3@I{qQR* z;s1PLK;E-_per%|3)iO6{3nOiXZyT}1=v!LygdkbJkLkt+VwWvYpXMEo8KDS!W%iK zjh+D-WjY_AZFop-VmR0+|N0$v^D$@gEV_-Yev0rp2<>%CuIF(I=H^P$p3ah<`jz2FB~d;IIAG(6d#A-J#)Yz#~+68~3zu1Q}~A&u9uqE)u%V@{A%G>1kMc zg*ACNNkWxf64}{fdfeR9uzvW!oIFH6!)ax=iq!djaQ~LXz@U3?(9FwCc9gvk{ty9Y z(D>c^xT7ykg(C^V{8QmtW-4)dFy?ubg#3~GiFAd(m}fYh}J$-GmNp@Qbg-zSlz z_e+QPEl-piB&^F$qJZmDnPZ;odQ(@YQV`Eee<;&1k6)RF@T{2U3SP>%Qu-XpXGH%X zh--Ia+xh6}lVTa_J$7^zx+38%zNv_1YjIyku z7fR#1!(XPE_tRGmU^8y$Lx~@wk<5_Z%FASaqYMY5Fj#fvm{eERa6ssC29`5K=GrzH z9A%C57fG0}It8#~ib9&^GnaJV`7KJ~khUloBilDvG`NG&z)5vg*P*^`ngyPN6{GGJ?!6#XhT?|qR0M6ohAD|fAS)Mq*h%`LAxB|{NU6}kl$+jt^> z^6`ZV%69W2QIYigiZ^)ZXcWoY?6APKw$qR*d)7~NNfQs=T);!mjT=*SqY zFQ{ZXdk1%AuNilWuC{27mTV7{-%wP%jLxj9wkL_cU1BP_o_RhK=R=~}TIhrU@^t5o zmS6FuvH(wP#9m(92o>6OYwTcQ(}7XOR7B)C1FAVD$6l@MnPuBWBet;G92m63ha(hN zeY<(Q1jPdn)VGNR9VXc%A2G8yEa9lG09|eLTj-9joW3j>s6wPA&QtBn8xY@5V|2s; z`il<0tfE}wu3GBBp~*H_$Op#^u@lVf7sbREvLwyMWQThhFclT<{=LIW$XoKM|#d#x-H_A z23Isq!rXaN{8#ePTAwK`P4!^uaj3N5dccv)$Mj|nZ;`3`8u@WPfCKovCp3RX{2Y^!t-kE`jxeeiTUxQv`++n+0b4$2i6_jHiy3p8 z|EzrWOjGY>>vuEdVm&3FI#=uWr>Xa)>LVgN>30F%0YNJwJsekVrnveQD92Ir(ANu? zK0E(dUEbh~@`kDMjOb`q4;f#1nIi1`3YIX9`U~hFUAV&=kd4Tiey=l~pfjz{$h1yn z(vf*;aiCrH?G;+hS2g!O$!SmcNyZ2F=ntazF=Q%Flg`tak>^HTbEA5Hoqm5!#`_ui z{gu*JQF#2*OVZL%5y!;1TslAC4v(62LnwdJg3z!@w}ggPqnR8u8&{xAoj6PK7c)5I zAA=DD-|u(6g&zj)u^O6+{4KD;*EuzLt-P$YZ*=>bE?68cOk@+gOTG=Ny22m$ni`=Y zy}r%?*Go=0p>{`{t0#>xZVx~ZgQXZ%08+H+ZVS3MC3oIkCtc>9n0?CimDKh9)K#9P z{{^?D(_I;9c{Uyrajnpc_Rzo6a_X6&C#Fg+DbP5bc9P*`onf5La1IwCukPn-brwpF zKj<8(xgC{J#5<@Eli>$CLyj&YD^7C{ z-<0b&x9K-)x@_Hj8|l2{QHZl$M@?DQ+0+aF4CTF@^$<&T|}eK@$6qzk59`e;tv!dxhLt2vvkIL zb;bc18BJZ+S9FF2Izxhse2x8%EB+oojQ=p5W2MgVyj)TvH8oY&CY{mAQv>h^o$+@W z8ONkD{;$rsMrT~EGv1St@uN*@0RCHN24!Sg$z&?inVQ~GW2o|``gJ3jQj2Q9r0b2A@6qgKgC|{UL_Z>x$e(nB z(IPtVlNK1!-CX0s>QLf4Bh&!ArAyo?msE+PRkcR+5uNdAo$88eA^Gbj52P&j0L38OG@`rqnEjN!`Zm}yu2}Wy*qW4XY&7lGVUKt zrQhcIT|hORN3Ig^YyByZEwtZ$%}mhqXF*^VybLAAX!$Eks~VKKBQZvm0O zik$f6>az<%MpV>OrLwF^R~s$kxDn`>!j<97<2#Vzw|Av> zS*m#FcAnGk(8vm`NSui$sTEMR&K}j#&}i9vQ(NMhDq|R7#kW^L1BjD1y{}rjgcDN* z-w-a4f~ntqLl~V~y(9PL{_!@Ci?bc*Efd=ZqKCk8Z4fVIcHVJ`!L8GY{@AYQDl32@ zsu!iHmhP~lsBCB;s94TY)Dg8gDn(^4pAP}mOK7XZY}4IGYnL8QYmZS>V_tFm+`sox z)YI)D#qmpdApA`JJr@Z@T#Hh}U`|Z$-O7AM)-O7Q%szy5bI$7Z=^6Hl6ynQ+ zp{bL={?;-u4-$j}w_#7@0vp1>54NV|ln)F~v1jMnT<-Q8!4kv3<9Uv<9zE>mHymz5`OD-m~Ep5J4J0mYUU zb`EGdMA+%!fi>a0h)mVwiE_b+syl%*XYmi@4VG;Q`BiiO3JHIHUz4Nnr<)wc$Vd$& zs?wf)w}}|U;aAk6&C$|y&sJ{xWG@fUBJHsv6@n#w9DTTEOJomrQ2)R`ezo~(*}~Dw zW(F`Ytk#33{2(R&CasVVBv`V?q!lhDdW{PPuWndUMD+T-B?nj=_>xC~dr}Wh`))z^Q^nt${7ihi}v_YwN_XRhYBJ}%@0*% z;ElD2sO|bK4*Q%6ejYxLwY3E!1|w)Ux6*J{{1#&G4d{4th`j)ZO#uW<4nUk!L`fMKazQK+HC|*_jXbovai4vxyAx}6lyYb?5s>=^w9=6E!0lzM&Uo}RW~}_NMXbx4 zE+WxHV!>3rhs-8{q1Z*{E6&yANeTa%$H(r~emju&!f$^6&on^^ket69&*8`b@qutU zPMH!3sS7=kCe%js*Wq|#*Adk$#7l%S7q{-(LbX~n+O_}P7Y~?SS~8kD^Nb*jz~GSauR0=hOk6 zSky5w%85{WxH5s{rfS}FYkZ+{dj3=Ju67*f4V3+Ti3B_Ysp1X&HeR4$I8WV#xrtTH zkv=5ysvB_6RNr20=EZQ37gOjN!#r{xP5UcTb|aR-${XLS#M&{|4Di``1C2FPvjBi= zlZ4Zm9a%fa`7ttFJ&{JsIgFTSqm8aE|K1|fH;o{nU}rE8^1azSO6cQ;=36wHi@ZB0 z*!F;R_G;&6*4ZiJ*`)Z#KaWf&dX5*Xb zcrTGKMtLQL1j#=tS5lmF`A0E&{^JWJ#rXM;FP2oXq)H`KDyfN*nkXqI$v>(>Qb9=t zB~>S>I!Voz)a>N*sD!f0k};IoN_z0QW85iTy65`cNGV^H2Bm!B2JI!;UY6pWn?-23 ztJ2OZOAy&XVsy=p`LoCKQIf6U#U%-Wd=VP=m!KUDl2mLLVjmG}UR)>mEVr-Bwd8Ad zp3nH*OU|)Ks#0qTznX#Em`kcjd|jf|FeSIAr{wnDDfy9_5=@dg0s8AA4kgy&8Q{Q4 z`|)a6-(_Y&XayTyqU_N)^uwXYe!BF;iwJWqFr!tU3)z#*Df&!@@0sv~w-I*xX$6Gl z3R*#wjpr8=sk!OEkByc&fJW1SpP-I^fRJBT3AU4XOER!vc9 zdGJglDk{IY79j@8QYLw?NLEiMpY9DCIK{@*Kw0Gwqh%MXK)HNaTj(q6S+W!Tq>Vw) zdaXT!|EYzKBk6FhF65^gzp1ye0zn(N{VO0^<3`Tuj8-vPtZu+*@J>&SJp^AS{-R*D ziK#xWFY!0x)s>MN;!~zIc}Ie=exNW@`znsVcEeYFZ+n^gy#9Ngnhxjhzh7~ zYHlriafJlJ`w7lZa5WP@g^@u!KGHtBY_D<026`3G<&jlaBxfpaHEvgxf@l&W#V{7H zm+O8m3Xmm%No294NbSqH)(cJv_`DYpVjMy%pbW4Xk14OEZRZ62m!B z52xT!=UmW&9?Meku8dFQMN1(Sz`zyCSD$%G-*~A=Xa1r>Ha;4WW#I=Ly}f@LBMH?~ zX~q<1%MYclDzC);$jYS`xY01H^3-I^N}%zI5P(%0FmEV2R}EGo2Vn8EF%UvmAL{*! z#g}PM4sbz7{8<9EvQ>^!u^NQD9{g>oRmX6%D9NhIDbHSZsXfcZrYvZkP#@wF?H%Xl z9&*yNc{EZSON5B_m-2l@w7(YZ`zj;apFT^!Dh!HT5$te0W>t=bdi+`eLL&ST5!f8T zex(%m3>xka|oQHkkt?)@WO8;)^i%T9*03tT}`<$zcnfmGa7Zu(q^kHMD^m2y-<**Rl$lZohGOTy3NMv^bIu;#H(*;Z2;T`W3i}eq zFuXD4)aK|&8n2^rm>~yEoV&L^C|$O$6Spoh`$Gfb(F7L-e%ACQH4O=I7T>WuC$hE> zFA6}++m3%9jRInBM4J?J<9cZuR7IBXLa)eUgEEFQ&1!uf@2A@Pf( z$0r2KSEzkzI0>~+4Kf~UQri^E0$+;LZqk%PTd%LTw9AcIMQkt(Lk30Gt8W7#iB2%f z*nB^G+W7Km6PM;X7XlfC02ZF_cADz9W{yW2XX(;vyPhFN-#n)RQ`2X71wYtbV~_c- z8Z5(}z6rM;9l`7i@u7apKPpR>dm!|!9_m^Kcamg@eKI@6WguN6TmpDIJHC`waLB1V3v%w)=e=A|zvLR09=lIP< zUaNkiSvMq&OgbyvF70|)v71Mq?hH4(;(Ee-j!4H#92yXebQUCbr^un+{`bSja-xWzWAXPm zUvSVo`Y20wvG^>e*OvfTpuuV@`Vh6t6BhOCIq7?|Y94MF=kN-)PPvkdRn2qv;l}D|8|a zX){(`IJW8IfeUe}-eHC!#qcJrRbx9Vy{=fL0<+#>U0aZVi3vR7w-yzN^R zxW>LAYj#{@Fg`1gN1VE#L{b~Fe-m;DD2?%E&JW4Gz**G8R57Tns|IQ=Fz!7vA-cP*=dZ zmbt4h#iJv^$N<_a*7hW3T2({X&#f8bftX{7TOgHDhgq}MYh5_RnhA1kf4YitrA?ip z>B|QY$Vd7BufM@a0zY$aEqh2pr7FH@@(>Zm1;CU?XcJu)eUuh)fT<=owT75IB;syX`0K&QA_Cvd79iSJ;Vlf$@LOjzEgI|! zpXl2UmTV$WjCDz#?wa^EkhV^ew#r)rfb}*1g~x?tn<*U}*Zp)lTRz$LLyHTb{116# zZ)&>bbe9no5qJ&0mXX*zVl6H(KgR9G0O@@asn7rp&6^e>#Sr5`h288t>SAGMU+N8z zDKW#U+*4jPIt;B?=}a0OK0APxzOs=VQ;jD+i%l`okyBRre)t&kruP{tvvN=3IN}ME zbuM`$aqOhY;lcW0XQiWDX{{~rm%Xs$m)b#*8Vi5i~Kbt3Xd6X^9 zKD-u<#d35gJIri)?l-TSjqkCp)@froBl26<+|Gi%5;mtERtbT_C8MIAn^`3FJN916{LsX2SQ&QMGxpuf}T!6);c@($doCX6%JT=)Sl>-M@K;MnaCPL z&ySd-S~KP|pAYtzUjJ|<-BR#%nmD`2jy%M@zpOAk++Q{?Cp?4>53chX%PYKz`HHVA zD0^kepJCQANu)o@N5Ym(kqrf6!&Jq{)^fU~YDjq_XD&Nn2Gk=zA#BZgIRyPi_`fJO zF)S95w#Z*lOTK%_iat+bTExb*PEy{W%xROXX%*s2xE?kpB~|0ZV1Q{^w1qB&xT>A)3-^!rgdzN#PKJe(ep!Wpbx@BH*oO8WEVO^qqEkH~2C6%RZ;eC!6e|KtH({4_$@pr! zv>^wVBra)$rmEuS|3c%{jO>39m?bO7p^jjQo0pE>8#GSekp6J5aTOG}Xm`dxeUO|g zsj0JBQcA8gSD;V15(8PNcrGn>a&Sw-mqmI!p<9AUIP$LWO!cbj`@AyON+s=kjoI1w z0l}qk)u_Q$1>rgcg7%~@2RjZVp>5(j2%7PP~-&5@q0@Od}{jC5xG z!R_1!m7(<50LGIAZe`XbzFKeEpXGMVZN9L`MNIJ&7ouS?UG})m`=*Vp2>B>8dtpIz zUz;EpW5)ZGKIM?o3((#y#I2i1L0g~lARQ@iR~0JQf9fcuOUw7IuLuotT7eA-2=dVI zP(ZDrGI;xPqHxj^Z2=8%KL^e5FZQSRWWjlI1tL>nJ>_`HUj(%+K^`R{Pf94oOyF9S zCxs+fMt%v;T2(BqYkKPwGw^WOdX`;M2*go@aNADij9WVPaPtsdnFU~k3r>NvO`|%Lb zTKlXBv4%J~pt*7F@jt7LhTz2;T^oKLVRWS!%vZ?V|cVN_ezQ|vW^+le^(#pI( z$Ssz?ybGU@AiV2(LM&}uR@CeJ;ys+LMb>Ajrv!@18jQbgV%I}D5QL}sITz=mpCrRU zzxn1|AqsJ#jxQ2QLxSV8ugG!BhsIqZz63-N!$9jo6bOSpl4l4j5pf60)`gFk%%?G#wdPX%rYtS3PI-t=oGfpKrrr>o8lSMAfN+kd zNmT4Ygo8I0(G=*S-CFfme}#2cs+p5|`L;ZYo) z976aXMQRnBRwo|{EDC8UD_BXRQK6j0KGq%oBh3`}G#A$Gn>OAZIv=S+W;CTMf{<`#NU5TLinUlpX0A9zKgQWKa)nKsF5^U*9T?Un)zy|Dq+ZVQM_? zVrXRK<%vL3cf2v`v$5$id{eeUYA=g~#eS zylI-A!~P9c0S#m?1UaZO`oFd(L|As+afdxsYB=<*`%`%<#|`opEeO^I*6b6?o<zeV|dvk>pVa0K6*f@+;NIZM!v`*S%{;WQ;D z73B<^)Q*8vHMRik0rKiI!!Xb`F#1=t9M@=RW;)@Yb6rbsXBtxW2y3OCC%*4b(l?nB^&+EMAV}OduWcB0lrKG=%lz$$}!_-QTqAGuK@J$S*~N z4gCfCz8!M86JFf8B-`!r$Robx^;-=PQ030oSS!TpX6rOs#FsaMNSK=$XmdgKord~d z6#rg$@Or<-&i@B4{e4YIyk`E8XYn-*rLpQf#0t#^C4KWZ?C;582aXKK=O&KDY1qyI zkzG@0Em>;HUI-b+D#Pp=+fLp{dsFC*$iZdC_f~-^%=gE-dXmY>F0@XJmY=I9bd~t$ za(^%Pj3()YxTG)b_$&VC=erR)XCXkvLy%nm&g@c8`a1I>_o>bd zm*&zJHt7D{5%2cHRYPgJi_S%M_jPTpbVq&J+ZFAbKi!>k>5kuQ_m{lS#QQpBh0b@! zMJE;a#JJUtdPv4UR{h1LmI{)}$uQen7Ro}!Ohc0WWa0UY&4LNWs^fz8Gyp6HHgt9D z^tv~VP0IXiXx`n)#zDY=G3b{Y|S;d+NX6k8fZ=pRS$hbq*inX|V>hCw-jVo!YZwSVs-UG4 zTm@%xzs(*ZT>hJaPZURmq;dgrnFSnKCQi^KTi(;3GGXy=LJ{cHSx`HQ1MRO1BFsu; zPX!wahbjaiedHfL#rAL}MP)VSi#28!*3wAs9zk-}#a<_Ec<;kxa$n%(tk8(2##h~; zp}iu(wd^CQkW4TZJDk0DP-{9^td5ad(JPKoL4ZysTt4?E2$ zKutwy9wPiiU^CmxQP_KhKr)O45(f@`(^Ob-wZscr_%Uweq2q)Mt47N}$S{g7pc%d^ zwXiDY`gLHq8I(v|!ll8vN+MT|^b2q%KLQ5%4d)yVYxeq#VgA<(vA*?{ZC~cp*q&kU z(Nuz~Z&Wfq8R3kA<0r5~D{|!!y2AWW1x<7I0p)7Ag*iI?Xs7Nxm;Qkv3WLqN!Ke@; z*`mpt-n7yiZa;aimO~PhG7>9RaRO4z--POh`a&3|VlAPm{w>?8jbI5*G*%^=9Mp3P zS`Ctt17(jWqA{6AkXu5#9*HBYIHA zoj>VkzQ`1h5nVw}=BUsjfC(xx5Y`JXv~zx5W1p!6@3nSljH^1bwA2;8Vof1={hVky zzZb}cI*TGK4z!{5s#n1IM;lJe+s>drNFHn3gO-n;BdP~>D&fyB#**{WQruUgo+6O7vQvz^7Sc$t_R;yCOlo1aQfv!9V%Gmg2QiG*SZAYVYqZ?Jmog>{2XCPe-|2^1H z|0Jh)D{$;iK(cY05%Z>BS%D}0?oIA4q9XgspY~Gg(o<^Dc#0;}nANvBjo<}Bm{h1i zt8X=0h&0T|HWs=ZPUo*ZuIwwH^qE%@U^!4= zHU0*v=cGV+eJ+=z1UtCYFYxrMS4 zEZe|J-l9C*SUe6sg0A{3)%i#)=-h!kM-}ue&p8O~S{)>zm%voM=j*Om#l&OeEyqJa zyD|t|RET!;ceHp@4y?lM0SPEyyV9!vjWFGA)-RgG5e(_V(g2`7po-#(q^BOjGSC$? z5e}jTq0>MTN8 z(s%}QN7m2IKxl$6nwC=AEkd(kk=!NbR!M_<;nYa=G za{=V39GHwm$i1YR`c^X5ZI1U>%Iaq#I-=ncw7vdKo?qSYcWgk~&<|5Fh@_AaRDkM#b8I3lQ&krJM7S?v zg^k;%#lzw6Bo^x%Wadj}SK6cBYoa%7H@^_3!0gnOGu@#tBht~6eDyEUV~Gjxxvbh= zx~SS*Izx_S}4(qTp( zcnF>qvxi!?BmuN8wLy^p;!qwyTwE^98Qoe^R4nTArPU4SO24KC@Nzz`&W2$-BwQ`% zo(fQ!~R>a7PN~c;E=UVPa`!QvkmY(mo&m4~3I`3a_*00e}G*TF#Oy=wD?S_w-l+7w*^VpwDlTCnW3P?(@99Ek#(p>IhdN#f9f8zom_B z&UeyJW~tB2c`|!ai7GfzfcSHBVq&_W1oi+@l?0ii5>&6xn2)fslUaKV@)fcI!*o6!;F^OdAeF&398uPoco|howB0Iv211;&3is(||1$eee+}vUF(gnc-s(upJAz*^j)<+|D4+VOQ9$ z4vMCt^D`DzwfT%XFH&??8|@Oap8{vi&VvZ;A>#!n=Awym&I51*O_K;3WP6VJA*QKD zphp4;dqoLL`h(is^N9tV2FV`iOG06M#eeeqqAH8RBZ3z}A9BjfG0cddB{X9di-s$x zz!NkJ5+0={7&I^UCQeD6`lL>O$dSWh_ofe0RYr~@&C4j|L!p{lQ(R9UYm(v~j<~BR z3ZJ-7DA1x4V&~8N*}-Jf6zSQxdqA6p1Rj(qVad&AU_FXYxe}24WE3oR`2|;^8~Zos zEXkSDGyXNbN5ur%7)%jqY;ze=OFcrbgC5gOqE}`?-wC56;qi`<6IHH^0EnFl6h+hO z?D~RW`Q_d)eVy*LvT)>+g%clojoz4yZ&Rb&C0O%Tl`IPl}C|4f%NGb-3-ZtqCR z260pz-nYV<_q58miqP{FV5=4N;tD}}3<&bg+J}@789Yq@HZyRq>~Z2UFda-=5lAc_ z@#Jw!F(exnXzkEEP3%DHgQ-BJYJXGKt-O5_r!DhjXS4%Qwb3~wYwTYu0?@9>YpTZ!w{N8!(1u`qfGjr z?_!RGo%oydPlNhO8NiWNZg%~XR^&{wmu!kS#imLI8-zvtV<}H-2wNiUGWTMNEiG`K zQxagB({Z~agzf(K`YR$8v? zz>{tiZR8mtYss=1Z(~;DL&UCaqTWT+hGFo0by=PlrHJ4731Y(7K%9A` z)3r#>rS0wVTC7T-8@iD!D9WhXzIbqASY+oiT#t2DyK!6ufBZIbQ~dEP_5`utdsDn- z8^3!ch#Hr_gdoGX-vi?Y+6gv{fgB3`?jAr+CNx+UQ#Hx%K}~NZs!^dx*A%qB`UPq# z>5+qg9HntP!!F8-d@|6u{ry3V$rkW*f1fJbc`W~h)LP8{`KkX3U`GB4a}|Hs!}5w= zK_hvoo}2>GLJfzNMeBua(d1pUM*zW=WgmT?WV{RUZwf(91H5X>{$fN^oK;uQ{6Nkl zOEw`rA@VMCGXe+(@LlNU&CtzP!|8XG$lhn?3=m`(`NSipM9Zb*p!KM#)_O{+bV_H) zBg8&s2N(8ESFQPO;vzMO-D#7yl2jWxtmpl&=La@BdR6YiaZ$y;K!e4Jt?>@khxFK z%4TG{HhdetnmZR|6mIfCQF@>q?pxGCLDRkdY%jHnO@{rX&M?oQOH zC^lM!xz-M<25~f&!bUWRe#`zbxTRaL(FSQyB^w8km;d1GvIL3~4;XifnLsa?zx(;YJPdN)mjMFbV{_4_tqKN$_R>BWPRFrKn8urJC419oi<1~Tf0fI-G4+KZ9X zU=TeH_pN%Vj!UP->)bGQwxmBHXLV^mtrvasEh=`r?;XwbXYIr>trte zP4t(6Xu(6ozO){dNubVab)CK2)1mPApV^y0OL|{wsemNYq*inlOk`X_s6{>*gkf$> zaW@L`Vo@REQ^{aDso}Ad+Y~$&t7QE{Kxv_Vx)NwE&`($JG*>?rcF9XJ{!?V6oHt;h zYA?xhyOYjOcT-rVui;K|@S$QK`na!nn6DMk&lgJ3>I3@a(z?$D_d!c@ZzkNEoO6gX zPQ`g@&L#4c>T>u@)`xVF^&#C8LpZ%Wn5&XnSs6z3SXN&AIROhxx74hM3p(;=tST8B z=RH&ssgJP=Fi3Ey7OWT|E z=Pvy9;hg)Cq=a+K#*N5IQwHM!6NTg#tNPjUC899)G4izux6S(GBS@j)R1 zQ8_9595ScKp4kXN<#aM&VnDgn>k4zo_JZ@$c4;Ce#pVODcPr_Qgtr%IqZMY+$DCVi zoN{`27P&x-UD`b+CwS)b*wR0gVn|{LSma~npd+v{F*X@!O9q~-HUGx$9a*xD%7)`i zY#p`yDI(RxSMgKRa4oTq_E%;e)4Ict!y_&Hn+Ai1iMvIbGsbZg0* zUMJa2D&~I^3Rh%9;f(;05$25U*G=-k{Ns8qi6I>L6Fb$oQ@kjn15~6nAn==hE9Vvz zk(M}13FM7`$_{yiBjc1{|HC!&Db=~`bs72WKH2_id8|)UN8G^?Nq;krKJj5>4>~%Z za^#F4_m%jM_(&V@g>!>#zQSB@PF8b8aQ|O1Qt`qch>=RLWJB=!%{}Z;s9E|-UJakU z#>MXGyt0iZ2riu4Hh4(lYw5!Ujyn;xXD1Mda?EZ93Z9TpiE`>Id&6hUc%!D_O^$2| z&=x}|9fO|{Dh|fbsk2a-c3<0tJLX#VwTO!M8F$T5W7c1BC#_I(qy>dz7GRyD==UO% z6KJdBBJuubj;AnYU z{U4ZklmQ7?qc?&6)NId$QVcoxyj(@`0WZAbN!60)qPp}7nw_ua`b-%sJ}~}{Qt6*m6lA5!*h@t>hYTr ztm_$GYXB4QAroNdfd~=z;|0k4auAzQ&b;41k;ue_RAbS?7%QRJc?=8UTJu_tb+067 z9D9t>G68yzHVqM;`gqc!?4(XRhUyn+Bm2q&c?-_P;SKKGr+FLCv^=MstGpJb1~H#I z8AKmf8N{JqR)g5`EW?FPbgq?68^2p*YByxr7Z(F1_E(wJ^Mhrdgg;^yX>(Sxx==C) zEg}&pSb#w)zp60Iarn{UIM#F?9sV;aESqrb!4&v*9Yl^bUL3ZXce%T+*i1)o_e*ieEY+=Q3zmj`<3((%h@Em zU=8Qty^A2VC{%ssRtX)dbt@F0n4>oZ%EP5M=LF0!8dK@IpFT_C1xZa%rB%7Xh6?(= z4%8t2QMtz@gq{Q=S`U>HpURK470*uK$@pJ|wc3{W-I3Ad&VDKY&3oEeI~>(koBOP< zbNKqO5V)u>Kp`xSiW*VqWG9D&1=jZ$jb1&H?2(>XDqabPm+?=yhhkdk3Rj5o26SRnESQ~4O2;g%kDDSC#A^4qT0<{{<;kh8(CH~# zB{8bt=%k+k*i1G(;6_Y<9*&8*2_}fgOGf8qT>TzmC`CLZD7&G|6!wWVwr5}aK`l|y z1}wd*!jEqthblC^XTJ{+_K0;YL*)GBUS3<1D}Z{z+Lg)thfkMCFk{b^C)VWCQZF#* z{y8tO-g7NE6?AUC##GvqSFB*jK(yH06UJaGH-q^0z?n=FVMBHvqM~5-j1wldx`*(Y z-EkavDc#?+mh5qy+9V;<5B!qdK4po4xY{ zMWlSx{+ur$Z-|gJL{;0}>!o%M_nQ1oh2;7=4^qfv=o1W!_!cdD7T3rMWQIN@BXybp z*q4Gh#1Qm23WG|a-qt4GQwRs;+n_ac85yB+!X7yc#Idpf+?a35*Z3OraRaEDm*L(l z9Z_muv36FQRuVZZI?Jq?T6c>0P^U1CVow0Y^$zL70xE&MlZOUW$}p_$)p!GyIrm~} zG;SO7I7f|8{=271!#DSi&;_)s-v~|S0qEtw&!8`(WN#nE5-Z^F+_|h-;lM!#eIkyFt+;W<)#yAR!L|A1_BZC3u1JZa5e#jmkyGmmSsvMXC_2Jqu2l|?Sj zL?pW_8;>C_e2b$?8#cB;Tc{@{;f+)>H+N)~D`LzaRbo7cdVS z{o@m2svx1)#TyAcxr669JkEW)r#pTVAN6~3C^n_ie+2EYqjkO>rbNjO*e=cswlQh) z*Ay&avxAtxrGPSb{OEFN$`LFDas6Ojn{ss52bPgNvaQuvzuQ7#){j=o@9lEhQAWU> znBSOsK>0qwo%M!b_RK}W2#%^0?KcPB!K)mel$QUoi4T^%4g#7ZE2KMgqV-30Vv@w5 zWrJ*E;u~Q%fYHQhP{7eh_A4pNRbZVjU0nXH?$Z+(`aF3%IMqe6>r zceNcLU`l|>D%|{M@t>VcV6PaUR+dyOpg8rQyuk>_2O)N7Lg@4okb-M&GJL(2D$Rmxm4n?Tq||1f^;sGI3!m9*NgV0Z&llk zquIizE)j#+x3HbHZiRS2zw5#|N<$1s*#$N31#?*S#|GU0@RvOxO<1_)h+1ly^TEa1fWP5ggE+8k2g zke&QCEgF<%w7f#fnmu}r3l_z>$pa7qVgu|`x^jgz2w3%!xjI(;Lu@nk%$II?pGPKu`$Ka>@o6zR%R>1yk%rSN&x<}`>?6bVt% zt*9~2*NcF=Tf8K5UEyPV`=%A=gyjhw$U?kJOe<71{|bXmKJ*26SZjT!kQs-PFJhai z&JHZ{m(MR)$WFW{SK>r1)p_%^BdXFs`GZZgb;(QdZm?6oQfH~0M)W#fs806IT0Kvs zE=n#mZl56U&9&%UF+meyKXEC;EPrE;b@_Pf`ztBEIo`#uxY{DNSkS#TfkDh|^2og| z^{V+@xs7%&dwZ@ga#1mKDKl&>uEXsSIL-O>1>nO#mvHf-9!P9-a;Ra~K#kk9AFQN+ z8e*{{ZBxo?DmSFFZhONc^1j+0Kc0c8GhcIN_Z7K=H!^Y7ZIUO_E>Ys#m2;An7;%Ux z(=8Q_>w4iUHcF=<4)pk*rlc;kGux-f7%x70j5j0x#Xm%9h^3|e@|8`Ly=0^Rm~U_N zo8RsVsq|Xo&7~BIol=;8W#lvWFi!feCz3C7t|lN<;BqH%+aQGT-P0*`{x_ zY(el)v;9;T9zz&;3C#BH8Jsko$1OM09i`+HF?+&JMo~;h9R@Rsw zD^nC8WM#507tD9AzPBelCZ6xD#+6RaLS+L}ocdHgq3KAMCtOeKfGd{SF_Q<=awEEt z7frVgb%jpy?O*R=M8fFRD=cfQT3{sWie+s6SHAAWz4O>-A6Y$wXR0V8+Da0yQO$3w z@4sZMnrSp0$Zi8kxeWjNy~S-F^olAk{51$`rl)G2$PG{RTi5;uL!R)MSd~UrPy{VK z!i$6kCqOAWD<0@~QXUv4F=%dNPBGkNg&>+R>W-r1T$$ThH3G-RfMZwnSL$65EME)D zczlLMz~Nxiyr)7Y*?hEE@hi*a7zXdZ6S<%qsKo=y7jR7Jw0WgPwj4XCL(ZVB4@33o zr#~md^+b?Fd>g6N+0s~h!rDT}HGA^5lOb+Lq#r)V9S?uOJLlsN2N3_u7oDEv z+`HmGC2iR*x+Rg&M?-XEN99;hg-@5qeycR{@i_}i6R6YK>_UtJYp;WWR(HHkoFG(= zI(xKzUajLtsHJr74H>y5R=Bx*3nZrA7%zj_VaVj@of!-f?y{6{0LLO(inI?jf@?c^ zvhCS!z+mBeq0eIat8a3{S4t@&@|1iGmaYScp<9iXX(TAjXt_WVVpJuFWC$Hs6gNbD z)-`-@DW!_^qqn~y+7};5QTzpMd$j7QEw(X8U!=uB!K7xiOFdD25TCVlM==)1Faf^E zKRgS|6p@SOdhn&451lGHx69QhcFqW#0B$gstCB5SinL}OGsKBs8pw^ zvA^#H=RQRb09;iALVI06ZgjIEWBtZOj-^U#<^Wwx9r0N2+ka5k;M=#}9hziMcbgkJ z4rC)PiR>DvTK3Y;N^j2j($vsQ>rrWp$XwJYI&nsUX(*2iI34lZ{hKNabI$MkPHU#5 zKL4Mq0T=hfGK#?lHJAt&qiR5PfBja`C>FR8-AooGsaP|CoiO?jZhiL6?sPkTsh;+z zOzCIKdFJChORKE-t-@GT8c#!AiShU`=*bSQfTI~b(foj}zVu1t&EDcJ=TlgDuXUe% zkvKc4zSN!Ym+f2H5h(e{Qu?UbswsZAZ=+FRxH0Q+MVS@oAjpUkc)a*YY zh`pSpYAshw=zuJtO{pbhPxqQ?Wd%Qb3Gw<1Eg>Z66MhMf2%4T>afxpMN~|$|JC3k9 z3KvCsN*Clo!006j)TWl?a3D!7U>cTMy%zQkM$3;W!1Vl<0#uwrJ+Lxudcfj~rGhV9 z^zm_@eD~P{Q}9{1C1@3Vfr0T`us^rXP91s7r#DJ!V=eNI>&Dd~+{2LLWj0k7qvdBn z4)MXI(?25lPulsJIPi;2ApXEwrxwJ&B$a;AL4}zX!EFzn40{s85j-?abcK7&&XR-8 zZv(4SoRzf)lTR#W?y%cZXabW>W!u`PpCjOSYhvP* z-fw!L8ph|dCXd(ubn@6Pz^Do)t>Z=J;N1A6xY`l>jUCRfAD6TF&pHZ}VHm-F+I$oH zyFK9}aD2sM`H4x^SAz=IH6QrVFG^O1CNv+od-%c&L&KU63|L(LJ_12I|L^2Y;A1IY zKH}RpE^G1`w{h)GHkwAga!8tWr8O-$S(R}4WL4nI$*PCzwMb(_?b$b;cY82SXuJ)7pRC|)H_Tr3c&+e`EII2BmTG633$5S;oc#2pQ(WI6C(MaS+{``Dy z&3uF3-W;#-M&D%e(%AH(xU{g)Z+!>n&EH!|AF=1aw_8wgy6Rl1VG|2+*$tc&;%bs5 zP;33S5aG3AycFTS+Byy%ywzuY%`cA@@(6C?)-&1RzeU=PsMt|w>CjQm5D4rQzU!Y^ z#;dW(lcc`iz|EjNDU~zwVv~bLlQuI@I#!B$R^~kMKam9mhbDkty|T2Gk2n*#Zyu}3 z`SrbUA05&58cW@4r7yl{_gl3aYheDY+TW~k6*85V=@?Z6=<$|)c+&`dhaT>2oEVio z<2U?oCtrvplPbXPW#3_j>|aasCJ5xN5poc)yW=KQF(n-rDm&THyi0lno5{gx1trdf z#w9FZU?ma%&Iqqubc}4JE#)*c;Su}yNpR#t zh9tDu#A-|2NMU$%FRVi=tb^H+n3$R`nXL2_*tJPGN8@*0hh$d#LJGHZ`I66tCnCEl zsE&QFMVieY$vaZX1i{hp=-LkVh7ZyIBRL?~(S%SrgpxcgoL?qHA)O(H1a^aIi>;L1 zL0W~`{-XkiexbzLnf10B^k~KfwBYbmYf1|s=418F6R%|zbY^XwjVoN@On@C`hx5Wr$r2O#U?f?ZZav$DyHwP4fQHBA%tmpNgq=@VKYWXc}ORC_T`wCvcQ{01<`t5n{SQG@66h6vd@~|XTji+SRXf2oLDk@&O z&Wk7^Xx}>iACFTxiwFlmd?DZsYkGIG4iy;H%R!Pa(s*~FapxjQrt{RUgc2&HR5UFM zDFGT>?i4>A^73)~1&DKFRsG72-355V{2!LnptU3(P`^LJla(Y;uUZxUr3B*n6;8W< zEoMUpC*L+;*?C4(YWA52e0-0LzLW2L@)a*R7WxRG*+YvA*nGjXd{{~O(=htqBPoodr>Rh!J2^MiKPEVkDQx`WK-5!mcm zL3?IRP;1tXV}N}e8{8X16`tM~^!47ai2`T-*&GP0s&CWPJf5!R302K%RZZE<8o#D2 zP)N}u^`y@JR66?_mHp{d_Btb~9Ne#}|GCchU^?Ibs(imt`I-+D>^_S#T2|5--()2P zz=&YW2&-z%v1+27t2njvJt;TwGa+7ezZB(qypW%m(tVZNSaeD1MX+JH@cs;5F_&shxfH78#li#@kR)VD zM^CP=X}60-yL=>1<_?O=CH|hQ$rRdE<O%AL9po@{it^&yyC~)!#y4R^J4F=2MbzzDva^qu`88_~2H@i;)Ctu|Cev#k%#mGMR*ulU{wwzXN>}aXMHCA2XZe0$C$$;20+QzEttX3P2l?O`S z95esR zE(Mu0{bp6rc+6JQYhGAsRUr=&D6wYNnOcn-TUeSTa1wNPL7_BZWP7)9=O@V6V*%M2 zL4_|k&#z>tW#&Tz5PaQ{xZYYW#h5c0U?E4$3+trS-&dwz&V6Dl; zOU7iZVu-%v>PwznteGNHL~ZCoq;wO$%PJZNQR|$BKviK@c4Upq2T@Qz%o-a2um~pC zNMEFY3h7J6KBP}e`~tzeYQ|8TNoJB6Of)V5 z+KOVMX>6-Tn1Ki+44sV5?d2+M!H>35^S0Qgt!?QmTM;B|2`ZIETh~h5${oiFE(MCp zeE;X%J4x8A-^cGq<}T-+^*PUZ_UE?GliKx>2@Bp6Vn3j7XogMKSB2#7k|zFw+8goS z;c9^tS;S~mq__^vuf}7KsyntqKH*=$l*Aq8RH@dS))CN`)v8P7@*a>&V~Oey{3GKl zQ!i~%87SEPs*|tA*h%_V!D2-)nxh62K zTjFD&wPD8Wo{waoDG^(0lSHS`ZF!vpDnr1mlemL@mszT6pSPdXXP9bts%h%>x6ALk zUHpOKF*cOYg7wQ=MMo)0m1Hv|WiK&b+of?`LQ^f1Qu6jI#+AM}`z1=F=;3M?S1M_tl22y(Jb#dpYY)w3 zZxK?QAR_f!m zqt93+FGb4s$KQe-dw1J@fL>d(M7Efsfk4kTgX7xei8b*wJS_ROZdII(m5~rTUQp70 zw#T}X-^%snr*nL!sqk~LO0i2TcI!t{+TQTS4V>JIrQ`PAHt?)B7jbVFr|t|pmsm~x zdjL?JH|5679q!U)@{#ty4=Lcsq5yL`g+L;6Y_b`hXMeJpXea$pPS{6ls;X|^Zv`8I z4%I|3iOp22@bzUUpkccbr)Y9Sbc4(tp$Rv$&2-ftAV>tgS`3$W*|gGzky#p3eT~}6 zT!q3S_u06S*i`+y`4kg_YNsD=6e&Bsl8VTBWW+*TaDu@Y#H6R9F{B1VAz@TJ>1|B5 zqbgh<+ zC3upjJ_o~7*Al`WeoEinb$?-!PGN;(xv_iD3ez8Gsr%m#opyI@u764ewE#4 zHOEFpfRP<=pe#6H-QdKXhVR;7l|Ah#_M)Gr~<$ICwbT@?grpLG_d9h9=;_%ZM-G2pXPna=$=2RK2X znA|K*@el@xdsDSI@yJe99vZ_W{EZ;;M#+7HtsN%S^9l>BTOStn#Xf5azv$OKR~>qc z4HvQm+GjMOyCiw1mH!VEF{^T<{}Qk;@t5e4v8bKD+Ulm$ ztg3@Ds%??E*wdV6kc)OZxoMdR^j;X(8_j9SeOD?6;&V89Wb34MUMHLTGTU}re?I!3 z?AEiq8;Hu15&h5Y+C$<{0cufDU|Sv{Rg5j>wTddW&w2unCVE8%n{dcZZ=!5I-UZLu zE2PC<=UV1a;YJZNC?Z&;rBlKW1We%zVOUtlHps_6^)D`1s;_urF7Ieci#@?bqJ=*~ zaQ<3uBK%Pus5Zt0qg~SzKj+hQt>N=d(g6oK(|fxZxdjHNi=}Ftan}jg2F+061bbXY z$vV-hTL&g9W6q-V@I<_j{_HP({gv7i&+<-X0T|1T6eJiXz5lmdk$~DqT0{~Krql?r zT;h`q!uQl~#hTE!8`Tjp;4hcFMfI6L6N-o|^SO3qe6 z$fJaJJydHqr(c_!?slMmxBIY)@I?s;!CG3geO9Y7pfxM9uyt`-JNv}e@HFdP$BB|u z&IhrChtmDTzG4_+exerFtM4U)i`q^K6nY!AD@f+4m3^5Gq_#->nFpND%v-aL`K}j) z^w-nvhKAS^D@JR{dr!KYxQC@@HT5#yPfkoV`n`noEu##ml_Hv25w& zc<%=BMNAfZH?VC}$#Wb)!CJOyIvk6dbGVh*C^;&cgg{e!@)V9)r!c>fy(#&wUL-9l zcGDu$nKBi+>@NT~blLoG_0eTN{1%(>DMgdD(lMVgd#ret#ct##U~KGRb^`it1#Q;1 z@bXZoREtgEwTPKnDRN5?7`o(Hc2>Z4NB)z(I`i&^L zuo}d*s}}X3nywHmF!veXm4l?Mu!o9_Kt8tY$hP-cuL0D-ZlR&UzhC^2Ajq*=V_XaC zUJ?(E_W%}k&Ox?{(@KCHgK^CDP58()SL?Sm>OYOp#@gHYlX_O9^BJ0dbKFZv!WuFk zd||{t-IjC%U3$%OpYCrD7!Sy~11xl)mB``5swJKs`5Nijj-YXc4DyxH%9KD*@4pq+ zl>_rMNI*AP1?6LSJjy}zIS6PcrHrV&A~}Llx7>6uBFc&@hm8+-w*5|CkGlJ?16+rm zl#+l}m)7aHh43}cjkJx-=5bGuwdDj^3*AEBw$ryj^nHvW_gPobKhBhI z5n-)eBCK6)%$#5tQfYt7!;WJt54%pVJS+{fb2XX~YwpwOsx&{qtLSwk+uIWVVShwh zcDTX?tPuk2z({T5PadWfq|=_wp+WpK=uvqPh(0Mwx(s}#9o`quK7<5R8Ze&h;m!Cx z)-#`pT?9nEuJmJ!?CH>%YOgATWej0%Yz%rvYrp6u&{^_J6zx=R6&a(gsV&;{Zf5jD zSM*KnHs%JZjR7@ml3<-vBu-O!?$HXeQ(!O|-XT&|fM>6D(I>KB zwjI6ZbSe9ss>a{hfW6rv>g&|jlq=g;y8V?Rvg z@WiNKGIQp0L1g;q9Y=9}V)w284UChOCwk(CR#1ypEY zJ2r(KaIr}!PQ(s1X3KQsC?Yw9@sOt!7cYZyvMMOk=3F8SCPcu+RHY!m4O5O=`4*>c zFVYZsrL1LjJOkjv#QOddNQdMAr>x>bNG0fRV|$Ln5Dt6f#$c&`dKf*GR0H92>S}_X zn(5&&ICo30?)V@*9ZgVLU~I4MA0twsJH-?deB^IR4(=|?x2L+S3>XO?2x4eOC&BC% zpQpXnWC97Ey5D-?2uOE}qy!j$5Rf{X@rr*_-P)jDH$6ej(v)NB`59Otsrfv2?3n!{ zd7s$AJE#r=eGX-m4~<(l5X zj+8IumDV_$|1_1{JA>F=O_@j!jK8yzfCB!4?wwu7(5 zd`C?{nOZ{d^*@2}cxsBWdDmiMTY&t4&qaW{0vq>UD1B4CnihxcNOfYMpm%4rtiaPS zPk1Z6`$;+dm~O32A~DeXihx<2$EL1X%CSU+S>s81c2qH5c{adG8Y4FH3U8MiuV~(x zY-&4DXkxw8W-CHup%4>FFC9q#CLbEpIynPos=+A9b6tCHF=sHBNin6arwf?%>XkCt zbgdmLSiv3y@O)9&K;nBkp0&c}e5#uEFU3YEG(si_1BzJmCK#+=2J9VwtQ;P~CGquO7$7HLr zx#TB$`0Uw3z1`|s3MI?GCi>D@rRitfBrk!Ok^`@i%9$vq%bLOu$#^fUv*Qv~LaT@e zTl0yGzSZBG30eac?{`LcBcJAk2V&(iRxxSNY&>yk_dh5ja*WDD=dWY3Qi@Bo4i(UO zeH(VvqvdSrz&BY)$FgK8Ufs&N99?td)68&T(#PhG^Pb|7xsaM;=;~Gyn6{4St{4km z%t(qK%oKJyC3pwtIy96WJv=Bpf(YbeF@4TS4y1&SI+CxQl!s2c#NvcIVq#9H6i3`E zC%R^RB|vO}k9z4->F6QQ0#AL;(_yJy$)OQ^O~M0c;Z5?%P>6XGKiR7f992G~{ap~N zZT~20IPzg{y&~_(Whrf1l@WvrPYW9B3x&WS(unml81i6uo4V(bI>k|N0#GFwLmp$W#3d#rS31UZTJS#Q}x{YGC$ zMa;qpcM>s+ya7y4@Rit*`LGs_E|3?r4`?UWBeui4%`Lr$wZ*c z63t#fU!?>p`jW$RPd7j2FL800(EHYlrVNT&93iEJiy~h~wYvrQd<&-PH`kK!@mE!f zBfO+rg_4rF1lmc$c|qR;Tb7LkQ<{m)EzS%NvR{I5uuhcrAZ^eA%lm_sXJ!(wP9Eyc zD>o8*v6m1W-v5ncHKhv371g$HU{B~YvfigY1#Bh%sqB2EqqhyhMV-4bK$BKrmjIQr zK<|!?<#8`EJ{`8Ot1OQXZJSyh)l=Cx5}`;}eS;s9ZfG$vWRb>cf()kI(08fbxFt8W z1&AKIL~uL?&#H;8vSBX4f0&#R{}|hyzBUuTK^oyDkyW++f&L1$sP(WTaHXb{iOWWJ ztbm$non!3$h41CS<-HvWD)a5ss2=Vah?EcnJy3*Cqh6Il<5R|2w{QW{AG48}zzX#V zZf&)kQ}BP~YvZivftkc+ic}j2fL0c+kV~{fPx}=TkNt{!CQ=3%EFD>>DF)P8Edp-{ zk-VFj-Py@IoreLV5{lE8r$TXG8}Llc4F~$1J*%bFs0vj^%3Y+b()-k?%XuuVp7jGk zr5o~iW)0)oo~#k{Au$KGk=CN`79eN-i8H$rKt5H`h(O5r7SuQg(&c>G*W5pncD>uk z7@=Obu-M7L{pNM!QYyD5Jg3fObtES_A)OdhAVX*DM!CCN#cLM%7S_+LL+~Dm_8hi@ zI6Lg@K?Snz(AjJP!e4YN!w=BNHG?4fyPoJKHKF;^BUyy6*!gbK;k* z*9c0VPJ8$kJtB~47hma{P69K!0%*?Dq<9P~!(E@TOn@9FP>WSDdVPzp_@f1H@#yQO z2t{psZCwSpv-?ROq*JowrQY1uYmlZ4WS_5_^i!Ujm)|z2Pw_sHsDkzyDJz+M$eq~f zHeOj4kY;5j`d4d@t<@dv9uVDk*idt7uCJQH-N!3@w>$cZKe9?9V^-2^%wn2^Q##6AeHegQV_bGvJaXr5; zQ2%Pc^quXZ#v`#d(QXWW zCzewCfxem!c&RDt7xJV#>*Cq+!9J^WzCidgwV(7a`}IEx`~eU$SpdLGa%bDaM6Tw3 zyL_x-t#g6d);r>d88jwiLAhE6Qf;c2K0P7C;*CW%0NBylG33%6D;0qNY@cF3lS(43 zHXVe`?8)e$`)xYtVMPZWIeYf-b%IR2-Rij_hVpIeu~~TtRb0JqxGY_AGY!qUa&1Nd zf`lV3{%Yl$brruYc@BA#N4WSi((R4D>bp%ITf%~{UOpxBWLE{$ZoYdMHWxp~Fy~>KjWZ5sqFM6m3Nc5qOrzTkQfSFy8 z$Lwjo9zz{@(GOhFH(a_YSa<3`J)Hf2qBZWRp+UNAiecqCUQBYDDia+fn@MJB}M8I`*L!w zw%W8WuN_5I(qXC^PFa~Q%92YpU3Q4EL5jv;tQJ=ejU17HZ#|^gtkn2_8dCN9MGX;$ zy}iG~ZWAiz3$4CdY=;W&TlnEN6)a;A=#bSnR>@#F;0Ca=12dDFVM><~%w)?0LL3ck zyG(ZNgS#kSqhA>?mrbX@I+-eac3-$!cAO23u%N?|-Ul9qzX8o zf8AC2>enFhZrLzzysCg{zL!#)-ehrU<9Rs;@ATiDM4t|3At`@nO3$ zZAsPn|HU%YOPQ}|t6vV9vnS}U5ZlNaMVhYk2GL@7u($ASolyJ|PSho!9vQl5$h5Ze z40nmPIB1{MiV|XD zv0+oCJi#2#i1bjlyKKxZj_x$6KlmxROO3kntsD*qXnGokxrp{q&?v(tI80QbG++1Z2Q;f#JQZi7k5P%fS3*jR z6^Pagyyy`G<&59sJ+!j0oh!X7dKiZIX5h|yR3wrJN6<3p2M)btUY|OLu!Bu5(X@^6 znRk+YihRtb?+Q5De|t919N;s*>+%=>8+(XuJ4inyGhs2Qmg5H1h6sg}fW_agLN-d} zo~ijE4t!ge^4-rq6Zv_$G3u3`lPG*b)5#c%NWc!4RsIg_jDIcVgGeK`Td$%EQ>G~` z+mjq%HkT=a6~bJ-ZoR|yrC29J-!5#|C<$R8HUc=x_}7yK(|SZuU8*~^1yMMgaB-*K zv%h7KD28uh1(SZbZNjas2Pm%^|0?PFI+GWtTfseh{2mEvAi4ZhE3`1EK>`R^eySyx zYpP4qxjyGTT3whg0f$;vSQpwI7Rh^bYsqmd-G99T66!*kpjG9v?f8!;p#(y%VtbY4 z8f6oVNfSJq^v&9}y94zvq0Z|NSAdTYvx^bnw6&h?A)HlnWgVFENHgLIF-<@!wl;9l zw2tcfH=OlZD&8h~-J*n$G^h*&ue0S}kq84wRfC5JwDxyEfQS$DB9LojkKdaE_#C=- z0&0^3p?bAIBI{aV{Ss;zQ3vb8USWM^A+53R34MTaFAF(ry5hhg$t&Y;C$l+BYuzHj z0|QD#iY^+lvRom}rH;d&f&^S|i40~?pmf?=ZQ&GVSA-?et%2ibu+C0AjLPKWpxAbN zk{oMPjAQ-AqVEk|5Ivj|K0R50(*rIb>>De_O7S*JuK-_s3-rvw5~WO1y@0OKJcL8DK9*$(o7kWh|gtU8Kp-;7wMY%!w}(Q(RK zT3MvsFGQ-|8LWS}UFO_2v_iRLpWx`3(uPy=kyo!QQqD$xLlTdb-i@M4qQpuJyP^Uu z7L#j3)#Nu@FrM5@9D>7=5HtLBp_lLd^fQ!*V~|#>>Ybv1v7!dh$#io}5F$=_260)y zqM#ot&rRYBraqx;(3nuD6gb^cyJPeAXDZ7v?1g2Ti*s_NQ17 z41`nA6xB!$S|+yW_@$fTWYr5`A}q6^ZxHGRsmfG-^d+((b+cA2eXLsE7}*8C7ZmCU zR-&!>F2eQzMGs)S%|Rod8Vk( zv^XkePt{FwfgHc8PA*6bUp3hqpE3msWU3NPSU+EBpMc}f<9va2;{-zx&cE)8A@+|D zA>56WAG^!GbeG}tGuHL*a&n-udXUUycF{A^MYE--V8*ni7bI^L=b>P|yA~pid0D+B zAfm`=&wfp|HImL$=xwGe_Ax#48rNYmJ&#^UFrL$?tINOW$}azp=6CsjoYUq1$q%~x zi+Q%>;x7NgZ+7|rPrmKaz(mCTOVif`-1uqwnxGp$gJ5i=%DDgMUSmp=nzp$A5jAUZ z|1vdcasMykb&oP-H*FMbXEiRkALDg@vZKgD!4^S$deI0)APMm`Y~!bvIn4tbq@9$6 z)@FApV0jjT1tLNq8nur-P^=)~vvnnV3z#)4uwgCYeL{4(hH_Q_F{rm#dK4Hc7YbUZ zp@!NLf#}@4j8G=Bd@MW(0B5^0Ae)tSI&wC$Cc8IC#?oFxQhQ&QO6XG1ycT7o>a{&G z*4ZwRQXP;r&XaQb>rPZTO*vk`33kW6Pi=ISz!b78B?quuZ7EgV@ydZf{dU`PqW{>n zKkW*b-z*52Hw`$Sa_?MVzn7j1Db_a^k|`}zQz&8NEQU`-5jn$TuQ2y$YnSGg$DZ|0aBDWU1RMtnx z19JZg$OY5-n>&3*6RX}>prmA{h(49^kx-hU6N49xP;|zWb2wm>W_$%z%i#?dg>}hx znWt~!j+A(S=hFPaG7JI+(8&>5;StJOQHor!#{NDWk}^J{ku&<9F|&fzM$<9fsw7}j zV{cHb_pLiWJg!^6j?m7$=aYnVg8b<$aH=Idv)z|_u{f2EhA}syz-3UI$uqUpTY8mC zL%sT~XiKWlE@l1~pZt>tVJd@g(!<2}f1#Sw&wBoU5hN1Si3x6kb85C8g)g%$V=qU` zF4oPYF}f)m3ZO^Od8Yc!i<99<9^}ReVi^B+7MlD4VYfg2ov-{?v(kJ1mNqLr0Kxha zQT=)dC`e$zFcJP*oCtrwQx6(Hw0?ITsMf;}6%xY`s_fs=alB!l4t>e`n9wY0vPkRB zLyoUQ*8g0Lr4=!XMZ+sfpdWE>&(kUL{hk7Hn}R9`v0nFx58#E!(PASwT7ip9?f!x4 zYIsHnO={IibYh7;B8g1{aC5+Ts7Ha_@hKE?;`U@ zWrU~tjO)gT2@uf=&{5eLY^=Y%D61^QJmx?E+Hc`5?R!l8xi0{4MJG238z63Ld7UKm zG?#uZ6WP=*QRBzJXo+!Rfw)ph)PCu|MBOvEHb%X@=LD{gL))uY7mhKetxs){9tnGr z1mTZWu&7~uzyH&yKL>LPS+Nteb@cVi4j7A zFA#FVSs4Tv)rHgTFp&jbR6)XT2T-~64-^(~0!0Riu0LJ$pVNiEGe*6z`?&d_oQ%Ad z?Z3kM@&V@DHne?AAw!Ns71*e*!zqMiL?t3MQyL1Ck3%TjwWk>XE2`A=MFq~3YY(+aqip3p6N`DeC z!`m_GaEc|F4l#P49>DCaWpug_?h8(VXDDEYso(Qw2j;ZcD)rSu1<3*96x-yiBH)|I z&TN875|l}SZ)?8|kX_cd0lf5KjJGsYSQxs*81=1P$4$I43S5i(TW@M{p~#8l&FX&% z>EkOr2^O;1=zMijpBN*gQJIr1H>$?6hXs(TKx)QA5$YwG!Gj*|kl-J6A(r5c1;lac)7!~725KFhegpV^4e^B2n6V6VUc&rrs zP9(se@J7tE>Q!H&*0^fdVYXUF=mwuLJ>L#e*7|1wn=J^gM53qUu{TSFgoo7&WY-ww zz_?%RJJM!X;pxHX25AmLWg&2%DCUn!8ll(ql~WSkk3ct(xtAiQeS+dXV{Re0;qVBtBk`02sW@@X?Xjw1ZdbZ#5 z@vNT;@a(=$fXD2i##8RP-xLCb1d*GXCuA5Eo{!vz3Ppqj*t7}nfc-2rzZ!Zuk*RRA zSbH(tSZ7f4bqVSV80ZiE(+PzOCbUg|io8l%=NxUK*l&gol?EPuUVvTkRC`p<>Q)3x z>!#0tF7XR)(?*C1k&ieY#c*efpi<+4!PTk%BGwC3ka`L)S8_5RZzQ;> zk3YfIkfY$NeqF5AkAS2j(!YayRR5sb!a<_7JLI*cxRyCt4>u*3J*s%mRtppUR0;?C-?9&<6HYs00GTQ$98{w7a~3 zf*IWE4Z28+h{f_m?B6;(E1MqO5#*oLD zUidqtR|y`nb}4I@ynU8q7b#HVaXdnQ5nC?U2TN9UF85G@(4s=V`8tFgZJBO)ZsWqS zHzj)VJs=Ho#G{`W#8zh)mFFeVT>10Ro^a&V5e=Pe^E_Z??p`s~#<*3C)c5gC;} z3V{U$1BDy4SU-7ZBdlDn=Y`f+p!jj3I#WntDLG7){01fabY3k@*01n0q*qPU2dRU0 zCiE4=cX&`Cz!MiLxJz=X^tn()pUHu^s2mO|?UgrrZ}HxGB06S5j*`g8s`!meKxHoU zcwX{mH5HfGjZRmMG8G&;Esgz$2sj)!#P)s85Ch%njruf2*1;`mv^#5zyCg7v_|Y#i zh^L-*263_>q=mAqCsWR*IbW@hF)yF}p9vZ8B+t#h@OgC)^%Esby&9vkS6$c6mtip1?7 zU4D>2Hz#wu%7#GPmH|1P;g7m1@?1(PQ*Gb~ZZDMi_x-A66b=&wSo{-d z6xFZ)0zB;U0Hqci_yFHt;Cl^y2(Xqf74~M0I6h~=$@nCuj9F)Pp5{yI!{tX&Wabeh zTY8{|XI$bp?trIxI~=6t5t-pp{N!d}85U_7=n@^Ze}pSJl>;$6TF}ITZ3>&7FQTAc zMs%QGzXL|pKO%>UuzC}3!dv=z6W*ZKqHilSciU`V(!++h04v_TRxU{6zp{&E&UXq4 z^_+4d`XiST_ENyeetmI2336mU?AlPD@f{hr7CQoY6O2A(F(S_R8@OX9jNtNR`*Ltb zIN#y^4_O8O6f#;JNGt5uBVF19!cHKQ>h?d*1?Z`=7HcN)SzNLOBIN?8yvH#=5m|{C zvS>Pm#nYM=(9m5D4(!Z|t!v{x?>#xNHc&|+6hxw;N$q}cV8LqXN9tjiBs?srso z)Hw2`l)oKlx{DEyVW$cJ;nk$>`W6bD#FP`V3_lUpYywnUa&YwUX4XQ2iNiN~7Q{$O@Oxi7OO%X{Ym2u$5rqKb!`;B1(IJ6TM6*MB%jm>>U3 zCgV}XQT6}^Vedf}JyeR-#^`e}`T7X$8YW+N7xtNa1q+3;>K##;eBEns<6Q{}Yj-U) zR{HH`jqI9(y+HTbUlo<27a{)85Nd%zTI?{>|NXKTi+@f~b2ZRk!9TxYK&mZ`m8`Z!^WQ6g7d^w3&m8V+h-_G$I}P)I)+F#YkZoMhcy0Alp4rZ_NRN0IoMX z61uN}3YDG~J?aLwj&iODkq#p*UUuDFmc?fdjLgjiw*JChv?n`-``aJo@}HyxdyI=} zqaJMGCMO{z8C*6yBiQXOrycMT(bZ&q?Dt8q5xj=&Bg$N)GL<`v~BKzZ*VX zj?mDiPxKEq{U$7lCBzNXG5O6g#xrk6%~ ziS_6~Flr$fWo=qSI9i5$0XaKCKbs(>8(F68xPK>eWwFq=0wlVTEi2}Y1)s+f@4t_lxV z?(BI&EV+q_b4m%y$tWBKi;B%>RFxs9v7G`T5+S~)H9;sgTdyh|Cea{vh#v8A% zzB6=3K|??<4Lo(vjJs|N6pWS=)R$V~6kKw{@*;Q7*BS;hwp<&cFbxD)~ZAf^a3 z;gdT?V%()e+z}Pd<=EnRGaZw^$z_U|E9yrC5~T!!ypIT+xxpa<1yhO;BfY_nA7p=W z4%tXcrygEkZCv0t78VwAvLnyd+T=ts9*_f@g>HL@Um{tMOGBKuCD&@QN(5thlZ=~- z;6+{yjgPjh&kT<=>UQ*EjK>)z*p_HXI}}0?EV7hmh)D<)dl)Mp{JddSLWQ~W{@0tb z8;7&*?2afxfi_j8%n@w1@q=+JU{G%>94GV%V`R=xW)E>vox_6n7Ev9b4I3ydk5%$h zaJ$H>^F&U47SbzGLoD7*hQ8c3$il(SlO=xGxE8$a^Sn<%sANQ19tHWz+qONT%4)eF zGc?E>*&y^kF8M(t7U3d!wl|t`wO$1C+$;u6nbn>i(K_8AtaNxkF|7${^OQuO17B(} z+*~-xe1$6P1El^{)uruHO=xIjZJb|P{HwBShqXGRy0jpa7j4c(ju~kl0@nXu`<3Fg z-t-#N%3`l#jO#y-g-VM{f@a+W5tl#)AU2s6A?0X3m6j+vt|h}d{bK=0wWkFFY~6rE zE$z2H=$mBCx6?6@NlKl6YF(sZNht$1Dg@dg+-sAl*OQ?#ZuZHSwv} zR^Kvg(_2{VRuVHZcia=?f!e@@9N5t`YXkoFGZw=vt>2;scFTiCIUcGJt4w?Kw2q1}!ZkiyN3y@&k6%(A`k|&@qZHfPUj0Y%QW+S?avd<}s*r%q1 zj1F(+EOl8K`I7nx~VNZ{AIlnd|XPk{x| zASp!9_ApmU^!{TmysO#3;0g@Fxf3D`L+)Y@&J1JbSUtRw^gO7_V&CQ^NM~`y8A4*A z8{od$hzjjm12ncB;6iA;koPG%faI^+T0TLg4=Ps7nBY>)GT;UXxAOrv6qUQwi16zT}?yDO$sm!cC24=HRVnu}J!&r0yv zU-r|32t2*4-UxK%wRSO1v}w741)l@}kDWla?QWwVDTVCRQoFkX9W)ldLvp*{9Fpj96V93!R+}$!AxW>{mns$x-!u#i~~NK z0Vi>t=)`q`Gs%0E|AJX=+|(}siQAC2lnNzndyW2BMCwlMB+t1@MMUt^FG50i>dHc8 z0_D~jN(aCqhb!4>JiC$aH|fnSRlkFWhDuJbdd8ggv!xfXsjq;Qz{&D z;|hgioWV^HqE5+c`Jr|gEY7rk6w2HKiW>VIONEmWdxKJhw9sJogodf4X#cno8CyhIduCNQgG2 z1TtW&85jco%7Wi$C?+1rHAAj3eV1fYDY&`WB{!UJd7IwEHKxpki4gfuwKWGI`X@x+ z&0YKZ-~H})f}b)yf1g!Mi_@gVaW=aV$!AV%@|)lORH%O! z>TnJWZS@S-z%E8meaQfjWjDRsMY{ucrMBa+&VDhgU9KAQmdxY~V&Qf9J>B!sIc;q@ zjdtH*E3W$%?I!Qn*8F{v>Hey=I(O3>)Y;^!cD<5rV2*2Gcf-KvLc=Jet=Z`{eYshl z&GWO9L%1t9-7c?ZbIUO5TO##+oB9%$0pwoS(+zAsofq@uMH4Ulo@ca$5+vBCZ*TAw zA7)}s>&kLTUaC{C>0yZ#$LfXhx&~x4M4K;kwdOpX7{USD%ZBx`#XRm^GVu9z&`$K7Dgu+u1IQFYZOA?T{j0io#JYvI5_&IfieA$%(4$Xu^f^BifVcZ>0|>FY$=G(c2g9CT<{ znUSh{2mo;I#H?_xQPr5Z1WidDidQ?9r`tgzP_sAdrQ390-sBBbNQ zX*6JAVIuWicwBvF_N%Y2lEl|2-FJJUD-gh>$ha3#Id}MsbC3XPF-c5?e-Ln91&B8V zmR@U45CQQmBB#hvEP$NyxQqGMV&cv(+^lO?|4ra|eg^L2QyRg&rKRO1vo2xX<p7 zJuAK(=H=d@z3XmO50yUFbacA}ybGKp+*MlUkucLQtjG@;KZFH{)}~v^uV7D z+wRpjdsCZ@IVI8kZlAt8d8X-gd%6^k|MNiFS+Sa`{z`rN2X-bF#8flbqc)oGeAMcW z9i0EH=aBkhzI?Gtz95oZhW^r~!$_>+-z50*^FedSNXb%`8z*D)y&O|F7iMzsz^JQ2 zzW5whgWttjRqx*sG;ekfNNklwt$(q`bdRL7_)9s6p{vFmB7yg>mnR?vP=)J=S)S!N zpe>YGa}d%G##D!kcQ+HnYlOCXvu9JQ%-r5w`nR3_F>?dhJ?V2|_z;=7x{mHlHFE_( zR?#!@5rO*WNMXbA--nbiSU-$UL54Su37I)$aPd*;NV*^9$k9##mp6Vr;v{1J9SPQN zrWU3xU5ozWz;5j!Ok;5s-l6#MI360(Lmx9_6=^ z9#*DO4C3@Wok(}~k5v#BkqxDSL z3*`FQ%uhSrS=xV=1N9#&9@w0iW7MoD##d{1AS=AqIx7p&>Y6Qd58|noSJ8x9uh~Ia z(&3EFBFVrCN0X9RXwUGpj7@LlG8ul?z%4${C-bsPr|oDJ@@6%=WZh?&$0bCxF0sQA zG>Ms?6Pd``z2h_D-tY1jzu@=mn?D3`Ri^1a)8k*E_Q7oVe4y-uIG+dWKMiEDxXL)z znw=@`+C2)4{73!qJ75bQH)>XTY97~=vAO+{2A9T}x|()h{2Unq4;FR#@{nlyu>IlB z0IGS*SNw@=u6m-|ceA^{LgjoD2h*Q6eh)eS&SNl%?Cgw&b!V;y=!dgG(?EaLKpdR~ z-qrCq^*F1Mlgi2vc!QpmBiM^U{W;71jId4E z{R8-rZR*pp{Xd<~r>E|D|GgE!k5LaluH(U3gHft~ss6lPvmSxocG*FR_vl)xW_|3{ z`4<>9>ri0XxRP!6D##GhFf=l|c6-pQr7;C*x zb?vrex;BKaF%=0>g8@Z17v^qyE1wH&kwuEWMO_Ydeg_HC+>-9Ys1y3|q#^;*GxZ8p zD>?O6x8L*ry#MhP-?cs&On=RMW8B&LH8w6|Zi0G+riFTCHo3Qjpnb%)G==|+n_kKy z+@Kngxs(a}Mw;~9k{15Ug~Ik*tV_3uI4X=4;KA0R_{J0{TkNA!!HJ%nC*9J$;%{WO zi&(n2UektZcsqRoF0jhd{q4q-GQDmken-MT6l$x#NtftA{y=(Sk3}x*E_tS{oGl{6 zkc)j9;0y=rJmT)#rvfc@0Ft#B6A_OtC zzHi5(6u_+Hn@CG1GBW>@_>(ceaS60e*f-<8X6u_uo4ZX4irij;)T7W%cl^{+3_)PH zK#5q3&EFZYU8ML{c2tK@^=KMvn?znOEh$R4;PdC9blS>U7^4jReg^Xpw&!6n2UHqg zJ(`uChvb>E%T(jG&HW?4<&{`j6NAWEiNw3i5jz)6V{225Iol27P8OwBm24-K@TgKr z)+MJ_rK|*LxSk|#NWA9Jfe4S+hp%mWIy5O@v^HCpZ*r<91gNT&Da`LbFg0$YtjWmG zIe?f0P(XmobYFHM;}Lld3Q5_69{>7Ta%TP@<<4055F<_O5X!UVNlc*xyLhIxX|ZP& zeyE`yBH`1C6-sfSR_Zh0UTv3frLxe(`@V0{3X%mh-$90iW@}#GH&62oUFJD!p}J^y zH!)eYBYjrD$~62JV4W#l?>M%UGHhzFXz978*L=SvKhXs%PSc>mg%UZy_9 zz<5;vvHZilOq|zSoX+&?rJ!Y&T~f<$U9*-Z{F2+WhQWi4m%`wSh*0=5?%tO4L=AtH3pl$q+&~YRrq2Z|LE( z_3rU67I!OYwRbJ2ZAP-pr;`A3i1zukLi+phn~OJlUTnp2-~%E;c6qVzEe)>^KMDV2 z=29J=;pPOQs7wZh!GW=LgcNpEs%qm5-0Z1aIa5&BpFagE-rLILn3ul{aHqHK+bKkw zDu-dht04VRhyqU?P!7c>3lZ1zu=z#|>-o>j;YQth)4c>pplz?=9-!yI@>u!axcbFW zxzZ&MU@9t+@V3e^88>iunTIb2a@CQgSI!=2E#>fGaqSG&c%Xq8ncc;k)Yhayk-6`) z>K}7f0V7P=vqE~a)V>XAK*g?-El5PrUO;(&JxQKGw+dJ!=9vQ?f9JW{!m)$MtrOR) zg%(nrefTl&6n@fTYk2M@8ekc&KiC_T8QG1$kU$3BLxkPeH<@0SXG=KO{6?mFE5hLO z!3w%e2K2^0Ys<#Z$V?rc3vhMvkeROQRHo_n>mM)gZK+1}z}b2;>>eBo^XKtU9e?MZ z(5dH_ow`#Zi3a_tjX37i;4h9XWwJKG;|5a}n#cjR+yzhAO)bl=zcMMv@ zKLRn^`&Q&;c_WtU{Z=EuGlmwX1HH@I5S@>7wAdOe<;|gPaKJjxHkrc9$AVJRz_tWKX^cf?U32_2XQ3w3aG-Rk(QnAaHIaR zchwz2K!>M63rNBxV{((NO;)tWrZnv#7mD`Sl*|#-EhYVH^;`+GM>zE>aiD|Y055{4 zQh%Y9=x2A3Phx?})sZ~YCNqdSBCC1MFVjnACZDh!d5#aNa8fENx;0|Y5~*65rFNh0 ze?;3@g(R}tc)VLy8D2P7C}Wmwat3}S=9Cg`O{i*~*somw6l@gAkGs+S0AWwju-h2?5Odpm-irNzF_r+9g8fGEVOQ;=(uAlGv^$M`h7mUxAohWi1~ zA_AyQTp<~QY68;|LUI#~e~b?WVxbM$LAI?#Tcg z-#9m~Mc9@cr6R`H#KjAm*e*Z%RLvnWkK(%Z2@&(~USL>u`Lq?nPycF}1Ce1Oq>GD6 zE(eO&be~Spnd0YB*n72#z5jJ8IgTXPuWM)D`VHM`ub;$Ew^nmqyjNllx~8=|3yHwU zEl39kGVzD0+aWg52!sXOJp6ArB88EgKsFl>_kq>g=JWJFLqFc@k&k&2VD}F6(JGR~yXznG) z3t8;UN&qW{9RO7#FZlw7X1kaoBgZI{m^mCne8q%P+`!7GmXqFZ+v1hoVb0$Wx?G$< zvv2RK{9wfynF!5n$DZWiuE--4#crsqk=DZp?3jRa*6>+(RIJV9AEgh=58Z?RJ{Zo4 z%*Cn*TI)%%*9huc(!=tm-b!EE8idJ88Ku@6!?TSuWW8JRl6XPgnpf?)Ae?QLKEo&o zMuz|3yE47IVeM_5x^4CQ-=_G!CFv#X=Wk(LaX4r6>`S>%o?-jdi~m-6Q_!<5yx)Gy4Lea~ zA#&Dy7p;l_a3D~avitCAXcDC|tPN0md{!$HiKRZksm^W6?UFlUssGPcWrl1Er+@fl zJM~&P$vHajLV0~tVUc*HVQ}XwEWjbxDdd=NiyBUJZ3J`D2-) z9mwE<$peYjtHu={fN=QUfs*PhBEu>3;0153rTqn4wsVk4=8sK1S%@aKSJ%HUBK1ke z1WUR*+!_ylR%g$oZns5m#KhQ~kR|r+hpb;+DA9+2<8OdgFuvp9nxv1h)?c7g}{1BGOZN;Qy*3`%z>ylG7`#dxcDQ}_w!F;o%e}p#^(2_zT2+;-4FVz z|2Hz=boI$uBGtwsmiTZe^UkBM8@(kt;i8~fJ;wF<$FR?HBvfjx`I8`UzgV1HC?kar zMAb3|U6F8w66b?oVZGIb9p_^XOd)X>%K7yFYjTAsbr>wM*A_@2!eMwV(Xg8vQe_t= z2kU>g)?t7PNUdcnHe17J3VKCIr#!G6=jIm>{h8M&%ODXSoMdM70;udm^B`XZ7f)4eQL_68kB%bZo-=AVwt&@e+;4{$CGh;A>C^sRo_W5#i(yS?l);hJ&cKU0>Po zof+W~_Pe^p3dyMHxx!}EK|x~Y6%rKub!qdc-R5`twK=1=%_NRs5(@p0mHUZm=Ge(T z`*$KJc{@D9n6|^4`YWtHcB-Q|6CJ;YFQ^oWzK2TiGZ;XWoMK}pefyO~-zu?$faiIZ zlP*0Ue@~L%MNLP8U<3{v>xP#B$St@b$in@ENlIM9s~}`H9BbJSWRcA$F?aHwS1a~T z)n*~yZOvI3VIQ*mP@zcq-Gw5m?BWV{9uZdBmrCkE9F-3o=g$2W2fWh0YO!vbg<;&T za!YkvKLHntTGn<6BR;FVliuWcJ>A;E>3nB53hSgqVMuJ#h_M$hs*4jFT?J*LRKAm? z(j5xRrnFaGmg*0luwA~_Boi!cwrLAtI!hKLfCS5=d8 zrYIXU4im?NRz&DuYVF%k6Xk=KzSwpG>)_r0F>)8qY@%*WBfNspGfDg-kSw^n%I;zR z+P>)j3PN-z3&nLW$5&ck6du*bbx9m1o9jY?W^-LHCNIT(2QKI8V2kb;b zHLWVd(&-VVbP?oQHDInk#{%VnSmNI3e_Z}E-u51P!5e+s?KARKUWW%DAR_Z!8Q~#b zb4n(*P^Wn|x85t3^=Ag_KPEH5m;J^2#6&48yvX{-8$v@)TO>Bx=h|3Yq#;5VoeYz+ zBm6F+IeFuCE^Vo9GjG#MuxU}^m;b2z1 zCM2qD_8ccS92Tj@oH$;5i~!~WvK zKD|@gQU|;*o{`wVh*+7po|$k72Cm;Fa?<}o9Mt>UWsCs?jA(n4BM~njjc4*V1yvqR zWRm42v$SUU{C$|JEtjlpK7I41Be@V#@iG}lT{eIGaKbemao;dO-||FEsC>iR0!PZm zAte3c1Vo9j|D?z)@i7Nn0}cY>A?ZI&OsG+|ihb5;73Rc(046`kWbLgZ`-t6>c2XJn zx|?$uM@`33!_AB)3i)%=hE6bM6oEg8xDhbM{$M~HP5T28W|HVb)`DGNUz;&_g-3po zKj$Hlfu`7zyibC($rltZrZq=(#1h03be97CY5Bg9D-ete*u12Rpht|DyaI-q`)FzT`E^sXRlt#7hJdk)C%1 zbhCq7J6OPmcBzU$55%TgsxFrl2$1Sa7O6WY&y^WhU#O%e)%u2r{SoqrShM{Ro+k29 zle!ZV1GCZoLZ}+Pn66&LdQ`F4RCR}Op}wTn{$d4Rh-VKzXh?|6GA^qPHBP{L{+tG% zzTp*~A@9YEc5}cm?I~#6B=TmuVezs-v>mY-Ael%retc~QNARlK-%g2itPw2D8x=>e z@=@7C1Z@a6(vE!XwFAJ3XxdoP!2`l_smVb`S{Y2-!l2Tl>|G!i2WNL#k?Ft+dtSaMu?Z>r+^5C`%3HN(5P1 zAv^MOEgssP=@04;D64wA^9|i)1YP8>n6`J9wIXwRHF2W?V%5ROeb5+~vU*SR#02;> z^WNdYKBvSTV41yUk0`HzfWGX2%wz8&f4^#;a(_CLX|So}Yx$Jbe}{>a5k{H`AkcOW zJAmcIG4FJ)NZDJ^P+FU(#RkgGFife_v8mVE{tYOIy}i%Vqs1(4oTY}!Y;1snlOws7 zJ-Y7aQ0g4X&3pTfGEWH8 zbz2wz^0QQf0-ctn%2(d{>P7*r7UsiL8;&@~)TXR0ti&eq4ScLaMk|1IHBHKhj2}jT z2%xV<@971tOWw09f|?uDQ0jktW}X~n4)9u6{afBD&=3zaoJKJAt;jQdBXIq*0m3Jr^0tv4k895A{ahhkRZo zPm_bZsU1H3F}XheJD;&Z9#@zXuGT-qie`8C?B1@XS;8{eyI{@?sq1pq*dB?jaRn|8 zwWnTQ*KSa&e8w8d4`=ffp^Y$Ax9!)edhOS$)KQPsT1SnDw_}T#7ChE0rZK{oKC_j+ zS97JtI5-gfgFMc~?-3-(#K|35W@Kiq?x$s!w1WdHz2;;b5%z$?vQ&T^B;KeJsN1^Y z1vj%6aB7tNd+AHVK2`K3os>)5J2WF>lF{}rIi=YBdE)Vht-8y#M0(>*J;xHE^L|}z zM}-c+00lnJ;qYWZPNCX>ac@3jnxu#R75RJ{BnD5)UhBKR5Du@iTyOhB8I3v-WKW-+U3Q_s({O z^?vY5AJ#Kp5y5A>h*D0yRK}iDF4eLodIxG(OVvd+f%+qXEVZeKQ_TRZPx&}KWfx6t z;!<`Tu~aANzJEpfZ8;>7#n|eaf^vQOo9U6~>;MQ%`NSTPas34IXK@+vvPT%8p@1^l znHBB%6#amq_9b}+>E_;t$l%m# z!xY4kdRjNvGbU{fZ7y5ERpP6l5hEtW*sQX2-mEG}h$YesJSp-RzSIVs#VKB`kA0SM zvXe+T|pN{a-ui2J+%`KE|1vJ(Nrq@V$i4&j>RtwOW8@#m-oE7^zjtbClt!S{`NCD zSF?f=rDQ9Luq~N>{Q%fgrrqy4d z+EZypm_Nh)qXs=TocA^L`xv{00$tSX`0bMwS(G3?Z5x}9!(HI!Palxsk#ooEba6Kq{6&uP^Ra_mhT1Yw-rC5FIMR%^pz?FO=N>W zyes;5;r$Tux?3wiEUxE4EVnyqC43VW(MRi9F>-I10ZR2Gd$zrPcObv`m&$<>9KX@2NBvJ|>9ToSLexf4}^KU1aF}{}>12L%?yFEvsS15gQ0gYow<6li@Q$FU<+(B!G z8K8hi;hWYg8G?;0+{O8kL@`|qeU+vUP=iC>u87bq43uDeMdb>U6?lX9LOf`( zSyHRyAKR)glkWIDA88BEm-$_`h+D7zT5?LT{x$rL{~?o1%;$E+5nj!A#=}xMmIRH~ zjc@k$vrzT3O%?B>ByafLUneiJX&{TJ< zh_|#3Cmd^XE)#dy%!=GQt6yzQ+)Ns69>}CW_`kCAUXa16BC+YRN@I|fIS1m9T7hJF zXO7&ZzwRqm0`&{gLX<93o7YsRIIss452CQt^_hd?_9Gp<{t>@1ee+ z+3L2w_e1C;v(a6nf6Q@}JS!M|&kbgEhex23Ns|=%Vns|@4$DG61p)*5kir_y6iGSs zrlBbJ^arE+*mXxCV!Ot>p0Hm=@E<6fcwTFoOnL4QUX>RyJ zc7iNrdX&t9K$tA_VfCw2qq*Y$(GXR#4_BD5Op4Y-Sx4ZKYgzgg6ou-{ZYZrdZ8n}x zX$Dnxm7GE^z$4;wNl)L_Vpj-B@e=_>(LM+<7TBw{LShVW__&tZB6Gy1crXvDjXy~B z0$>bHC{ko&2cT&4yc>Ct!dr+C9BbyHjo$2Y9nfP#DBT@{g|ddDA(ZV>F9QKl{KLN-l!gSim(BDmj03xi>53jF3oLK_hbqnkv{K3AvR zl*g0?L%;QT{zDXB2!DO2;-XoV)@;8ykH~uUst=_L)tM1KH>GZ!rx*pR&FO%Z*7jpM zjpdkTL?c{zOJnjAn$PUZS)CzvdZvKtq>0=A|q-6j!mq?Pwznbn==*Hx2fKoeeVRsKZ zM)bKxTzdci-oKX-@{^n-8j}ihOBG_B_b9!Wkz324caTpk0=fuyoquf1jtdsbr$Ua| zl*jxYipnu{V$n~HzM=stp5J3kL(a9Khte4#JiOGE)%s<~bcaFEWAc*8vH0mKcLA@s zK|Dc4%-t@YHKc-bM0U0<$)j{t(*`?42+{_I*o;2SYmB=K*iOu7 zp-MRJC+SjiZ_=fs*2gdd@YyHkf>PC1V>4-2OFS{i{WX$n}0>IiT z(LfQp&N^J_%NhP&vB07CS4r==#8QXOqlqN#k#ru*$FhJvED*g z`pyIT-m=zuJq|H@k!oYZ|K;x8<)KgU?knRU=ORC6rRl3la8# zWKzmbkcW5DQzeO#Xi!SwMytC+W#HpUGK}kaL#*B4G?Ed%Q;Da(uj|-;Ev=$;^jNK4 ze`$d@p86tJ^9MOVOtqCnsmPmr^ws-2pR?=zhzM1ldVhNCHZ2mynuxx5 zs;q2DOz7PIGjW+SjPx+7=}EcSR!9u)uFonBp@*qaEJLiGxj$x%;Tf?uDe=9WA7?u7 z4cIyQ^yH(^d&y^^`G`m^s}1QFdzyM3p_~@YB`tOW({Z>|&gw~#V?$BrQiy-2vq6Jv z=du(q$}er}x~E*-=E|<)7bd&%qt*vz!=wKCzWKu&fFKuoTxIt6qX4K&r408ps;tET2 z;*FtqWTWDYe1#L*#CTh>K8aPaY*eN9^=H{Ifrin6Hmy#4S+)dTM+(OJsr|d6>$-DS z9kjD`^GYn61u5>7nx4KrrKVdbty|*VU@F{Qw3)uJuUpUeMp|MOU+1no#yd~+DbqIs zBcF5I1V+wb>n88A7hp2c8fX@_Voan-5=wOizes#xnIX2ofxsrzL>r{;Uw2S&4RN89jEs7KewgybsZm7Nx8kgP9ZfLp&s!uq{7a{3W^a}f#yzc{9oAr zA{2~S(Hz|rJ_(oLo$K<~N0X(C4(-cDPG91e%QCVCblx$Tl-{4z(Ak^taDU`eLXEv1UD9HL zqoY8FS4+YMqFel4lv@shu)602FitIlcVKK!LX`Tjln>}eI=9sG6iy2#HkVP;Ok?&VL>4uHvk?792C;CxeGi_YCf3w>v6I51r#U>q`7CV2Hr$=V%%7fK6MtNTbTJTtnymVNwBd2`j9xte}qzw(o0 zscBRUSwqDv0m3^a+H(Q}t&p5oy7j9g4eF*rs}nC*YPHIw?i1BpDsT=VnNEw&TDbY% z=U7~bCc1Jd=`s;vG}`v!b*mAYQZ@_#zs4W=5R1(~voyI9`4^URhbXbWT?0u5w97Ub z{;rx52c^Gao?3rnH-->i8Nb4vaZepIRB>~-L^kjqF+=*oeg_n&8vjWrux+4D)lSOB zx<|DWE;CO(k6MvT9Rd`gU$`y&0xeE}B*d*efaTQ8{)9j&feh{GG`5J(@dp$@9v=Pu z*lHRWc!V3!&~*HD%k5P8ejbCP5f_(=6h|6lo!aoOnZ&8NFba;qsT4WOqecHfk$@S7 zSi_j~3;UA?4uGgItPJItnUimDOpwDP%FqJ~6d#1|YW14Lj$d1kno{gh<~nr)aNiw= zNCp86-clMw4v5~T^CUtUp6~};wC2@UUU^0Nmn<{BEGu;4CwklDp1M_RA`3Ut(%dY6 z@s7D^iN7nPUWRg-eF_=`W76QECP*VCt^^a(_|lUN_Y3JUGuuye4%D=j*Ws>YFPub>EC<@V6Vd=;m-0y7-}a&Nu}9Ub$@>w0choU^~>FMb)%#u0r!$?@A= z7rJlR`#Q~=yC1jL(BUjP?b&6Iq$SXF+uqY%)Cz!|D<64fZwllxh+%!!y@JnK|N zk}4}>5DG6_H!saL{Ugu@#S|@=-FoGDc8xS*>{gacN8f#2t{2XjI3T_KXjw48csyQ1oD-G%;%_+ zr7N&{SuJ(1D)J;S@yA&Y3dwaa(dP@UtgG%Vh6=fCjeE1`V5mMmMf!PZz^KYE^21B@ zpChF(TNn`-U6r4E@5KQ+Hbxnf^aWqI-7I0mT%9m@)s~wYe7k zNS>G;U!o~xhF^Wi?Y|b4;683_s}PJ9`=mt&Ihz+32kNUwi+bUJebx2g5^IWu#@FWW~ymCI0Qqd%yxjXWo6f<4y-j;YqTl zv-RQ`YZg7i=plU4IMo5Rx010_!+6D^-_WYnU>YZf=n+VcJO{c8)Uf+iiAkA28_Xwm ziT&k&yM0?D1PMl`wn=m*G83uY1xm85rA~X*`EZ(lvxZcE02uH=hS*xa5sJj z`U*$cCwG%qNI}8{g*X4Odk6K!>FM(Dt~h+*%}?e(=b() zD9A^Pc-1WxI-a)@-t0d7am}5Rw(!cs-q+$`IDh!Im+~lX|9khr#9Gl35W-eEC;Ih5 zBwhl@&dJuToF#BsHmJP)s8OQK&&l4S`AU6!yD#}o8Asdu56T_j3i0g*iwRY<%y=Jk z=WB{Q;SQs*aBJ;{)NrwJNnT6o*jRy9n$O*-1#E(z9s?mH9m~CAW!ZjmW>ULw)v^61%Xc zqz(8|eDq_(%JWrJ5tj+XDrJYA&RW2MIhzaizZc({|yYqCs`P#QeZU zgP3IN#rvrQ8WBU4FYLMuDZf$OMSjHxO23H-wnSXPjRMi%{fVVg0+EhnPkePCK^=0Y zctW92nIZmc5e6IovRv-qyI63;lrct|s zt$Uk#YIO^F+1toN6%WRi)7w^LgfEQj%noPEmcBGMo(Uqj)ED{CO(}I!N_}khM(v^T zl;WvPd!j*nB@im9ctWnW_*{~;UvgL4t^!A|AbQWg=v`zd4?X!7`H+VmJOCnE-DW=F zKksb+D5$9L0CN%t=(KEeUY;DAz95^>pO})LYix|YN6w&i$CB@0wFnXh4!+d?5VTfJ z24?@91s{#qwGulT>ox(Ba}c(wceN?@*{ARhm=MiKzRu%xWk(5RB%FCv1y&|M?z6Av zBZ!#~-4K9Nzv@jnR=Wnik`KCFl4{0Lsj%=y@f#l#FlXlx$2u=iENIEEP5OtD@6W-? ze}1-o;13xdbsz6rX2i=1KZ^HM$}92Ab+YZg59Yv@?Hu@E%sV*v!(xn<$4w?^o(H?= ztjy3&YKz-fU<6r?g(>~M90_s0Cp1_n8vr^opOAD*ajQ8ce>%={rRSKn!d?h^McUqSVmI62QmH52EMLc7`u5GV>-DmVXYb>TO7S%n zyH>h*NYY`3I*#1WSRY~uU9n%eK@UMa2+a)CH%qeX1AlW8mY_0S*D${i@#tWAqYX$Q zc7k~Bu)?sw9bu1lJMsi_sLy!(L9*2&Bh(EhD}`X?K`GZ@Gup!u9|{Dw2ISC$R#KEb z#JU)CEP=Y2&SOkAn`49oMJ~h^N{|THv*<}L)sr?wlEk_2DyfhC$Ze_vUey5v&oZ{E zfv`;@2alVZWsU!8s~zt}OaUwB;d3+Dz8PsOaCYn^x40t`7*hINe%Gsw|!jAm{A^08PHzYV{cPl=thwuW+&RpitX@~k)0w;ys`)7S0Fv~#moHO_lSER zFb+8PlF?INnRC1lq3BKHH+>fXpn9`w1Sxu7fE6gGNDK>-XiXdWd$)%6<_-V z78o5^j&=|lRIMKAj~gyDb}q+_;F~qSV4?ymg%a&g5@-N_{4C(qC9P?aKPG{|$}NPZ z!UGUVfiV?YLrl-rs$xbnegV#)E6m@%DZODH2x}uD@?;9tRJp(H@W|wWv#?Msvh@a`B zr!EhPA)H=J3@q&zFHf*;A0l3na8PAjS)?FTTRpm@E-_zBwK#H!&eBb{=3q7{8YeV- zcI4AVji2J1vcXGe7dJ~EvZT?*3OfOSa{Y|Y(+j^Opd^S2`RAf z{ozGW%Mq-Bab-b#D19Hl0CT(N0m~`lt6T__WmbD*+t1|0(du$Jc|_a;qdw9+`^Y== z(Fmz_=8o-)jkjS92ITNXuA7-ZJvr6P4nF@R_nL`0bDn?A;}pVLMzjOo!08=}-{tM> zLa~)pRRxWI>q43Av;VHvv{}}46QL&KCv;|jUGbdrQGAn`y>eB2iLpdg4 z+9mg?-PNXgv|dOf4keu*Ih3%f;|YC~G5iFK*OBz7Q#31R&dvr!xq(+sP&%cSDjc~l z&l4UXB!9fGvexer9DR3D_z;`@Pj!^arDAg?+(&ryL-o;5OF~EjaJY8-Cn`IBDDWM2 zJ&-Sm>klwWlLFCKWAk}KEZ1gMU>~%H9WTA+T#$$4@gYdG%W(G`(^!VLvc|kaq0% zZa9ztb#*3)Ajobd5jG8IdWm}kC(pyVw}KVY*GpX>hsAE6)X{+{s!}Z$#4bidWa;Vy zl1VnYK97l$MyoeKi;&x^1Y>3V296Rd=2(6q=<2H%|gFofAw0}t^J=OFh9GQz}$*s#;uolK>~2QkScXJ`fWtGvC6!-Y@?MP~lH! ziwVc}?z_d4Bmg9{RA$aD@<%?)C>wppVsi#e=}GS+mRWcTLMXp>>5gFKM`!`a`6}2d z_{$7W+~=e@N7r~#a8w!U7WCd+1Ka8dKrEcGxWfC1zwmwd((Lp{PiOlkN1@e;2hr52 z*rl5MSaHBJIB?~%8^m0eZ^%-NCZHrOL_)9u`vO#EjQb|-bXQ-!l@(T@7t zxMSGAyX9wfxq4BaUV8btEYSzqsG^H4>cLW(eJeDFu`wm#?|)N`qBHS|_O~~JXlIHV znUndJCuDxZ_`8CU`wMy-A6$(d*3FRjN&#?|Xncioag*VUZJ-7}%q_Fy=eA6^ zi=~pA;JleZYr<@Tzdg_)L=XE%>|O4kX-^i#yw=j0)Qb?Wz3Xn6yjZp$e(hC^LKGVQ z39n74>bc$RFk_b8y9O~EfjM!~dH%}mn)`3}gwApF2Gjx({#jV$olT_NVq?GmolL5G zFHQO2-1Vkh;W&O#&GoVg&Y_O4QGi=Z=^fG{$H%j@ZI;gFHhp4i>1-KKGKAIehL}cH zH}%NKXj=4F0?W&^4T~0(S3-|Hrku}$7$#KB8a>XZMOK4OWp%XZvpngM zMG!4#D^{yAD)x60FZ$@ohZ8SSqjSDP=uQb#8B?FFFrR-}NQ!czGedkE--pw$ zMjl)nTO50>_SH}Qg&2L-OBiax+=Wlk5o`&6rBU%cv}iFsa<@^yycy<%1Om9q7atTX zjvs?Sx@Cp4dIwpcB!RRwww*V0M}CPq%`YTKN)u;p&FMq|WZIvWK5{2=8*({b`G0k` zzc7XO*}tu1uUS*M0WOtO0#8NY1$i>V&&v1b5Edz&J1rWeDK#7|x>x2w+Yng5O;Jq> zh2#h+H|t&%TzXG-N?vC;QV~K zvE3c!Z&s_-#9>O}wd4d$T`7I|Bb&sXfI2FdMO^rzsv7Ka8H1WC8vsvT)noK!<>q2F z9dKp1g#;D|v!AU)_>yvA`(h3M_?o%y%b$0dH;#UbkR>XFw}Nwh|ez|+A)uMFQ7@9n;$=M;WL=?{pNlsOXtkAHD%6U7g}L zs_)&9QF0WXl>xhfl{pECXf`8<)uD8-xV|lCvY`_%!Ky8p_G=b^N?^Z=7_=oL4OGXk z#8#7ABPf4|{V|>^%Z%Id6lriw?>OuP$6t5NqC!vTHt@dAMRM2hO`>0Mu{~oKdzh%C zTJ#A(Ow={d-7U)}G~F)dYamymNz25K`iVQa5zTwD>qhjzlL!#xJ`}$})QkptP; zXIcKW0T5tha{Wo@XO_cm8-mkze5lL}>rQNxYJ)?x6~Ef>Yqqu)G2IbwjHdFFA#O&NjIdv7?4W*+#N zur*X!<;NM&QNcZwG}8VHcEg9%ydKFoHMf)wqSXDX5;->&tNEJGtC}zLk)8Px3~hhf-Z@{WydN@OUv{UU znZE^rSvZRdF9%$cBR?UL)1P`JridDO_=)(FsY5=R#7zKwLY2k@Vm?w z1|%iDKC?6rrn`AXu6GN+@owfddB%)2NcvWw#~Bs}MRUGny$yUETbaH-Y#rg*xlAhm z2AQJR%W9rFbq1gOKnNd4TR>F0DFK_HY4|2=k`qm1Hq6V6<9PwmRNBA>N=6!LLc0@< zyrLoc0h;-bTp)!i|AV`SulbG~VFY)}>gD!9EYd{^DkBx;I_U}@F9odQ_;PvW0deSOUzS>Lv(&pOjy2gG zYv9*mT}qudOP!zKS9hgHXc6>TBY)>mZEZ;KpTb{4iHZ)J^5BKulZ2U2&P8J*m`8Zh zDM?3w98AaRW$aN0fXq>L%X_k@0dW_m)xCNwFk4P8S4?vhFnitwv*%qfd*0n)vS(*e z67iU-{!XeFO{4+zeVIr_aVe62C=)$4ZVRxGvcbDRy}#nUUVCHQM@oWDCJ0i zv_*zwkA#9zjnqjaMhjWaAzBe$%7=d};-gBI4&SQKGbF2`^?D`tFR(%3t0E>-mYXqK zHb-T%T48Uiwt9en)PS%LAYMW&QoGk;1)CZq&ba#i!?4AQiTsSu^|}{{oY>2u9);It zh-jZ)dHGCegN22y{>gnLn}LUvR!Fau!w{r<(SK!l>|eZ&)L?{gD7m*a|3-}^JSw?Z z_Nsr%g( zYDYM6dx5A_aZK#2ZE80hMM9IxS?b&f>)!@QSoVR!;fh@3vd-`K*{g9!BCBDP7C@Gc z$bclhz}t!6J8Ai&(bFZ$PG%qb4gZk7&ZfkLG<&W=ooXu8zSv1>OF{BoN81^E{2omn z|LDhSSdWEg5y)UNfCpl&#us}R#!wUwi~KVdIbKbuBz(PU(a$8OsKYotSifC5g;gyG zop}i7DMs=!v8{{PiJckwCK2AA*o3d-A839Y%^&sV85{U2uC-PlU%P*UjANQrTLL_Y zzn+}ua2l?y?&%|nL0e;cx5&Q_IC?{sc@^lb-yypop`?3nzebFG+rs~1WHXz;XJn@x zF|wpGu4omR{UD3a8j~KHHm}DRul9hry^m*)$|tF!^EY#$7V~HnncI z;WNbIGrzsO+wHWp|w#pMLDEwb7-SoSH76CIyUK>3~K|76cs2@-Ofb zVL@p>bt>q_`rxntG?=Qdn<~Fu#*m0Ft(%!AewzvOa~sBO`KC^Qec>O7rp;S?L2KlF z1`7~v2x@`dVxfXUabWnnK`ZA}Tv^7a1&w#h(>X)A9%Rc+sRRwI3TzU@uVcBO2K13o zs{s(9ih7r_biQ$;GWvwt<5`?Mk~WUCKBc2Fe9mnt(THnnyy?ZNeydwg%l60fJ^Oz& z1QTk2sYzo=f)lx+hQV-y%)-breyeB}5SM9yo0F0w4$aoSm29PA?Go-@M(ATqJqRC{ zTJI2P>VNE#$62P<(rjwSwM}WR{EB?)Q+pU33&Ai|>=^*e%C#9S(VkI5=mB|(y8#K>U>|wbR_EV#g6^pUxYQKg0J6}Z! zwx^f|<@o_$6i?N&UiqbNg)R^(#=dux^hBv7-=NTI<8W@9j+$3tY@g9PkEP3jyTZ`b(zL~5g)(!3>7bW}o1II+tZ*BQOBrW)v*}w_L zKKmx7mqQ2Q!|HYZ#|k5a&xxH+>oWX74IMHQJZ0CHU6D3Xdnsd3*Lyk$&R_hGMgN2y zn4hLEYsttxyVODyx~!!vJ>AoiJ{?z=XCDbcj#y!~YFQYka=Y0St0s)53#D(_y%~jc zYp+A9oDln!Y|@6BZ_dUvQKDxi(5S;h!^xZvw$KrwZs{_dr2rxarU3Z8EgocWn7n6I6WrAM+T)CeJy?-WPf^Okgn(hMh&9@pvcX zY~sEgecz71c!}XEQHw;8zHVVka%cj&}ga5E3zgj)}#3f!FQ zf&spMViDP}k<_HaV54@ISU+%N8>A)f3x`cUL0)E&{pLt+GA#kQqOFpn$gyCeQeZf|JZOy#z9pVK#V@m!Crwy$p$b;z z@~B(Y^>`lgsnqefn~7$tR7Xh)Kf%1kPVFHuc@fI?XN^e7qqjPv2DsF1I$Cnh}wG( zBqAMLi)#6d+s_`55SIz91B40m?9K3b!(Y{mo)Y>(9Sb|`#2n=ksYlIdPxw-%7#2SB zEPo0xz<+uKvxC+{D9a2ywQoD;XW%KAoY~x;`RQo}9^(g1%j$DHS{mR05GybKY;?mP$ToE zv`l`l3e@k>rf0q-FIa6ga5eJ8ek+xkO8XBHrE6InmY_b|Bc+ak)Pb-Fo1O;gS<$%q zjPtCC+})bEHJ%#kVQeM!JYf&w)KFdPkwPzz*yoH1Y7f~k87K%c?Ji4Fnem|R-JNJ3 z!GiviPs!ipv%LS%Kgs+5hkrqL4vsdKOHs0ubTRmn-*bR`l!#>Os>6yfZ`vA!oM+RsONqQz}epIu~w?2NV!`iPZbH50K|hlp<=># zLesW1tRT~xX@!@)w!97V{(YZg{o6}#Jb1BQxJQ4%bH)`HwQA_=(3w65H*7q{rzrF%%$f70N&_AE}xHno4tAXe6@&1H== zYn?f&obRl_t$dTdy+Ge&w!QE{)Ln?*zD%p9yfu&~zkGCu!c1REEligjB(_)8gvJ=$ z#gycK&r>MuRH^)0sk}8H_FKq5aSzRJY&`%>87-yEYE?$7`!%0pTlfP4F}_u{CZXPA zM!~1I7ICR)*qeb>=0~Y(C!qZ@6E4{32~}~<{cj^F8$C*kHqx5l8*q>hA9I9a750B* znrCI8=3Wl{^V?oqeaOEm|(MIT`GlbA&UxYO-Xh{oFJ3ztd9JP<8+@bpN9_ z?q``c>p$7176D6_!Yv%CQmUqU`49-2eb6H6T_)!oDwV?|1=s;v$zARR`93cDH|1!; zy08nFk%0RP-}BdgOzw;Q(BB6l9a-8#ODQ9)OsgzCQByQ0+zowQJhMn^>j%l1?GrTL zJE~J`mNsqE9<8ZSto3^B_)egBN*m8P=?CO_Dz>>-HcI9qGW#RnrHAubwW}5Z0Pwdm z<~m>`&J-w=c^VbOo|0vbe3ua}BIo&T&UeC2&T4+$m2R_hoMtnl->PQS z&?#)Wh1--@9-7T`RZFaqx4AW(?$#jsp)!LNgJlK>6Dch{&{NKMIzm|GbW8tgEs=8u zVO#X?t=}~6A5gg2@12@$WnA9ap5`wkuaFH=Lvdl}8Vqg#v9t-|SkO(YdyZqnMsBWlW@tgkncs(19fO~id6mX~A>iemk=@z) zx&mo^&_+gIQLkD~3k{@I7X7MTL!DN8UFo#yOb@L#3M?K5r3qyukE_oTn#wkp3gud? z^rf}MukPbU-VpD5SP`YKq?^4K*+SRCkUf7mT$0**8A5HdkicC;v!alZKPQ>^C13(H zTpOU1>bwuIRJqc1bWZ-}y9!_(mUHwj`4)j*w+?)uZLu2^bdQtc2oZU0KCo z%vJKf;U@Axa|Sm^eNkymd2NXLC{7qCV`+aL%FJh^2jXG3?iCJlt|_L|Ct@}5!5%SR zEYG#*pX8&ZbaaPr>dYc_*+U1&goMt7p<(6hyuY&tATFtbKD1!-9J@nma10Z`2z;C_ zh3`cb9AfhZEDs<*Nl_y+SII}+Qnv->rh$6QsB}1DXByELA<8eYjOQ$*gC z>P^iOh;9XMv04y>>fP-}>s^6ZWV;pt$}$cyN}1^7e#dMd&O)C=)hH?? z+>7?0Xx`$re+=&vt-b{`A?s}Vi}dvIcjFRa-u&;6AX{@EW)FE-AZ%fT&cvxukxm2< z((FIqDeEcASXQ{Z%-fFX!zx)tw+znt-Vp^T2Lvy|*HY)iq%bT@UHSLZ>)DSz>zeXB*4 z0+V^AavQF#9uEc8^!@YP36uT0`jCXlsq3U|wQxsUjzcHlj629|DF}kcME_*>%@W_V zK`r3KjyiM}3Wbl8gjM=pcRV;vpjNBP5bTBrV@AlEsM+!+NX>&nh`ChK#h}=+&2d0= zAw-;B+@@J=tIs$4JO@qq}9tFHZJ1gqBlEjS9Wc4Yx+)Xf?hs;i{ASODSMyGn3lt>oQ$n6rJGL zTjic148rgUv>>q1I!?|XPwWg3mA3j_z4GsD@D4Q?mme}En~;9vpg;RG?#%AKCDAre zP-UVaSlRAi!a}sE3EVek%<#ST4Yv!Oz0+k;C+y33rzPnN^Qr2!%6g2LfPk1VBLfA{7!goN;5a4p{# zovZ}wtDFWMME@aIehEZmP052d*Hmt0WECqEzNmmOlY(5uR>{h_2Qs{K?{juMe78tC z4wiTmo6$HZE8bcCCE5roW=iqb+TyutOotDRQKf`G#0Edonilt?7R2@C!c>c1Yf5kF zP0-sB&rG&aytx`(9cSLXFg&_yif&r84%b#9rusNO(qTMiqF)ftKiIYq?+I!cjNyF< z)6_Av+@+*7a8jB^TXKq3ft*tNOqj_YS>mA(g>QAx_zhH0;mPEzJ*=wxsY?4{LAE3_3KM9CnuK(0%>wer|`Bst%3o zFa2SAS5ZNvqqp|R93E=c%iyVO7B6dk3hSv!1gps`*anqAk3`4weM8OT%RKg2>JJ*K zH!)#Kx+B(2Kl3{*XwGCaW-f0;WQ5-VtGf0(dIk4iq4CZyrr zq(&s^Ic22BxjZc`0lZkx8mji23sYuFQtbC{aaxFU_~to!oX8f!~qei2jxrtd!2O*Un-hXcFPFm9u}2%*y8*O6VC`uffhS_HTK{J=HrbjWlSk zm$LR#(ku>$PqOEy*07lxVn3ybV<#tV+K-YI;Oc8nO3nEfa>j2J3qxz<3p@kr`g^i- zifDNuIc2Q&#XOjnwCFb``EW82Ok=eo>jk7U!Y2xRySUi}Z;pb>qdP4Qcye2}wPzS&neZOZk(*EQ^dwLR}pVE9)~ zwhhO#a`uwj@#HN}aYSxA>~Ew%7MfCD$?y>wzX`^;mE~`~; zd=)f@T=5Q`l|+fh2yCZ>3ZSY=+L(nZh<$n5Pg#-eOb+mndn#~ z&JEjfeB3N7N19ouQebq0M3pRI=}qhi-1E*KhKNCk2cwnw|DrO(6KV4rO-hqpWqgk$ zztJCwetgI}IU3}JY3$49UHkg2Y8r39&7DT7m~fjrkqFGTm!Ch?!+CHmbpRwXFA7MG zD)+~W*jHF}=y1axp>v6bux9tB;JO}c_A3-*YG^Ahf7 z=Pl<1w&ozn+F{%8xmG2io8nW*Hs*6T+qD}6vD@GL1-j5E%~Jx4w^bizXSYgcJoaG5 zZNKr$uF9V5tc*+F{dxAMd@Ey8V>hsnFUbnpSq*qBo<>7gB>Qu}uv;>zD$>vmT~HLZ z9#m}x8oK;BoaXF<;9UZ^EoSvAtoD#Uao*N`tQe1?)JZ2>OZ!X5#FC{y*P{6tz9j71 zX&kfQ`9q~A*YiRQ57bF#vx+bVT5dl5z>w-Gb*o|QqJv50>X}s^ZICDN0nQc`1vSf(6sUL~Kkl98X?ZTKsT$)w*C8Qrky*Hf z4L&E*k+x`Lq75InmE8I2GNtU8p`l4*&JCXyzm!BUf}{-%jkd;l6@qYH2Sc++t>|j? z_j+FXj1CAq&Z6^7N{;>0>xD9c<_L9i4XV$gy(E))kOpNkb5+Ak=Y3Z>UWLodRWgUlwEPpM zX_kL|4^7Cry6w(eI^FE$cvS;C%>|U#_Pa}Ar`I@66_Tg^|DDB>t~x&U8wznT*)W}7 z`^i7a_7bCkP~}=l5hU4aUriq{!3wfZzKsDqu)U=R##sU5PBc&E6zJCaVWhNXfIA7sf+1U-WA zui%r=uVe$Rj)Rvek23d)c(dR5qv%Dw>_jt`-S!>e_1z01VM}TrK$A-=el%1F)^y}i z`^lk4ZMmog1+}tv&$jZ&d+EV*ROvF~BR@)w+4ha9!4?EnXc*F-@b8mKqEL>~l8if( zaf^Thbz#JR-B50(bV3wH(R}4rx0!vKk!Xo`BkJpG_r-`pDRSnaz>KN^ZDQiNd5Jbx z6z{IB_9sx9CA5%~Y%2bs3YGm9-P_UX8B%%Ioj69wsGQwWA`X13v&9SL=k}Iw5nC)w=JuT{G)(!nj|F=osD*)=ZqdXP8WT2=BTBXJj~mCT8T z&|Q0@HKck&v+#yrpx1sRXF&Ab@HF@zYFR=6{VI7Hp0GEp6ikb#)tMAh{^+F0kro<& zE=V4qhgBGN<&~RRJaWSJdi)cJCqs)Ds|6M1JW=Ds(^pnvGHwOY)$92)5lV)0sW0nS z^2k^^mO0|s-TcaVpY!?_0sJJry7g*BipbVDl3qR9aWd1{MC_mkRYmTl6lM855QyKL zR3HRE4jZb%JWF?cyvW2R?UeY1x8d>p1?802?2g?oN`M?_jcy^Ie2bTGnOdT5JkbWy zUQo9}^l+6<=LihMh0eL}d_NYPc#@ycKcy^q5U6X7Zg=ZyjlSnT#ct>7rS6Ma(9m?Vy^Gyg5pj?JJoa;P|ly}LmHD$Wh{OXfM=&2vv@9wts&BY>K0B>N`yp<$vm;v5(~lH|9_vrsx4 z0IraXh>1@cbMD&fX;>?3sz=pXbUo2D?C=+NEX=OmFH5#?TbZ{_Uj~jT=kOG=$ z1->L-K;?=ngC}!>2awPby&FuD#+=G8bm2;7`5xzS4alH-xj8o%qlezkM4>$fLQKBF z%9W`prI(Uum+)Xs?~T5!8h{;~1~YAw@eY_!&XDJ>MWkrF?0g%pNw$hW71~TezMxD{cW#P_9Z^5Aqm*1ArTTpIdb|334U`zP`1pQ z>Uoh5Iylq5g(9eCi!_7=<^|bYc@Fi{U}w@5Ze!iq-M-jzN`V0X43Mw=_1*G3vO8yA zl8E_uhR~(zvWm&~dI#PTVO#<)WSZvsln#ykHiAY)eT1NsvO<257M#kpFn%EzTFQ7r zh=0`Vfj>|EgJ5Vp*~-$2w&UesVqT4L+3_NWVv*4*jFgyMf<|FvA$sc1$L^QGw2oH{ zXd>3(?>n>lLm>{*LTf>g4h3_`-vtLJDVU0>-$%h5dD;KYZ+vZEC8rp+?BTNo@bb*N z3ou5+1Nn6LdFkRM$k;)@#Or8jF7zmlbGJYx9eLS1jFF(~KCu7Ly5|>&OQ^%@F8blR zlk#59h;N~~>}RN#9wP#~0`~5>0u=hC+68nOuf3lH&FOjL#K0U zHdc7QhA*N$))XxMR(q-;=>4*8OL*&ALF_2lMukHi6XgilvLR>RpwFyD#i4k7G@#t) z0|Di%@EJnq+W(Xz8Y52GB$)4KUe8Si{N#zL)1fuMj8fl+{NdwU@2jHjX)3D7TAfI! z1TFl9U!fq_*qPKJn0Kz439arod@47uqm6e%xykcIDC|4j3=fb&MTi!Al3Y)Cp76Uo zp*y8O-_!zQoVlG^Va~z`V!Ut?KtJOPv<1@^LyE%_W`1^ThkP z=^ora*G&bYoNqGt*654mlK+yoJw(McV9&lR!{ZjCj__qDDyXilmtNc6KQT1`YbLyc z_-PJ{VCJt5Cc5q${bZPOIsk?0_j?JH?G(vYiY zGJUMDDz%43(l2aMq?Aj??*u?6J@#I%Wv5iz5CELX>PT4Gal(?YB#xjAkg zb9;EV)51UxU=E@?xj~c!8`29QFy9VZ&ot2J3tpBDQHBDKPwnOkMT5&1LFEdF*!OX! zU|kZGUk-Y7!DrUMgg5Sste5Vq>hou1)<6Yq7kBVbRQp)ua>^=(&V6^;*He9@C?`am zqD1II^ipIh7c!o=R*6e0*cq>-!7mwvKRD1 zlJ>Euu;GOCi3vN-DF!_wC`36Uu;j@=KgLq~&-53_mhDkymsKfp}DR8*Yv(M#0WRDI;9M|7mFAXYkv4~I7&Mtl8git3vUm8qU04j?_j?tzJX3 z|M1KBJu=Y9`~tr0kQ8g|@40T+r_s7=kEGeZyhLpjiE+??b*QyUz$iI8&yiD&=^An! zV@x;kNyc<7zs{Ie&=!q^hBN=|a77QSRk$kV7s>371Z!x3$f3ME*E#L^}g1SAi`J zrLE|=YUT{hQ-{v=B~SrcRFLn6T(a5?_%4FA*~!G$>iV*`bw_rfx0Y~f%4>-t4(!Db z2@@rd9W>`-+6^;k0u?EdxkK~WpOvFm>wmFFmJocm^AVOyk^L&8uqJ03OU0hVnjf$y zs#cZSC%eyam;xENwuHtU-s(Xrs<3V;sW5KA!$t+{o}6ilcKgI!FSUSGwmmKviwU{B zIh``*b0rBNjpW8_zlzCexiP`vyS+!f+TWIzkrUN;x~2I0kTX>CEG==V%7uS22)r_b z-LiJ^Edt*oS8=>0@ye3P+^Jqvh~+VAQ~KF!Yj{#oPUIHb=Mqt>4(D(+%;j4Al}^1c z_P}2Si8rO>r+ILV?EU%M?Fm25u`791Euf~`2V1^--{}QR> z{#^UO1gB6v@1mvC_(?j=7TCozW&R|-nBdzv45fhfgOy4zF+K@)#V~3r)Be;}QAxDh z(p+c807eLsPgu|nD#l_DeSkzbo0|9#AFNj*^lEHR*V9W2bVD2l;nTe|kC2wte^lna zqDj-8+$YdGC%vCo09o?voL9@vu=++h4N;oa%g+^8(a8?gtDxm?csTk^?s}}m!;H^%yW1hseP1hGLP`uaT^tBOpoJG zyfK?tR*}Z@MAR<-H>#EJ)UkT(0gll9mD+=K0wk3aW}-tlhqy0MSx|h^INohqkLKNG zCI^PyP>-hbM=;4?6+isA+`F3LsLm9i;m#zrgG$gVR6rxO*v*fC5FCKPdk#Pb`1pO| z?b_UkZsRmT$epO(1|*i^Wc&eb$n`%-08eydCmPe&t_d%5ySJ zekG(w>iYnhP;lgVC*`&Qelng zkEKE8`mo?K_*)n1=wdVkrT@$;j?2~s20#r28^*6crh(Gnp89z zU_s#kBkGY=HJwA!HCr{6IfBk*!TF}Eg;z#kr$_qWwK-e3?<8pPL}l8g5&~WKcS{n z%qOmC;}EfO@+lxI1X<;-P?TaRDTXKl^v`>y!t znJ1g`9CN{}q`BalhR3h{^fk)qR?jrreh7L)+CI(cZ_h&;UPWqW!{Q+1z@hm)zxLR%cl$)1$&M9)1TE?%T$AHbR3l2f{S~BZ%mKtU`NR5M%gTGWtVE zHZc*2VDU48tFQ&Whq&u76PnaH=4i*M<8J6fqUhXf#40&9@#%NI7s2)g7b{{|&etP} z;V!mq?XCuLzyO68^5ye~=~tD=LKtt`SK9L z$!_H&)E(!8r1Jap#hlwm_@)w{51-nh2c_o$G@AmV+4R6g^!W%jv#42ZiXo*vQhP16 z_al$h`zISz@25%c+g0zUsE(@M?oI2k-3_Y$A?g1+htEC`ug)Y`y*>wx@sw>wWr*Cwj#!);4o2Z9 z-9)>9>bi%IJ-D~(4p`)PS>77s4@+9X;t0E9Qn}0sKC5j$O0>Rf!&d<&K zfIOa-(in*mFGuO=*_WNifSAN#YvfmPzm-m9x9nTEAicwb(U{;8J z-HCsr8?HA56@-Diq5u!!W(C=4t5GM+SSmec9~8<@A;>%MMPlaZD@U1gdx&rhazV^BJ)_vf5_pv>PKgmExYxNejij zqC>L20lEF%$`o>&NnZkAiJ~I&Me3h?M8PikxT5P3y#pr|U2;`nbU8n>)~?8KZl*Vl z7N8kzr)42Oi2j3bR>sRRAS1e6@^fpj_pMfAkXoUhlw$hQnY=L5%OnrNeDxMx!W&{u z;g#xvte&3Pt@Jy>7zaa2oB?5mMb@=?`icCaBpW%t*p6o+niAj(A@NO@@_DhO@{30|9k> z=pdPPxYB7|h8SL)_`Int{$JTWR_5Nhsh-xPAydJQy{1OcL(WUjB~P6+woyY7>s{L{ zFm~9f(-n@f#K8qo3U=axpcPpD-3xMlqVb7_d`lKw`G9EeZ3g?(?N4J#Cp=|=8SUBxmPI{5ubpV;&iFeL<)7*P{+IikO#j(o@5%J!@A4n`p3HZw-#W@~DC1B3 z^bLOb>9-*uKPPM$CqF$ml*&)$hVlGZ6K6v5MB1~sl#EEngU5hz+Dm0=5_!J2czH^5 zK4qjwcVo34X-X@8W6}HZ+2x6*@dxlx?}uYUf=@h3SD6d|e5mCnko3 z%M{k zFq5zc@T-Os6W-HAqklnaKkLt=N6FgDBQIxH7@z8+t5?oJ6cAow_jE@_Hy@=}%fSk0 zBBK_zCUIG|V(Fs+Id+CKd219lR$UjSkwh)QkWl>M;;|@UKaLw7)ia9+n7WZ>{V>dN zRLx`+y5NB8O1m}CCIgn>u6TTwwQ#vcqwMVwh3irrWp#O3eUWe9<7G9`gzsO+#7OjN zDzJb+QLf7qd6y5pIaDMIh;B~fb6y+}uP=m#COmX1Sif(pw;b_^YG*H0s%78Sm& zUTNR?Q;_ZGK${j7EQ05Z$+EFf(K)I^z8MfRb`zn(V-J%nrJ6|se{}SA7t-1U(n_7v zW0_yUdUvHbxAFU%Fk0+N6^VR@{pQ_p?h)+}uhk*)F~gDrUihm^7hr1F1D!p!Jn<)> z?T;biW{ukqAskg4bUYV+4UJN6yjHUS=Y{7JiA&u5B`5wZ`AT#bGORWih%btCgcrjHw7E7ldLk zHxf1R?}VP!mIhwO8)aXVSHj(Ds$a)dE%J-F{PAw{6Z_O>Z1Hop^)GH)IM5m~(a+I? zm$bdY8dk2^P9uaNtA;}@AfQ}?EoheYMX7KyS3lAC$Q3*=S^^|nV?X6W1w}AYiOO0a z9~=(<7J(u3e){W`_#f_@uNxyaCmNKx2zuuPb8D;G5FaV^6;og69LE{|F8rWS=c`;S zsq@3H92}l4vnd)Lp4bEY8QuUgQscTlzM$MZkkwhjO&pU-%97*hSFLQcZ ztr}41B4O@UzEN&oAX>fyh9eM2>0;0r+||WaLeOQGjjnF1dfJ~T%kPUd4MAS$MixC# z%XJhVYlmFC6nJqd`G-Ut7}({5PbSr#3MWrgd{0}LwN4lhV)t`j+VFQ}{#{pnq}orA zZI)KRnbkY69bMh)aiG#5o`LSo<8QC%-!eRNPF&CzmmR%+%Ck5nX%zny4e_DkY-8@Z zl4}}Y=Hhh2mwAWe5tkq0+C$}|zRWLFDhTlIVj~DtKOTdf#qV)5^>fViU|D9%S(I|H+PcmQ2mS~2tXqZp_qZ;%|z zTj5b$`rFi7vN>($QLm0iyDwtS3U$&FmD{2B&?}>Ete3l@du1d7t8;wN$@x?nx&ak9K*5)B{%Q?zarSe&J%aRCn;YQn3rtaJyg?YmLaXLT8xp?#Y0Tx7`EqWHj`W7HiRBl2ujc+C9!L;pak@bs zASq*WO)fVD1CehJ2XuvTdp&z6pRxKMf@sq^7ht{=yl>1?oeKEX+01|3kHavO`eVj?ctLInzEjpB4(zUKGx|bY#i*)l!UE+VwMOiQx-^Tt2 zId(HD%xj7&(D%Bi+#FqQY!#ozt;(k{k*l@oqw#CpP*M zoBWaeiO?|OU!(;XP;W^52L9ndFr#Qx#;DL+C?n2KN$opoRNo@vK2<`oXOvLuHP4Al z_A+0ZzdJ@rAYYt&o){m&^${UXHZY^4>zRGzM=NW9P+TUYB~zL~l2C|XmuIk> zjh{)$ywEwSs$8M2^2nrhWvU^QWBnEH=8wEu5`UPiN1-cS=)g_q0MrnHp7{kV5I1Un z&HV+QP&aWM9YVf4GF~ie`WEdEq-tk9Pqn*`5n6z9ttADF+*N)W^5p?oyJC5T(QICgLhCpHAkY^1)*HUn9G}hUUM~jF%6+|7cP=syz+Y(tvmTA@#H1TT zcL@(@WiE;U!LDYy;~tH5#S`v{0-D}V$B?)`RVittc*7UQ-evn%up@?uC*;OY*hvy& zWRzWbKWDtr;+&yq)YXZKX}LJ69g!bT7dRw3UeLUO&6Aly)3Gc0F6VT%5oj*nu0@F# zOT@pb{J~tzNAe6iM@RrC=4y`naR`PJxjfVA3hcZfUbL9Jo8yN0jf_Xd7$?%?EB^bU z&tqPaA1HVn{`-Q^tL4sf0TL4;*b#hRKI zb~1mS@Y`{mbbN1^m;#JE%L#01W(|LLZ^wB{uk(0B7TNBsiceu3;PEw z%2KVo(cXQd;-~nEzp2_;!Np4e>Nr2!h|4}R$lZ7y6a1OaULfl8@&-R3J{HRWa zxHD(%E$QbC_o-QQCK|E2c_K?NlG}Sc2a zKymJkJtJG&yskhg7yX78;scP)cNeG=VcA5P294kDWP-diKO!!7()sGO&@GMEn zd<&Ftxlf^J1!N&#p3D-X$YrcE?;$E$sORu)_U}HEExl1jdwr3pHTMGfBM8r^(XDGY za*t6xAwI#Ck&c0(tg%m1f0&4L#DWx++RJ6}i}ALu+H@PhSIs@*rq+1JJ}=CIahb_= zoE}_1QcmzM>~Fbh`4fT3IAb@qAHr@qj1JFpgag8fo=f-khI-g<(xg;5RPH9j8%Fo5 z&KJj)GFl-Z%n>jSzBq*Th&?Xk+YuC4>P2iexVPR2*NIWNc_Beb2YIxpu+E^3mOvZL zr_rQ~4p^M>s@y=1hor#Su-T2+_C78Q;K2ADqQ(#C;-Z>3hT^(PvfH~7LPx9E9sR{Q zsa(c{$Qi*!VeO4Hg;qmgi@$zK{vcJVy59akxUWDU%Qj55%g6Jba*$q}v(3Xm5_w#7 z>Z&aE@8N-MT$U=nta_}-3*QiF%bR74?;(L_g65qV^~@l6;>Uhsu6ppJWX^#E+8a7| z@A&i5LO6dy70A??@J&F!(G~~#uk@L730>JJ{dh^pFDdD8ou>=8`9&4VQaNWof`DP1 z)m(DF4w@I2nHQ9EU$y!xCX^LAKTr1cUkPLDFrq>?;Eghudof5IYsXMN3_AyG;h^3l z#wKu^#^f`_#4P%ZKw#WtK?wF=1v3B@80JhUy2L2kg~t69f;wTLf@;Met{Qnn?g|ut zzUWl~*D+l}2fBf>k_I51R~JQyzp;0Gx|eu1=J zwWx^CLH9(2FD=lb-BtP=pB5D<3z3tt!x@-BZ#x=zR;!B(^hT<>oZzd!AI#W6YnWUEy2l(r)4j^6~V~p5s!p- z2~=M%P_6QnOonD@le4r%9m?GxM2W)!p>h(G#M%WJD!hP0ue^&RYv>hNh$DZ+2M*Qq zMr8~S^}%l`i(DjX-%*s-CCR&gHnJb5uuHfIuANC) zM|jyUPgGz<%E*ueX~AoDA`@HUDMI0|mcU}rqv`^Yz}S;hYs_)^#GPslG^`v6&C;0H^@C^jr#eT{IJCG`#mOG^g<$+R{2BC;@_#NcP!|rKj3*s#bccEj`D! z)GOW~TuegYRFtZCX~iph94)9Vpd#~qf7afUgsbg&{r>pzdXd?C?R8(zde*a^YjEM8 ze1$o{cwO<%H90X3Ad}?F_wB6A^T&>}?^aXE{QuzKvWzs;?S>jppOQVvN7yJ$2Yzq9 zySdUwhO8X}rP1GlbwOl@6xSpD+^aCRBkRpz#Z-Ubht*VW;$MX;=J^A6O1@*pGCVt$ z;EM6IHhmrSK{KNa-_Fv4j;> z0+n^%V`>(|ig-$2c5(B#C4tr^lI**+QsXWu547H>9Ok?>YFytm?BF#zRHW}emWtRm zW1|UKfK`OYP4~|`TR^}!H4?J(+jvC{xYECZcl2*V?Ic7Xw+7_!0FFDS3v6hg6*S)w zUItcGpA)J;VL4*=#~07Ow-VSOa^W9I9{VJog~4;jou5A}_7~5OKNsi!a+CX?pMPZR zgmA^4d4BsojXXUU{aS*+`#F{attndR)8CmIQj@my$2Cr!Z$9CL58T%+R+q=!E!%*Y6ZY|Gt6fxuL4>J1SKl|m zg&jEb7vc#Q7U(w(U$$XjUz2iqfqvm1Z<_r9VpD?+Xml%%o8O_%6D^bL6oWEJdx4Uh z`K8XQi*7XE3JacFYU&>N7{7|HGB|yl8u*n-zPv!c*#<8EBVS$!gE9s%)qZL!TIGH| z@z?wYZkJ&;_f2t*gT<6u6S!@yN%D4mwcmzET$c~AFbsdAOmu}gXXE|dx!(MK+Miin z@p04J95lA;{nM^1vm?WCcf=_otd_oXXVoym1M^)+c4TB#IezZr=OYvA_0Bh2Eys{}VIh$gHO)W9jaRZ}E0>KA~am)ogF( z?UTSY>olV>@S!y>VL(~zB1kh0veFE4_P`%ppcg+?th@OvQ47cdE*2FaEE=&cEaClH ze`w@m19%TvXN9a=xrW_m0MWVv#Nv9GPRyzE#ZRfVZyei03b-yQt-E!A;s!xQWc1oP zV>dN>h!&3xcGAV7Ib7Ovh=~K$yin%?938QI^Gi8m1m)P{m|1g=Vjyjc=FoOYB2TUL z5raUD)^fzor9yw8MJyYw?5-SNc>p@Jz`UDnrr^_o*1wx|t}eDKOAW9yAtzq@bHPs8 zpEa3RyU$xR?G2<{Zh|Mw{)F#qNLj-iXauZIn?v0sZ6p))WPKsiT2&lKxTwwZL3=rJ z>frFm4eetIDx8;&F%r=hjKmDcdQ%SSmzxR)-M!TPeQ+_q&f-giW9X9ixzPJuXg*_| zW|nqPWwG1OL3OTAuoA9HaOfZet*VlAKT)9gr2N4m+w&+~Ti9=?G+yZYe)kRW7t63+ zhcsrTtBQA4o>dr|0Ovy_x+pkDA#6Ag$0LA49s)rIsqVmX0cOz!m|yPPLZ6i;6{?%A zgeA}Y%*}n2M0$yJWd|^m7k;=*=dJZDH%Ukg!gJ$xEs2m8C~BQ)evCF$$o@9|swVbq z%n|O!3|2fBAHuQPOjgF^i)?;SkLf{Xf4=U0(Fm}FE{ir!G>d@;*?i9NHgX1=7YHtb z^dg#AP{-rBJf=RUvKhgJGP2GIw7$<9E3a-vN1_N4X>G;A92=?s<%8k(v9M}4(zGSkd_cC@r#f*wl>vF#1!GXnUUBP2VYZrgRkTP5N?QGr1U;4+8?sn@P za?pB#(mHaAU%-#^3V#HT>M=kUULn|ZUkV>w>LyNKMxuEEKHDK&myzDRInc)d9wX!K z(=-Hb8!D`mcy<~uzF3H=2X6V9*@*-#DJ=N2`@G5QM2?=z*?(?3Y_zR9NG@mVH6-00 z3^KpH@tx_~&1d%Xn7zV)O^2*HP+g%}2Krm+ZXMV((+c5Yj1_%u04lO;6EoPLA>i6Z zKWI~$xA0OvXzp)Q&?e7nl zv*GpWCBr7A6 zlc5_?AsOEsw)%&yYYS@;rA4hGhp9~*6yf_x?0znRd}R-rY^A9&&$#cg%@!OUtSAR0?`OUKO`-lVYc@V)*RS^YMb z)HpK%Yt1Gc=&H(dto-NoDj`#GTj=?G7z#|pf){G7qao%>#7v3UlcD7B&C?hphU+}K zby=B?0iG8}TAOmq0(S*J%XHXz2&D$V4}L|?(^kKoCxT+$3g`7gtY{~Xh24dB=DFq0 z@lc!u`z+U_bXJ$SKV#h=UG#jBr`(JEja=+6sYK3$fWs_myl-c<%K|`B5V55ZwVclH z%T6wge}V^K1Qhw;b}4yf>adxNU5xLTIH(4_@D~D{-NBmg0DYv2K8?U~y{GD%N|MT~)^|z4cSg z3ah{bYbDsz^H$jTyQr=>(ug>`_nL$X%cA}8;Auc$K*iY$UIaZ{Qt9rB^X%&J+_}n0 z8hGAM41#)#=Yq4{XO~nE6(CY!)9g=pG6bmdtRfFVYSt7GoMw|M_?;;dNFuSV@>c7$V%pzFsVlW)XoXmSrCTmeaJ<4Fg*Hf+A*-)mmQ{TV*`j7YM6OK`<;yr9WyOfz4{*4FhTgu%|31;;V{ zMqa%BO_7K<_+8n-ne=9hdk|W4%7Vz?%TcUib7!0(D-^h{Z@j;&hp;>c{~_(*ko~;# zAc~horG0;wa9Hc>IJte(e&jp6K*Ns`#c^}U)x5dUV`Y0<51r1`Y6zxwE1}G=+ve23 zgS8Xa@n&vcI78q3cI&42n0}iqlNxQ@XvC8i21{blvx{w?)ne;L4%ZI3iKV!n>r<PQ4aF(XPsR#&q|bvy0H;kEOYr1w zt*61=+Bd65y|9oih6{?=kvRBl$KTgGY;Hr76ZSTnU15?jCAFabw=Ssgd^%=XK zL4}uEb!Ayq$C|~=1uIj}kU}TeFZsnacFkzN)C$^B zjzETlIKya1Y~r~>+7ZK$eI6fsQxTtER2sBNxn!cpqaiUYj_sFl4)sp)g9zGLi16}Y zMg4#U=cfB*)(}jf>FzZBM;c>CP+P=ojZ+2-8TANDn-T)vBv*Nx1{gf~X9B{f~!*mSQ(+z~_^{&@I~ zw&3Zj=iT8CJYIiC+cywwe7{igqa6ZcVBhS4#_#+Z=$TPIWj}gF8~sbUBhtaR1ccYn zLtdqh;fwtPf1=|Xo#BU=V_(o{i3veuQlixM`IxF!$|c$ah=#Mf;6=~O=|FE=i4Or> zPfp~aOIKPs=lf`0mI{}*g_g`0ith?%6)`x-5rg`JX9XPp~ha^ z2CUU0fx9MRuUM>S`;O9S;J{$!MQLK@fIX69?xPi;f`;zf0;M7?v||`-`ZRVy8D5)X zBgwR=JJXzOCc&}Mn&+T=T`Qh-iGRQ`#EK!J-vtZ?T4enJwaz9d;Bs;XvQ&hc#|EaM z^zsuv)k50Ir~!ExdJhVA90uuP9W&NBo|}4OoqjwNXkaS3;+oP>d1@bXx;5+rId7 z2;4E1a|SJt0z*w4L>Sr|xS{&@GV1gdNI`8NJ>~hAqnUCeYOz-02@_k^fy#Sq-O#ElPyXEh}JqIiX-C`Pd zrW=XmJ~4Oax{~;}cCPcs2IIeyxyU$U7$PfQo{rYq-^Ihq0UgH?gvk;w+pps{)6tA` zhx_q}T2vk6Eow>HRctZjR02J{1H{J;D(XPsG$_q(Vi>_x}vx) z_X-i-MAPU#&ckN=Y@iFp2)nv&)NN`jjMg~5;n%~^w!@p?c-O)7oL?{_F*(;SRjd)d zSYN&5rjH1>eB`RHj=4=tAiNyq)@TZZ~&#QGHMBjkKt^S=#?UGAh}6>{nEqesK6a_kT!EYdx=k?eEn+o~z=fj@^^1$T;e5lNsqWF7bf1ns zSJRN|KV(0OmTn#NOkpLAirULo?K&y*aVNDe@pMJpX9`X!g$XoZbi$Gz9-TG(D32H3Y6db^F{{E71 z&T|mA(!;SjWJ>Zhu?n;;*ou9CMrf@%Vp=4}{Ez8~e2vx9ks7t{VZ<66_1+qAOR-C$ zA8N+EQ#@>Sgy@DnLEGs+U}td-TCZY+iPeRY7LdgGDaadkPr)H@huWjo#u^MX zSHI8gWMbh(_G#tbF)nwHOJd&(HjkYYyI%S{G8o}huiK#G77ZVIxl$Y=_2k>Yyh~36 zTE5QODSE89a(SpECvF|?iw_CfiwfD2GNv#O3G7Tg7gkO5oOWiu8|&h_QMh^;Bj^;Kqxi(lX!C1U64&=SW$bPIG&HTq5v zFgzGahV`fh_%O5Jp-c~DJm7;#{9C(vtR7gmYS2Zfw33I29wI!{>7mX@UeWA3*cztp z4ygx+THW5K6@3BDUV_(0RmYf%p{>#1Dz5WFp5$+JT-D6^M~T^#91|X7u zM|diW^B{tIA27c*`oH^YAN3wW!~RT5ogyy=TK)}~Leq@9bNCq-K9|?nKR^u%c4lZF(@3pcC9FV7G2_=5N}g!}tu_ zC}ICB2@$^ejw6IL48z7SYnD52G4tsG-i(30QFw`97vmDB22Z?E&Jb5y2V*m6n2gi!bj)h(Nrnyf5(Nw>82MMr23}LEO(m{E zLt@TYAL472?5);4G=!H@Bce;zFQyG6tV-TjXYk*B63L~m17XYvCNAoq+e`mY`OrUv zSG5>=hs(pWN^x$&I#0Z~IvOOsA)9`smp+#Cj_`7{5wd!VZm?O-XmWN92Yh5A9Hu6pKzJ9S5J3vpa@ zgmQpIc*J;rD6_*++R8dm7VKVmeR-BFZA}H(kU%zBl4_ z4Ly$0MSV0E^|NAcdsj-OoJGp$_y7-ir-(xS>}HA~OY?&8(CV zS*B}2-yk7ka&%yEB`|#rjVoy)DjP>xPyJ@Z4}>vi}aI{mATCu^DWFSeN@|T(+n$^ zOJi2h&tFc#@Gt_S56y9Pv!w0KJZap}4##X(7BVFq#~5W_Gfo+3tAsL5sn&6oOUF!MXtsGXuSyk`;AtzXJ^e2Z{CVa>}-f^)1`FLE3`DYLin+8{mBx8d-vV( zT;IZN(lex|5FuF;MpayRkcy4bQtyhdr{YZbfyBHAa^lC!vgndIb!mDRk)r3&1Zx5_OUsTI(5r)}Jct!Z$KynF{ z1$S1B%8y?awJ(&JL!hOFH2ZSDHFXIBQs|(IjU$Tj#a!|Cov$I@LKM=&{L#X!Z)st* z4#@Y`va9mX3JSdr%!KdNJVX;~8q$!fGM!)2v@CtBFzuT1idO@7xJPT4e&X^-{Y+yC zI(=EX!1R^!wbq|)Gk}WvdjofH3j%|&tbtZ-M-LhW(FiDYez%$v8=^Y# z3_Naa<*oU%Z^vfVBnuW5u*oIil=<4fycF^jVs>t4Wx1MQniogxpQ*X@jONd-kNZ=@ zX_Lxns>Ew*zjojvn_jBgw+qdt1zF~f?S1Mvp>UP>a^{2BeE-r+A&D0bXkYXhw>@g_D| zvfy)wP58k=EU0;rbKgyu#eRoIQb;jYQU@ynP94fLeb-Fy8gE@ZEMo*0`(hcBG>k5^ zQe4P}vN)VwO>x(%(<^FlpMe zPpa>8Ba-o~5~K(eXnl&ukbTDJ*TIz!@+^i_9+5=Q&4=BBqRS^z^EkrXsS&RN01QhO zr+^Rm!l5mjv7V&~xxIX}P0l4aJS<$eFLme-tZ$LlWVp|mh!0mK+Q+x$nRPHT z(0UTn&BkMXi4keI8z}WXC6+YE{U!d=m*qVEkw?NFA*V)kU4&X&A&M4bpiuT8#Cz5X?i8y`C&6j;Sg_Y(@1yI6L)!RDvfRp&qf!9_4bsi-cG9~o)v zM6HUXSRd3~Go7J|&ZaFwx!n^aAwcC4%mtf@W-{5W61CGcrR|Q z7#3&rQU4} z@_4!=CSe-w7y5r9!F7ka?2<9pe3_?DpeJcJVKF?sBk$VO{S-h1(=HLrFfQnzw4>M? zUFuPC%q5gb9Z9Rmlb%sz5w>skTTgwrc=d(Qh%w=|)=+6j-hXo68j-`F5_e<8%GeRh z2|}a*WuC;7TX3;4NEzVT9F`!SSnwY6LPatspm2`Sgi49dY<}M#s|}-SN=Hu+n~C^x z-J|-HnZ)+CL@45fqme08#EWCcOB`2{?p46wU0@9b)&hJM;-Ud7!qqV=ic&6xHPqEp{i>H~^#oodBZZ;27h?X0oSG%6%3e@gcyvA*zW zU6qYe#z4bC-|qYZP46_C4zmDqxYXO6%Qd)OlKO+lrD)2N#V-7C2UVkkhrKPT?h(q? z?B`ae3yl#GN#f0n(hnhhlHoTqZ+(?pRtee&-OLgw*fK{JEE(9-R&Ugr6R9$kEvQ>*Io^ zr`3QQB%IA5e$}bH{c|#ZLNwhu2C)In^b0pRzaMo7mre&0tAa!K0vG60uRx!AIl<)H zYO%p$T|9-QqAYp|;!AYYo56)dcF9aYqWvC(bbhRYzy8?S;=>5}->f)9r>F9KPhAAL z2xKKb$n&i#V)*R+X&>UcLeIvCFZhf=J=8Y6Qw-9<(vd=ic9-*)hXgrm(pZ3B%9Rd* ziB!2ztnw6sLTk1N2eKw^OgMPe1RHJnHJO6;?cy!4S|yxVZv)gT3wWniT1W9NvqG;a znNdgW+r^GZAJNe)#sWk_iP)?+#x?9ZjsbOV6H$Z90pAs1~dSPAY`m$3)b_Z3N99(1rwQhsA5f2j0YafJFzVl z@;ot*htq?}Fm9V(yP%n-Z!Sn5oAuy6>NTr=qpZ7PwSc5Utd|)0BLvG|Aqen=RtHqq

RBnUIQ9u118zeg?x7L$?vHmQ#2Y?dIS1S@;6^*R<<#3LMYd0%=ow3 znTLpIrFOk9eo_z}Kk>!WQCH71R45U9Yz&%;{G8$C?}a{Y_)Nm5`3+`RCzC#oGfVl5Iy<2ZcB?8geYwG5oTnAvs5a7`M-7-d) zE{DQK$q^y*NQ373UT8OsEX;6&TU$mb#5wWzyxJbd`6xDy(&dhC@Q|l7!6g1lgueun zv<)d+tO*AU=c*cayTnbt(o#A2*+Svv6mW7$?7?a8AjXW^E3=1Vfm6BCs7%7@Lp!fe z)c(m*CJDjkFqpcTx@i&(B-Z-F<9@Y-^rkmh3}w(n^rd1%(~&MUU?;5#D@=EnxoGC_G?nQ-Q_&UFQ|8@ zIdRfxv$>GddMT$+>N3Os`zqZtkyh5H&i(J3O|a!HHo<1cXxZKDvH|7@7}b@r>Iz18 zQ+_${lV=eJ*)64u=@r+t>ycpS#1(bV8Tc#Yp8J&@U`BUWshLo;F9}kU-CxV!H7#GQ zmS3l3cITsS_k8{lpWW^E-)ijj`M4Zf)l%BVOU2sxqiGpEw`|L&^=f&A($)2NrYPA` z;4|;(nW5wj7+?P-a>MImqj^`A&Jigz=&3I=GdimwyaWN>D7GS{4K_bh`d?Jzi=7cn ze0ltWA%ZPV>D1<}!Pb`2t9Xka5llQ|o-*-%!H$+vbI=mNA<~a9{^}} zuiN580bSmDXso&)0q>wAWuo)NkJ@h)CsI={O8T&RT?|VRoG}@7Zl}JW)dAfzUc1s8 z*K@tbwHPxLoeNq7f?!sk#2Cba>K?2iDUA1!^tfj=^!(p3 zCd3t~WLw5$CXUklT>7$|IbP@Xr4u6{vJ^>diSbuY^R=dVhvpAl)9$;E+lnCWib!Gs zN&=?_o|sfuv19(o)}3>Xmkv%(g&!_tw|mXzRhQw;mi9nYCB5==k;emXYXa`r4oy!om1QEut^pLwp@Uj}&7j8C%)$v+vaS;2?nuR!IJQC6l}4#;Zj2Ge|K+Z5p z&}h0l|5N0buIpg8uW&4IKFg&T&4gG#aAT%u2{}-R^te3Tz`FIoyCpi104i#b7z%86 zF8jUfvKQ8}?s+S9G6~s^pRE&Y9m|BOda@`4!t%oQitzu#$FK;AC0Hhnzmb15%n59G zaKbEuEAh5|^`3|y=`J-=5_Z^YyPOV``@u_1Bl=IMlv1i~28EU_dAPdIqo2iocj? z7~Ip3?F{X|chHXuS4HTU^Ouvm9mY=wkj?eLn5VTW(^=XnP=b|yd)7Hwd$g8?u00yJ z`E5?;5Oe0H;ZUI;n309>+-w(~p0DF_o_YOlrsyGF(=(n@v#8dy0_VM=$(Hh{03!#) z8ii&rlZq`)TS)qwPDiU#sZf%`q2j+&S|V-RVojHLw|#G&!f zVfBiQ|M6N>YwZQufxJDBxD$_Wj&$ais=Zn(1qWL8eS0+p%a|#!l{UpG_{_OLVH{EM zbSKm0b&cIl7I_i&1)tRv%TsEpEIG3+ET)Cfi1a^eo+7$hJe-~`PM`waCdW2|6fh7o zcaG5y?QzelTTV7sa7Cj(+y@|k@i)4)N^_a6af3!eEGiDiN9hxS6>p$Ap4ihrK1dW1 zL|&QSxu;3CjGaWVg3t_BTPF-cvDgk)eAa{ztKbTOKA1VzBOkXp8vrIg zM0-Byv_B|5hI3_h)Zg*lCd_;gcE@w!QST9e8MvCz3%obZEr3j4AN1&rkGWTZBLufc z%5)19bY27yEfmP;!S6n}Fofvvz6a!JD|;tp80{A|Mj$O7=&lhq%#;3CIOJXgyzRb<|q_+Y6XJxwXKj$a_9ms@j17 z(>CY4kz73B<8=?o+zSoD&)%`MEkf33*-I~5LvSxGbyLGHV6u9<1laiUAp1n|iVwR_ zX412-*e8b;5isI-msP(Gr4sgctsFznE9o`tFK$sRcn)SAh@KMoHYYWU#dP_XM{@K8 zGp_^SabX})=U@-2WL4*MgTL~W2#`V#HWWtJ_q6VR)T}F@ftR+5|lfON9@gX zhj_tTMlmW;I#uffnnIj69&8)5QV2$x2?k`~%@`Bxa?07l)*8dq-g;n^E-{=BJyhpY zPL6JBq8HNG(^2SEZ=wa-3YO}Jv+k5tb*`S@y6+`xB3;<}S zUw=G{@{Bn(!9PdnR9g(M4MQ1y{r&G*R5@SW5A$4>r3G;qV=T}(4ly_ZF2#NA1(Da! z7K-6C+aa@o0>pqB*JczX93HjHW5EWKvqy+1`pJka@e^pdjowF+4Ms7WC`Zyzr9)3X z59h;@mu}cZQA^}|xLwC9xA5=^JrqZi&+4uX0pl?`Ult{5;6DZ}$N|6KU46T=9vT22 zIdKU}PRSAHVY^eb1XAco7)&b+jXJMAQ@>*L>qty`p*8Yx9t=lVsDi#n`eN40S>O^3 zoCR}l)@FaloCRh7lpt_jvuppc+#KQ&*9V3Z-AbgHHKGqjf`hGB6L0lhF_HP%y!+vz zWyqulk{YrHw#Auj7@A+3(fazFqg{{UyVk-H7Hxd`clj!h*dHk=ABE$Ec-df#L#!9Ev2ru9IF~dBW)VzpoMm@R#(rh zJRAFRyWlqWk;N}q;66gW6*RezC3eBBJXuv`!pLQa(9jJtwoc`==aWTAvCm)Vk9M|{ ziu^W-JU`IuS^RSSQ=a9$p3RX-dXRKE`q4i<3-a_&`P;o`(b#{TEF1y2GB?AGh`(s= zJKdzrHfIZGbLxC_;j<(f$Lqqk_H-YwE{h#60B;!Smh+GIIo3RCj;xpV&MNL3{EbpC z>mT>cdTQ^i8WCAPd)=+|{(ZCh$m$XYP|g|*Szm%{qP2~Y)jbN~TqBA==8+up2d|#@ zP}*Mj&NkmpLl0xy-Ayw1K6J;VhO3mF#T{OND6@Yy3fLOK@Qq@ay`bkVx{P zmc1EkwJx!SOf_8LK&Wf{$8d|Grld+J0#I$^}0 zOv+Gf9j$x zaW!M-Gq&$mlV-=4(Z^usB`QWqU&cg51-g4`+4;hl#(*wRj_7jk?hDr7F3;n?^N29W zk60V2Hae*tsYwuA8t&tSy;Ni^bPxc@>@>Z|FjkdNr*q;k?TF_d>C0FGEpqSQ;mhf$ z%*jFh))1PVl}stJ#!8R=tTa4g@zA3MKKGDLj%nMfh3RxMCmGKmfz~%^fIOe|%5wvG zgwbEm=6PCqSinOPw&&f2?>ftIPjnCPPcyY_bFN?+-EkSu$A_zC$B%neqxAzC-h0!9 zhNHTx*~ABzOihm2w$c51EGiUkBMefe$n%R~gUbNh)`kOBfWPXsgw5#seZ2X!g68<&=Zo8u2|j*(uDH{odG z{Q$PYcIOPgs@d+$D993qf!59R7h8?i4g4N<1$Gm|HhZ#*-xFo~T%0Mon$H?e@^Wny<7Y{)w{jA2eM%41 z7B^@{0w;+~YpfHv!>32OQSkm#7sSrW2ByH5x|5a3-p1n(q?dh#CWX_jieR)J6zeui zYWx)oSZ&(HRGXzRmtEIQKz${JX>3t<_v=Mr_ALUf8>T^oA)U!l!ZF9lxh!@%pD=$e zqx9&gEox34zbo-P_=B8yen;i^v0`}B8TFu{LSbm^&lz2x`U4e+8|ziOKDE?KSf9EW z-nu@qdh1hR@8uAet2(3mLDZ0!6!ol!EAgA}aHF!%Da|5Hq0+vQP93qRYllj|Rzge# zSsxi!l*tSJ=jA-92gKWS>&!EO%)ztpQ%}`t42RONTy_OBg!K`n40L_Nlvk|IRj2XC z8BnBas!jkgYw-?5qAa>Oou~tS36qURmJbp_uJ2lTs>z{B>r(FX2O#tn&>bWha;(<0 z5$JAX8CQUwHe%Cjt=;Z^Ue5{MtBKl!G{Fsx*m-nk%moI3Gn-geywRfwAmuF7kRPQI z`ZtUCu^NO9if`rsLfw6umeS4*+K-kl;TNMXH(Z>+fBdxu)_MS@Q6eB^!$rU`o{O|7 zC6|&U;P~}gZUo-DD)>Yrtk1I=l6WNz}(Bk`I5UAO8k0dN|(K zUEhYF9r2g1vWq_$8>5ojll3WVVfR8tK$|U0Il67N^1PlZKi+lNc!U^)=0QH^=2n2#mw8&d*=_iq+XU z^Z&|mafiuNT5zhxWUAQ*HzcW;k$^G8*o8H*n?WeZ5l~qFx*3Jn^@Flh-+T2dI)1_b zx#K|9ULzL!vsH__%i2&|?FMK1+v-xMkh_$0<(u8`iC~T*pmGpUy%f3OMZDCWhMs=y zhN!g#HW+AHXZXqaVw4 zJq(>XqB9L`jwPonJUA{>RQN4!w^)@{qZ6|G%h>~1gv@55R92U!{}i%z9~#7ihCi}C z^;^zUoffVZ%KFrO-a8D^^{K_)OVrwgLe)v*b7RA2_u1POuTS?MpBFoKe13egG@LIk zUZ1)MG8qY9RpI*7%RKI^I30i1CK{ej=G^p*QcOSGwV|u z$Z9$>qix11)mPWC zl6h1QIQV?d`~lrPke}tRF5T>wc6PSONsQ_Gw+>p+3(WQ@64^?ljx?!U7qA6|s4)K0 z3^ot$z2pH0AL=n)L&=_o_JYa}m|(SoD$^Iv`{*T$e0q)ok~lj$32^`-$m2z!WV&10 zpV)JLV+xyz#a+Nqvpgz)HSP+aJcXf;$;Jilj}cQzD6g?Nov$bDYluOq0vt$;vHS&KU7=$FhyU2?$(4{bzb)xKSSAru5nK%T}50&`u!vF|FI&j z%y0h>db7?$+2{izgoXHPb#Iwwg@v3{M;GCI% zA~@;!+W_}bR%<)~abqWV`~#ZoS4TN3=m?reAddbWuBASR+CysY9!F39MlXWw0c}aulXaUkUVb z(zsEoe?SWQ4I->%;6xy|`eodK125?EDe>QYp#U4tCRQ%~43lHdq0{acMO*d07~1MP zJB2s68SZkvwRcY@^${I0j-I3myw&t7%nIhB{-%9_MxVOsikpJ^kjR`RRIgQM*RdS2qt!CVrK*%KN3HDm>I6d zU7Reu3b8*M9D5a3@|>R3A%m;VA5w^W78HUNO=&FiIV-FdrNT?S}}9{@%7@?yE4+n2^@k+;7zJ=Mb_NHrP$&m`T9~ zG(PwVDkmB{<5YaXZh47AvIC@VI!0No&J3Y8mFKxC+BITuwN@`M=rj zF8o~GU1ubG8Rtiz??Dyl-FSiSl1JAAkC$>0kYdtUmw z0zm01!Lzfn+(E#3rh#KuvL)gW5T}+tsPnO-Hfb(Srwv!}vph6z`a?}`gYcH?!w^2u z+r^PituCuwzr>CF<-x%L0LJ;e^+2^GF@I`^FKAy~Y;9?N_lxF@u-zvjxObj=7hb(R z73X}f$LC602uAYGSONLd9|x_gi@UXw+b#wUp&Bj)CnJF@N4weW6Vk}assKkughj7I zvGg2hx9!f6P!Pg{_DzuKZz;w1Lk^p2znMI#UMQ@y!J8u|p{!)Wre#UZgILxa>|)K` zO^z`c8Sw)PJ$smaoSyfu8CM?vBqgV@cvqN-@3yb-ZR_dqzC$1|R}Vgppg;u$(V-1_ zzVzJgJ!Z2W5l$RDaT>i6=e^zLYJMuq1dC)$W|bgH(!)fHCPTNzT}}{s$N2p;!DX|l zr;-}nIf+r2pnAc?f&sq35C6`Z$6%T%>fCF8%+@xB+S1R+lcgNP?Q#k+=mcI(r7TgP zWfjH1khkj?XbZ2x_1F|pgr^I(-FfWaX{&P*l(H_TCKt2w^EORV=k5B@KkrufYptWT zCTf}Qp!HS3Hd6#qERI5^$jQ>VgdPZ5lkoYAcNl9@VP_S}MM6eiR61$Hq4gG~oA#tR zIMn+AE>F_~)d%G>9XHMGa&C-(kUWQ|htkmOp*#pHLV3fecuXXc2oU=k$OU-_60y|m zdOQ!b%IkLXf)Zb#bresAQ&yrRZQf#|vrc4>IizY7;3>ORx%-)nsWHqWzFG7+nx|MR0pssM{JDrdTPQft zx}0(tRF7X0^N;_TYmTi*8LBbRB7}~KY!r_YhW_I@7mLj!J@eRc!SYyN@E1`9K2lU{ zV;*ZV*4Uxk5@f`;6oxV61a!W5Bu_HqIY$u~Au7jM-3auYLfiC~ja}*Xo~L6Y*2hr; z@GV_%3hie#lR)wHuvgQg(74pB#iOigByVnscdM1>eFb7PnVpC8b!v5F^B(KvMetDd zk3AV<`(?x-&cosc&z6HvD256A>nW5!J-_OpiQ z{S6x?Dh3#wPj~czR(a|QJTbQ}m>k~}Y0N}!$c*hZ8@)!j=@X{Hj<u_L_X=u%)J&QtmRH=9M^XJK!&;j6%jZqrm8XqP;9E%?$ zh|0~~tmYfPFj4?$jkz9Q`ARnhmE5V4c_iK_jZcO)K zzhQ49caCHc4F-p?#(D=TFh||gRsV)NaO#hp+~;@mIrd%xN^*VT^O>=AP*}ml-rV@g zg`Y3dr~Zl0PbYNr=LPYH;MmD4?5Xw3Ym)==F?^#(waWpZs&&FT^Oi9gJJB-~y_hWM z|8Z};!RMvUMuGX^1Bh!nmi3;Ft3Q`Snys9jjam{!Kr5mUOKxn*!?TBf{1?fLz%Gp-`NL%g0-MEg8IUwp%YpK_`W8-81{~bHVx5Nwhy?Gp$ zNget~u=@Xwo-rH2g?nXv5O89UIj0I`_bZdlxFLbu=Z7s8Lkycn*0(s60+;k2+h8h1C}-Y2hy8iI#ZKjZ+_u zHirF?!0#FGHs=xSKXm&o#zSYQ6#EWIY);Ba*W>=lFB%-+8BA|zgQN{cWF_)|zf}Mty`Nn@laQ$4m&5lXCSIOy0hLQ6_fh%r1P2YJ4jj`O`e_ z;cH|40xRPWn=}=_e%D@8T<&yBOP39Z4NPqP5>INpsGjC|kD$Uem>MKdEX@tH^x--1 zc>ED4sz-ujL!~DNS`^Agb=|?4n0lL+>?&Zxqg9wn=GuovZz_;L#@PXBCQknoWHr2q zRLtBKx+1$8ih<{@=2^!ytC#v{z2-c(b8p6Y`KDe$H~zZ#+r28knrK!fR=UrMXgO%! zkH5BD;#s!C4#D|Qx7aFmryBS4{YLFLk;$4s*iE;CM{p%(_gb&5{^0nW*IxKs{b2ql ze6%MsdcE^R+MRJNOQkn&7z&y-El8iTEZ=+1Ngub&?>*a&J z%WA9=`iCOeBv-#Ll9`zeK#tkr?k;d|PluC;^_*{6{-F_||Nn!3XaH`uIVM;d z12gHg&WWkO!2wLfL){2pCOVKOyShqHIjlK;B~&Rpdcl9QqXVHG;%-9=A_nf@K;WQe zSG~a*CXwU_c`U{gzr5U-ENe^_=||jx4lpudw{HCA_60=J1uKr=hZ_Tsc?eUI9=bm9 z;T)+*_K@-NHPOG*NJms#)P5qu{?S$S8=U9UbTP%vL5BjyBQTPe*($$1vDm_sjAD!{ zCe6e$e8us`^}K2pzE{TL1si8;cz>B#7qNns+#9Xi9#G|-i&VM(1v?itc#lL4oaKxC zn|p~5JaO5@Y2;&*W?{HltZtwSnQ@AVI$#nz^NUS!n`je;?_4WFoJ-a-T zoHN!5aCb{zAwCo6dr=*Y)h1)5Goy{Dp2?K#!sKuiaXw()@!^#eoD2KcrcxLfKMO8gU@R_iNZp_NihciLI?2U9 z&{ofTt+kiqPHhp`;oj0NzGbS1G|wH3<0j)7-;={(VLE3rIyCkrpj<-0Rrx!r2NO6* z5xOv2{e3$Ho1W$RX;urqYv8UmvEviF`^SbQcK3@Fb(%{OnIO{=y9WkZpX4#vyy_Q9 ziWT>KHrGOm1X@Hf6H>Z>?D3&)22L^e-bl%%Jp1DD?A@bsp~T+qJ*4>2y_q!eNaf?k zb?Ix}W^9`=CS2hNIT)UL#QsCp;(2rDLR}2?uXACk_tde_m^*g_%Ww{=JDxt9{)O$I zO4g?M0cS<+^P-7WWdfM_CjvV9a1{T89gC#fkQ+^6tCKAH#nXlX{$rS8#6Q*DDr~oH zp%hoN`A0?*D>kWyK+E0I6m>H+6TS;qfh6F_(VHrHxpK!;ahrI-f!6Ez9(F~DaAjjh zlT+>H1zLylMJic?_@$ST#L9AwEO6%nzX9??^mNx#rl%?RVZeQQG)w}4gS6kU9={~{DpS@TXJjz5san3>?14Z zXj_~QDVafj`5e5BhU^j!+NNbvbWC?iFN5I@lY#GZ3!T6H74{X}!=rJ#jK3&NW~kzq zn#=`10hB@c#OgA09JQJ?uZ*KJtl^?<3J(J8;dy$NQ= zvkGgVL!$PItvoZ>$BxnwK7|7NbVbII`cLW-aS3!a;>u8f&#UZVyG3zCCd4Kr=G~PO z_@P!h4dd2>XE}3f(r_}dA_SC|yth|MBmL>DET`U0XQQU1{Xyd(56+}qqIjJSj;r)H zJ;Gu7e6LPnTvcK!^gB}*NbLWdEUebKBc1>}d5w>|9LxTd&8E}Or;g`?S8J`!8Dj4F zP^KD`uO`XK?Rrr*cYG7H&|T(X@9ja<_5La|&o#&I&7iMp;*>2wuK+slmKCC*OZ z74}*nd0V;AzRJg(qFbhWYxCSfe7|?`WVV$B3xg@Mm#!cMDk;$NTOJ6P1wCJ51gs~B zs;MPc4pjNf0nKx%2;2c7%6cwlSDfm#Rb!kV>|B>0CkiC83Om;mS-+C0^Cr8m3%OMgbW5FwLEbEG z?=>k;PwF+hC{pDcXoV{oU+!G|_P!7sAKVS<4gRLi)PEWHrQ*xYsbH2`*u?pdxAzzc zNx?mnIP};g6+;&mr9?wkH5`dToprwVs}cqr}0cW7fO zwPNR75IZ{^`f5a55IO{+H6DXbWi+zm=ohwrFJza-d8$EVY%xIRZ=ry^)j%Gtx1Uo7*U1?r*k6Mh4O+0Jnixb>l^nmGuIi#$rnw+XS?3G+3 z-x;h?b_fmS(ZBAch#}E79otzwG&eR#hRkm|WsMkYOeWg2IR*cj(|l?0;6O$@!gol1 zkIw>3rcDSvOPe5S&$KcKRrYVSGbRIOp zfU+-zD)hlzI1;B69UN{*&b6>9?SwntK${?lsD2H;*mZ2^MKY^!aRMYtL)3o8^-IF3 zd$h+F@5Kr3cthyA;EJ9?c0#*TTmo>#O%1x&oj||wm1AHpJ=}go8Mt5MKD59y65eqB{yxkr(b9k)TMWkK00Kj zN36}N77ol5J@#*?78*^$_YTH{cEQ1(H01)htcmppATJPH$1$dKm9o&BWP-RAaT$Fv z#;vj%{gdJ=~tc1 zKW$uf{(PC)YvXZWrJK+Fj>R_Sg(iGq(2#pDqr157w3->KhL9cW_=hnqd5uimT;6Nj zv0_Kv6l=|(c)3JRwoAlr_-EXGY#5J5FMJ~|DTz$JJb0oZT@27=JyfLwVQW77Q7+0% z_{zgN3dqw4dK?9WaQHZKA724i(whlf1Nwl z3ivbI=t0e-eX@wd)@IFDa!mDq_AJuR?*Zc^2i7cM4JW^6KL1y*&kOh*e6%QiEmG=C z(SMC&-GJr+V8nfOn#XwC$weiDeyb77O@zzYA>bUPW0X!0RfK~EsdM}`{b*3AfNi1I zHx8=c=c!bFVK1tL%;!#Nez{iO8nIV3kmP)+b+MnGre|D==~=;N9Ii8Zo~7qk-RC)a zmcKjFoAoRSBF}Ale$0Jdtmogj&r9?y1z^VPs%@s05-!SpG?FK$fh~qziL1F&FC38g z5T_PjiZA9|OHs^#i=FM8#b%jamd3LT)`-&JFLvswO8c^wUqk^cQ2Z@Irj@Zq+`#8m zI_KyER>aP!Cg*l%B)^^lsX{z@t-89w_JW9mu*20Gpn*3c&O17{S@w zQJx#S*!7TdV7-V{dfdd?Pt1g-5f@Gu^g7X*c*L`hw|_cI>45ZiSxDKB=$o!`taz3Q zxjyx~XLKy@ujIUSKP{R{Cd$>KiP(!wJt8Q7r9CH!dg6ofNMj{&oLto;6zp^HGffOi z^#+#e1C4-|6>jJ8759;gFL5(l+L0fHw}_Qu;`|T?@i!8uya{rwy%zF(l9=ye?)~^= zv}9ZpU025jRgx8|Yqkdt!#bUFqZ+`LUfaXnz2rVO@I;>(Sniw= z39M>2dI-s@`Ycb}>dzstRpNYKybs#_Xy}<>H4~i0EJnntj`XVP5T_FKf=AVrFx~aa*25H1~M_M_j&^eb~rQLMH>!{_1j-}^P z7Iy>3b}Nh@On_L4=&%c~y6wOOC+fUnyd-PZPX%bJew_yk0y!ej73LYk0&S(_n6r2V zTJOIGXsy>opW;CcJq-t*@BtdJ3$mb5le{huHcGe)O+m&Cqu#7d6BvfhO4-tN^-xl4 z5lgt%YAPL@25!w#{D=iKnpWGLSN_ZxQL0dL=bLps?1~%$zUt5+F!1$?hB7vfGw3Kl zceJM=b{ChAXyczFtKZJQ(8@pMt2*uU*0KNrIa5>~N)x6QXl>WEhW!X=>dkp!52T}W zPzg{szI3q|peTr|vwz@c|3;fv>6YPRK{2*|FpGZvG?fJ%8L@By^S&c3M-)L%mc%|e zCf1$lH)P6G*R9}hCf(0obO-g+Sg=OE3ZIsEJwZ3jK2M107FS8s8`?#;NzC+aY_PV< zK!HY?7ao*oqG-+Uay~QX=GN|(_SYHgElp}b4WJD*0JE)Ncy((>eEl^e{pZS=)d#r1 zO<5{R(`0i_byJpsEth1~gev%d$3EW#Tf=_Gq?}*d_&$jf;ujeQCrBPnyOXsIgr%#Rikw;tYrK|Gap6vm zdHk1rawBrw_PqMQB8V8da2G1f;qy|EJ#Uwj^Dse}qke1XFUqi2sED0jN1naJ}`=0oewTl%0t zcuwX|QrLr3s7aQtF=ur!urgMf<6KP6Xs742Ao0Z~1ik=Oia$`85`Trc=@P0sqB~Q1 z8qLNV15e!C--@pbC1X2_L)K0_2A%nuXe;BD&WIe#L#M{qMH^o>RRB~|+N5xV#vYT` z5NWJm7fm+3QXI9QY%BOA9%LBr@uwJ%DmlLNw-aCNh_ey#Cn(}S=ks&}tN zTOCY%)*oNOiO%BmitfWXcy;ia?gM)3e)Ok!C&nE2PZ7lpjo&03-na%rvogB+y?h~% zyqi!Gxd=T>(GJq+R|Jlm{WVEEk*>p56~;P3q!(j@p9ITfym4)F1~RTNjzvM*)dcNr zDmZ0&yvQ(Jh?%|eXfq$%oHs>M9h7clL+;;MNPWC+{oUFSM&Po3PTz`){PC00)2S4X zw<|B8%I@vf3vH+7(gss_R$^-*1kTW%iTCeW*s;)bV3%_>A1SRn0+iUUgH|8~yIzf? zJB@wirG_9g;PPkFCGKx{kh*9Vp_u6rO3M&c^UotX%GsfcYxD61kMWXKHAH6Q6KC>y z^o!$yg}5pR`hA%-iOtF*_RB!CZb}^f_DIuj{LD4C3C@&msE~kpI!QW>PQuE0Gs*hwaIY&1%;IL zM<**|tM(aZvmtlDps3rTEDdY24*)k7F%jMSM<{tMG!7wAh9@w92yqiiSJ_7(>p9CT z%?B$dnib7Bci@AVcq+w;r-G9EWd@lJj5ba>N4T*gv?g6>BAul3gPH#oQS~IjS2Ana zS`$wsbmYLWJ);3hOW2yxkUkPSC3YFRE^J?SdzrdsUpOFaZM9xod7RhYaM~04(`H6U zqy5l@=6a?pl*~8qFgk;NXvO9QqeD#FY0bB=r;n$#n@_B4-rIL}VP)X)j-WN=_Oj$e zcS{2gok6puGo6V{7A&5YmB;*%zIY%TU1@K!AwRJp$J&zU@?(4kxV?z`Exi&fvzGC% z=T(7RfF1nstvt``@C_?u7_X{^K1qM+aF_`%^p-ELW+5DgN`FpzcsF)#FHUd6R55I^yhMr* zwoN)wt15j8QP)P>xpe~vA3J5Nhm^C2Z|{pkgp0#+5a2Sa{sF6YX~-h9rf3bLR2E(V zn*>jtnKk%Dw6CeLrnZl}EV7``+LW`!npC3(N7Y3XVxfMyUDc3m$RS4_+M87k?Dag1 z{lXiy(yOsYHHV@gZT6!=iqiq7kI=hLUqj(#AlbqydpNXgctu5nKVEDW98|G!Wxz~N z#;K%Ox=i@)Rn_J~TgDkh@{{aE6f#9utATqVhS>p?jTrlOrV@)>#dhzeb#u)q5_E0i3jO~p6c4GA`7mwDrFF03-bhJUF zrJ9bwp`&TV+QBdFCSMGncvSs_&>GXx`IoKOzk6w zSvg4A431-s_vx#7!G-Kg=_+Y1`h(yxE&+sYX2&v#=Bl1?eC%<8C9}LCyITAfk%N<% zU+0~NH3?UaMcaj=NbzvukJEhde$7J&?RTDoTAg1pgIw7mJ7JyN_!IOflLeRPC*VbT zF^nshZ?%^b3V(R!Rs`$||7asN(!N2dPZf~j&HgrL3X)0Lc5&$X@dPtPJDvGCkXyQ6 zul9tk|8)Y?X|2T{h^g4sfzG4Ce?e%(*|En0Ct82v|ywg+_Eotyq((3e1Yqem@lcdjN8AU&V` zUsGxjz?o50mS#bmHDnRMvAq$10|LO+V2g_YLZx7UL)|M5vU0W7Mkl@8;ObhKt8cq} zs<%G=7iK7Hy)Oo)W%RN_R_k?)*tJSS)#p@X5Mle@7}7)(RlknN%tRuTt(axZ`|VY7 zPHD|+3GV7-%CHXHjcNzV(l5C2gw7sts`_g<=5Qmy<757hntl zo)4;}bP0qd4TTrG0Z+_xn;pIvm=8c_?LyV7oI>Wd-MN3n?iEa#BEY&o?Y=+$Y+Oh9 zxtxx0hp&T>gr4pfdP++pN!TkEit9Zt9eo;?^}O?=?`ZQ+Z4-C+^hjg%9-V*C3;AHX z#Swc5=i$It{)4HN((SXV!C8yPNmm63{5t*KChS1o3GSSjTSDM5G=m!9t)L^-n19K;+U!Sj8uFkqzIS=H56E1*1Vhw>s zTJQ!r_~fnkt9lc6E4$uTK4TyRr0b!j=3?6Zg}zQ96diyW%B~LC z20OUgJ$8M|%714Xn50>PsroPeS#p`f4qFAp4aal)FN41mXt|m_Wlx5tdY8Kz!UYM{ zy*TrciVg`E)&(mzHtAmNthp0r80R22ILxo3tyBBNHDKdEoPv{me>kcW(DS=I~LO7ZWv4c32XkeMFw9eP0)!I9j8D z5MI{k%64bNw}>f5Dtqg#&0G5=rt$23x?BlewHCx(>OIy3kwsuQfK~%tSX@V{F z+IsJb*2|3J7HVCfN}d1v^F7Z@CJ=46`}^~Hk$IkT&U3Ec^F815y(W)64s;l_0qI1@ zJZ}er#qkeWm$Ipk;;B7(eVMyFC67J*2Ek%Bbt1_@J&W8?Voqo%Z0c9sy22gHTS``bf>XBz?5mJf%v@K}X3kCT>Y`1@zZ>4%vt?h_MXjRJZ>5C9GP!cwLOD<29^UaXX5_!ih)JPP}HA32F48b52g5es1g%!NXMs&TgP%Z{E}`m zOB@Wlqq5i^Bk;_?`Ol`lGZT96k}*uqJ_oWkIa|*P`tVa0#r2_*K1^&&3_>Io4zz`V zLR>>&L*oYIH4KK;aImC3(&NvZ00}1+_-2-g`>4NswUmb*p*?FEcL-ZgW+2Ftj_ThrN)$__(SUjg0sU%l$d4ndC_A7dFRF%A8uC9CMBcNIK^|V;d#) z?^MT}WOqbs-)eh-3_56-*+nr?$2%#KQ;-|k7v0T(iqfBiG=Q{*YUkEMp^1dL<=9wD z^!1L^(8*L{m z3kW@KdW*T~Ej$;fkB(acSeA#Y{%mVeKn}v9u~T_fj3MfCUN=`xeSp2Gph3;;D>Tos?59?+PEDOoEg2& zRwjKk1t6x@`jbMZsAI9xLL<7>)Zkwr)xbie_9L~N9)lCzzXw(8Rqo(^%K0Zui0q)S$CMxwsrWUd;^OK^n1AU%qcNJ zue}poLgF_XYb`lss8?Fl@$Pl4r$Fl+ZO_+BAUx!MkOpe;gv(H@bX`a zIVW72$URPugJh!w$;t7lpL0-rLwA>c^2SZNXd2yV6Ebt}*jd3HI?oNy$@QwZSmwG1 z4B*hidz0$7TJ;xF{R=n77-y*)~fbrKm-1_qXA_Sm!|>yL<9aJT>EQB1HP$-Id5SI zp=%(yn2Vg0`dM0&`k6{+G(_YrC*7DgkL8|T!|^w{fHv?_ejFka#_(#$1u;-W9Kbwz z2xZX8;o62vmvbmITxym_z``Ib>ph1{!C0@b)N`H;!^4GI@*q`5tU-(KPh zd5Jb4z@Js+nGI2D^LGV6u(d#1mtUIwl{e=e(Jn=zOQM@1{u&iW*s+Y6mv<7F`Er;0 zat5{G=C07ji_f8-xG>)OC0qXkscYAQm!9x1Ih5TVDSkW1Yz#7Ikg55^mlcFa4fddA z(b_lK9*a1OCdn8Qn;;QjcCIQ4C8inXowW|hr}*I`{7;KV^XZmMMHW=jysj(k_%t`y zD547eE3L?Gr%C7-$74K@dj4MxOvgWjOhrLDMRx8Y%~YR7wQ;Gf9T7jJV~Yk_96yeO zi{Xf~>BsK@Le`}&CrmfR#gDsZ>xA6+U4zsCp-ca*#o4OD zpD`gBez$hpieqA{iMyRA&6L4SW_gI~OJTZ>uOESp7#K4U6Z

$jEA(Gw6Bjwbjr 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Ȼ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 -?lUR59UB1w;MBRYZ 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�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%0D1Ik@#h711c8u(qJ=iVsnXd`_9NqZi@Ml=xr|g{H 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 Date: Thu, 7 Apr 2011 23:16:36 +0100 Subject: [PATCH 048/138] Remove the SQLite legacy adaptor. This is no longer needed now that the main adaptor works on Mac OS X. The SQLite legacy adapator was also not at all well maintained, even worse than the mainline sqlite adapator. --- .../SQLiteLegacy/Properties/AssemblyInfo.cs | 65 - .../SQLiteLegacy/Resources/001_AssetStore.sql | 12 - .../SQLiteLegacy/Resources/001_AuthStore.sql | 18 - .../SQLiteLegacy/Resources/001_Avatar.sql | 9 - .../Resources/001_FriendsStore.sql | 10 - .../Resources/001_InventoryStore.sql | 32 - .../Resources/001_RegionStore.sql | 144 -- .../Resources/001_UserAccount.sql | 17 - .../SQLiteLegacy/Resources/001_UserStore.sql | 39 - .../SQLiteLegacy/Resources/002_AssetStore.sql | 10 - .../SQLiteLegacy/Resources/002_AuthStore.sql | 5 - .../Resources/002_FriendsStore.sql | 5 - .../Resources/002_InventoryStore.sql | 8 - .../Resources/002_RegionStore.sql | 10 - .../Resources/002_UserAccount.sql | 5 - .../SQLiteLegacy/Resources/002_UserStore.sql | 5 - .../SQLiteLegacy/Resources/003_AssetStore.sql | 1 - .../Resources/003_InventoryStore.sql | 5 - .../Resources/003_RegionStore.sql | 5 - .../SQLiteLegacy/Resources/003_UserStore.sql | 6 - .../SQLiteLegacy/Resources/004_AssetStore.sql | 7 - .../Resources/004_InventoryStore.sql | 36 - .../Resources/004_RegionStore.sql | 38 - .../SQLiteLegacy/Resources/004_UserStore.sql | 6 - .../Resources/005_RegionStore.sql | 5 - .../SQLiteLegacy/Resources/005_UserStore.sql | 5 - .../Resources/006_RegionStore.sql | 102 - .../SQLiteLegacy/Resources/006_UserStore.sql | 20 - .../Resources/007_RegionStore.sql | 8 - .../SQLiteLegacy/Resources/007_UserStore.sql | 7 - .../Resources/008_RegionStore.sql | 6 - .../SQLiteLegacy/Resources/008_UserStore.sql | 5 - .../Resources/009_RegionStore.sql | 8 - .../SQLiteLegacy/Resources/009_UserStore.sql | 11 - .../Resources/010_RegionStore.sql | 5 - .../SQLiteLegacy/Resources/010_UserStore.sql | 37 - .../Resources/011_RegionStore.sql | 28 - .../Resources/012_RegionStore.sql | 5 - .../Resources/013_RegionStore.sql | 6 - .../Resources/014_RegionStore.sql | 8 - .../Resources/015_RegionStore.sql | 6 - .../Resources/016_RegionStore.sql | 5 - .../Resources/017_RegionStore.sql | 8 - .../Resources/018_RegionStore.sql | 79 - .../Resources/OpenSim.Data.SQLite.addin.xml | 20 - OpenSim/Data/SQLiteLegacy/SQLiteAssetData.cs | 347 --- .../SQLiteLegacy/SQLiteAuthenticationData.cs | 266 -- OpenSim/Data/SQLiteLegacy/SQLiteAvatarData.cs | 74 - OpenSim/Data/SQLiteLegacy/SQLiteEstateData.cs | 451 ---- OpenSim/Data/SQLiteLegacy/SQLiteFramework.cs | 91 - .../Data/SQLiteLegacy/SQLiteFriendsData.cs | 70 - .../SQLiteLegacy/SQLiteGenericTableHandler.cs | 268 -- .../Data/SQLiteLegacy/SQLiteInventoryStore.cs | 898 ------- .../Data/SQLiteLegacy/SQLiteSimulationData.cs | 2274 ----------------- .../SQLiteLegacy/SQLiteUserAccountData.cs | 81 - OpenSim/Data/SQLiteLegacy/SQLiteUtils.cs | 307 --- .../Data/SQLiteLegacy/SQLiteXInventoryData.cs | 155 -- bin/config-include/GridCommon.ini.example | 5 - .../StandaloneCommon.ini.example | 5 - .../storage/SQLiteLegacyStandalone.ini | 20 - prebuild.xml | 38 - 61 files changed, 6232 deletions(-) delete mode 100644 OpenSim/Data/SQLiteLegacy/Properties/AssemblyInfo.cs delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/001_AssetStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/001_AuthStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/001_Avatar.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/001_FriendsStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/001_InventoryStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/001_RegionStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/001_UserAccount.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/001_UserStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/002_AssetStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/002_AuthStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/002_FriendsStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/002_InventoryStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/002_RegionStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/002_UserAccount.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/002_UserStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/003_AssetStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/003_InventoryStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/003_RegionStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/003_UserStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/004_AssetStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/004_InventoryStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/004_RegionStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/004_UserStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/005_RegionStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/005_UserStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/006_RegionStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/006_UserStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/007_RegionStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/007_UserStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/008_RegionStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/008_UserStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/009_RegionStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/009_UserStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/010_RegionStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/010_UserStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/011_RegionStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/012_RegionStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/013_RegionStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/014_RegionStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/015_RegionStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/016_RegionStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/017_RegionStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/018_RegionStore.sql delete mode 100644 OpenSim/Data/SQLiteLegacy/Resources/OpenSim.Data.SQLite.addin.xml delete mode 100644 OpenSim/Data/SQLiteLegacy/SQLiteAssetData.cs delete mode 100644 OpenSim/Data/SQLiteLegacy/SQLiteAuthenticationData.cs delete mode 100644 OpenSim/Data/SQLiteLegacy/SQLiteAvatarData.cs delete mode 100644 OpenSim/Data/SQLiteLegacy/SQLiteEstateData.cs delete mode 100644 OpenSim/Data/SQLiteLegacy/SQLiteFramework.cs delete mode 100644 OpenSim/Data/SQLiteLegacy/SQLiteFriendsData.cs delete mode 100644 OpenSim/Data/SQLiteLegacy/SQLiteGenericTableHandler.cs delete mode 100644 OpenSim/Data/SQLiteLegacy/SQLiteInventoryStore.cs delete mode 100644 OpenSim/Data/SQLiteLegacy/SQLiteSimulationData.cs delete mode 100644 OpenSim/Data/SQLiteLegacy/SQLiteUserAccountData.cs delete mode 100644 OpenSim/Data/SQLiteLegacy/SQLiteUtils.cs delete mode 100644 OpenSim/Data/SQLiteLegacy/SQLiteXInventoryData.cs delete mode 100644 bin/config-include/storage/SQLiteLegacyStandalone.ini diff --git a/OpenSim/Data/SQLiteLegacy/Properties/AssemblyInfo.cs b/OpenSim/Data/SQLiteLegacy/Properties/AssemblyInfo.cs deleted file mode 100644 index 609a024b73..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System.Reflection; -using System.Runtime.InteropServices; - -// General information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. - -[assembly : AssemblyTitle("OpenSim.Data.SQLiteLegacy")] -[assembly : AssemblyDescription("")] -[assembly : AssemblyConfiguration("")] -[assembly : AssemblyCompany("http://opensimulator.org")] -[assembly : AssemblyProduct("OpenSim.Data.SQLiteLegacy")] -[assembly : AssemblyCopyright("Copyright (c) OpenSimulator.org Developers 2007-2009")] -[assembly : AssemblyTrademark("")] -[assembly : AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. - -[assembly : ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM - -[assembly : Guid("6113d5ce-4547-49f4-9236-0dcc503457b1")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Revision and Build Numbers -// by using the '*' as shown below: - -[assembly : AssemblyVersion("0.6.5.*")] -[assembly : AssemblyFileVersion("0.6.5.0")] diff --git a/OpenSim/Data/SQLiteLegacy/Resources/001_AssetStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/001_AssetStore.sql deleted file mode 100644 index 2e026cad19..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/001_AssetStore.sql +++ /dev/null @@ -1,12 +0,0 @@ -BEGIN TRANSACTION; -CREATE TABLE assets( - UUID varchar(255) primary key, - Name varchar(255), - Description varchar(255), - Type integer, - InvType integer, - Local integer, - Temporary integer, - Data blob); - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/001_AuthStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/001_AuthStore.sql deleted file mode 100644 index 468567dcc2..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/001_AuthStore.sql +++ /dev/null @@ -1,18 +0,0 @@ -BEGIN TRANSACTION; - -CREATE TABLE auth ( - UUID char(36) NOT NULL, - passwordHash char(32) NOT NULL default '', - passwordSalt char(32) NOT NULL default '', - webLoginKey varchar(255) NOT NULL default '', - accountType VARCHAR(32) NOT NULL DEFAULT 'UserAccount', - PRIMARY KEY (`UUID`) -); - -CREATE TABLE tokens ( - UUID char(36) NOT NULL, - token varchar(255) NOT NULL, - validity datetime NOT NULL -); - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/001_Avatar.sql b/OpenSim/Data/SQLiteLegacy/Resources/001_Avatar.sql deleted file mode 100644 index 7ec906b48a..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/001_Avatar.sql +++ /dev/null @@ -1,9 +0,0 @@ -BEGIN TRANSACTION; - -CREATE TABLE Avatars ( - PrincipalID CHAR(36) NOT NULL, - Name VARCHAR(32) NOT NULL, - Value VARCHAR(255) NOT NULL DEFAULT '', - PRIMARY KEY(PrincipalID, Name)); - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/001_FriendsStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/001_FriendsStore.sql deleted file mode 100644 index f1b9ab9902..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/001_FriendsStore.sql +++ /dev/null @@ -1,10 +0,0 @@ -BEGIN TRANSACTION; - -CREATE TABLE `Friends` ( - `PrincipalID` CHAR(36) NOT NULL, - `Friend` VARCHAR(255) NOT NULL, - `Flags` VARCHAR(16) NOT NULL DEFAULT 0, - `Offered` VARCHAR(32) NOT NULL DEFAULT 0, - PRIMARY KEY(`PrincipalID`, `Friend`)); - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/001_InventoryStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/001_InventoryStore.sql deleted file mode 100644 index 554d5c2ec8..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/001_InventoryStore.sql +++ /dev/null @@ -1,32 +0,0 @@ -BEGIN TRANSACTION; - -CREATE TABLE inventoryfolders( - UUID varchar(255) primary key, - name varchar(255), - agentID varchar(255), - parentID varchar(255), - type integer, - version integer); - -CREATE TABLE inventoryitems( - UUID varchar(255) primary key, - assetID varchar(255), - assetType integer, - invType integer, - parentFolderID varchar(255), - avatarID varchar(255), - creatorsID varchar(255), - inventoryName varchar(255), - inventoryDescription varchar(255), - inventoryNextPermissions integer, - inventoryCurrentPermissions integer, - inventoryBasePermissions integer, - inventoryEveryOnePermissions integer, - salePrice integer default 99, - saleType integer default 0, - creationDate integer default 2000, - groupID varchar(255) default '00000000-0000-0000-0000-000000000000', - groupOwned integer default 0, - flags integer default 0); - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/001_RegionStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/001_RegionStore.sql deleted file mode 100644 index 39e8180cdc..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/001_RegionStore.sql +++ /dev/null @@ -1,144 +0,0 @@ -BEGIN TRANSACTION; - -CREATE TABLE prims( - UUID varchar(255) primary key, - RegionUUID varchar(255), - ParentID integer, - CreationDate integer, - Name varchar(255), - SceneGroupID varchar(255), - Text varchar(255), - Description varchar(255), - SitName varchar(255), - TouchName varchar(255), - CreatorID varchar(255), - OwnerID varchar(255), - GroupID varchar(255), - LastOwnerID varchar(255), - OwnerMask integer, - NextOwnerMask integer, - GroupMask integer, - EveryoneMask integer, - BaseMask integer, - PositionX float, - PositionY float, - PositionZ float, - GroupPositionX float, - GroupPositionY float, - GroupPositionZ float, - VelocityX float, - VelocityY float, - VelocityZ float, - AngularVelocityX float, - AngularVelocityY float, - AngularVelocityZ float, - AccelerationX float, - AccelerationY float, - AccelerationZ float, - RotationX float, - RotationY float, - RotationZ float, - RotationW float, - ObjectFlags integer, - SitTargetOffsetX float NOT NULL default 0, - SitTargetOffsetY float NOT NULL default 0, - SitTargetOffsetZ float NOT NULL default 0, - SitTargetOrientW float NOT NULL default 0, - SitTargetOrientX float NOT NULL default 0, - SitTargetOrientY float NOT NULL default 0, - SitTargetOrientZ float NOT NULL default 0); - -CREATE TABLE primshapes( - UUID varchar(255) primary key, - Shape integer, - ScaleX float, - ScaleY float, - ScaleZ float, - PCode integer, - PathBegin integer, - PathEnd integer, - PathScaleX integer, - PathScaleY integer, - PathShearX integer, - PathShearY integer, - PathSkew integer, - PathCurve integer, - PathRadiusOffset integer, - PathRevolutions integer, - PathTaperX integer, - PathTaperY integer, - PathTwist integer, - PathTwistBegin integer, - ProfileBegin integer, - ProfileEnd integer, - ProfileCurve integer, - ProfileHollow integer, - Texture blob, - ExtraParams blob, - State Integer NOT NULL default 0); - -CREATE TABLE primitems( - itemID varchar(255) primary key, - primID varchar(255), - assetID varchar(255), - parentFolderID varchar(255), - invType integer, - assetType integer, - name varchar(255), - description varchar(255), - creationDate integer, - creatorID varchar(255), - ownerID varchar(255), - lastOwnerID varchar(255), - groupID varchar(255), - nextPermissions string, - currentPermissions string, - basePermissions string, - everyonePermissions string, - groupPermissions string); - -CREATE TABLE terrain( - RegionUUID varchar(255), - Revision integer, - Heightfield blob); - -CREATE TABLE land( - UUID varchar(255) primary key, - RegionUUID varchar(255), - LocalLandID string, - Bitmap blob, - Name varchar(255), - Desc varchar(255), - OwnerUUID varchar(255), - IsGroupOwned string, - Area integer, - AuctionID integer, - Category integer, - ClaimDate integer, - ClaimPrice integer, - GroupUUID varchar(255), - SalePrice integer, - LandStatus integer, - LandFlags string, - LandingType string, - MediaAutoScale string, - MediaTextureUUID varchar(255), - MediaURL varchar(255), - MusicURL varchar(255), - PassHours float, - PassPrice string, - SnapshotUUID varchar(255), - UserLocationX float, - UserLocationY float, - UserLocationZ float, - UserLookAtX float, - UserLookAtY float, - UserLookAtZ float, - AuthbuyerID varchar(36) NOT NULL default '00000000-0000-0000-0000-000000000000'); - -CREATE TABLE landaccesslist( - LandUUID varchar(255), - AccessUUID varchar(255), - Flags string); - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/001_UserAccount.sql b/OpenSim/Data/SQLiteLegacy/Resources/001_UserAccount.sql deleted file mode 100644 index c38d9a762f..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/001_UserAccount.sql +++ /dev/null @@ -1,17 +0,0 @@ -BEGIN TRANSACTION; - --- useraccounts table -CREATE TABLE UserAccounts ( - PrincipalID CHAR(36) primary key, - ScopeID CHAR(36) NOT NULL, - FirstName VARCHAR(64) NOT NULL, - LastName VARCHAR(64) NOT NULL, - Email VARCHAR(64), - ServiceURLs TEXT, - Created INT(11), - UserLevel integer NOT NULL DEFAULT 0, - UserFlags integer NOT NULL DEFAULT 0, - UserTitle varchar(64) NOT NULL DEFAULT '' -); - -COMMIT; \ No newline at end of file diff --git a/OpenSim/Data/SQLiteLegacy/Resources/001_UserStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/001_UserStore.sql deleted file mode 100644 index b584594ced..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/001_UserStore.sql +++ /dev/null @@ -1,39 +0,0 @@ -BEGIN TRANSACTION; - --- users table -CREATE TABLE users( - UUID varchar(255) primary key, - username varchar(255), - surname varchar(255), - passwordHash varchar(255), - passwordSalt varchar(255), - homeRegionX integer, - homeRegionY integer, - homeLocationX float, - homeLocationY float, - homeLocationZ float, - homeLookAtX float, - homeLookAtY float, - homeLookAtZ float, - created integer, - lastLogin integer, - rootInventoryFolderID varchar(255), - userInventoryURI varchar(255), - userAssetURI varchar(255), - profileCanDoMask integer, - profileWantDoMask integer, - profileAboutText varchar(255), - profileFirstText varchar(255), - profileImage varchar(255), - profileFirstImage varchar(255), - webLoginKey text default '00000000-0000-0000-0000-000000000000'); --- friends table -CREATE TABLE userfriends( - ownerID varchar(255), - friendID varchar(255), - friendPerms integer, - ownerPerms integer, - datetimestamp integer); - -COMMIT; - diff --git a/OpenSim/Data/SQLiteLegacy/Resources/002_AssetStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/002_AssetStore.sql deleted file mode 100644 index 5339b84dfd..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/002_AssetStore.sql +++ /dev/null @@ -1,10 +0,0 @@ -BEGIN TRANSACTION; - -CREATE TEMPORARY TABLE assets_backup(UUID,Name,Description,Type,Local,Temporary,Data); -INSERT INTO assets_backup SELECT UUID,Name,Description,Type,Local,Temporary,Data FROM assets; -DROP TABLE assets; -CREATE TABLE assets(UUID,Name,Description,Type,Local,Temporary,Data); -INSERT INTO assets SELECT UUID,Name,Description,Type,Local,Temporary,Data FROM assets_backup; -DROP TABLE assets_backup; - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/002_AuthStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/002_AuthStore.sql deleted file mode 100644 index 3237b68fd6..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/002_AuthStore.sql +++ /dev/null @@ -1,5 +0,0 @@ -BEGIN TRANSACTION; - -INSERT INTO auth (UUID, passwordHash, passwordSalt, webLoginKey) SELECT `UUID` AS UUID, `passwordHash` AS passwordHash, `passwordSalt` AS passwordSalt, `webLoginKey` AS webLoginKey FROM users; - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/002_FriendsStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/002_FriendsStore.sql deleted file mode 100644 index 6733502224..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/002_FriendsStore.sql +++ /dev/null @@ -1,5 +0,0 @@ -BEGIN TRANSACTION; - -INSERT INTO `Friends` SELECT `ownerID`, `friendID`, `friendPerms`, 0 FROM `userfriends`; - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/002_InventoryStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/002_InventoryStore.sql deleted file mode 100644 index 01951d6582..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/002_InventoryStore.sql +++ /dev/null @@ -1,8 +0,0 @@ -BEGIN TRANSACTION; - -create index inventoryfolders_agentid on inventoryfolders(agentid); -create index inventoryfolders_parentid on inventoryfolders(parentid); -create index inventoryitems_parentfolderid on inventoryitems(parentfolderid); -create index inventoryitems_avatarid on inventoryitems(avatarid); - -COMMIT; \ No newline at end of file diff --git a/OpenSim/Data/SQLiteLegacy/Resources/002_RegionStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/002_RegionStore.sql deleted file mode 100644 index c5c7c99455..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/002_RegionStore.sql +++ /dev/null @@ -1,10 +0,0 @@ -BEGIN TRANSACTION; - -CREATE TABLE regionban( - regionUUID varchar (255), - bannedUUID varchar (255), - bannedIp varchar (255), - bannedIpHostMask varchar (255) - ); - -COMMIT; \ No newline at end of file diff --git a/OpenSim/Data/SQLiteLegacy/Resources/002_UserAccount.sql b/OpenSim/Data/SQLiteLegacy/Resources/002_UserAccount.sql deleted file mode 100644 index c7a62932ac..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/002_UserAccount.sql +++ /dev/null @@ -1,5 +0,0 @@ -BEGIN TRANSACTION; - -INSERT INTO UserAccounts (PrincipalID, ScopeID, FirstName, LastName, Email, ServiceURLs, Created) SELECT `UUID` AS PrincipalID, '00000000-0000-0000-0000-000000000000' AS ScopeID, username AS FirstName, surname AS LastName, '' as Email, '' AS ServiceURLs, created as Created FROM users; - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/002_UserStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/002_UserStore.sql deleted file mode 100644 index 48fc680b33..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/002_UserStore.sql +++ /dev/null @@ -1,5 +0,0 @@ -BEGIN; - -ALTER TABLE users add homeRegionID varchar(36) NOT NULL default '00000000-0000-0000-0000-000000000000'; - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/003_AssetStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/003_AssetStore.sql deleted file mode 100644 index f54f8d98a2..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/003_AssetStore.sql +++ /dev/null @@ -1 +0,0 @@ -DELETE FROM assets WHERE UUID = 'dc4b9f0bd00845c696a401dd947ac621' diff --git a/OpenSim/Data/SQLiteLegacy/Resources/003_InventoryStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/003_InventoryStore.sql deleted file mode 100644 index 4c6da91aab..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/003_InventoryStore.sql +++ /dev/null @@ -1,5 +0,0 @@ -BEGIN; - -alter table inventoryitems add column inventoryGroupPermissions integer unsigned not null default 0; - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/003_RegionStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/003_RegionStore.sql deleted file mode 100644 index 4db2f7587d..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/003_RegionStore.sql +++ /dev/null @@ -1,5 +0,0 @@ -BEGIN; - -ALTER TABLE primitems add flags integer not null default 0; - -COMMIT; \ No newline at end of file diff --git a/OpenSim/Data/SQLiteLegacy/Resources/003_UserStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/003_UserStore.sql deleted file mode 100644 index 6f890eeec1..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/003_UserStore.sql +++ /dev/null @@ -1,6 +0,0 @@ -BEGIN; - -ALTER TABLE users add userFlags integer NOT NULL default 0; -ALTER TABLE users add godLevel integer NOT NULL default 0; - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/004_AssetStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/004_AssetStore.sql deleted file mode 100644 index 39421c4434..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/004_AssetStore.sql +++ /dev/null @@ -1,7 +0,0 @@ -BEGIN; - -update assets - set UUID = substr(UUID, 1, 8) || "-" || substr(UUID, 9, 4) || "-" || substr(UUID, 13, 4) || "-" || substr(UUID, 17, 4) || "-" || substr(UUID, 21, 12) - where UUID not like '%-%'; - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/004_InventoryStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/004_InventoryStore.sql deleted file mode 100644 index e8f4d46333..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/004_InventoryStore.sql +++ /dev/null @@ -1,36 +0,0 @@ -BEGIN; - -update inventoryitems - set UUID = substr(UUID, 1, 8) || "-" || substr(UUID, 9, 4) || "-" || substr(UUID, 13, 4) || "-" || substr(UUID, 17, 4) || "-" || substr(UUID, 21, 12) - where UUID not like '%-%'; - -update inventoryitems - set assetID = substr(assetID, 1, 8) || "-" || substr(assetID, 9, 4) || "-" || substr(assetID, 13, 4) || "-" || substr(assetID, 17, 4) || "-" || substr(assetID, 21, 12) - where assetID not like '%-%'; - -update inventoryitems - set parentFolderID = substr(parentFolderID, 1, 8) || "-" || substr(parentFolderID, 9, 4) || "-" || substr(parentFolderID, 13, 4) || "-" || substr(parentFolderID, 17, 4) || "-" || substr(parentFolderID, 21, 12) - where parentFolderID not like '%-%'; - -update inventoryitems - set avatarID = substr(avatarID, 1, 8) || "-" || substr(avatarID, 9, 4) || "-" || substr(avatarID, 13, 4) || "-" || substr(avatarID, 17, 4) || "-" || substr(avatarID, 21, 12) - where avatarID not like '%-%'; - -update inventoryitems - set creatorsID = substr(creatorsID, 1, 8) || "-" || substr(creatorsID, 9, 4) || "-" || substr(creatorsID, 13, 4) || "-" || substr(creatorsID, 17, 4) || "-" || substr(creatorsID, 21, 12) - where creatorsID not like '%-%'; - - -update inventoryfolders - set UUID = substr(UUID, 1, 8) || "-" || substr(UUID, 9, 4) || "-" || substr(UUID, 13, 4) || "-" || substr(UUID, 17, 4) || "-" || substr(UUID, 21, 12) - where UUID not like '%-%'; - -update inventoryfolders - set agentID = substr(agentID, 1, 8) || "-" || substr(agentID, 9, 4) || "-" || substr(agentID, 13, 4) || "-" || substr(agentID, 17, 4) || "-" || substr(agentID, 21, 12) - where agentID not like '%-%'; - -update inventoryfolders - set parentID = substr(parentID, 1, 8) || "-" || substr(parentID, 9, 4) || "-" || substr(parentID, 13, 4) || "-" || substr(parentID, 17, 4) || "-" || substr(parentID, 21, 12) - where parentID not like '%-%'; - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/004_RegionStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/004_RegionStore.sql deleted file mode 100644 index de328cb47a..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/004_RegionStore.sql +++ /dev/null @@ -1,38 +0,0 @@ -BEGIN; - -create table regionsettings ( - regionUUID char(36) not null, - block_terraform integer not null, - block_fly integer not null, - allow_damage integer not null, - restrict_pushing integer not null, - allow_land_resell integer not null, - allow_land_join_divide integer not null, - block_show_in_search integer not null, - agent_limit integer not null, - object_bonus float not null, - maturity integer not null, - disable_scripts integer not null, - disable_collisions integer not null, - disable_physics integer not null, - terrain_texture_1 char(36) not null, - terrain_texture_2 char(36) not null, - terrain_texture_3 char(36) not null, - terrain_texture_4 char(36) not null, - elevation_1_nw float not null, - elevation_2_nw float not null, - elevation_1_ne float not null, - elevation_2_ne float not null, - elevation_1_se float not null, - elevation_2_se float not null, - elevation_1_sw float not null, - elevation_2_sw float not null, - water_height float not null, - terrain_raise_limit float not null, - terrain_lower_limit float not null, - use_estate_sun integer not null, - fixed_sun integer not null, - sun_position float not null, - covenant char(36)); - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/004_UserStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/004_UserStore.sql deleted file mode 100644 index 03142afa37..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/004_UserStore.sql +++ /dev/null @@ -1,6 +0,0 @@ -BEGIN; - -ALTER TABLE users add customType varchar(32) not null default ''; -ALTER TABLE users add partner char(36) not null default '00000000-0000-0000-0000-000000000000'; - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/005_RegionStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/005_RegionStore.sql deleted file mode 100644 index 1f6d1bd271..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/005_RegionStore.sql +++ /dev/null @@ -1,5 +0,0 @@ -BEGIN; - -delete from regionsettings; - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/005_UserStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/005_UserStore.sql deleted file mode 100644 index e45c09a493..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/005_UserStore.sql +++ /dev/null @@ -1,5 +0,0 @@ -BEGIN; - -CREATE TABLE `avatarattachments` (`UUID` char(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', `attachpoint` int(11) NOT NULL DEFAULT 0, `item` char(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', `asset` char(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000'); - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/006_RegionStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/006_RegionStore.sql deleted file mode 100644 index 94ed8181cd..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/006_RegionStore.sql +++ /dev/null @@ -1,102 +0,0 @@ -BEGIN TRANSACTION; - -CREATE TABLE estate_groups ( - EstateID int(10) NOT NULL, - uuid char(36) NOT NULL -); - -CREATE TABLE estate_managers ( - EstateID int(10) NOT NULL, - uuid char(36) NOT NULL -); - -CREATE TABLE estate_map ( - RegionID char(36) NOT NULL default '00000000-0000-0000-0000-000000000000', - EstateID int(11) NOT NULL -); - -CREATE TABLE estate_settings ( - EstateID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, - EstateName varchar(64) default NULL, - AbuseEmailToEstateOwner tinyint(4) NOT NULL, - DenyAnonymous tinyint(4) NOT NULL, - ResetHomeOnTeleport tinyint(4) NOT NULL, - FixedSun tinyint(4) NOT NULL, - DenyTransacted tinyint(4) NOT NULL, - BlockDwell tinyint(4) NOT NULL, - DenyIdentified tinyint(4) NOT NULL, - AllowVoice tinyint(4) NOT NULL, - UseGlobalTime tinyint(4) NOT NULL, - PricePerMeter int(11) NOT NULL, - TaxFree tinyint(4) NOT NULL, - AllowDirectTeleport tinyint(4) NOT NULL, - RedirectGridX int(11) NOT NULL, - RedirectGridY int(11) NOT NULL, - ParentEstateID int(10) NOT NULL, - SunPosition double NOT NULL, - EstateSkipScripts tinyint(4) NOT NULL, - BillableFactor float NOT NULL, - PublicAccess tinyint(4) NOT NULL -); -insert into estate_settings (EstateID,EstateName,AbuseEmailToEstateOwner,DenyAnonymous,ResetHomeOnTeleport,FixedSun,DenyTransacted,BlockDwell,DenyIdentified,AllowVoice,UseGlobalTime,PricePerMeter,TaxFree,AllowDirectTeleport,RedirectGridX,RedirectGridY,ParentEstateID,SunPosition,PublicAccess,EstateSkipScripts,BillableFactor) values ( 99, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''); -delete from estate_settings; -CREATE TABLE estate_users ( - EstateID int(10) NOT NULL, - uuid char(36) NOT NULL -); - -CREATE TABLE estateban ( - EstateID int(10) NOT NULL, - bannedUUID varchar(36) NOT NULL, - bannedIp varchar(16) NOT NULL, - bannedIpHostMask varchar(16) NOT NULL, - bannedNameMask varchar(64) default NULL -); - -drop table regionsettings; -CREATE TABLE regionsettings ( - regionUUID char(36) NOT NULL, - block_terraform int(11) NOT NULL, - block_fly int(11) NOT NULL, - allow_damage int(11) NOT NULL, - restrict_pushing int(11) NOT NULL, - allow_land_resell int(11) NOT NULL, - allow_land_join_divide int(11) NOT NULL, - block_show_in_search int(11) NOT NULL, - agent_limit int(11) NOT NULL, - object_bonus float NOT NULL, - maturity int(11) NOT NULL, - disable_scripts int(11) NOT NULL, - disable_collisions int(11) NOT NULL, - disable_physics int(11) NOT NULL, - terrain_texture_1 char(36) NOT NULL, - terrain_texture_2 char(36) NOT NULL, - terrain_texture_3 char(36) NOT NULL, - terrain_texture_4 char(36) NOT NULL, - elevation_1_nw float NOT NULL, - elevation_2_nw float NOT NULL, - elevation_1_ne float NOT NULL, - elevation_2_ne float NOT NULL, - elevation_1_se float NOT NULL, - elevation_2_se float NOT NULL, - elevation_1_sw float NOT NULL, - elevation_2_sw float NOT NULL, - water_height float NOT NULL, - terrain_raise_limit float NOT NULL, - terrain_lower_limit float NOT NULL, - use_estate_sun int(11) NOT NULL, - fixed_sun int(11) NOT NULL, - sun_position float NOT NULL, - covenant char(36) default NULL, - Sandbox tinyint(4) NOT NULL, - PRIMARY KEY (regionUUID) -); - -CREATE INDEX estate_ban_estate_id on estateban(EstateID); -CREATE INDEX estate_groups_estate_id on estate_groups(EstateID); -CREATE INDEX estate_managers_estate_id on estate_managers(EstateID); -CREATE INDEX estate_map_estate_id on estate_map(EstateID); -CREATE UNIQUE INDEX estate_map_region_id on estate_map(RegionID); -CREATE INDEX estate_users_estate_id on estate_users(EstateID); - -COMMIT; \ No newline at end of file diff --git a/OpenSim/Data/SQLiteLegacy/Resources/006_UserStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/006_UserStore.sql deleted file mode 100644 index f9454c55cf..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/006_UserStore.sql +++ /dev/null @@ -1,20 +0,0 @@ -BEGIN TRANSACTION; - --- usersagents table -CREATE TABLE IF NOT EXISTS useragents( - UUID varchar(255) primary key, - agentIP varchar(255), - agentPort integer, - agentOnline boolean, - sessionID varchar(255), - secureSessionID varchar(255), - regionID varchar(255), - loginTime integer, - logoutTime integer, - currentRegion varchar(255), - currentHandle varchar(255), - currentPosX float, - currentPosY float, - currentPosZ float); - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/007_RegionStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/007_RegionStore.sql deleted file mode 100644 index 1c813a0d40..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/007_RegionStore.sql +++ /dev/null @@ -1,8 +0,0 @@ -begin; - -alter table estate_settings add column AbuseEmail varchar(255) not null default ''; - -alter table estate_settings add column EstateOwner varchar(36) not null default ''; - -commit; - diff --git a/OpenSim/Data/SQLiteLegacy/Resources/007_UserStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/007_UserStore.sql deleted file mode 100644 index 8b0cd285c7..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/007_UserStore.sql +++ /dev/null @@ -1,7 +0,0 @@ -BEGIN TRANSACTION; - -ALTER TABLE useragents add currentLookAtX float not null default 128; -ALTER TABLE useragents add currentLookAtY float not null default 128; -ALTER TABLE useragents add currentLookAtZ float not null default 70; - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/008_RegionStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/008_RegionStore.sql deleted file mode 100644 index 28bfbf59c3..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/008_RegionStore.sql +++ /dev/null @@ -1,6 +0,0 @@ -begin; - -alter table estate_settings add column DenyMinors tinyint not null default 0; - -commit; - diff --git a/OpenSim/Data/SQLiteLegacy/Resources/008_UserStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/008_UserStore.sql deleted file mode 100644 index 97da81848c..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/008_UserStore.sql +++ /dev/null @@ -1,5 +0,0 @@ -BEGIN TRANSACTION; - -ALTER TABLE users add email varchar(250); - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/009_RegionStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/009_RegionStore.sql deleted file mode 100644 index 1f40548f36..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/009_RegionStore.sql +++ /dev/null @@ -1,8 +0,0 @@ -BEGIN; - -ALTER TABLE prims ADD COLUMN ColorR integer not null default 0; -ALTER TABLE prims ADD COLUMN ColorG integer not null default 0; -ALTER TABLE prims ADD COLUMN ColorB integer not null default 0; -ALTER TABLE prims ADD COLUMN ColorA integer not null default 0; - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/009_UserStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/009_UserStore.sql deleted file mode 100644 index 8ab03ef897..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/009_UserStore.sql +++ /dev/null @@ -1,11 +0,0 @@ -BEGIN; - -update users - set UUID = substr(UUID, 1, 8) || "-" || substr(UUID, 9, 4) || "-" || substr(UUID, 13, 4) || "-" || substr(UUID, 17, 4) || "-" || substr(UUID, 21, 12) - where UUID not like '%-%'; - -update useragents - set UUID = substr(UUID, 1, 8) || "-" || substr(UUID, 9, 4) || "-" || substr(UUID, 13, 4) || "-" || substr(UUID, 17, 4) || "-" || substr(UUID, 21, 12) - where UUID not like '%-%'; - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/010_RegionStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/010_RegionStore.sql deleted file mode 100644 index b91ccf0a8d..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/010_RegionStore.sql +++ /dev/null @@ -1,5 +0,0 @@ -BEGIN; - -ALTER TABLE prims ADD COLUMN ClickAction INTEGER NOT NULL default 0; - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/010_UserStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/010_UserStore.sql deleted file mode 100644 index 5f956dadfd..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/010_UserStore.sql +++ /dev/null @@ -1,37 +0,0 @@ -BEGIN TRANSACTION; - -CREATE TABLE IF NOT EXISTS avatarappearance( - Owner varchar(36) NOT NULL primary key, - BodyItem varchar(36) DEFAULT NULL, - BodyAsset varchar(36) DEFAULT NULL, - SkinItem varchar(36) DEFAULT NULL, - SkinAsset varchar(36) DEFAULT NULL, - HairItem varchar(36) DEFAULT NULL, - HairAsset varchar(36) DEFAULT NULL, - EyesItem varchar(36) DEFAULT NULL, - EyesAsset varchar(36) DEFAULT NULL, - ShirtItem varchar(36) DEFAULT NULL, - ShirtAsset varchar(36) DEFAULT NULL, - PantsItem varchar(36) DEFAULT NULL, - PantsAsset varchar(36) DEFAULT NULL, - ShoesItem varchar(36) DEFAULT NULL, - ShoesAsset varchar(36) DEFAULT NULL, - SocksItem varchar(36) DEFAULT NULL, - SocksAsset varchar(36) DEFAULT NULL, - JacketItem varchar(36) DEFAULT NULL, - JacketAsset varchar(36) DEFAULT NULL, - GlovesItem varchar(36) DEFAULT NULL, - GlovesAsset varchar(36) DEFAULT NULL, - UnderShirtItem varchar(36) DEFAULT NULL, - UnderShirtAsset varchar(36) DEFAULT NULL, - UnderPantsItem varchar(36) DEFAULT NULL, - UnderPantsAsset varchar(36) DEFAULT NULL, - SkirtItem varchar(36) DEFAULT NULL, - SkirtAsset varchar(36) DEFAULT NULL, - Texture blob, - VisualParams blob, - Serial int DEFAULT NULL, - AvatarHeight float DEFAULT NULL -); - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/011_RegionStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/011_RegionStore.sql deleted file mode 100644 index 42bef89616..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/011_RegionStore.sql +++ /dev/null @@ -1,28 +0,0 @@ -BEGIN; - -ALTER TABLE prims ADD COLUMN PayPrice INTEGER NOT NULL default 0; -ALTER TABLE prims ADD COLUMN PayButton1 INTEGER NOT NULL default 0; -ALTER TABLE prims ADD COLUMN PayButton2 INTEGER NOT NULL default 0; -ALTER TABLE prims ADD COLUMN PayButton3 INTEGER NOT NULL default 0; -ALTER TABLE prims ADD COLUMN PayButton4 INTEGER NOT NULL default 0; -ALTER TABLE prims ADD COLUMN LoopedSound varchar(36) NOT NULL default '00000000-0000-0000-0000-000000000000'; -ALTER TABLE prims ADD COLUMN LoopedSoundGain float NOT NULL default 0; -ALTER TABLE prims ADD COLUMN TextureAnimation string; -ALTER TABLE prims ADD COLUMN ParticleSystem string; -ALTER TABLE prims ADD COLUMN OmegaX float NOT NULL default 0; -ALTER TABLE prims ADD COLUMN OmegaY float NOT NULL default 0; -ALTER TABLE prims ADD COLUMN OmegaZ float NOT NULL default 0; -ALTER TABLE prims ADD COLUMN CameraEyeOffsetX float NOT NULL default 0; -ALTER TABLE prims ADD COLUMN CameraEyeOffsetY float NOT NULL default 0; -ALTER TABLE prims ADD COLUMN CameraEyeOffsetZ float NOT NULL default 0; -ALTER TABLE prims ADD COLUMN CameraAtOffsetX float NOT NULL default 0; -ALTER TABLE prims ADD COLUMN CameraAtOffsetY float NOT NULL default 0; -ALTER TABLE prims ADD COLUMN CameraAtOffsetZ float NOT NULL default 0; -ALTER TABLE prims ADD COLUMN ForceMouselook string NOT NULL default 0; -ALTER TABLE prims ADD COLUMN ScriptAccessPin INTEGER NOT NULL default 0; -ALTER TABLE prims ADD COLUMN AllowedDrop INTEGER NOT NULL default 0; -ALTER TABLE prims ADD COLUMN DieAtEdge string NOT NULL default 0; -ALTER TABLE prims ADD COLUMN SalePrice INTEGER NOT NULL default 0; -ALTER TABLE prims ADD COLUMN SaleType string NOT NULL default 0; - -COMMIT; \ No newline at end of file diff --git a/OpenSim/Data/SQLiteLegacy/Resources/012_RegionStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/012_RegionStore.sql deleted file mode 100644 index d952b78bd2..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/012_RegionStore.sql +++ /dev/null @@ -1,5 +0,0 @@ -BEGIN; - -ALTER TABLE prims ADD COLUMN Material INTEGER NOT NULL default 3; - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/013_RegionStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/013_RegionStore.sql deleted file mode 100644 index 11529cd3f1..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/013_RegionStore.sql +++ /dev/null @@ -1,6 +0,0 @@ -BEGIN; - -ALTER TABLE land ADD COLUMN OtherCleanTime INTEGER NOT NULL default 0; -ALTER TABLE land ADD COLUMN Dwell INTEGER NOT NULL default 0; - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/014_RegionStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/014_RegionStore.sql deleted file mode 100644 index c59b27e745..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/014_RegionStore.sql +++ /dev/null @@ -1,8 +0,0 @@ -begin; - -ALTER TABLE regionsettings ADD COLUMN sunvectorx double NOT NULL default 0; -ALTER TABLE regionsettings ADD COLUMN sunvectory double NOT NULL default 0; -ALTER TABLE regionsettings ADD COLUMN sunvectorz double NOT NULL default 0; - -commit; - diff --git a/OpenSim/Data/SQLiteLegacy/Resources/015_RegionStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/015_RegionStore.sql deleted file mode 100644 index c43f356be3..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/015_RegionStore.sql +++ /dev/null @@ -1,6 +0,0 @@ -BEGIN; - -ALTER TABLE prims ADD COLUMN CollisionSound varchar(36) NOT NULL default '00000000-0000-0000-0000-000000000000'; -ALTER TABLE prims ADD COLUMN CollisionSoundVolume float NOT NULL default 0; - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/016_RegionStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/016_RegionStore.sql deleted file mode 100644 index 52f160cdbc..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/016_RegionStore.sql +++ /dev/null @@ -1,5 +0,0 @@ -BEGIN; - -ALTER TABLE prims ADD COLUMN VolumeDetect INTEGER NOT NULL DEFAULT 0; - -COMMIT; diff --git a/OpenSim/Data/SQLiteLegacy/Resources/017_RegionStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/017_RegionStore.sql deleted file mode 100644 index 6c6b7b5d40..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/017_RegionStore.sql +++ /dev/null @@ -1,8 +0,0 @@ -BEGIN; -CREATE TEMPORARY TABLE prims_backup(UUID,RegionUUID,CreationDate,Name,SceneGroupID,Text,Description,SitName,TouchName,CreatorID,OwnerID,GroupID,LastOwnerID,OwnerMask,NextOwnerMask,GroupMask,EveryoneMask,BaseMask,PositionX,PositionY,PositionZ,GroupPositionX,GroupPositionY,GroupPositionZ,VelocityX,VelocityY,VelocityZ,AngularVelocityX,AngularVelocityY,AngularVelocityZ,AccelerationX,AccelerationY,AccelerationZ,RotationX,RotationY,RotationZ,RotationW,ObjectFlags,SitTargetOffsetX,SitTargetOffsetY,SitTargetOffsetZ,SitTargetOrientW,SitTargetOrientX,SitTargetOrientY,SitTargetOrientZ,ColorR,ColorG,ColorB,ColorA,ClickAction,PayPrice,PayButton1,PayButton2,PayButton3,PayButton4,LoopedSound,LoopedSoundGain,TextureAnimation,ParticleSystem,OmegaX,OmegaY,OmegaZ,CameraEyeOffsetX,CameraEyeOffsetY,CameraEyeOffsetZ,CameraAtOffsetX,CameraAtOffsetY,CameraAtOffsetZ,ForceMouselook,ScriptAccessPin,AllowedDrop,DieAtEdge,SalePrice,SaleType,Material,CollisionSound,CollisionSoundVolume,VolumeDetect); -INSERT INTO prims_backup SELECT UUID,RegionUUID,CreationDate,Name,SceneGroupID,Text,Description,SitName,TouchName,CreatorID,OwnerID,GroupID,LastOwnerID,OwnerMask,NextOwnerMask,GroupMask,EveryoneMask,BaseMask,PositionX,PositionY,PositionZ,GroupPositionX,GroupPositionY,GroupPositionZ,VelocityX,VelocityY,VelocityZ,AngularVelocityX,AngularVelocityY,AngularVelocityZ,AccelerationX,AccelerationY,AccelerationZ,RotationX,RotationY,RotationZ,RotationW,ObjectFlags,SitTargetOffsetX,SitTargetOffsetY,SitTargetOffsetZ,SitTargetOrientW,SitTargetOrientX,SitTargetOrientY,SitTargetOrientZ,ColorR,ColorG,ColorB,ColorA,ClickAction,PayPrice,PayButton1,PayButton2,PayButton3,PayButton4,LoopedSound,LoopedSoundGain,TextureAnimation,ParticleSystem,OmegaX,OmegaY,OmegaZ,CameraEyeOffsetX,CameraEyeOffsetY,CameraEyeOffsetZ,CameraAtOffsetX,CameraAtOffsetY,CameraAtOffsetZ,ForceMouselook,ScriptAccessPin,AllowedDrop,DieAtEdge,SalePrice,SaleType,Material,CollisionSound,CollisionSoundVolume,VolumeDetect FROM prims; -DROP TABLE prims; -CREATE TABLE prims(UUID,RegionUUID,CreationDate,Name,SceneGroupID,Text,Description,SitName,TouchName,CreatorID,OwnerID,GroupID,LastOwnerID,OwnerMask,NextOwnerMask,GroupMask,EveryoneMask,BaseMask,PositionX,PositionY,PositionZ,GroupPositionX,GroupPositionY,GroupPositionZ,VelocityX,VelocityY,VelocityZ,AngularVelocityX,AngularVelocityY,AngularVelocityZ,AccelerationX,AccelerationY,AccelerationZ,RotationX,RotationY,RotationZ,RotationW,ObjectFlags,SitTargetOffsetX,SitTargetOffsetY,SitTargetOffsetZ,SitTargetOrientW,SitTargetOrientX,SitTargetOrientY,SitTargetOrientZ,ColorR,ColorG,ColorB,ColorA,ClickAction,PayPrice,PayButton1,PayButton2,PayButton3,PayButton4,LoopedSound,LoopedSoundGain,TextureAnimation,ParticleSystem,OmegaX,OmegaY,OmegaZ,CameraEyeOffsetX,CameraEyeOffsetY,CameraEyeOffsetZ,CameraAtOffsetX,CameraAtOffsetY,CameraAtOffsetZ,ForceMouselook,ScriptAccessPin,AllowedDrop,DieAtEdge,SalePrice,SaleType,Material,CollisionSound,CollisionSoundVolume,VolumeDetect); -INSERT INTO prims SELECT UUID,RegionUUID,CreationDate,Name,SceneGroupID,Text,Description,SitName,TouchName,CreatorID,OwnerID,GroupID,LastOwnerID,OwnerMask,NextOwnerMask,GroupMask,EveryoneMask,BaseMask,PositionX,PositionY,PositionZ,GroupPositionX,GroupPositionY,GroupPositionZ,VelocityX,VelocityY,VelocityZ,AngularVelocityX,AngularVelocityY,AngularVelocityZ,AccelerationX,AccelerationY,AccelerationZ,RotationX,RotationY,RotationZ,RotationW,ObjectFlags,SitTargetOffsetX,SitTargetOffsetY,SitTargetOffsetZ,SitTargetOrientW,SitTargetOrientX,SitTargetOrientY,SitTargetOrientZ,ColorR,ColorG,ColorB,ColorA,ClickAction,PayPrice,PayButton1,PayButton2,PayButton3,PayButton4,LoopedSound,LoopedSoundGain,TextureAnimation,ParticleSystem,OmegaX,OmegaY,OmegaZ,CameraEyeOffsetX,CameraEyeOffsetY,CameraEyeOffsetZ,CameraAtOffsetX,CameraAtOffsetY,CameraAtOffsetZ,ForceMouselook,ScriptAccessPin,AllowedDrop,DieAtEdge,SalePrice,SaleType,Material,CollisionSound,CollisionSoundVolume,VolumeDetect FROM prims_backup; -DROP TABLE prims_backup; -COMMIT; \ No newline at end of file diff --git a/OpenSim/Data/SQLiteLegacy/Resources/018_RegionStore.sql b/OpenSim/Data/SQLiteLegacy/Resources/018_RegionStore.sql deleted file mode 100644 index 6a390c2161..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/018_RegionStore.sql +++ /dev/null @@ -1,79 +0,0 @@ -BEGIN; - -update terrain - set RegionUUID = substr(RegionUUID, 1, 8) || "-" || substr(RegionUUID, 9, 4) || "-" || substr(RegionUUID, 13, 4) || "-" || substr(RegionUUID, 17, 4) || "-" || substr(RegionUUID, 21, 12) - where RegionUUID not like '%-%'; - - -update landaccesslist - set LandUUID = substr(LandUUID, 1, 8) || "-" || substr(LandUUID, 9, 4) || "-" || substr(LandUUID, 13, 4) || "-" || substr(LandUUID, 17, 4) || "-" || substr(LandUUID, 21, 12) - where LandUUID not like '%-%'; - -update landaccesslist - set AccessUUID = substr(AccessUUID, 1, 8) || "-" || substr(AccessUUID, 9, 4) || "-" || substr(AccessUUID, 13, 4) || "-" || substr(AccessUUID, 17, 4) || "-" || substr(AccessUUID, 21, 12) - where AccessUUID not like '%-%'; - - -update prims - set UUID = substr(UUID, 1, 8) || "-" || substr(UUID, 9, 4) || "-" || substr(UUID, 13, 4) || "-" || substr(UUID, 17, 4) || "-" || substr(UUID, 21, 12) - where UUID not like '%-%'; - -update prims - set RegionUUID = substr(RegionUUID, 1, 8) || "-" || substr(RegionUUID, 9, 4) || "-" || substr(RegionUUID, 13, 4) || "-" || substr(RegionUUID, 17, 4) || "-" || substr(RegionUUID, 21, 12) - where RegionUUID not like '%-%'; - -update prims - set SceneGroupID = substr(SceneGroupID, 1, 8) || "-" || substr(SceneGroupID, 9, 4) || "-" || substr(SceneGroupID, 13, 4) || "-" || substr(SceneGroupID, 17, 4) || "-" || substr(SceneGroupID, 21, 12) - where SceneGroupID not like '%-%'; - -update prims - set CreatorID = substr(CreatorID, 1, 8) || "-" || substr(CreatorID, 9, 4) || "-" || substr(CreatorID, 13, 4) || "-" || substr(CreatorID, 17, 4) || "-" || substr(CreatorID, 21, 12) - where CreatorID not like '%-%'; - -update prims - set OwnerID = substr(OwnerID, 1, 8) || "-" || substr(OwnerID, 9, 4) || "-" || substr(OwnerID, 13, 4) || "-" || substr(OwnerID, 17, 4) || "-" || substr(OwnerID, 21, 12) - where OwnerID not like '%-%'; - -update prims - set GroupID = substr(GroupID, 1, 8) || "-" || substr(GroupID, 9, 4) || "-" || substr(GroupID, 13, 4) || "-" || substr(GroupID, 17, 4) || "-" || substr(GroupID, 21, 12) - where GroupID not like '%-%'; - -update prims - set LastOwnerID = substr(LastOwnerID, 1, 8) || "-" || substr(LastOwnerID, 9, 4) || "-" || substr(LastOwnerID, 13, 4) || "-" || substr(LastOwnerID, 17, 4) || "-" || substr(LastOwnerID, 21, 12) - where LastOwnerID not like '%-%'; - - -update primshapes - set UUID = substr(UUID, 1, 8) || "-" || substr(UUID, 9, 4) || "-" || substr(UUID, 13, 4) || "-" || substr(UUID, 17, 4) || "-" || substr(UUID, 21, 12) - where UUID not like '%-%'; - - -update land - set UUID = substr(UUID, 1, 8) || "-" || substr(UUID, 9, 4) || "-" || substr(UUID, 13, 4) || "-" || substr(UUID, 17, 4) || "-" || substr(UUID, 21, 12) - where UUID not like '%-%'; - -update land - set RegionUUID = substr(RegionUUID, 1, 8) || "-" || substr(RegionUUID, 9, 4) || "-" || substr(RegionUUID, 13, 4) || "-" || substr(RegionUUID, 17, 4) || "-" || substr(RegionUUID, 21, 12) - where RegionUUID not like '%-%'; - -update land - set OwnerUUID = substr(OwnerUUID, 1, 8) || "-" || substr(OwnerUUID, 9, 4) || "-" || substr(OwnerUUID, 13, 4) || "-" || substr(OwnerUUID, 17, 4) || "-" || substr(OwnerUUID, 21, 12) - where OwnerUUID not like '%-%'; - -update land - set GroupUUID = substr(GroupUUID, 1, 8) || "-" || substr(GroupUUID, 9, 4) || "-" || substr(GroupUUID, 13, 4) || "-" || substr(GroupUUID, 17, 4) || "-" || substr(GroupUUID, 21, 12) - where GroupUUID not like '%-%'; - -update land - set MediaTextureUUID = substr(MediaTextureUUID, 1, 8) || "-" || substr(MediaTextureUUID, 9, 4) || "-" || substr(MediaTextureUUID, 13, 4) || "-" || substr(MediaTextureUUID, 17, 4) || "-" || substr(MediaTextureUUID, 21, 12) - where MediaTextureUUID not like '%-%'; - -update land - set SnapshotUUID = substr(SnapshotUUID, 1, 8) || "-" || substr(SnapshotUUID, 9, 4) || "-" || substr(SnapshotUUID, 13, 4) || "-" || substr(SnapshotUUID, 17, 4) || "-" || substr(SnapshotUUID, 21, 12) - where SnapshotUUID not like '%-%'; - -update land - set AuthbuyerID = substr(AuthbuyerID, 1, 8) || "-" || substr(AuthbuyerID, 9, 4) || "-" || substr(AuthbuyerID, 13, 4) || "-" || substr(AuthbuyerID, 17, 4) || "-" || substr(AuthbuyerID, 21, 12) - where AuthbuyerID not like '%-%'; - -COMMIT; \ No newline at end of file diff --git a/OpenSim/Data/SQLiteLegacy/Resources/OpenSim.Data.SQLite.addin.xml b/OpenSim/Data/SQLiteLegacy/Resources/OpenSim.Data.SQLite.addin.xml deleted file mode 100644 index e6764facbd..0000000000 --- a/OpenSim/Data/SQLiteLegacy/Resources/OpenSim.Data.SQLite.addin.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/OpenSim/Data/SQLiteLegacy/SQLiteAssetData.cs b/OpenSim/Data/SQLiteLegacy/SQLiteAssetData.cs deleted file mode 100644 index df509023eb..0000000000 --- a/OpenSim/Data/SQLiteLegacy/SQLiteAssetData.cs +++ /dev/null @@ -1,347 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Data; -using System.Reflection; -using System.Collections.Generic; -using log4net; -using Mono.Data.SqliteClient; -using OpenMetaverse; -using OpenSim.Framework; - -namespace OpenSim.Data.SQLiteLegacy -{ - ///

- /// An asset storage interface for the SQLite database system - /// - public class SQLiteAssetData : AssetDataBase - { -// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private const string SelectAssetSQL = "select * from assets where UUID=:UUID"; - private const string SelectAssetMetadataSQL = "select Name, Description, Type, Temporary, UUID from assets limit :start, :count"; - private const string DeleteAssetSQL = "delete from assets where UUID=:UUID"; - private const string InsertAssetSQL = "insert into assets(UUID, Name, Description, Type, Local, Temporary, Data) values(:UUID, :Name, :Description, :Type, :Local, :Temporary, :Data)"; - private const string UpdateAssetSQL = "update assets set Name=:Name, Description=:Description, Type=:Type, Local=:Local, Temporary=:Temporary, Data=:Data where UUID=:UUID"; - private const string assetSelect = "select * from assets"; - - private SqliteConnection m_conn; - - override public void Dispose() - { - if (m_conn != null) - { - m_conn.Close(); - m_conn = null; - } - } - - /// - /// - /// Initialises AssetData interface - /// Loads and initialises a new SQLite connection and maintains it. - /// use default URI if connect string is empty. - /// - /// - /// connect string - override public void Initialise(string dbconnect) - { - if (dbconnect == string.Empty) - { - dbconnect = "URI=file:Asset.db,version=3"; - } - m_conn = new SqliteConnection(dbconnect); - m_conn.Open(); - - Assembly assem = GetType().Assembly; - Migration m = new Migration(m_conn, assem, "AssetStore"); - m.Update(); - - return; - } - - /// - /// Fetch Asset - /// - /// UUID of ... ? - /// Asset base - override public AssetBase GetAsset(UUID uuid) - { - lock (this) - { - using (SqliteCommand cmd = new SqliteCommand(SelectAssetSQL, m_conn)) - { - cmd.Parameters.Add(new SqliteParameter(":UUID", uuid.ToString())); - using (IDataReader reader = cmd.ExecuteReader()) - { - if (reader.Read()) - { - AssetBase asset = buildAsset(reader); - reader.Close(); - return asset; - } - else - { - reader.Close(); - return null; - } - } - } - } - } - - /// - /// Create an asset - /// - /// Asset Base - override public void StoreAsset(AssetBase asset) - { - //m_log.Info("[ASSET DB]: Creating Asset " + asset.FullID.ToString()); - if (ExistsAsset(asset.FullID)) - { - //LogAssetLoad(asset); - - lock (this) - { - using (SqliteCommand cmd = new SqliteCommand(UpdateAssetSQL, m_conn)) - { - cmd.Parameters.Add(new SqliteParameter(":UUID", asset.FullID.ToString())); - cmd.Parameters.Add(new SqliteParameter(":Name", asset.Name)); - cmd.Parameters.Add(new SqliteParameter(":Description", asset.Description)); - cmd.Parameters.Add(new SqliteParameter(":Type", asset.Type)); - cmd.Parameters.Add(new SqliteParameter(":Local", asset.Local)); - cmd.Parameters.Add(new SqliteParameter(":Temporary", asset.Temporary)); - cmd.Parameters.Add(new SqliteParameter(":Data", asset.Data)); - - cmd.ExecuteNonQuery(); - } - } - } - else - { - lock (this) - { - using (SqliteCommand cmd = new SqliteCommand(InsertAssetSQL, m_conn)) - { - cmd.Parameters.Add(new SqliteParameter(":UUID", asset.FullID.ToString())); - cmd.Parameters.Add(new SqliteParameter(":Name", asset.Name)); - cmd.Parameters.Add(new SqliteParameter(":Description", asset.Description)); - cmd.Parameters.Add(new SqliteParameter(":Type", asset.Type)); - cmd.Parameters.Add(new SqliteParameter(":Local", asset.Local)); - cmd.Parameters.Add(new SqliteParameter(":Temporary", asset.Temporary)); - cmd.Parameters.Add(new SqliteParameter(":Data", asset.Data)); - - cmd.ExecuteNonQuery(); - } - } - } - } - -// /// -// /// Some... logging functionnality -// /// -// /// -// private static void LogAssetLoad(AssetBase asset) -// { -// string temporary = asset.Temporary ? "Temporary" : "Stored"; -// string local = asset.Local ? "Local" : "Remote"; -// -// int assetLength = (asset.Data != null) ? asset.Data.Length : 0; -// -// m_log.Debug("[ASSET DB]: " + -// string.Format("Loaded {5} {4} Asset: [{0}][{3}] \"{1}\":{2} ({6} bytes)", -// asset.FullID, asset.Name, asset.Description, asset.Type, -// temporary, local, assetLength)); -// } - - /// - /// Check if an asset exist in database - /// - /// The asset UUID - /// True if exist, or false. - override public bool ExistsAsset(UUID uuid) - { - lock (this) { - using (SqliteCommand cmd = new SqliteCommand(SelectAssetSQL, m_conn)) - { - cmd.Parameters.Add(new SqliteParameter(":UUID", uuid.ToString())); - using (IDataReader reader = cmd.ExecuteReader()) - { - if (reader.Read()) - { - reader.Close(); - return true; - } - else - { - reader.Close(); - return false; - } - } - } - } - } - - /// - /// Delete an asset from database - /// - /// - public void DeleteAsset(UUID uuid) - { - using (SqliteCommand cmd = new SqliteCommand(DeleteAssetSQL, m_conn)) - { - cmd.Parameters.Add(new SqliteParameter(":UUID", uuid.ToString())); - - cmd.ExecuteNonQuery(); - } - } - - /// - /// - /// - /// - /// - private static AssetBase buildAsset(IDataReader row) - { - // TODO: this doesn't work yet because something more - // interesting has to be done to actually get these values - // back out. Not enough time to figure it out yet. - AssetBase asset = new AssetBase( - new UUID((String)row["UUID"]), - (String)row["Name"], - Convert.ToSByte(row["Type"]), - UUID.Zero.ToString() - ); - - asset.Description = (String) row["Description"]; - asset.Local = Convert.ToBoolean(row["Local"]); - asset.Temporary = Convert.ToBoolean(row["Temporary"]); - asset.Data = (byte[]) row["Data"]; - return asset; - } - - private static AssetMetadata buildAssetMetadata(IDataReader row) - { - AssetMetadata metadata = new AssetMetadata(); - - metadata.FullID = new UUID((string) row["UUID"]); - metadata.Name = (string) row["Name"]; - metadata.Description = (string) row["Description"]; - metadata.Type = Convert.ToSByte(row["Type"]); - metadata.Temporary = Convert.ToBoolean(row["Temporary"]); // Not sure if this is correct. - - // Current SHA1s are not stored/computed. - metadata.SHA1 = new byte[] {}; - - return metadata; - } - - /// - /// Returns a list of AssetMetadata objects. The list is a subset of - /// the entire data set offset by containing - /// elements. - /// - /// The number of results to discard from the total data set. - /// The number of rows the returned list should contain. - /// A list of AssetMetadata objects. - public override List FetchAssetMetadataSet(int start, int count) - { - List retList = new List(count); - - lock (this) - { - using (SqliteCommand cmd = new SqliteCommand(SelectAssetMetadataSQL, m_conn)) - { - cmd.Parameters.Add(new SqliteParameter(":start", start)); - cmd.Parameters.Add(new SqliteParameter(":count", count)); - - using (IDataReader reader = cmd.ExecuteReader()) - { - while (reader.Read()) - { - AssetMetadata metadata = buildAssetMetadata(reader); - retList.Add(metadata); - } - } - } - } - - return retList; - } - - /*********************************************************************** - * - * Database Binding functions - * - * These will be db specific due to typing, and minor differences - * in databases. - * - **********************************************************************/ - - #region IPlugin interface - - /// - /// - /// - override public string Version - { - get - { - Module module = GetType().Module; - // string dllName = module.Assembly.ManifestModule.Name; - Version dllVersion = module.Assembly.GetName().Version; - - return - string.Format("{0}.{1}.{2}.{3}", dllVersion.Major, dllVersion.Minor, dllVersion.Build, - dllVersion.Revision); - } - } - - /// - /// Initialise the AssetData interface using default URI - /// - override public void Initialise() - { - Initialise("URI=file:Asset.db,version=3"); - } - - /// - /// Name of this DB provider - /// - override public string Name - { - get { return "SQLite Asset storage engine"; } - } - - public override bool Delete(string id) - { - return false; - } - #endregion - } -} diff --git a/OpenSim/Data/SQLiteLegacy/SQLiteAuthenticationData.cs b/OpenSim/Data/SQLiteLegacy/SQLiteAuthenticationData.cs deleted file mode 100644 index 760221d9fe..0000000000 --- a/OpenSim/Data/SQLiteLegacy/SQLiteAuthenticationData.cs +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Data; -using System.Reflection; -using log4net; -using OpenMetaverse; -using OpenSim.Framework; -using Mono.Data.SqliteClient; - -namespace OpenSim.Data.SQLiteLegacy -{ - public class SQLiteAuthenticationData : SQLiteFramework, IAuthenticationData - { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private string m_Realm; - private List m_ColumnNames; - private int m_LastExpire; - private string m_connectionString; - - protected static SqliteConnection m_Connection; - private static bool m_initialized = false; - - public SQLiteAuthenticationData(string connectionString, string realm) - : base(connectionString) - { - m_Realm = realm; - m_connectionString = connectionString; - - if (!m_initialized) - { - m_Connection = new SqliteConnection(connectionString); - m_Connection.Open(); - - using (SqliteConnection dbcon = (SqliteConnection)((ICloneable)m_Connection).Clone()) - { - dbcon.Open(); - Migration m = new Migration(dbcon, GetType().Assembly, "AuthStore"); - m.Update(); - dbcon.Close(); - } - - m_initialized = true; - } - } - - public AuthenticationData Get(UUID principalID) - { - AuthenticationData ret = new AuthenticationData(); - ret.Data = new Dictionary(); - - SqliteCommand cmd = new SqliteCommand("select * from `" + m_Realm + "` where UUID = :PrincipalID"); - cmd.Parameters.Add(new SqliteParameter(":PrincipalID", principalID.ToString())); - - IDataReader result = ExecuteReader(cmd, m_Connection); - - try - { - if (result.Read()) - { - ret.PrincipalID = principalID; - - if (m_ColumnNames == null) - { - m_ColumnNames = new List(); - - DataTable schemaTable = result.GetSchemaTable(); - foreach (DataRow row in schemaTable.Rows) - m_ColumnNames.Add(row["ColumnName"].ToString()); - } - - foreach (string s in m_ColumnNames) - { - if (s == "UUID") - continue; - - ret.Data[s] = result[s].ToString(); - } - - return ret; - } - else - { - return null; - } - } - catch - { - } - finally - { - CloseCommand(cmd); - } - - return null; - } - - public bool Store(AuthenticationData data) - { - if (data.Data.ContainsKey("UUID")) - data.Data.Remove("UUID"); - - string[] fields = new List(data.Data.Keys).ToArray(); - string[] values = new string[data.Data.Count]; - int i = 0; - foreach (object o in data.Data.Values) - values[i++] = o.ToString(); - - SqliteCommand cmd = new SqliteCommand(); - - if (Get(data.PrincipalID) != null) - { - - - string update = "update `" + m_Realm + "` set "; - bool first = true; - foreach (string field in fields) - { - if (!first) - update += ", "; - update += "`" + field + "` = :" + field; - cmd.Parameters.Add(new SqliteParameter(":" + field, data.Data[field])); - - first = false; - } - - update += " where UUID = :UUID"; - cmd.Parameters.Add(new SqliteParameter(":UUID", data.PrincipalID.ToString())); - - cmd.CommandText = update; - try - { - if (ExecuteNonQuery(cmd, m_Connection) < 1) - { - CloseCommand(cmd); - return false; - } - } - catch (Exception e) - { - m_log.Error("[SQLITE]: Exception storing authentication data", e); - CloseCommand(cmd); - return false; - } - } - - else - { - string insert = "insert into `" + m_Realm + "` (`UUID`, `" + - String.Join("`, `", fields) + - "`) values (:UUID, :" + String.Join(", :", fields) + ")"; - - cmd.Parameters.Add(new SqliteParameter(":UUID", data.PrincipalID.ToString())); - foreach (string field in fields) - cmd.Parameters.Add(new SqliteParameter(":" + field, data.Data[field])); - - cmd.CommandText = insert; - - try - { - if (ExecuteNonQuery(cmd, m_Connection) < 1) - { - CloseCommand(cmd); - return false; - } - } - catch (Exception e) - { - Console.WriteLine(e.ToString()); - CloseCommand(cmd); - return false; - } - } - - CloseCommand(cmd); - - return true; - } - - public bool SetDataItem(UUID principalID, string item, string value) - { - SqliteCommand cmd = new SqliteCommand("update `" + m_Realm + - "` set `" + item + "` = " + value + " where UUID = '" + principalID.ToString() + "'"); - - if (ExecuteNonQuery(cmd, m_Connection) > 0) - return true; - - return false; - } - - public bool SetToken(UUID principalID, string token, int lifetime) - { - if (System.Environment.TickCount - m_LastExpire > 30000) - DoExpire(); - - SqliteCommand cmd = new SqliteCommand("insert into tokens (UUID, token, validity) values ('" + principalID.ToString() + - "', '" + token + "', datetime('now', 'localtime', '+" + lifetime.ToString() + " minutes'))"); - - if (ExecuteNonQuery(cmd, m_Connection) > 0) - { - cmd.Dispose(); - return true; - } - - cmd.Dispose(); - return false; - } - - public bool CheckToken(UUID principalID, string token, int lifetime) - { - if (System.Environment.TickCount - m_LastExpire > 30000) - DoExpire(); - - SqliteCommand cmd = new SqliteCommand("update tokens set validity = datetime('now', 'localtime', '+" + lifetime.ToString() + - " minutes') where UUID = '" + principalID.ToString() + "' and token = '" + token + "' and validity > datetime('now', 'localtime')"); - - if (ExecuteNonQuery(cmd, m_Connection) > 0) - { - cmd.Dispose(); - return true; - } - - cmd.Dispose(); - - return false; - } - - private void DoExpire() - { - SqliteCommand cmd = new SqliteCommand("delete from tokens where validity < datetime('now', 'localtime')"); - ExecuteNonQuery(cmd, m_Connection); - - cmd.Dispose(); - - m_LastExpire = System.Environment.TickCount; - } - } -} diff --git a/OpenSim/Data/SQLiteLegacy/SQLiteAvatarData.cs b/OpenSim/Data/SQLiteLegacy/SQLiteAvatarData.cs deleted file mode 100644 index 660632ca07..0000000000 --- a/OpenSim/Data/SQLiteLegacy/SQLiteAvatarData.cs +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using System.Data; -using System.Reflection; -using System.Threading; -using log4net; -using OpenMetaverse; -using OpenSim.Framework; -using Mono.Data.SqliteClient; - -namespace OpenSim.Data.SQLiteLegacy -{ - /// - /// A SQLite Interface for Avatar Data - /// - public class SQLiteAvatarData : SQLiteGenericTableHandler, - IAvatarData - { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - public SQLiteAvatarData(string connectionString, string realm) : - base(connectionString, realm, "Avatar") - { - } - - public bool Delete(UUID principalID, string name) - { - SqliteCommand cmd = new SqliteCommand(); - - cmd.CommandText = String.Format("delete from {0} where `PrincipalID` = :PrincipalID and `Name` = :Name", m_Realm); - cmd.Parameters.Add(":PrincipalID", principalID.ToString()); - cmd.Parameters.Add(":Name", name); - - try - { - if (ExecuteNonQuery(cmd, m_Connection) > 0) - return true; - - return false; - } - finally - { - CloseCommand(cmd); - } - } - } -} diff --git a/OpenSim/Data/SQLiteLegacy/SQLiteEstateData.cs b/OpenSim/Data/SQLiteLegacy/SQLiteEstateData.cs deleted file mode 100644 index 4dd225fddb..0000000000 --- a/OpenSim/Data/SQLiteLegacy/SQLiteEstateData.cs +++ /dev/null @@ -1,451 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using System.Data; -using System.Reflection; -using log4net; -using Mono.Data.SqliteClient; -using OpenMetaverse; -using OpenSim.Framework; -using OpenSim.Region.Framework.Interfaces; - -namespace OpenSim.Data.SQLiteLegacy -{ - public class SQLiteEstateStore : IEstateDataStore - { - private static readonly ILog m_log = - LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private SqliteConnection m_connection; - private string m_connectionString; - - private FieldInfo[] m_Fields; - private Dictionary m_FieldMap = - new Dictionary(); - - public SQLiteEstateStore() - { - } - - public SQLiteEstateStore(string connectionString) - { - Initialise(connectionString); - } - - public void Initialise(string connectionString) - { - m_connectionString = connectionString; - - m_log.Info("[ESTATE DB]: Sqlite - connecting: "+m_connectionString); - - m_connection = new SqliteConnection(m_connectionString); - m_connection.Open(); - - Assembly assem = GetType().Assembly; - Migration m = new Migration(m_connection, assem, "EstateStore"); - m.Update(); - - m_connection.Close(); - m_connection.Open(); - - Type t = typeof(EstateSettings); - m_Fields = t.GetFields(BindingFlags.NonPublic | - BindingFlags.Instance | - BindingFlags.DeclaredOnly); - - foreach (FieldInfo f in m_Fields) - if (f.Name.Substring(0, 2) == "m_") - m_FieldMap[f.Name.Substring(2)] = f; - } - - private string[] FieldList - { - get { return new List(m_FieldMap.Keys).ToArray(); } - } - - public EstateSettings LoadEstateSettings(UUID regionID, bool create) - { - string sql = "select estate_settings."+String.Join(",estate_settings.", FieldList)+" from estate_map left join estate_settings on estate_map.EstateID = estate_settings.EstateID where estate_settings.EstateID is not null and RegionID = :RegionID"; - - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); - - cmd.CommandText = sql; - cmd.Parameters.Add(":RegionID", regionID.ToString()); - - return DoLoad(cmd, regionID, create); - } - - public List LoadEstateSettingsAll() - { - List estateSettings = new List(); - - List estateIds = GetEstatesAll(); - foreach (int estateId in estateIds) - estateSettings.Add(LoadEstateSettings(estateId)); - - return estateSettings; - } - - private EstateSettings DoLoad(SqliteCommand cmd, UUID regionID, bool create) - { - EstateSettings es = new EstateSettings(); - es.OnSave += StoreEstateSettings; - - IDataReader r = cmd.ExecuteReader(); - - if (r.Read()) - { - foreach (string name in FieldList) - { - if (m_FieldMap[name].GetValue(es) is bool) - { - int v = Convert.ToInt32(r[name]); - if (v != 0) - m_FieldMap[name].SetValue(es, true); - else - m_FieldMap[name].SetValue(es, false); - } - else if (m_FieldMap[name].GetValue(es) is UUID) - { - UUID uuid = UUID.Zero; - - UUID.TryParse(r[name].ToString(), out uuid); - m_FieldMap[name].SetValue(es, uuid); - } - else - { - m_FieldMap[name].SetValue(es, Convert.ChangeType(r[name], m_FieldMap[name].FieldType)); - } - } - r.Close(); - } - else if (create) - { - r.Close(); - - List names = new List(FieldList); - - names.Remove("EstateID"); - - string sql = "insert into estate_settings ("+String.Join(",", names.ToArray())+") values ( :"+String.Join(", :", names.ToArray())+")"; - - cmd.CommandText = sql; - cmd.Parameters.Clear(); - - foreach (string name in FieldList) - { - if (m_FieldMap[name].GetValue(es) is bool) - { - if ((bool)m_FieldMap[name].GetValue(es)) - cmd.Parameters.Add(":"+name, "1"); - else - cmd.Parameters.Add(":"+name, "0"); - } - else - { - cmd.Parameters.Add(":"+name, m_FieldMap[name].GetValue(es).ToString()); - } - } - - cmd.ExecuteNonQuery(); - - cmd.CommandText = "select LAST_INSERT_ROWID() as id"; - cmd.Parameters.Clear(); - - r = cmd.ExecuteReader(); - - r.Read(); - - es.EstateID = Convert.ToUInt32(r["id"]); - - r.Close(); - - cmd.CommandText = "insert into estate_map values (:RegionID, :EstateID)"; - cmd.Parameters.Add(":RegionID", regionID.ToString()); - cmd.Parameters.Add(":EstateID", es.EstateID.ToString()); - - // This will throw on dupe key - try - { - cmd.ExecuteNonQuery(); - } - catch (Exception) - { - } - - es.Save(); - } - - LoadBanList(es); - - es.EstateManagers = LoadUUIDList(es.EstateID, "estate_managers"); - es.EstateAccess = LoadUUIDList(es.EstateID, "estate_users"); - es.EstateGroups = LoadUUIDList(es.EstateID, "estate_groups"); - return es; - } - - public void StoreEstateSettings(EstateSettings es) - { - List fields = new List(FieldList); - fields.Remove("EstateID"); - - List terms = new List(); - - foreach (string f in fields) - terms.Add(f+" = :"+f); - - string sql = "update estate_settings set "+String.Join(", ", terms.ToArray())+" where EstateID = :EstateID"; - - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); - - cmd.CommandText = sql; - - foreach (string name in FieldList) - { - if (m_FieldMap[name].GetValue(es) is bool) - { - if ((bool)m_FieldMap[name].GetValue(es)) - cmd.Parameters.Add(":"+name, "1"); - else - cmd.Parameters.Add(":"+name, "0"); - } - else - { - cmd.Parameters.Add(":"+name, m_FieldMap[name].GetValue(es).ToString()); - } - } - - cmd.ExecuteNonQuery(); - - SaveBanList(es); - SaveUUIDList(es.EstateID, "estate_managers", es.EstateManagers); - SaveUUIDList(es.EstateID, "estate_users", es.EstateAccess); - SaveUUIDList(es.EstateID, "estate_groups", es.EstateGroups); - } - - private void LoadBanList(EstateSettings es) - { - es.ClearBans(); - - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); - - cmd.CommandText = "select bannedUUID from estateban where EstateID = :EstateID"; - cmd.Parameters.Add(":EstateID", es.EstateID); - - IDataReader r = cmd.ExecuteReader(); - - while (r.Read()) - { - EstateBan eb = new EstateBan(); - - UUID uuid = new UUID(); - UUID.TryParse(r["bannedUUID"].ToString(), out uuid); - - eb.BannedUserID = uuid; - eb.BannedHostAddress = "0.0.0.0"; - eb.BannedHostIPMask = "0.0.0.0"; - es.AddBan(eb); - } - r.Close(); - } - - private void SaveBanList(EstateSettings es) - { - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); - - cmd.CommandText = "delete from estateban where EstateID = :EstateID"; - cmd.Parameters.Add(":EstateID", es.EstateID.ToString()); - - cmd.ExecuteNonQuery(); - - cmd.Parameters.Clear(); - - cmd.CommandText = "insert into estateban (EstateID, bannedUUID, bannedIp, bannedIpHostMask, bannedNameMask) values ( :EstateID, :bannedUUID, '', '', '' )"; - - foreach (EstateBan b in es.EstateBans) - { - cmd.Parameters.Add(":EstateID", es.EstateID.ToString()); - cmd.Parameters.Add(":bannedUUID", b.BannedUserID.ToString()); - - cmd.ExecuteNonQuery(); - cmd.Parameters.Clear(); - } - } - - void SaveUUIDList(uint EstateID, string table, UUID[] data) - { - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); - - cmd.CommandText = "delete from "+table+" where EstateID = :EstateID"; - cmd.Parameters.Add(":EstateID", EstateID.ToString()); - - cmd.ExecuteNonQuery(); - - cmd.Parameters.Clear(); - - cmd.CommandText = "insert into "+table+" (EstateID, uuid) values ( :EstateID, :uuid )"; - - foreach (UUID uuid in data) - { - cmd.Parameters.Add(":EstateID", EstateID.ToString()); - cmd.Parameters.Add(":uuid", uuid.ToString()); - - cmd.ExecuteNonQuery(); - cmd.Parameters.Clear(); - } - } - - UUID[] LoadUUIDList(uint EstateID, string table) - { - List uuids = new List(); - - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); - - cmd.CommandText = "select uuid from "+table+" where EstateID = :EstateID"; - cmd.Parameters.Add(":EstateID", EstateID); - - IDataReader r = cmd.ExecuteReader(); - - while (r.Read()) - { - // EstateBan eb = new EstateBan(); - - UUID uuid = new UUID(); - UUID.TryParse(r["uuid"].ToString(), out uuid); - - uuids.Add(uuid); - } - r.Close(); - - return uuids.ToArray(); - } - - public EstateSettings LoadEstateSettings(int estateID) - { - string sql = "select estate_settings."+String.Join(",estate_settings.", FieldList)+" from estate_settings where estate_settings.EstateID = :EstateID"; - - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); - - cmd.CommandText = sql; - cmd.Parameters.Add(":EstateID", estateID.ToString()); - - return DoLoad(cmd, UUID.Zero, false); - } - - public List GetEstates(string search) - { - List result = new List(); - - string sql = "select EstateID from estate_settings where estate_settings.EstateName = :EstateName"; - - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); - - cmd.CommandText = sql; - cmd.Parameters.Add(":EstateName", search); - - IDataReader r = cmd.ExecuteReader(); - - while (r.Read()) - { - result.Add(Convert.ToInt32(r["EstateID"])); - } - r.Close(); - - return result; - } - - - public List GetEstatesAll() - { - List result = new List(); - - string sql = "select EstateID from estate_settings"; - - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); - - cmd.CommandText = sql; - - IDataReader r = cmd.ExecuteReader(); - - while (r.Read()) - { - result.Add(Convert.ToInt32(r["EstateID"])); - } - r.Close(); - - return result; - } - - public List GetEstatesByOwner(UUID ownerID) - { - List result = new List(); - - string sql = "select EstateID from estate_settings where estate_settings.EstateOwner = :EstateOwner"; - - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); - - cmd.CommandText = sql; - cmd.Parameters.Add(":EstateOwner", ownerID); - - IDataReader r = cmd.ExecuteReader(); - - while (r.Read()) - { - result.Add(Convert.ToInt32(r["EstateID"])); - } - r.Close(); - - return result; - } - - public bool LinkRegion(UUID regionID, int estateID) - { - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); - - cmd.CommandText = "insert into estate_map values (:RegionID, :EstateID)"; - cmd.Parameters.Add(":RegionID", regionID.ToString()); - cmd.Parameters.Add(":EstateID", estateID.ToString()); - - if (cmd.ExecuteNonQuery() == 0) - return false; - - return true; - } - - public List GetRegions(int estateID) - { - return new List(); - } - - public bool DeleteEstate(int estateID) - { - return false; - } - } -} diff --git a/OpenSim/Data/SQLiteLegacy/SQLiteFramework.cs b/OpenSim/Data/SQLiteLegacy/SQLiteFramework.cs deleted file mode 100644 index 606478ea7e..0000000000 --- a/OpenSim/Data/SQLiteLegacy/SQLiteFramework.cs +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Data; -using OpenMetaverse; -using OpenSim.Framework; -using Mono.Data.SqliteClient; - -namespace OpenSim.Data.SQLiteLegacy -{ - /// - /// A database interface class to a user profile storage system - /// - public class SQLiteFramework - { - protected Object m_lockObject = new Object(); - - protected SQLiteFramework(string connectionString) - { - } - - ////////////////////////////////////////////////////////////// - // - // All non queries are funneled through one connection - // to increase performance a little - // - protected int ExecuteNonQuery(SqliteCommand cmd, SqliteConnection connection) - { - lock (connection) - { - SqliteConnection newConnection = - (SqliteConnection)((ICloneable)connection).Clone(); - newConnection.Open(); - - cmd.Connection = newConnection; - //Console.WriteLine("XXX " + cmd.CommandText); - - return cmd.ExecuteNonQuery(); - } - } - - protected IDataReader ExecuteReader(SqliteCommand cmd, SqliteConnection connection) - { - lock (connection) - { - SqliteConnection newConnection = - (SqliteConnection)((ICloneable)connection).Clone(); - newConnection.Open(); - - cmd.Connection = newConnection; - //Console.WriteLine("XXX " + cmd.CommandText); - - return cmd.ExecuteReader(); - } - } - - protected void CloseCommand(SqliteCommand cmd) - { - cmd.Connection.Close(); - cmd.Connection.Dispose(); - cmd.Dispose(); - } - } -} diff --git a/OpenSim/Data/SQLiteLegacy/SQLiteFriendsData.cs b/OpenSim/Data/SQLiteLegacy/SQLiteFriendsData.cs deleted file mode 100644 index d529d4d8ab..0000000000 --- a/OpenSim/Data/SQLiteLegacy/SQLiteFriendsData.cs +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Data; -using OpenMetaverse; -using OpenSim.Framework; -using Mono.Data.SqliteClient; - -namespace OpenSim.Data.SQLiteLegacy -{ - public class SQLiteFriendsData : SQLiteGenericTableHandler, IFriendsData - { - public SQLiteFriendsData(string connectionString, string realm) - : base(connectionString, realm, "FriendsStore") - { - } - - public FriendsData[] GetFriends(UUID userID) - { - SqliteCommand cmd = new SqliteCommand(); - - cmd.CommandText = String.Format("select a.*,case when b.Flags is null then -1 else b.Flags end as TheirFlags from {0} as a left join {0} as b on a.PrincipalID = b.Friend and a.Friend = b.PrincipalID where a.PrincipalID = :PrincipalID", m_Realm); - cmd.Parameters.Add(":PrincipalID", userID.ToString()); - - return DoQuery(cmd); - - } - - public bool Delete(UUID principalID, string friend) - { - SqliteCommand cmd = new SqliteCommand(); - - cmd.CommandText = String.Format("delete from {0} where PrincipalID = :PrincipalID and Friend = :Friend", m_Realm); - cmd.Parameters.Add(":PrincipalID", principalID.ToString()); - cmd.Parameters.Add(":Friend", friend); - - ExecuteNonQuery(cmd, cmd.Connection); - - return true; - } - - } -} diff --git a/OpenSim/Data/SQLiteLegacy/SQLiteGenericTableHandler.cs b/OpenSim/Data/SQLiteLegacy/SQLiteGenericTableHandler.cs deleted file mode 100644 index 1c1fe8cc0f..0000000000 --- a/OpenSim/Data/SQLiteLegacy/SQLiteGenericTableHandler.cs +++ /dev/null @@ -1,268 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using System.Data; -using System.Reflection; -using log4net; -using Mono.Data.SqliteClient; -using OpenMetaverse; -using OpenSim.Framework; -using OpenSim.Region.Framework.Interfaces; - -namespace OpenSim.Data.SQLiteLegacy -{ - public class SQLiteGenericTableHandler : SQLiteFramework where T: class, new() - { -// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - protected Dictionary m_Fields = - new Dictionary(); - - protected List m_ColumnNames = null; - protected string m_Realm; - protected FieldInfo m_DataField = null; - - protected static SqliteConnection m_Connection; - private static bool m_initialized; - - public SQLiteGenericTableHandler(string connectionString, - string realm, string storeName) : base(connectionString) - { - m_Realm = realm; - - if (!m_initialized) - { - m_Connection = new SqliteConnection(connectionString); - m_Connection.Open(); - - if (storeName != String.Empty) - { - Assembly assem = GetType().Assembly; - SqliteConnection newConnection = - (SqliteConnection)((ICloneable)m_Connection).Clone(); - newConnection.Open(); - - Migration m = new Migration(newConnection, assem, storeName); - m.Update(); - newConnection.Close(); - newConnection.Dispose(); - } - - m_initialized = true; - } - - Type t = typeof(T); - FieldInfo[] fields = t.GetFields(BindingFlags.Public | - BindingFlags.Instance | - BindingFlags.DeclaredOnly); - - if (fields.Length == 0) - return; - - foreach (FieldInfo f in fields) - { - if (f.Name != "Data") - m_Fields[f.Name] = f; - else - m_DataField = f; - } - } - - private void CheckColumnNames(IDataReader reader) - { - if (m_ColumnNames != null) - return; - - m_ColumnNames = new List(); - - DataTable schemaTable = reader.GetSchemaTable(); - foreach (DataRow row in schemaTable.Rows) - { - if (row["ColumnName"] != null && - (!m_Fields.ContainsKey(row["ColumnName"].ToString()))) - m_ColumnNames.Add(row["ColumnName"].ToString()); - } - } - - public T[] Get(string field, string key) - { - return Get(new string[] { field }, new string[] { key }); - } - - public T[] Get(string[] fields, string[] keys) - { - if (fields.Length != keys.Length) - return new T[0]; - - List terms = new List(); - - SqliteCommand cmd = new SqliteCommand(); - - for (int i = 0 ; i < fields.Length ; i++) - { - cmd.Parameters.Add(new SqliteParameter(":" + fields[i], keys[i])); - terms.Add("`" + fields[i] + "` = :" + fields[i]); - } - - string where = String.Join(" and ", terms.ToArray()); - - string query = String.Format("select * from {0} where {1}", - m_Realm, where); - - cmd.CommandText = query; - - return DoQuery(cmd); - } - - protected T[] DoQuery(SqliteCommand cmd) - { - IDataReader reader = ExecuteReader(cmd, m_Connection); - if (reader == null) - return new T[0]; - - CheckColumnNames(reader); - - List result = new List(); - - while (reader.Read()) - { - T row = new T(); - - foreach (string name in m_Fields.Keys) - { - if (m_Fields[name].GetValue(row) is bool) - { - int v = Convert.ToInt32(reader[name]); - m_Fields[name].SetValue(row, v != 0 ? true : false); - } - else if (m_Fields[name].GetValue(row) is UUID) - { - UUID uuid = UUID.Zero; - - UUID.TryParse(reader[name].ToString(), out uuid); - m_Fields[name].SetValue(row, uuid); - } - else if (m_Fields[name].GetValue(row) is int) - { - int v = Convert.ToInt32(reader[name]); - m_Fields[name].SetValue(row, v); - } - else - { - m_Fields[name].SetValue(row, reader[name]); - } - } - - if (m_DataField != null) - { - Dictionary data = - new Dictionary(); - - foreach (string col in m_ColumnNames) - { - data[col] = reader[col].ToString(); - if (data[col] == null) - data[col] = String.Empty; - } - - m_DataField.SetValue(row, data); - } - - result.Add(row); - } - - CloseCommand(cmd); - - return result.ToArray(); - } - - public T[] Get(string where) - { - SqliteCommand cmd = new SqliteCommand(); - - string query = String.Format("select * from {0} where {1}", - m_Realm, where); - - cmd.CommandText = query; - - return DoQuery(cmd); - } - - public bool Store(T row) - { - SqliteCommand cmd = new SqliteCommand(); - - string query = ""; - List names = new List(); - List values = new List(); - - foreach (FieldInfo fi in m_Fields.Values) - { - names.Add(fi.Name); - values.Add(":" + fi.Name); - cmd.Parameters.Add(new SqliteParameter(":" + fi.Name, fi.GetValue(row).ToString())); - } - - if (m_DataField != null) - { - Dictionary data = - (Dictionary)m_DataField.GetValue(row); - - foreach (KeyValuePair kvp in data) - { - names.Add(kvp.Key); - values.Add(":" + kvp.Key); - cmd.Parameters.Add(new SqliteParameter(":" + kvp.Key, kvp.Value)); - } - } - - query = String.Format("replace into {0} (`", m_Realm) + String.Join("`,`", names.ToArray()) + "`) values (" + String.Join(",", values.ToArray()) + ")"; - - cmd.CommandText = query; - - if (ExecuteNonQuery(cmd, m_Connection) > 0) - return true; - - return false; - } - - public bool Delete(string field, string val) - { - SqliteCommand cmd = new SqliteCommand(); - - cmd.CommandText = String.Format("delete from {0} where `{1}` = :{1}", m_Realm, field); - cmd.Parameters.Add(new SqliteParameter(field, val)); - - if (ExecuteNonQuery(cmd, m_Connection) > 0) - return true; - - return false; - } - } -} diff --git a/OpenSim/Data/SQLiteLegacy/SQLiteInventoryStore.cs b/OpenSim/Data/SQLiteLegacy/SQLiteInventoryStore.cs deleted file mode 100644 index 8ca48f94b1..0000000000 --- a/OpenSim/Data/SQLiteLegacy/SQLiteInventoryStore.cs +++ /dev/null @@ -1,898 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using System.Data; -using System.Reflection; -using log4net; -using Mono.Data.SqliteClient; -using OpenMetaverse; -using OpenSim.Framework; - -namespace OpenSim.Data.SQLiteLegacy -{ - /// - /// An Inventory Interface to the SQLite database - /// - public class SQLiteInventoryStore : SQLiteUtil, IInventoryDataPlugin - { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private const string invItemsSelect = "select * from inventoryitems"; - private const string invFoldersSelect = "select * from inventoryfolders"; - - private static SqliteConnection conn; - private static DataSet ds; - private static SqliteDataAdapter invItemsDa; - private static SqliteDataAdapter invFoldersDa; - - private static bool m_Initialized = false; - - public void Initialise() - { - m_log.Info("[SQLiteInventoryData]: " + Name + " cannot be default-initialized!"); - throw new PluginNotInitialisedException(Name); - } - - /// - /// - /// Initialises Inventory interface - /// Loads and initialises a new SQLite connection and maintains it. - /// use default URI if connect string string is empty. - /// - /// - /// connect string - public void Initialise(string dbconnect) - { - if (!m_Initialized) - { - m_Initialized = true; - - if (dbconnect == string.Empty) - { - dbconnect = "URI=file:inventoryStore.db,version=3"; - } - m_log.Info("[INVENTORY DB]: Sqlite - connecting: " + dbconnect); - conn = new SqliteConnection(dbconnect); - - conn.Open(); - - Assembly assem = GetType().Assembly; - Migration m = new Migration(conn, assem, "InventoryStore"); - m.Update(); - - SqliteCommand itemsSelectCmd = new SqliteCommand(invItemsSelect, conn); - invItemsDa = new SqliteDataAdapter(itemsSelectCmd); - // SqliteCommandBuilder primCb = new SqliteCommandBuilder(primDa); - - SqliteCommand foldersSelectCmd = new SqliteCommand(invFoldersSelect, conn); - invFoldersDa = new SqliteDataAdapter(foldersSelectCmd); - - ds = new DataSet(); - - ds.Tables.Add(createInventoryFoldersTable()); - invFoldersDa.Fill(ds.Tables["inventoryfolders"]); - setupFoldersCommands(invFoldersDa, conn); - m_log.Info("[INVENTORY DB]: Populated Inventory Folders Definitions"); - - ds.Tables.Add(createInventoryItemsTable()); - invItemsDa.Fill(ds.Tables["inventoryitems"]); - setupItemsCommands(invItemsDa, conn); - m_log.Info("[INVENTORY DB]: Populated Inventory Items Definitions"); - - ds.AcceptChanges(); - } - } - - /// - /// Closes the inventory interface - /// - public void Dispose() - { - if (conn != null) - { - conn.Close(); - conn = null; - } - if (invItemsDa != null) - { - invItemsDa.Dispose(); - invItemsDa = null; - } - if (invFoldersDa != null) - { - invFoldersDa.Dispose(); - invFoldersDa = null; - } - if (ds != null) - { - ds.Dispose(); - ds = null; - } - } - - /// - /// - /// - /// - /// - public InventoryItemBase buildItem(DataRow row) - { - InventoryItemBase item = new InventoryItemBase(); - item.ID = new UUID((string) row["UUID"]); - item.AssetID = new UUID((string) row["assetID"]); - item.AssetType = Convert.ToInt32(row["assetType"]); - item.InvType = Convert.ToInt32(row["invType"]); - item.Folder = new UUID((string) row["parentFolderID"]); - item.Owner = new UUID((string) row["avatarID"]); - item.CreatorIdentification = (string)row["creatorsID"]; - item.Name = (string) row["inventoryName"]; - item.Description = (string) row["inventoryDescription"]; - - item.NextPermissions = Convert.ToUInt32(row["inventoryNextPermissions"]); - item.CurrentPermissions = Convert.ToUInt32(row["inventoryCurrentPermissions"]); - item.BasePermissions = Convert.ToUInt32(row["inventoryBasePermissions"]); - item.EveryOnePermissions = Convert.ToUInt32(row["inventoryEveryOnePermissions"]); - item.GroupPermissions = Convert.ToUInt32(row["inventoryGroupPermissions"]); - - // new fields - if (!Convert.IsDBNull(row["salePrice"])) - item.SalePrice = Convert.ToInt32(row["salePrice"]); - - if (!Convert.IsDBNull(row["saleType"])) - item.SaleType = Convert.ToByte(row["saleType"]); - - if (!Convert.IsDBNull(row["creationDate"])) - item.CreationDate = Convert.ToInt32(row["creationDate"]); - - if (!Convert.IsDBNull(row["groupID"])) - item.GroupID = new UUID((string)row["groupID"]); - - if (!Convert.IsDBNull(row["groupOwned"])) - item.GroupOwned = Convert.ToBoolean(row["groupOwned"]); - - if (!Convert.IsDBNull(row["Flags"])) - item.Flags = Convert.ToUInt32(row["Flags"]); - - return item; - } - - /// - /// Fill a database row with item data - /// - /// - /// - private static void fillItemRow(DataRow row, InventoryItemBase item) - { - row["UUID"] = item.ID.ToString(); - row["assetID"] = item.AssetID.ToString(); - row["assetType"] = item.AssetType; - row["invType"] = item.InvType; - row["parentFolderID"] = item.Folder.ToString(); - row["avatarID"] = item.Owner.ToString(); - row["creatorsID"] = item.CreatorIdentification.ToString(); - row["inventoryName"] = item.Name; - row["inventoryDescription"] = item.Description; - - row["inventoryNextPermissions"] = item.NextPermissions; - row["inventoryCurrentPermissions"] = item.CurrentPermissions; - row["inventoryBasePermissions"] = item.BasePermissions; - row["inventoryEveryOnePermissions"] = item.EveryOnePermissions; - row["inventoryGroupPermissions"] = item.GroupPermissions; - - // new fields - row["salePrice"] = item.SalePrice; - row["saleType"] = item.SaleType; - row["creationDate"] = item.CreationDate; - row["groupID"] = item.GroupID.ToString(); - row["groupOwned"] = item.GroupOwned; - row["flags"] = item.Flags; - } - - /// - /// Add inventory folder - /// - /// Folder base - /// true=create folder. false=update existing folder - /// nasty - private void addFolder(InventoryFolderBase folder, bool add) - { - lock (ds) - { - DataTable inventoryFolderTable = ds.Tables["inventoryfolders"]; - - DataRow inventoryRow = inventoryFolderTable.Rows.Find(folder.ID.ToString()); - if (inventoryRow == null) - { - if (! add) - m_log.ErrorFormat("Interface Misuse: Attempting to Update non-existant inventory folder: {0}", folder.ID); - - inventoryRow = inventoryFolderTable.NewRow(); - fillFolderRow(inventoryRow, folder); - inventoryFolderTable.Rows.Add(inventoryRow); - } - else - { - if (add) - m_log.ErrorFormat("Interface Misuse: Attempting to Add inventory folder that already exists: {0}", folder.ID); - - fillFolderRow(inventoryRow, folder); - } - - invFoldersDa.Update(ds, "inventoryfolders"); - } - } - - /// - /// Move an inventory folder - /// - /// folder base - private void moveFolder(InventoryFolderBase folder) - { - lock (ds) - { - DataTable inventoryFolderTable = ds.Tables["inventoryfolders"]; - - DataRow inventoryRow = inventoryFolderTable.Rows.Find(folder.ID.ToString()); - if (inventoryRow == null) - { - inventoryRow = inventoryFolderTable.NewRow(); - fillFolderRow(inventoryRow, folder); - inventoryFolderTable.Rows.Add(inventoryRow); - } - else - { - moveFolderRow(inventoryRow, folder); - } - - invFoldersDa.Update(ds, "inventoryfolders"); - } - } - - /// - /// add an item in inventory - /// - /// the item - /// true=add item ; false=update existing item - private void addItem(InventoryItemBase item, bool add) - { - lock (ds) - { - DataTable inventoryItemTable = ds.Tables["inventoryitems"]; - - DataRow inventoryRow = inventoryItemTable.Rows.Find(item.ID.ToString()); - if (inventoryRow == null) - { - if (!add) - m_log.ErrorFormat("[INVENTORY DB]: Interface Misuse: Attempting to Update non-existant inventory item: {0}", item.ID); - - inventoryRow = inventoryItemTable.NewRow(); - fillItemRow(inventoryRow, item); - inventoryItemTable.Rows.Add(inventoryRow); - } - else - { - if (add) - m_log.ErrorFormat("[INVENTORY DB]: Interface Misuse: Attempting to Add inventory item that already exists: {0}", item.ID); - - fillItemRow(inventoryRow, item); - } - - invItemsDa.Update(ds, "inventoryitems"); - - DataTable inventoryFolderTable = ds.Tables["inventoryfolders"]; - - inventoryRow = inventoryFolderTable.Rows.Find(item.Folder.ToString()); - if (inventoryRow != null) //MySQL doesn't throw an exception here, so sqlite shouldn't either. - inventoryRow["version"] = (int)inventoryRow["version"] + 1; - - invFoldersDa.Update(ds, "inventoryfolders"); - } - } - - /// - /// TODO : DataSet commit - /// - public void Shutdown() - { - // TODO: DataSet commit - } - - /// - /// The name of this DB provider - /// - /// Name of DB provider - public string Name - { - get { return "SQLite Inventory Data Interface"; } - } - - /// - /// Returns the version of this DB provider - /// - /// A string containing the DB provider version - public string Version - { - get - { - Module module = GetType().Module; - // string dllName = module.Assembly.ManifestModule.Name; - Version dllVersion = module.Assembly.GetName().Version; - - - return - string.Format("{0}.{1}.{2}.{3}", dllVersion.Major, dllVersion.Minor, dllVersion.Build, - dllVersion.Revision); - } - } - - /// - /// Returns a list of inventory items contained within the specified folder - /// - /// The UUID of the target folder - /// A List of InventoryItemBase items - public List getInventoryInFolder(UUID folderID) - { - lock (ds) - { - List retval = new List(); - DataTable inventoryItemTable = ds.Tables["inventoryitems"]; - string selectExp = "parentFolderID = '" + folderID + "'"; - DataRow[] rows = inventoryItemTable.Select(selectExp); - foreach (DataRow row in rows) - { - retval.Add(buildItem(row)); - } - - return retval; - } - } - - /// - /// Returns a list of the root folders within a users inventory - /// - /// The user whos inventory is to be searched - /// A list of folder objects - public List getUserRootFolders(UUID user) - { - return new List(); - } - - // see InventoryItemBase.getUserRootFolder - public InventoryFolderBase getUserRootFolder(UUID user) - { - lock (ds) - { - List folders = new List(); - DataTable inventoryFolderTable = ds.Tables["inventoryfolders"]; - string selectExp = "agentID = '" + user + "' AND parentID = '" + UUID.Zero + "'"; - DataRow[] rows = inventoryFolderTable.Select(selectExp); - foreach (DataRow row in rows) - { - folders.Add(buildFolder(row)); - } - - // There should only ever be one root folder for a user. However, if there's more - // than one we'll simply use the first one rather than failing. It would be even - // nicer to print some message to this effect, but this feels like it's too low a - // to put such a message out, and it's too minor right now to spare the time to - // suitably refactor. - if (folders.Count > 0) - { - return folders[0]; - } - - return null; - } - } - - /// - /// Append a list of all the child folders of a parent folder - /// - /// list where folders will be appended - /// ID of parent - protected void getInventoryFolders(ref List folders, UUID parentID) - { - lock (ds) - { - DataTable inventoryFolderTable = ds.Tables["inventoryfolders"]; - string selectExp = "parentID = '" + parentID + "'"; - DataRow[] rows = inventoryFolderTable.Select(selectExp); - foreach (DataRow row in rows) - { - folders.Add(buildFolder(row)); - } - - } - } - - /// - /// Returns a list of inventory folders contained in the folder 'parentID' - /// - /// The folder to get subfolders for - /// A list of inventory folders - public List getInventoryFolders(UUID parentID) - { - List folders = new List(); - getInventoryFolders(ref folders, parentID); - return folders; - } - - /// - /// See IInventoryDataPlugin - /// - /// - /// - public List getFolderHierarchy(UUID parentID) - { - /* Note: There are subtle changes between this implementation of getFolderHierarchy and the previous one - * - We will only need to hit the database twice instead of n times. - * - We assume the database is well-formed - no stranded/dangling folders, all folders in heirarchy owned - * by the same person, each user only has 1 inventory heirarchy - * - The returned list is not ordered, instead of breadth-first ordered - There are basically 2 usage cases for getFolderHeirarchy: - 1) Getting the user's entire inventory heirarchy when they log in - 2) Finding a subfolder heirarchy to delete when emptying the trash. - This implementation will pull all inventory folders from the database, and then prune away any folder that - is not part of the requested sub-heirarchy. The theory is that it is cheaper to make 1 request from the - database than to make n requests. This pays off only if requested heirarchy is large. - By making this choice, we are making the worst case better at the cost of making the best case worse - - Francis - */ - - List folders = new List(); - DataRow[] folderRows = null, parentRow; - InventoryFolderBase parentFolder = null; - lock (ds) - { - /* Fetch the parent folder from the database to determine the agent ID. - * Then fetch all inventory folders for that agent from the agent ID. - */ - DataTable inventoryFolderTable = ds.Tables["inventoryfolders"]; - string selectExp = "UUID = '" + parentID + "'"; - parentRow = inventoryFolderTable.Select(selectExp); // Assume at most 1 result - if (parentRow.GetLength(0) >= 1) // No result means parent folder does not exist - { - parentFolder = buildFolder(parentRow[0]); - UUID agentID = parentFolder.Owner; - selectExp = "agentID = '" + agentID + "'"; - folderRows = inventoryFolderTable.Select(selectExp); - } - - if (folderRows != null && folderRows.GetLength(0) >= 1) // No result means parent folder does not exist - { // or has no children - /* if we're querying the root folder, just return an unordered list of all folders in the user's - * inventory - */ - if (parentFolder.ParentID == UUID.Zero) - { - foreach (DataRow row in folderRows) - { - InventoryFolderBase curFolder = buildFolder(row); - if (curFolder.ID != parentID) // Return all folders except the parent folder of heirarchy - folders.Add(buildFolder(row)); - } - } // If requesting root folder - /* else we are querying a non-root folder. We currently have a list of all of the user's folders, - * we must construct a list of all folders in the heirarchy below parentID. - * Our first step will be to construct a hash table of all folders, indexed by parent ID. - * Once we have constructed the hash table, we will do a breadth-first traversal on the tree using the - * hash table to find child folders. - */ - else - { // Querying a non-root folder - - // Build a hash table of all user's inventory folders, indexed by each folder's parent ID - Dictionary> hashtable = - new Dictionary>(folderRows.GetLength(0)); - - foreach (DataRow row in folderRows) - { - InventoryFolderBase curFolder = buildFolder(row); - if (curFolder.ParentID != UUID.Zero) // Discard root of tree - not needed - { - if (hashtable.ContainsKey(curFolder.ParentID)) - { - // Current folder already has a sibling - append to sibling list - hashtable[curFolder.ParentID].Add(curFolder); - } - else - { - List siblingList = new List(); - siblingList.Add(curFolder); - // Current folder has no known (yet) siblings - hashtable.Add(curFolder.ParentID, siblingList); - } - } - } // For all inventory folders - - // Note: Could release the ds lock here - we don't access folderRows or the database anymore. - // This is somewhat of a moot point as the callers of this function usually lock db anyways. - - if (hashtable.ContainsKey(parentID)) // if requested folder does have children - folders.AddRange(hashtable[parentID]); - - // BreadthFirstSearch build inventory tree **Note: folders.Count is *not* static - for (int i = 0; i < folders.Count; i++) - if (hashtable.ContainsKey(folders[i].ID)) - folders.AddRange(hashtable[folders[i].ID]); - - } // if requesting a subfolder heirarchy - } // if folder parentID exists and has children - } // lock ds - return folders; - } - - /// - /// Returns an inventory item by its UUID - /// - /// The UUID of the item to be returned - /// A class containing item information - public InventoryItemBase getInventoryItem(UUID item) - { - lock (ds) - { - DataRow row = ds.Tables["inventoryitems"].Rows.Find(item.ToString()); - if (row != null) - { - return buildItem(row); - } - else - { - return null; - } - } - } - - /// - /// Returns a specified inventory folder by its UUID - /// - /// The UUID of the folder to be returned - /// A class containing folder information - public InventoryFolderBase getInventoryFolder(UUID folder) - { - // TODO: Deep voodoo here. If you enable this code then - // multi region breaks. No idea why, but I figured it was - // better to leave multi region at this point. It does mean - // that you don't get to see system textures why creating - // clothes and the like. :( - lock (ds) - { - DataRow row = ds.Tables["inventoryfolders"].Rows.Find(folder.ToString()); - if (row != null) - { - return buildFolder(row); - } - else - { - return null; - } - } - } - - /// - /// Creates a new inventory item based on item - /// - /// The item to be created - public void addInventoryItem(InventoryItemBase item) - { - addItem(item, true); - } - - /// - /// Updates an inventory item with item (updates based on ID) - /// - /// The updated item - public void updateInventoryItem(InventoryItemBase item) - { - addItem(item, false); - } - - /// - /// Delete an inventory item - /// - /// The item UUID - public void deleteInventoryItem(UUID itemID) - { - lock (ds) - { - DataTable inventoryItemTable = ds.Tables["inventoryitems"]; - - DataRow inventoryRow = inventoryItemTable.Rows.Find(itemID.ToString()); - if (inventoryRow != null) - { - inventoryRow.Delete(); - } - - invItemsDa.Update(ds, "inventoryitems"); - } - } - - public InventoryItemBase queryInventoryItem(UUID itemID) - { - return getInventoryItem(itemID); - } - - public InventoryFolderBase queryInventoryFolder(UUID folderID) - { - return getInventoryFolder(folderID); - } - - /// - /// Delete all items in the specified folder - /// - /// id of the folder, whose item content should be deleted - /// this is horribly inefficient, but I don't want to ruin the overall structure of this implementation - private void deleteItemsInFolder(UUID folderId) - { - List items = getInventoryInFolder(folderId); - - foreach (InventoryItemBase i in items) - deleteInventoryItem(i.ID); - } - - /// - /// Adds a new folder specified by folder - /// - /// The inventory folder - public void addInventoryFolder(InventoryFolderBase folder) - { - addFolder(folder, true); - } - - /// - /// Updates a folder based on its ID with folder - /// - /// The inventory folder - public void updateInventoryFolder(InventoryFolderBase folder) - { - addFolder(folder, false); - } - - /// - /// Moves a folder based on its ID with folder - /// - /// The inventory folder - public void moveInventoryFolder(InventoryFolderBase folder) - { - moveFolder(folder); - } - - /// - /// Delete a folder - /// - /// - /// This will clean-up any child folders and child items as well - /// - /// the folder UUID - public void deleteInventoryFolder(UUID folderID) - { - lock (ds) - { - List subFolders = getFolderHierarchy(folderID); - - DataTable inventoryFolderTable = ds.Tables["inventoryfolders"]; - DataRow inventoryRow; - - //Delete all sub-folders - foreach (InventoryFolderBase f in subFolders) - { - inventoryRow = inventoryFolderTable.Rows.Find(f.ID.ToString()); - if (inventoryRow != null) - { - deleteItemsInFolder(f.ID); - inventoryRow.Delete(); - } - } - - //Delete the actual row - inventoryRow = inventoryFolderTable.Rows.Find(folderID.ToString()); - if (inventoryRow != null) - { - deleteItemsInFolder(folderID); - inventoryRow.Delete(); - } - - invFoldersDa.Update(ds, "inventoryfolders"); - } - } - - /*********************************************************************** - * - * Data Table definitions - * - **********************************************************************/ - - /// - /// Create the "inventoryitems" table - /// - private static DataTable createInventoryItemsTable() - { - DataTable inv = new DataTable("inventoryitems"); - - createCol(inv, "UUID", typeof (String)); //inventoryID - createCol(inv, "assetID", typeof (String)); - createCol(inv, "assetType", typeof (Int32)); - createCol(inv, "invType", typeof (Int32)); - createCol(inv, "parentFolderID", typeof (String)); - createCol(inv, "avatarID", typeof (String)); - createCol(inv, "creatorsID", typeof (String)); - - createCol(inv, "inventoryName", typeof (String)); - createCol(inv, "inventoryDescription", typeof (String)); - // permissions - createCol(inv, "inventoryNextPermissions", typeof (Int32)); - createCol(inv, "inventoryCurrentPermissions", typeof (Int32)); - createCol(inv, "inventoryBasePermissions", typeof (Int32)); - createCol(inv, "inventoryEveryOnePermissions", typeof (Int32)); - createCol(inv, "inventoryGroupPermissions", typeof (Int32)); - - // sale info - createCol(inv, "salePrice", typeof(Int32)); - createCol(inv, "saleType", typeof(Byte)); - - // creation date - createCol(inv, "creationDate", typeof(Int32)); - - // group info - createCol(inv, "groupID", typeof(String)); - createCol(inv, "groupOwned", typeof(Boolean)); - - // Flags - createCol(inv, "flags", typeof(UInt32)); - - inv.PrimaryKey = new DataColumn[] { inv.Columns["UUID"] }; - return inv; - } - - /// - /// Creates the "inventoryfolders" table - /// - /// - private static DataTable createInventoryFoldersTable() - { - DataTable fol = new DataTable("inventoryfolders"); - - createCol(fol, "UUID", typeof (String)); //folderID - createCol(fol, "name", typeof (String)); - createCol(fol, "agentID", typeof (String)); - createCol(fol, "parentID", typeof (String)); - createCol(fol, "type", typeof (Int32)); - createCol(fol, "version", typeof (Int32)); - - fol.PrimaryKey = new DataColumn[] {fol.Columns["UUID"]}; - return fol; - } - - /// - /// - /// - /// - /// - private void setupItemsCommands(SqliteDataAdapter da, SqliteConnection conn) - { - lock (ds) - { - da.InsertCommand = createInsertCommand("inventoryitems", ds.Tables["inventoryitems"]); - da.InsertCommand.Connection = conn; - - da.UpdateCommand = createUpdateCommand("inventoryitems", "UUID=:UUID", ds.Tables["inventoryitems"]); - da.UpdateCommand.Connection = conn; - - SqliteCommand delete = new SqliteCommand("delete from inventoryitems where UUID = :UUID"); - delete.Parameters.Add(createSqliteParameter("UUID", typeof(String))); - delete.Connection = conn; - da.DeleteCommand = delete; - } - } - - /// - /// - /// - /// - /// - private void setupFoldersCommands(SqliteDataAdapter da, SqliteConnection conn) - { - lock (ds) - { - da.InsertCommand = createInsertCommand("inventoryfolders", ds.Tables["inventoryfolders"]); - da.InsertCommand.Connection = conn; - - da.UpdateCommand = createUpdateCommand("inventoryfolders", "UUID=:UUID", ds.Tables["inventoryfolders"]); - da.UpdateCommand.Connection = conn; - - SqliteCommand delete = new SqliteCommand("delete from inventoryfolders where UUID = :UUID"); - delete.Parameters.Add(createSqliteParameter("UUID", typeof(String))); - delete.Connection = conn; - da.DeleteCommand = delete; - } - } - - /// - /// - /// - /// - /// - private static InventoryFolderBase buildFolder(DataRow row) - { - InventoryFolderBase folder = new InventoryFolderBase(); - folder.ID = new UUID((string) row["UUID"]); - folder.Name = (string) row["name"]; - folder.Owner = new UUID((string) row["agentID"]); - folder.ParentID = new UUID((string) row["parentID"]); - folder.Type = Convert.ToInt16(row["type"]); - folder.Version = Convert.ToUInt16(row["version"]); - return folder; - } - - /// - /// - /// - /// - /// - private static void fillFolderRow(DataRow row, InventoryFolderBase folder) - { - row["UUID"] = folder.ID.ToString(); - row["name"] = folder.Name; - row["agentID"] = folder.Owner.ToString(); - row["parentID"] = folder.ParentID.ToString(); - row["type"] = folder.Type; - row["version"] = folder.Version; - } - - /// - /// - /// - /// - /// - private static void moveFolderRow(DataRow row, InventoryFolderBase folder) - { - row["UUID"] = folder.ID.ToString(); - row["parentID"] = folder.ParentID.ToString(); - } - - public List fetchActiveGestures (UUID avatarID) - { - lock (ds) - { - List items = new List(); - - DataTable inventoryItemTable = ds.Tables["inventoryitems"]; - string selectExp - = "avatarID = '" + avatarID + "' AND assetType = " + (int)AssetType.Gesture + " AND flags = 1"; - //m_log.DebugFormat("[SQL]: sql = " + selectExp); - DataRow[] rows = inventoryItemTable.Select(selectExp); - foreach (DataRow row in rows) - { - items.Add(buildItem(row)); - } - return items; - } - } - } -} diff --git a/OpenSim/Data/SQLiteLegacy/SQLiteSimulationData.cs b/OpenSim/Data/SQLiteLegacy/SQLiteSimulationData.cs deleted file mode 100644 index 644864af28..0000000000 --- a/OpenSim/Data/SQLiteLegacy/SQLiteSimulationData.cs +++ /dev/null @@ -1,2274 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using System.Data; -using System.Drawing; -using System.IO; -using System.Reflection; -using log4net; -using Mono.Data.SqliteClient; -using OpenMetaverse; -using OpenSim.Framework; -using OpenSim.Region.Framework.Interfaces; -using OpenSim.Region.Framework.Scenes; - -namespace OpenSim.Data.SQLiteLegacy -{ - /// - /// A RegionData Interface to the SQLite database - /// - public class SQLiteSimulationData : ISimulationDataStore - { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private const string primSelect = "select * from prims"; - private const string shapeSelect = "select * from primshapes"; - private const string itemsSelect = "select * from primitems"; - private const string terrainSelect = "select * from terrain limit 1"; - private const string landSelect = "select * from land"; - private const string landAccessListSelect = "select distinct * from landaccesslist"; - private const string regionbanListSelect = "select * from regionban"; - private const string regionSettingsSelect = "select * from regionsettings"; - - private DataSet ds; - private SqliteDataAdapter primDa; - private SqliteDataAdapter shapeDa; - private SqliteDataAdapter itemsDa; - private SqliteDataAdapter terrainDa; - private SqliteDataAdapter landDa; - private SqliteDataAdapter landAccessListDa; - private SqliteDataAdapter regionSettingsDa; - - private SqliteConnection m_conn; - - private String m_connectionString; - - public SQLiteSimulationData() - { - } - - public SQLiteSimulationData(string connectionString) - { - Initialise(connectionString); - } - - // Temporary attribute while this is experimental - - /*********************************************************************** - * - * Public Interface Functions - * - **********************************************************************/ - - /// - /// - /// Initialises RegionData Interface - /// Loads and initialises a new SQLite connection and maintains it. - /// - /// - /// the connection string - public void Initialise(string connectionString) - { - m_connectionString = connectionString; - - ds = new DataSet(); - - m_log.Info("[REGION DB]: Sqlite - connecting: " + connectionString); - m_conn = new SqliteConnection(m_connectionString); - m_conn.Open(); - - - - SqliteCommand primSelectCmd = new SqliteCommand(primSelect, m_conn); - primDa = new SqliteDataAdapter(primSelectCmd); - // SqliteCommandBuilder primCb = new SqliteCommandBuilder(primDa); - - SqliteCommand shapeSelectCmd = new SqliteCommand(shapeSelect, m_conn); - shapeDa = new SqliteDataAdapter(shapeSelectCmd); - // SqliteCommandBuilder shapeCb = new SqliteCommandBuilder(shapeDa); - - SqliteCommand itemsSelectCmd = new SqliteCommand(itemsSelect, m_conn); - itemsDa = new SqliteDataAdapter(itemsSelectCmd); - - SqliteCommand terrainSelectCmd = new SqliteCommand(terrainSelect, m_conn); - terrainDa = new SqliteDataAdapter(terrainSelectCmd); - - SqliteCommand landSelectCmd = new SqliteCommand(landSelect, m_conn); - landDa = new SqliteDataAdapter(landSelectCmd); - - SqliteCommand landAccessListSelectCmd = new SqliteCommand(landAccessListSelect, m_conn); - landAccessListDa = new SqliteDataAdapter(landAccessListSelectCmd); - - SqliteCommand regionSettingsSelectCmd = new SqliteCommand(regionSettingsSelect, m_conn); - regionSettingsDa = new SqliteDataAdapter(regionSettingsSelectCmd); - // This actually does the roll forward assembly stuff - Assembly assem = GetType().Assembly; - Migration m = new Migration(m_conn, assem, "RegionStore"); - m.Update(); - - lock (ds) - { - ds.Tables.Add(createPrimTable()); - setupPrimCommands(primDa, m_conn); - primDa.Fill(ds.Tables["prims"]); - - ds.Tables.Add(createShapeTable()); - setupShapeCommands(shapeDa, m_conn); - - ds.Tables.Add(createItemsTable()); - setupItemsCommands(itemsDa, m_conn); - itemsDa.Fill(ds.Tables["primitems"]); - - ds.Tables.Add(createTerrainTable()); - setupTerrainCommands(terrainDa, m_conn); - - ds.Tables.Add(createLandTable()); - setupLandCommands(landDa, m_conn); - - ds.Tables.Add(createLandAccessListTable()); - setupLandAccessCommands(landAccessListDa, m_conn); - - ds.Tables.Add(createRegionSettingsTable()); - - setupRegionSettingsCommands(regionSettingsDa, m_conn); - - // WORKAROUND: This is a work around for sqlite on - // windows, which gets really unhappy with blob columns - // that have no sample data in them. At some point we - // need to actually find a proper way to handle this. - try - { - shapeDa.Fill(ds.Tables["primshapes"]); - } - catch (Exception) - { - m_log.Info("[REGION DB]: Caught fill error on primshapes table"); - } - - try - { - terrainDa.Fill(ds.Tables["terrain"]); - } - catch (Exception) - { - m_log.Info("[REGION DB]: Caught fill error on terrain table"); - } - - try - { - landDa.Fill(ds.Tables["land"]); - } - catch (Exception) - { - m_log.Info("[REGION DB]: Caught fill error on land table"); - } - - try - { - landAccessListDa.Fill(ds.Tables["landaccesslist"]); - } - catch (Exception) - { - m_log.Info("[REGION DB]: Caught fill error on landaccesslist table"); - } - - try - { - regionSettingsDa.Fill(ds.Tables["regionsettings"]); - } - catch (Exception) - { - m_log.Info("[REGION DB]: Caught fill error on regionsettings table"); - } - return; - } - } - - public void Dispose() - { - if (m_conn != null) - { - m_conn.Close(); - m_conn = null; - } - if (ds != null) - { - ds.Dispose(); - ds = null; - } - if (primDa != null) - { - primDa.Dispose(); - primDa = null; - } - if (shapeDa != null) - { - shapeDa.Dispose(); - shapeDa = null; - } - if (itemsDa != null) - { - itemsDa.Dispose(); - itemsDa = null; - } - if (terrainDa != null) - { - terrainDa.Dispose(); - terrainDa = null; - } - if (landDa != null) - { - landDa.Dispose(); - landDa = null; - } - if (landAccessListDa != null) - { - landAccessListDa.Dispose(); - landAccessListDa = null; - } - if (regionSettingsDa != null) - { - regionSettingsDa.Dispose(); - regionSettingsDa = null; - } - } - - public void StoreRegionSettings(RegionSettings rs) - { - lock (ds) - { - DataTable regionsettings = ds.Tables["regionsettings"]; - - DataRow settingsRow = regionsettings.Rows.Find(rs.RegionUUID.ToString()); - if (settingsRow == null) - { - settingsRow = regionsettings.NewRow(); - fillRegionSettingsRow(settingsRow, rs); - regionsettings.Rows.Add(settingsRow); - } - else - { - fillRegionSettingsRow(settingsRow, rs); - } - - Commit(); - } - } - public RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID) - { - //This connector doesn't support the windlight module yet - //Return default LL windlight settings - return new RegionLightShareData(); - } - public void RemoveRegionWindlightSettings(UUID regionID) - { - } - public void StoreRegionWindlightSettings(RegionLightShareData wl) - { - //This connector doesn't support the windlight module yet - } - public RegionSettings LoadRegionSettings(UUID regionUUID) - { - lock (ds) - { - DataTable regionsettings = ds.Tables["regionsettings"]; - - string searchExp = "regionUUID = '" + regionUUID.ToString() + "'"; - DataRow[] rawsettings = regionsettings.Select(searchExp); - if (rawsettings.Length == 0) - { - RegionSettings rs = new RegionSettings(); - rs.RegionUUID = regionUUID; - rs.OnSave += StoreRegionSettings; - - StoreRegionSettings(rs); - - return rs; - } - DataRow row = rawsettings[0]; - - RegionSettings newSettings = buildRegionSettings(row); - newSettings.OnSave += StoreRegionSettings; - - return newSettings; - } - } - - /// - /// Adds an object into region storage - /// - /// the object - /// the region UUID - public void StoreObject(SceneObjectGroup obj, UUID regionUUID) - { - uint flags = obj.RootPart.GetEffectiveObjectFlags(); - - // Eligibility check - // - if ((flags & (uint)PrimFlags.Temporary) != 0) - return; - if ((flags & (uint)PrimFlags.TemporaryOnRez) != 0) - return; - - lock (ds) - { - foreach (SceneObjectPart prim in obj.Parts) - { -// m_log.Info("[REGION DB]: Adding obj: " + obj.UUID + " to region: " + regionUUID); - addPrim(prim, obj.UUID, regionUUID); - } - } - - Commit(); - // m_log.Info("[Dump of prims]: " + ds.GetXml()); - } - - /// - /// Removes an object from region storage - /// - /// the object - /// the region UUID - public void RemoveObject(UUID obj, UUID regionUUID) - { - // m_log.InfoFormat("[REGION DB]: Removing obj: {0} from region: {1}", obj.Guid, regionUUID); - - DataTable prims = ds.Tables["prims"]; - DataTable shapes = ds.Tables["primshapes"]; - - string selectExp = "SceneGroupID = '" + obj + "' and RegionUUID = '" + regionUUID + "'"; - lock (ds) - { - DataRow[] primRows = prims.Select(selectExp); - foreach (DataRow row in primRows) - { - // Remove shape rows - UUID uuid = new UUID((string) row["UUID"]); - DataRow shapeRow = shapes.Rows.Find(uuid.ToString()); - if (shapeRow != null) - { - shapeRow.Delete(); - } - - RemoveItems(uuid); - - // Remove prim row - row.Delete(); - } - } - - Commit(); - } - - /// - /// Remove all persisted items of the given prim. - /// The caller must acquire the necessrary synchronization locks and commit or rollback changes. - /// - /// The item UUID - private void RemoveItems(UUID uuid) - { - DataTable items = ds.Tables["primitems"]; - - String sql = String.Format("primID = '{0}'", uuid); - DataRow[] itemRows = items.Select(sql); - - foreach (DataRow itemRow in itemRows) - { - itemRow.Delete(); - } - } - - /// - /// Load persisted objects from region storage. - /// - /// The region UUID - /// List of loaded groups - public List LoadObjects(UUID regionUUID) - { - Dictionary createdObjects = new Dictionary(); - - List retvals = new List(); - - DataTable prims = ds.Tables["prims"]; - DataTable shapes = ds.Tables["primshapes"]; - - string byRegion = "RegionUUID = '" + regionUUID + "'"; - - lock (ds) - { - DataRow[] primsForRegion = prims.Select(byRegion); - m_log.Info("[REGION DB]: Loaded " + primsForRegion.Length + " prims for region: " + regionUUID); - - // First, create all groups - foreach (DataRow primRow in primsForRegion) - { - try - { - SceneObjectPart prim = null; - - string uuid = (string) primRow["UUID"]; - string objID = (string) primRow["SceneGroupID"]; - - if (uuid == objID) //is new SceneObjectGroup ? - { - prim = buildPrim(primRow); - DataRow shapeRow = shapes.Rows.Find(prim.UUID.ToString()); - if (shapeRow != null) - { - prim.Shape = buildShape(shapeRow); - } - else - { - m_log.Info( - "[REGION DB]: No shape found for prim in storage, so setting default box shape"); - prim.Shape = PrimitiveBaseShape.Default; - } - - SceneObjectGroup group = new SceneObjectGroup(prim); - createdObjects.Add(group.UUID, group); - retvals.Add(group); - LoadItems(prim); - } - } - catch (Exception e) - { - m_log.Error("[REGION DB]: Failed create prim object in new group, exception and data follows"); - m_log.Info("[REGION DB]: " + e.ToString()); - foreach (DataColumn col in prims.Columns) - { - m_log.Info("[REGION DB]: Col: " + col.ColumnName + " => " + primRow[col]); - } - } - } - - // Now fill the groups with part data - foreach (DataRow primRow in primsForRegion) - { - try - { - SceneObjectPart prim = null; - - string uuid = (string) primRow["UUID"]; - string objID = (string) primRow["SceneGroupID"]; - if (uuid != objID) //is new SceneObjectGroup ? - { - prim = buildPrim(primRow); - DataRow shapeRow = shapes.Rows.Find(prim.UUID.ToString()); - if (shapeRow != null) - { - prim.Shape = buildShape(shapeRow); - } - else - { - m_log.Warn( - "[REGION DB]: No shape found for prim in storage, so setting default box shape"); - prim.Shape = PrimitiveBaseShape.Default; - } - - createdObjects[new UUID(objID)].AddPart(prim); - LoadItems(prim); - } - } - catch (Exception e) - { - m_log.Error("[REGION DB]: Failed create prim object in group, exception and data follows"); - m_log.Info("[REGION DB]: " + e.ToString()); - foreach (DataColumn col in prims.Columns) - { - m_log.Info("[REGION DB]: Col: " + col.ColumnName + " => " + primRow[col]); - } - } - } - } - return retvals; - } - - /// - /// Load in a prim's persisted inventory. - /// - /// the prim - private void LoadItems(SceneObjectPart prim) - { - //m_log.DebugFormat("[DATASTORE]: Loading inventory for {0}, {1}", prim.Name, prim.UUID); - - DataTable dbItems = ds.Tables["primitems"]; - String sql = String.Format("primID = '{0}'", prim.UUID.ToString()); - DataRow[] dbItemRows = dbItems.Select(sql); - IList inventory = new List(); - - foreach (DataRow row in dbItemRows) - { - TaskInventoryItem item = buildItem(row); - inventory.Add(item); - - //m_log.DebugFormat("[DATASTORE]: Restored item {0}, {1}", item.Name, item.ItemID); - } - - prim.Inventory.RestoreInventoryItems(inventory); - } - - /// - /// Store a terrain revision in region storage - /// - /// terrain heightfield - /// region UUID - public void StoreTerrain(double[,] ter, UUID regionID) - { - lock (ds) - { - int revision = Util.UnixTimeSinceEpoch(); - - // This is added to get rid of the infinitely growing - // terrain databases which negatively impact on SQLite - // over time. Before reenabling this feature there - // needs to be a limitter put on the number of - // revisions in the database, as this old - // implementation is a DOS attack waiting to happen. - - using ( - SqliteCommand cmd = - new SqliteCommand("delete from terrain where RegionUUID=:RegionUUID and Revision <= :Revision", - m_conn)) - { - cmd.Parameters.Add(new SqliteParameter(":RegionUUID", regionID.ToString())); - cmd.Parameters.Add(new SqliteParameter(":Revision", revision)); - cmd.ExecuteNonQuery(); - } - - // the following is an work around for .NET. The perf - // issues associated with it aren't as bad as you think. - m_log.Info("[REGION DB]: Storing terrain revision r" + revision.ToString()); - String sql = "insert into terrain(RegionUUID, Revision, Heightfield)" + - " values(:RegionUUID, :Revision, :Heightfield)"; - - using (SqliteCommand cmd = new SqliteCommand(sql, m_conn)) - { - cmd.Parameters.Add(new SqliteParameter(":RegionUUID", regionID.ToString())); - cmd.Parameters.Add(new SqliteParameter(":Revision", revision)); - cmd.Parameters.Add(new SqliteParameter(":Heightfield", serializeTerrain(ter))); - cmd.ExecuteNonQuery(); - } - } - } - - /// - /// Load the latest terrain revision from region storage - /// - /// the region UUID - /// Heightfield data - public double[,] LoadTerrain(UUID regionID) - { - lock (ds) - { - double[,] terret = new double[(int)Constants.RegionSize, (int)Constants.RegionSize]; - terret.Initialize(); - - String sql = "select RegionUUID, Revision, Heightfield from terrain" + - " where RegionUUID=:RegionUUID order by Revision desc"; - - using (SqliteCommand cmd = new SqliteCommand(sql, m_conn)) - { - cmd.Parameters.Add(new SqliteParameter(":RegionUUID", regionID.ToString())); - - using (IDataReader row = cmd.ExecuteReader()) - { - int rev = 0; - if (row.Read()) - { - // TODO: put this into a function - using (MemoryStream str = new MemoryStream((byte[])row["Heightfield"])) - { - using (BinaryReader br = new BinaryReader(str)) - { - for (int x = 0; x < (int)Constants.RegionSize; x++) - { - for (int y = 0; y < (int)Constants.RegionSize; y++) - { - terret[x, y] = br.ReadDouble(); - } - } - } - } - rev = (int) row["Revision"]; - } - else - { - m_log.Info("[REGION DB]: No terrain found for region"); - return null; - } - - m_log.Info("[REGION DB]: Loaded terrain revision r" + rev.ToString()); - } - } - return terret; - } - } - - /// - /// - /// - /// - public void RemoveLandObject(UUID globalID) - { - lock (ds) - { - // Can't use blanket SQL statements when using SqlAdapters unless you re-read the data into the adapter - // after you're done. - // replaced below code with the SqliteAdapter version. - //using (SqliteCommand cmd = new SqliteCommand("delete from land where UUID=:UUID", m_conn)) - //{ - // cmd.Parameters.Add(new SqliteParameter(":UUID", globalID.ToString())); - // cmd.ExecuteNonQuery(); - //} - - //using (SqliteCommand cmd = new SqliteCommand("delete from landaccesslist where LandUUID=:UUID", m_conn)) - //{ - // cmd.Parameters.Add(new SqliteParameter(":UUID", globalID.ToString())); - // cmd.ExecuteNonQuery(); - //} - - DataTable land = ds.Tables["land"]; - DataTable landaccesslist = ds.Tables["landaccesslist"]; - DataRow landRow = land.Rows.Find(globalID.ToString()); - if (landRow != null) - { - landRow.Delete(); - land.Rows.Remove(landRow); - } - List rowsToDelete = new List(); - foreach (DataRow rowToCheck in landaccesslist.Rows) - { - if (rowToCheck["LandUUID"].ToString() == globalID.ToString()) - rowsToDelete.Add(rowToCheck); - } - for (int iter = 0; iter < rowsToDelete.Count; iter++) - { - rowsToDelete[iter].Delete(); - landaccesslist.Rows.Remove(rowsToDelete[iter]); - } - - - } - Commit(); - } - - /// - /// - /// - /// - public void StoreLandObject(ILandObject parcel) - { - lock (ds) - { - DataTable land = ds.Tables["land"]; - DataTable landaccesslist = ds.Tables["landaccesslist"]; - - DataRow landRow = land.Rows.Find(parcel.LandData.GlobalID.ToString()); - if (landRow == null) - { - landRow = land.NewRow(); - fillLandRow(landRow, parcel.LandData, parcel.RegionUUID); - land.Rows.Add(landRow); - } - else - { - fillLandRow(landRow, parcel.LandData, parcel.RegionUUID); - } - - // I know this caused someone issues before, but OpenSim is unusable if we leave this stuff around - //using (SqliteCommand cmd = new SqliteCommand("delete from landaccesslist where LandUUID=:LandUUID", m_conn)) - //{ - // cmd.Parameters.Add(new SqliteParameter(":LandUUID", parcel.LandData.GlobalID.ToString())); - // cmd.ExecuteNonQuery(); - -// } - - // This is the slower.. but more appropriate thing to do - - // We can't modify the table with direct queries before calling Commit() and re-filling them. - List rowsToDelete = new List(); - foreach (DataRow rowToCheck in landaccesslist.Rows) - { - if (rowToCheck["LandUUID"].ToString() == parcel.LandData.GlobalID.ToString()) - rowsToDelete.Add(rowToCheck); - } - for (int iter = 0; iter < rowsToDelete.Count; iter++) - { - rowsToDelete[iter].Delete(); - landaccesslist.Rows.Remove(rowsToDelete[iter]); - } - rowsToDelete.Clear(); - foreach (ParcelManager.ParcelAccessEntry entry in parcel.LandData.ParcelAccessList) - { - DataRow newAccessRow = landaccesslist.NewRow(); - fillLandAccessRow(newAccessRow, entry, parcel.LandData.GlobalID); - landaccesslist.Rows.Add(newAccessRow); - } - } - - Commit(); - } - - /// - /// - /// - /// - /// - public List LoadLandObjects(UUID regionUUID) - { - List landDataForRegion = new List(); - lock (ds) - { - DataTable land = ds.Tables["land"]; - DataTable landaccesslist = ds.Tables["landaccesslist"]; - string searchExp = "RegionUUID = '" + regionUUID + "'"; - DataRow[] rawDataForRegion = land.Select(searchExp); - foreach (DataRow rawDataLand in rawDataForRegion) - { - LandData newLand = buildLandData(rawDataLand); - string accessListSearchExp = "LandUUID = '" + newLand.GlobalID + "'"; - DataRow[] rawDataForLandAccessList = landaccesslist.Select(accessListSearchExp); - foreach (DataRow rawDataLandAccess in rawDataForLandAccessList) - { - newLand.ParcelAccessList.Add(buildLandAccessData(rawDataLandAccess)); - } - - landDataForRegion.Add(newLand); - } - } - return landDataForRegion; - } - - /// - /// - /// - public void Commit() - { - lock (ds) - { - primDa.Update(ds, "prims"); - shapeDa.Update(ds, "primshapes"); - - itemsDa.Update(ds, "primitems"); - - terrainDa.Update(ds, "terrain"); - landDa.Update(ds, "land"); - landAccessListDa.Update(ds, "landaccesslist"); - try - { - regionSettingsDa.Update(ds, "regionsettings"); - } - catch (SqliteExecutionException SqlEx) - { - if (SqlEx.Message.Contains("logic error")) - { - throw new Exception( - "There was a SQL error or connection string configuration error when saving the region settings. This could be a bug, it could also happen if ConnectionString is defined in the [DatabaseService] section of StandaloneCommon.ini in the config_include folder. This could also happen if the config_include folder doesn't exist or if the OpenSim.ini [Architecture] section isn't set. If this is your first time running OpenSimulator, please restart the simulator and bug a developer to fix this!", - SqlEx); - } - else - { - throw SqlEx; - } - } - ds.AcceptChanges(); - } - } - - /// - /// See - /// - public void Shutdown() - { - Commit(); - } - - /*********************************************************************** - * - * Database Definition Functions - * - * This should be db agnostic as we define them in ADO.NET terms - * - **********************************************************************/ - - /// - /// - /// - /// - /// - /// - private static void createCol(DataTable dt, string name, Type type) - { - DataColumn col = new DataColumn(name, type); - dt.Columns.Add(col); - } - - /// - /// Creates the "terrain" table - /// - /// terrain table DataTable - private static DataTable createTerrainTable() - { - DataTable terrain = new DataTable("terrain"); - - createCol(terrain, "RegionUUID", typeof (String)); - createCol(terrain, "Revision", typeof (Int32)); - createCol(terrain, "Heightfield", typeof (Byte[])); - - return terrain; - } - - /// - /// Creates the "prims" table - /// - /// prim table DataTable - private static DataTable createPrimTable() - { - DataTable prims = new DataTable("prims"); - - createCol(prims, "UUID", typeof (String)); - createCol(prims, "RegionUUID", typeof (String)); - createCol(prims, "CreationDate", typeof (Int32)); - createCol(prims, "Name", typeof (String)); - createCol(prims, "SceneGroupID", typeof (String)); - // various text fields - createCol(prims, "Text", typeof (String)); - createCol(prims, "ColorR", typeof (Int32)); - createCol(prims, "ColorG", typeof (Int32)); - createCol(prims, "ColorB", typeof (Int32)); - createCol(prims, "ColorA", typeof (Int32)); - createCol(prims, "Description", typeof (String)); - createCol(prims, "SitName", typeof (String)); - createCol(prims, "TouchName", typeof (String)); - // permissions - createCol(prims, "ObjectFlags", typeof (Int32)); - createCol(prims, "CreatorID", typeof (String)); - createCol(prims, "OwnerID", typeof (String)); - createCol(prims, "GroupID", typeof (String)); - createCol(prims, "LastOwnerID", typeof (String)); - createCol(prims, "OwnerMask", typeof (Int32)); - createCol(prims, "NextOwnerMask", typeof (Int32)); - createCol(prims, "GroupMask", typeof (Int32)); - createCol(prims, "EveryoneMask", typeof (Int32)); - createCol(prims, "BaseMask", typeof (Int32)); - // vectors - createCol(prims, "PositionX", typeof (Double)); - createCol(prims, "PositionY", typeof (Double)); - createCol(prims, "PositionZ", typeof (Double)); - createCol(prims, "GroupPositionX", typeof (Double)); - createCol(prims, "GroupPositionY", typeof (Double)); - createCol(prims, "GroupPositionZ", typeof (Double)); - createCol(prims, "VelocityX", typeof (Double)); - createCol(prims, "VelocityY", typeof (Double)); - createCol(prims, "VelocityZ", typeof (Double)); - createCol(prims, "AngularVelocityX", typeof (Double)); - createCol(prims, "AngularVelocityY", typeof (Double)); - createCol(prims, "AngularVelocityZ", typeof (Double)); - createCol(prims, "AccelerationX", typeof (Double)); - createCol(prims, "AccelerationY", typeof (Double)); - createCol(prims, "AccelerationZ", typeof (Double)); - // quaternions - createCol(prims, "RotationX", typeof (Double)); - createCol(prims, "RotationY", typeof (Double)); - createCol(prims, "RotationZ", typeof (Double)); - createCol(prims, "RotationW", typeof (Double)); - - // sit target - createCol(prims, "SitTargetOffsetX", typeof (Double)); - createCol(prims, "SitTargetOffsetY", typeof (Double)); - createCol(prims, "SitTargetOffsetZ", typeof (Double)); - - createCol(prims, "SitTargetOrientW", typeof (Double)); - createCol(prims, "SitTargetOrientX", typeof (Double)); - createCol(prims, "SitTargetOrientY", typeof (Double)); - createCol(prims, "SitTargetOrientZ", typeof (Double)); - - createCol(prims, "PayPrice", typeof(Int32)); - createCol(prims, "PayButton1", typeof(Int32)); - createCol(prims, "PayButton2", typeof(Int32)); - createCol(prims, "PayButton3", typeof(Int32)); - createCol(prims, "PayButton4", typeof(Int32)); - - createCol(prims, "LoopedSound", typeof(String)); - createCol(prims, "LoopedSoundGain", typeof(Double)); - createCol(prims, "TextureAnimation", typeof(String)); - createCol(prims, "ParticleSystem", typeof(String)); - - createCol(prims, "OmegaX", typeof(Double)); - createCol(prims, "OmegaY", typeof(Double)); - createCol(prims, "OmegaZ", typeof(Double)); - - createCol(prims, "CameraEyeOffsetX", typeof(Double)); - createCol(prims, "CameraEyeOffsetY", typeof(Double)); - createCol(prims, "CameraEyeOffsetZ", typeof(Double)); - - createCol(prims, "CameraAtOffsetX", typeof(Double)); - createCol(prims, "CameraAtOffsetY", typeof(Double)); - createCol(prims, "CameraAtOffsetZ", typeof(Double)); - - createCol(prims, "ForceMouselook", typeof(Int16)); - - createCol(prims, "ScriptAccessPin", typeof(Int32)); - - createCol(prims, "AllowedDrop", typeof(Int16)); - createCol(prims, "DieAtEdge", typeof(Int16)); - - createCol(prims, "SalePrice", typeof(Int32)); - createCol(prims, "SaleType", typeof(Int16)); - - // click action - createCol(prims, "ClickAction", typeof (Byte)); - - createCol(prims, "Material", typeof(Byte)); - - createCol(prims, "CollisionSound", typeof(String)); - createCol(prims, "CollisionSoundVolume", typeof(Double)); - - createCol(prims, "VolumeDetect", typeof(Int16)); - - // Add in contraints - prims.PrimaryKey = new DataColumn[] {prims.Columns["UUID"]}; - - return prims; - } - - /// - /// Creates "primshapes" table - /// - /// shape table DataTable - private static DataTable createShapeTable() - { - DataTable shapes = new DataTable("primshapes"); - createCol(shapes, "UUID", typeof (String)); - // shape is an enum - createCol(shapes, "Shape", typeof (Int32)); - // vectors - createCol(shapes, "ScaleX", typeof (Double)); - createCol(shapes, "ScaleY", typeof (Double)); - createCol(shapes, "ScaleZ", typeof (Double)); - // paths - createCol(shapes, "PCode", typeof (Int32)); - createCol(shapes, "PathBegin", typeof (Int32)); - createCol(shapes, "PathEnd", typeof (Int32)); - createCol(shapes, "PathScaleX", typeof (Int32)); - createCol(shapes, "PathScaleY", typeof (Int32)); - createCol(shapes, "PathShearX", typeof (Int32)); - createCol(shapes, "PathShearY", typeof (Int32)); - createCol(shapes, "PathSkew", typeof (Int32)); - createCol(shapes, "PathCurve", typeof (Int32)); - createCol(shapes, "PathRadiusOffset", typeof (Int32)); - createCol(shapes, "PathRevolutions", typeof (Int32)); - createCol(shapes, "PathTaperX", typeof (Int32)); - createCol(shapes, "PathTaperY", typeof (Int32)); - createCol(shapes, "PathTwist", typeof (Int32)); - createCol(shapes, "PathTwistBegin", typeof (Int32)); - // profile - createCol(shapes, "ProfileBegin", typeof (Int32)); - createCol(shapes, "ProfileEnd", typeof (Int32)); - createCol(shapes, "ProfileCurve", typeof (Int32)); - createCol(shapes, "ProfileHollow", typeof (Int32)); - createCol(shapes, "State", typeof(Int32)); - // text TODO: this isn't right, but I'm not sure the right - // way to specify this as a blob atm - createCol(shapes, "Texture", typeof (Byte[])); - createCol(shapes, "ExtraParams", typeof (Byte[])); - - shapes.PrimaryKey = new DataColumn[] {shapes.Columns["UUID"]}; - - return shapes; - } - - /// - /// creates "primitems" table - /// - /// item table DataTable - private static DataTable createItemsTable() - { - DataTable items = new DataTable("primitems"); - - createCol(items, "itemID", typeof (String)); - createCol(items, "primID", typeof (String)); - createCol(items, "assetID", typeof (String)); - createCol(items, "parentFolderID", typeof (String)); - - createCol(items, "invType", typeof (Int32)); - createCol(items, "assetType", typeof (Int32)); - - createCol(items, "name", typeof (String)); - createCol(items, "description", typeof (String)); - - createCol(items, "creationDate", typeof (Int64)); - createCol(items, "creatorID", typeof (String)); - createCol(items, "ownerID", typeof (String)); - createCol(items, "lastOwnerID", typeof (String)); - createCol(items, "groupID", typeof (String)); - - createCol(items, "nextPermissions", typeof (UInt32)); - createCol(items, "currentPermissions", typeof (UInt32)); - createCol(items, "basePermissions", typeof (UInt32)); - createCol(items, "everyonePermissions", typeof (UInt32)); - createCol(items, "groupPermissions", typeof (UInt32)); - createCol(items, "flags", typeof (UInt32)); - - items.PrimaryKey = new DataColumn[] { items.Columns["itemID"] }; - - return items; - } - - /// - /// Creates "land" table - /// - /// land table DataTable - private static DataTable createLandTable() - { - DataTable land = new DataTable("land"); - createCol(land, "UUID", typeof (String)); - createCol(land, "RegionUUID", typeof (String)); - createCol(land, "LocalLandID", typeof (UInt32)); - - // Bitmap is a byte[512] - createCol(land, "Bitmap", typeof (Byte[])); - - createCol(land, "Name", typeof (String)); - createCol(land, "Desc", typeof (String)); - createCol(land, "OwnerUUID", typeof (String)); - createCol(land, "IsGroupOwned", typeof (Boolean)); - createCol(land, "Area", typeof (Int32)); - createCol(land, "AuctionID", typeof (Int32)); //Unemplemented - createCol(land, "Category", typeof (Int32)); //Enum OpenMetaverse.Parcel.ParcelCategory - createCol(land, "ClaimDate", typeof (Int32)); - createCol(land, "ClaimPrice", typeof (Int32)); - createCol(land, "GroupUUID", typeof (string)); - createCol(land, "SalePrice", typeof (Int32)); - createCol(land, "LandStatus", typeof (Int32)); //Enum. OpenMetaverse.Parcel.ParcelStatus - createCol(land, "LandFlags", typeof (UInt32)); - createCol(land, "LandingType", typeof (Byte)); - createCol(land, "MediaAutoScale", typeof (Byte)); - createCol(land, "MediaTextureUUID", typeof (String)); - createCol(land, "MediaURL", typeof (String)); - createCol(land, "MusicURL", typeof (String)); - createCol(land, "PassHours", typeof (Double)); - createCol(land, "PassPrice", typeof (UInt32)); - createCol(land, "SnapshotUUID", typeof (String)); - createCol(land, "UserLocationX", typeof (Double)); - createCol(land, "UserLocationY", typeof (Double)); - createCol(land, "UserLocationZ", typeof (Double)); - createCol(land, "UserLookAtX", typeof (Double)); - createCol(land, "UserLookAtY", typeof (Double)); - createCol(land, "UserLookAtZ", typeof (Double)); - createCol(land, "AuthbuyerID", typeof(String)); - createCol(land, "OtherCleanTime", typeof(Int32)); - - land.PrimaryKey = new DataColumn[] {land.Columns["UUID"]}; - - return land; - } - - /// - /// create "landaccesslist" table - /// - /// Landacceslist DataTable - private static DataTable createLandAccessListTable() - { - DataTable landaccess = new DataTable("landaccesslist"); - createCol(landaccess, "LandUUID", typeof (String)); - createCol(landaccess, "AccessUUID", typeof (String)); - createCol(landaccess, "Flags", typeof (UInt32)); - - return landaccess; - } - - private static DataTable createRegionSettingsTable() - { - DataTable regionsettings = new DataTable("regionsettings"); - createCol(regionsettings, "regionUUID", typeof(String)); - createCol(regionsettings, "block_terraform", typeof (Int32)); - createCol(regionsettings, "block_fly", typeof (Int32)); - createCol(regionsettings, "allow_damage", typeof (Int32)); - createCol(regionsettings, "restrict_pushing", typeof (Int32)); - createCol(regionsettings, "allow_land_resell", typeof (Int32)); - createCol(regionsettings, "allow_land_join_divide", typeof (Int32)); - createCol(regionsettings, "block_show_in_search", typeof (Int32)); - createCol(regionsettings, "agent_limit", typeof (Int32)); - createCol(regionsettings, "object_bonus", typeof (Double)); - createCol(regionsettings, "maturity", typeof (Int32)); - createCol(regionsettings, "disable_scripts", typeof (Int32)); - createCol(regionsettings, "disable_collisions", typeof (Int32)); - createCol(regionsettings, "disable_physics", typeof (Int32)); - createCol(regionsettings, "terrain_texture_1", typeof(String)); - createCol(regionsettings, "terrain_texture_2", typeof(String)); - createCol(regionsettings, "terrain_texture_3", typeof(String)); - createCol(regionsettings, "terrain_texture_4", typeof(String)); - createCol(regionsettings, "elevation_1_nw", typeof (Double)); - createCol(regionsettings, "elevation_2_nw", typeof (Double)); - createCol(regionsettings, "elevation_1_ne", typeof (Double)); - createCol(regionsettings, "elevation_2_ne", typeof (Double)); - createCol(regionsettings, "elevation_1_se", typeof (Double)); - createCol(regionsettings, "elevation_2_se", typeof (Double)); - createCol(regionsettings, "elevation_1_sw", typeof (Double)); - createCol(regionsettings, "elevation_2_sw", typeof (Double)); - createCol(regionsettings, "water_height", typeof (Double)); - createCol(regionsettings, "terrain_raise_limit", typeof (Double)); - createCol(regionsettings, "terrain_lower_limit", typeof (Double)); - createCol(regionsettings, "use_estate_sun", typeof (Int32)); - createCol(regionsettings, "sandbox", typeof (Int32)); - createCol(regionsettings, "sunvectorx",typeof (Double)); - createCol(regionsettings, "sunvectory",typeof (Double)); - createCol(regionsettings, "sunvectorz",typeof (Double)); - createCol(regionsettings, "fixed_sun", typeof (Int32)); - createCol(regionsettings, "sun_position", typeof (Double)); - createCol(regionsettings, "covenant", typeof(String)); - regionsettings.PrimaryKey = new DataColumn[] { regionsettings.Columns["regionUUID"] }; - return regionsettings; - } - - /*********************************************************************** - * - * Convert between ADO.NET <=> OpenSim Objects - * - * These should be database independant - * - **********************************************************************/ - - /// - /// - /// - /// - /// - private SceneObjectPart buildPrim(DataRow row) - { - // Code commented. Uncomment to test the unit test inline. - - // The unit test mentions this commented code for the purposes - // of debugging a unit test failure - - // SceneObjectGroup sog = new SceneObjectGroup(); - // SceneObjectPart sop = new SceneObjectPart(); - // sop.LocalId = 1; - // sop.Name = "object1"; - // sop.Description = "object1"; - // sop.Text = ""; - // sop.SitName = ""; - // sop.TouchName = ""; - // sop.UUID = UUID.Random(); - // sop.Shape = PrimitiveBaseShape.Default; - // sog.SetRootPart(sop); - // Add breakpoint in above line. Check sop fields. - - // TODO: this doesn't work yet because something more - // interesting has to be done to actually get these values - // back out. Not enough time to figure it out yet. - - SceneObjectPart prim = new SceneObjectPart(); - prim.UUID = new UUID((String) row["UUID"]); - // explicit conversion of integers is required, which sort - // of sucks. No idea if there is a shortcut here or not. - prim.CreationDate = Convert.ToInt32(row["CreationDate"]); - prim.Name = row["Name"] == DBNull.Value ? string.Empty : (string)row["Name"]; - // various text fields - prim.Text = (String) row["Text"]; - prim.Color = Color.FromArgb(Convert.ToInt32(row["ColorA"]), - Convert.ToInt32(row["ColorR"]), - Convert.ToInt32(row["ColorG"]), - Convert.ToInt32(row["ColorB"])); - prim.Description = (String) row["Description"]; - prim.SitName = (String) row["SitName"]; - prim.TouchName = (String) row["TouchName"]; - // permissions - prim.Flags = (PrimFlags)Convert.ToUInt32(row["ObjectFlags"]); - prim.CreatorIdentification = (String) row["CreatorID"]; - prim.OwnerID = new UUID((String) row["OwnerID"]); - prim.GroupID = new UUID((String) row["GroupID"]); - prim.LastOwnerID = new UUID((String) row["LastOwnerID"]); - prim.OwnerMask = Convert.ToUInt32(row["OwnerMask"]); - prim.NextOwnerMask = Convert.ToUInt32(row["NextOwnerMask"]); - prim.GroupMask = Convert.ToUInt32(row["GroupMask"]); - prim.EveryoneMask = Convert.ToUInt32(row["EveryoneMask"]); - prim.BaseMask = Convert.ToUInt32(row["BaseMask"]); - // vectors - prim.OffsetPosition = new Vector3( - Convert.ToSingle(row["PositionX"]), - Convert.ToSingle(row["PositionY"]), - Convert.ToSingle(row["PositionZ"]) - ); - prim.GroupPosition = new Vector3( - Convert.ToSingle(row["GroupPositionX"]), - Convert.ToSingle(row["GroupPositionY"]), - Convert.ToSingle(row["GroupPositionZ"]) - ); - prim.Velocity = new Vector3( - Convert.ToSingle(row["VelocityX"]), - Convert.ToSingle(row["VelocityY"]), - Convert.ToSingle(row["VelocityZ"]) - ); - prim.AngularVelocity = new Vector3( - Convert.ToSingle(row["AngularVelocityX"]), - Convert.ToSingle(row["AngularVelocityY"]), - Convert.ToSingle(row["AngularVelocityZ"]) - ); - prim.Acceleration = new Vector3( - Convert.ToSingle(row["AccelerationX"]), - Convert.ToSingle(row["AccelerationY"]), - Convert.ToSingle(row["AccelerationZ"]) - ); - // quaternions - prim.RotationOffset = new Quaternion( - Convert.ToSingle(row["RotationX"]), - Convert.ToSingle(row["RotationY"]), - Convert.ToSingle(row["RotationZ"]), - Convert.ToSingle(row["RotationW"]) - ); - - prim.SitTargetPositionLL = new Vector3( - Convert.ToSingle(row["SitTargetOffsetX"]), - Convert.ToSingle(row["SitTargetOffsetY"]), - Convert.ToSingle(row["SitTargetOffsetZ"])); - prim.SitTargetOrientationLL = new Quaternion( - Convert.ToSingle( - row["SitTargetOrientX"]), - Convert.ToSingle( - row["SitTargetOrientY"]), - Convert.ToSingle( - row["SitTargetOrientZ"]), - Convert.ToSingle( - row["SitTargetOrientW"])); - - prim.ClickAction = Convert.ToByte(row["ClickAction"]); - prim.PayPrice[0] = Convert.ToInt32(row["PayPrice"]); - prim.PayPrice[1] = Convert.ToInt32(row["PayButton1"]); - prim.PayPrice[2] = Convert.ToInt32(row["PayButton2"]); - prim.PayPrice[3] = Convert.ToInt32(row["PayButton3"]); - prim.PayPrice[4] = Convert.ToInt32(row["PayButton4"]); - - prim.Sound = new UUID(row["LoopedSound"].ToString()); - prim.SoundGain = Convert.ToSingle(row["LoopedSoundGain"]); - prim.SoundFlags = 1; // If it's persisted at all, it's looped - - if (!row.IsNull("TextureAnimation")) - prim.TextureAnimation = Convert.FromBase64String(row["TextureAnimation"].ToString()); - if (!row.IsNull("ParticleSystem")) - prim.ParticleSystem = Convert.FromBase64String(row["ParticleSystem"].ToString()); - - prim.AngularVelocity = new Vector3( - Convert.ToSingle(row["OmegaX"]), - Convert.ToSingle(row["OmegaY"]), - Convert.ToSingle(row["OmegaZ"]) - ); - - prim.SetCameraEyeOffset(new Vector3( - Convert.ToSingle(row["CameraEyeOffsetX"]), - Convert.ToSingle(row["CameraEyeOffsetY"]), - Convert.ToSingle(row["CameraEyeOffsetZ"]) - )); - - prim.SetCameraAtOffset(new Vector3( - Convert.ToSingle(row["CameraAtOffsetX"]), - Convert.ToSingle(row["CameraAtOffsetY"]), - Convert.ToSingle(row["CameraAtOffsetZ"]) - )); - - if (Convert.ToInt16(row["ForceMouselook"]) != 0) - prim.SetForceMouselook(true); - - prim.ScriptAccessPin = Convert.ToInt32(row["ScriptAccessPin"]); - - if (Convert.ToInt16(row["AllowedDrop"]) != 0) - prim.AllowedDrop = true; - - if (Convert.ToInt16(row["DieAtEdge"]) != 0) - prim.DIE_AT_EDGE = true; - - prim.SalePrice = Convert.ToInt32(row["SalePrice"]); - prim.ObjectSaleType = Convert.ToByte(row["SaleType"]); - - prim.Material = Convert.ToByte(row["Material"]); - - prim.CollisionSound = new UUID(row["CollisionSound"].ToString()); - prim.CollisionSoundVolume = Convert.ToSingle(row["CollisionSoundVolume"]); - - if (Convert.ToInt16(row["VolumeDetect"]) != 0) - prim.VolumeDetectActive = true; - - return prim; - } - - /// - /// Build a prim inventory item from the persisted data. - /// - /// - /// - private static TaskInventoryItem buildItem(DataRow row) - { - TaskInventoryItem taskItem = new TaskInventoryItem(); - - taskItem.ItemID = new UUID((String)row["itemID"]); - taskItem.ParentPartID = new UUID((String)row["primID"]); - taskItem.AssetID = new UUID((String)row["assetID"]); - taskItem.ParentID = new UUID((String)row["parentFolderID"]); - - taskItem.InvType = Convert.ToInt32(row["invType"]); - taskItem.Type = Convert.ToInt32(row["assetType"]); - - taskItem.Name = (String)row["name"]; - taskItem.Description = (String)row["description"]; - taskItem.CreationDate = Convert.ToUInt32(row["creationDate"]); - taskItem.CreatorIdentification = (String)row["creatorID"]; - taskItem.OwnerID = new UUID((String)row["ownerID"]); - taskItem.LastOwnerID = new UUID((String)row["lastOwnerID"]); - taskItem.GroupID = new UUID((String)row["groupID"]); - - taskItem.NextPermissions = Convert.ToUInt32(row["nextPermissions"]); - taskItem.CurrentPermissions = Convert.ToUInt32(row["currentPermissions"]); - taskItem.BasePermissions = Convert.ToUInt32(row["basePermissions"]); - taskItem.EveryonePermissions = Convert.ToUInt32(row["everyonePermissions"]); - taskItem.GroupPermissions = Convert.ToUInt32(row["groupPermissions"]); - taskItem.Flags = Convert.ToUInt32(row["flags"]); - - return taskItem; - } - - /// - /// Build a Land Data from the persisted data. - /// - /// - /// - private LandData buildLandData(DataRow row) - { - LandData newData = new LandData(); - - newData.GlobalID = new UUID((String) row["UUID"]); - newData.LocalID = Convert.ToInt32(row["LocalLandID"]); - - // Bitmap is a byte[512] - newData.Bitmap = (Byte[]) row["Bitmap"]; - - newData.Name = (String) row["Name"]; - newData.Description = (String) row["Desc"]; - newData.OwnerID = (UUID)(String) row["OwnerUUID"]; - newData.IsGroupOwned = (Boolean) row["IsGroupOwned"]; - newData.Area = Convert.ToInt32(row["Area"]); - newData.AuctionID = Convert.ToUInt32(row["AuctionID"]); //Unemplemented - newData.Category = (ParcelCategory) Convert.ToInt32(row["Category"]); - //Enum OpenMetaverse.Parcel.ParcelCategory - newData.ClaimDate = Convert.ToInt32(row["ClaimDate"]); - newData.ClaimPrice = Convert.ToInt32(row["ClaimPrice"]); - newData.GroupID = new UUID((String) row["GroupUUID"]); - newData.SalePrice = Convert.ToInt32(row["SalePrice"]); - newData.Status = (ParcelStatus) Convert.ToInt32(row["LandStatus"]); - //Enum. OpenMetaverse.Parcel.ParcelStatus - newData.Flags = Convert.ToUInt32(row["LandFlags"]); - newData.LandingType = (Byte) row["LandingType"]; - newData.MediaAutoScale = (Byte) row["MediaAutoScale"]; - newData.MediaID = new UUID((String) row["MediaTextureUUID"]); - newData.MediaURL = (String) row["MediaURL"]; - newData.MusicURL = (String) row["MusicURL"]; - newData.PassHours = Convert.ToSingle(row["PassHours"]); - newData.PassPrice = Convert.ToInt32(row["PassPrice"]); - newData.SnapshotID = (UUID)(String) row["SnapshotUUID"]; - try - { - - newData.UserLocation = - new Vector3(Convert.ToSingle(row["UserLocationX"]), Convert.ToSingle(row["UserLocationY"]), - Convert.ToSingle(row["UserLocationZ"])); - newData.UserLookAt = - new Vector3(Convert.ToSingle(row["UserLookAtX"]), Convert.ToSingle(row["UserLookAtY"]), - Convert.ToSingle(row["UserLookAtZ"])); - - } - catch (InvalidCastException) - { - m_log.ErrorFormat("[PARCEL]: unable to get parcel telehub settings for {1}", newData.Name); - newData.UserLocation = Vector3.Zero; - newData.UserLookAt = Vector3.Zero; - } - newData.ParcelAccessList = new List(); - UUID authBuyerID = UUID.Zero; - - UUID.TryParse((string)row["AuthbuyerID"], out authBuyerID); - - newData.OtherCleanTime = Convert.ToInt32(row["OtherCleanTime"]); - - return newData; - } - - private RegionSettings buildRegionSettings(DataRow row) - { - RegionSettings newSettings = new RegionSettings(); - - newSettings.RegionUUID = new UUID((string) row["regionUUID"]); - newSettings.BlockTerraform = Convert.ToBoolean(row["block_terraform"]); - newSettings.AllowDamage = Convert.ToBoolean(row["allow_damage"]); - newSettings.BlockFly = Convert.ToBoolean(row["block_fly"]); - newSettings.RestrictPushing = Convert.ToBoolean(row["restrict_pushing"]); - newSettings.AllowLandResell = Convert.ToBoolean(row["allow_land_resell"]); - newSettings.AllowLandJoinDivide = Convert.ToBoolean(row["allow_land_join_divide"]); - newSettings.BlockShowInSearch = Convert.ToBoolean(row["block_show_in_search"]); - newSettings.AgentLimit = Convert.ToInt32(row["agent_limit"]); - newSettings.ObjectBonus = Convert.ToDouble(row["object_bonus"]); - newSettings.Maturity = Convert.ToInt32(row["maturity"]); - newSettings.DisableScripts = Convert.ToBoolean(row["disable_scripts"]); - newSettings.DisableCollisions = Convert.ToBoolean(row["disable_collisions"]); - newSettings.DisablePhysics = Convert.ToBoolean(row["disable_physics"]); - newSettings.TerrainTexture1 = new UUID((String) row["terrain_texture_1"]); - newSettings.TerrainTexture2 = new UUID((String) row["terrain_texture_2"]); - newSettings.TerrainTexture3 = new UUID((String) row["terrain_texture_3"]); - newSettings.TerrainTexture4 = new UUID((String) row["terrain_texture_4"]); - newSettings.Elevation1NW = Convert.ToDouble(row["elevation_1_nw"]); - newSettings.Elevation2NW = Convert.ToDouble(row["elevation_2_nw"]); - newSettings.Elevation1NE = Convert.ToDouble(row["elevation_1_ne"]); - newSettings.Elevation2NE = Convert.ToDouble(row["elevation_2_ne"]); - newSettings.Elevation1SE = Convert.ToDouble(row["elevation_1_se"]); - newSettings.Elevation2SE = Convert.ToDouble(row["elevation_2_se"]); - newSettings.Elevation1SW = Convert.ToDouble(row["elevation_1_sw"]); - newSettings.Elevation2SW = Convert.ToDouble(row["elevation_2_sw"]); - newSettings.WaterHeight = Convert.ToDouble(row["water_height"]); - newSettings.TerrainRaiseLimit = Convert.ToDouble(row["terrain_raise_limit"]); - newSettings.TerrainLowerLimit = Convert.ToDouble(row["terrain_lower_limit"]); - newSettings.UseEstateSun = Convert.ToBoolean(row["use_estate_sun"]); - newSettings.Sandbox = Convert.ToBoolean(row["sandbox"]); - newSettings.SunVector = new Vector3 ( - Convert.ToSingle(row["sunvectorx"]), - Convert.ToSingle(row["sunvectory"]), - Convert.ToSingle(row["sunvectorz"]) - ); - newSettings.FixedSun = Convert.ToBoolean(row["fixed_sun"]); - newSettings.SunPosition = Convert.ToDouble(row["sun_position"]); - newSettings.Covenant = new UUID((String) row["covenant"]); - - return newSettings; - } - - /// - /// Build a land access entry from the persisted data. - /// - /// - /// - private static ParcelManager.ParcelAccessEntry buildLandAccessData(DataRow row) - { - ParcelManager.ParcelAccessEntry entry = new ParcelManager.ParcelAccessEntry(); - entry.AgentID = new UUID((string) row["AccessUUID"]); - entry.Flags = (AccessList) row["Flags"]; - entry.Time = new DateTime(); - return entry; - } - - /// - /// - /// - /// - /// - private static Array serializeTerrain(double[,] val) - { - MemoryStream str = new MemoryStream(((int)Constants.RegionSize * (int)Constants.RegionSize) *sizeof (double)); - BinaryWriter bw = new BinaryWriter(str); - - // TODO: COMPATIBILITY - Add byte-order conversions - for (int x = 0; x < (int)Constants.RegionSize; x++) - for (int y = 0; y < (int)Constants.RegionSize; y++) - bw.Write(val[x, y]); - - return str.ToArray(); - } - -// private void fillTerrainRow(DataRow row, UUID regionUUID, int rev, double[,] val) -// { -// row["RegionUUID"] = regionUUID; -// row["Revision"] = rev; - - // MemoryStream str = new MemoryStream(((int)Constants.RegionSize * (int)Constants.RegionSize)*sizeof (double)); -// BinaryWriter bw = new BinaryWriter(str); - -// // TODO: COMPATIBILITY - Add byte-order conversions - // for (int x = 0; x < (int)Constants.RegionSize; x++) - // for (int y = 0; y < (int)Constants.RegionSize; y++) -// bw.Write(val[x, y]); - -// row["Heightfield"] = str.ToArray(); -// } - - /// - /// - /// - /// - /// - /// - /// - private static void fillPrimRow(DataRow row, SceneObjectPart prim, UUID sceneGroupID, UUID regionUUID) - { - row["UUID"] = prim.UUID.ToString(); - row["RegionUUID"] = regionUUID.ToString(); - row["CreationDate"] = prim.CreationDate; - row["Name"] = prim.Name; - row["SceneGroupID"] = sceneGroupID.ToString(); - // the UUID of the root part for this SceneObjectGroup - // various text fields - row["Text"] = prim.Text; - row["Description"] = prim.Description; - row["SitName"] = prim.SitName; - row["TouchName"] = prim.TouchName; - // permissions - row["ObjectFlags"] = (uint)prim.Flags; - row["CreatorID"] = prim.CreatorIdentification.ToString(); - row["OwnerID"] = prim.OwnerID.ToString(); - row["GroupID"] = prim.GroupID.ToString(); - row["LastOwnerID"] = prim.LastOwnerID.ToString(); - row["OwnerMask"] = prim.OwnerMask; - row["NextOwnerMask"] = prim.NextOwnerMask; - row["GroupMask"] = prim.GroupMask; - row["EveryoneMask"] = prim.EveryoneMask; - row["BaseMask"] = prim.BaseMask; - // vectors - row["PositionX"] = prim.OffsetPosition.X; - row["PositionY"] = prim.OffsetPosition.Y; - row["PositionZ"] = prim.OffsetPosition.Z; - row["GroupPositionX"] = prim.GroupPosition.X; - row["GroupPositionY"] = prim.GroupPosition.Y; - row["GroupPositionZ"] = prim.GroupPosition.Z; - row["VelocityX"] = prim.Velocity.X; - row["VelocityY"] = prim.Velocity.Y; - row["VelocityZ"] = prim.Velocity.Z; - row["AngularVelocityX"] = prim.AngularVelocity.X; - row["AngularVelocityY"] = prim.AngularVelocity.Y; - row["AngularVelocityZ"] = prim.AngularVelocity.Z; - row["AccelerationX"] = prim.Acceleration.X; - row["AccelerationY"] = prim.Acceleration.Y; - row["AccelerationZ"] = prim.Acceleration.Z; - // quaternions - row["RotationX"] = prim.RotationOffset.X; - row["RotationY"] = prim.RotationOffset.Y; - row["RotationZ"] = prim.RotationOffset.Z; - row["RotationW"] = prim.RotationOffset.W; - - // Sit target - Vector3 sitTargetPos = prim.SitTargetPositionLL; - row["SitTargetOffsetX"] = sitTargetPos.X; - row["SitTargetOffsetY"] = sitTargetPos.Y; - row["SitTargetOffsetZ"] = sitTargetPos.Z; - - Quaternion sitTargetOrient = prim.SitTargetOrientationLL; - row["SitTargetOrientW"] = sitTargetOrient.W; - row["SitTargetOrientX"] = sitTargetOrient.X; - row["SitTargetOrientY"] = sitTargetOrient.Y; - row["SitTargetOrientZ"] = sitTargetOrient.Z; - row["ColorR"] = Convert.ToInt32(prim.Color.R); - row["ColorG"] = Convert.ToInt32(prim.Color.G); - row["ColorB"] = Convert.ToInt32(prim.Color.B); - row["ColorA"] = Convert.ToInt32(prim.Color.A); - row["PayPrice"] = prim.PayPrice[0]; - row["PayButton1"] = prim.PayPrice[1]; - row["PayButton2"] = prim.PayPrice[2]; - row["PayButton3"] = prim.PayPrice[3]; - row["PayButton4"] = prim.PayPrice[4]; - - - row["TextureAnimation"] = Convert.ToBase64String(prim.TextureAnimation); - row["ParticleSystem"] = Convert.ToBase64String(prim.ParticleSystem); - - row["OmegaX"] = prim.AngularVelocity.X; - row["OmegaY"] = prim.AngularVelocity.Y; - row["OmegaZ"] = prim.AngularVelocity.Z; - - row["CameraEyeOffsetX"] = prim.GetCameraEyeOffset().X; - row["CameraEyeOffsetY"] = prim.GetCameraEyeOffset().Y; - row["CameraEyeOffsetZ"] = prim.GetCameraEyeOffset().Z; - - row["CameraAtOffsetX"] = prim.GetCameraAtOffset().X; - row["CameraAtOffsetY"] = prim.GetCameraAtOffset().Y; - row["CameraAtOffsetZ"] = prim.GetCameraAtOffset().Z; - - - if ((prim.SoundFlags & 1) != 0) // Looped - { - row["LoopedSound"] = prim.Sound.ToString(); - row["LoopedSoundGain"] = prim.SoundGain; - } - else - { - row["LoopedSound"] = UUID.Zero.ToString(); - row["LoopedSoundGain"] = 0.0f; - } - - if (prim.GetForceMouselook()) - row["ForceMouselook"] = 1; - else - row["ForceMouselook"] = 0; - - row["ScriptAccessPin"] = prim.ScriptAccessPin; - - if (prim.AllowedDrop) - row["AllowedDrop"] = 1; - else - row["AllowedDrop"] = 0; - - if (prim.DIE_AT_EDGE) - row["DieAtEdge"] = 1; - else - row["DieAtEdge"] = 0; - - row["SalePrice"] = prim.SalePrice; - row["SaleType"] = Convert.ToInt16(prim.ObjectSaleType); - - // click action - row["ClickAction"] = prim.ClickAction; - - row["SalePrice"] = prim.SalePrice; - row["Material"] = prim.Material; - - row["CollisionSound"] = prim.CollisionSound.ToString(); - row["CollisionSoundVolume"] = prim.CollisionSoundVolume; - if (prim.VolumeDetectActive) - row["VolumeDetect"] = 1; - else - row["VolumeDetect"] = 0; - - } - - /// - /// - /// - /// - /// - private static void fillItemRow(DataRow row, TaskInventoryItem taskItem) - { - row["itemID"] = taskItem.ItemID.ToString(); - row["primID"] = taskItem.ParentPartID.ToString(); - row["assetID"] = taskItem.AssetID.ToString(); - row["parentFolderID"] = taskItem.ParentID.ToString(); - - row["invType"] = taskItem.InvType; - row["assetType"] = taskItem.Type; - - row["name"] = taskItem.Name; - row["description"] = taskItem.Description; - row["creationDate"] = taskItem.CreationDate; - row["creatorID"] = taskItem.CreatorIdentification.ToString(); - row["ownerID"] = taskItem.OwnerID.ToString(); - row["lastOwnerID"] = taskItem.LastOwnerID.ToString(); - row["groupID"] = taskItem.GroupID.ToString(); - row["nextPermissions"] = taskItem.NextPermissions; - row["currentPermissions"] = taskItem.CurrentPermissions; - row["basePermissions"] = taskItem.BasePermissions; - row["everyonePermissions"] = taskItem.EveryonePermissions; - row["groupPermissions"] = taskItem.GroupPermissions; - row["flags"] = taskItem.Flags; - } - - /// - /// - /// - /// - /// - /// - private static void fillLandRow(DataRow row, LandData land, UUID regionUUID) - { - row["UUID"] = land.GlobalID.ToString(); - row["RegionUUID"] = regionUUID.ToString(); - row["LocalLandID"] = land.LocalID; - - // Bitmap is a byte[512] - row["Bitmap"] = land.Bitmap; - - row["Name"] = land.Name; - row["Desc"] = land.Description; - row["OwnerUUID"] = land.OwnerID.ToString(); - row["IsGroupOwned"] = land.IsGroupOwned; - row["Area"] = land.Area; - row["AuctionID"] = land.AuctionID; //Unemplemented - row["Category"] = land.Category; //Enum OpenMetaverse.Parcel.ParcelCategory - row["ClaimDate"] = land.ClaimDate; - row["ClaimPrice"] = land.ClaimPrice; - row["GroupUUID"] = land.GroupID.ToString(); - row["SalePrice"] = land.SalePrice; - row["LandStatus"] = land.Status; //Enum. OpenMetaverse.Parcel.ParcelStatus - row["LandFlags"] = land.Flags; - row["LandingType"] = land.LandingType; - row["MediaAutoScale"] = land.MediaAutoScale; - row["MediaTextureUUID"] = land.MediaID.ToString(); - row["MediaURL"] = land.MediaURL; - row["MusicURL"] = land.MusicURL; - row["PassHours"] = land.PassHours; - row["PassPrice"] = land.PassPrice; - row["SnapshotUUID"] = land.SnapshotID.ToString(); - row["UserLocationX"] = land.UserLocation.X; - row["UserLocationY"] = land.UserLocation.Y; - row["UserLocationZ"] = land.UserLocation.Z; - row["UserLookAtX"] = land.UserLookAt.X; - row["UserLookAtY"] = land.UserLookAt.Y; - row["UserLookAtZ"] = land.UserLookAt.Z; - row["AuthbuyerID"] = land.AuthBuyerID.ToString(); - row["OtherCleanTime"] = land.OtherCleanTime; - } - - /// - /// - /// - /// - /// - /// - private static void fillLandAccessRow(DataRow row, ParcelManager.ParcelAccessEntry entry, UUID parcelID) - { - row["LandUUID"] = parcelID.ToString(); - row["AccessUUID"] = entry.AgentID.ToString(); - row["Flags"] = entry.Flags; - } - - private static void fillRegionSettingsRow(DataRow row, RegionSettings settings) - { - row["regionUUID"] = settings.RegionUUID.ToString(); - row["block_terraform"] = settings.BlockTerraform; - row["block_fly"] = settings.BlockFly; - row["allow_damage"] = settings.AllowDamage; - row["restrict_pushing"] = settings.RestrictPushing; - row["allow_land_resell"] = settings.AllowLandResell; - row["allow_land_join_divide"] = settings.AllowLandJoinDivide; - row["block_show_in_search"] = settings.BlockShowInSearch; - row["agent_limit"] = settings.AgentLimit; - row["object_bonus"] = settings.ObjectBonus; - row["maturity"] = settings.Maturity; - row["disable_scripts"] = settings.DisableScripts; - row["disable_collisions"] = settings.DisableCollisions; - row["disable_physics"] = settings.DisablePhysics; - row["terrain_texture_1"] = settings.TerrainTexture1.ToString(); - row["terrain_texture_2"] = settings.TerrainTexture2.ToString(); - row["terrain_texture_3"] = settings.TerrainTexture3.ToString(); - row["terrain_texture_4"] = settings.TerrainTexture4.ToString(); - row["elevation_1_nw"] = settings.Elevation1NW; - row["elevation_2_nw"] = settings.Elevation2NW; - row["elevation_1_ne"] = settings.Elevation1NE; - row["elevation_2_ne"] = settings.Elevation2NE; - row["elevation_1_se"] = settings.Elevation1SE; - row["elevation_2_se"] = settings.Elevation2SE; - row["elevation_1_sw"] = settings.Elevation1SW; - row["elevation_2_sw"] = settings.Elevation2SW; - row["water_height"] = settings.WaterHeight; - row["terrain_raise_limit"] = settings.TerrainRaiseLimit; - row["terrain_lower_limit"] = settings.TerrainLowerLimit; - row["use_estate_sun"] = settings.UseEstateSun; - row["Sandbox"] = settings.Sandbox; // database uses upper case S for sandbox - row["sunvectorx"] = settings.SunVector.X; - row["sunvectory"] = settings.SunVector.Y; - row["sunvectorz"] = settings.SunVector.Z; - row["fixed_sun"] = settings.FixedSun; - row["sun_position"] = settings.SunPosition; - row["covenant"] = settings.Covenant.ToString(); - } - - /// - /// - /// - /// - /// - private PrimitiveBaseShape buildShape(DataRow row) - { - PrimitiveBaseShape s = new PrimitiveBaseShape(); - s.Scale = new Vector3( - Convert.ToSingle(row["ScaleX"]), - Convert.ToSingle(row["ScaleY"]), - Convert.ToSingle(row["ScaleZ"]) - ); - // paths - s.PCode = Convert.ToByte(row["PCode"]); - s.PathBegin = Convert.ToUInt16(row["PathBegin"]); - s.PathEnd = Convert.ToUInt16(row["PathEnd"]); - s.PathScaleX = Convert.ToByte(row["PathScaleX"]); - s.PathScaleY = Convert.ToByte(row["PathScaleY"]); - s.PathShearX = Convert.ToByte(row["PathShearX"]); - s.PathShearY = Convert.ToByte(row["PathShearY"]); - s.PathSkew = Convert.ToSByte(row["PathSkew"]); - s.PathCurve = Convert.ToByte(row["PathCurve"]); - s.PathRadiusOffset = Convert.ToSByte(row["PathRadiusOffset"]); - s.PathRevolutions = Convert.ToByte(row["PathRevolutions"]); - s.PathTaperX = Convert.ToSByte(row["PathTaperX"]); - s.PathTaperY = Convert.ToSByte(row["PathTaperY"]); - s.PathTwist = Convert.ToSByte(row["PathTwist"]); - s.PathTwistBegin = Convert.ToSByte(row["PathTwistBegin"]); - // profile - s.ProfileBegin = Convert.ToUInt16(row["ProfileBegin"]); - s.ProfileEnd = Convert.ToUInt16(row["ProfileEnd"]); - s.ProfileCurve = Convert.ToByte(row["ProfileCurve"]); - s.ProfileHollow = Convert.ToUInt16(row["ProfileHollow"]); - s.State = Convert.ToByte(row["State"]); - - byte[] textureEntry = (byte[])row["Texture"]; - s.TextureEntry = textureEntry; - - s.ExtraParams = (byte[]) row["ExtraParams"]; - return s; - } - - /// - /// - /// - /// - /// - private static void fillShapeRow(DataRow row, SceneObjectPart prim) - { - PrimitiveBaseShape s = prim.Shape; - row["UUID"] = prim.UUID.ToString(); - // shape is an enum - row["Shape"] = 0; - // vectors - row["ScaleX"] = s.Scale.X; - row["ScaleY"] = s.Scale.Y; - row["ScaleZ"] = s.Scale.Z; - // paths - row["PCode"] = s.PCode; - row["PathBegin"] = s.PathBegin; - row["PathEnd"] = s.PathEnd; - row["PathScaleX"] = s.PathScaleX; - row["PathScaleY"] = s.PathScaleY; - row["PathShearX"] = s.PathShearX; - row["PathShearY"] = s.PathShearY; - row["PathSkew"] = s.PathSkew; - row["PathCurve"] = s.PathCurve; - row["PathRadiusOffset"] = s.PathRadiusOffset; - row["PathRevolutions"] = s.PathRevolutions; - row["PathTaperX"] = s.PathTaperX; - row["PathTaperY"] = s.PathTaperY; - row["PathTwist"] = s.PathTwist; - row["PathTwistBegin"] = s.PathTwistBegin; - // profile - row["ProfileBegin"] = s.ProfileBegin; - row["ProfileEnd"] = s.ProfileEnd; - row["ProfileCurve"] = s.ProfileCurve; - row["ProfileHollow"] = s.ProfileHollow; - row["State"] = s.State; - - row["Texture"] = s.TextureEntry; - row["ExtraParams"] = s.ExtraParams; - } - - /// - /// - /// - /// - /// - /// - private void addPrim(SceneObjectPart prim, UUID sceneGroupID, UUID regionUUID) - { - - DataTable prims = ds.Tables["prims"]; - DataTable shapes = ds.Tables["primshapes"]; - - DataRow primRow = prims.Rows.Find(prim.UUID.ToString()); - if (primRow == null) - { - primRow = prims.NewRow(); - fillPrimRow(primRow, prim, sceneGroupID, regionUUID); - prims.Rows.Add(primRow); - } - else - { - fillPrimRow(primRow, prim, sceneGroupID, regionUUID); - } - - DataRow shapeRow = shapes.Rows.Find(prim.UUID.ToString()); - if (shapeRow == null) - { - shapeRow = shapes.NewRow(); - fillShapeRow(shapeRow, prim); - shapes.Rows.Add(shapeRow); - } - else - { - fillShapeRow(shapeRow, prim); - } - } - - /// - /// - /// - /// - public void StorePrimInventory(UUID primID, ICollection items) - { - m_log.InfoFormat("[REGION DB]: Entered StorePrimInventory with prim ID {0}", primID); - - DataTable dbItems = ds.Tables["primitems"]; - - // For now, we're just going to crudely remove all the previous inventory items - // no matter whether they have changed or not, and replace them with the current set. - lock (ds) - { - RemoveItems(primID); - - // repalce with current inventory details - foreach (TaskInventoryItem newItem in items) - { -// m_log.InfoFormat( -// "[DATASTORE]: ", -// "Adding item {0}, {1} to prim ID {2}", -// newItem.Name, newItem.ItemID, newItem.ParentPartID); - - DataRow newItemRow = dbItems.NewRow(); - fillItemRow(newItemRow, newItem); - dbItems.Rows.Add(newItemRow); - } - } - - Commit(); - } - - /*********************************************************************** - * - * SQL Statement Creation Functions - * - * These functions create SQL statements for update, insert, and create. - * They can probably be factored later to have a db independant - * portion and a db specific portion - * - **********************************************************************/ - - /// - /// Create an insert command - /// - /// table name - /// data table - /// the created command - /// - /// This is subtle enough to deserve some commentary. - /// Instead of doing *lots* and *lots of hardcoded strings - /// for database definitions we'll use the fact that - /// realistically all insert statements look like "insert - /// into A(b, c) values(:b, :c) on the parameterized query - /// front. If we just have a list of b, c, etc... we can - /// generate these strings instead of typing them out. - /// - private static SqliteCommand createInsertCommand(string table, DataTable dt) - { - string[] cols = new string[dt.Columns.Count]; - for (int i = 0; i < dt.Columns.Count; i++) - { - DataColumn col = dt.Columns[i]; - cols[i] = col.ColumnName; - } - - string sql = "insert into " + table + "("; - sql += String.Join(", ", cols); - // important, the first ':' needs to be here, the rest get added in the join - sql += ") values (:"; - sql += String.Join(", :", cols); - sql += ")"; - SqliteCommand cmd = new SqliteCommand(sql); - - // this provides the binding for all our parameters, so - // much less code than it used to be - foreach (DataColumn col in dt.Columns) - { - cmd.Parameters.Add(createSqliteParameter(col.ColumnName, col.DataType)); - } - return cmd; - } - - - /// - /// create an update command - /// - /// table name - /// - /// - /// the created command - private static SqliteCommand createUpdateCommand(string table, string pk, DataTable dt) - { - string sql = "update " + table + " set "; - string subsql = String.Empty; - foreach (DataColumn col in dt.Columns) - { - if (subsql.Length > 0) - { - // a map function would rock so much here - subsql += ", "; - } - subsql += col.ColumnName + "= :" + col.ColumnName; - } - sql += subsql; - sql += " where " + pk; - SqliteCommand cmd = new SqliteCommand(sql); - - // this provides the binding for all our parameters, so - // much less code than it used to be - - foreach (DataColumn col in dt.Columns) - { - cmd.Parameters.Add(createSqliteParameter(col.ColumnName, col.DataType)); - } - return cmd; - } - - /// - /// create an update command - /// - /// table name - /// - /// - /// the created command - private static SqliteCommand createUpdateCommand(string table, string pk1, string pk2, DataTable dt) - { - string sql = "update " + table + " set "; - string subsql = String.Empty; - foreach (DataColumn col in dt.Columns) - { - if (subsql.Length > 0) - { - // a map function would rock so much here - subsql += ", "; - } - subsql += col.ColumnName + "= :" + col.ColumnName; - } - sql += subsql; - sql += " where " + pk1 + " and " + pk2; - SqliteCommand cmd = new SqliteCommand(sql); - - // this provides the binding for all our parameters, so - // much less code than it used to be - - foreach (DataColumn col in dt.Columns) - { - cmd.Parameters.Add(createSqliteParameter(col.ColumnName, col.DataType)); - } - return cmd; - } - - /// - /// - /// - /// Data Table - /// - // private static string defineTable(DataTable dt) - // { - // string sql = "create table " + dt.TableName + "("; - // string subsql = String.Empty; - // foreach (DataColumn col in dt.Columns) - // { - // if (subsql.Length > 0) - // { - // // a map function would rock so much here - // subsql += ",\n"; - // } - // subsql += col.ColumnName + " " + sqliteType(col.DataType); - // if (dt.PrimaryKey.Length > 0 && col == dt.PrimaryKey[0]) - // { - // subsql += " primary key"; - // } - // } - // sql += subsql; - // sql += ")"; - // return sql; - // } - - /*********************************************************************** - * - * Database Binding functions - * - * These will be db specific due to typing, and minor differences - * in databases. - * - **********************************************************************/ - - /// - /// This is a convenience function that collapses 5 repetitive - /// lines for defining SqliteParameters to 2 parameters: - /// column name and database type. - /// - /// It assumes certain conventions like :param as the param - /// name to replace in parametrized queries, and that source - /// version is always current version, both of which are fine - /// for us. - /// - ///a built sqlite parameter - private static SqliteParameter createSqliteParameter(string name, Type type) - { - SqliteParameter param = new SqliteParameter(); - param.ParameterName = ":" + name; - param.DbType = dbtypeFromType(type); - param.SourceColumn = name; - param.SourceVersion = DataRowVersion.Current; - return param; - } - - /// - /// - /// - /// - /// - private void setupPrimCommands(SqliteDataAdapter da, SqliteConnection conn) - { - da.InsertCommand = createInsertCommand("prims", ds.Tables["prims"]); - da.InsertCommand.Connection = conn; - - da.UpdateCommand = createUpdateCommand("prims", "UUID=:UUID", ds.Tables["prims"]); - da.UpdateCommand.Connection = conn; - - SqliteCommand delete = new SqliteCommand("delete from prims where UUID = :UUID"); - delete.Parameters.Add(createSqliteParameter("UUID", typeof (String))); - delete.Connection = conn; - da.DeleteCommand = delete; - } - - /// - /// - /// - /// - /// - private void setupItemsCommands(SqliteDataAdapter da, SqliteConnection conn) - { - da.InsertCommand = createInsertCommand("primitems", ds.Tables["primitems"]); - da.InsertCommand.Connection = conn; - - da.UpdateCommand = createUpdateCommand("primitems", "itemID = :itemID", ds.Tables["primitems"]); - da.UpdateCommand.Connection = conn; - - SqliteCommand delete = new SqliteCommand("delete from primitems where itemID = :itemID"); - delete.Parameters.Add(createSqliteParameter("itemID", typeof (String))); - delete.Connection = conn; - da.DeleteCommand = delete; - } - - /// - /// - /// - /// - /// - private void setupTerrainCommands(SqliteDataAdapter da, SqliteConnection conn) - { - da.InsertCommand = createInsertCommand("terrain", ds.Tables["terrain"]); - da.InsertCommand.Connection = conn; - } - - /// - /// - /// - /// - /// - private void setupLandCommands(SqliteDataAdapter da, SqliteConnection conn) - { - da.InsertCommand = createInsertCommand("land", ds.Tables["land"]); - da.InsertCommand.Connection = conn; - - da.UpdateCommand = createUpdateCommand("land", "UUID=:UUID", ds.Tables["land"]); - da.UpdateCommand.Connection = conn; - - SqliteCommand delete = new SqliteCommand("delete from land where UUID=:UUID"); - delete.Parameters.Add(createSqliteParameter("UUID", typeof(String))); - da.DeleteCommand = delete; - da.DeleteCommand.Connection = conn; - } - - /// - /// - /// - /// - /// - private void setupLandAccessCommands(SqliteDataAdapter da, SqliteConnection conn) - { - da.InsertCommand = createInsertCommand("landaccesslist", ds.Tables["landaccesslist"]); - da.InsertCommand.Connection = conn; - - da.UpdateCommand = createUpdateCommand("landaccesslist", "LandUUID=:landUUID", "AccessUUID=:AccessUUID", ds.Tables["landaccesslist"]); - da.UpdateCommand.Connection = conn; - - SqliteCommand delete = new SqliteCommand("delete from landaccesslist where LandUUID= :LandUUID and AccessUUID= :AccessUUID"); - delete.Parameters.Add(createSqliteParameter("LandUUID", typeof(String))); - delete.Parameters.Add(createSqliteParameter("AccessUUID", typeof(String))); - da.DeleteCommand = delete; - da.DeleteCommand.Connection = conn; - - } - - private void setupRegionSettingsCommands(SqliteDataAdapter da, SqliteConnection conn) - { - da.InsertCommand = createInsertCommand("regionsettings", ds.Tables["regionsettings"]); - da.InsertCommand.Connection = conn; - da.UpdateCommand = createUpdateCommand("regionsettings", "regionUUID=:regionUUID", ds.Tables["regionsettings"]); - da.UpdateCommand.Connection = conn; - } - - /// - /// - /// - /// - /// - private void setupShapeCommands(SqliteDataAdapter da, SqliteConnection conn) - { - da.InsertCommand = createInsertCommand("primshapes", ds.Tables["primshapes"]); - da.InsertCommand.Connection = conn; - - da.UpdateCommand = createUpdateCommand("primshapes", "UUID=:UUID", ds.Tables["primshapes"]); - da.UpdateCommand.Connection = conn; - - SqliteCommand delete = new SqliteCommand("delete from primshapes where UUID = :UUID"); - delete.Parameters.Add(createSqliteParameter("UUID", typeof (String))); - delete.Connection = conn; - da.DeleteCommand = delete; - } - - /*********************************************************************** - * - * Type conversion functions - * - **********************************************************************/ - - /// - /// Type conversion function - /// - /// - /// - private static DbType dbtypeFromType(Type type) - { - if (type == typeof (String)) - { - return DbType.String; - } - else if (type == typeof (Int32)) - { - return DbType.Int32; - } - else if (type == typeof (Double)) - { - return DbType.Double; - } - else if (type == typeof (Byte)) - { - return DbType.Byte; - } - else if (type == typeof (Double)) - { - return DbType.Double; - } - else if (type == typeof (Byte[])) - { - return DbType.Binary; - } - else - { - return DbType.String; - } - } - - } -} diff --git a/OpenSim/Data/SQLiteLegacy/SQLiteUserAccountData.cs b/OpenSim/Data/SQLiteLegacy/SQLiteUserAccountData.cs deleted file mode 100644 index 27553c61eb..0000000000 --- a/OpenSim/Data/SQLiteLegacy/SQLiteUserAccountData.cs +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Data; -using OpenMetaverse; -using OpenSim.Framework; -using Mono.Data.SqliteClient; - -namespace OpenSim.Data.SQLiteLegacy -{ - public class SQLiteUserAccountData : SQLiteGenericTableHandler, IUserAccountData - { - public SQLiteUserAccountData(string connectionString, string realm) - : base(connectionString, realm, "UserAccount") - { - } - - public UserAccountData[] GetUsers(UUID scopeID, string query) - { - string[] words = query.Split(new char[] {' '}); - - for (int i = 0 ; i < words.Length ; i++) - { - if (words[i].Length < 3) - { - if (i != words.Length - 1) - Array.Copy(words, i + 1, words, i, words.Length - i - 1); - Array.Resize(ref words, words.Length - 1); - } - } - - if (words.Length == 0) - return new UserAccountData[0]; - - if (words.Length > 2) - return new UserAccountData[0]; - - SqliteCommand cmd = new SqliteCommand(); - - if (words.Length == 1) - { - cmd.CommandText = String.Format("select * from {0} where (ScopeID='{1}' or ScopeID='00000000-0000-0000-0000-000000000000') and (FirstName like '{2}%' or LastName like '{2}%')", - m_Realm, scopeID.ToString(), words[0]); - } - else - { - cmd.CommandText = String.Format("select * from {0} where (ScopeID='{1}' or ScopeID='00000000-0000-0000-0000-000000000000') and (FirstName like '{2}%' or LastName like '{3}%')", - m_Realm, scopeID.ToString(), words[0], words[1]); - } - - return DoQuery(cmd); - } - } -} diff --git a/OpenSim/Data/SQLiteLegacy/SQLiteUtils.cs b/OpenSim/Data/SQLiteLegacy/SQLiteUtils.cs deleted file mode 100644 index 095a26251f..0000000000 --- a/OpenSim/Data/SQLiteLegacy/SQLiteUtils.cs +++ /dev/null @@ -1,307 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Data; -using Mono.Data.SqliteClient; - -namespace OpenSim.Data.SQLiteLegacy -{ - /// - /// A base class for methods needed by all SQLite database classes - /// - public class SQLiteUtil - { - /*********************************************************************** - * - * Database Definition Helper Functions - * - * This should be db agnostic as we define them in ADO.NET terms - * - **********************************************************************/ - - /// - /// - /// - /// - /// - /// - public static void createCol(DataTable dt, string name, Type type) - { - DataColumn col = new DataColumn(name, type); - dt.Columns.Add(col); - } - - /*********************************************************************** - * - * SQL Statement Creation Functions - * - * These functions create SQL statements for update, insert, and create. - * They can probably be factored later to have a db independant - * portion and a db specific portion - * - **********************************************************************/ - - /// - /// Create an insert command - /// - /// table name - /// data table - /// the created command - /// - /// This is subtle enough to deserve some commentary. - /// Instead of doing *lots* and *lots of hardcoded strings - /// for database definitions we'll use the fact that - /// realistically all insert statements look like "insert - /// into A(b, c) values(:b, :c) on the parameterized query - /// front. If we just have a list of b, c, etc... we can - /// generate these strings instead of typing them out. - /// - public static SqliteCommand createInsertCommand(string table, DataTable dt) - { - - string[] cols = new string[dt.Columns.Count]; - for (int i = 0; i < dt.Columns.Count; i++) - { - DataColumn col = dt.Columns[i]; - cols[i] = col.ColumnName; - } - - string sql = "insert into " + table + "("; - sql += String.Join(", ", cols); - // important, the first ':' needs to be here, the rest get added in the join - sql += ") values (:"; - sql += String.Join(", :", cols); - sql += ")"; - SqliteCommand cmd = new SqliteCommand(sql); - - // this provides the binding for all our parameters, so - // much less code than it used to be - foreach (DataColumn col in dt.Columns) - { - cmd.Parameters.Add(createSqliteParameter(col.ColumnName, col.DataType)); - } - return cmd; - } - - /// - /// create an update command - /// - /// table name - /// - /// - /// the created command - public static SqliteCommand createUpdateCommand(string table, string pk, DataTable dt) - { - string sql = "update " + table + " set "; - string subsql = String.Empty; - foreach (DataColumn col in dt.Columns) - { - if (subsql.Length > 0) - { - // a map function would rock so much here - subsql += ", "; - } - subsql += col.ColumnName + "= :" + col.ColumnName; - } - sql += subsql; - sql += " where " + pk; - SqliteCommand cmd = new SqliteCommand(sql); - - // this provides the binding for all our parameters, so - // much less code than it used to be - - foreach (DataColumn col in dt.Columns) - { - cmd.Parameters.Add(createSqliteParameter(col.ColumnName, col.DataType)); - } - return cmd; - } - - /// - /// - /// - /// Data Table - /// - public static string defineTable(DataTable dt) - { - string sql = "create table " + dt.TableName + "("; - string subsql = String.Empty; - foreach (DataColumn col in dt.Columns) - { - if (subsql.Length > 0) - { - // a map function would rock so much here - subsql += ",\n"; - } - subsql += col.ColumnName + " " + sqliteType(col.DataType); - if (dt.PrimaryKey.Length > 0) - { - if (col == dt.PrimaryKey[0]) - { - subsql += " primary key"; - } - } - } - sql += subsql; - sql += ")"; - return sql; - } - - /*********************************************************************** - * - * Database Binding functions - * - * These will be db specific due to typing, and minor differences - * in databases. - * - **********************************************************************/ - - /// - /// - /// This is a convenience function that collapses 5 repetitive - /// lines for defining SqliteParameters to 2 parameters: - /// column name and database type. - /// - /// - /// - /// It assumes certain conventions like :param as the param - /// name to replace in parametrized queries, and that source - /// version is always current version, both of which are fine - /// for us. - /// - /// - /// - /// - ///a built sqlite parameter - public static SqliteParameter createSqliteParameter(string name, Type type) - { - SqliteParameter param = new SqliteParameter(); - param.ParameterName = ":" + name; - param.DbType = dbtypeFromType(type); - param.SourceColumn = name; - param.SourceVersion = DataRowVersion.Current; - return param; - } - - /*********************************************************************** - * - * Type conversion functions - * - **********************************************************************/ - - /// - /// Type conversion function - /// - /// a type - /// a DbType - public static DbType dbtypeFromType(Type type) - { - if (type == typeof (String)) - { - return DbType.String; - } - else if (type == typeof (Int32)) - { - return DbType.Int32; - } - else if (type == typeof (UInt32)) - { - return DbType.UInt32; - } - else if (type == typeof (Int64)) - { - return DbType.Int64; - } - else if (type == typeof (UInt64)) - { - return DbType.UInt64; - } - else if (type == typeof (Double)) - { - return DbType.Double; - } - else if (type == typeof (Boolean)) - { - return DbType.Boolean; - } - else if (type == typeof (Byte[])) - { - return DbType.Binary; - } - else - { - return DbType.String; - } - } - - /// - /// - /// a Type - /// a string - /// this is something we'll need to implement for each db slightly differently. - public static string sqliteType(Type type) - { - if (type == typeof (String)) - { - return "varchar(255)"; - } - else if (type == typeof (Int32)) - { - return "integer"; - } - else if (type == typeof (UInt32)) - { - return "integer"; - } - else if (type == typeof (Int64)) - { - return "varchar(255)"; - } - else if (type == typeof (UInt64)) - { - return "varchar(255)"; - } - else if (type == typeof (Double)) - { - return "float"; - } - else if (type == typeof (Boolean)) - { - return "integer"; - } - else if (type == typeof (Byte[])) - { - return "blob"; - } - else - { - return "string"; - } - } - } -} diff --git a/OpenSim/Data/SQLiteLegacy/SQLiteXInventoryData.cs b/OpenSim/Data/SQLiteLegacy/SQLiteXInventoryData.cs deleted file mode 100644 index 5422cbf6ad..0000000000 --- a/OpenSim/Data/SQLiteLegacy/SQLiteXInventoryData.cs +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Data; -using System.Reflection; -using System.Collections.Generic; -using Mono.Data.SqliteClient; -using log4net; -using OpenMetaverse; -using OpenSim.Framework; - -namespace OpenSim.Data.SQLiteLegacy -{ - /// - /// A MySQL Interface for the Asset Server - /// - public class SQLiteXInventoryData : IXInventoryData - { -// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private SQLiteGenericTableHandler m_Folders; - private SqliteItemHandler m_Items; - - public SQLiteXInventoryData(string conn, string realm) - { - m_Folders = new SQLiteGenericTableHandler( - conn, "inventoryfolders", "InventoryStore"); - m_Items = new SqliteItemHandler( - conn, "inventoryitems", String.Empty); - } - - public XInventoryFolder[] GetFolders(string[] fields, string[] vals) - { - return m_Folders.Get(fields, vals); - } - - public XInventoryItem[] GetItems(string[] fields, string[] vals) - { - return m_Items.Get(fields, vals); - } - - public bool StoreFolder(XInventoryFolder folder) - { - return m_Folders.Store(folder); - } - - public bool StoreItem(XInventoryItem item) - { - return m_Items.Store(item); - } - - public bool DeleteFolders(string field, string val) - { - return m_Folders.Delete(field, val); - } - - public bool DeleteItems(string field, string val) - { - return m_Items.Delete(field, val); - } - - public bool MoveItem(string id, string newParent) - { - return m_Items.MoveItem(id, newParent); - } - - public XInventoryItem[] GetActiveGestures(UUID principalID) - { - return m_Items.GetActiveGestures(principalID); - } - - public int GetAssetPermissions(UUID principalID, UUID assetID) - { - return m_Items.GetAssetPermissions(principalID, assetID); - } - } - - public class SqliteItemHandler : SQLiteGenericTableHandler - { - public SqliteItemHandler(string c, string t, string m) : - base(c, t, m) - { - } - - public bool MoveItem(string id, string newParent) - { - SqliteCommand cmd = new SqliteCommand(); - - cmd.CommandText = String.Format("update {0} set parentFolderID = :ParentFolderID where inventoryID = :InventoryID", m_Realm); - cmd.Parameters.Add(new SqliteParameter(":ParentFolderID", newParent)); - cmd.Parameters.Add(new SqliteParameter(":InventoryID", id)); - - return ExecuteNonQuery(cmd, m_Connection) == 0 ? false : true; - } - - public XInventoryItem[] GetActiveGestures(UUID principalID) - { - SqliteCommand cmd = new SqliteCommand(); - cmd.CommandText = String.Format("select * from inventoryitems where avatarId = :uuid and assetType = :type and flags = 1", m_Realm); - - cmd.Parameters.Add(new SqliteParameter(":uuid", principalID.ToString())); - cmd.Parameters.Add(new SqliteParameter(":type", (int)AssetType.Gesture)); - - return DoQuery(cmd); - } - - public int GetAssetPermissions(UUID principalID, UUID assetID) - { - SqliteCommand cmd = new SqliteCommand(); - - cmd.CommandText = String.Format("select inventoryCurrentPermissions from inventoryitems where avatarID = :PrincipalID and assetID = :AssetID", m_Realm); - cmd.Parameters.Add(new SqliteParameter(":PrincipalID", principalID.ToString())); - cmd.Parameters.Add(new SqliteParameter(":AssetID", assetID.ToString())); - - IDataReader reader = ExecuteReader(cmd, m_Connection); - - int perms = 0; - - while (reader.Read()) - { - perms |= Convert.ToInt32(reader["inventoryCurrentPermissions"]); - } - - reader.Close(); - CloseCommand(cmd); - - return perms; - } - } -} diff --git a/bin/config-include/GridCommon.ini.example b/bin/config-include/GridCommon.ini.example index a6fe4b1092..bc8bc0fdab 100644 --- a/bin/config-include/GridCommon.ini.example +++ b/bin/config-include/GridCommon.ini.example @@ -6,11 +6,6 @@ ; SQLite Include-Storage = "config-include/storage/SQLiteStandalone.ini"; - ; Unfortunately the current SQLite database plugin is not compatible with Mac OSX. You can still use the older - ; legacy sqlite library if you are using Mono 2.4. Please see the notes in OpenSim.ini (search for sqlite) - ; for more details - ;Include-Storage = "config-include/storage/SQLiteLegacyStandalone.ini"; - ; MySql ; Uncomment these lines if you want to use mysql storage ; Change the connection string to your db details diff --git a/bin/config-include/StandaloneCommon.ini.example b/bin/config-include/StandaloneCommon.ini.example index 995a33e8e1..d6f15bbf3b 100644 --- a/bin/config-include/StandaloneCommon.ini.example +++ b/bin/config-include/StandaloneCommon.ini.example @@ -8,11 +8,6 @@ ; SQLite Include-Storage = "config-include/storage/SQLiteStandalone.ini"; - ; Unfortunately the current SQLite database plugin is not compatible with Mac OSX. You can still use the older - ; legacy sqlite library if you are using Mono 2.4. Please see the notes in OpenSim.ini (search for sqlite) - ; for more details - ;Include-Storage = "config-include/storage/SQLiteLegacyStandalone.ini"; - ; MySql ; Uncomment these lines if you want to use mysql storage ; Change the connection string to your db details diff --git a/bin/config-include/storage/SQLiteLegacyStandalone.ini b/bin/config-include/storage/SQLiteLegacyStandalone.ini deleted file mode 100644 index ffe9a70ca8..0000000000 --- a/bin/config-include/storage/SQLiteLegacyStandalone.ini +++ /dev/null @@ -1,20 +0,0 @@ -; These are the initialization settings for running OpenSim Standalone with an SQLite database - -[DatabaseService] - StorageProvider = "OpenSim.Data.SQLiteLegacy.dll" - ConnectionString = "URI=file:OpenSim.db,version=3,UseUTF16Encoding=True" - -[AssetService] - ConnectionString = "URI=file:Asset.db,version=3" - -[AvatarService] - ConnectionString = "URI=file:avatars.db,version=3" - -[AuthenticationService] - ConnectionString = "URI=file:auth.db,version=3" - -[UserAccountService] - ConnectionString = "URI=file:userprofiles.db,version=3" - -[FriendsService] - ConnectionString = "URI=file:friends.db,version=3" diff --git a/prebuild.xml b/prebuild.xml index c818908d80..870ebf300c 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -2096,44 +2096,6 @@ - - - - ../../../bin/ - - - - - ../../../bin/ - - - - ../../../bin/ - - - - - - - - - - - - - - - - - - - - - - - - - From 0ced677510b0d270506dce4e80fa906f2a8ea649 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 7 Apr 2011 23:22:19 +0100 Subject: [PATCH 049/138] Revert master version number to 0.7.1 for now to make merging easier. --- OpenSim/Framework/Servers/VersionInfo.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Framework/Servers/VersionInfo.cs b/OpenSim/Framework/Servers/VersionInfo.cs index 53a3f17b86..c9d4c93d49 100644 --- a/OpenSim/Framework/Servers/VersionInfo.cs +++ b/OpenSim/Framework/Servers/VersionInfo.cs @@ -29,7 +29,7 @@ namespace OpenSim { public class VersionInfo { - private const string VERSION_NUMBER = "0.7.2"; + private const string VERSION_NUMBER = "0.7.1"; private const Flavour VERSION_FLAVOUR = Flavour.Dev; public enum Flavour From 9ba787be67cc8066c05890f5bc56dfb575209b76 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 8 Apr 2011 00:33:33 +0100 Subject: [PATCH 050/138] Remove old SQLite library --- bin/System.Data.SQLite.dll | Bin 159232 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/System.Data.SQLite.dll diff --git a/bin/System.Data.SQLite.dll b/bin/System.Data.SQLite.dll deleted file mode 100644 index 66f38e723568a18cc1f13c0f7b8b94625413afb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159232 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 From d31175060f8133c42c84da5b8e701ff1fb16eed8 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 8 Apr 2011 00:42:35 +0100 Subject: [PATCH 051/138] trivial whitespace removal to trigger a panda rebuild --- OpenSim/Region/Application/Application.cs | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/OpenSim/Region/Application/Application.cs b/OpenSim/Region/Application/Application.cs index d120f03dc9..7e320e6798 100644 --- a/OpenSim/Region/Application/Application.cs +++ b/OpenSim/Region/Application/Application.cs @@ -250,9 +250,7 @@ namespace OpenSim m_saveCrashDumps = configSource.Configs["Startup"].GetBoolean("save_crashes", false); // load Crash directory config - m_crashDir = configSource.Configs["Startup"].GetString("crash_dir", m_crashDir); - - + m_crashDir = configSource.Configs["Startup"].GetString("crash_dir", m_crashDir); if (background) { @@ -260,15 +258,9 @@ namespace OpenSim m_sim.Startup(); } else - { - - - - + { m_sim = new OpenSim(configSource); - - - + m_sim.Startup(); while (true) From abea0c74c2b092d0474880a30433d9d0a2400aa8 Mon Sep 17 00:00:00 2001 From: Melanie Date: Fri, 8 Apr 2011 04:19:17 +0100 Subject: [PATCH 052/138] Add support for the new display name related functions in LSL. This does not implement the display names functionality as such, but it allows scripts that are display name aware to function as if the display name were implemented and set to the avatar name. --- .../Shared/Api/Implementation/LSL_Api.cs | 49 +++++++++++++++++++ .../Implementation/Plugins/SensorRepeat.cs | 26 ++++++++-- .../Shared/Api/Interface/ILSL_Api.cs | 4 ++ .../Shared/Api/Runtime/LSL_Constants.cs | 2 + .../Shared/Api/Runtime/LSL_Stub.cs | 20 ++++++++ 5 files changed, 97 insertions(+), 4 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index e5be641d26..c16a985564 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -10268,6 +10268,55 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api m_log.Info("LSL print():" + str); } } + + private string Name2Username(string name) + { + string[] parts = name.Split(new char[] {' '}); + if (parts.Length < 2) + return name.ToLower(); + if (parts[1] == "Resident") + return parts[0].ToLower(); + + return name.Replace(" ", ".").ToLower(); + } + + public LSL_String llGetUsername(string id) + { + return Name2Username(llKey2Name(id)); + } + + public LSL_String llRequestUsername(string id) + { + UUID rq = UUID.Random(); + + UUID tid = AsyncCommands. + DataserverPlugin.RegisterRequest(m_localID, + m_itemID, rq.ToString()); + + AsyncCommands. + DataserverPlugin.DataserverReply(rq.ToString(), Name2Username(llKey2Name(id))); + + return rq.ToString(); + } + + public LSL_String llGetDisplayName(string id) + { + return llKey2Name(id); + } + + public LSL_String llRequestDisplayName(string id) + { + UUID rq = UUID.Random(); + + UUID tid = AsyncCommands. + DataserverPlugin.RegisterRequest(m_localID, + m_itemID, rq.ToString()); + + AsyncCommands. + DataserverPlugin.DataserverReply(rq.ToString(), llKey2Name(id)); + + return rq.ToString(); + } } public class NotecardCache diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs index fefbb35760..47c7915a3e 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs @@ -50,6 +50,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins private Object SenseLock = new Object(); private const int AGENT = 1; + private const int AGENT_BY_USERNAME = 0x10; private const int ACTIVE = 2; private const int PASSIVE = 4; private const int SCRIPTED = 8; @@ -202,7 +203,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins List sensedEntities = new List(); // Is the sensor type is AGENT and not SCRIPTED then include agents - if ((ts.type & AGENT) != 0 && (ts.type & SCRIPTED) == 0) + if ((ts.type & (AGENT | AGENT_BY_USERNAME)) != 0 && (ts.type & SCRIPTED) == 0) { sensedEntities.AddRange(doAgentSensor(ts)); } @@ -493,9 +494,26 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins { ScenePresence sp; // Try lookup by name will return if/when found - if (!m_CmdManager.m_ScriptEngine.World.TryGetAvatarByName(ts.name, out sp)) - return sensedEntities; - senseEntity(sp); + if (((ts.type & AGENT) != 0) && m_CmdManager.m_ScriptEngine.World.TryGetAvatarByName(ts.name, out sp)) + senseEntity(sp); + if ((ts.type & AGENT_BY_USERNAME) != 0) + { + m_CmdManager.m_ScriptEngine.World.ForEachScenePresence( + delegate (ScenePresence ssp) + { + if (ssp.Lastname == "Resident") + { + if (ssp.Firstname.ToLower() == ts.name) + senseEntity(ssp); + return; + } + if (ssp.Name.Replace(" ", ".").ToLower() == ts.name) + senseEntity(ssp); + } + ); + } + + return sensedEntities; } else { diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs index bd6a094aa7..654ea8129a 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs @@ -209,6 +209,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces void llInstantMessage(string user, string message); LSL_String llIntegerToBase64(int number); LSL_String llKey2Name(string id); + LSL_String llGetUsername(string id); + LSL_String llRequestUsername(string id); + LSL_String llGetDisplayName(string id); + LSL_String llRequestDisplayName(string id); void llLinkParticleSystem(int linknum, LSL_List rules); LSL_String llList2CSV(LSL_List src); LSL_Float llList2Float(LSL_List src, int index); diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs index b3c4d95c48..9377cdafd8 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs @@ -50,6 +50,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase public const int STATUS_CAST_SHADOWS = 512; public const int AGENT = 1; + public const int AGENT_BY_LEGACY_NAME = 1; + public const int AGENT_BY_USERNAME = 0x10; public const int ACTIVE = 2; public const int PASSIVE = 4; public const int SCRIPTED = 8; diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs index 3b298615d0..303d75e36d 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs @@ -894,6 +894,26 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase return m_LSL_Functions.llKey2Name(id); } + public LSL_String llGetUsername(string id) + { + return m_LSL_Functions.llGetUsername(id); + } + + public LSL_String llRequestUsername(string id) + { + return m_LSL_Functions.llRequestUsername(id); + } + + public LSL_String llGetDisplayName(string id) + { + return m_LSL_Functions.llGetDisplayName(id); + } + + public LSL_String llRequestDisplayName(string id) + { + return m_LSL_Functions.llRequestDisplayName(id); + } + public void llLinkParticleSystem(int linknum, LSL_List rules) { m_LSL_Functions.llLinkParticleSystem(linknum, rules); From 2aa39847966fb2b5c53aee01e1477677c09d0f0a Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 8 Apr 2011 20:50:23 +0100 Subject: [PATCH 053/138] Update ODE for mac from source code in opensim-libs SVN library. This version is r1755 + patches as detailed in the svn logs. This brings it into line with the Windows and Linux libraries. This is a universal dylib with x86_64, i386 and ppc parts. However, even on a 64 bit Intel machine Mono can only P/INVOKE the i386 version right now. ppc is untested. The configuration used to compile was CFLAGS="-g -O2 -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch i386 -arch x86_64 -arch ppc" CXXFLAGS="-g -O2 -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch i386 -arch x86_64 -arch ppc" LDFLAGS="-arch i386 -arch x86_64 -arch ppc" ./configure --enable-old-trimesh --disable-asserts --enable-shared --disable-dependency-tracking --disable-demos --without-x --disable-demos --without-x is required to build ODE on Mac OS X CFLAGS, CXXFLAGS and --disable-dependency-tracking are necessary to build the universal dylib (some compilation lines use CFLAGS instead of CXXFLAGS) The other settings are tweaks for using ODE with OpenSim --- bin/libode.dylib | Bin 1024996 -> 2916380 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/bin/libode.dylib b/bin/libode.dylib index e81f9e4b0b87a090c9bd9c3f4abaccf0fe9eaa16..958d2021fb8f4456665a10772f836b027b30fdd5 100644 GIT binary patch literal 2916380 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

Mk>%yY>)72i*AE-~=HK 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

Qop-nLBb*U3E&6P}yokS)&+ixr0uwr{uC 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ØWKy4mlF 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

  • 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®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

    A51V4dI7hW#I#M$c|+ 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

    u{4;19*f~aGt|neb)g>v$u1jL{ng-%=Xip&_ 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

    &goZ`0LHXfcC6s6k_4qd0QCJ+n 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

    !x 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 $;|erNk}KBmDIn8aE_pe1aEIK(reL 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 z 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 KA10%%t^Whem@jq! From 707b6673c91733cd1298261f9f8150e7bc0c3970 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 9 Apr 2011 00:25:00 +0100 Subject: [PATCH 054/138] minor: remove mono compiler warnings --- OpenSim/Client/MXP/ClientStack/MXPClientView.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs index 93c6c98469..d1a0440524 100644 --- a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs +++ b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs @@ -66,8 +66,8 @@ namespace OpenSim.Client.MXP.ClientStack private readonly IScene m_scene; private readonly string m_firstName; private readonly string m_lastName; - private int m_objectsToSynchronize = 0; - private int m_objectsSynchronized = -1; +// private int m_objectsToSynchronize = 0; +// private int m_objectsSynchronized = -1; private Vector3 m_startPosition=new Vector3(128f, 128f, 128f); #endregion @@ -462,8 +462,8 @@ namespace OpenSim.Client.MXP.ClientStack public void MXPSendSynchronizationBegin(int objectCount) { - m_objectsToSynchronize = objectCount; - m_objectsSynchronized = 0; +// m_objectsToSynchronize = objectCount; +// m_objectsSynchronized = 0; SynchronizationBeginEventMessage synchronizationBeginEventMessage = new SynchronizationBeginEventMessage(); synchronizationBeginEventMessage.ObjectCount = (uint)objectCount; Session.Send(synchronizationBeginEventMessage); From 77cf9405de10f016d85d67b6016ed27d28ed898f Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Mon, 28 Mar 2011 10:00:53 -0700 Subject: [PATCH 055/138] Implements adaptive queue management and fair queueing for improved networking performance. Reprioritization algorithms need to be ported still. One is in place. --- .../ClientStack/LindenUDP/LLClientView.cs | 359 ++++++++++++------ .../Region/Framework/Scenes/Prioritizer.cs | 71 +++- 2 files changed, 307 insertions(+), 123 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 34d72ac69b..a3f2c15951 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -49,6 +49,8 @@ using Timer = System.Timers.Timer; using AssetLandmark = OpenSim.Framework.AssetLandmark; using Nini.Config; +using System.IO; + namespace OpenSim.Region.ClientStack.LindenUDP { public delegate bool PacketMethod(IClientAPI simClient, Packet packet); @@ -298,6 +300,77 @@ namespace OpenSim.Region.ClientStack.LindenUDP ///

    Used to adjust Sun Orbit values so Linden based viewers properly position sun private const float m_sunPainDaHalfOrbitalCutoff = 4.712388980384689858f; + // First log file or time has expired, start writing to a new log file +// +// ----------------------------------------------------------------- +// ----------------------------------------------------------------- +// THIS IS DEBUGGING CODE & SHOULD BE REMOVED +// ----------------------------------------------------------------- +// ----------------------------------------------------------------- + public class QueueLogger + { + public Int32 start = 0; + public StreamWriter Log = null; + private Dictionary m_idMap = new Dictionary(); + + public QueueLogger() + { + DateTime now = DateTime.Now; + String fname = String.Format("queue-{0}.log", now.ToString("yyyyMMddHHmmss")); + Log = new StreamWriter(fname); + + start = Util.EnvironmentTickCount(); + } + + public int LookupID(UUID uuid) + { + int localid; + if (! m_idMap.TryGetValue(uuid,out localid)) + { + localid = m_idMap.Count + 1; + m_idMap[uuid] = localid; + } + + return localid; + } + } + + public static QueueLogger QueueLog = null; + + // ----------------------------------------------------------------- + public void LogAvatarUpdateEvent(UUID client, UUID avatar, Int32 timeinqueue) + { + if (QueueLog == null) + QueueLog = new QueueLogger(); + + Int32 ticks = Util.EnvironmentTickCountSubtract(QueueLog.start); + lock(QueueLog) + { + int cid = QueueLog.LookupID(client); + int aid = QueueLog.LookupID(avatar); + QueueLog.Log.WriteLine("{0},AU,AV{1:D4},AV{2:D4},{3}",ticks,cid,aid,timeinqueue); + } + } + + // ----------------------------------------------------------------- + public void LogQueueProcessEvent(UUID client, PriorityQueue queue, uint maxup) + { + if (QueueLog == null) + QueueLog = new QueueLogger(); + + Int32 ticks = Util.EnvironmentTickCountSubtract(QueueLog.start); + lock(QueueLog) + { + int cid = QueueLog.LookupID(client); + QueueLog.Log.WriteLine("{0},PQ,AV{1:D4},{2},{3}",ticks,cid,maxup,queue.ToString()); + } + } +// ----------------------------------------------------------------- +// ----------------------------------------------------------------- +// ----------------------------------------------------------------- +// ----------------------------------------------------------------- +// + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); protected static Dictionary PacketHandlers = new Dictionary(); //Global/static handlers for all clients @@ -3547,18 +3620,23 @@ namespace OpenSim.Region.ClientStack.LindenUDP #region Primitive Packet/Data Sending Methods + /// /// Generate one of the object update packets based on PrimUpdateFlags /// and broadcast the packet to clients /// public void SendPrimUpdate(ISceneEntity entity, PrimUpdateFlags updateFlags) { - double priority = m_prioritizer.GetUpdatePriority(this, entity); + //double priority = m_prioritizer.GetUpdatePriority(this, entity); + uint priority = m_prioritizer.GetUpdatePriority(this, entity); lock (m_entityUpdates.SyncRoot) - m_entityUpdates.Enqueue(priority, new EntityUpdate(entity, updateFlags, m_scene.TimeDilation), entity.LocalId); + m_entityUpdates.Enqueue(priority, new EntityUpdate(entity, updateFlags, m_scene.TimeDilation)); } + private Int32 m_LastQueueFill = 0; + private uint m_maxUpdates = 0; + private void ProcessEntityUpdates(int maxUpdates) { OpenSim.Framework.Lazy> objectUpdateBlocks = new OpenSim.Framework.Lazy>(); @@ -3566,23 +3644,55 @@ namespace OpenSim.Region.ClientStack.LindenUDP OpenSim.Framework.Lazy> terseUpdateBlocks = new OpenSim.Framework.Lazy>(); OpenSim.Framework.Lazy> terseAgentUpdateBlocks = new OpenSim.Framework.Lazy>(); - if (maxUpdates <= 0) maxUpdates = Int32.MaxValue; + if (maxUpdates <= 0) + { + m_maxUpdates = Int32.MaxValue; + } + else + { + if (m_maxUpdates == 0 || m_LastQueueFill == 0) + { + m_maxUpdates = (uint)maxUpdates; + } + else + { + if (Util.EnvironmentTickCountSubtract(m_LastQueueFill) < 200) + m_maxUpdates += 5; + else + m_maxUpdates = m_maxUpdates >> 1; + } + m_maxUpdates = Util.Clamp(m_maxUpdates,10,500); + } + m_LastQueueFill = Util.EnvironmentTickCount(); + int updatesThisCall = 0; +// +// DEBUGGING CODE... REMOVE +// LogQueueProcessEvent(this.m_agentId,m_entityUpdates,m_maxUpdates); +// // We must lock for both manipulating the kill record and sending the packet, in order to avoid a race // condition where a kill can be processed before an out-of-date update for the same object. lock (m_killRecord) { float avgTimeDilation = 1.0f; EntityUpdate update; - while (updatesThisCall < maxUpdates) + Int32 timeinqueue; // this is just debugging code & can be dropped later + + while (updatesThisCall < m_maxUpdates) { lock (m_entityUpdates.SyncRoot) - if (!m_entityUpdates.TryDequeue(out update)) + if (!m_entityUpdates.TryDequeue(out update, out timeinqueue)) break; avgTimeDilation += update.TimeDilation; avgTimeDilation *= 0.5f; +// +// DEBUGGING CODE... REMOVE +// if (update.Entity is ScenePresence) +// LogAvatarUpdateEvent(this.m_agentId,update.Entity.UUID,timeinqueue); +// + if (update.Entity is SceneObjectPart) { SceneObjectPart part = (SceneObjectPart)update.Entity; @@ -3679,36 +3789,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else { - // if (update.Entity is SceneObjectPart && ((SceneObjectPart)update.Entity).IsAttachment) - // { - // SceneObjectPart sop = (SceneObjectPart)update.Entity; - // string text = sop.Text; - // if (text.IndexOf("\n") >= 0) - // text = text.Remove(text.IndexOf("\n")); - // - // if (m_attachmentsSent.Contains(sop.ParentID)) - // { - //// m_log.DebugFormat( - //// "[CLIENT]: Sending full info about attached prim {0} text {1}", - //// sop.LocalId, text); - // - // objectUpdateBlocks.Value.Add(CreatePrimUpdateBlock(sop, this.m_agentId)); - // - // m_attachmentsSent.Add(sop.LocalId); - // } - // else - // { - // m_log.DebugFormat( - // "[CLIENT]: Requeueing full update of prim {0} text {1} since we haven't sent its parent {2} yet", - // sop.LocalId, text, sop.ParentID); - // - // m_entityUpdates.Enqueue(double.MaxValue, update, sop.LocalId); - // } - // } - // else - // { - objectUpdateBlocks.Value.Add(CreatePrimUpdateBlock((SceneObjectPart)update.Entity, this.m_agentId)); - // } + objectUpdateBlocks.Value.Add(CreatePrimUpdateBlock((SceneObjectPart)update.Entity, this.m_agentId)); } } else if (!canUseImproved) @@ -3802,26 +3883,24 @@ namespace OpenSim.Region.ClientStack.LindenUDP public void ReprioritizeUpdates() { - //m_log.Debug("[CLIENT]: Reprioritizing prim updates for " + m_firstName + " " + m_lastName); - lock (m_entityUpdates.SyncRoot) m_entityUpdates.Reprioritize(UpdatePriorityHandler); } - private bool UpdatePriorityHandler(ref double priority, uint localID) + private bool UpdatePriorityHandler(ref uint priority, ISceneEntity entity) { - EntityBase entity; - if (m_scene.Entities.TryGetValue(localID, out entity)) + if (entity != null) { priority = m_prioritizer.GetUpdatePriority(this, entity); + return true; } - return priority != double.NaN; + return false; } public void FlushPrimUpdates() { - m_log.Debug("[CLIENT]: Flushing prim updates to " + m_firstName + " " + m_lastName); + m_log.WarnFormat("[CLIENT]: Flushing prim updates to " + m_firstName + " " + m_lastName); while (m_entityUpdates.Count > 0) ProcessEntityUpdates(-1); @@ -11729,86 +11808,85 @@ namespace OpenSim.Region.ClientStack.LindenUDP #region PriorityQueue public class PriorityQueue { - internal delegate bool UpdatePriorityHandler(ref double priority, uint local_id); + internal delegate bool UpdatePriorityHandler(ref uint priority, ISceneEntity entity); - private MinHeap[] m_heaps = new MinHeap[1]; + // Heap[0] for self updates + // Heap[1..12] for entity updates + + internal const uint m_numberOfQueues = 12; + private MinHeap[] m_heaps = new MinHeap[m_numberOfQueues]; private Dictionary m_lookupTable; - private Comparison m_comparison; private object m_syncRoot = new object(); - + private uint m_nextQueue = 0; + private UInt64 m_nextRequest = 0; + internal PriorityQueue() : - this(MinHeap.DEFAULT_CAPACITY, Comparer.Default) { } - internal PriorityQueue(int capacity) : - this(capacity, Comparer.Default) { } - internal PriorityQueue(IComparer comparer) : - this(new Comparison(comparer.Compare)) { } - internal PriorityQueue(Comparison comparison) : - this(MinHeap.DEFAULT_CAPACITY, comparison) { } - internal PriorityQueue(int capacity, IComparer comparer) : - this(capacity, new Comparison(comparer.Compare)) { } - internal PriorityQueue(int capacity, Comparison comparison) + this(MinHeap.DEFAULT_CAPACITY) { } + internal PriorityQueue(int capacity) { m_lookupTable = new Dictionary(capacity); for (int i = 0; i < m_heaps.Length; ++i) m_heaps[i] = new MinHeap(capacity); - this.m_comparison = comparison; } public object SyncRoot { get { return this.m_syncRoot; } } + internal int Count { get { int count = 0; for (int i = 0; i < m_heaps.Length; ++i) - count = m_heaps[i].Count; + count += m_heaps[i].Count; return count; } } - public bool Enqueue(double priority, EntityUpdate value, uint local_id) + public bool Enqueue(uint pqueue, EntityUpdate value) { - LookupItem item; + LookupItem lookup; - if (m_lookupTable.TryGetValue(local_id, out item)) + uint localid = value.Entity.LocalId; + UInt64 entry = m_nextRequest++; + if (m_lookupTable.TryGetValue(localid, out lookup)) { - // Combine flags - value.Flags |= item.Heap[item.Handle].Value.Flags; + entry = lookup.Heap[lookup.Handle].EntryOrder; + value.Flags |= lookup.Heap[lookup.Handle].Value.Flags; + lookup.Heap.Remove(lookup.Handle); + } - item.Heap[item.Handle] = new MinHeapItem(priority, value, local_id, this.m_comparison); - return false; - } - else - { - item.Heap = m_heaps[0]; - item.Heap.Add(new MinHeapItem(priority, value, local_id, this.m_comparison), ref item.Handle); - m_lookupTable.Add(local_id, item); - return true; - } + pqueue = Util.Clamp(pqueue, 0, m_numberOfQueues - 1); + lookup.Heap = m_heaps[pqueue]; + lookup.Heap.Add(new MinHeapItem(pqueue, entry, value), ref lookup.Handle); + m_lookupTable[localid] = lookup; + + return true; } - internal EntityUpdate Peek() + internal bool TryDequeue(out EntityUpdate value, out Int32 timeinqueue) { - for (int i = 0; i < m_heaps.Length; ++i) - if (m_heaps[i].Count > 0) - return m_heaps[i].Min().Value; - throw new InvalidOperationException(string.Format("The {0} is empty", this.GetType().ToString())); - } - - internal bool TryDequeue(out EntityUpdate value) - { - for (int i = 0; i < m_heaps.Length; ++i) + for (int i = 0; i < m_numberOfQueues; ++i) { - if (m_heaps[i].Count > 0) + // To get the fair queing, we cycle through each of the + // queues when finding an element to dequeue, this code + // assumes that the distribution of updates in the queues + // is polynomial, probably quadractic (eg distance of PI * R^2) + uint h = (uint)((m_nextQueue + i) % m_numberOfQueues); + if (m_heaps[h].Count > 0) { - MinHeapItem item = m_heaps[i].RemoveMin(); - m_lookupTable.Remove(item.LocalID); + m_nextQueue = (uint)((h + 1) % m_numberOfQueues); + + MinHeapItem item = m_heaps[h].RemoveMin(); + m_lookupTable.Remove(item.Value.Entity.LocalId); + timeinqueue = Util.EnvironmentTickCountSubtract(item.EntryTime); value = item.Value; + return true; } } + timeinqueue = 0; value = default(EntityUpdate); return false; } @@ -11816,68 +11894,107 @@ namespace OpenSim.Region.ClientStack.LindenUDP internal void Reprioritize(UpdatePriorityHandler handler) { MinHeapItem item; - double priority; - foreach (LookupItem lookup in new List(this.m_lookupTable.Values)) { if (lookup.Heap.TryGetValue(lookup.Handle, out item)) { - priority = item.Priority; - if (handler(ref priority, item.LocalID)) + uint pqueue = item.PriorityQueue; + uint localid = item.Value.Entity.LocalId; + + if (handler(ref pqueue, item.Value.Entity)) { - if (lookup.Heap.ContainsHandle(lookup.Handle)) - lookup.Heap[lookup.Handle] = - new MinHeapItem(priority, item.Value, item.LocalID, this.m_comparison); + // unless the priority queue has changed, there is no need to modify + // the entry + pqueue = Util.Clamp(pqueue, 0, m_numberOfQueues - 1); + if (pqueue != item.PriorityQueue) + { + lookup.Heap.Remove(lookup.Handle); + + LookupItem litem = lookup; + litem.Heap = m_heaps[pqueue]; + litem.Heap.Add(new MinHeapItem(pqueue, item), ref litem.Handle); + m_lookupTable[localid] = litem; + } } else { - m_log.Warn("[LLCLIENTVIEW]: UpdatePriorityHandler returned false, dropping update"); + m_log.WarnFormat("[LLCLIENTVIEW]: UpdatePriorityHandler returned false for {0}",item.Value.Entity.UUID); lookup.Heap.Remove(lookup.Handle); - this.m_lookupTable.Remove(item.LocalID); + this.m_lookupTable.Remove(localid); } } } } + public override string ToString() + { + string s = ""; + for (int i = 0; i < m_numberOfQueues; i++) + { + if (s != "") s += ","; + s += m_heaps[i].Count.ToString(); + } + return s; + } + #region MinHeapItem private struct MinHeapItem : IComparable { - private double priority; private EntityUpdate value; - private uint local_id; - private Comparison comparison; - - internal MinHeapItem(double priority, EntityUpdate value, uint local_id) : - this(priority, value, local_id, Comparer.Default) { } - internal MinHeapItem(double priority, EntityUpdate value, uint local_id, IComparer comparer) : - this(priority, value, local_id, new Comparison(comparer.Compare)) { } - internal MinHeapItem(double priority, EntityUpdate value, uint local_id, Comparison comparison) - { - this.priority = priority; - this.value = value; - this.local_id = local_id; - this.comparison = comparison; + internal EntityUpdate Value { + get { + return this.value; + } } - internal double Priority { get { return this.priority; } } - internal EntityUpdate Value { get { return this.value; } } - internal uint LocalID { get { return this.local_id; } } + private uint pqueue; + internal uint PriorityQueue { + get { + return this.pqueue; + } + } + + private Int32 entrytime; + internal Int32 EntryTime { + get { + return this.entrytime; + } + } + + private UInt64 entryorder; + internal UInt64 EntryOrder + { + get { + return this.entryorder; + } + } + + internal MinHeapItem(uint pqueue, MinHeapItem other) + { + this.entrytime = other.entrytime; + this.entryorder = other.entryorder; + this.value = other.value; + this.pqueue = pqueue; + } + + internal MinHeapItem(uint pqueue, UInt64 entryorder, EntityUpdate value) + { + this.entrytime = Util.EnvironmentTickCount(); + this.entryorder = entryorder; + this.value = value; + this.pqueue = pqueue; + } public override string ToString() { - StringBuilder sb = new StringBuilder(); - sb.Append("["); - sb.Append(this.priority.ToString()); - sb.Append(","); - if (this.value != null) - sb.Append(this.value.ToString()); - sb.Append("]"); - return sb.ToString(); + return String.Format("[{0},{1},{2}]",pqueue,entryorder,value.Entity.LocalId); } public int CompareTo(MinHeapItem other) { - return this.comparison(this.priority, other.priority); + // I'm assuming that the root part of an SOG is added to the update queue + // before the component parts + return Comparer.Default.Compare(this.EntryOrder, other.EntryOrder); } } #endregion diff --git a/OpenSim/Region/Framework/Scenes/Prioritizer.cs b/OpenSim/Region/Framework/Scenes/Prioritizer.cs index f9599f5a96..2764b05f1a 100644 --- a/OpenSim/Region/Framework/Scenes/Prioritizer.cs +++ b/OpenSim/Region/Framework/Scenes/Prioritizer.cs @@ -58,7 +58,7 @@ namespace OpenSim.Region.Framework.Scenes public class Prioritizer { -// private static readonly ILog m_log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + private static readonly ILog m_log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); /// /// This is added to the priority of all child prims, to make sure that the root prim update is sent to the @@ -76,7 +76,74 @@ namespace OpenSim.Region.Framework.Scenes m_scene = scene; } - public double GetUpdatePriority(IClientAPI client, ISceneEntity entity) +// + public uint GetUpdatePriority(IClientAPI client, ISceneEntity entity) + { + if (entity == null) + { + m_log.WarnFormat("[PRIORITIZER] attempt to prioritize null entity"); + throw new InvalidOperationException("Prioritization entity not defined"); + } + + // If this is an update for our own avatar give it the highest priority + if (client.AgentId == entity.UUID) + return 0; + + // Get this agent's position + ScenePresence presence = m_scene.GetScenePresence(client.AgentId); + if (presence == null) + { + m_log.WarnFormat("[PRIORITIZER] attempt to prioritize agent no longer in the scene"); + throw new InvalidOperationException("Prioritization agent not defined"); + } + + // Use group position for child prims + Vector3 entityPos = entity.AbsolutePosition; + if (entity is SceneObjectPart) + { + SceneObjectGroup group = (entity as SceneObjectPart).ParentGroup; + if (group != null) + entityPos = group.AbsolutePosition; + } + + // Use the camera position for local agents and avatar position for remote agents + Vector3 presencePos = (presence.IsChildAgent) ? + presence.AbsolutePosition : + presence.CameraPosition; + + // Compute the distance... + double distance = Vector3.Distance(presencePos, entityPos); + + // And convert the distance to a priority queue, this computation gives queues + // at 10, 20, 40, 80, 160, 320, 640, and 1280m + uint pqueue = 1; + for (int i = 0; i < 8; i++) + { + if (distance < 10 * Math.Pow(2.0,i)) + break; + pqueue++; + } + + // If this is a root agent, then determine front & back + // Bump up the priority queue for any objects behind the avatar + if (! presence.IsChildAgent) + { + // Root agent, decrease priority for objects behind us + Vector3 camPosition = presence.CameraPosition; + Vector3 camAtAxis = presence.CameraAtAxis; + + // Plane equation + float d = -Vector3.Dot(camPosition, camAtAxis); + float p = Vector3.Dot(camAtAxis, entityPos) + d; + if (p < 0.0f) + pqueue++; + } + + return pqueue; + } +// + + public double bGetUpdatePriority(IClientAPI client, ISceneEntity entity) { double priority = 0; From 0bd06d8ba85595a1707d2093a08a901b950ca120 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Mon, 4 Apr 2011 13:19:45 -0700 Subject: [PATCH 056/138] Fixed the prioritizer functions for the new priority queues --- .../Region/Framework/Scenes/Prioritizer.cs | 306 +++++------------- 1 file changed, 89 insertions(+), 217 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Prioritizer.cs b/OpenSim/Region/Framework/Scenes/Prioritizer.cs index 2764b05f1a..a14bb7001c 100644 --- a/OpenSim/Region/Framework/Scenes/Prioritizer.cs +++ b/OpenSim/Region/Framework/Scenes/Prioritizer.cs @@ -60,15 +60,6 @@ namespace OpenSim.Region.Framework.Scenes { private static readonly ILog m_log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - /// - /// This is added to the priority of all child prims, to make sure that the root prim update is sent to the - /// viewer before child prim updates. - /// The adjustment is added to child prims and subtracted from root prims, so the gap ends up - /// being double. We do it both ways so that there is a still a priority delta even if the priority is already - /// double.MinValue or double.MaxValue. - /// - private double m_childPrimAdjustmentFactor = 0.05; - private Scene m_scene; public Prioritizer(Scene scene) @@ -76,9 +67,19 @@ namespace OpenSim.Region.Framework.Scenes m_scene = scene; } -// + /// + /// Returns the priority queue into which the update should be placed. Updates within a + /// queue will be processed in arrival order. There are currently 12 priority queues + /// implemented in PriorityQueue class in LLClientView. Queue 0 is generally retained + /// for avatar updates. The fair queuing discipline for processing the priority queues + /// assumes that the number of entities in each priority queues increases exponentially. + /// So for example... if queue 1 contains all updates within 10m of the avatar or camera + /// then queue 2 at 20m is about 3X bigger in space & about 3X bigger in total number + /// of updates. + /// public uint GetUpdatePriority(IClientAPI client, ISceneEntity entity) { + // If entity is null we have a serious problem if (entity == null) { m_log.WarnFormat("[PRIORITIZER] attempt to prioritize null entity"); @@ -89,6 +90,78 @@ namespace OpenSim.Region.Framework.Scenes if (client.AgentId == entity.UUID) return 0; + uint priority; + + switch (m_scene.UpdatePrioritizationScheme) + { + case UpdatePrioritizationSchemes.Time: + priority = GetPriorityByTime(client, entity); + break; + case UpdatePrioritizationSchemes.Distance: + priority = GetPriorityByDistance(client, entity); + break; + case UpdatePrioritizationSchemes.SimpleAngularDistance: + priority = GetPriorityByDistance(client, entity); // TODO: Reimplement SimpleAngularDistance + break; + case UpdatePrioritizationSchemes.FrontBack: + priority = GetPriorityByFrontBack(client, entity); + break; + case UpdatePrioritizationSchemes.BestAvatarResponsiveness: + priority = GetPriorityByBestAvatarResponsiveness(client, entity); + break; + default: + throw new InvalidOperationException("UpdatePrioritizationScheme not defined."); + } + + return priority; + } + + + private uint GetPriorityByTime(IClientAPI client, ISceneEntity entity) + { + return 1; + } + + private uint GetPriorityByDistance(IClientAPI client, ISceneEntity entity) + { + return ComputeDistancePriority(client,entity,false); + } + + private uint GetPriorityByFrontBack(IClientAPI client, ISceneEntity entity) + { + return ComputeDistancePriority(client,entity,true); + } + + private uint GetPriorityByBestAvatarResponsiveness(IClientAPI client, ISceneEntity entity) + { + uint pqueue = ComputeDistancePriority(client,entity,true); + + ScenePresence presence = m_scene.GetScenePresence(client.AgentId); + if (presence != null) + { + if (!presence.IsChildAgent) + { + if (entity is SceneObjectPart) + { + // Non physical prims are lower priority than physical prims + PhysicsActor physActor = ((SceneObjectPart)entity).ParentGroup.RootPart.PhysActor; + if (physActor == null || !physActor.IsPhysical) + pqueue++; + + // Attachments are high priority, + // MIC: shouldn't these already be in the highest priority queue already + // since their root position is same as the avatars? + if (((SceneObjectPart)entity).ParentGroup.RootPart.IsAttachment) + pqueue = 1; + } + } + } + + return pqueue; + } + + private uint ComputeDistancePriority(IClientAPI client, ISceneEntity entity, bool useFrontBack) + { // Get this agent's position ScenePresence presence = m_scene.GetScenePresence(client.AgentId); if (presence == null) @@ -97,7 +170,10 @@ namespace OpenSim.Region.Framework.Scenes throw new InvalidOperationException("Prioritization agent not defined"); } - // Use group position for child prims + // Use group position for child prims, since we are putting child prims in + // the same queue with the root of the group, the root prim (which goes into + // the queue first) should always be sent first, no need to adjust child prim + // priorities Vector3 entityPos = entity.AbsolutePosition; if (entity is SceneObjectPart) { @@ -125,8 +201,8 @@ namespace OpenSim.Region.Framework.Scenes } // If this is a root agent, then determine front & back - // Bump up the priority queue for any objects behind the avatar - if (! presence.IsChildAgent) + // Bump up the priority queue (drop the priority) for any objects behind the avatar + if (useFrontBack && ! presence.IsChildAgent) { // Root agent, decrease priority for objects behind us Vector3 camPosition = presence.CameraPosition; @@ -141,210 +217,6 @@ namespace OpenSim.Region.Framework.Scenes return pqueue; } -// - public double bGetUpdatePriority(IClientAPI client, ISceneEntity entity) - { - double priority = 0; - - if (entity == null) - return 100000; - - switch (m_scene.UpdatePrioritizationScheme) - { - case UpdatePrioritizationSchemes.Time: - priority = GetPriorityByTime(); - break; - case UpdatePrioritizationSchemes.Distance: - priority = GetPriorityByDistance(client, entity); - break; - case UpdatePrioritizationSchemes.SimpleAngularDistance: - priority = GetPriorityByDistance(client, entity); // TODO: Reimplement SimpleAngularDistance - break; - case UpdatePrioritizationSchemes.FrontBack: - priority = GetPriorityByFrontBack(client, entity); - break; - case UpdatePrioritizationSchemes.BestAvatarResponsiveness: - priority = GetPriorityByBestAvatarResponsiveness(client, entity); - break; - default: - throw new InvalidOperationException("UpdatePrioritizationScheme not defined."); - } - - // Adjust priority so that root prims are sent to the viewer first. This is especially important for - // attachments acting as huds, since current viewers fail to display hud child prims if their updates - // arrive before the root one. - if (entity is SceneObjectPart) - { - SceneObjectPart sop = ((SceneObjectPart)entity); - - if (sop.IsRoot) - { - if (priority >= double.MinValue + m_childPrimAdjustmentFactor) - priority -= m_childPrimAdjustmentFactor; - } - else - { - if (priority <= double.MaxValue - m_childPrimAdjustmentFactor) - priority += m_childPrimAdjustmentFactor; - } - } - - return priority; - } - - private double GetPriorityByTime() - { - return DateTime.UtcNow.ToOADate(); - } - - private double GetPriorityByDistance(IClientAPI client, ISceneEntity entity) - { - ScenePresence presence = m_scene.GetScenePresence(client.AgentId); - if (presence != null) - { - // If this is an update for our own avatar give it the highest priority - if (presence == entity) - return 0.0; - - // Use the camera position for local agents and avatar position for remote agents - Vector3 presencePos = (presence.IsChildAgent) ? - presence.AbsolutePosition : - presence.CameraPosition; - - // Use group position for child prims - Vector3 entityPos; - if (entity is SceneObjectPart) - { - // Can't use Scene.GetGroupByPrim() here, since the entity may have been delete from the scene - // before its scheduled update was triggered - //entityPos = m_scene.GetGroupByPrim(entity.LocalId).AbsolutePosition; - entityPos = ((SceneObjectPart)entity).ParentGroup.AbsolutePosition; - } - else - { - entityPos = entity.AbsolutePosition; - } - - return Vector3.DistanceSquared(presencePos, entityPos); - } - - return double.NaN; - } - - private double GetPriorityByFrontBack(IClientAPI client, ISceneEntity entity) - { - ScenePresence presence = m_scene.GetScenePresence(client.AgentId); - if (presence != null) - { - // If this is an update for our own avatar give it the highest priority - if (presence == entity) - return 0.0; - - // Use group position for child prims - Vector3 entityPos = entity.AbsolutePosition; - if (entity is SceneObjectPart) - { - // Can't use Scene.GetGroupByPrim() here, since the entity may have been delete from the scene - // before its scheduled update was triggered - //entityPos = m_scene.GetGroupByPrim(entity.LocalId).AbsolutePosition; - entityPos = ((SceneObjectPart)entity).ParentGroup.AbsolutePosition; - } - else - { - entityPos = entity.AbsolutePosition; - } - - if (!presence.IsChildAgent) - { - // Root agent. Use distance from camera and a priority decrease for objects behind us - Vector3 camPosition = presence.CameraPosition; - Vector3 camAtAxis = presence.CameraAtAxis; - - // Distance - double priority = Vector3.DistanceSquared(camPosition, entityPos); - - // Plane equation - float d = -Vector3.Dot(camPosition, camAtAxis); - float p = Vector3.Dot(camAtAxis, entityPos) + d; - if (p < 0.0f) priority *= 2.0; - - return priority; - } - else - { - // Child agent. Use the normal distance method - Vector3 presencePos = presence.AbsolutePosition; - - return Vector3.DistanceSquared(presencePos, entityPos); - } - } - - return double.NaN; - } - - private double GetPriorityByBestAvatarResponsiveness(IClientAPI client, ISceneEntity entity) - { - // If this is an update for our own avatar give it the highest priority - if (client.AgentId == entity.UUID) - return 0.0; - if (entity == null) - return double.NaN; - - // Use group position for child prims - Vector3 entityPos = entity.AbsolutePosition; - if (entity is SceneObjectPart) - { - SceneObjectGroup group = (entity as SceneObjectPart).ParentGroup; - if (group != null) - entityPos = group.AbsolutePosition; - else - entityPos = entity.AbsolutePosition; - } - else - entityPos = entity.AbsolutePosition; - - ScenePresence presence = m_scene.GetScenePresence(client.AgentId); - if (presence != null) - { - if (!presence.IsChildAgent) - { - if (entity is ScenePresence) - return 1.0; - - // Root agent. Use distance from camera and a priority decrease for objects behind us - Vector3 camPosition = presence.CameraPosition; - Vector3 camAtAxis = presence.CameraAtAxis; - - // Distance - double priority = Vector3.DistanceSquared(camPosition, entityPos); - - // Plane equation - float d = -Vector3.Dot(camPosition, camAtAxis); - float p = Vector3.Dot(camAtAxis, entityPos) + d; - if (p < 0.0f) priority *= 2.0; - - if (entity is SceneObjectPart) - { - PhysicsActor physActor = ((SceneObjectPart)entity).ParentGroup.RootPart.PhysActor; - if (physActor == null || !physActor.IsPhysical) - priority += 100; - - if (((SceneObjectPart)entity).ParentGroup.RootPart.IsAttachment) - priority = 1.0; - } - return priority; - } - else - { - // Child agent. Use the normal distance method - Vector3 presencePos = presence.AbsolutePosition; - - return Vector3.DistanceSquared(presencePos, entityPos); - } - } - - return double.NaN; - } } } From 83dc2470f2e815f6f9d469104be3a2806438a29a Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Mon, 4 Apr 2011 14:18:26 -0700 Subject: [PATCH 057/138] Fix a bug in the computation of the RTO. Basically... the RTO (the time to wait to retransmit packets) always maxed out (no retransmissions for 24 or 48 seconds. Note that this is going to cause faster (and more) retransmissions. Fix for dynamic throttling needs to go with this. --- OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index 65a8fe3ca8..9a8bfd357c 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs @@ -149,7 +149,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// Caches packed throttle information private byte[] m_packedThrottles; - private int m_defaultRTO = 3000; + private int m_defaultRTO = 1000; // 1sec is the recommendation in the RFC private int m_maxRTO = 60000; /// @@ -557,7 +557,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP int rto = (int)(SRTT + Math.Max(m_udpServer.TickCountResolution, K * RTTVAR)); // Clamp the retransmission timeout to manageable values - rto = Utils.Clamp(RTO, m_defaultRTO, m_maxRTO); + rto = Utils.Clamp(rto, m_defaultRTO, m_maxRTO); RTO = rto; From 19c6d1d569e081418e139d139c15ea66640288ba Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Wed, 6 Apr 2011 09:26:38 -0700 Subject: [PATCH 058/138] Split the priority queue class into a seperate file. LLClientView is big enough. --- .../ClientStack/LindenUDP/LLClientView.cs | 205 --------------- .../ClientStack/LindenUDP/PriorityQueue.cs | 245 ++++++++++++++++++ 2 files changed, 245 insertions(+), 205 deletions(-) create mode 100644 OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index a3f2c15951..a7240991dc 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -11805,209 +11805,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP OutPacket(pack, ThrottleOutPacketType.Task); } - #region PriorityQueue - public class PriorityQueue - { - internal delegate bool UpdatePriorityHandler(ref uint priority, ISceneEntity entity); - - // Heap[0] for self updates - // Heap[1..12] for entity updates - - internal const uint m_numberOfQueues = 12; - private MinHeap[] m_heaps = new MinHeap[m_numberOfQueues]; - private Dictionary m_lookupTable; - private object m_syncRoot = new object(); - private uint m_nextQueue = 0; - private UInt64 m_nextRequest = 0; - - internal PriorityQueue() : - this(MinHeap.DEFAULT_CAPACITY) { } - internal PriorityQueue(int capacity) - { - m_lookupTable = new Dictionary(capacity); - - for (int i = 0; i < m_heaps.Length; ++i) - m_heaps[i] = new MinHeap(capacity); - } - - public object SyncRoot { get { return this.m_syncRoot; } } - - internal int Count - { - get - { - int count = 0; - for (int i = 0; i < m_heaps.Length; ++i) - count += m_heaps[i].Count; - return count; - } - } - - public bool Enqueue(uint pqueue, EntityUpdate value) - { - LookupItem lookup; - - uint localid = value.Entity.LocalId; - UInt64 entry = m_nextRequest++; - if (m_lookupTable.TryGetValue(localid, out lookup)) - { - entry = lookup.Heap[lookup.Handle].EntryOrder; - value.Flags |= lookup.Heap[lookup.Handle].Value.Flags; - lookup.Heap.Remove(lookup.Handle); - } - - pqueue = Util.Clamp(pqueue, 0, m_numberOfQueues - 1); - lookup.Heap = m_heaps[pqueue]; - lookup.Heap.Add(new MinHeapItem(pqueue, entry, value), ref lookup.Handle); - m_lookupTable[localid] = lookup; - - return true; - } - - internal bool TryDequeue(out EntityUpdate value, out Int32 timeinqueue) - { - for (int i = 0; i < m_numberOfQueues; ++i) - { - // To get the fair queing, we cycle through each of the - // queues when finding an element to dequeue, this code - // assumes that the distribution of updates in the queues - // is polynomial, probably quadractic (eg distance of PI * R^2) - uint h = (uint)((m_nextQueue + i) % m_numberOfQueues); - if (m_heaps[h].Count > 0) - { - m_nextQueue = (uint)((h + 1) % m_numberOfQueues); - - MinHeapItem item = m_heaps[h].RemoveMin(); - m_lookupTable.Remove(item.Value.Entity.LocalId); - timeinqueue = Util.EnvironmentTickCountSubtract(item.EntryTime); - value = item.Value; - - return true; - } - } - - timeinqueue = 0; - value = default(EntityUpdate); - return false; - } - - internal void Reprioritize(UpdatePriorityHandler handler) - { - MinHeapItem item; - foreach (LookupItem lookup in new List(this.m_lookupTable.Values)) - { - if (lookup.Heap.TryGetValue(lookup.Handle, out item)) - { - uint pqueue = item.PriorityQueue; - uint localid = item.Value.Entity.LocalId; - - if (handler(ref pqueue, item.Value.Entity)) - { - // unless the priority queue has changed, there is no need to modify - // the entry - pqueue = Util.Clamp(pqueue, 0, m_numberOfQueues - 1); - if (pqueue != item.PriorityQueue) - { - lookup.Heap.Remove(lookup.Handle); - - LookupItem litem = lookup; - litem.Heap = m_heaps[pqueue]; - litem.Heap.Add(new MinHeapItem(pqueue, item), ref litem.Handle); - m_lookupTable[localid] = litem; - } - } - else - { - m_log.WarnFormat("[LLCLIENTVIEW]: UpdatePriorityHandler returned false for {0}",item.Value.Entity.UUID); - lookup.Heap.Remove(lookup.Handle); - this.m_lookupTable.Remove(localid); - } - } - } - } - - public override string ToString() - { - string s = ""; - for (int i = 0; i < m_numberOfQueues; i++) - { - if (s != "") s += ","; - s += m_heaps[i].Count.ToString(); - } - return s; - } - - #region MinHeapItem - private struct MinHeapItem : IComparable - { - private EntityUpdate value; - internal EntityUpdate Value { - get { - return this.value; - } - } - - private uint pqueue; - internal uint PriorityQueue { - get { - return this.pqueue; - } - } - - private Int32 entrytime; - internal Int32 EntryTime { - get { - return this.entrytime; - } - } - - private UInt64 entryorder; - internal UInt64 EntryOrder - { - get { - return this.entryorder; - } - } - - internal MinHeapItem(uint pqueue, MinHeapItem other) - { - this.entrytime = other.entrytime; - this.entryorder = other.entryorder; - this.value = other.value; - this.pqueue = pqueue; - } - - internal MinHeapItem(uint pqueue, UInt64 entryorder, EntityUpdate value) - { - this.entrytime = Util.EnvironmentTickCount(); - this.entryorder = entryorder; - this.value = value; - this.pqueue = pqueue; - } - - public override string ToString() - { - return String.Format("[{0},{1},{2}]",pqueue,entryorder,value.Entity.LocalId); - } - - public int CompareTo(MinHeapItem other) - { - // I'm assuming that the root part of an SOG is added to the update queue - // before the component parts - return Comparer.Default.Compare(this.EntryOrder, other.EntryOrder); - } - } - #endregion - - #region LookupItem - private struct LookupItem - { - internal MinHeap Heap; - internal IHandle Handle; - } - #endregion - } - public struct PacketProcessor { public PacketMethod method; @@ -12028,8 +11825,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP } } - #endregion - public static OSD BuildEvent(string eventName, OSD eventBody) { OSDMap osdEvent = new OSDMap(2); diff --git a/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs b/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs new file mode 100644 index 0000000000..364ce4ba9e --- /dev/null +++ b/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs @@ -0,0 +1,245 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; + +using OpenSim.Framework; +using OpenSim.Framework.Client; +using log4net; + +namespace OpenSim.Region.ClientStack.LindenUDP +{ + public class PriorityQueue + { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + internal delegate bool UpdatePriorityHandler(ref uint priority, ISceneEntity entity); + + // Heap[0] for self updates + // Heap[1..12] for entity updates + + internal const uint m_numberOfQueues = 12; + + private MinHeap[] m_heaps = new MinHeap[m_numberOfQueues]; + private Dictionary m_lookupTable; + private uint m_nextQueue = 0; + private UInt64 m_nextRequest = 0; + + private object m_syncRoot = new object(); + public object SyncRoot { + get { return this.m_syncRoot; } + } + + internal PriorityQueue() : this(MinHeap.DEFAULT_CAPACITY) { } + + internal PriorityQueue(int capacity) + { + m_lookupTable = new Dictionary(capacity); + + for (int i = 0; i < m_heaps.Length; ++i) + m_heaps[i] = new MinHeap(capacity); + } + + internal int Count + { + get + { + int count = 0; + for (int i = 0; i < m_heaps.Length; ++i) + count += m_heaps[i].Count; + return count; + } + } + + public bool Enqueue(uint pqueue, EntityUpdate value) + { + LookupItem lookup; + + uint localid = value.Entity.LocalId; + UInt64 entry = m_nextRequest++; + if (m_lookupTable.TryGetValue(localid, out lookup)) + { + entry = lookup.Heap[lookup.Handle].EntryOrder; + value.Flags |= lookup.Heap[lookup.Handle].Value.Flags; + lookup.Heap.Remove(lookup.Handle); + } + + pqueue = Util.Clamp(pqueue, 0, m_numberOfQueues - 1); + lookup.Heap = m_heaps[pqueue]; + lookup.Heap.Add(new MinHeapItem(pqueue, entry, value), ref lookup.Handle); + m_lookupTable[localid] = lookup; + + return true; + } + + internal bool TryDequeue(out EntityUpdate value, out Int32 timeinqueue) + { + for (int i = 0; i < m_numberOfQueues; ++i) + { + // To get the fair queing, we cycle through each of the + // queues when finding an element to dequeue, this code + // assumes that the distribution of updates in the queues + // is polynomial, probably quadractic (eg distance of PI * R^2) + uint h = (uint)((m_nextQueue + i) % m_numberOfQueues); + if (m_heaps[h].Count > 0) + { + m_nextQueue = (uint)((h + 1) % m_numberOfQueues); + + MinHeapItem item = m_heaps[h].RemoveMin(); + m_lookupTable.Remove(item.Value.Entity.LocalId); + timeinqueue = Util.EnvironmentTickCountSubtract(item.EntryTime); + value = item.Value; + + return true; + } + } + + timeinqueue = 0; + value = default(EntityUpdate); + return false; + } + + internal void Reprioritize(UpdatePriorityHandler handler) + { + MinHeapItem item; + foreach (LookupItem lookup in new List(this.m_lookupTable.Values)) + { + if (lookup.Heap.TryGetValue(lookup.Handle, out item)) + { + uint pqueue = item.PriorityQueue; + uint localid = item.Value.Entity.LocalId; + + if (handler(ref pqueue, item.Value.Entity)) + { + // unless the priority queue has changed, there is no need to modify + // the entry + pqueue = Util.Clamp(pqueue, 0, m_numberOfQueues - 1); + if (pqueue != item.PriorityQueue) + { + lookup.Heap.Remove(lookup.Handle); + + LookupItem litem = lookup; + litem.Heap = m_heaps[pqueue]; + litem.Heap.Add(new MinHeapItem(pqueue, item), ref litem.Handle); + m_lookupTable[localid] = litem; + } + } + else + { + // m_log.WarnFormat("[PQUEUE]: UpdatePriorityHandler returned false for {0}",item.Value.Entity.UUID); + lookup.Heap.Remove(lookup.Handle); + this.m_lookupTable.Remove(localid); + } + } + } + } + + public override string ToString() + { + string s = ""; + for (int i = 0; i < m_numberOfQueues; i++) + { + if (s != "") s += ","; + s += m_heaps[i].Count.ToString(); + } + return s; + } + +#region MinHeapItem + private struct MinHeapItem : IComparable + { + private EntityUpdate value; + internal EntityUpdate Value { + get { + return this.value; + } + } + + private uint pqueue; + internal uint PriorityQueue { + get { + return this.pqueue; + } + } + + private Int32 entrytime; + internal Int32 EntryTime { + get { + return this.entrytime; + } + } + + private UInt64 entryorder; + internal UInt64 EntryOrder + { + get { + return this.entryorder; + } + } + + internal MinHeapItem(uint pqueue, MinHeapItem other) + { + this.entrytime = other.entrytime; + this.entryorder = other.entryorder; + this.value = other.value; + this.pqueue = pqueue; + } + + internal MinHeapItem(uint pqueue, UInt64 entryorder, EntityUpdate value) + { + this.entrytime = Util.EnvironmentTickCount(); + this.entryorder = entryorder; + this.value = value; + this.pqueue = pqueue; + } + + public override string ToString() + { + return String.Format("[{0},{1},{2}]",pqueue,entryorder,value.Entity.LocalId); + } + + public int CompareTo(MinHeapItem other) + { + // I'm assuming that the root part of an SOG is added to the update queue + // before the component parts + return Comparer.Default.Compare(this.EntryOrder, other.EntryOrder); + } + } +#endregion + +#region LookupItem + private struct LookupItem + { + internal MinHeap Heap; + internal IHandle Handle; + } +#endregion + } +} From ebc249e3bef57aee656936f5e63842d83ee29fff Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Sun, 10 Apr 2011 17:02:40 -0700 Subject: [PATCH 059/138] Changed the "not in scene" check in the prioritizier to just a warning. There appears to be a race condition on slow logins that attempts to prioritize before the scene presence is fully initialized. --- OpenSim/Region/Framework/Scenes/Prioritizer.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Prioritizer.cs b/OpenSim/Region/Framework/Scenes/Prioritizer.cs index a14bb7001c..4694e2b684 100644 --- a/OpenSim/Region/Framework/Scenes/Prioritizer.cs +++ b/OpenSim/Region/Framework/Scenes/Prioritizer.cs @@ -166,8 +166,9 @@ namespace OpenSim.Region.Framework.Scenes ScenePresence presence = m_scene.GetScenePresence(client.AgentId); if (presence == null) { - m_log.WarnFormat("[PRIORITIZER] attempt to prioritize agent no longer in the scene"); - throw new InvalidOperationException("Prioritization agent not defined"); + m_log.WarnFormat("[PRIORITIZER] attempt to use agent {0} not in the scene",client.AgentId); + // throw new InvalidOperationException("Prioritization agent not defined"); + return Int32.MaxValue; } // Use group position for child prims, since we are putting child prims in From f778056c7a81443b11c0c4288979af3a8c6b5b9f Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Mon, 11 Apr 2011 08:37:43 -0700 Subject: [PATCH 060/138] Removed some priority queue debugging code --- .../ClientStack/LindenUDP/LLClientView.cs | 80 ------------------- 1 file changed, 80 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index a7240991dc..b5bf26d0d0 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -300,77 +300,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// Used to adjust Sun Orbit values so Linden based viewers properly position sun private const float m_sunPainDaHalfOrbitalCutoff = 4.712388980384689858f; - // First log file or time has expired, start writing to a new log file -// -// ----------------------------------------------------------------- -// ----------------------------------------------------------------- -// THIS IS DEBUGGING CODE & SHOULD BE REMOVED -// ----------------------------------------------------------------- -// ----------------------------------------------------------------- - public class QueueLogger - { - public Int32 start = 0; - public StreamWriter Log = null; - private Dictionary m_idMap = new Dictionary(); - - public QueueLogger() - { - DateTime now = DateTime.Now; - String fname = String.Format("queue-{0}.log", now.ToString("yyyyMMddHHmmss")); - Log = new StreamWriter(fname); - - start = Util.EnvironmentTickCount(); - } - - public int LookupID(UUID uuid) - { - int localid; - if (! m_idMap.TryGetValue(uuid,out localid)) - { - localid = m_idMap.Count + 1; - m_idMap[uuid] = localid; - } - - return localid; - } - } - - public static QueueLogger QueueLog = null; - - // ----------------------------------------------------------------- - public void LogAvatarUpdateEvent(UUID client, UUID avatar, Int32 timeinqueue) - { - if (QueueLog == null) - QueueLog = new QueueLogger(); - - Int32 ticks = Util.EnvironmentTickCountSubtract(QueueLog.start); - lock(QueueLog) - { - int cid = QueueLog.LookupID(client); - int aid = QueueLog.LookupID(avatar); - QueueLog.Log.WriteLine("{0},AU,AV{1:D4},AV{2:D4},{3}",ticks,cid,aid,timeinqueue); - } - } - - // ----------------------------------------------------------------- - public void LogQueueProcessEvent(UUID client, PriorityQueue queue, uint maxup) - { - if (QueueLog == null) - QueueLog = new QueueLogger(); - - Int32 ticks = Util.EnvironmentTickCountSubtract(QueueLog.start); - lock(QueueLog) - { - int cid = QueueLog.LookupID(client); - QueueLog.Log.WriteLine("{0},PQ,AV{1:D4},{2},{3}",ticks,cid,maxup,queue.ToString()); - } - } -// ----------------------------------------------------------------- -// ----------------------------------------------------------------- -// ----------------------------------------------------------------- -// ----------------------------------------------------------------- -// - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); protected static Dictionary PacketHandlers = new Dictionary(); //Global/static handlers for all clients @@ -3667,10 +3596,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP int updatesThisCall = 0; -// -// DEBUGGING CODE... REMOVE -// LogQueueProcessEvent(this.m_agentId,m_entityUpdates,m_maxUpdates); -// // We must lock for both manipulating the kill record and sending the packet, in order to avoid a race // condition where a kill can be processed before an out-of-date update for the same object. lock (m_killRecord) @@ -3687,11 +3612,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP avgTimeDilation += update.TimeDilation; avgTimeDilation *= 0.5f; -// -// DEBUGGING CODE... REMOVE -// if (update.Entity is ScenePresence) -// LogAvatarUpdateEvent(this.m_agentId,update.Entity.UUID,timeinqueue); -// if (update.Entity is SceneObjectPart) { From 6e9cdb9ce32807ddd1a39e72c436b8fd788768d2 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Mon, 11 Apr 2011 09:06:28 -0700 Subject: [PATCH 061/138] New tokenbucket algorithm. This one provides fair sharing of the queues when client and simulator throttles are set. This algorithm also uses pre-defined burst rate of 150% of the sustained rate for each of the throttles. Removed the "state" queue. The state queue is not a Linden queue and appeared to be used just to get kill packets sent. --- .../ClientStack/LindenUDP/LLClientView.cs | 6 +- .../ClientStack/LindenUDP/LLUDPClient.cs | 96 +++--- .../ClientStack/LindenUDP/LLUDPServer.cs | 2 +- .../ClientStack/LindenUDP/TokenBucket.cs | 314 +++++++++++------- 4 files changed, 266 insertions(+), 152 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 8de31d7069..934a2d5c84 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -1610,7 +1610,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else { - OutPacket(kill, ThrottleOutPacketType.State); + // OutPacket(kill, ThrottleOutPacketType.State); + OutPacket(kill, ThrottleOutPacketType.Task); } } @@ -2440,7 +2441,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP packet.Effect = effectBlocks; - OutPacket(packet, ThrottleOutPacketType.State); + // OutPacket(packet, ThrottleOutPacketType.State); + OutPacket(packet, ThrottleOutPacketType.Task); } public void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, Byte[] charterMember, diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index 9a8bfd357c..5a69851b3c 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs @@ -135,7 +135,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP private int m_nextOnQueueEmpty = 1; /// Throttle bucket for this agent's connection - private readonly TokenBucket m_throttle; + private readonly TokenBucket m_throttleClient; + /// Throttle bucket for this agent's connection + private readonly TokenBucket m_throttleCategory; /// Throttle buckets for each packet category private readonly TokenBucket[] m_throttleCategories; /// Outgoing queues for throttled packets @@ -174,7 +176,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_maxRTO = maxRTO; // Create a token bucket throttle for this client that has the scene token bucket as a parent - m_throttle = new TokenBucket(parentThrottle, rates.TotalLimit, rates.Total); + m_throttleClient = new TokenBucket(parentThrottle, rates.TotalLimit); + // Create a token bucket throttle for the total categary with the client bucket as a throttle + m_throttleCategory = new TokenBucket(m_throttleClient, rates.TotalLimit); // Create an array of token buckets for this clients different throttle categories m_throttleCategories = new TokenBucket[THROTTLE_CATEGORY_COUNT]; @@ -185,7 +189,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Initialize the packet outboxes, where packets sit while they are waiting for tokens m_packetOutboxes[i] = new OpenSim.Framework.LocklessQueue(); // Initialize the token buckets that control the throttling for each category - m_throttleCategories[i] = new TokenBucket(m_throttle, rates.GetLimit(type), rates.GetRate(type)); + m_throttleCategories[i] = new TokenBucket(m_throttleCategory, rates.GetLimit(type)); } // Default the retransmission timeout to three seconds @@ -206,6 +210,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_packetOutboxes[i].Clear(); m_nextPackets[i] = null; } + + // pull the throttle out of the scene throttle + m_throttleClient.Parent.UnregisterRequest(m_throttleClient); OnPacketStats = null; OnQueueEmpty = null; } @@ -216,6 +223,26 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// Information about the client connection public ClientInfo GetClientInfo() { +/// + TokenBucket tb; + + tb = m_throttleClient.Parent; + m_log.WarnFormat("[TOKENS] {3}: Actual={0},Request={1},TotalRequest={2}",tb.DripRate,tb.RequestedDripRate,tb.TotalDripRequest,"ROOT"); + + tb = m_throttleClient; + m_log.WarnFormat("[TOKENS] {3}: Actual={0},Request={1},TotalRequest={2}",tb.DripRate,tb.RequestedDripRate,tb.TotalDripRequest," CLIENT"); + + tb = m_throttleCategory; + m_log.WarnFormat("[TOKENS] {3}: Actual={0},Request={1},TotalRequest={2}",tb.DripRate,tb.RequestedDripRate,tb.TotalDripRequest," CATEGORY"); + + for (int i = 0; i < THROTTLE_CATEGORY_COUNT; i++) + { + tb = m_throttleCategories[i]; + m_log.WarnFormat("[TOKENS] {4} <{0}:{1}>: Actual={2},Requested={3}",AgentID,i,tb.DripRate,tb.RequestedDripRate," BUCKET"); + } + +/// + // TODO: This data structure is wrong in so many ways. Locking and copying the entire lists // of pending and needed ACKs for every client every time some method wants information about // this connection is a recipe for poor performance @@ -223,13 +250,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP info.pendingAcks = new Dictionary(); info.needAck = new Dictionary(); - info.resendThrottle = m_throttleCategories[(int)ThrottleOutPacketType.Resend].DripRate; - info.landThrottle = m_throttleCategories[(int)ThrottleOutPacketType.Land].DripRate; - info.windThrottle = m_throttleCategories[(int)ThrottleOutPacketType.Wind].DripRate; - info.cloudThrottle = m_throttleCategories[(int)ThrottleOutPacketType.Cloud].DripRate; - info.taskThrottle = m_throttleCategories[(int)ThrottleOutPacketType.State].DripRate + m_throttleCategories[(int)ThrottleOutPacketType.Task].DripRate; - info.assetThrottle = m_throttleCategories[(int)ThrottleOutPacketType.Asset].DripRate; - info.textureThrottle = m_throttleCategories[(int)ThrottleOutPacketType.Texture].DripRate; + info.resendThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Resend].DripRate; + info.landThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Land].DripRate; + info.windThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Wind].DripRate; + info.cloudThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Cloud].DripRate; + // info.taskThrottle = m_throttleCategories[(int)ThrottleOutPacketType.State].DripRate + m_throttleCategories[(int)ThrottleOutPacketType.Task].DripRate; + info.taskThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Task].DripRate; + info.assetThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Asset].DripRate; + info.textureThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Texture].DripRate; info.totalThrottle = info.resendThrottle + info.landThrottle + info.windThrottle + info.cloudThrottle + info.taskThrottle + info.assetThrottle + info.textureThrottle; @@ -317,8 +345,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP int texture = (int)(BitConverter.ToSingle(adjData, pos) * 0.125f); pos += 4; int asset = (int)(BitConverter.ToSingle(adjData, pos) * 0.125f); // State is a subcategory of task that we allocate a percentage to - int state = (int)((float)task * STATE_TASK_PERCENTAGE); - task -= state; + int state = 0; + // int state = (int)((float)task * STATE_TASK_PERCENTAGE); + // task -= state; // Make sure none of the throttles are set below our packet MTU, // otherwise a throttle could become permanently clogged @@ -339,40 +368,32 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Update the token buckets with new throttle values TokenBucket bucket; - bucket = m_throttle; - bucket.MaxBurst = total; + bucket = m_throttleCategory; + bucket.RequestedDripRate = total; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Resend]; - bucket.DripRate = resend; - bucket.MaxBurst = resend; + bucket.RequestedDripRate = resend; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Land]; - bucket.DripRate = land; - bucket.MaxBurst = land; + bucket.RequestedDripRate = land; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Wind]; - bucket.DripRate = wind; - bucket.MaxBurst = wind; + bucket.RequestedDripRate = wind; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Cloud]; - bucket.DripRate = cloud; - bucket.MaxBurst = cloud; + bucket.RequestedDripRate = cloud; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Asset]; - bucket.DripRate = asset; - bucket.MaxBurst = asset; + bucket.RequestedDripRate = asset; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Task]; - bucket.DripRate = task + state; - bucket.MaxBurst = task + state; + bucket.RequestedDripRate = task; bucket = m_throttleCategories[(int)ThrottleOutPacketType.State]; - bucket.DripRate = state; - bucket.MaxBurst = state; + bucket.RequestedDripRate = state; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Texture]; - bucket.DripRate = texture; - bucket.MaxBurst = texture; + bucket.RequestedDripRate = texture; // Reset the packed throttles cached data m_packedThrottles = null; @@ -387,14 +408,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP data = new byte[7 * 4]; int i = 0; - Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Resend].DripRate), 0, data, i, 4); i += 4; - Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Land].DripRate), 0, data, i, 4); i += 4; - Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Wind].DripRate), 0, data, i, 4); i += 4; - Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Cloud].DripRate), 0, data, i, 4); i += 4; - Buffer.BlockCopy(Utils.FloatToBytes((float)(m_throttleCategories[(int)ThrottleOutPacketType.Task].DripRate) + - m_throttleCategories[(int)ThrottleOutPacketType.State].DripRate), 0, data, i, 4); i += 4; - Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Texture].DripRate), 0, data, i, 4); i += 4; - Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Asset].DripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Resend].RequestedDripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Land].RequestedDripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Wind].RequestedDripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Cloud].RequestedDripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Task].RequestedDripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Texture].RequestedDripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Asset].RequestedDripRate), 0, data, i, 4); i += 4; m_packedThrottles = data; } diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 583214ca0b..d08b25f79d 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -228,7 +228,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } #endregion BinaryStats - m_throttle = new TokenBucket(null, sceneThrottleBps, sceneThrottleBps); + m_throttle = new TokenBucket(null, sceneThrottleBps); ThrottleRates = new ThrottleRates(configSource); } diff --git a/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs b/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs index 0a8331f32a..e4d59ff829 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs @@ -26,6 +26,10 @@ */ using System; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using log4net; namespace OpenSim.Region.ClientStack.LindenUDP { @@ -35,89 +39,126 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// public class TokenBucket { - /// Parent bucket to this bucket, or null if this is a root - /// bucket - TokenBucket parent; - /// Size of the bucket in bytes. If zero, the bucket has - /// infinite capacity - int maxBurst; - /// Rate that the bucket fills, in bytes per millisecond. If - /// zero, the bucket always remains full - int tokensPerMS; - /// Number of tokens currently in the bucket - int content; - /// Time of the last drip, in system ticks - int lastDrip; + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + private static Int32 m_counter = 0; + + private Int32 m_identifier; + + /// + /// Number of ticks (ms) per quantum, drip rate and max burst + /// are defined over this interval. + /// + private const Int32 m_ticksPerQuantum = 1000; - #region Properties + /// + /// This is the number of quantums worth of packets that can + /// be accommodated during a burst + /// + private const Double m_quantumsPerBurst = 1.5; + + /// + /// + private const Int32 m_minimumDripRate = 1400; + + /// Time of the last drip, in system ticks + private Int32 m_lastDrip; + + /// + /// The number of bytes that can be sent at this moment. This is the + /// current number of tokens in the bucket + /// + private Int64 m_tokenCount; + + /// + /// Map of children buckets and their requested maximum burst rate + /// + private Dictionary m_children = new Dictionary(); + +#region Properties /// /// The parent bucket of this bucket, or null if this bucket has no /// parent. The parent bucket will limit the aggregate bandwidth of all /// of its children buckets /// + private TokenBucket m_parent; public TokenBucket Parent { - get { return parent; } + get { return m_parent; } + set { m_parent = value; } } /// /// Maximum burst rate in bytes per second. This is the maximum number - /// of tokens that can accumulate in the bucket at any one time + /// of tokens that can accumulate in the bucket at any one time. This + /// also sets the total request for leaf nodes /// - public int MaxBurst + private Int64 m_burstRate; + public Int64 RequestedBurstRate { - get { return maxBurst; } - set { maxBurst = (value >= 0 ? value : 0); } + get { return m_burstRate; } + set { m_burstRate = (value < 0 ? 0 : value); } } + public Int64 BurstRate + { + get { + double rate = RequestedBurstRate * BurstRateModifier(); + if (rate < m_minimumDripRate * m_quantumsPerBurst) + rate = m_minimumDripRate * m_quantumsPerBurst; + + return (Int64) rate; + } + } + /// /// The speed limit of this bucket in bytes per second. This is the - /// number of tokens that are added to the bucket per second + /// number of tokens that are added to the bucket per quantum /// /// Tokens are added to the bucket any time /// is called, at the granularity of /// the system tick interval (typically around 15-22ms) - public int DripRate + private Int64 m_dripRate; + public Int64 RequestedDripRate { - get { return tokensPerMS * 1000; } - set - { - if (value == 0) - tokensPerMS = 0; - else - { - int bpms = (int)((float)value / 1000.0f); + get { return (m_dripRate == 0 ? m_totalDripRequest : m_dripRate); } + set { + m_dripRate = (value < 0 ? 0 : value); + m_burstRate = (Int64)((double)m_dripRate * m_quantumsPerBurst); + m_totalDripRequest = m_dripRate; + if (m_parent != null) + m_parent.RegisterRequest(this,m_dripRate); + } + } - if (bpms <= 0) - tokensPerMS = 1; // 1 byte/ms is the minimum granularity - else - tokensPerMS = bpms; - } + public Int64 DripRate + { + get { + if (m_parent == null) + return Math.Min(RequestedDripRate,TotalDripRequest); + + double rate = (double)RequestedDripRate * m_parent.DripRateModifier(); + if (rate < m_minimumDripRate) + rate = m_minimumDripRate; + + return (Int64)rate; } } /// - /// The speed limit of this bucket in bytes per millisecond + /// The current total of the requested maximum burst rates of + /// this bucket's children buckets. /// - public int DripPerMS - { - get { return tokensPerMS; } - } + private Int64 m_totalDripRequest; + public Int64 TotalDripRequest + { + get { return m_totalDripRequest; } + set { m_totalDripRequest = value; } + } + +#endregion Properties - /// - /// The number of bytes that can be sent at this moment. This is the - /// current number of tokens in the bucket - /// If this bucket has a parent bucket that does not have - /// enough tokens for a request, will - /// return false regardless of the content of this bucket - /// - public int Content - { - get { return content; } - } - - #endregion Properties +#region Constructor /// /// Default constructor @@ -128,56 +169,115 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// zero if this bucket has no maximum capacity /// Rate that the bucket fills, in bytes per /// second. If zero, the bucket always remains full - public TokenBucket(TokenBucket parent, int maxBurst, int dripRate) + public TokenBucket(TokenBucket parent, Int64 dripRate) { - this.parent = parent; - MaxBurst = maxBurst; - DripRate = dripRate; - lastDrip = Environment.TickCount & Int32.MaxValue; + m_identifier = m_counter++; + + Parent = parent; + RequestedDripRate = dripRate; + // TotalDripRequest = dripRate; // this will be overwritten when a child node registers + // MaxBurst = (Int64)((double)dripRate * m_quantumsPerBurst); + m_lastDrip = Environment.TickCount & Int32.MaxValue; } +#endregion Constructor + + /// + /// Compute a modifier for the MaxBurst rate. This is 1.0, meaning + /// no modification if the requested bandwidth is less than the + /// max burst bandwidth all the way to the root of the throttle + /// hierarchy. However, if any of the parents is over-booked, then + /// the modifier will be less than 1. + /// + private double DripRateModifier() + { + Int64 driprate = DripRate; + return driprate >= TotalDripRequest ? 1.0 : (double)driprate / (double)TotalDripRequest; + } + + /// + /// + private double BurstRateModifier() + { + // for now... burst rate is always m_quantumsPerBurst (constant) + // larger than drip rate so the ratio of burst requests is the + // same as the drip ratio + return DripRateModifier(); + } + + /// + /// Register drip rate requested by a child of this throttle. Pass the + /// changes up the hierarchy. + /// + public void RegisterRequest(TokenBucket child, Int64 request) + { + m_children[child] = request; + // m_totalDripRequest = m_children.Values.Sum(); + + m_totalDripRequest = 0; + foreach (KeyValuePair cref in m_children) + m_totalDripRequest += cref.Value; + + // Pass the new values up to the parent + if (m_parent != null) + m_parent.RegisterRequest(this,Math.Min(RequestedDripRate, TotalDripRequest)); + } + + /// + /// Remove the rate requested by a child of this throttle. Pass the + /// changes up the hierarchy. + /// + public void UnregisterRequest(TokenBucket child) + { + m_children.Remove(child); + // m_totalDripRequest = m_children.Values.Sum(); + + m_totalDripRequest = 0; + foreach (KeyValuePair cref in m_children) + m_totalDripRequest += cref.Value; + + // Pass the new values up to the parent + if (m_parent != null) + m_parent.RegisterRequest(this,Math.Min(RequestedDripRate, TotalDripRequest)); + } + /// /// Remove a given number of tokens from the bucket /// /// Number of tokens to remove from the bucket /// True if the requested number of tokens were removed from /// the bucket, otherwise false - public bool RemoveTokens(int amount) + public bool RemoveTokens(Int64 amount) { - bool dummy; - return RemoveTokens(amount, out dummy); + // Deposit tokens for this interval + Drip(); + + // If we have enough tokens then remove them and return + if (m_tokenCount - amount >= 0) + { + if (m_parent == null || m_parent.RemoveTokens(amount)) + { + m_tokenCount -= amount; + return true; + } + } + + return false; } /// - /// Remove a given number of tokens from the bucket + /// Deposit tokens into the bucket from a child bucket that did + /// not use all of its available tokens /// - /// Number of tokens to remove from the bucket - /// True if tokens were added to the bucket - /// during this call, otherwise false - /// True if the requested number of tokens were removed from - /// the bucket, otherwise false - public bool RemoveTokens(int amount, out bool dripSucceeded) + private void Deposit(Int64 count) { - if (maxBurst == 0) - { - dripSucceeded = true; - return true; - } + m_tokenCount += count; - dripSucceeded = Drip(); - - if (content - amount >= 0) - { - if (parent != null && !parent.RemoveTokens(amount)) - return false; - - content -= amount; - return true; - } - else - { - return false; - } + // Deposit the overflow in the parent bucket, this is how we share + // unused bandwidth + Int64 burstrate = BurstRate; + if (m_tokenCount > burstrate) + m_tokenCount = burstrate; } /// @@ -186,37 +286,29 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// call to Drip /// /// True if tokens were added to the bucket, otherwise false - public bool Drip() + private void Drip() { - if (tokensPerMS == 0) + // This should never happen... means we are a leaf node and were created + // with no drip rate... + if (DripRate == 0) { - content = maxBurst; - return true; + m_log.WarnFormat("[TOKENBUCKET] something odd is happening and drip rate is 0"); + return; } - else - { - int now = Environment.TickCount & Int32.MaxValue; - int deltaMS = now - lastDrip; + + // Determine the interval over which we are adding tokens, never add + // more than a single quantum of tokens + Int32 now = Environment.TickCount & Int32.MaxValue; + Int32 deltaMS = Math.Min(now - m_lastDrip, m_ticksPerQuantum); - if (deltaMS <= 0) - { - if (deltaMS < 0) - lastDrip = now; - return false; - } + m_lastDrip = now; - int dripAmount = deltaMS * tokensPerMS; + // This can be 0 in the very unusual case that the timer wrapped + // It can be 0 if we try add tokens at a sub-tick rate + if (deltaMS <= 0) + return; - content = Math.Min(content + dripAmount, maxBurst); - lastDrip = now; - - if (dripAmount < 0 || content < 0) - // sim has been idle for too long, integer has overflown - // previous calculation is meaningless, let's put it at correct max - content = maxBurst; - - return true; - } + Deposit(deltaMS * DripRate / m_ticksPerQuantum); } } } From e9c2beadecf8f531d2bbfcd3f44636cfeff08667 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 11 Apr 2011 20:43:11 +0100 Subject: [PATCH 062/138] Add more instructions to OpenSim.ini.example to try and make it more understandable for new users. --- bin/OpenSim.ini.example | 103 ++++++++++++++++++++++++++-------------- 1 file changed, 68 insertions(+), 35 deletions(-) diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 5bac56e66a..390fe099d6 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -1,4 +1,22 @@ -;; A note on the format of this file +;; This is the main configuration file for OpenSimulator. If it's named OpenSim.ini +;; then it will be loaded by OpenSimulator. If it's named OpenSim.ini.example then +;; you will need to copy it to OpenSim.ini first (if that file does not already exist) +;; +;; If you are copying, then once you have copied OpenSim.ini.example to OpenSim.ini you will +;; need to pick an architecture in the [Architecture] section at the end of this file. +;; +;; The settings in this file are in the form " = ". For example, save_crashes = false +;; in the [Startup] section below. +;; +;; All settings are initially commented out and the default value used, as found in +;; OpenSimDefaults.ini. To change a setting, first uncomment it by deleting the initial semicolon (;) +;; and then change the value. This will override the value in OpenSimDefaults.ini +;; +;; If you want to find out what configuration OpenSimulator has used then type "config get" on the +;; region console command line. +;; +;; +;; NOTES FOR DEVELOPERS REGARDING FORMAT OF TIHS FILE ;; ;; All leading white space is ignored, but preserved. ;; @@ -8,15 +26,14 @@ ;; formatted as: ;; {option} {depends on} {question to ask} {choices} default value ;; Any text comments following the declaration, up to the next blank line. -;; will be copied to the generated file. -;; A * in the choices list will allow an empty entry.\ +;; will be copied to the generated file (NOTE: generation is not yet implemented) +;; A * in the choices list will allow an empty entry. ;; An empty question will set the default if the dependencies are ;; satisfied. ;; -;; ; denotes a commented out option. Uncomment it to actvate it -;; and change it to the desired value -;; Any options added to OpenSim.ini.exmaple must be commented out, -;; and their value must represent the default. +;; ; denotes a commented out option. +;; Any options added to OpenSim.ini.example should be initially commented out. + [Startup] ;# {save_crashes} {} {Save crashes to disk?} {true false} false @@ -35,7 +52,7 @@ ;; Determine where OpenSimulator looks for the files which tell it ;; which regions to server - ;; Defaults to "filesystem" if this setting isn't present + ;; Default is "filesystem" ; region_info_source = "filesystem" ; region_info_source = "web" @@ -131,6 +148,7 @@ ;; ZeroMesher is faster but leaves the physics engine to model the mesh ;; using the basic shapes that it supports. ;; Usually this is only a box. + ;; Default is Meshmerizer ; meshing = Meshmerizer ; meshing = ZeroMesher @@ -138,6 +156,7 @@ ;; OpenDynamicsEngine is by some distance the most developed physics engine ;; basicphysics effectively does not model physics at all, making all ;; objects phantom + ;; Default is OpenDynamicsEngine ; physics = OpenDynamicsEngine ; physics = basicphysics ; physics = POS @@ -154,7 +173,6 @@ ;; permission checks (allowing anybody to copy ;; any item, etc. This may not yet be implemented uniformally. ;; If set to true, then all permissions checks are carried out - ;; Default is false ; serverside_object_permissions = false ;; This allows users with a UserLevel of 200 or more to assume god @@ -188,6 +206,7 @@ ;; server to send mail through. ; emailmodule = DefaultEmailModule + [SMTP] ;; The SMTP server enabled the email module to send email to external ;; destinations. @@ -214,6 +233,7 @@ ;# {SMTP_SERVER_PASSWORD} {[Startup]emailmodule:DefaultEmailModule enabled:true} {SMTP server password} {} ; SMTP_SERVER_PASSWORD = "" + [Network] ;; Configure the remote console user here. This will not actually be used ;; unless you use -console=rest at startup. @@ -247,6 +267,7 @@ ;; " (Mozilla Compatible)" to the text where there are problems with a web server ; user_agent = "OpenSim LSL (Mozilla Compatible)" + [ClientStack.LindenUDP] ;; See OpensSimDefaults.ini for the throttle options. You can copy the ;; relevant sections and override them here. @@ -263,17 +284,18 @@ ;; building's lights to possibly not be rendered. ; DisableFacelights = "false" + [Chat] ;# {whisper_distance} {} {Distance at which a whisper is heard, in meters?} {} 10 - ;; Distance in meters that whispers should travel. Default is 10m + ;; Distance in meters that whispers should travel. ; whisper_distance = 10 ;# {say_distance} {} {Distance at which normal chat is heard, in meters? (SL uses 20 here)} {} 30 - ;; Distance in meters that ordinary chat should travel. Default is 30m + ;; Distance in meters that ordinary chat should travel. ; say_distance = 30 ;# {shout_distance} {Distance at which a shout is heard, in meters?} {} 100 - ;; Distance in meters that shouts should travel. Default is 100m + ;; Distance in meters that shouts should travel. ; shout_distance = 100 @@ -337,13 +359,13 @@ ;# {create_region_enable_voice} {enabled:true} {Enable voice for newly created regions?} {true false} false ;; set this variable to true if you want the create_region XmlRpc ;; call to unconditionally enable voice on all parcels for a newly - ;; created region [default: false] + ;; created region ; create_region_enable_voice = false ;# {create_region_public} {enabled:true} {Make newly created regions public?} {true false} false ;; set this variable to false if you want the create_region XmlRpc ;; call to create all regions as private per default (can be - ;; overridden in the XmlRpc call) [default: true] + ;; overridden in the XmlRpc call) ; create_region_public = false ;# {enabled_methods} {enabled:true} {List of methods to allow, separated by |} {} all @@ -372,15 +394,16 @@ ;; default avatars ; default_appearance = default_appearance.xml + [Wind] ;# {enabled} {} {Enable wind module?} {true false} true - ;; Enables the wind module. Default is true - ;enabled = true + ;; Enables the wind module. + ; enabled = true ;# {wind_update_rate} {enabled:true} {Wind update rate in frames?} {} 150 ;; How often should wind be updated, as a function of world frames. ;; Approximately 50 frames a second - wind_update_rate = 150 + ; wind_update_rate = 150 ;; The Default Wind Plugin to load ; wind_plugin = SimpleRandomWind @@ -396,9 +419,10 @@ ;# {strength} {enabled:true wind_plugin:SimpleRandomWind} {Wind strength?} {} 1.0 ;; This setting is specific to the SimpleRandomWind plugin - ;; Adjusts wind strength. 0.0 = no wind, 1.0 = normal wind. Default is 1.0 + ;; Adjusts wind strength. 0.0 = no wind, 1.0 = normal wind. ; strength = 1.0 + [LightShare] ;# {enable_windlight} {} {Enable LightShare technology?} {true false} false ;; This enables the transmission of Windlight scenes to supporting clients, @@ -406,7 +430,8 @@ ;; It has no ill effect on viewers which do not support server-side ;; windlight settings. ;; Currently we only have support for MySQL databases. - ; enable_windlight = false; + ; enable_windlight = false + [DataSnapshot] ;# {index_sims} {} {Enable data snapshotting (search)?} {true false} false @@ -417,7 +442,6 @@ ;; and you can ignore the rest of these search-related configs. ; index_sims = false - ;# {data_exposure} {index_sims:true} {How much data should be exposed?} {minimum all} minimum ;; The variable data_exposure controls what the regions expose: ;; minimum: exposes only things explicitly marked for search @@ -462,6 +486,7 @@ ;; Money Unit fee to create groups ; PriceGroupCreate = 0 + [XEngine] ;# {Enabled} {} {Enable the XEngine scripting engine?} {true false} true ;; Enable this engine in this OpenSim instance @@ -556,9 +581,9 @@ ;; Default is ./bin/ScriptEngines ; ScriptEnginesPath = "ScriptEngines" + [MRM] ;; Enables the Mini Region Modules Script Engine. - ;; default is false ; Enabled = false ;; Runs MRM in a Security Sandbox @@ -580,6 +605,7 @@ ;; May represent a security risk if you disable this. ; OwnerOnly = true + [FreeSwitchVoice] ;; In order for this to work you need a functioning FreeSWITCH PBX set up. ;; Configuration details at http://opensimulator.org/wiki/Freeswitch_Module @@ -593,6 +619,7 @@ ;; If using a remote module, specify the server URL ; FreeswitchServiceURL = http://my.grid.server:8003/fsapi + [FreeswitchService] ;; !!!!!!!!!!!!!!!!!!!!!!!!!!! ;; !!!!!!STANDALONE ONLY!!!!!! @@ -611,6 +638,7 @@ ; UserName = "freeswitch" ; Password = "password" + [Groups] ;# {Enabled} {} {Enable groups?} {true false} false ;; Enables the groups module @@ -634,7 +662,7 @@ ;# {ServicesConnectorModule} {Module:GroupsModule} {Service connector to use for groups} {XmlRpcGroupsServicesConnector SimianGroupsServicesConnector} XmlRpcGroupsServicesConnector ;; Service connectors to the Groups Service as used in the GroupsModule. Select one depending on ;; whether you're using a Flotsam XmlRpc backend or a SimianGrid backend - ; ServicesConnectorModule = SimianGroupsServicesConnector + ; ServicesConnectorModule = XmlRpcGroupsServicesConnector ;# {GroupsServerURI} {Module:GroupsModule} {Groups Server URI} {} ;; URI for the groups services @@ -654,6 +682,7 @@ ; XmlRpcServiceReadKey = 1234 ; XmlRpcServiceWriteKey = 1234 + [InterestManagement] ;# {UpdatePrioritizationScheme} {} {Update prioritization scheme?} {BestAvatarResponsiveness Time Distance SimpleAngularDistance FrontBack} BestAvatarResponsiveness ;; This section controls how state updates are prioritized for each client @@ -661,24 +690,28 @@ ;; SimpleAngularDistance, FrontBack ; UpdatePrioritizationScheme = BestAvatarResponsiveness + [MediaOnAPrim] ;# {Enabled} {} {Enable Media-on-a-Prim (MOAP)} {true false} true ;; Enable media on a prim facilities ; Enabled = true; + [Architecture] ;# {Include-Architecture} {} {Choose one of the following architectures} {config-include/Standalone.ini config-include/StandaloneHypergrid.ini config-include/Grid.ini config-include/GridHypergrid.ini config-include/SimianGrid.ini config-include/HyperSimianGrid.ini} config-include/Standalone.ini - ;; Choose one of these architecture includes: - ;; Include-Architecture = "config-include/Standalone.ini" - ;; Include-Architecture = "config-include/StandaloneHypergrid.ini" - ;; Include-Architecture = "config-include/Grid.ini" - ;; Include-Architecture = "config-include/GridHypergrid.ini" - ;; Include-Architecture = "config-include/SimianGrid.ini" - ;; Include-Architecture = "config-include/HyperSimianGrid.ini" + ;; Uncomment one of the following includes as required. For instance, to create a standalone OpenSim, + ;; uncomment Include-Architecture = "config-include/Standalone.ini" + ;; + ;; Then you will need to copy and edit the corresponding *Common.example file in config-include/ + ;; that the referenced .ini file goes on to include. + ;; + ;; For instance, if you chose "config-include/Standalone.ini" then you will need to copy + ;; "config-include/StandaloneCommon.ini.example" to "config-include/StandaloneCommon.ini" before + ;; editing it to set the database and backend services that OpenSim will use. + ;; ; Include-Architecture = "config-include/Standalone.ini" - - ;; Then choose - ;; config-include/StandaloneCommon.ini.example (if you're in standlone) OR - ;; config-include/GridCommon.ini.example (if you're connected to a grid) - ;; Copy to your own .ini there (without .example extension) and edit it - ;; to customize your data + ; Include-Architecture = "config-include/StandaloneHypergrid.ini" + ; Include-Architecture = "config-include/Grid.ini" + ; Include-Architecture = "config-include/GridHypergrid.ini" + ; Include-Architecture = "config-include/SimianGrid.ini" + ; Include-Architecture = "config-include/HyperSimianGrid.ini" From fda393b088e625b5811520af6bd502e2471cd8e7 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 11 Apr 2011 21:42:28 +0100 Subject: [PATCH 063/138] Add information comment to top of OpenSimDefaults.ini and make file consistent --- bin/OpenSimDefaults.ini | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index 96ffb7ea6b..d6eee0e101 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -1,3 +1,7 @@ +; This file contains defaults for various settings in OpenSimulator. These can be overriden +; by changing the same setting in OpenSim.ini (once OpenSim.ini.example has been copied to OpenSim.ini). + + [Startup] ; Set this to true if you want to log crashes to disk ; this can be useful when submitting bug reports. @@ -287,6 +291,7 @@ ;SMTP_SERVER_LOGIN=foo ;SMTP_SERVER_PASSWORD=bar + [Network] ConsoleUser = "Test" ConsolePass = "secret" @@ -317,6 +322,7 @@ ; " (Mozilla Compatible)" to the text where there are problems with a web server ;user_agent = "OpenSim LSL (Mozilla Compatible)" + [XMLRPC] ; ## ; ## Scripting XMLRPC mapper @@ -330,6 +336,7 @@ ;XmlRpcRouterModule = "XmlRpcRouterModule" ;XmlRpcPort = 20800 + [ClientStack.LindenUDP] ; Set this to true to process incoming packets asynchronously. Networking is ; already separated from packet handling with a queue, so this will only @@ -422,6 +429,7 @@ ; ;DisableFacelights = "false" + [Chat] ; Controls whether the chat module is enabled. Default is true. enabled = true; @@ -680,6 +688,7 @@ ; path to default appearance XML file that specifies the look of the default avatars ;default_appearance = default_appearance.xml + [RestPlugins] ; Change this to true to enable REST Plugins. This must be true if you wish to use ; REST Region or REST Asset and Inventory Plugins @@ -706,11 +715,10 @@ flush-on-error = true -; Uncomment the following for IRC bridge -; experimental, so if it breaks... keep both parts... yada yada +; IRC bridge is experimental, so if it breaks... keep both parts... yada yada ; also, not good error detection when it fails -;[IRC] - ;enabled = true ; you need to set this otherwise it won't connect +[IRC] + enabled = false; you need to set this to true otherwise it won't connect ;server = name.of.irc.server.on.the.net ;; user password - only use this if the server requires one ;password = mypass @@ -767,14 +775,14 @@ ;exclude_list=User 1,User 2,User 3 -;[CMS] - ;enabled = true +[CMS] + enabled = false ;channel = 345 -; Uncomment the following to control the progression of daytime -; in the Sim. The defaults are what is shown below -;[Sun] +; The following settings control the progression of daytime +; in the Sim. The defaults are the same as the commented out settings +[Sun] ; number of wall clock hours for an opensim day. 24.0 would mean realtime ;day_length = 4 ; Year length in days @@ -821,12 +829,13 @@ ; default is 1000 cloud_update_rate = 1000 -[LightShare] +[LightShare] ; This enables the transmission of Windlight scenes to supporting clients, such as the Meta7 viewer. ; It has no ill effect on viewers which do not support server-side windlight settings. ; Currently we only have support for MySQL databases. - enable_windlight = false; + enable_windlight = false + [Trees] ; Enable this to allow the tree module to manage your sim trees, including growing, reproducing and dying @@ -838,7 +847,6 @@ [VectorRender] - ; the font to use for rendering text (default: Arial) ; font_name = "Arial" @@ -1032,6 +1040,7 @@ ;; Path to script assemblies ; ScriptEnginesPath = "ScriptEngines" + [OpenGridProtocol] ;These are the settings for the Open Grid Protocol.. the Agent Domain, Region Domain, you know.. ;On/true or Off/false @@ -1240,11 +1249,11 @@ ChildReprioritizationDistance = 20.0 -[WebStats] ; View region statistics via a web page ; See http://opensimulator.org/wiki/FAQ#Region_Statistics_on_a_Web_Page ; Use a web browser and type in the "Login URI" + "/SStats/" ; For example- http://127.0.0.1:9000/SStats/ +[WebStats] ; enabled=false From d6948b15c47fd067be6d7cef31caf8e49e9c9afa Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 11 Apr 2011 21:51:17 +0100 Subject: [PATCH 064/138] Make it more obvious when it happens that DLL plugin loading fails. Improve exception output on Windows. --- OpenSim/Region/Framework/ModuleLoader.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/ModuleLoader.cs b/OpenSim/Region/Framework/ModuleLoader.cs index 23be9c252c..14ecd4430a 100644 --- a/OpenSim/Region/Framework/ModuleLoader.cs +++ b/OpenSim/Region/Framework/ModuleLoader.cs @@ -223,7 +223,8 @@ namespace OpenSim.Region.Framework catch (Exception e) { m_log.ErrorFormat( - "[MODULES]: Could not load types for [{0}]. Exception {1}", pluginAssembly.FullName, e); + "[MODULES]: Could not load types for plugin DLL {0}. Exception {1} {2}", + pluginAssembly.FullName, e.Message, e.StackTrace); // justincc: Right now this is fatal to really get the user's attention throw e; From 0bd6bc8fba1ed35344218e2aa25e30a3294f2ed1 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 11 Apr 2011 21:59:26 +0100 Subject: [PATCH 065/138] create "config show" as a region console command synonym for "config get". This is to create greater consistency with all the other show commands. --- OpenSim/Region/Application/OpenSim.cs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index ec1fb042c1..39004d4028 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs @@ -341,10 +341,15 @@ namespace OpenSim m_console.Commands.AddCommand("region", false, "config get", "config get [
    ] []", - "Show a config option", + "Synonym for config show", + HandleConfig); + + m_console.Commands.AddCommand("region", false, "config show", + "config show [
    ] []", + "Show config information", "If neither section nor field are specified, then the whole current configuration is printed." + Environment.NewLine + "If a section is given but not a field, then all fields in that section are printed.", - HandleConfig); + HandleConfig); m_console.Commands.AddCommand("region", false, "config save", "config save ", @@ -593,7 +598,9 @@ namespace OpenSim if (cmdparams.Length > 0) { - switch (cmdparams[0].ToLower()) + string firstParam = cmdparams[0].ToLower(); + + switch (firstParam) { case "set": if (cmdparams.Length < 4) @@ -618,6 +625,7 @@ namespace OpenSim break; case "get": + case "show": if (cmdparams.Length == 1) { foreach (IConfig config in m_config.Source.Configs) @@ -654,8 +662,8 @@ namespace OpenSim } else { - Notice("Syntax: config get [
    ] []"); - Notice("Example: config get ScriptEngine.DotNetEngine NumberOfScriptThreads"); + Notice("Syntax: config {0} [
    ] []", firstParam); + Notice("Example: config {0} ScriptEngine.DotNetEngine NumberOfScriptThreads", firstParam); } break; From 333a2913cfb8b536939b1d9d4b3ac6ea59dd55ca Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 11 Apr 2011 22:02:12 +0100 Subject: [PATCH 066/138] slightly tweak OpenSim.ini.example text --- bin/OpenSim.ini.example | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 390fe099d6..55723d1efb 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -12,8 +12,8 @@ ;; OpenSimDefaults.ini. To change a setting, first uncomment it by deleting the initial semicolon (;) ;; and then change the value. This will override the value in OpenSimDefaults.ini ;; -;; If you want to find out what configuration OpenSimulator has used then type "config get" on the -;; region console command line. +;; If you want to find out what configuration OpenSimulator has finished with once all the configuration +;; files are loaded then type "config show" on the region console command line. ;; ;; ;; NOTES FOR DEVELOPERS REGARDING FORMAT OF TIHS FILE From 464fa45ec90767af13bd8edcc7c67de4ec3db6a7 Mon Sep 17 00:00:00 2001 From: "E. Allen Soard" Date: Fri, 8 Apr 2011 18:30:20 -0700 Subject: [PATCH 067/138] Implimented HTTP_VERIFY_CERT for llHttpRequest --- .../HttpRequest/ScriptsHttpRequests.cs | 34 +++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs index d78931a524..a37c781e87 100644 --- a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs +++ b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs @@ -29,8 +29,10 @@ using System; using System.Collections.Generic; using System.IO; using System.Net; +using System.Net.Security; using System.Text; using System.Threading; +using System.Security.Cryptography.X509Certificates; using Nini.Config; using OpenMetaverse; using OpenSim.Framework; @@ -84,6 +86,7 @@ using OpenSim.Region.Framework.Scenes; namespace OpenSim.Region.CoreModules.Scripting.HttpRequest { + public class HttpRequestModule : IRegionModule, IHttpRequestModule { private object HttpListLock = new object(); @@ -100,8 +103,23 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest public HttpRequestModule() { + ServicePointManager.ServerCertificateValidationCallback +=ValidateServerCertificate; } + public static bool ValidateServerCertificate( + object sender, + X509Certificate certificate, + X509Chain chain, + SslPolicyErrors sslPolicyErrors) + { + HttpWebRequest Request = (HttpWebRequest)sender; + + if(Request.Headers.Get("NoVerifyCert") != null) + { + return true; + } + return chain.Build(new X509Certificate2(certificate)); + } #region IHttpRequestModule Members public UUID MakeHttpRequest(string url, string parameters, string body) @@ -141,8 +159,7 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest break; case (int)HttpRequestConstants.HTTP_VERIFY_CERT: - - // TODO implement me + htc.HttpVerifyCert = (int.Parse(parms[i + 1]) != 0); break; } } @@ -282,7 +299,7 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest public string HttpMethod = "GET"; public string HttpMIMEType = "text/plain;charset=utf-8"; public int HttpTimeout; - // public bool HttpVerifyCert = true; // not implemented + public bool HttpVerifyCert = true; // not implemented private Thread httpThread; // Request info @@ -344,6 +361,17 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest Request.Method = HttpMethod; Request.ContentType = HttpMIMEType; + if(!HttpVerifyCert) + { + // Connection Group Name is probably not used so we hijack it to identify + // a desired security exception +// Request.ConnectionGroupName="NoVerify"; + Request.Headers.Add("NoVerifyCert" , "true"); + } +// else +// { +// Request.ConnectionGroupName="Verify"; +// } if (proxyurl != null && proxyurl.Length > 0) { if (proxyexcepts != null && proxyexcepts.Length > 0) From 3a98fb080a751d21999bb2baa769462426b5d776 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 11 Apr 2011 22:29:08 +0100 Subject: [PATCH 068/138] minor: adjust some spacing and indentation --- .../HttpRequest/ScriptsHttpRequests.cs | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs index a37c781e87..23e15ef9ee 100644 --- a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs +++ b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs @@ -86,7 +86,6 @@ using OpenSim.Region.Framework.Scenes; namespace OpenSim.Region.CoreModules.Scripting.HttpRequest { - public class HttpRequestModule : IRegionModule, IHttpRequestModule { private object HttpListLock = new object(); @@ -114,10 +113,11 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest { HttpWebRequest Request = (HttpWebRequest)sender; - if(Request.Headers.Get("NoVerifyCert") != null) + if (Request.Headers.Get("NoVerifyCert") != null) { return true; } + return chain.Build(new X509Certificate2(certificate)); } #region IHttpRequestModule Members @@ -206,7 +206,7 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest * Not sure how important ordering is is here - the next first * one completed in the list is returned, based soley on its list * position, not the order in which the request was started or - * finsihed. I thought about setting up a queue for this, but + * finished. I thought about setting up a queue for this, but * it will need some refactoring and this works 'enough' right now */ @@ -254,8 +254,8 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest m_scene.RegisterModuleInterface(this); - m_proxyurl = config.Configs["Startup"].GetString("HttpProxy"); - m_proxyexcepts = config.Configs["Startup"].GetString("HttpProxyExceptions"); + m_proxyurl = config.Configs["Startup"].GetString("HttpProxy"); + m_proxyexcepts = config.Configs["Startup"].GetString("HttpProxyExceptions"); m_pendingRequests = new Dictionary(); } @@ -363,10 +363,10 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest if(!HttpVerifyCert) { - // Connection Group Name is probably not used so we hijack it to identify - // a desired security exception -// Request.ConnectionGroupName="NoVerify"; - Request.Headers.Add("NoVerifyCert" , "true"); + // We could hijack Connection Group Name to identify + // a desired security exception. But at the moment we'll use a dummy header instead. +// Request.ConnectionGroupName = "NoVerify"; + Request.Headers.Add("NoVerifyCert", "true"); } // else // { @@ -464,4 +464,4 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest } } } -} +} \ No newline at end of file From e8ecb2898c55bb97d47e9b1efb7dac98d40609cd Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 11 Apr 2011 22:33:24 +0100 Subject: [PATCH 069/138] minor: remove some mono compiler warnings --- .../Shared/Api/Implementation/LSL_Api.cs | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index c16a985564..aa28fa0ca2 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -10289,12 +10289,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { UUID rq = UUID.Random(); - UUID tid = AsyncCommands. - DataserverPlugin.RegisterRequest(m_localID, - m_itemID, rq.ToString()); + AsyncCommands.DataserverPlugin.RegisterRequest(m_localID, m_itemID, rq.ToString()); - AsyncCommands. - DataserverPlugin.DataserverReply(rq.ToString(), Name2Username(llKey2Name(id))); + AsyncCommands.DataserverPlugin.DataserverReply(rq.ToString(), Name2Username(llKey2Name(id))); return rq.ToString(); } @@ -10308,12 +10305,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { UUID rq = UUID.Random(); - UUID tid = AsyncCommands. - DataserverPlugin.RegisterRequest(m_localID, - m_itemID, rq.ToString()); + AsyncCommands.DataserverPlugin.RegisterRequest(m_localID, m_itemID, rq.ToString()); - AsyncCommands. - DataserverPlugin.DataserverReply(rq.ToString(), llKey2Name(id)); + AsyncCommands.DataserverPlugin.DataserverReply(rq.ToString(), llKey2Name(id)); return rq.ToString(); } From 64dc7e9f141fd0f168ed90c11f932a8bdb077dc7 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 11 Apr 2011 22:35:07 +0100 Subject: [PATCH 070/138] minor: remove now inaccurate comment --- .../CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs index 23e15ef9ee..4c8424d7cc 100644 --- a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs +++ b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs @@ -299,7 +299,7 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest public string HttpMethod = "GET"; public string HttpMIMEType = "text/plain;charset=utf-8"; public int HttpTimeout; - public bool HttpVerifyCert = true; // not implemented + public bool HttpVerifyCert = true; private Thread httpThread; // Request info From 49d80f5711e1bc1afb6c650038619ade6d9a9e97 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 11 Apr 2011 23:07:56 +0100 Subject: [PATCH 071/138] Include code to return more information about the NullReferenceException seen in http://opensimulator.org/mantis/view.php?id=5403 prior to doing something about it. --- OpenSim/Data/MySQL/MySQLGenericTableHandler.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs index 8efe4e9bd6..50b6dbef42 100644 --- a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs +++ b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs @@ -39,6 +39,8 @@ namespace OpenSim.Data.MySQL { public class MySQLGenericTableHandler : MySqlFramework where T: class, new() { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + protected Dictionary m_Fields = new Dictionary(); @@ -217,7 +219,6 @@ namespace OpenSim.Data.MySQL { using (MySqlCommand cmd = new MySqlCommand()) { - string query = ""; List names = new List(); List values = new List(); @@ -226,6 +227,16 @@ namespace OpenSim.Data.MySQL { names.Add(fi.Name); values.Add("?" + fi.Name); + + // Temporarily return more information about what field is unexpectedly null for + // http://opensimulator.org/mantis/view.php?id=5403. This might be due to a bug in the + // InventoryTransferModule or we may be required to substitute a DBNull here. + if (fi.GetValue(row) == null) + throw new NullReferenceException( + string.Format( + "[MYSQL GENERIC TABLE HANDLER]: Trying to store field {0} for {1} which is unexpectedly null", + fi.Name, row)); + cmd.Parameters.AddWithValue(fi.Name, fi.GetValue(row).ToString()); } @@ -268,4 +279,4 @@ namespace OpenSim.Data.MySQL } } } -} +} \ No newline at end of file From 621d5b58e1a9bc24aab384a5e9bd6eb881928505 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 11 Apr 2011 23:56:04 +0100 Subject: [PATCH 072/138] minor: add a bit more method doc to IInventoryService.GetItem() --- OpenSim/Services/Interfaces/IInventoryService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Services/Interfaces/IInventoryService.cs b/OpenSim/Services/Interfaces/IInventoryService.cs index d19faeddf7..a8bfe479a7 100644 --- a/OpenSim/Services/Interfaces/IInventoryService.cs +++ b/OpenSim/Services/Interfaces/IInventoryService.cs @@ -169,7 +169,7 @@ namespace OpenSim.Services.Interfaces /// Get an item, given by its UUID ///
    /// - /// + /// null if no item was found, otherwise the found item InventoryItemBase GetItem(InventoryItemBase item); /// From 98d7de22dc44ca1e5971301c02a6a1fe49620889 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 12 Apr 2011 18:31:41 +0100 Subject: [PATCH 073/138] Fix (add) ability to rez objects by dragging them out of another prim's inventory. This should happen if the client supplies a task ID with the RezObject call. The rez goes through the same code as llRezObject(), so the same perms are applied. Rotation isn't yet preserved, this should be fixed shortly. --- .../InventoryAccess/InventoryAccessModule.cs | 4 ++ .../Framework/Scenes/Scene.Inventory.cs | 59 +++++++++++++++++-- 2 files changed, 58 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 9fbfc3477f..cdee53c4e2 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -552,8 +552,10 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess /// /// Rez an object into the scene from the user's inventory /// + /// /// FIXME: It would be really nice if inventory access modules didn't also actually do the work of rezzing /// things to the scene. The caller should be doing that, I think. + /// /// /// /// @@ -570,6 +572,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess UUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection, bool RezSelected, bool RemoveItem, UUID fromTaskID, bool attachment) { +// m_log.DebugFormat("[INVENTORY ACCESS MODULE]: RezObject for {0}, item {1}", remoteClient.Name, itemID); + // Work out position details byte bRayEndIsIntersection = (byte)0; diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 73dd531536..43708500fe 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -1955,11 +1955,60 @@ namespace OpenSim.Region.Framework.Scenes UUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection, bool RezSelected, bool RemoveItem, UUID fromTaskID) { - IInventoryAccessModule invAccess = RequestModuleInterface(); - if (invAccess != null) - invAccess.RezObject( - remoteClient, itemID, RayEnd, RayStart, RayTargetID, BypassRayCast, RayEndIsIntersection, - RezSelected, RemoveItem, fromTaskID, false); +// m_log.DebugFormat( +// "[PRIM INVENTORY]: RezObject from {0} for item {1} from task id {2}", +// remoteClient.Name, itemID, fromTaskID); + + if (fromTaskID == UUID.Zero) + { + IInventoryAccessModule invAccess = RequestModuleInterface(); + if (invAccess != null) + invAccess.RezObject( + remoteClient, itemID, RayEnd, RayStart, RayTargetID, BypassRayCast, RayEndIsIntersection, + RezSelected, RemoveItem, fromTaskID, false); + } + else + { + SceneObjectPart part = GetSceneObjectPart(fromTaskID); + if (part == null) + { + m_log.ErrorFormat( + "[TASK INVENTORY]: {0} tried to rez item id {1} from object id {2} but there is no such scene object", + remoteClient.Name, itemID, fromTaskID); + + return; + } + + TaskInventoryItem item = part.Inventory.GetInventoryItem(itemID); + if (item == null) + { + m_log.ErrorFormat( + "[TASK INVENTORY]: {0} tried to rez item id {1} from object id {2} but there is no such item", + remoteClient.Name, itemID, fromTaskID); + + return; + } + + // Work out position details + byte bRayEndIsIntersection = (byte)0; + + if (RayEndIsIntersection) + { + bRayEndIsIntersection = (byte)1; + } + else + { + bRayEndIsIntersection = (byte)0; + } + + Vector3 scale = new Vector3(0.5f, 0.5f, 0.5f); + Vector3 pos + = GetNewRezLocation( + RayStart, RayEnd, RayTargetID, Quaternion.Identity, + BypassRayCast, bRayEndIsIntersection, true, scale, false); + + RezObject(part, item, pos, Quaternion.Identity, Vector3.Zero, 0); + } } /// From 095e602c4ac6da315f3f6711e24f034b6c490a02 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Tue, 12 Apr 2011 12:36:36 -0700 Subject: [PATCH 074/138] First pass at moving object property requests into a queue similar to the entity update queue. The number of property packets can become significant when selecting/deselecting large numbers of objects. This is experimental code. --- .../Client/MXP/ClientStack/MXPClientView.cs | 4 +- .../VWoHTTP/ClientStack/VWHClientView.cs | 4 +- OpenSim/Framework/IClientAPI.cs | 37 +- .../ClientStack/LindenUDP/LLClientView.cs | 367 +++++++++++------- .../ClientStack/LindenUDP/PriorityQueue.cs | 12 +- .../Examples/SimpleModule/MyNpcCharacter.cs | 12 +- .../Framework/Scenes/SceneObjectGroup.cs | 10 +- .../Framework/Scenes/SceneObjectPart.cs | 10 +- .../Server/IRCClientView.cs | 5 +- .../OptionalModules/World/NPC/NPCAvatar.cs | 12 +- OpenSim/Tests/Common/Mock/TestClient.cs | 11 +- 11 files changed, 269 insertions(+), 215 deletions(-) diff --git a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs index d1a0440524..a604a2ee63 100644 --- a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs +++ b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs @@ -1337,12 +1337,12 @@ namespace OpenSim.Client.MXP.ClientStack // Need to translate to MXP somehow } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, uint Category, UUID LastOwnerID, string ObjectName, string Description) + public void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags) { //throw new System.NotImplementedException(); } - public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) { //throw new System.NotImplementedException(); } diff --git a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs index fc27f0198b..d8cd0acbd9 100644 --- a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs +++ b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs @@ -884,12 +884,12 @@ namespace OpenSim.Client.VWoHTTP.ClientStack throw new System.NotImplementedException(); } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, uint Category, UUID LastOwnerID, string ObjectName, string Description) + public void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags) { throw new System.NotImplementedException(); } - public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) { throw new System.NotImplementedException(); } diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index 5bf0b7b0a9..c56a756314 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs @@ -570,16 +570,30 @@ namespace OpenSim.Framework public float dwell; } - public class EntityUpdate + public class IEntityUpdate { public ISceneEntity Entity; - public PrimUpdateFlags Flags; - public float TimeDilation; + public uint Flags; - public EntityUpdate(ISceneEntity entity, PrimUpdateFlags flags, float timedilation) + public IEntityUpdate(ISceneEntity entity, uint flags) { Entity = entity; Flags = flags; + } + } + + + public class EntityUpdate : IEntityUpdate + { + // public ISceneEntity Entity; + // public PrimUpdateFlags Flags; + public float TimeDilation; + + public EntityUpdate(ISceneEntity entity, PrimUpdateFlags flags, float timedilation) + : base(entity,(uint)flags) + { + //Entity = entity; + // Flags = flags; TimeDilation = timedilation; } } @@ -1211,20 +1225,9 @@ namespace OpenSim.Framework /// void SendSimStats(SimStats stats); - void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, - uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, - uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, - uint Category, - UUID LastOwnerID, string ObjectName, string Description); + void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags); - void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, - UUID FromTaskUUID, - UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, - UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, - string ItemName, - string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, - uint EveryoneMask, - uint BaseMask, byte saleType, int salePrice); + void SendObjectPropertiesReply(ISceneEntity Entity); void SendAgentOffline(UUID[] agentIDs); diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 934a2d5c84..b96343e672 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -386,6 +386,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP private int m_cachedTextureSerial; private PriorityQueue m_entityUpdates; + private PriorityQueue m_entityProps; private Prioritizer m_prioritizer; private bool m_disableFacelights = false; @@ -433,9 +434,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP protected IAssetService m_assetService; private const bool m_checkPackets = true; - private Timer m_propertiesPacketTimer; - private List m_propertiesBlocks = new List(); - #endregion Class Members #region Properties @@ -511,6 +509,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_scene = scene; m_entityUpdates = new PriorityQueue(m_scene.Entities.Count); + m_entityProps = new PriorityQueue(m_scene.Entities.Count); m_fullUpdateDataBlocksBuilder = new List(); m_killRecord = new HashSet(); // m_attachmentsSent = new HashSet(); @@ -534,9 +533,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_udpClient.OnQueueEmpty += HandleQueueEmpty; m_udpClient.OnPacketStats += PopulateStats; - m_propertiesPacketTimer = new Timer(100); - m_propertiesPacketTimer.Elapsed += ProcessObjectPropertiesPacket; - m_prioritizer = new Prioritizer(m_scene); RegisterLocalPacketHandlers(); @@ -3636,9 +3632,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_entityUpdates.Enqueue(priority, new EntityUpdate(entity, updateFlags, m_scene.TimeDilation)); } - private Int32 m_LastQueueFill = 0; - private uint m_maxUpdates = 0; - private void ProcessEntityUpdates(int maxUpdates) { OpenSim.Framework.Lazy> objectUpdateBlocks = new OpenSim.Framework.Lazy>(); @@ -3646,46 +3639,30 @@ namespace OpenSim.Region.ClientStack.LindenUDP OpenSim.Framework.Lazy> terseUpdateBlocks = new OpenSim.Framework.Lazy>(); OpenSim.Framework.Lazy> terseAgentUpdateBlocks = new OpenSim.Framework.Lazy>(); + // Check to see if this is a flush if (maxUpdates <= 0) { - m_maxUpdates = Int32.MaxValue; + maxUpdates = Int32.MaxValue; } - else - { - if (m_maxUpdates == 0 || m_LastQueueFill == 0) - { - m_maxUpdates = (uint)maxUpdates; - } - else - { - if (Util.EnvironmentTickCountSubtract(m_LastQueueFill) < 200) - m_maxUpdates += 5; - else - m_maxUpdates = m_maxUpdates >> 1; - } - m_maxUpdates = Util.Clamp(m_maxUpdates,10,500); - } - m_LastQueueFill = Util.EnvironmentTickCount(); - + int updatesThisCall = 0; -// -// DEBUGGING CODE... REMOVE -// LogQueueProcessEvent(this.m_agentId,m_entityUpdates,m_maxUpdates); -// // We must lock for both manipulating the kill record and sending the packet, in order to avoid a race // condition where a kill can be processed before an out-of-date update for the same object. lock (m_killRecord) { float avgTimeDilation = 1.0f; - EntityUpdate update; + IEntityUpdate iupdate; Int32 timeinqueue; // this is just debugging code & can be dropped later - while (updatesThisCall < m_maxUpdates) + while (updatesThisCall < maxUpdates) { lock (m_entityUpdates.SyncRoot) - if (!m_entityUpdates.TryDequeue(out update, out timeinqueue)) + if (!m_entityUpdates.TryDequeue(out iupdate, out timeinqueue)) break; + + EntityUpdate update = (EntityUpdate)iupdate; + avgTimeDilation += update.TimeDilation; avgTimeDilation *= 0.5f; @@ -3725,7 +3702,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP #region UpdateFlags to packet type conversion - PrimUpdateFlags updateFlags = update.Flags; + PrimUpdateFlags updateFlags = (PrimUpdateFlags)update.Flags; bool canUseCompressed = true; bool canUseImproved = true; @@ -3804,6 +3781,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP #endregion Block Construction } + #region Packet Sending @@ -3904,12 +3882,36 @@ namespace OpenSim.Region.ClientStack.LindenUDP #endregion Primitive Packet/Data Sending Methods + // These are used to implement an adaptive backoff in the number + // of updates converted to packets. Since we don't want packets + // to sit in the queue with old data, only convert enough updates + // to packets that can be sent in 200ms. + private Int32 m_LastQueueFill = 0; + private Int32 m_maxUpdates = 0; + void HandleQueueEmpty(ThrottleOutPacketTypeFlags categories) { if ((categories & ThrottleOutPacketTypeFlags.Task) != 0) { + if (m_maxUpdates == 0 || m_LastQueueFill == 0) + { + m_maxUpdates = m_udpServer.PrimUpdatesPerCallback; + } + else + { + if (Util.EnvironmentTickCountSubtract(m_LastQueueFill) < 200) + m_maxUpdates += 5; + else + m_maxUpdates = m_maxUpdates >> 1; + } + m_maxUpdates = Util.Clamp(m_maxUpdates,10,500); + m_LastQueueFill = Util.EnvironmentTickCount(); + if (m_entityUpdates.Count > 0) - ProcessEntityUpdates(m_udpServer.PrimUpdatesPerCallback); + ProcessEntityUpdates(m_maxUpdates); + + if (m_entityProps.Count > 0) + ProcessEntityPropertyRequests(m_maxUpdates); } if ((categories & ThrottleOutPacketTypeFlags.Texture) != 0) @@ -4023,47 +4025,147 @@ namespace OpenSim.Region.ClientStack.LindenUDP OutPacket(pack, ThrottleOutPacketType.Task); } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, - uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, - uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, uint Category, - UUID LastOwnerID, string ObjectName, string Description) +/// ----------------------------------------------------------------- +/// +/// ----------------------------------------------------------------- + + private class ObjectPropertyUpdate : IEntityUpdate { - ObjectPropertiesFamilyPacket objPropFamilyPack = (ObjectPropertiesFamilyPacket)PacketPool.Instance.GetPacket(PacketType.ObjectPropertiesFamily); - // TODO: don't create new blocks if recycling an old packet - - ObjectPropertiesFamilyPacket.ObjectDataBlock objPropDB = new ObjectPropertiesFamilyPacket.ObjectDataBlock(); - objPropDB.RequestFlags = RequestFlags; - objPropDB.ObjectID = ObjectUUID; - if (OwnerID == GroupID) - objPropDB.OwnerID = UUID.Zero; - else - objPropDB.OwnerID = OwnerID; - objPropDB.GroupID = GroupID; - objPropDB.BaseMask = BaseMask; - objPropDB.OwnerMask = OwnerMask; - objPropDB.GroupMask = GroupMask; - objPropDB.EveryoneMask = EveryoneMask; - objPropDB.NextOwnerMask = NextOwnerMask; - - // TODO: More properties are needed in SceneObjectPart! - objPropDB.OwnershipCost = OwnershipCost; - objPropDB.SaleType = SaleType; - objPropDB.SalePrice = SalePrice; - objPropDB.Category = Category; - objPropDB.LastOwnerID = LastOwnerID; - objPropDB.Name = Util.StringToBytes256(ObjectName); - objPropDB.Description = Util.StringToBytes256(Description); - objPropFamilyPack.ObjectData = objPropDB; - objPropFamilyPack.Header.Zerocoded = true; - OutPacket(objPropFamilyPack, ThrottleOutPacketType.Task); + internal bool SendFamilyProps; + + public ObjectPropertyUpdate(ISceneEntity entity, uint flags, bool sendfam) + : base(entity,flags) + { + SendFamilyProps = sendfam; + } + } + + public void SendObjectPropertiesFamilyData(ISceneEntity entity, uint requestFlags) + { + uint priority = m_prioritizer.GetUpdatePriority(this, entity); + lock (m_entityProps.SyncRoot) + m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,requestFlags,true)); } - public void SendObjectPropertiesReply( - UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, - UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, - UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, - string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, - uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) + { + uint priority = m_prioritizer.GetUpdatePriority(this, entity); + lock (m_entityProps.SyncRoot) + m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,0,false)); + } + + private void ProcessEntityPropertyRequests(int maxUpdates) + { + OpenSim.Framework.Lazy> objectFamilyBlocks = + new OpenSim.Framework.Lazy>(); + + OpenSim.Framework.Lazy> objectPropertiesBlocks = + new OpenSim.Framework.Lazy>(); + + IEntityUpdate iupdate; + Int32 timeinqueue; // this is just debugging code & can be dropped later + + int updatesThisCall = 0; + while (updatesThisCall < m_maxUpdates) + { + lock (m_entityProps.SyncRoot) + if (!m_entityProps.TryDequeue(out iupdate, out timeinqueue)) + break; + + ObjectPropertyUpdate update = (ObjectPropertyUpdate)iupdate; + if (update.SendFamilyProps) + { + if (update.Entity is SceneObjectPart) + { + SceneObjectPart sop = (SceneObjectPart)update.Entity; + ObjectPropertiesFamilyPacket.ObjectDataBlock objPropDB = CreateObjectPropertiesFamilyBlock(sop,update.Flags); + objectFamilyBlocks.Value.Add(objPropDB); + } + } + else + { + if (update.Entity is SceneObjectPart) + { + SceneObjectPart sop = (SceneObjectPart)update.Entity; + ObjectPropertiesPacket.ObjectDataBlock objPropDB = CreateObjectPropertiesBlock(sop); + objectPropertiesBlocks.Value.Add(objPropDB); + } + } + } + + + if (objectPropertiesBlocks.IsValueCreated) + { + List blocks = objectPropertiesBlocks.Value; + + ObjectPropertiesPacket packet = (ObjectPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.ObjectProperties); + packet.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[blocks.Count]; + for (int i = 0; i < blocks.Count; i++) + packet.ObjectData[i] = blocks[i]; + + packet.Header.Zerocoded = true; + OutPacket(packet, ThrottleOutPacketType.Task, true); + } + + + if (objectFamilyBlocks.IsValueCreated) + { + List blocks = objectFamilyBlocks.Value; + + // ObjectPropertiesFamilyPacket objPropFamilyPack = + // (ObjectPropertiesFamilyPacket)PacketPool.Instance.GetPacket(PacketType.ObjectPropertiesFamily); + // + // objPropFamilyPack.ObjectData = new ObjectPropertiesFamilyPacket.ObjectDataBlock[blocks.Count]; + // for (int i = 0; i < blocks.Count; i++) + // objPropFamilyPack.ObjectData[i] = blocks[i]; + // + // OutPacket(objPropFamilyPack, ThrottleOutPacketType.Task, true); + + // one packet per object block... uggh... + for (int i = 0; i < blocks.Count; i++) + { + ObjectPropertiesFamilyPacket packet = + (ObjectPropertiesFamilyPacket)PacketPool.Instance.GetPacket(PacketType.ObjectPropertiesFamily); + + packet.ObjectData = blocks[i]; + packet.Header.Zerocoded = true; + OutPacket(packet, ThrottleOutPacketType.Task); + } + + } + + } + + private ObjectPropertiesFamilyPacket.ObjectDataBlock CreateObjectPropertiesFamilyBlock(SceneObjectPart sop, uint requestFlags) + { + ObjectPropertiesFamilyPacket.ObjectDataBlock block = new ObjectPropertiesFamilyPacket.ObjectDataBlock(); + + block.RequestFlags = requestFlags; + block.ObjectID = sop.UUID; + if (sop.OwnerID == sop.GroupID) + block.OwnerID = UUID.Zero; + else + block.OwnerID = sop.OwnerID; + block.GroupID = sop.GroupID; + block.BaseMask = sop.BaseMask; + block.OwnerMask = sop.OwnerMask; + block.GroupMask = sop.GroupMask; + block.EveryoneMask = sop.EveryoneMask; + block.NextOwnerMask = sop.NextOwnerMask; + + // TODO: More properties are needed in SceneObjectPart! + block.OwnershipCost = sop.OwnershipCost; + block.SaleType = sop.ObjectSaleType; + block.SalePrice = sop.SalePrice; + block.Category = sop.Category; + block.LastOwnerID = sop.CreatorID; // copied from old SOG call... is this right? + block.Name = Util.StringToBytes256(sop.Name); + block.Description = Util.StringToBytes256(sop.Description); + + return block; + } + + private ObjectPropertiesPacket.ObjectDataBlock CreateObjectPropertiesBlock(SceneObjectPart sop) { //ObjectPropertiesPacket proper = (ObjectPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.ObjectProperties); // TODO: don't create new blocks if recycling an old packet @@ -4071,85 +4173,43 @@ namespace OpenSim.Region.ClientStack.LindenUDP ObjectPropertiesPacket.ObjectDataBlock block = new ObjectPropertiesPacket.ObjectDataBlock(); - block.ItemID = ItemID; - block.CreationDate = CreationDate; - block.CreatorID = CreatorUUID; - block.FolderID = FolderUUID; - block.FromTaskID = FromTaskUUID; - block.GroupID = GroupUUID; - block.InventorySerial = InventorySerial; + block.ObjectID = sop.UUID; + block.Name = Util.StringToBytes256(sop.Name); + block.Description = Util.StringToBytes256(sop.Description); - block.LastOwnerID = LastOwnerUUID; - // proper.ObjectData[0].LastOwnerID = UUID.Zero; - - block.ObjectID = ObjectUUID; - if (OwnerUUID == GroupUUID) + block.CreationDate = (ulong)sop.CreationDate * 1000000; // viewer wants date in microseconds + block.CreatorID = sop.CreatorID; + block.GroupID = sop.GroupID; + block.LastOwnerID = sop.LastOwnerID; + if (sop.OwnerID == sop.GroupID) block.OwnerID = UUID.Zero; else - block.OwnerID = OwnerUUID; - block.TouchName = Util.StringToBytes256(TouchTitle); - block.TextureID = TextureID; - block.SitName = Util.StringToBytes256(SitTitle); - block.Name = Util.StringToBytes256(ItemName); - block.Description = Util.StringToBytes256(ItemDescription); - block.OwnerMask = OwnerMask; - block.NextOwnerMask = NextOwnerMask; - block.GroupMask = GroupMask; - block.EveryoneMask = EveryoneMask; - block.BaseMask = BaseMask; - // proper.ObjectData[0].AggregatePerms = 53; - // proper.ObjectData[0].AggregatePermTextures = 0; - // proper.ObjectData[0].AggregatePermTexturesOwner = 0; - block.SaleType = saleType; - block.SalePrice = salePrice; + block.OwnerID = sop.OwnerID; - lock (m_propertiesPacketTimer) - { - m_propertiesBlocks.Add(block); + block.ItemID = sop.FromUserInventoryItemID; + block.FolderID = UUID.Zero; // sop.FromFolderID ?? + block.FromTaskID = UUID.Zero; // ??? + block.InventorySerial = (short)sop.InventorySerial; + + SceneObjectPart root = sop.ParentGroup.RootPart; - int length = 0; - foreach (ObjectPropertiesPacket.ObjectDataBlock b in m_propertiesBlocks) - { - length += b.Length; - } - if (length > 1100) // FIXME: use real MTU - { - ProcessObjectPropertiesPacket(null, null); - m_propertiesPacketTimer.Stop(); - return; - } + block.TouchName = Util.StringToBytes256(root.TouchName); + block.TextureID = new byte[0]; // TextureID ??? + block.SitName = Util.StringToBytes256(root.SitName); + block.OwnerMask = root.OwnerMask; + block.NextOwnerMask = root.NextOwnerMask; + block.GroupMask = root.GroupMask; + block.EveryoneMask = root.EveryoneMask; + block.BaseMask = root.BaseMask; + block.SaleType = root.ObjectSaleType; + block.SalePrice = root.SalePrice; - m_propertiesPacketTimer.Stop(); - m_propertiesPacketTimer.Start(); - } - - //proper.Header.Zerocoded = true; - //OutPacket(proper, ThrottleOutPacketType.Task); + return block; } - private void ProcessObjectPropertiesPacket(Object sender, ElapsedEventArgs e) - { - ObjectPropertiesPacket proper = (ObjectPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.ObjectProperties); - - lock (m_propertiesPacketTimer) - { - m_propertiesPacketTimer.Stop(); - - proper.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[m_propertiesBlocks.Count]; - - int index = 0; - - foreach (ObjectPropertiesPacket.ObjectDataBlock b in m_propertiesBlocks) - { - proper.ObjectData[index++] = b; - } - - m_propertiesBlocks.Clear(); - } - - proper.Header.Zerocoded = true; - OutPacket(proper, ThrottleOutPacketType.Task); - } +/// ----------------------------------------------------------------- +/// +/// ----------------------------------------------------------------- #region Estate Data Sending Methods @@ -4482,6 +4542,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP public void SendForceClientSelectObjects(List ObjectIDs) { + m_log.WarnFormat("[LLCLIENTVIEW] sending select with {0} objects", ObjectIDs.Count); + bool firstCall = true; const int MAX_OBJECTS_PER_PACKET = 251; ForceObjectSelectPacket pack = (ForceObjectSelectPacket)PacketPool.Instance.GetPacket(PacketType.ForceObjectSelect); @@ -11374,6 +11436,21 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_log.DebugFormat("[CLIENT]: Packet OUT {0}", packet.Type); } + if (throttlePacketType == ThrottleOutPacketType.Task) + { + System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace(); // get call stack + System.Diagnostics.StackFrame[] stackFrames = stackTrace.GetFrames(); // get method calls (frames) + + string stack = ""; + for (int count = 1; count < stackFrames.Length; count++) + { + stack += (stack == "" ? "" : ",") + stackFrames[count].GetMethod().Name; + if (count > 5) break; + } + + // m_log.WarnFormat("[BADGUY] {0}", stack); + } + m_udpServer.SendPacket(m_udpClient, packet, throttlePacketType, doAutomaticSplitting); } diff --git a/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs b/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs index 364ce4ba9e..6521a00745 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs @@ -78,7 +78,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } } - public bool Enqueue(uint pqueue, EntityUpdate value) + public bool Enqueue(uint pqueue, IEntityUpdate value) { LookupItem lookup; @@ -99,7 +99,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP return true; } - internal bool TryDequeue(out EntityUpdate value, out Int32 timeinqueue) + internal bool TryDequeue(out IEntityUpdate value, out Int32 timeinqueue) { for (int i = 0; i < m_numberOfQueues; ++i) { @@ -122,7 +122,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } timeinqueue = 0; - value = default(EntityUpdate); + value = default(IEntityUpdate); return false; } @@ -175,8 +175,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP #region MinHeapItem private struct MinHeapItem : IComparable { - private EntityUpdate value; - internal EntityUpdate Value { + private IEntityUpdate value; + internal IEntityUpdate Value { get { return this.value; } @@ -212,7 +212,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP this.pqueue = pqueue; } - internal MinHeapItem(uint pqueue, UInt64 entryorder, EntityUpdate value) + internal MinHeapItem(uint pqueue, UInt64 entryorder, IEntityUpdate value) { this.entrytime = Util.EnvironmentTickCount(); this.entryorder = entryorder; diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs index d939329814..89e9e204bb 100644 --- a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs +++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs @@ -702,18 +702,12 @@ namespace OpenSim.Region.Examples.SimpleModule { } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, - uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, - uint NextOwnerMask, int OwnershipCost, byte SaleType,int SalePrice, uint Category, - UUID LastOwnerID, string ObjectName, string Description) + public void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags) { + } - public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, - UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, - UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, - string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, - uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) { } diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index ca7d9d9d57..30563d4232 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -1765,10 +1765,12 @@ namespace OpenSim.Region.Framework.Scenes /// public void ServiceObjectPropertiesFamilyRequest(IClientAPI remoteClient, UUID AgentID, uint RequestFlags) { - remoteClient.SendObjectPropertiesFamilyData(RequestFlags, RootPart.UUID, RootPart.OwnerID, RootPart.GroupID, RootPart.BaseMask, - RootPart.OwnerMask, RootPart.GroupMask, RootPart.EveryoneMask, RootPart.NextOwnerMask, - RootPart.OwnershipCost, RootPart.ObjectSaleType, RootPart.SalePrice, RootPart.Category, - RootPart.CreatorID, RootPart.Name, RootPart.Description); + remoteClient.SendObjectPropertiesFamilyData(RootPart, RequestFlags); + +// remoteClient.SendObjectPropertiesFamilyData(RequestFlags, RootPart.UUID, RootPart.OwnerID, RootPart.GroupID, RootPart.BaseMask, +// RootPart.OwnerMask, RootPart.GroupMask, RootPart.EveryoneMask, RootPart.NextOwnerMask, +// RootPart.OwnershipCost, RootPart.ObjectSaleType, RootPart.SalePrice, RootPart.Category, +// RootPart.CreatorID, RootPart.Name, RootPart.Description); } public void SetPartOwner(SceneObjectPart part, UUID cAgentID, UUID cGroupID) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 4d5eedfc95..3d2eacd720 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -2055,15 +2055,7 @@ namespace OpenSim.Region.Framework.Scenes public void GetProperties(IClientAPI client) { - //Viewer wants date in microseconds so multiply it by 1,000,000. - client.SendObjectPropertiesReply( - m_fromUserInventoryItemID, (ulong)_creationDate*(ulong)1e6, _creatorID, UUID.Zero, UUID.Zero, - _groupID, (short)InventorySerial, _lastOwnerID, UUID, _ownerID, - ParentGroup.RootPart.TouchName, new byte[0], ParentGroup.RootPart.SitName, Name, Description, - ParentGroup.RootPart._ownerMask, ParentGroup.RootPart._nextOwnerMask, ParentGroup.RootPart._groupMask, ParentGroup.RootPart._everyoneMask, - ParentGroup.RootPart._baseMask, - ParentGroup.RootPart.ObjectSaleType, - ParentGroup.RootPart.SalePrice); + client.SendObjectPropertiesReply(this); } public UUID GetRootPartUUID() diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs index 821cd4bd33..4b6e52e757 100644 --- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs +++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs @@ -1332,14 +1332,13 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, uint Category, UUID LastOwnerID, string ObjectName, string Description) + public void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags) { } - public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) { - } public void SendAgentOffline(UUID[] agentIDs) diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs index 96760a2721..2504e3019c 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs @@ -786,18 +786,12 @@ namespace OpenSim.Region.OptionalModules.World.NPC { } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, - uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, - uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, uint Category, - UUID LastOwnerID, string ObjectName, string Description) + public void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags) { + } - public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, - UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, - UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, - string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, - uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) { } diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs index d1dc17fc9b..dca562674b 100644 --- a/OpenSim/Tests/Common/Mock/TestClient.cs +++ b/OpenSim/Tests/Common/Mock/TestClient.cs @@ -816,18 +816,11 @@ namespace OpenSim.Tests.Common.Mock { } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, - uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, - uint NextOwnerMask, int OwnershipCost, byte SaleType,int SalePrice, uint Category, - UUID LastOwnerID, string ObjectName, string Description) + public void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags) { } - public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, - UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, - UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, - string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, - uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) { } From 3ba5eeb6c3b7c6381ca1e0ed87bce44049f96e37 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 12 Apr 2011 22:15:40 +0100 Subject: [PATCH 075/138] Allow a null rotation to be passed in to RezObject so that we can control whether to use the serialized rotation or not. Not used yet. --- .../Framework/Scenes/Scene.Inventory.cs | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 43708500fe..87b4cb8741 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -2016,14 +2016,14 @@ namespace OpenSim.Region.Framework.Scenes /// /// /// - /// - /// - /// + /// The position of the rezzed object. + /// The rotation of the rezzed object. If null, then the rotation stored with the object + /// will be used if it exists. + /// The velocity of the rezzed object. /// /// The SceneObjectGroup rezzed or null if rez was unsuccessful public virtual SceneObjectGroup RezObject( - SceneObjectPart sourcePart, TaskInventoryItem item, - Vector3 pos, Quaternion rot, Vector3 vel, int param) + SceneObjectPart sourcePart, TaskInventoryItem item, Vector3 pos, Quaternion? rot, Vector3 vel, int param) { if (null == item) return null; @@ -2041,8 +2041,14 @@ namespace OpenSim.Region.Framework.Scenes if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) sourcePart.Inventory.RemoveInventoryItem(item.ItemID); } - - AddNewSceneObject(group, true, pos, rot, vel); + + AddNewSceneObject(group, true); + + group.AbsolutePosition = pos; + group.Velocity = vel; + + if (rot != null) + group.UpdateGroupRotationR((Quaternion)rot); // We can only call this after adding the scene object, since the scene object references the scene // to find out if scripts should be activated at all. From 8e0d2cc43b63046b0dd6b9a3a7dafd70a70362d0 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 12 Apr 2011 22:21:46 +0100 Subject: [PATCH 076/138] If an object is rezzed directly from a prim inventory then give it the rotation it was stored with. --- OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 87b4cb8741..254879b937 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -2007,7 +2007,7 @@ namespace OpenSim.Region.Framework.Scenes RayStart, RayEnd, RayTargetID, Quaternion.Identity, BypassRayCast, bRayEndIsIntersection, true, scale, false); - RezObject(part, item, pos, Quaternion.Identity, Vector3.Zero, 0); + RezObject(part, item, pos, null, Vector3.Zero, 0); } } From b0889ed92a3c7d152f9b05aec1ce00dfc010e34e Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 12 Apr 2011 22:30:43 +0100 Subject: [PATCH 077/138] refactor: simplify bRayEndIsIntersection boolean set from RayEndIsIntersection byte --- .../InventoryAccess/InventoryAccessModule.cs | 15 +-------------- .../Region/Framework/Scenes/Scene.Inventory.cs | 13 +------------ 2 files changed, 2 insertions(+), 26 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index cdee53c4e2..73b0a35b7c 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -574,21 +574,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess { // m_log.DebugFormat("[INVENTORY ACCESS MODULE]: RezObject for {0}, item {1}", remoteClient.Name, itemID); - // Work out position details - byte bRayEndIsIntersection = (byte)0; - - if (RayEndIsIntersection) - { - bRayEndIsIntersection = (byte)1; - } - else - { - bRayEndIsIntersection = (byte)0; - } - + byte bRayEndIsIntersection = (byte)(RayEndIsIntersection ? 1 : 0); Vector3 scale = new Vector3(0.5f, 0.5f, 0.5f); - - Vector3 pos = m_Scene.GetNewRezLocation( RayStart, RayEnd, RayTargetID, Quaternion.Identity, BypassRayCast, bRayEndIsIntersection, true, scale, false); diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 254879b937..0f85925c78 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -1989,18 +1989,7 @@ namespace OpenSim.Region.Framework.Scenes return; } - // Work out position details - byte bRayEndIsIntersection = (byte)0; - - if (RayEndIsIntersection) - { - bRayEndIsIntersection = (byte)1; - } - else - { - bRayEndIsIntersection = (byte)0; - } - + byte bRayEndIsIntersection = (byte)(RayEndIsIntersection ? 1 : 0); Vector3 scale = new Vector3(0.5f, 0.5f, 0.5f); Vector3 pos = GetNewRezLocation( From da4a9653a27cbb1ecc779774a3d8715afb079086 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 12 Apr 2011 22:33:06 +0100 Subject: [PATCH 078/138] minor: remove some mono compiler warnings --- OpenSim/Data/Null/NullEstateData.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OpenSim/Data/Null/NullEstateData.cs b/OpenSim/Data/Null/NullEstateData.cs index 0cebff55aa..8db8064cbe 100755 --- a/OpenSim/Data/Null/NullEstateData.cs +++ b/OpenSim/Data/Null/NullEstateData.cs @@ -38,9 +38,9 @@ namespace OpenSim.Data.Null { public class NullEstateStore : IEstateDataStore { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); +// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - private string m_connectionString; +// private string m_connectionString; protected virtual Assembly Assembly { @@ -58,7 +58,7 @@ namespace OpenSim.Data.Null public void Initialise(string connectionString) { - m_connectionString = connectionString; +// m_connectionString = connectionString; } private string[] FieldList From 7fa085b3fa8eacbfec4b9f8969bcbcc210ee50f0 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Tue, 12 Apr 2011 14:40:57 -0700 Subject: [PATCH 079/138] fixed a couple bugs with the property queues --- .../ClientStack/LindenUDP/LLClientView.cs | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index b96343e672..4db5b222d2 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -4091,9 +4091,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP objectPropertiesBlocks.Value.Add(objPropDB); } } + + updatesThisCall++; } + Int32 ppcnt = 0; + Int32 pbcnt = 0; + if (objectPropertiesBlocks.IsValueCreated) { List blocks = objectPropertiesBlocks.Value; @@ -4105,9 +4110,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP packet.Header.Zerocoded = true; OutPacket(packet, ThrottleOutPacketType.Task, true); + + pbcnt += blocks.Count; + ppcnt++; } + Int32 fpcnt = 0; + Int32 fbcnt = 0; + if (objectFamilyBlocks.IsValueCreated) { List blocks = objectFamilyBlocks.Value; @@ -4130,10 +4141,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP packet.ObjectData = blocks[i]; packet.Header.Zerocoded = true; OutPacket(packet, ThrottleOutPacketType.Task); + + fpcnt++; + fbcnt++; } } + m_log.WarnFormat("[PACKETCOUNTS] queued {0} property packets with {1} blocks",ppcnt,pbcnt); + m_log.WarnFormat("[PACKETCOUNTS] queued {0} family property packets with {1} blocks",fpcnt,fbcnt); } private ObjectPropertiesFamilyPacket.ObjectDataBlock CreateObjectPropertiesFamilyBlock(SceneObjectPart sop, uint requestFlags) @@ -11401,6 +11417,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP OutPacket(packet, throttlePacketType, true); } +/// + Dictionary pktsrc = new Dictionary(); + uint pktcnt = 0; +/// + /// /// This is the starting point for sending a simulator packet out to the client /// @@ -11448,7 +11469,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP if (count > 5) break; } - // m_log.WarnFormat("[BADGUY] {0}", stack); + lock(pktsrc) + { + if (! pktsrc.ContainsKey(stack)) + pktsrc.Add(stack,0); + pktsrc[stack]++; + + if (++pktcnt > 500) + { + pktcnt = 0; + m_log.WarnFormat("[PACKETCOUNTS] START"); + foreach (KeyValuePair pkt in pktsrc) + m_log.WarnFormat("[PACKETCOUNTS] {0,8}, {1}", pkt.Value, pkt.Key); + pktsrc.Clear(); + m_log.WarnFormat("[PACKETCOUNTS] END"); + } + } } m_udpServer.SendPacket(m_udpClient, packet, throttlePacketType, doAutomaticSplitting); From bed463666cdc023bab8db2b725fb85736d2067df Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 12 Apr 2011 23:16:43 +0100 Subject: [PATCH 080/138] minor typo correction. thanks Ai Austin. --- bin/OpenSim.ini.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 55723d1efb..823daa0cc4 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -16,7 +16,7 @@ ;; files are loaded then type "config show" on the region console command line. ;; ;; -;; NOTES FOR DEVELOPERS REGARDING FORMAT OF TIHS FILE +;; NOTES FOR DEVELOPERS REGARDING THE FORMAT OF THIS FILE ;; ;; All leading white space is ignored, but preserved. ;; From 424995e1384178462799469e0200615308035460 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 12 Apr 2011 23:22:21 +0100 Subject: [PATCH 081/138] Move example HttpProxy setting to OpenSim.ini.example and tidy --- bin/OpenSim.ini.example | 8 ++++++++ bin/OpenSimDefaults.ini | 9 --------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 823daa0cc4..c05c3de2c4 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -201,6 +201,14 @@ ;; If not generating maptiles, use this static texture asset ID ; MaptileStaticUUID = "00000000-0000-0000-0000-000000000000" + ;; Http proxy setting for llHTTPRequest and dynamic texture loading, if required + ; HttpProxy = "http://proxy.com:8080" + + ;; If you're using HttpProxy, then you can set HttpProxyExceptions to a list of regular expressions for URLs that you don't want to go through the proxy + ;; For example, servers inside your firewall. + ;; Separate patterns with a ';' + ; HttpProxyExceptions = ".mydomain.com;localhost" + ;# {emailmodule} {} {Provide llEmail and llGetNextEmail functionality? (requires SMTP server)} {true false} false ;; The email module requires some configuration. It needs an SMTP ;; server to send mail through. diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index d6eee0e101..f857b8da63 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -14,15 +14,6 @@ ; Place to create a PID file ; PIDFile = "/tmp/my.pid" - ; Http proxy support for llHTTPRequest and dynamic texture loading - ; Set HttpProxy to the URL for your proxy server if you would like - ; to proxy llHTTPRequests through a firewall - ; HttpProxy = "http://proxy.com" - ; Set HttpProxyExceptions to a list of regular expressions for - ; URLs that you don't want going through the proxy such as servers - ; inside your firewall, separate patterns with a ';' - ; HttpProxyExceptions = ".mydomain.com;localhost" - startup_console_commands_file = "startup_commands.txt" shutdown_console_commands_file = "shutdown_commands.txt" From 80ba3de90240d190bad1bd15ff89dfdb390c5e24 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Tue, 12 Apr 2011 15:40:57 -0700 Subject: [PATCH 082/138] Fixed the update of items in the priority queue to enable both types of property updates to be specified. Not sure if one form of property update should supercede another. But for now the old OpenSim behavior is preserved by sending both. --- OpenSim/Framework/IClientAPI.cs | 5 +++++ .../ClientStack/LindenUDP/LLClientView.cs | 21 +++++++++++++------ .../ClientStack/LindenUDP/PriorityQueue.cs | 2 +- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index c56a756314..f573c32d07 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs @@ -575,6 +575,11 @@ namespace OpenSim.Framework public ISceneEntity Entity; public uint Flags; + public virtual void Update(IEntityUpdate update) + { + this.Flags |= update.Flags; + } + public IEntityUpdate(ISceneEntity entity, uint flags) { Entity = entity; diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 4db5b222d2..92a76acba6 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -4032,26 +4032,34 @@ namespace OpenSim.Region.ClientStack.LindenUDP private class ObjectPropertyUpdate : IEntityUpdate { internal bool SendFamilyProps; + internal bool SendObjectProps; - public ObjectPropertyUpdate(ISceneEntity entity, uint flags, bool sendfam) + public ObjectPropertyUpdate(ISceneEntity entity, uint flags, bool sendfam, bool sendobj) : base(entity,flags) { SendFamilyProps = sendfam; + SendObjectProps = sendobj; + } + public void Update(ObjectPropertyUpdate update) + { + SendFamilyProps = SendFamilyProps || update.SendFamilyProps; + SendObjectProps = SendObjectProps || update.SendObjectProps; + Flags |= update.Flags; } } public void SendObjectPropertiesFamilyData(ISceneEntity entity, uint requestFlags) { - uint priority = m_prioritizer.GetUpdatePriority(this, entity); + uint priority = 0; // time based ordering only lock (m_entityProps.SyncRoot) - m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,requestFlags,true)); + m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,requestFlags,true,false)); } public void SendObjectPropertiesReply(ISceneEntity entity) { - uint priority = m_prioritizer.GetUpdatePriority(this, entity); + uint priority = 0; // time based ordering only lock (m_entityProps.SyncRoot) - m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,0,false)); + m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,0,false,true)); } private void ProcessEntityPropertyRequests(int maxUpdates) @@ -4082,7 +4090,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP objectFamilyBlocks.Value.Add(objPropDB); } } - else + + if (update.SendObjectProps) { if (update.Entity is SceneObjectPart) { diff --git a/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs b/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs index 6521a00745..b62ec07ed9 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs @@ -87,7 +87,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP if (m_lookupTable.TryGetValue(localid, out lookup)) { entry = lookup.Heap[lookup.Handle].EntryOrder; - value.Flags |= lookup.Heap[lookup.Handle].Value.Flags; + value.Update(lookup.Heap[lookup.Handle].Value); lookup.Heap.Remove(lookup.Handle); } From 317617cfda5356e9d375d00c93cd0d23a489107e Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Tue, 12 Apr 2011 15:55:21 -0700 Subject: [PATCH 083/138] remove packet monitoring debugging code --- .../ClientStack/LindenUDP/LLClientView.cs | 118 +----------------- 1 file changed, 2 insertions(+), 116 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 92a76acba6..cf04f0d809 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -300,77 +300,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// Used to adjust Sun Orbit values so Linden based viewers properly position sun private const float m_sunPainDaHalfOrbitalCutoff = 4.712388980384689858f; - // First log file or time has expired, start writing to a new log file -// -// ----------------------------------------------------------------- -// ----------------------------------------------------------------- -// THIS IS DEBUGGING CODE & SHOULD BE REMOVED -// ----------------------------------------------------------------- -// ----------------------------------------------------------------- - public class QueueLogger - { - public Int32 start = 0; - public StreamWriter Log = null; - private Dictionary m_idMap = new Dictionary(); - - public QueueLogger() - { - DateTime now = DateTime.Now; - String fname = String.Format("queue-{0}.log", now.ToString("yyyyMMddHHmmss")); - Log = new StreamWriter(fname); - - start = Util.EnvironmentTickCount(); - } - - public int LookupID(UUID uuid) - { - int localid; - if (! m_idMap.TryGetValue(uuid,out localid)) - { - localid = m_idMap.Count + 1; - m_idMap[uuid] = localid; - } - - return localid; - } - } - - public static QueueLogger QueueLog = null; - - // ----------------------------------------------------------------- - public void LogAvatarUpdateEvent(UUID client, UUID avatar, Int32 timeinqueue) - { - if (QueueLog == null) - QueueLog = new QueueLogger(); - - Int32 ticks = Util.EnvironmentTickCountSubtract(QueueLog.start); - lock(QueueLog) - { - int cid = QueueLog.LookupID(client); - int aid = QueueLog.LookupID(avatar); - QueueLog.Log.WriteLine("{0},AU,AV{1:D4},AV{2:D4},{3}",ticks,cid,aid,timeinqueue); - } - } - - // ----------------------------------------------------------------- - public void LogQueueProcessEvent(UUID client, PriorityQueue queue, uint maxup) - { - if (QueueLog == null) - QueueLog = new QueueLogger(); - - Int32 ticks = Util.EnvironmentTickCountSubtract(QueueLog.start); - lock(QueueLog) - { - int cid = QueueLog.LookupID(client); - QueueLog.Log.WriteLine("{0},PQ,AV{1:D4},{2},{3}",ticks,cid,maxup,queue.ToString()); - } - } -// ----------------------------------------------------------------- -// ----------------------------------------------------------------- -// ----------------------------------------------------------------- -// ----------------------------------------------------------------- -// - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); protected static Dictionary PacketHandlers = new Dictionary(); //Global/static handlers for all clients @@ -4025,10 +3954,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP OutPacket(pack, ThrottleOutPacketType.Task); } -/// ----------------------------------------------------------------- -/// -/// ----------------------------------------------------------------- - private class ObjectPropertyUpdate : IEntityUpdate { internal bool SendFamilyProps; @@ -4157,8 +4082,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP } - m_log.WarnFormat("[PACKETCOUNTS] queued {0} property packets with {1} blocks",ppcnt,pbcnt); - m_log.WarnFormat("[PACKETCOUNTS] queued {0} family property packets with {1} blocks",fpcnt,fbcnt); + // m_log.WarnFormat("[PACKETCOUNTS] queued {0} property packets with {1} blocks",ppcnt,pbcnt); + // m_log.WarnFormat("[PACKETCOUNTS] queued {0} family property packets with {1} blocks",fpcnt,fbcnt); } private ObjectPropertiesFamilyPacket.ObjectDataBlock CreateObjectPropertiesFamilyBlock(SceneObjectPart sop, uint requestFlags) @@ -4232,10 +4157,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP return block; } -/// ----------------------------------------------------------------- -/// -/// ----------------------------------------------------------------- - #region Estate Data Sending Methods private static bool convertParamStringToBool(byte[] field) @@ -11426,11 +11347,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP OutPacket(packet, throttlePacketType, true); } -/// - Dictionary pktsrc = new Dictionary(); - uint pktcnt = 0; -/// - /// /// This is the starting point for sending a simulator packet out to the client /// @@ -11465,36 +11381,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP if (logPacket) m_log.DebugFormat("[CLIENT]: Packet OUT {0}", packet.Type); } - - if (throttlePacketType == ThrottleOutPacketType.Task) - { - System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace(); // get call stack - System.Diagnostics.StackFrame[] stackFrames = stackTrace.GetFrames(); // get method calls (frames) - - string stack = ""; - for (int count = 1; count < stackFrames.Length; count++) - { - stack += (stack == "" ? "" : ",") + stackFrames[count].GetMethod().Name; - if (count > 5) break; - } - - lock(pktsrc) - { - if (! pktsrc.ContainsKey(stack)) - pktsrc.Add(stack,0); - pktsrc[stack]++; - - if (++pktcnt > 500) - { - pktcnt = 0; - m_log.WarnFormat("[PACKETCOUNTS] START"); - foreach (KeyValuePair pkt in pktsrc) - m_log.WarnFormat("[PACKETCOUNTS] {0,8}, {1}", pkt.Value, pkt.Key); - pktsrc.Clear(); - m_log.WarnFormat("[PACKETCOUNTS] END"); - } - } - } m_udpServer.SendPacket(m_udpClient, packet, throttlePacketType, doAutomaticSplitting); } From 2f436875899f432a88f432ab86a6858b3a4cc373 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Mon, 11 Apr 2011 09:06:28 -0700 Subject: [PATCH 084/138] New tokenbucket algorithm. This one provides fair sharing of the queues when client and simulator throttles are set. This algorithm also uses pre-defined burst rate of 150% of the sustained rate for each of the throttles. Removed the "state" queue. The state queue is not a Linden queue and appeared to be used just to get kill packets sent. --- .../ClientStack/LindenUDP/LLClientView.cs | 6 +- .../ClientStack/LindenUDP/LLUDPClient.cs | 96 +++--- .../ClientStack/LindenUDP/LLUDPServer.cs | 2 +- .../ClientStack/LindenUDP/TokenBucket.cs | 314 +++++++++++------- 4 files changed, 266 insertions(+), 152 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 8de31d7069..934a2d5c84 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -1610,7 +1610,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else { - OutPacket(kill, ThrottleOutPacketType.State); + // OutPacket(kill, ThrottleOutPacketType.State); + OutPacket(kill, ThrottleOutPacketType.Task); } } @@ -2440,7 +2441,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP packet.Effect = effectBlocks; - OutPacket(packet, ThrottleOutPacketType.State); + // OutPacket(packet, ThrottleOutPacketType.State); + OutPacket(packet, ThrottleOutPacketType.Task); } public void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, Byte[] charterMember, diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index 9a8bfd357c..5a69851b3c 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs @@ -135,7 +135,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP private int m_nextOnQueueEmpty = 1; /// Throttle bucket for this agent's connection - private readonly TokenBucket m_throttle; + private readonly TokenBucket m_throttleClient; + /// Throttle bucket for this agent's connection + private readonly TokenBucket m_throttleCategory; /// Throttle buckets for each packet category private readonly TokenBucket[] m_throttleCategories; /// Outgoing queues for throttled packets @@ -174,7 +176,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_maxRTO = maxRTO; // Create a token bucket throttle for this client that has the scene token bucket as a parent - m_throttle = new TokenBucket(parentThrottle, rates.TotalLimit, rates.Total); + m_throttleClient = new TokenBucket(parentThrottle, rates.TotalLimit); + // Create a token bucket throttle for the total categary with the client bucket as a throttle + m_throttleCategory = new TokenBucket(m_throttleClient, rates.TotalLimit); // Create an array of token buckets for this clients different throttle categories m_throttleCategories = new TokenBucket[THROTTLE_CATEGORY_COUNT]; @@ -185,7 +189,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Initialize the packet outboxes, where packets sit while they are waiting for tokens m_packetOutboxes[i] = new OpenSim.Framework.LocklessQueue(); // Initialize the token buckets that control the throttling for each category - m_throttleCategories[i] = new TokenBucket(m_throttle, rates.GetLimit(type), rates.GetRate(type)); + m_throttleCategories[i] = new TokenBucket(m_throttleCategory, rates.GetLimit(type)); } // Default the retransmission timeout to three seconds @@ -206,6 +210,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_packetOutboxes[i].Clear(); m_nextPackets[i] = null; } + + // pull the throttle out of the scene throttle + m_throttleClient.Parent.UnregisterRequest(m_throttleClient); OnPacketStats = null; OnQueueEmpty = null; } @@ -216,6 +223,26 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// Information about the client connection public ClientInfo GetClientInfo() { +/// + TokenBucket tb; + + tb = m_throttleClient.Parent; + m_log.WarnFormat("[TOKENS] {3}: Actual={0},Request={1},TotalRequest={2}",tb.DripRate,tb.RequestedDripRate,tb.TotalDripRequest,"ROOT"); + + tb = m_throttleClient; + m_log.WarnFormat("[TOKENS] {3}: Actual={0},Request={1},TotalRequest={2}",tb.DripRate,tb.RequestedDripRate,tb.TotalDripRequest," CLIENT"); + + tb = m_throttleCategory; + m_log.WarnFormat("[TOKENS] {3}: Actual={0},Request={1},TotalRequest={2}",tb.DripRate,tb.RequestedDripRate,tb.TotalDripRequest," CATEGORY"); + + for (int i = 0; i < THROTTLE_CATEGORY_COUNT; i++) + { + tb = m_throttleCategories[i]; + m_log.WarnFormat("[TOKENS] {4} <{0}:{1}>: Actual={2},Requested={3}",AgentID,i,tb.DripRate,tb.RequestedDripRate," BUCKET"); + } + +/// + // TODO: This data structure is wrong in so many ways. Locking and copying the entire lists // of pending and needed ACKs for every client every time some method wants information about // this connection is a recipe for poor performance @@ -223,13 +250,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP info.pendingAcks = new Dictionary(); info.needAck = new Dictionary(); - info.resendThrottle = m_throttleCategories[(int)ThrottleOutPacketType.Resend].DripRate; - info.landThrottle = m_throttleCategories[(int)ThrottleOutPacketType.Land].DripRate; - info.windThrottle = m_throttleCategories[(int)ThrottleOutPacketType.Wind].DripRate; - info.cloudThrottle = m_throttleCategories[(int)ThrottleOutPacketType.Cloud].DripRate; - info.taskThrottle = m_throttleCategories[(int)ThrottleOutPacketType.State].DripRate + m_throttleCategories[(int)ThrottleOutPacketType.Task].DripRate; - info.assetThrottle = m_throttleCategories[(int)ThrottleOutPacketType.Asset].DripRate; - info.textureThrottle = m_throttleCategories[(int)ThrottleOutPacketType.Texture].DripRate; + info.resendThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Resend].DripRate; + info.landThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Land].DripRate; + info.windThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Wind].DripRate; + info.cloudThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Cloud].DripRate; + // info.taskThrottle = m_throttleCategories[(int)ThrottleOutPacketType.State].DripRate + m_throttleCategories[(int)ThrottleOutPacketType.Task].DripRate; + info.taskThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Task].DripRate; + info.assetThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Asset].DripRate; + info.textureThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Texture].DripRate; info.totalThrottle = info.resendThrottle + info.landThrottle + info.windThrottle + info.cloudThrottle + info.taskThrottle + info.assetThrottle + info.textureThrottle; @@ -317,8 +345,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP int texture = (int)(BitConverter.ToSingle(adjData, pos) * 0.125f); pos += 4; int asset = (int)(BitConverter.ToSingle(adjData, pos) * 0.125f); // State is a subcategory of task that we allocate a percentage to - int state = (int)((float)task * STATE_TASK_PERCENTAGE); - task -= state; + int state = 0; + // int state = (int)((float)task * STATE_TASK_PERCENTAGE); + // task -= state; // Make sure none of the throttles are set below our packet MTU, // otherwise a throttle could become permanently clogged @@ -339,40 +368,32 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Update the token buckets with new throttle values TokenBucket bucket; - bucket = m_throttle; - bucket.MaxBurst = total; + bucket = m_throttleCategory; + bucket.RequestedDripRate = total; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Resend]; - bucket.DripRate = resend; - bucket.MaxBurst = resend; + bucket.RequestedDripRate = resend; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Land]; - bucket.DripRate = land; - bucket.MaxBurst = land; + bucket.RequestedDripRate = land; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Wind]; - bucket.DripRate = wind; - bucket.MaxBurst = wind; + bucket.RequestedDripRate = wind; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Cloud]; - bucket.DripRate = cloud; - bucket.MaxBurst = cloud; + bucket.RequestedDripRate = cloud; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Asset]; - bucket.DripRate = asset; - bucket.MaxBurst = asset; + bucket.RequestedDripRate = asset; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Task]; - bucket.DripRate = task + state; - bucket.MaxBurst = task + state; + bucket.RequestedDripRate = task; bucket = m_throttleCategories[(int)ThrottleOutPacketType.State]; - bucket.DripRate = state; - bucket.MaxBurst = state; + bucket.RequestedDripRate = state; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Texture]; - bucket.DripRate = texture; - bucket.MaxBurst = texture; + bucket.RequestedDripRate = texture; // Reset the packed throttles cached data m_packedThrottles = null; @@ -387,14 +408,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP data = new byte[7 * 4]; int i = 0; - Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Resend].DripRate), 0, data, i, 4); i += 4; - Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Land].DripRate), 0, data, i, 4); i += 4; - Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Wind].DripRate), 0, data, i, 4); i += 4; - Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Cloud].DripRate), 0, data, i, 4); i += 4; - Buffer.BlockCopy(Utils.FloatToBytes((float)(m_throttleCategories[(int)ThrottleOutPacketType.Task].DripRate) + - m_throttleCategories[(int)ThrottleOutPacketType.State].DripRate), 0, data, i, 4); i += 4; - Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Texture].DripRate), 0, data, i, 4); i += 4; - Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Asset].DripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Resend].RequestedDripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Land].RequestedDripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Wind].RequestedDripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Cloud].RequestedDripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Task].RequestedDripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Texture].RequestedDripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Asset].RequestedDripRate), 0, data, i, 4); i += 4; m_packedThrottles = data; } diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 583214ca0b..d08b25f79d 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -228,7 +228,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } #endregion BinaryStats - m_throttle = new TokenBucket(null, sceneThrottleBps, sceneThrottleBps); + m_throttle = new TokenBucket(null, sceneThrottleBps); ThrottleRates = new ThrottleRates(configSource); } diff --git a/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs b/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs index 0a8331f32a..e4d59ff829 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs @@ -26,6 +26,10 @@ */ using System; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using log4net; namespace OpenSim.Region.ClientStack.LindenUDP { @@ -35,89 +39,126 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// public class TokenBucket { - /// Parent bucket to this bucket, or null if this is a root - /// bucket - TokenBucket parent; - /// Size of the bucket in bytes. If zero, the bucket has - /// infinite capacity - int maxBurst; - /// Rate that the bucket fills, in bytes per millisecond. If - /// zero, the bucket always remains full - int tokensPerMS; - /// Number of tokens currently in the bucket - int content; - /// Time of the last drip, in system ticks - int lastDrip; + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + private static Int32 m_counter = 0; + + private Int32 m_identifier; + + /// + /// Number of ticks (ms) per quantum, drip rate and max burst + /// are defined over this interval. + /// + private const Int32 m_ticksPerQuantum = 1000; - #region Properties + /// + /// This is the number of quantums worth of packets that can + /// be accommodated during a burst + /// + private const Double m_quantumsPerBurst = 1.5; + + /// + /// + private const Int32 m_minimumDripRate = 1400; + + /// Time of the last drip, in system ticks + private Int32 m_lastDrip; + + /// + /// The number of bytes that can be sent at this moment. This is the + /// current number of tokens in the bucket + /// + private Int64 m_tokenCount; + + /// + /// Map of children buckets and their requested maximum burst rate + /// + private Dictionary m_children = new Dictionary(); + +#region Properties /// /// The parent bucket of this bucket, or null if this bucket has no /// parent. The parent bucket will limit the aggregate bandwidth of all /// of its children buckets /// + private TokenBucket m_parent; public TokenBucket Parent { - get { return parent; } + get { return m_parent; } + set { m_parent = value; } } /// /// Maximum burst rate in bytes per second. This is the maximum number - /// of tokens that can accumulate in the bucket at any one time + /// of tokens that can accumulate in the bucket at any one time. This + /// also sets the total request for leaf nodes /// - public int MaxBurst + private Int64 m_burstRate; + public Int64 RequestedBurstRate { - get { return maxBurst; } - set { maxBurst = (value >= 0 ? value : 0); } + get { return m_burstRate; } + set { m_burstRate = (value < 0 ? 0 : value); } } + public Int64 BurstRate + { + get { + double rate = RequestedBurstRate * BurstRateModifier(); + if (rate < m_minimumDripRate * m_quantumsPerBurst) + rate = m_minimumDripRate * m_quantumsPerBurst; + + return (Int64) rate; + } + } + /// /// The speed limit of this bucket in bytes per second. This is the - /// number of tokens that are added to the bucket per second + /// number of tokens that are added to the bucket per quantum /// /// Tokens are added to the bucket any time /// is called, at the granularity of /// the system tick interval (typically around 15-22ms) - public int DripRate + private Int64 m_dripRate; + public Int64 RequestedDripRate { - get { return tokensPerMS * 1000; } - set - { - if (value == 0) - tokensPerMS = 0; - else - { - int bpms = (int)((float)value / 1000.0f); + get { return (m_dripRate == 0 ? m_totalDripRequest : m_dripRate); } + set { + m_dripRate = (value < 0 ? 0 : value); + m_burstRate = (Int64)((double)m_dripRate * m_quantumsPerBurst); + m_totalDripRequest = m_dripRate; + if (m_parent != null) + m_parent.RegisterRequest(this,m_dripRate); + } + } - if (bpms <= 0) - tokensPerMS = 1; // 1 byte/ms is the minimum granularity - else - tokensPerMS = bpms; - } + public Int64 DripRate + { + get { + if (m_parent == null) + return Math.Min(RequestedDripRate,TotalDripRequest); + + double rate = (double)RequestedDripRate * m_parent.DripRateModifier(); + if (rate < m_minimumDripRate) + rate = m_minimumDripRate; + + return (Int64)rate; } } /// - /// The speed limit of this bucket in bytes per millisecond + /// The current total of the requested maximum burst rates of + /// this bucket's children buckets. /// - public int DripPerMS - { - get { return tokensPerMS; } - } + private Int64 m_totalDripRequest; + public Int64 TotalDripRequest + { + get { return m_totalDripRequest; } + set { m_totalDripRequest = value; } + } + +#endregion Properties - /// - /// The number of bytes that can be sent at this moment. This is the - /// current number of tokens in the bucket - /// If this bucket has a parent bucket that does not have - /// enough tokens for a request, will - /// return false regardless of the content of this bucket - /// - public int Content - { - get { return content; } - } - - #endregion Properties +#region Constructor /// /// Default constructor @@ -128,56 +169,115 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// zero if this bucket has no maximum capacity /// Rate that the bucket fills, in bytes per /// second. If zero, the bucket always remains full - public TokenBucket(TokenBucket parent, int maxBurst, int dripRate) + public TokenBucket(TokenBucket parent, Int64 dripRate) { - this.parent = parent; - MaxBurst = maxBurst; - DripRate = dripRate; - lastDrip = Environment.TickCount & Int32.MaxValue; + m_identifier = m_counter++; + + Parent = parent; + RequestedDripRate = dripRate; + // TotalDripRequest = dripRate; // this will be overwritten when a child node registers + // MaxBurst = (Int64)((double)dripRate * m_quantumsPerBurst); + m_lastDrip = Environment.TickCount & Int32.MaxValue; } +#endregion Constructor + + /// + /// Compute a modifier for the MaxBurst rate. This is 1.0, meaning + /// no modification if the requested bandwidth is less than the + /// max burst bandwidth all the way to the root of the throttle + /// hierarchy. However, if any of the parents is over-booked, then + /// the modifier will be less than 1. + /// + private double DripRateModifier() + { + Int64 driprate = DripRate; + return driprate >= TotalDripRequest ? 1.0 : (double)driprate / (double)TotalDripRequest; + } + + /// + /// + private double BurstRateModifier() + { + // for now... burst rate is always m_quantumsPerBurst (constant) + // larger than drip rate so the ratio of burst requests is the + // same as the drip ratio + return DripRateModifier(); + } + + /// + /// Register drip rate requested by a child of this throttle. Pass the + /// changes up the hierarchy. + /// + public void RegisterRequest(TokenBucket child, Int64 request) + { + m_children[child] = request; + // m_totalDripRequest = m_children.Values.Sum(); + + m_totalDripRequest = 0; + foreach (KeyValuePair cref in m_children) + m_totalDripRequest += cref.Value; + + // Pass the new values up to the parent + if (m_parent != null) + m_parent.RegisterRequest(this,Math.Min(RequestedDripRate, TotalDripRequest)); + } + + /// + /// Remove the rate requested by a child of this throttle. Pass the + /// changes up the hierarchy. + /// + public void UnregisterRequest(TokenBucket child) + { + m_children.Remove(child); + // m_totalDripRequest = m_children.Values.Sum(); + + m_totalDripRequest = 0; + foreach (KeyValuePair cref in m_children) + m_totalDripRequest += cref.Value; + + // Pass the new values up to the parent + if (m_parent != null) + m_parent.RegisterRequest(this,Math.Min(RequestedDripRate, TotalDripRequest)); + } + /// /// Remove a given number of tokens from the bucket /// /// Number of tokens to remove from the bucket /// True if the requested number of tokens were removed from /// the bucket, otherwise false - public bool RemoveTokens(int amount) + public bool RemoveTokens(Int64 amount) { - bool dummy; - return RemoveTokens(amount, out dummy); + // Deposit tokens for this interval + Drip(); + + // If we have enough tokens then remove them and return + if (m_tokenCount - amount >= 0) + { + if (m_parent == null || m_parent.RemoveTokens(amount)) + { + m_tokenCount -= amount; + return true; + } + } + + return false; } /// - /// Remove a given number of tokens from the bucket + /// Deposit tokens into the bucket from a child bucket that did + /// not use all of its available tokens /// - /// Number of tokens to remove from the bucket - /// True if tokens were added to the bucket - /// during this call, otherwise false - /// True if the requested number of tokens were removed from - /// the bucket, otherwise false - public bool RemoveTokens(int amount, out bool dripSucceeded) + private void Deposit(Int64 count) { - if (maxBurst == 0) - { - dripSucceeded = true; - return true; - } + m_tokenCount += count; - dripSucceeded = Drip(); - - if (content - amount >= 0) - { - if (parent != null && !parent.RemoveTokens(amount)) - return false; - - content -= amount; - return true; - } - else - { - return false; - } + // Deposit the overflow in the parent bucket, this is how we share + // unused bandwidth + Int64 burstrate = BurstRate; + if (m_tokenCount > burstrate) + m_tokenCount = burstrate; } /// @@ -186,37 +286,29 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// call to Drip /// /// True if tokens were added to the bucket, otherwise false - public bool Drip() + private void Drip() { - if (tokensPerMS == 0) + // This should never happen... means we are a leaf node and were created + // with no drip rate... + if (DripRate == 0) { - content = maxBurst; - return true; + m_log.WarnFormat("[TOKENBUCKET] something odd is happening and drip rate is 0"); + return; } - else - { - int now = Environment.TickCount & Int32.MaxValue; - int deltaMS = now - lastDrip; + + // Determine the interval over which we are adding tokens, never add + // more than a single quantum of tokens + Int32 now = Environment.TickCount & Int32.MaxValue; + Int32 deltaMS = Math.Min(now - m_lastDrip, m_ticksPerQuantum); - if (deltaMS <= 0) - { - if (deltaMS < 0) - lastDrip = now; - return false; - } + m_lastDrip = now; - int dripAmount = deltaMS * tokensPerMS; + // This can be 0 in the very unusual case that the timer wrapped + // It can be 0 if we try add tokens at a sub-tick rate + if (deltaMS <= 0) + return; - content = Math.Min(content + dripAmount, maxBurst); - lastDrip = now; - - if (dripAmount < 0 || content < 0) - // sim has been idle for too long, integer has overflown - // previous calculation is meaningless, let's put it at correct max - content = maxBurst; - - return true; - } + Deposit(deltaMS * DripRate / m_ticksPerQuantum); } } } From 69d014e1dcb0e05a4ec927a5501156627856bccb Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Tue, 12 Apr 2011 12:36:36 -0700 Subject: [PATCH 085/138] First pass at moving object property requests into a queue similar to the entity update queue. The number of property packets can become significant when selecting/deselecting large numbers of objects. This is experimental code. --- .../Client/MXP/ClientStack/MXPClientView.cs | 4 +- .../VWoHTTP/ClientStack/VWHClientView.cs | 4 +- OpenSim/Framework/IClientAPI.cs | 37 +- .../ClientStack/LindenUDP/LLClientView.cs | 367 +++++++++++------- .../ClientStack/LindenUDP/PriorityQueue.cs | 12 +- .../Examples/SimpleModule/MyNpcCharacter.cs | 12 +- .../Framework/Scenes/SceneObjectGroup.cs | 10 +- .../Framework/Scenes/SceneObjectPart.cs | 10 +- .../Server/IRCClientView.cs | 5 +- .../OptionalModules/World/NPC/NPCAvatar.cs | 12 +- OpenSim/Tests/Common/Mock/TestClient.cs | 11 +- 11 files changed, 269 insertions(+), 215 deletions(-) diff --git a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs index d1a0440524..a604a2ee63 100644 --- a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs +++ b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs @@ -1337,12 +1337,12 @@ namespace OpenSim.Client.MXP.ClientStack // Need to translate to MXP somehow } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, uint Category, UUID LastOwnerID, string ObjectName, string Description) + public void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags) { //throw new System.NotImplementedException(); } - public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) { //throw new System.NotImplementedException(); } diff --git a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs index fc27f0198b..d8cd0acbd9 100644 --- a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs +++ b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs @@ -884,12 +884,12 @@ namespace OpenSim.Client.VWoHTTP.ClientStack throw new System.NotImplementedException(); } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, uint Category, UUID LastOwnerID, string ObjectName, string Description) + public void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags) { throw new System.NotImplementedException(); } - public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) { throw new System.NotImplementedException(); } diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index 5bf0b7b0a9..c56a756314 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs @@ -570,16 +570,30 @@ namespace OpenSim.Framework public float dwell; } - public class EntityUpdate + public class IEntityUpdate { public ISceneEntity Entity; - public PrimUpdateFlags Flags; - public float TimeDilation; + public uint Flags; - public EntityUpdate(ISceneEntity entity, PrimUpdateFlags flags, float timedilation) + public IEntityUpdate(ISceneEntity entity, uint flags) { Entity = entity; Flags = flags; + } + } + + + public class EntityUpdate : IEntityUpdate + { + // public ISceneEntity Entity; + // public PrimUpdateFlags Flags; + public float TimeDilation; + + public EntityUpdate(ISceneEntity entity, PrimUpdateFlags flags, float timedilation) + : base(entity,(uint)flags) + { + //Entity = entity; + // Flags = flags; TimeDilation = timedilation; } } @@ -1211,20 +1225,9 @@ namespace OpenSim.Framework /// void SendSimStats(SimStats stats); - void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, - uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, - uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, - uint Category, - UUID LastOwnerID, string ObjectName, string Description); + void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags); - void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, - UUID FromTaskUUID, - UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, - UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, - string ItemName, - string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, - uint EveryoneMask, - uint BaseMask, byte saleType, int salePrice); + void SendObjectPropertiesReply(ISceneEntity Entity); void SendAgentOffline(UUID[] agentIDs); diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 934a2d5c84..b96343e672 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -386,6 +386,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP private int m_cachedTextureSerial; private PriorityQueue m_entityUpdates; + private PriorityQueue m_entityProps; private Prioritizer m_prioritizer; private bool m_disableFacelights = false; @@ -433,9 +434,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP protected IAssetService m_assetService; private const bool m_checkPackets = true; - private Timer m_propertiesPacketTimer; - private List m_propertiesBlocks = new List(); - #endregion Class Members #region Properties @@ -511,6 +509,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_scene = scene; m_entityUpdates = new PriorityQueue(m_scene.Entities.Count); + m_entityProps = new PriorityQueue(m_scene.Entities.Count); m_fullUpdateDataBlocksBuilder = new List(); m_killRecord = new HashSet(); // m_attachmentsSent = new HashSet(); @@ -534,9 +533,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_udpClient.OnQueueEmpty += HandleQueueEmpty; m_udpClient.OnPacketStats += PopulateStats; - m_propertiesPacketTimer = new Timer(100); - m_propertiesPacketTimer.Elapsed += ProcessObjectPropertiesPacket; - m_prioritizer = new Prioritizer(m_scene); RegisterLocalPacketHandlers(); @@ -3636,9 +3632,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_entityUpdates.Enqueue(priority, new EntityUpdate(entity, updateFlags, m_scene.TimeDilation)); } - private Int32 m_LastQueueFill = 0; - private uint m_maxUpdates = 0; - private void ProcessEntityUpdates(int maxUpdates) { OpenSim.Framework.Lazy> objectUpdateBlocks = new OpenSim.Framework.Lazy>(); @@ -3646,46 +3639,30 @@ namespace OpenSim.Region.ClientStack.LindenUDP OpenSim.Framework.Lazy> terseUpdateBlocks = new OpenSim.Framework.Lazy>(); OpenSim.Framework.Lazy> terseAgentUpdateBlocks = new OpenSim.Framework.Lazy>(); + // Check to see if this is a flush if (maxUpdates <= 0) { - m_maxUpdates = Int32.MaxValue; + maxUpdates = Int32.MaxValue; } - else - { - if (m_maxUpdates == 0 || m_LastQueueFill == 0) - { - m_maxUpdates = (uint)maxUpdates; - } - else - { - if (Util.EnvironmentTickCountSubtract(m_LastQueueFill) < 200) - m_maxUpdates += 5; - else - m_maxUpdates = m_maxUpdates >> 1; - } - m_maxUpdates = Util.Clamp(m_maxUpdates,10,500); - } - m_LastQueueFill = Util.EnvironmentTickCount(); - + int updatesThisCall = 0; -// -// DEBUGGING CODE... REMOVE -// LogQueueProcessEvent(this.m_agentId,m_entityUpdates,m_maxUpdates); -// // We must lock for both manipulating the kill record and sending the packet, in order to avoid a race // condition where a kill can be processed before an out-of-date update for the same object. lock (m_killRecord) { float avgTimeDilation = 1.0f; - EntityUpdate update; + IEntityUpdate iupdate; Int32 timeinqueue; // this is just debugging code & can be dropped later - while (updatesThisCall < m_maxUpdates) + while (updatesThisCall < maxUpdates) { lock (m_entityUpdates.SyncRoot) - if (!m_entityUpdates.TryDequeue(out update, out timeinqueue)) + if (!m_entityUpdates.TryDequeue(out iupdate, out timeinqueue)) break; + + EntityUpdate update = (EntityUpdate)iupdate; + avgTimeDilation += update.TimeDilation; avgTimeDilation *= 0.5f; @@ -3725,7 +3702,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP #region UpdateFlags to packet type conversion - PrimUpdateFlags updateFlags = update.Flags; + PrimUpdateFlags updateFlags = (PrimUpdateFlags)update.Flags; bool canUseCompressed = true; bool canUseImproved = true; @@ -3804,6 +3781,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP #endregion Block Construction } + #region Packet Sending @@ -3904,12 +3882,36 @@ namespace OpenSim.Region.ClientStack.LindenUDP #endregion Primitive Packet/Data Sending Methods + // These are used to implement an adaptive backoff in the number + // of updates converted to packets. Since we don't want packets + // to sit in the queue with old data, only convert enough updates + // to packets that can be sent in 200ms. + private Int32 m_LastQueueFill = 0; + private Int32 m_maxUpdates = 0; + void HandleQueueEmpty(ThrottleOutPacketTypeFlags categories) { if ((categories & ThrottleOutPacketTypeFlags.Task) != 0) { + if (m_maxUpdates == 0 || m_LastQueueFill == 0) + { + m_maxUpdates = m_udpServer.PrimUpdatesPerCallback; + } + else + { + if (Util.EnvironmentTickCountSubtract(m_LastQueueFill) < 200) + m_maxUpdates += 5; + else + m_maxUpdates = m_maxUpdates >> 1; + } + m_maxUpdates = Util.Clamp(m_maxUpdates,10,500); + m_LastQueueFill = Util.EnvironmentTickCount(); + if (m_entityUpdates.Count > 0) - ProcessEntityUpdates(m_udpServer.PrimUpdatesPerCallback); + ProcessEntityUpdates(m_maxUpdates); + + if (m_entityProps.Count > 0) + ProcessEntityPropertyRequests(m_maxUpdates); } if ((categories & ThrottleOutPacketTypeFlags.Texture) != 0) @@ -4023,47 +4025,147 @@ namespace OpenSim.Region.ClientStack.LindenUDP OutPacket(pack, ThrottleOutPacketType.Task); } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, - uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, - uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, uint Category, - UUID LastOwnerID, string ObjectName, string Description) +/// ----------------------------------------------------------------- +/// +/// ----------------------------------------------------------------- + + private class ObjectPropertyUpdate : IEntityUpdate { - ObjectPropertiesFamilyPacket objPropFamilyPack = (ObjectPropertiesFamilyPacket)PacketPool.Instance.GetPacket(PacketType.ObjectPropertiesFamily); - // TODO: don't create new blocks if recycling an old packet - - ObjectPropertiesFamilyPacket.ObjectDataBlock objPropDB = new ObjectPropertiesFamilyPacket.ObjectDataBlock(); - objPropDB.RequestFlags = RequestFlags; - objPropDB.ObjectID = ObjectUUID; - if (OwnerID == GroupID) - objPropDB.OwnerID = UUID.Zero; - else - objPropDB.OwnerID = OwnerID; - objPropDB.GroupID = GroupID; - objPropDB.BaseMask = BaseMask; - objPropDB.OwnerMask = OwnerMask; - objPropDB.GroupMask = GroupMask; - objPropDB.EveryoneMask = EveryoneMask; - objPropDB.NextOwnerMask = NextOwnerMask; - - // TODO: More properties are needed in SceneObjectPart! - objPropDB.OwnershipCost = OwnershipCost; - objPropDB.SaleType = SaleType; - objPropDB.SalePrice = SalePrice; - objPropDB.Category = Category; - objPropDB.LastOwnerID = LastOwnerID; - objPropDB.Name = Util.StringToBytes256(ObjectName); - objPropDB.Description = Util.StringToBytes256(Description); - objPropFamilyPack.ObjectData = objPropDB; - objPropFamilyPack.Header.Zerocoded = true; - OutPacket(objPropFamilyPack, ThrottleOutPacketType.Task); + internal bool SendFamilyProps; + + public ObjectPropertyUpdate(ISceneEntity entity, uint flags, bool sendfam) + : base(entity,flags) + { + SendFamilyProps = sendfam; + } + } + + public void SendObjectPropertiesFamilyData(ISceneEntity entity, uint requestFlags) + { + uint priority = m_prioritizer.GetUpdatePriority(this, entity); + lock (m_entityProps.SyncRoot) + m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,requestFlags,true)); } - public void SendObjectPropertiesReply( - UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, - UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, - UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, - string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, - uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) + { + uint priority = m_prioritizer.GetUpdatePriority(this, entity); + lock (m_entityProps.SyncRoot) + m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,0,false)); + } + + private void ProcessEntityPropertyRequests(int maxUpdates) + { + OpenSim.Framework.Lazy> objectFamilyBlocks = + new OpenSim.Framework.Lazy>(); + + OpenSim.Framework.Lazy> objectPropertiesBlocks = + new OpenSim.Framework.Lazy>(); + + IEntityUpdate iupdate; + Int32 timeinqueue; // this is just debugging code & can be dropped later + + int updatesThisCall = 0; + while (updatesThisCall < m_maxUpdates) + { + lock (m_entityProps.SyncRoot) + if (!m_entityProps.TryDequeue(out iupdate, out timeinqueue)) + break; + + ObjectPropertyUpdate update = (ObjectPropertyUpdate)iupdate; + if (update.SendFamilyProps) + { + if (update.Entity is SceneObjectPart) + { + SceneObjectPart sop = (SceneObjectPart)update.Entity; + ObjectPropertiesFamilyPacket.ObjectDataBlock objPropDB = CreateObjectPropertiesFamilyBlock(sop,update.Flags); + objectFamilyBlocks.Value.Add(objPropDB); + } + } + else + { + if (update.Entity is SceneObjectPart) + { + SceneObjectPart sop = (SceneObjectPart)update.Entity; + ObjectPropertiesPacket.ObjectDataBlock objPropDB = CreateObjectPropertiesBlock(sop); + objectPropertiesBlocks.Value.Add(objPropDB); + } + } + } + + + if (objectPropertiesBlocks.IsValueCreated) + { + List blocks = objectPropertiesBlocks.Value; + + ObjectPropertiesPacket packet = (ObjectPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.ObjectProperties); + packet.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[blocks.Count]; + for (int i = 0; i < blocks.Count; i++) + packet.ObjectData[i] = blocks[i]; + + packet.Header.Zerocoded = true; + OutPacket(packet, ThrottleOutPacketType.Task, true); + } + + + if (objectFamilyBlocks.IsValueCreated) + { + List blocks = objectFamilyBlocks.Value; + + // ObjectPropertiesFamilyPacket objPropFamilyPack = + // (ObjectPropertiesFamilyPacket)PacketPool.Instance.GetPacket(PacketType.ObjectPropertiesFamily); + // + // objPropFamilyPack.ObjectData = new ObjectPropertiesFamilyPacket.ObjectDataBlock[blocks.Count]; + // for (int i = 0; i < blocks.Count; i++) + // objPropFamilyPack.ObjectData[i] = blocks[i]; + // + // OutPacket(objPropFamilyPack, ThrottleOutPacketType.Task, true); + + // one packet per object block... uggh... + for (int i = 0; i < blocks.Count; i++) + { + ObjectPropertiesFamilyPacket packet = + (ObjectPropertiesFamilyPacket)PacketPool.Instance.GetPacket(PacketType.ObjectPropertiesFamily); + + packet.ObjectData = blocks[i]; + packet.Header.Zerocoded = true; + OutPacket(packet, ThrottleOutPacketType.Task); + } + + } + + } + + private ObjectPropertiesFamilyPacket.ObjectDataBlock CreateObjectPropertiesFamilyBlock(SceneObjectPart sop, uint requestFlags) + { + ObjectPropertiesFamilyPacket.ObjectDataBlock block = new ObjectPropertiesFamilyPacket.ObjectDataBlock(); + + block.RequestFlags = requestFlags; + block.ObjectID = sop.UUID; + if (sop.OwnerID == sop.GroupID) + block.OwnerID = UUID.Zero; + else + block.OwnerID = sop.OwnerID; + block.GroupID = sop.GroupID; + block.BaseMask = sop.BaseMask; + block.OwnerMask = sop.OwnerMask; + block.GroupMask = sop.GroupMask; + block.EveryoneMask = sop.EveryoneMask; + block.NextOwnerMask = sop.NextOwnerMask; + + // TODO: More properties are needed in SceneObjectPart! + block.OwnershipCost = sop.OwnershipCost; + block.SaleType = sop.ObjectSaleType; + block.SalePrice = sop.SalePrice; + block.Category = sop.Category; + block.LastOwnerID = sop.CreatorID; // copied from old SOG call... is this right? + block.Name = Util.StringToBytes256(sop.Name); + block.Description = Util.StringToBytes256(sop.Description); + + return block; + } + + private ObjectPropertiesPacket.ObjectDataBlock CreateObjectPropertiesBlock(SceneObjectPart sop) { //ObjectPropertiesPacket proper = (ObjectPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.ObjectProperties); // TODO: don't create new blocks if recycling an old packet @@ -4071,85 +4173,43 @@ namespace OpenSim.Region.ClientStack.LindenUDP ObjectPropertiesPacket.ObjectDataBlock block = new ObjectPropertiesPacket.ObjectDataBlock(); - block.ItemID = ItemID; - block.CreationDate = CreationDate; - block.CreatorID = CreatorUUID; - block.FolderID = FolderUUID; - block.FromTaskID = FromTaskUUID; - block.GroupID = GroupUUID; - block.InventorySerial = InventorySerial; + block.ObjectID = sop.UUID; + block.Name = Util.StringToBytes256(sop.Name); + block.Description = Util.StringToBytes256(sop.Description); - block.LastOwnerID = LastOwnerUUID; - // proper.ObjectData[0].LastOwnerID = UUID.Zero; - - block.ObjectID = ObjectUUID; - if (OwnerUUID == GroupUUID) + block.CreationDate = (ulong)sop.CreationDate * 1000000; // viewer wants date in microseconds + block.CreatorID = sop.CreatorID; + block.GroupID = sop.GroupID; + block.LastOwnerID = sop.LastOwnerID; + if (sop.OwnerID == sop.GroupID) block.OwnerID = UUID.Zero; else - block.OwnerID = OwnerUUID; - block.TouchName = Util.StringToBytes256(TouchTitle); - block.TextureID = TextureID; - block.SitName = Util.StringToBytes256(SitTitle); - block.Name = Util.StringToBytes256(ItemName); - block.Description = Util.StringToBytes256(ItemDescription); - block.OwnerMask = OwnerMask; - block.NextOwnerMask = NextOwnerMask; - block.GroupMask = GroupMask; - block.EveryoneMask = EveryoneMask; - block.BaseMask = BaseMask; - // proper.ObjectData[0].AggregatePerms = 53; - // proper.ObjectData[0].AggregatePermTextures = 0; - // proper.ObjectData[0].AggregatePermTexturesOwner = 0; - block.SaleType = saleType; - block.SalePrice = salePrice; + block.OwnerID = sop.OwnerID; - lock (m_propertiesPacketTimer) - { - m_propertiesBlocks.Add(block); + block.ItemID = sop.FromUserInventoryItemID; + block.FolderID = UUID.Zero; // sop.FromFolderID ?? + block.FromTaskID = UUID.Zero; // ??? + block.InventorySerial = (short)sop.InventorySerial; + + SceneObjectPart root = sop.ParentGroup.RootPart; - int length = 0; - foreach (ObjectPropertiesPacket.ObjectDataBlock b in m_propertiesBlocks) - { - length += b.Length; - } - if (length > 1100) // FIXME: use real MTU - { - ProcessObjectPropertiesPacket(null, null); - m_propertiesPacketTimer.Stop(); - return; - } + block.TouchName = Util.StringToBytes256(root.TouchName); + block.TextureID = new byte[0]; // TextureID ??? + block.SitName = Util.StringToBytes256(root.SitName); + block.OwnerMask = root.OwnerMask; + block.NextOwnerMask = root.NextOwnerMask; + block.GroupMask = root.GroupMask; + block.EveryoneMask = root.EveryoneMask; + block.BaseMask = root.BaseMask; + block.SaleType = root.ObjectSaleType; + block.SalePrice = root.SalePrice; - m_propertiesPacketTimer.Stop(); - m_propertiesPacketTimer.Start(); - } - - //proper.Header.Zerocoded = true; - //OutPacket(proper, ThrottleOutPacketType.Task); + return block; } - private void ProcessObjectPropertiesPacket(Object sender, ElapsedEventArgs e) - { - ObjectPropertiesPacket proper = (ObjectPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.ObjectProperties); - - lock (m_propertiesPacketTimer) - { - m_propertiesPacketTimer.Stop(); - - proper.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[m_propertiesBlocks.Count]; - - int index = 0; - - foreach (ObjectPropertiesPacket.ObjectDataBlock b in m_propertiesBlocks) - { - proper.ObjectData[index++] = b; - } - - m_propertiesBlocks.Clear(); - } - - proper.Header.Zerocoded = true; - OutPacket(proper, ThrottleOutPacketType.Task); - } +/// ----------------------------------------------------------------- +/// +/// ----------------------------------------------------------------- #region Estate Data Sending Methods @@ -4482,6 +4542,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP public void SendForceClientSelectObjects(List ObjectIDs) { + m_log.WarnFormat("[LLCLIENTVIEW] sending select with {0} objects", ObjectIDs.Count); + bool firstCall = true; const int MAX_OBJECTS_PER_PACKET = 251; ForceObjectSelectPacket pack = (ForceObjectSelectPacket)PacketPool.Instance.GetPacket(PacketType.ForceObjectSelect); @@ -11374,6 +11436,21 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_log.DebugFormat("[CLIENT]: Packet OUT {0}", packet.Type); } + if (throttlePacketType == ThrottleOutPacketType.Task) + { + System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace(); // get call stack + System.Diagnostics.StackFrame[] stackFrames = stackTrace.GetFrames(); // get method calls (frames) + + string stack = ""; + for (int count = 1; count < stackFrames.Length; count++) + { + stack += (stack == "" ? "" : ",") + stackFrames[count].GetMethod().Name; + if (count > 5) break; + } + + // m_log.WarnFormat("[BADGUY] {0}", stack); + } + m_udpServer.SendPacket(m_udpClient, packet, throttlePacketType, doAutomaticSplitting); } diff --git a/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs b/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs index 364ce4ba9e..6521a00745 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs @@ -78,7 +78,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } } - public bool Enqueue(uint pqueue, EntityUpdate value) + public bool Enqueue(uint pqueue, IEntityUpdate value) { LookupItem lookup; @@ -99,7 +99,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP return true; } - internal bool TryDequeue(out EntityUpdate value, out Int32 timeinqueue) + internal bool TryDequeue(out IEntityUpdate value, out Int32 timeinqueue) { for (int i = 0; i < m_numberOfQueues; ++i) { @@ -122,7 +122,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } timeinqueue = 0; - value = default(EntityUpdate); + value = default(IEntityUpdate); return false; } @@ -175,8 +175,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP #region MinHeapItem private struct MinHeapItem : IComparable { - private EntityUpdate value; - internal EntityUpdate Value { + private IEntityUpdate value; + internal IEntityUpdate Value { get { return this.value; } @@ -212,7 +212,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP this.pqueue = pqueue; } - internal MinHeapItem(uint pqueue, UInt64 entryorder, EntityUpdate value) + internal MinHeapItem(uint pqueue, UInt64 entryorder, IEntityUpdate value) { this.entrytime = Util.EnvironmentTickCount(); this.entryorder = entryorder; diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs index d939329814..89e9e204bb 100644 --- a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs +++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs @@ -702,18 +702,12 @@ namespace OpenSim.Region.Examples.SimpleModule { } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, - uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, - uint NextOwnerMask, int OwnershipCost, byte SaleType,int SalePrice, uint Category, - UUID LastOwnerID, string ObjectName, string Description) + public void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags) { + } - public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, - UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, - UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, - string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, - uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) { } diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index ca7d9d9d57..30563d4232 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -1765,10 +1765,12 @@ namespace OpenSim.Region.Framework.Scenes /// public void ServiceObjectPropertiesFamilyRequest(IClientAPI remoteClient, UUID AgentID, uint RequestFlags) { - remoteClient.SendObjectPropertiesFamilyData(RequestFlags, RootPart.UUID, RootPart.OwnerID, RootPart.GroupID, RootPart.BaseMask, - RootPart.OwnerMask, RootPart.GroupMask, RootPart.EveryoneMask, RootPart.NextOwnerMask, - RootPart.OwnershipCost, RootPart.ObjectSaleType, RootPart.SalePrice, RootPart.Category, - RootPart.CreatorID, RootPart.Name, RootPart.Description); + remoteClient.SendObjectPropertiesFamilyData(RootPart, RequestFlags); + +// remoteClient.SendObjectPropertiesFamilyData(RequestFlags, RootPart.UUID, RootPart.OwnerID, RootPart.GroupID, RootPart.BaseMask, +// RootPart.OwnerMask, RootPart.GroupMask, RootPart.EveryoneMask, RootPart.NextOwnerMask, +// RootPart.OwnershipCost, RootPart.ObjectSaleType, RootPart.SalePrice, RootPart.Category, +// RootPart.CreatorID, RootPart.Name, RootPart.Description); } public void SetPartOwner(SceneObjectPart part, UUID cAgentID, UUID cGroupID) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 4d5eedfc95..3d2eacd720 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -2055,15 +2055,7 @@ namespace OpenSim.Region.Framework.Scenes public void GetProperties(IClientAPI client) { - //Viewer wants date in microseconds so multiply it by 1,000,000. - client.SendObjectPropertiesReply( - m_fromUserInventoryItemID, (ulong)_creationDate*(ulong)1e6, _creatorID, UUID.Zero, UUID.Zero, - _groupID, (short)InventorySerial, _lastOwnerID, UUID, _ownerID, - ParentGroup.RootPart.TouchName, new byte[0], ParentGroup.RootPart.SitName, Name, Description, - ParentGroup.RootPart._ownerMask, ParentGroup.RootPart._nextOwnerMask, ParentGroup.RootPart._groupMask, ParentGroup.RootPart._everyoneMask, - ParentGroup.RootPart._baseMask, - ParentGroup.RootPart.ObjectSaleType, - ParentGroup.RootPart.SalePrice); + client.SendObjectPropertiesReply(this); } public UUID GetRootPartUUID() diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs index 821cd4bd33..4b6e52e757 100644 --- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs +++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs @@ -1332,14 +1332,13 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, uint Category, UUID LastOwnerID, string ObjectName, string Description) + public void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags) { } - public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) { - } public void SendAgentOffline(UUID[] agentIDs) diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs index 96760a2721..2504e3019c 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs @@ -786,18 +786,12 @@ namespace OpenSim.Region.OptionalModules.World.NPC { } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, - uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, - uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, uint Category, - UUID LastOwnerID, string ObjectName, string Description) + public void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags) { + } - public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, - UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, - UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, - string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, - uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) { } diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs index d1dc17fc9b..dca562674b 100644 --- a/OpenSim/Tests/Common/Mock/TestClient.cs +++ b/OpenSim/Tests/Common/Mock/TestClient.cs @@ -816,18 +816,11 @@ namespace OpenSim.Tests.Common.Mock { } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, - uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, - uint NextOwnerMask, int OwnershipCost, byte SaleType,int SalePrice, uint Category, - UUID LastOwnerID, string ObjectName, string Description) + public void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags) { } - public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, - UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, - UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, - string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, - uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) { } From 1a0f107012ae96f5030b564cc51b6f36b949a467 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Tue, 12 Apr 2011 14:40:57 -0700 Subject: [PATCH 086/138] fixed a couple bugs with the property queues --- .../ClientStack/LindenUDP/LLClientView.cs | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index b96343e672..4db5b222d2 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -4091,9 +4091,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP objectPropertiesBlocks.Value.Add(objPropDB); } } + + updatesThisCall++; } + Int32 ppcnt = 0; + Int32 pbcnt = 0; + if (objectPropertiesBlocks.IsValueCreated) { List blocks = objectPropertiesBlocks.Value; @@ -4105,9 +4110,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP packet.Header.Zerocoded = true; OutPacket(packet, ThrottleOutPacketType.Task, true); + + pbcnt += blocks.Count; + ppcnt++; } + Int32 fpcnt = 0; + Int32 fbcnt = 0; + if (objectFamilyBlocks.IsValueCreated) { List blocks = objectFamilyBlocks.Value; @@ -4130,10 +4141,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP packet.ObjectData = blocks[i]; packet.Header.Zerocoded = true; OutPacket(packet, ThrottleOutPacketType.Task); + + fpcnt++; + fbcnt++; } } + m_log.WarnFormat("[PACKETCOUNTS] queued {0} property packets with {1} blocks",ppcnt,pbcnt); + m_log.WarnFormat("[PACKETCOUNTS] queued {0} family property packets with {1} blocks",fpcnt,fbcnt); } private ObjectPropertiesFamilyPacket.ObjectDataBlock CreateObjectPropertiesFamilyBlock(SceneObjectPart sop, uint requestFlags) @@ -11401,6 +11417,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP OutPacket(packet, throttlePacketType, true); } +/// + Dictionary pktsrc = new Dictionary(); + uint pktcnt = 0; +/// + /// /// This is the starting point for sending a simulator packet out to the client /// @@ -11448,7 +11469,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP if (count > 5) break; } - // m_log.WarnFormat("[BADGUY] {0}", stack); + lock(pktsrc) + { + if (! pktsrc.ContainsKey(stack)) + pktsrc.Add(stack,0); + pktsrc[stack]++; + + if (++pktcnt > 500) + { + pktcnt = 0; + m_log.WarnFormat("[PACKETCOUNTS] START"); + foreach (KeyValuePair pkt in pktsrc) + m_log.WarnFormat("[PACKETCOUNTS] {0,8}, {1}", pkt.Value, pkt.Key); + pktsrc.Clear(); + m_log.WarnFormat("[PACKETCOUNTS] END"); + } + } } m_udpServer.SendPacket(m_udpClient, packet, throttlePacketType, doAutomaticSplitting); From 78c04d61caed7dc62eb299a09148934d95a1c882 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Tue, 12 Apr 2011 15:40:57 -0700 Subject: [PATCH 087/138] Fixed the update of items in the priority queue to enable both types of property updates to be specified. Not sure if one form of property update should supercede another. But for now the old OpenSim behavior is preserved by sending both. --- OpenSim/Framework/IClientAPI.cs | 5 +++++ .../ClientStack/LindenUDP/LLClientView.cs | 21 +++++++++++++------ .../ClientStack/LindenUDP/PriorityQueue.cs | 2 +- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index c56a756314..f573c32d07 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs @@ -575,6 +575,11 @@ namespace OpenSim.Framework public ISceneEntity Entity; public uint Flags; + public virtual void Update(IEntityUpdate update) + { + this.Flags |= update.Flags; + } + public IEntityUpdate(ISceneEntity entity, uint flags) { Entity = entity; diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 4db5b222d2..92a76acba6 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -4032,26 +4032,34 @@ namespace OpenSim.Region.ClientStack.LindenUDP private class ObjectPropertyUpdate : IEntityUpdate { internal bool SendFamilyProps; + internal bool SendObjectProps; - public ObjectPropertyUpdate(ISceneEntity entity, uint flags, bool sendfam) + public ObjectPropertyUpdate(ISceneEntity entity, uint flags, bool sendfam, bool sendobj) : base(entity,flags) { SendFamilyProps = sendfam; + SendObjectProps = sendobj; + } + public void Update(ObjectPropertyUpdate update) + { + SendFamilyProps = SendFamilyProps || update.SendFamilyProps; + SendObjectProps = SendObjectProps || update.SendObjectProps; + Flags |= update.Flags; } } public void SendObjectPropertiesFamilyData(ISceneEntity entity, uint requestFlags) { - uint priority = m_prioritizer.GetUpdatePriority(this, entity); + uint priority = 0; // time based ordering only lock (m_entityProps.SyncRoot) - m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,requestFlags,true)); + m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,requestFlags,true,false)); } public void SendObjectPropertiesReply(ISceneEntity entity) { - uint priority = m_prioritizer.GetUpdatePriority(this, entity); + uint priority = 0; // time based ordering only lock (m_entityProps.SyncRoot) - m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,0,false)); + m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,0,false,true)); } private void ProcessEntityPropertyRequests(int maxUpdates) @@ -4082,7 +4090,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP objectFamilyBlocks.Value.Add(objPropDB); } } - else + + if (update.SendObjectProps) { if (update.Entity is SceneObjectPart) { diff --git a/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs b/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs index 6521a00745..b62ec07ed9 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs @@ -87,7 +87,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP if (m_lookupTable.TryGetValue(localid, out lookup)) { entry = lookup.Heap[lookup.Handle].EntryOrder; - value.Flags |= lookup.Heap[lookup.Handle].Value.Flags; + value.Update(lookup.Heap[lookup.Handle].Value); lookup.Heap.Remove(lookup.Handle); } From b84ad81740ea1c732711b7f555d44c56b3858178 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Tue, 12 Apr 2011 15:55:21 -0700 Subject: [PATCH 088/138] remove packet monitoring debugging code --- .../ClientStack/LindenUDP/LLClientView.cs | 118 +----------------- 1 file changed, 2 insertions(+), 116 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 92a76acba6..cf04f0d809 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -300,77 +300,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// Used to adjust Sun Orbit values so Linden based viewers properly position sun private const float m_sunPainDaHalfOrbitalCutoff = 4.712388980384689858f; - // First log file or time has expired, start writing to a new log file -// -// ----------------------------------------------------------------- -// ----------------------------------------------------------------- -// THIS IS DEBUGGING CODE & SHOULD BE REMOVED -// ----------------------------------------------------------------- -// ----------------------------------------------------------------- - public class QueueLogger - { - public Int32 start = 0; - public StreamWriter Log = null; - private Dictionary m_idMap = new Dictionary(); - - public QueueLogger() - { - DateTime now = DateTime.Now; - String fname = String.Format("queue-{0}.log", now.ToString("yyyyMMddHHmmss")); - Log = new StreamWriter(fname); - - start = Util.EnvironmentTickCount(); - } - - public int LookupID(UUID uuid) - { - int localid; - if (! m_idMap.TryGetValue(uuid,out localid)) - { - localid = m_idMap.Count + 1; - m_idMap[uuid] = localid; - } - - return localid; - } - } - - public static QueueLogger QueueLog = null; - - // ----------------------------------------------------------------- - public void LogAvatarUpdateEvent(UUID client, UUID avatar, Int32 timeinqueue) - { - if (QueueLog == null) - QueueLog = new QueueLogger(); - - Int32 ticks = Util.EnvironmentTickCountSubtract(QueueLog.start); - lock(QueueLog) - { - int cid = QueueLog.LookupID(client); - int aid = QueueLog.LookupID(avatar); - QueueLog.Log.WriteLine("{0},AU,AV{1:D4},AV{2:D4},{3}",ticks,cid,aid,timeinqueue); - } - } - - // ----------------------------------------------------------------- - public void LogQueueProcessEvent(UUID client, PriorityQueue queue, uint maxup) - { - if (QueueLog == null) - QueueLog = new QueueLogger(); - - Int32 ticks = Util.EnvironmentTickCountSubtract(QueueLog.start); - lock(QueueLog) - { - int cid = QueueLog.LookupID(client); - QueueLog.Log.WriteLine("{0},PQ,AV{1:D4},{2},{3}",ticks,cid,maxup,queue.ToString()); - } - } -// ----------------------------------------------------------------- -// ----------------------------------------------------------------- -// ----------------------------------------------------------------- -// ----------------------------------------------------------------- -// - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); protected static Dictionary PacketHandlers = new Dictionary(); //Global/static handlers for all clients @@ -4025,10 +3954,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP OutPacket(pack, ThrottleOutPacketType.Task); } -/// ----------------------------------------------------------------- -/// -/// ----------------------------------------------------------------- - private class ObjectPropertyUpdate : IEntityUpdate { internal bool SendFamilyProps; @@ -4157,8 +4082,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP } - m_log.WarnFormat("[PACKETCOUNTS] queued {0} property packets with {1} blocks",ppcnt,pbcnt); - m_log.WarnFormat("[PACKETCOUNTS] queued {0} family property packets with {1} blocks",fpcnt,fbcnt); + // m_log.WarnFormat("[PACKETCOUNTS] queued {0} property packets with {1} blocks",ppcnt,pbcnt); + // m_log.WarnFormat("[PACKETCOUNTS] queued {0} family property packets with {1} blocks",fpcnt,fbcnt); } private ObjectPropertiesFamilyPacket.ObjectDataBlock CreateObjectPropertiesFamilyBlock(SceneObjectPart sop, uint requestFlags) @@ -4232,10 +4157,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP return block; } -/// ----------------------------------------------------------------- -/// -/// ----------------------------------------------------------------- - #region Estate Data Sending Methods private static bool convertParamStringToBool(byte[] field) @@ -11426,11 +11347,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP OutPacket(packet, throttlePacketType, true); } -/// - Dictionary pktsrc = new Dictionary(); - uint pktcnt = 0; -/// - /// /// This is the starting point for sending a simulator packet out to the client /// @@ -11465,36 +11381,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP if (logPacket) m_log.DebugFormat("[CLIENT]: Packet OUT {0}", packet.Type); } - - if (throttlePacketType == ThrottleOutPacketType.Task) - { - System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace(); // get call stack - System.Diagnostics.StackFrame[] stackFrames = stackTrace.GetFrames(); // get method calls (frames) - - string stack = ""; - for (int count = 1; count < stackFrames.Length; count++) - { - stack += (stack == "" ? "" : ",") + stackFrames[count].GetMethod().Name; - if (count > 5) break; - } - - lock(pktsrc) - { - if (! pktsrc.ContainsKey(stack)) - pktsrc.Add(stack,0); - pktsrc[stack]++; - - if (++pktcnt > 500) - { - pktcnt = 0; - m_log.WarnFormat("[PACKETCOUNTS] START"); - foreach (KeyValuePair pkt in pktsrc) - m_log.WarnFormat("[PACKETCOUNTS] {0,8}, {1}", pkt.Value, pkt.Key); - pktsrc.Clear(); - m_log.WarnFormat("[PACKETCOUNTS] END"); - } - } - } m_udpServer.SendPacket(m_udpClient, packet, throttlePacketType, doAutomaticSplitting); } From 5c870fce548eeca24ae0491a2261ce4fb330a57b Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 12 Apr 2011 19:45:33 -0700 Subject: [PATCH 089/138] Bug fix in object serialization -- sculpt data was wrong. --- .../Framework/Scenes/Serialization/SceneObjectSerializer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs index 57ae4fd24f..b412e25579 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs @@ -1318,7 +1318,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization writer.WriteStartElement("SculptData"); byte[] sd; if (shp.SculptData != null) - sd = shp.ExtraParams; + sd = shp.SculptData; else sd = Utils.EmptyBytes; writer.WriteBase64(sd, 0, sd.Length); From 16c911dcbb883e60d7a49176db8b2cea650cc929 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 12 Apr 2011 19:46:27 -0700 Subject: [PATCH 090/138] Implemented terrain save-tile command. Does the opposite of load-tile. For now, only saves to .png. --- .../FileLoaders/GenericSystemDrawing.cs | 46 ++++++++++++++++ .../World/Terrain/FileLoaders/JPEG.cs | 8 +++ .../World/Terrain/FileLoaders/LLRAW.cs | 8 +++ .../World/Terrain/FileLoaders/RAW32.cs | 7 +++ .../World/Terrain/FileLoaders/Terragen.cs | 8 +++ .../World/Terrain/ITerrainLoader.cs | 1 + .../World/Terrain/TerrainModule.cs | 54 +++++++++++++++++++ 7 files changed, 132 insertions(+) diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs index d6fa0937e5..21a9999ba0 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs @@ -124,6 +124,52 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders colours.Save(stream, ImageFormat.Png); } + public virtual void SaveFile(ITerrainChannel m_channel, string filename, + int offsetX, int offsetY, + int fileWidth, int fileHeight, + int regionSizeX, int regionSizeY) + + { + // We need to do this because: + // "Saving the image to the same file it was constructed from is not allowed and throws an exception." + string tempName = offsetX + "_ " + offsetY + "_" + filename; + + Bitmap entireBitmap = null; + Bitmap thisBitmap = null; + if (File.Exists(filename)) + { + File.Copy(filename, tempName); + entireBitmap = new Bitmap(tempName); + if (entireBitmap.Width != fileWidth * regionSizeX || entireBitmap.Height != fileHeight * regionSizeY) + { + // old file, let's overwrite it + entireBitmap = new Bitmap(fileWidth * regionSizeX, fileHeight * regionSizeY); + } + } + else + { + entireBitmap = new Bitmap(fileWidth * regionSizeX, fileHeight * regionSizeY); + } + + thisBitmap = CreateGrayscaleBitmapFromMap(m_channel); + Console.WriteLine("offsetX=" + offsetX + " offsetY=" + offsetY); + for (int x = 0; x < regionSizeX; x++) + for (int y = 0; y < regionSizeY; y++) + entireBitmap.SetPixel(x + offsetX * regionSizeX, y + (fileHeight - 1 - offsetY) * regionSizeY, thisBitmap.GetPixel(x, y)); + + Save(entireBitmap, filename); + thisBitmap.Dispose(); + entireBitmap.Dispose(); + + if (File.Exists(tempName)) + File.Delete(tempName); + } + + protected virtual void Save(Bitmap bmp, string filename) + { + bmp.Save(filename, ImageFormat.Png); + } + #endregion public override string ToString() diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/JPEG.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/JPEG.cs index 8667607d0b..1a0d8ecf60 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/JPEG.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/JPEG.cs @@ -76,6 +76,14 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders colours.Save(stream, ImageFormat.Jpeg); } + public virtual void SaveFile(ITerrainChannel m_channel, string filename, + int offsetX, int offsetY, + int fileWidth, int fileHeight, + int regionSizeX, int regionSizeY) + { + throw new System.Exception("Not Implemented"); + } + #endregion public override string ToString() diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/LLRAW.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/LLRAW.cs index a70ef13ed0..fad7641e42 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/LLRAW.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/LLRAW.cs @@ -240,6 +240,14 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders get { return ".raw"; } } + public virtual void SaveFile(ITerrainChannel m_channel, string filename, + int offsetX, int offsetY, + int fileWidth, int fileHeight, + int regionSizeX, int regionSizeY) + { + throw new System.Exception("Not Implemented"); + } + #endregion public override string ToString() diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/RAW32.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/RAW32.cs index 3c76665d5e..ba073cae5a 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/RAW32.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/RAW32.cs @@ -160,6 +160,13 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders bs.Close(); } + public virtual void SaveFile(ITerrainChannel m_channel, string filename, + int offsetX, int offsetY, + int fileWidth, int fileHeight, + int regionSizeX, int regionSizeY) + { + throw new System.Exception("Not Implemented"); + } #endregion public override string ToString() diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/Terragen.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/Terragen.cs index 2919897153..2f37d9d7e9 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/Terragen.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/Terragen.cs @@ -308,6 +308,14 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders get { return ".ter"; } } + public virtual void SaveFile(ITerrainChannel m_channel, string filename, + int offsetX, int offsetY, + int fileWidth, int fileHeight, + int regionSizeX, int regionSizeY) + { + throw new System.Exception("Not Implemented"); + } + #endregion public override string ToString() diff --git a/OpenSim/Region/CoreModules/World/Terrain/ITerrainLoader.cs b/OpenSim/Region/CoreModules/World/Terrain/ITerrainLoader.cs index 7403281621..7237f90a38 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/ITerrainLoader.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/ITerrainLoader.cs @@ -38,5 +38,6 @@ namespace OpenSim.Region.CoreModules.World.Terrain ITerrainChannel LoadStream(Stream stream); void SaveFile(string filename, ITerrainChannel map); void SaveStream(Stream stream, ITerrainChannel map); + void SaveFile(ITerrainChannel map, string filename, int offsetX, int offsetY, int fileWidth, int fileHeight, int regionSizeX, int regionSizeY); } } \ No newline at end of file diff --git a/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs b/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs index 8a79d78b22..9c7b2fab9c 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs @@ -540,6 +540,39 @@ namespace OpenSim.Region.CoreModules.World.Terrain } } + /// + /// Saves the terrain to a larger terrain file. + /// + /// The terrain file to save + /// The width of the file in units + /// The height of the file in units + /// Where to begin our slice + /// Where to begin our slice + public void SaveToFile(string filename, int fileWidth, int fileHeight, int fileStartX, int fileStartY) + { + int offsetX = (int)m_scene.RegionInfo.RegionLocX - fileStartX; + int offsetY = (int)m_scene.RegionInfo.RegionLocY - fileStartY; + + if (offsetX >= 0 && offsetX < fileWidth && offsetY >= 0 && offsetY < fileHeight) + { + // this region is included in the tile request + foreach (KeyValuePair loader in m_loaders) + { + if (filename.EndsWith(loader.Key)) + { + lock (m_scene) + { + loader.Value.SaveFile(m_channel, filename, offsetX, offsetY, + fileWidth, fileHeight, + (int)Constants.RegionSize, + (int)Constants.RegionSize); + } + return; + } + } + } + } + /// /// Performs updates to the region periodically, synchronising physics and other heightmap aware sections /// @@ -860,6 +893,15 @@ namespace OpenSim.Region.CoreModules.World.Terrain SaveToFile((string) args[0]); } + private void InterfaceSaveTileFile(Object[] args) + { + SaveToFile((string)args[0], + (int)args[1], + (int)args[2], + (int)args[3], + (int)args[4]); + } + private void InterfaceBakeTerrain(Object[] args) { UpdateRevertMap(); @@ -1115,6 +1157,17 @@ namespace OpenSim.Region.CoreModules.World.Terrain loadFromTileCommand.AddArgument("minimum Y tile", "The Y region coordinate of the first section on the file", "Integer"); + Command saveToTileCommand = + new Command("save-tile", CommandIntentions.COMMAND_HAZARDOUS, InterfaceSaveTileFile, "Saves the current heightmap to the larger file."); + saveToTileCommand.AddArgument("filename", + "The file you wish to save to, the file extension determines the loader to be used. Supported extensions include: " + + supportedFileExtensions, "String"); + saveToTileCommand.AddArgument("file width", "The width of the file in tiles", "Integer"); + saveToTileCommand.AddArgument("file height", "The height of the file in tiles", "Integer"); + saveToTileCommand.AddArgument("minimum X tile", "The X region coordinate of the first section on the file", + "Integer"); + saveToTileCommand.AddArgument("minimum Y tile", "The Y region coordinate of the first section on the file", + "Integer"); // Terrain adjustments Command fillRegionCommand = new Command("fill", CommandIntentions.COMMAND_HAZARDOUS, InterfaceFillTerrain, "Fills the current heightmap with a specified value."); @@ -1166,6 +1219,7 @@ namespace OpenSim.Region.CoreModules.World.Terrain m_commander.RegisterCommand("load", loadFromFileCommand); m_commander.RegisterCommand("load-tile", loadFromTileCommand); m_commander.RegisterCommand("save", saveToFileCommand); + m_commander.RegisterCommand("save-tile", saveToTileCommand); m_commander.RegisterCommand("fill", fillRegionCommand); m_commander.RegisterCommand("elevate", elevateCommand); m_commander.RegisterCommand("lower", lowerCommand); From 7592a033df4f81ba985e1d6f57ad0ef488dc5745 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 12 Apr 2011 20:24:28 -0700 Subject: [PATCH 091/138] Moved 3 request handlers from OpenSim.Framework.Servers.HttpServer up to OpenSim.Framework -- just pasted them in WebUtil. This is so that code that uses the Service connectors don't need to include the HttpServer dll -- that was odd. --- .../AsynchronousRestObjectRequester.cs | 192 ---------- .../SynchronousRestFormsRequester.cs | 131 ------- .../SynchronousRestObjectRequester.cs | 122 ------- OpenSim/Framework/WebUtil.cs | 335 ++++++++++++++++++ .../Avatar/Friends/FriendsModule.cs | 2 +- .../InstantMessage/OfflineMessageModule.cs | 1 - .../Asset/AssetServiceInConnectorModule.cs | 1 - .../AuthenticationServiceInConnectorModule.cs | 1 - .../Grid/GridInfoServiceInConnectorModule.cs | 1 - .../HypergridServiceInConnectorModule.cs | 1 - .../InventoryServiceInConnectorModule.cs | 3 +- .../Land/LandServiceInConnectorModule.cs | 1 - .../Login/LLLoginServiceInConnectorModule.cs | 1 - .../NeighbourServiceInConnectorModule.cs | 1 - .../SimulationServiceInConnectorModule.cs | 1 - .../Connectors/Asset/AssetServiceConnector.cs | 1 - .../AuthenticationServiceConnector.cs | 1 - .../AuthorizationServiceConnector.cs | 1 - .../Avatar/AvatarServiceConnector.cs | 1 - .../Freeswitch/RemoteFreeswitchConnector.cs | 1 - .../Friends/FriendsServiceConnector.cs | 1 - .../Connectors/Friends/FriendsSimConnector.cs | 2 +- .../Connectors/Grid/GridServiceConnector.cs | 1 - .../GridUser/GridUserServiceConnector.cs | 1 - .../Inventory/XInventoryConnector.cs | 1 - .../Connectors/Land/LandServiceConnector.cs | 1 - .../Neighbour/NeighbourServiceConnector.cs | 1 - .../Presence/PresenceServiceConnector.cs | 1 - .../UserAccountServiceConnector.cs | 1 - prebuild.xml | 1 - 30 files changed, 338 insertions(+), 472 deletions(-) delete mode 100644 OpenSim/Framework/Servers/HttpServer/AsynchronousRestObjectRequester.cs delete mode 100644 OpenSim/Framework/Servers/HttpServer/SynchronousRestFormsRequester.cs delete mode 100644 OpenSim/Framework/Servers/HttpServer/SynchronousRestObjectRequester.cs diff --git a/OpenSim/Framework/Servers/HttpServer/AsynchronousRestObjectRequester.cs b/OpenSim/Framework/Servers/HttpServer/AsynchronousRestObjectRequester.cs deleted file mode 100644 index 03c12dd560..0000000000 --- a/OpenSim/Framework/Servers/HttpServer/AsynchronousRestObjectRequester.cs +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.IO; -using System.Net; -using System.Reflection; -using System.Text; -using System.Xml; -using System.Xml.Serialization; -using log4net; - -namespace OpenSim.Framework.Servers.HttpServer -{ - public class AsynchronousRestObjectRequester - { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - /// - /// Perform an asynchronous REST request. - /// - /// GET or POST - /// - /// - /// - /// - /// - /// Thrown if we encounter a - /// network issue while posting the request. You'll want to make - /// sure you deal with this as they're not uncommon - // - public static void MakeRequest(string verb, - string requestUrl, TRequest obj, Action action) - { -// m_log.DebugFormat("[ASYNC REQUEST]: Starting {0} {1}", verb, requestUrl); - - Type type = typeof (TRequest); - - WebRequest request = WebRequest.Create(requestUrl); - WebResponse response = null; - TResponse deserial = default(TResponse); - XmlSerializer deserializer = new XmlSerializer(typeof (TResponse)); - - request.Method = verb; - - if (verb == "POST") - { - request.ContentType = "text/xml"; - - MemoryStream buffer = new MemoryStream(); - - XmlWriterSettings settings = new XmlWriterSettings(); - settings.Encoding = Encoding.UTF8; - - using (XmlWriter writer = XmlWriter.Create(buffer, settings)) - { - XmlSerializer serializer = new XmlSerializer(type); - serializer.Serialize(writer, obj); - writer.Flush(); - } - - int length = (int) buffer.Length; - request.ContentLength = length; - - request.BeginGetRequestStream(delegate(IAsyncResult res) - { - Stream requestStream = request.EndGetRequestStream(res); - - requestStream.Write(buffer.ToArray(), 0, length); - requestStream.Close(); - - request.BeginGetResponse(delegate(IAsyncResult ar) - { - response = request.EndGetResponse(ar); - Stream respStream = null; - try - { - respStream = response.GetResponseStream(); - deserial = (TResponse)deserializer.Deserialize( - respStream); - } - catch (System.InvalidOperationException) - { - } - finally - { - // Let's not close this - //buffer.Close(); - respStream.Close(); - response.Close(); - } - - action(deserial); - - }, null); - }, null); - - - return; - } - - request.BeginGetResponse(delegate(IAsyncResult res2) - { - try - { - // If the server returns a 404, this appears to trigger a System.Net.WebException even though that isn't - // documented in MSDN - response = request.EndGetResponse(res2); - - Stream respStream = null; - try - { - respStream = response.GetResponseStream(); - deserial = (TResponse)deserializer.Deserialize(respStream); - } - catch (System.InvalidOperationException) - { - } - finally - { - respStream.Close(); - response.Close(); - } - } - catch (WebException e) - { - if (e.Status == WebExceptionStatus.ProtocolError) - { - if (e.Response is HttpWebResponse) - { - HttpWebResponse httpResponse = (HttpWebResponse)e.Response; - - if (httpResponse.StatusCode != HttpStatusCode.NotFound) - { - // We don't appear to be handling any other status codes, so log these feailures to that - // people don't spend unnecessary hours hunting phantom bugs. - m_log.DebugFormat( - "[ASYNC REQUEST]: Request {0} {1} failed with unexpected status code {2}", - verb, requestUrl, httpResponse.StatusCode); - } - } - } - else - { - m_log.ErrorFormat("[ASYNC REQUEST]: Request {0} {1} failed with status {2} and message {3}", verb, requestUrl, e.Status, e.Message); - } - } - catch (Exception e) - { - m_log.ErrorFormat("[ASYNC REQUEST]: Request {0} {1} failed with exception {2}", verb, requestUrl, e); - } - - // m_log.DebugFormat("[ASYNC REQUEST]: Received {0}", deserial.ToString()); - - try - { - action(deserial); - } - catch (Exception e) - { - m_log.ErrorFormat( - "[ASYNC REQUEST]: Request {0} {1} callback failed with exception {2}", verb, requestUrl, e); - } - - }, null); - } - } -} diff --git a/OpenSim/Framework/Servers/HttpServer/SynchronousRestFormsRequester.cs b/OpenSim/Framework/Servers/HttpServer/SynchronousRestFormsRequester.cs deleted file mode 100644 index 41ece86047..0000000000 --- a/OpenSim/Framework/Servers/HttpServer/SynchronousRestFormsRequester.cs +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.IO; -using System.Net; -using System.Reflection; -using System.Text; -using System.Xml; -using System.Xml.Serialization; - -using log4net; - -namespace OpenSim.Framework.Servers.HttpServer -{ - public class SynchronousRestFormsRequester - { - private static readonly ILog m_log = - LogManager.GetLogger( - MethodBase.GetCurrentMethod().DeclaringType); - - /// - /// Perform a synchronous REST request. - /// - /// - /// - /// - /// - /// - /// Thrown if we encounter a network issue while posting - /// the request. You'll want to make sure you deal with this as they're not uncommon - public static string MakeRequest(string verb, string requestUrl, string obj) - { - WebRequest request = WebRequest.Create(requestUrl); - request.Method = verb; - string respstring = String.Empty; - - using (MemoryStream buffer = new MemoryStream()) - { - if ((verb == "POST") || (verb == "PUT")) - { - request.ContentType = "text/www-form-urlencoded"; - - int length = 0; - using (StreamWriter writer = new StreamWriter(buffer)) - { - writer.Write(obj); - writer.Flush(); - } - - length = (int)obj.Length; - request.ContentLength = length; - - Stream requestStream = null; - try - { - requestStream = request.GetRequestStream(); - requestStream.Write(buffer.ToArray(), 0, length); - } - catch (Exception e) - { - m_log.DebugFormat("[FORMS]: exception occured on sending request to {0}: " + e.ToString(), requestUrl); - } - finally - { - if (requestStream != null) - requestStream.Close(); - } - } - - try - { - using (WebResponse resp = request.GetResponse()) - { - if (resp.ContentLength != 0) - { - Stream respStream = null; - try - { - respStream = resp.GetResponseStream(); - using (StreamReader reader = new StreamReader(respStream)) - { - respstring = reader.ReadToEnd(); - } - } - catch (Exception e) - { - m_log.DebugFormat("[FORMS]: exception occured on receiving reply " + e.ToString()); - } - finally - { - if (respStream != null) - respStream.Close(); - } - } - } - } - catch (System.InvalidOperationException) - { - // This is what happens when there is invalid XML - m_log.DebugFormat("[FORMS]: InvalidOperationException on receiving request"); - } - } - return respstring; - } - } -} diff --git a/OpenSim/Framework/Servers/HttpServer/SynchronousRestObjectRequester.cs b/OpenSim/Framework/Servers/HttpServer/SynchronousRestObjectRequester.cs deleted file mode 100644 index eab463cbd8..0000000000 --- a/OpenSim/Framework/Servers/HttpServer/SynchronousRestObjectRequester.cs +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.IO; -using System.Net; -using System.Text; -using System.Xml; -using System.Xml.Serialization; - -namespace OpenSim.Framework.Servers.HttpServer -{ - public class SynchronousRestObjectPoster - { - [Obsolete] - public static TResponse BeginPostObject(string verb, string requestUrl, TRequest obj) - { - return SynchronousRestObjectRequester.MakeRequest(verb, requestUrl, obj); - } - } - - public class SynchronousRestObjectRequester - { - /// - /// Perform a synchronous REST request. - /// - /// - /// - /// - /// - /// - /// Thrown if we encounter a network issue while posting - /// the request. You'll want to make sure you deal with this as they're not uncommon - public static TResponse MakeRequest(string verb, string requestUrl, TRequest obj) - { - Type type = typeof (TRequest); - TResponse deserial = default(TResponse); - - WebRequest request = WebRequest.Create(requestUrl); - request.Method = verb; - - if ((verb == "POST") || (verb == "PUT")) - { - request.ContentType = "text/xml"; - - MemoryStream buffer = new MemoryStream(); - - XmlWriterSettings settings = new XmlWriterSettings(); - settings.Encoding = Encoding.UTF8; - - using (XmlWriter writer = XmlWriter.Create(buffer, settings)) - { - XmlSerializer serializer = new XmlSerializer(type); - serializer.Serialize(writer, obj); - writer.Flush(); - } - - int length = (int) buffer.Length; - request.ContentLength = length; - - Stream requestStream = null; - try - { - requestStream = request.GetRequestStream(); - requestStream.Write(buffer.ToArray(), 0, length); - } - catch (Exception) - { - return deserial; - } - finally - { - if (requestStream != null) - requestStream.Close(); - } - } - - try - { - using (WebResponse resp = request.GetResponse()) - { - if (resp.ContentLength > 0) - { - Stream respStream = resp.GetResponseStream(); - XmlSerializer deserializer = new XmlSerializer(typeof(TResponse)); - deserial = (TResponse)deserializer.Deserialize(respStream); - respStream.Close(); - } - } - } - catch (System.InvalidOperationException) - { - // This is what happens when there is invalid XML - } - return deserial; - } - } -} diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index 1feeeb31e5..64cd014f5c 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs @@ -36,6 +36,9 @@ using System.Net.Security; using System.Reflection; using System.Text; using System.Web; +using System.Xml; +using System.Xml.Serialization; + using log4net; using OpenSim.Framework.Servers.HttpServer; using OpenMetaverse.StructuredData; @@ -625,4 +628,336 @@ namespace OpenSim.Framework } + + public static class AsynchronousRestObjectRequester + { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + /// + /// Perform an asynchronous REST request. + /// + /// GET or POST + /// + /// + /// + /// + /// + /// Thrown if we encounter a + /// network issue while posting the request. You'll want to make + /// sure you deal with this as they're not uncommon + // + public static void MakeRequest(string verb, + string requestUrl, TRequest obj, Action action) + { + // m_log.DebugFormat("[ASYNC REQUEST]: Starting {0} {1}", verb, requestUrl); + + Type type = typeof(TRequest); + + WebRequest request = WebRequest.Create(requestUrl); + WebResponse response = null; + TResponse deserial = default(TResponse); + XmlSerializer deserializer = new XmlSerializer(typeof(TResponse)); + + request.Method = verb; + + if (verb == "POST") + { + request.ContentType = "text/xml"; + + MemoryStream buffer = new MemoryStream(); + + XmlWriterSettings settings = new XmlWriterSettings(); + settings.Encoding = Encoding.UTF8; + + using (XmlWriter writer = XmlWriter.Create(buffer, settings)) + { + XmlSerializer serializer = new XmlSerializer(type); + serializer.Serialize(writer, obj); + writer.Flush(); + } + + int length = (int)buffer.Length; + request.ContentLength = length; + + request.BeginGetRequestStream(delegate(IAsyncResult res) + { + Stream requestStream = request.EndGetRequestStream(res); + + requestStream.Write(buffer.ToArray(), 0, length); + requestStream.Close(); + + request.BeginGetResponse(delegate(IAsyncResult ar) + { + response = request.EndGetResponse(ar); + Stream respStream = null; + try + { + respStream = response.GetResponseStream(); + deserial = (TResponse)deserializer.Deserialize( + respStream); + } + catch (System.InvalidOperationException) + { + } + finally + { + // Let's not close this + //buffer.Close(); + respStream.Close(); + response.Close(); + } + + action(deserial); + + }, null); + }, null); + + + return; + } + + request.BeginGetResponse(delegate(IAsyncResult res2) + { + try + { + // If the server returns a 404, this appears to trigger a System.Net.WebException even though that isn't + // documented in MSDN + response = request.EndGetResponse(res2); + + Stream respStream = null; + try + { + respStream = response.GetResponseStream(); + deserial = (TResponse)deserializer.Deserialize(respStream); + } + catch (System.InvalidOperationException) + { + } + finally + { + respStream.Close(); + response.Close(); + } + } + catch (WebException e) + { + if (e.Status == WebExceptionStatus.ProtocolError) + { + if (e.Response is HttpWebResponse) + { + HttpWebResponse httpResponse = (HttpWebResponse)e.Response; + + if (httpResponse.StatusCode != HttpStatusCode.NotFound) + { + // We don't appear to be handling any other status codes, so log these feailures to that + // people don't spend unnecessary hours hunting phantom bugs. + m_log.DebugFormat( + "[ASYNC REQUEST]: Request {0} {1} failed with unexpected status code {2}", + verb, requestUrl, httpResponse.StatusCode); + } + } + } + else + { + m_log.ErrorFormat("[ASYNC REQUEST]: Request {0} {1} failed with status {2} and message {3}", verb, requestUrl, e.Status, e.Message); + } + } + catch (Exception e) + { + m_log.ErrorFormat("[ASYNC REQUEST]: Request {0} {1} failed with exception {2}", verb, requestUrl, e); + } + + // m_log.DebugFormat("[ASYNC REQUEST]: Received {0}", deserial.ToString()); + + try + { + action(deserial); + } + catch (Exception e) + { + m_log.ErrorFormat( + "[ASYNC REQUEST]: Request {0} {1} callback failed with exception {2}", verb, requestUrl, e); + } + + }, null); + } + } + + public static class SynchronousRestFormsRequester + { + private static readonly ILog m_log = + LogManager.GetLogger( + MethodBase.GetCurrentMethod().DeclaringType); + + /// + /// Perform a synchronous REST request. + /// + /// + /// + /// + /// + /// + /// Thrown if we encounter a network issue while posting + /// the request. You'll want to make sure you deal with this as they're not uncommon + public static string MakeRequest(string verb, string requestUrl, string obj) + { + WebRequest request = WebRequest.Create(requestUrl); + request.Method = verb; + string respstring = String.Empty; + + using (MemoryStream buffer = new MemoryStream()) + { + if ((verb == "POST") || (verb == "PUT")) + { + request.ContentType = "text/www-form-urlencoded"; + + int length = 0; + using (StreamWriter writer = new StreamWriter(buffer)) + { + writer.Write(obj); + writer.Flush(); + } + + length = (int)obj.Length; + request.ContentLength = length; + + Stream requestStream = null; + try + { + requestStream = request.GetRequestStream(); + requestStream.Write(buffer.ToArray(), 0, length); + } + catch (Exception e) + { + m_log.DebugFormat("[FORMS]: exception occured on sending request to {0}: " + e.ToString(), requestUrl); + } + finally + { + if (requestStream != null) + requestStream.Close(); + } + } + + try + { + using (WebResponse resp = request.GetResponse()) + { + if (resp.ContentLength != 0) + { + Stream respStream = null; + try + { + respStream = resp.GetResponseStream(); + using (StreamReader reader = new StreamReader(respStream)) + { + respstring = reader.ReadToEnd(); + } + } + catch (Exception e) + { + m_log.DebugFormat("[FORMS]: exception occured on receiving reply " + e.ToString()); + } + finally + { + if (respStream != null) + respStream.Close(); + } + } + } + } + catch (System.InvalidOperationException) + { + // This is what happens when there is invalid XML + m_log.DebugFormat("[FORMS]: InvalidOperationException on receiving request"); + } + } + return respstring; + } + } + + public class SynchronousRestObjectPoster + { + [Obsolete] + public static TResponse BeginPostObject(string verb, string requestUrl, TRequest obj) + { + return SynchronousRestObjectRequester.MakeRequest(verb, requestUrl, obj); + } + } + + public class SynchronousRestObjectRequester + { + /// + /// Perform a synchronous REST request. + /// + /// + /// + /// + /// + /// + /// Thrown if we encounter a network issue while posting + /// the request. You'll want to make sure you deal with this as they're not uncommon + public static TResponse MakeRequest(string verb, string requestUrl, TRequest obj) + { + Type type = typeof(TRequest); + TResponse deserial = default(TResponse); + + WebRequest request = WebRequest.Create(requestUrl); + request.Method = verb; + + if ((verb == "POST") || (verb == "PUT")) + { + request.ContentType = "text/xml"; + + MemoryStream buffer = new MemoryStream(); + + XmlWriterSettings settings = new XmlWriterSettings(); + settings.Encoding = Encoding.UTF8; + + using (XmlWriter writer = XmlWriter.Create(buffer, settings)) + { + XmlSerializer serializer = new XmlSerializer(type); + serializer.Serialize(writer, obj); + writer.Flush(); + } + + int length = (int)buffer.Length; + request.ContentLength = length; + + Stream requestStream = null; + try + { + requestStream = request.GetRequestStream(); + requestStream.Write(buffer.ToArray(), 0, length); + } + catch (Exception) + { + return deserial; + } + finally + { + if (requestStream != null) + requestStream.Close(); + } + } + + try + { + using (WebResponse resp = request.GetResponse()) + { + if (resp.ContentLength > 0) + { + Stream respStream = resp.GetResponseStream(); + XmlSerializer deserializer = new XmlSerializer(typeof(TResponse)); + deserial = (TResponse)deserializer.Deserialize(respStream); + respStream.Close(); + } + } + } + catch (System.InvalidOperationException) + { + // This is what happens when there is invalid XML + } + return deserial; + } + } } diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs index 4d74b2a0a0..5baf0785f4 100644 --- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs @@ -34,13 +34,13 @@ using Nini.Config; using Nwc.XmlRpc; using OpenMetaverse; using OpenSim.Framework; +using OpenSim.Framework.Servers.HttpServer; using OpenSim.Framework.Communications; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; using OpenSim.Services.Interfaces; using OpenSim.Services.Connectors.Friends; using OpenSim.Server.Base; -using OpenSim.Framework.Servers.HttpServer; using FriendInfo = OpenSim.Services.Interfaces.FriendInfo; using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo; using GridRegion = OpenSim.Services.Interfaces.GridRegion; diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs index fdfcd104c0..919ea338f4 100644 --- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs @@ -33,7 +33,6 @@ using OpenMetaverse; using OpenSim.Framework; using OpenSim.Framework.Communications; using OpenSim.Framework.Servers; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Framework.Client; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Asset/AssetServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Asset/AssetServiceInConnectorModule.cs index e25700d1f7..422f394d7a 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Asset/AssetServiceInConnectorModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Asset/AssetServiceInConnectorModule.cs @@ -31,7 +31,6 @@ using System.Collections.Generic; using log4net; using Nini.Config; using OpenSim.Framework; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Interfaces; using OpenSim.Server.Base; diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Authentication/AuthenticationServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Authentication/AuthenticationServiceInConnectorModule.cs index 02acddc37e..2b5beba374 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Authentication/AuthenticationServiceInConnectorModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Authentication/AuthenticationServiceInConnectorModule.cs @@ -31,7 +31,6 @@ using System.Collections.Generic; using log4net; using Nini.Config; using OpenSim.Framework; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Interfaces; using OpenSim.Server.Base; diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Grid/GridInfoServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Grid/GridInfoServiceInConnectorModule.cs index 6d975afb14..f29c074206 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Grid/GridInfoServiceInConnectorModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Grid/GridInfoServiceInConnectorModule.cs @@ -31,7 +31,6 @@ using System.Collections.Generic; using log4net; using Nini.Config; using OpenSim.Framework; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Interfaces; using OpenSim.Server.Base; diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs index 2f96bcb1ab..d2343c994e 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs @@ -31,7 +31,6 @@ using System.Collections.Generic; using log4net; using Nini.Config; using OpenSim.Framework; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Interfaces; using OpenSim.Server.Base; diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Inventory/InventoryServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Inventory/InventoryServiceInConnectorModule.cs index 209cf0d3c2..53a8ace14c 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Inventory/InventoryServiceInConnectorModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Inventory/InventoryServiceInConnectorModule.cs @@ -31,9 +31,8 @@ using System.Collections.Generic; using log4net; using Nini.Config; using OpenSim.Framework; -using OpenSim.Framework.Servers.HttpServer; -using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Interfaces; +using OpenSim.Region.Framework.Scenes; using OpenSim.Server.Base; using OpenSim.Server.Handlers.Base; diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Land/LandServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Land/LandServiceInConnectorModule.cs index fcc69e949f..fc642032b5 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Land/LandServiceInConnectorModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Land/LandServiceInConnectorModule.cs @@ -31,7 +31,6 @@ using System.Collections.Generic; using log4net; using Nini.Config; using OpenSim.Framework; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Interfaces; using OpenSim.Server.Base; diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Login/LLLoginServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Login/LLLoginServiceInConnectorModule.cs index 2a9366c44e..f759470b28 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Login/LLLoginServiceInConnectorModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Login/LLLoginServiceInConnectorModule.cs @@ -31,7 +31,6 @@ using System.Collections.Generic; using log4net; using Nini.Config; using OpenSim.Framework; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Interfaces; using OpenSim.Server.Base; diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs index 35518d59f8..5c3263260e 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs @@ -31,7 +31,6 @@ using System.Collections.Generic; using log4net; using Nini.Config; using OpenSim.Framework; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Interfaces; using OpenSim.Server.Base; diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Simulation/SimulationServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Simulation/SimulationServiceInConnectorModule.cs index 5ee1c97e5f..86b4926ac5 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Simulation/SimulationServiceInConnectorModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Simulation/SimulationServiceInConnectorModule.cs @@ -31,7 +31,6 @@ using System.Collections.Generic; using log4net; using Nini.Config; using OpenSim.Framework; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Interfaces; using OpenSim.Server.Base; diff --git a/OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs b/OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs index 65b3537041..f1da4fa777 100644 --- a/OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs +++ b/OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs @@ -34,7 +34,6 @@ using Nini.Config; using OpenSim.Framework; using OpenSim.Framework.Console; using OpenSim.Framework.Communications; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Services.Interfaces; using OpenMetaverse; diff --git a/OpenSim/Services/Connectors/Authentication/AuthenticationServiceConnector.cs b/OpenSim/Services/Connectors/Authentication/AuthenticationServiceConnector.cs index 6f77a2d8b3..c04e7a4971 100644 --- a/OpenSim/Services/Connectors/Authentication/AuthenticationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Authentication/AuthenticationServiceConnector.cs @@ -33,7 +33,6 @@ using System.Reflection; using Nini.Config; using OpenSim.Framework; using OpenSim.Framework.Communications; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Services.Interfaces; using OpenSim.Server.Base; using OpenMetaverse; diff --git a/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs b/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs index 4eb4bd2470..35b7109496 100644 --- a/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs @@ -33,7 +33,6 @@ using System.Reflection; using Nini.Config; using OpenSim.Framework; using OpenSim.Framework.Communications; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Services.Interfaces; using OpenMetaverse; diff --git a/OpenSim/Services/Connectors/Avatar/AvatarServiceConnector.cs b/OpenSim/Services/Connectors/Avatar/AvatarServiceConnector.cs index 1cd6bf8e1a..1a93ae71c6 100644 --- a/OpenSim/Services/Connectors/Avatar/AvatarServiceConnector.cs +++ b/OpenSim/Services/Connectors/Avatar/AvatarServiceConnector.cs @@ -33,7 +33,6 @@ using System.Reflection; using Nini.Config; using OpenSim.Framework; using OpenSim.Framework.Communications; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Services.Interfaces; using GridRegion = OpenSim.Services.Interfaces.GridRegion; using IAvatarService = OpenSim.Services.Interfaces.IAvatarService; diff --git a/OpenSim/Services/Connectors/Freeswitch/RemoteFreeswitchConnector.cs b/OpenSim/Services/Connectors/Freeswitch/RemoteFreeswitchConnector.cs index c9bba0b730..d68829996d 100644 --- a/OpenSim/Services/Connectors/Freeswitch/RemoteFreeswitchConnector.cs +++ b/OpenSim/Services/Connectors/Freeswitch/RemoteFreeswitchConnector.cs @@ -33,7 +33,6 @@ using System.Reflection; using Nini.Config; using OpenSim.Framework; using OpenSim.Framework.Communications; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Services.Interfaces; using OpenSim.Server.Base; using OpenMetaverse; diff --git a/OpenSim/Services/Connectors/Friends/FriendsServiceConnector.cs b/OpenSim/Services/Connectors/Friends/FriendsServiceConnector.cs index 36b5083860..861c4759a3 100644 --- a/OpenSim/Services/Connectors/Friends/FriendsServiceConnector.cs +++ b/OpenSim/Services/Connectors/Friends/FriendsServiceConnector.cs @@ -33,7 +33,6 @@ using System.Reflection; using Nini.Config; using OpenSim.Framework; using OpenSim.Framework.Communications; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Services.Interfaces; using FriendInfo = OpenSim.Services.Interfaces.FriendInfo; using OpenSim.Server.Base; diff --git a/OpenSim/Services/Connectors/Friends/FriendsSimConnector.cs b/OpenSim/Services/Connectors/Friends/FriendsSimConnector.cs index 0a7b277e4c..4ffa68c381 100644 --- a/OpenSim/Services/Connectors/Friends/FriendsSimConnector.cs +++ b/OpenSim/Services/Connectors/Friends/FriendsSimConnector.cs @@ -32,7 +32,7 @@ using System.Reflection; using OpenSim.Services.Interfaces; using GridRegion = OpenSim.Services.Interfaces.GridRegion; using OpenSim.Server.Base; -using OpenSim.Framework.Servers.HttpServer; +using OpenSim.Framework; using OpenMetaverse; using log4net; diff --git a/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs b/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs index 5092d741e6..e57f28b44e 100644 --- a/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs +++ b/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs @@ -33,7 +33,6 @@ using System.Reflection; using Nini.Config; using OpenSim.Framework; using OpenSim.Framework.Communications; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Services.Interfaces; using GridRegion = OpenSim.Services.Interfaces.GridRegion; using OpenSim.Server.Base; diff --git a/OpenSim/Services/Connectors/GridUser/GridUserServiceConnector.cs b/OpenSim/Services/Connectors/GridUser/GridUserServiceConnector.cs index b3ea865996..738cc06949 100644 --- a/OpenSim/Services/Connectors/GridUser/GridUserServiceConnector.cs +++ b/OpenSim/Services/Connectors/GridUser/GridUserServiceConnector.cs @@ -33,7 +33,6 @@ using System.Reflection; using Nini.Config; using OpenSim.Framework; using OpenSim.Framework.Communications; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Services.Interfaces; using GridRegion = OpenSim.Services.Interfaces.GridRegion; using OpenSim.Server.Base; diff --git a/OpenSim/Services/Connectors/Inventory/XInventoryConnector.cs b/OpenSim/Services/Connectors/Inventory/XInventoryConnector.cs index b3bfcc27df..cd9f2bfcff 100644 --- a/OpenSim/Services/Connectors/Inventory/XInventoryConnector.cs +++ b/OpenSim/Services/Connectors/Inventory/XInventoryConnector.cs @@ -34,7 +34,6 @@ using Nini.Config; using OpenSim.Framework; using OpenSim.Framework.Console; using OpenSim.Framework.Communications; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Services.Interfaces; using OpenSim.Server.Base; using OpenMetaverse; diff --git a/OpenSim/Services/Connectors/Land/LandServiceConnector.cs b/OpenSim/Services/Connectors/Land/LandServiceConnector.cs index 252f7a1d16..30a73a471c 100644 --- a/OpenSim/Services/Connectors/Land/LandServiceConnector.cs +++ b/OpenSim/Services/Connectors/Land/LandServiceConnector.cs @@ -34,7 +34,6 @@ using System.Reflection; using Nini.Config; using OpenSim.Framework; using OpenSim.Framework.Communications; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Services.Interfaces; using OpenMetaverse; using Nwc.XmlRpc; diff --git a/OpenSim/Services/Connectors/Neighbour/NeighbourServiceConnector.cs b/OpenSim/Services/Connectors/Neighbour/NeighbourServiceConnector.cs index 9e444c49bc..2cae02d42a 100644 --- a/OpenSim/Services/Connectors/Neighbour/NeighbourServiceConnector.cs +++ b/OpenSim/Services/Connectors/Neighbour/NeighbourServiceConnector.cs @@ -36,7 +36,6 @@ using System.Text; using Nini.Config; using OpenSim.Framework; using OpenSim.Framework.Communications; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Services.Interfaces; using OpenMetaverse; using OpenMetaverse.StructuredData; diff --git a/OpenSim/Services/Connectors/Presence/PresenceServiceConnector.cs b/OpenSim/Services/Connectors/Presence/PresenceServiceConnector.cs index 41ebeaf05e..7238afc613 100644 --- a/OpenSim/Services/Connectors/Presence/PresenceServiceConnector.cs +++ b/OpenSim/Services/Connectors/Presence/PresenceServiceConnector.cs @@ -33,7 +33,6 @@ using System.Reflection; using Nini.Config; using OpenSim.Framework; using OpenSim.Framework.Communications; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Services.Interfaces; using GridRegion = OpenSim.Services.Interfaces.GridRegion; using OpenSim.Server.Base; diff --git a/OpenSim/Services/Connectors/UserAccounts/UserAccountServiceConnector.cs b/OpenSim/Services/Connectors/UserAccounts/UserAccountServiceConnector.cs index 2a5df83193..f6835b9f2f 100644 --- a/OpenSim/Services/Connectors/UserAccounts/UserAccountServiceConnector.cs +++ b/OpenSim/Services/Connectors/UserAccounts/UserAccountServiceConnector.cs @@ -33,7 +33,6 @@ using System.Reflection; using Nini.Config; using OpenSim.Framework; using OpenSim.Framework.Communications; -using OpenSim.Framework.Servers.HttpServer; using OpenSim.Server.Base; using OpenSim.Services.Interfaces; using OpenMetaverse; diff --git a/prebuild.xml b/prebuild.xml index 870ebf300c..81716641c6 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -931,7 +931,6 @@ - From 90b810c27ef4fe3da1796842940af13db61fb91d Mon Sep 17 00:00:00 2001 From: dahlia Date: Tue, 12 Apr 2011 22:47:30 -0700 Subject: [PATCH 092/138] force mesh proxy for simple box prims with path cut --- OpenSim/Region/Physics/BulletDotNETPlugin/BulletDotNETScene.cs | 3 +++ OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | 3 +++ 2 files changed, 6 insertions(+) diff --git a/OpenSim/Region/Physics/BulletDotNETPlugin/BulletDotNETScene.cs b/OpenSim/Region/Physics/BulletDotNETPlugin/BulletDotNETScene.cs index 85e34c1e3d..6df213d851 100644 --- a/OpenSim/Region/Physics/BulletDotNETPlugin/BulletDotNETScene.cs +++ b/OpenSim/Region/Physics/BulletDotNETPlugin/BulletDotNETScene.cs @@ -648,6 +648,9 @@ namespace OpenSim.Region.Physics.BulletDotNETPlugin if (pbs.ProfileHollow != 0) iPropertiesNotSupportedDefault++; + if ((pbs.PathBegin != 0) || pbs.PathEnd != 0) + iPropertiesNotSupportedDefault++; + if ((pbs.PathTwistBegin != 0) || (pbs.PathTwist != 0)) iPropertiesNotSupportedDefault++; diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs index eb97f41e3c..a0101af2bb 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs @@ -2528,6 +2528,9 @@ namespace OpenSim.Region.Physics.OdePlugin if (pbs.ProfileHollow != 0) iPropertiesNotSupportedDefault++; + if ((pbs.PathBegin != 0) || pbs.PathEnd != 0) + iPropertiesNotSupportedDefault++; + if ((pbs.PathTwistBegin != 0) || (pbs.PathTwist != 0)) iPropertiesNotSupportedDefault++; From 6613daa82a3bf0d45b0be1b2941646042f9008f4 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 13 Apr 2011 17:46:36 +0100 Subject: [PATCH 093/138] Add a regression test for rezzing a single object into a scene from user inventory --- .../ClientStack/LindenUDP/LLClientView.cs | 9 +- .../Tests/InventoryAccessModuleTests.cs | 133 ++++++++++++++++++ .../World/Estate/EstateManagementModule.cs | 4 + prebuild.xml | 1 + 4 files changed, 146 insertions(+), 1 deletion(-) create mode 100644 OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 8de31d7069..76d7f7964b 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -4290,6 +4290,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP public void SendEstateCovenantInformation(UUID covenant) { +// m_log.DebugFormat("[LLCLIENTVIEW]: Sending estate covenant asset id of {0} to {1}", covenant, Name); + EstateCovenantReplyPacket einfopack = new EstateCovenantReplyPacket(); EstateCovenantReplyPacket.DataBlock edata = new EstateCovenantReplyPacket.DataBlock(); edata.CovenantID = covenant; @@ -4300,8 +4302,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP OutPacket(einfopack, ThrottleOutPacketType.Task); } - public void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, UUID covenant, string abuseEmail, UUID estateOwner) + public void SendDetailedEstateData( + UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, + UUID covenant, string abuseEmail, UUID estateOwner) { +// m_log.DebugFormat( +// "[LLCLIENTVIEW]: Sending detailed estate data to {0} with covenant asset id {1}", Name, covenant); + EstateOwnerMessagePacket packet = new EstateOwnerMessagePacket(); packet.MethodData.Invoice = invoice; packet.AgentData.TransactionID = UUID.Random(); diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs new file mode 100644 index 0000000000..ecf70ac347 --- /dev/null +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs @@ -0,0 +1,133 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Threading; +using Nini.Config; +using NUnit.Framework; +using OpenMetaverse; +using OpenSim.Data; +using OpenSim.Framework; +using OpenSim.Framework.Serialization; +using OpenSim.Framework.Serialization.External; +using OpenSim.Framework.Communications; +using OpenSim.Region.CoreModules.Avatar.Inventory.Archiver; +using OpenSim.Region.CoreModules.Framework.InventoryAccess; +using OpenSim.Region.Framework.Scenes; +using OpenSim.Region.Framework.Scenes.Serialization; +using OpenSim.Services.Interfaces; +using OpenSim.Tests.Common; +using OpenSim.Tests.Common.Mock; +using OpenSim.Tests.Common.Setup; + +namespace OpenSim.Region.CoreModules.Framework.InventoryAccess.Tests +{ + [TestFixture] + public class InventoryAccessModuleTests + { + protected TestScene m_scene; + protected BasicInventoryAccessModule m_iam; + + [SetUp] + public void SetUp() + { + m_iam = new BasicInventoryAccessModule(); + + IConfigSource config = new IniConfigSource(); + config.AddConfig("Modules"); + config.Configs["Modules"].Set("InventoryAccessModule", "BasicInventoryAccessModule"); + + m_scene = SceneSetupHelpers.SetupScene("Inventory"); + SceneSetupHelpers.SetupSceneModules(m_scene, config, m_iam); + } + + [Test] + public void TestRezObject() + { + TestHelper.InMethod(); + log4net.Config.XmlConfigurator.Configure(); + + // Create user + string userFirstName = "Jock"; + string userLastName = "Stirrup"; + string userPassword = "troll"; + UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020"); + UserProfileTestUtils.CreateUserWithInventory(m_scene, userFirstName, userLastName, userId, userPassword); + + // Create asset + SceneObjectGroup object1; + SceneObjectPart part1; + { + string partName = "My Little Dog Object"; + UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); + PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); + Vector3 groupPosition = new Vector3(10, 20, 30); + Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); + Vector3 offsetPosition = new Vector3(5, 10, 15); + + part1 + = new SceneObjectPart( + ownerId, shape, groupPosition, rotationOffset, offsetPosition); + part1.Name = partName; + + object1 = new SceneObjectGroup(part1); + } + + UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); + AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); + m_scene.AssetService.Store(asset1); + + // Create item + UUID item1Id = UUID.Parse("00000000-0000-0000-0000-000000000080"); + string item1Name = "My Little Dog"; + InventoryItemBase item1 = new InventoryItemBase(); + item1.Name = item1Name; + item1.AssetID = asset1.FullID; + item1.ID = item1Id; + InventoryFolderBase objsFolder + = InventoryArchiveUtils.FindFolderByPath(m_scene.InventoryService, userId, "Objects")[0]; + item1.Folder = objsFolder.ID; + m_scene.AddInventoryItem(item1); + + AgentCircuitData acd = new AgentCircuitData(); + acd.AgentID = userId; + TestClient tc = new TestClient(acd, m_scene); + + SceneObjectGroup so + = m_iam.RezObject( + tc, item1Id, Vector3.Zero, Vector3.Zero, UUID.Zero, 1, false, false, false, UUID.Zero, false); + + Assert.That(so, Is.Not.Null); + + SceneObjectPart retrievedPart = m_scene.GetSceneObjectPart(so.UUID); + Assert.That(retrievedPart, Is.Not.Null); + } + } +} \ No newline at end of file diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs index b6d64acb80..ab90e90b78 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs @@ -259,6 +259,10 @@ namespace OpenSim.Region.CoreModules.World.Estate private void handleChangeEstateCovenantRequest(IClientAPI remoteClient, UUID estateCovenantID) { +// m_log.DebugFormat( +// "[ESTATE MANAGEMENT MODULE]: Handling request from {0} to change estate covenant to {1}", +// remoteClient.Name, estateCovenantID); + Scene.RegionInfo.RegionSettings.Covenant = estateCovenantID; Scene.RegionInfo.RegionSettings.Save(); TriggerRegionInfoChange(); diff --git a/prebuild.xml b/prebuild.xml index 81716641c6..49063daa57 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -2888,6 +2888,7 @@ + From 08fd1d9bbd0878e6ea0ce4abc0a664a70865ea01 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 13 Apr 2011 18:11:04 +0100 Subject: [PATCH 094/138] factor out some test code into the SetUp() --- .../Tests/InventoryAccessModuleTests.cs | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs index ecf70ac347..5eca753d03 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs @@ -54,6 +54,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess.Tests { protected TestScene m_scene; protected BasicInventoryAccessModule m_iam; + protected UUID m_userId = UUID.Parse("00000000-0000-0000-0000-000000000020"); + protected TestClient m_tc; [SetUp] public void SetUp() @@ -66,20 +68,23 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess.Tests m_scene = SceneSetupHelpers.SetupScene("Inventory"); SceneSetupHelpers.SetupSceneModules(m_scene, config, m_iam); + + // Create user + string userFirstName = "Jock"; + string userLastName = "Stirrup"; + string userPassword = "troll"; + UserProfileTestUtils.CreateUserWithInventory(m_scene, userFirstName, userLastName, m_userId, userPassword); + + AgentCircuitData acd = new AgentCircuitData(); + acd.AgentID = m_userId; + m_tc = new TestClient(acd, m_scene); } [Test] public void TestRezObject() { TestHelper.InMethod(); - log4net.Config.XmlConfigurator.Configure(); - - // Create user - string userFirstName = "Jock"; - string userLastName = "Stirrup"; - string userPassword = "troll"; - UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020"); - UserProfileTestUtils.CreateUserWithInventory(m_scene, userFirstName, userLastName, userId, userPassword); +// log4net.Config.XmlConfigurator.Configure(); // Create asset SceneObjectGroup object1; @@ -112,17 +117,13 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess.Tests item1.AssetID = asset1.FullID; item1.ID = item1Id; InventoryFolderBase objsFolder - = InventoryArchiveUtils.FindFolderByPath(m_scene.InventoryService, userId, "Objects")[0]; + = InventoryArchiveUtils.FindFolderByPath(m_scene.InventoryService, m_userId, "Objects")[0]; item1.Folder = objsFolder.ID; m_scene.AddInventoryItem(item1); - AgentCircuitData acd = new AgentCircuitData(); - acd.AgentID = userId; - TestClient tc = new TestClient(acd, m_scene); - SceneObjectGroup so = m_iam.RezObject( - tc, item1Id, Vector3.Zero, Vector3.Zero, UUID.Zero, 1, false, false, false, UUID.Zero, false); + m_tc, item1Id, Vector3.Zero, Vector3.Zero, UUID.Zero, 1, false, false, false, UUID.Zero, false); Assert.That(so, Is.Not.Null); From dec9c2283b548818409c91a93307334d1c0d9774 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Wed, 13 Apr 2011 16:10:18 -0400 Subject: [PATCH 095/138] Add ColladaMesh switch --- .../CoreModules/Avatar/Assets/GetMeshModule.cs | 13 +++++++++++-- .../NewFileAgentInventoryVariablePriceModule.cs | 11 ++++++++++- bin/OpenSimDefaults.ini | 6 +++++- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs b/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs index 878242a447..d2278bc3de 100644 --- a/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs @@ -54,6 +54,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets private Scene m_scene; private IAssetService m_assetService; + private bool m_enabled = true; #region IRegionModuleBase Members @@ -65,7 +66,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets public void Initialise(IConfigSource source) { - + IConfig startupConfig = source.Configs["Startup"]; + if (startupConfig == null) + return; + + if (!startupConfig.GetBoolean("ColladaMesh",true)) + m_enabled = false; } public void AddRegion(Scene pScene) @@ -101,16 +107,19 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets public void RegisterCaps(UUID agentID, Caps caps) { + if(!m_enabled) + return; + UUID capID = UUID.Random(); // m_log.Info("[GETMESH]: /CAPS/" + capID); + caps.RegisterHandler("GetMesh", new RestHTTPHandler("GET", "/CAPS/" + capID, delegate(Hashtable m_dhttpMethod) { return ProcessGetMesh(m_dhttpMethod, agentID, caps); })); - } #endregion diff --git a/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs b/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs index 4a42c938d5..fb07cc9ca0 100644 --- a/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs @@ -56,6 +56,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets private Scene m_scene; // private IAssetService m_assetService; private bool m_dumpAssetsToFile = false; + private bool m_enabled = true; #region IRegionModuleBase Members @@ -67,7 +68,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets public void Initialise(IConfigSource source) { - + IConfig startupConfig = source.Configs["Startup"]; + if (startupConfig == null) + return; + + if (!startupConfig.GetBoolean("ColladaMesh",true)) + m_enabled = false; } public void AddRegion(Scene pScene) @@ -103,6 +109,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets public void RegisterCaps(UUID agentID, Caps caps) { + if(!m_enabled) + return; + UUID capID = UUID.Random(); // m_log.Debug("[NEW FILE AGENT INVENTORY VARIABLE PRICE]: /CAPS/" + capID); diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index f857b8da63..107e859827 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -154,7 +154,11 @@ ; mesh, and use it for collisions. This is currently experimental code and enabling ; it may cause unexpected physics problems. ;UseMeshiesPhysicsMesh = false - + + ; enable / disable Collada mesh support + ; default is true + ; ColladaMesh = true + ; Choose one of the physics engines below ; OpenDynamicsEngine is by some distance the most developed physics engine ; basicphysics effectively does not model physics at all, making all objects phantom From 58efd761d13bd4f2617fcb3f94bbe265880589e3 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 13 Apr 2011 21:17:43 +0100 Subject: [PATCH 096/138] Add coalesced scene objects class and serializer. This is currently only used by the TestRezCoalescedObject() regression test. This structure matches the existing one for SceneObjects and will allow code to be reused by the uuid gatherer, other tests, etc. Test is not yet fully implemented due to a bug in rezzing coalesced objects where they all get the same name as the item. Only one object should get the same name as the item, which appears to be the one selected last when the the objects were coalesced in the first place. This bug will be addressed shortly. --- .../InventoryAccess/InventoryAccessModule.cs | 19 ++- .../Tests/InventoryAccessModuleTests.cs | 79 +++++++++++ .../Framework/Scenes/CoalescedSceneObjects.cs | 128 ++++++++++++++++++ OpenSim/Region/Framework/Scenes/Scene.cs | 15 +- OpenSim/Region/Framework/Scenes/SceneGraph.cs | 2 + .../CoalescedSceneObjectsSerializer.cs | 117 ++++++++++++++++ .../Serialization/SceneObjectSerializer.cs | 23 +++- OpenSim/Tests/Common/Setup/AssetHelpers.cs | 15 ++ 8 files changed, 389 insertions(+), 9 deletions(-) create mode 100644 OpenSim/Region/Framework/Scenes/CoalescedSceneObjects.cs create mode 100644 OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 73b0a35b7c..cfcfc79c11 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -274,7 +274,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess float minX, minY, minZ; float maxX, maxY, maxZ; - Vector3[] offsets = m_Scene.GetCombinedBoundingBox(objlist, + Vector3[] offsets = Scene.GetCombinedBoundingBox(objlist, out minX, out maxX, out minY, out maxY, out minZ, out maxZ); @@ -289,7 +289,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess XmlDocument doc = new XmlDocument(); SceneObjectGroup g = objlist[i]; doc.LoadXml(xmlStrings[g.UUID]); - XmlElement e = (XmlElement)doc.SelectSingleNode("/SceneObjectGroup"); + XmlElement e = (XmlElement)doc.SelectSingleNode("/SceneObjectGroup"); e.SetAttribute("offsetx", offsets[i].X.ToString()); e.SetAttribute("offsety", offsets[i].Y.ToString()); e.SetAttribute("offsetz", offsets[i].Z.ToString()); @@ -659,9 +659,18 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess itemId, n.OuterXml); objlist.Add(g); XmlElement el = (XmlElement)n; - float x = Convert.ToSingle(el.GetAttribute("offsetx")); - float y = Convert.ToSingle(el.GetAttribute("offsety")); - float z = Convert.ToSingle(el.GetAttribute("offsetz")); + + string rawX = el.GetAttribute("offsetx"); + string rawY = el.GetAttribute("offsety"); + string rawZ = el.GetAttribute("offsetz"); +// +// m_log.DebugFormat( +// "[INVENTORY ACCESS MODULE]: Converting coalesced object {0} offset <{1}, {2}, {3}>", +// g.Name, rawX, rawY, rawZ); + + float x = Convert.ToSingle(rawX); + float y = Convert.ToSingle(rawY); + float z = Convert.ToSingle(rawZ); veclist.Add(new Vector3(x, y, z)); } } diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs index 5eca753d03..f8fa424738 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs @@ -80,6 +80,85 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess.Tests m_tc = new TestClient(acd, m_scene); } + [Test] + public void TestRezCoalescedObject() + { + TestHelper.InMethod(); + log4net.Config.XmlConfigurator.Configure(); + + // Create asset + SceneObjectGroup object1; + { + string partName = "Object1"; + UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); + PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); + Vector3 groupPosition = new Vector3(10, 20, 30); + Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); + Vector3 offsetPosition = new Vector3(5, 10, 15); + + SceneObjectPart part1 + = new SceneObjectPart( + ownerId, shape, groupPosition, rotationOffset, offsetPosition); + part1.Name = partName; + + object1 = new SceneObjectGroup(part1); + } + + SceneObjectGroup object2; + { + string partName = "Object2"; + UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); + PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); + Vector3 groupPosition = new Vector3(10, 20, 30); + Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); + Vector3 offsetPosition = new Vector3(5, 10, 15); + + SceneObjectPart part1 + = new SceneObjectPart( + ownerId, shape, groupPosition, rotationOffset, offsetPosition); + part1.Name = partName; + + object2 = new SceneObjectGroup(part1); + } + + CoalescedSceneObjects coa = new CoalescedSceneObjects(m_userId, object1, object2); + + UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); + AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, coa); + m_scene.AssetService.Store(asset1); + + // Create item + UUID item1Id = UUID.Parse("00000000-0000-0000-0000-000000000080"); + string item1Name = "My Little Dog"; + InventoryItemBase item1 = new InventoryItemBase(); + item1.Name = item1Name; + item1.AssetID = asset1.FullID; + item1.ID = item1Id; + InventoryFolderBase objsFolder + = InventoryArchiveUtils.FindFolderByPath(m_scene.InventoryService, m_userId, "Objects")[0]; + item1.Folder = objsFolder.ID; + m_scene.AddInventoryItem(item1); + + SceneObjectGroup so + = m_iam.RezObject( + m_tc, item1Id, Vector3.Zero, Vector3.Zero, UUID.Zero, 1, false, false, false, UUID.Zero, false); + + Assert.That(so, Is.Not.Null); + + Assert.That(m_scene.SceneGraph.GetTotalObjectsCount(), Is.EqualTo(2)); + + SceneObjectPart retrievedObj1Part = m_scene.GetSceneObjectPart(object1.Name); + Assert.That(retrievedObj1Part, Is.Null); + + retrievedObj1Part = m_scene.GetSceneObjectPart(item1.Name); + Assert.That(retrievedObj1Part, Is.Not.Null); + Assert.That(retrievedObj1Part.Name, Is.EqualTo(item1.Name)); + + // FIXME: Can't test yet due to a bug where objects in coalescence all get the item name when rerezzed. +// SceneObjectPart retrievedObj2Part = m_scene.GetSceneObjectPart(object2.Name); +// Assert.That(retrievedObj2Part, Is.Not.Null); + } + [Test] public void TestRezObject() { diff --git a/OpenSim/Region/Framework/Scenes/CoalescedSceneObjects.cs b/OpenSim/Region/Framework/Scenes/CoalescedSceneObjects.cs new file mode 100644 index 0000000000..51eac5f3f6 --- /dev/null +++ b/OpenSim/Region/Framework/Scenes/CoalescedSceneObjects.cs @@ -0,0 +1,128 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.Linq; +using OpenMetaverse; + +namespace OpenSim.Region.Framework.Scenes +{ + /// + /// Represents a coalescene of scene objects. A coalescence occurs when objects that are not in the same linkset + /// are grouped together. + /// + public class CoalescedSceneObjects + { + /// + /// The creator of this coalesence, though not necessarily the objects within it. + /// + public UUID CreatorId { get; set; } + + /// + /// The number of objects in this coalesence + /// + public int Count + { + get + { + lock (m_memberObjects) + return m_memberObjects.Count; + } + } + + /// + /// Does this coalesence have any member objects? + /// + public bool HasObjects { get { return Count > 0; } } + + /// + /// Get the objects currently in this coalescence + /// + public List Objects + { + get + { + lock (m_memberObjects) + return new List(m_memberObjects); + } + } + + /// + /// Get the scene that contains the objects in this coalescence. If there are no objects then null is returned. + /// + public Scene Scene + { + get + { + if (!HasObjects) + return null; + else + return Objects[0].Scene; + } + } + + /// + /// At this point, we need to preserve the order of objects added to the coalescence, since the first + /// one will end up matching the item name when rerezzed. + /// + protected List m_memberObjects = new List(); + + public CoalescedSceneObjects(UUID creatorId) + { + CreatorId = creatorId; + } + + public CoalescedSceneObjects(UUID creatorId, params SceneObjectGroup[] objs) : this(creatorId) + { + foreach (SceneObjectGroup obj in objs) + Add(obj); + } + + /// + /// Add an object to the coalescence. + /// + /// + /// The offset of the object within the group + public void Add(SceneObjectGroup obj) + { + lock (m_memberObjects) + m_memberObjects.Add(obj); + } + + /// + /// Removes a scene object from the coalescene + /// + /// + /// true if the object was there to be removed, false if not. + public bool Remove(SceneObjectGroup obj) + { + lock (m_memberObjects) + return m_memberObjects.Remove(obj); + } + } +} \ No newline at end of file diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index f0acc38820..e6dd48940f 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -4839,7 +4839,20 @@ namespace OpenSim.Region.Framework.Scenes } } - public Vector3[] GetCombinedBoundingBox(List objects, out float minX, out float maxX, out float minY, out float maxY, out float minZ, out float maxZ) + /// + /// Get the volume of space that will encompass all the given objects. + /// + /// + /// + /// + /// + /// + /// + /// + /// + public static Vector3[] GetCombinedBoundingBox( + List objects, + out float minX, out float maxX, out float minY, out float maxY, out float minZ, out float maxZ) { minX = 256; maxX = -256; diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 97af0a0b47..72f040252f 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs @@ -997,6 +997,8 @@ namespace OpenSim.Region.Framework.Scenes { foreach (SceneObjectPart p in ((SceneObjectGroup)entity).Parts) { +// m_log.DebugFormat("[SCENE GRAPH]: Part {0} has name {1}", p.UUID, p.Name); + if (p.Name == name) { sop = p; diff --git a/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs new file mode 100644 index 0000000000..3af2f76340 --- /dev/null +++ b/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs @@ -0,0 +1,117 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.IO; +using System.Reflection; +using System.Xml; +using log4net; +using OpenMetaverse; +using OpenSim.Framework; +using OpenSim.Region.Framework.Interfaces; +using OpenSim.Region.Framework.Scenes; + +namespace OpenSim.Region.Framework.Scenes.Serialization +{ + /// + /// Serialize and deserialize coalesced scene objects. + /// + public class CoalescedSceneObjectsSerializer + { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + /// + /// Serialize coalesced objects to Xml + /// + /// + /// + public static string ToXml(CoalescedSceneObjects coa) + { + // TODO: Should probably return an empty xml serialization rather than a blank string + if (!coa.HasObjects) + return ""; + + using (StringWriter sw = new StringWriter()) + { + using (XmlTextWriter writer = new XmlTextWriter(sw)) + { + List coaObjects = coa.Objects; + +// m_log.DebugFormat( +// "[COALESCED SCENE OBJECTS SERIALIZER]: Writing {0} objects for coalesced object", +// coaObjects.Count); + + float minX, minY, minZ; + float maxX, maxY, maxZ; + + Vector3[] offsets = Scene.GetCombinedBoundingBox(coaObjects, + out minX, out maxX, out minY, out maxY, + out minZ, out maxZ); + + writer.WriteStartElement("CoalescedObject"); + + float sizeX = maxX - minX; + float sizeY = maxY - minY; + float sizeZ = maxZ - minZ; + + writer.WriteAttributeString("x", sizeX.ToString()); + writer.WriteAttributeString("y", sizeY.ToString()); + writer.WriteAttributeString("z", sizeZ.ToString()); + + // Embed the offsets into the group XML + for (int i = 0; i < coaObjects.Count; i++) + { + SceneObjectGroup obj = coaObjects[i]; + +// m_log.DebugFormat( +// "[COALESCED SCENE OBJECTS SERIALIZER]: Writing offset for object {0}, {1}", +// i, obj.Name); + + writer.WriteStartElement("SceneObjectGroup"); + writer.WriteAttributeString("offsetx", offsets[i].X.ToString()); + writer.WriteAttributeString("offsety", offsets[i].Y.ToString()); + writer.WriteAttributeString("offsetz", offsets[i].Z.ToString()); + + SceneObjectSerializer.ToOriginalXmlFormat(obj, writer, true); + + writer.WriteEndElement(); + } + + writer.WriteEndElement(); // CoalescedObject + } + + string output = sw.ToString(); + +// m_log.Debug(output); + + return output; + } + } + } +} \ No newline at end of file diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs index b412e25579..bb8a83a1af 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs @@ -139,6 +139,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization return sw.ToString(); } } + /// /// Serialize a scene object to the original xml format @@ -146,11 +147,25 @@ namespace OpenSim.Region.Framework.Scenes.Serialization /// /// public static void ToOriginalXmlFormat(SceneObjectGroup sceneObject, XmlTextWriter writer) + { + ToOriginalXmlFormat(sceneObject, writer, false); + } + + /// + /// Serialize a scene object to the original xml format + /// + /// + /// + /// If false, don't write the enclosing SceneObjectGroup element + /// + public static void ToOriginalXmlFormat(SceneObjectGroup sceneObject, XmlTextWriter writer, bool noRootElement) { //m_log.DebugFormat("[SERIALIZER]: Starting serialization of {0}", Name); //int time = System.Environment.TickCount; - writer.WriteStartElement(String.Empty, "SceneObjectGroup", String.Empty); + if (!noRootElement) + writer.WriteStartElement(String.Empty, "SceneObjectGroup", String.Empty); + writer.WriteStartElement(String.Empty, "RootPart", String.Empty); ToXmlFormat(sceneObject.RootPart, writer); writer.WriteEndElement(); @@ -170,10 +185,12 @@ namespace OpenSim.Region.Framework.Scenes.Serialization writer.WriteEndElement(); // OtherParts sceneObject.SaveScriptedState(writer); - writer.WriteEndElement(); // SceneObjectGroup + + if (!noRootElement) + writer.WriteEndElement(); // SceneObjectGroup //m_log.DebugFormat("[SERIALIZER]: Finished serialization of SOG {0}, {1}ms", Name, System.Environment.TickCount - time); - } + } protected static void ToXmlFormat(SceneObjectPart part, XmlTextWriter writer) { diff --git a/OpenSim/Tests/Common/Setup/AssetHelpers.cs b/OpenSim/Tests/Common/Setup/AssetHelpers.cs index ff4423f7ab..af66d7f0a7 100644 --- a/OpenSim/Tests/Common/Setup/AssetHelpers.cs +++ b/OpenSim/Tests/Common/Setup/AssetHelpers.cs @@ -71,6 +71,21 @@ namespace OpenSim.Tests.Common Encoding.ASCII.GetBytes(SceneObjectSerializer.ToOriginalXmlFormat(sog)), sog.OwnerID); } + + /// + /// Create an asset from the given scene object. + /// + /// + /// + /// + public static AssetBase CreateAsset(UUID assetUuid, CoalescedSceneObjects coa) + { + return CreateAsset( + assetUuid, + AssetType.Object, + Encoding.ASCII.GetBytes(CoalescedSceneObjectsSerializer.ToXml(coa)), + coa.CreatorId); + } /// /// Create an asset from the given data. From d8d28c37372718aa593ead5c85cd45ced83766a5 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 13 Apr 2011 21:31:45 +0100 Subject: [PATCH 097/138] Fix bug where rezzing coalesced objects would give all objects the same name as the item. This now only happens for the first object (which was the item selected last when the coalesce was originally taken) This matches the expected behaviour of the environment as seen on the Linden Labs grid. --- .../InventoryAccess/InventoryAccessModule.cs | 13 +++++++++---- .../Tests/InventoryAccessModuleTests.cs | 5 ++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index cfcfc79c11..1f8bad1eb5 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -762,10 +762,15 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess // affect the name stored in the serialization, transfer // the correct name from the inventory to the // object itself before we rez. - rootPart.Name = item.Name; - rootPart.Description = item.Description; - rootPart.ObjectSaleType = item.SaleType; - rootPart.SalePrice = item.SalePrice; + // + // Only do these for the first object if we are rezzing a coalescence. + if (i == 0) + { + rootPart.Name = item.Name; + rootPart.Description = item.Description; + rootPart.ObjectSaleType = item.SaleType; + rootPart.SalePrice = item.SalePrice; + } group.SetGroup(remoteClient.ActiveGroupId, remoteClient); if ((rootPart.OwnerID != item.Owner) || diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs index f8fa424738..0f2b6108ad 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs @@ -154,9 +154,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess.Tests Assert.That(retrievedObj1Part, Is.Not.Null); Assert.That(retrievedObj1Part.Name, Is.EqualTo(item1.Name)); - // FIXME: Can't test yet due to a bug where objects in coalescence all get the item name when rerezzed. -// SceneObjectPart retrievedObj2Part = m_scene.GetSceneObjectPart(object2.Name); -// Assert.That(retrievedObj2Part, Is.Not.Null); + SceneObjectPart retrievedObj2Part = m_scene.GetSceneObjectPart(object2.Name); + Assert.That(retrievedObj2Part, Is.Not.Null); } [Test] From 68cc5b46fefdf4db68cae1202086257ce731f8a1 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 13 Apr 2011 21:48:16 +0100 Subject: [PATCH 098/138] refactor: move code to obtain the coalescence size and object offsets into CoalescedSceneObjects from the serializer. --- .../Tests/InventoryAccessModuleTests.cs | 2 +- .../Framework/Scenes/CoalescedSceneObjects.cs | 26 ++++++++++++++++++ .../CoalescedSceneObjectsSerializer.cs | 27 +++++++++---------- 3 files changed, 39 insertions(+), 16 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs index 0f2b6108ad..c197cb9b1b 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs @@ -84,7 +84,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess.Tests public void TestRezCoalescedObject() { TestHelper.InMethod(); - log4net.Config.XmlConfigurator.Configure(); +// log4net.Config.XmlConfigurator.Configure(); // Create asset SceneObjectGroup object1; diff --git a/OpenSim/Region/Framework/Scenes/CoalescedSceneObjects.cs b/OpenSim/Region/Framework/Scenes/CoalescedSceneObjects.cs index 51eac5f3f6..af8ccda6c2 100644 --- a/OpenSim/Region/Framework/Scenes/CoalescedSceneObjects.cs +++ b/OpenSim/Region/Framework/Scenes/CoalescedSceneObjects.cs @@ -124,5 +124,31 @@ namespace OpenSim.Region.Framework.Scenes lock (m_memberObjects) return m_memberObjects.Remove(obj); } + + /// + /// Get the total size of the coalescence (the size required to cover all the objects within it) and the + /// offsets of each of those objects. + /// + /// + /// + /// An array of offsets. The order of objects is the same as returned from the Objects property + /// + public Vector3[] GetSizeAndOffsets(out Vector3 size) + { + float minX, minY, minZ; + float maxX, maxY, maxZ; + + Vector3[] offsets + = Scene.GetCombinedBoundingBox( + Objects, out minX, out maxX, out minY, out maxY, out minZ, out maxZ); + + float sizeX = maxX - minX; + float sizeY = maxY - minY; + float sizeZ = maxZ - minZ; + + size = new Vector3(sizeX, sizeY, sizeZ); + + return offsets; + } } } \ No newline at end of file diff --git a/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs index 3af2f76340..a0e120a9ac 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs @@ -42,6 +42,9 @@ namespace OpenSim.Region.Framework.Scenes.Serialization /// /// Serialize and deserialize coalesced scene objects. /// + /// + /// Deserialization not yet here. + /// public class CoalescedSceneObjectsSerializer { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); @@ -60,29 +63,23 @@ namespace OpenSim.Region.Framework.Scenes.Serialization using (StringWriter sw = new StringWriter()) { using (XmlTextWriter writer = new XmlTextWriter(sw)) - { + { + Vector3 size; + List coaObjects = coa.Objects; // m_log.DebugFormat( // "[COALESCED SCENE OBJECTS SERIALIZER]: Writing {0} objects for coalesced object", // coaObjects.Count); - float minX, minY, minZ; - float maxX, maxY, maxZ; - - Vector3[] offsets = Scene.GetCombinedBoundingBox(coaObjects, - out minX, out maxX, out minY, out maxY, - out minZ, out maxZ); + // This is weak - we're relying on the set of coalesced objects still being identical + Vector3[] offsets = coa.GetSizeAndOffsets(out size); writer.WriteStartElement("CoalescedObject"); - float sizeX = maxX - minX; - float sizeY = maxY - minY; - float sizeZ = maxZ - minZ; - - writer.WriteAttributeString("x", sizeX.ToString()); - writer.WriteAttributeString("y", sizeY.ToString()); - writer.WriteAttributeString("z", sizeZ.ToString()); + writer.WriteAttributeString("x", size.X.ToString()); + writer.WriteAttributeString("y", size.Y.ToString()); + writer.WriteAttributeString("z", size.Z.ToString()); // Embed the offsets into the group XML for (int i = 0; i < coaObjects.Count; i++) @@ -100,7 +97,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization SceneObjectSerializer.ToOriginalXmlFormat(obj, writer, true); - writer.WriteEndElement(); + writer.WriteEndElement(); // SceneObjectGroup } writer.WriteEndElement(); // CoalescedObject From c81f5bfc5c3cb0bac2a89ee846099dcaae1f357b Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 13 Apr 2011 22:29:12 +0100 Subject: [PATCH 099/138] Adjust the quanterions used in the rez coalsced object tests to get sensible bounding box and offset numbers. Extend test to check position of objects in the rezzed coalescence. --- .../Tests/InventoryAccessModuleTests.cs | 16 ++++++++++++---- OpenSim/Region/Framework/Scenes/Scene.cs | 4 ++++ .../Region/Framework/Scenes/SceneObjectPart.cs | 9 ++++++++- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs index c197cb9b1b..c76a30af69 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs @@ -93,12 +93,13 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess.Tests UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); Vector3 groupPosition = new Vector3(10, 20, 30); - Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); + Quaternion rotationOffset = Quaternion.Identity; Vector3 offsetPosition = new Vector3(5, 10, 15); SceneObjectPart part1 = new SceneObjectPart( ownerId, shape, groupPosition, rotationOffset, offsetPosition); + part1.Scale = new Vector3(1, 1, 1); part1.Name = partName; object1 = new SceneObjectGroup(part1); @@ -109,13 +110,14 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess.Tests string partName = "Object2"; UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); - Vector3 groupPosition = new Vector3(10, 20, 30); - Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); + Vector3 groupPosition = new Vector3(20, 40, 60); + Quaternion rotationOffset = Quaternion.Identity; Vector3 offsetPosition = new Vector3(5, 10, 15); SceneObjectPart part1 = new SceneObjectPart( ownerId, shape, groupPosition, rotationOffset, offsetPosition); + part1.Scale = new Vector3(1, 1, 1); part1.Name = partName; object2 = new SceneObjectGroup(part1); @@ -141,7 +143,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess.Tests SceneObjectGroup so = m_iam.RezObject( - m_tc, item1Id, Vector3.Zero, Vector3.Zero, UUID.Zero, 1, false, false, false, UUID.Zero, false); + m_tc, item1Id, new Vector3(100, 100, 100), Vector3.Zero, UUID.Zero, 1, false, false, false, UUID.Zero, false); Assert.That(so, Is.Not.Null); @@ -154,8 +156,14 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess.Tests Assert.That(retrievedObj1Part, Is.Not.Null); Assert.That(retrievedObj1Part.Name, Is.EqualTo(item1.Name)); + // Bottom of coalescence is placed on ground, hence we end up with 100.5 rather than 85 since the bottom + // object is unit square. + Assert.That(retrievedObj1Part.AbsolutePosition, Is.EqualTo(new Vector3(95, 90, 100.5f))); + SceneObjectPart retrievedObj2Part = m_scene.GetSceneObjectPart(object2.Name); Assert.That(retrievedObj2Part, Is.Not.Null); + Assert.That(retrievedObj2Part.Name, Is.EqualTo(object2.Name)); + Assert.That(retrievedObj2Part.AbsolutePosition, Is.EqualTo(new Vector3(105, 110, 130.5f))); } [Test] diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index e6dd48940f..fdd5205de8 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -4870,6 +4870,10 @@ namespace OpenSim.Region.Framework.Scenes Vector3 vec = g.AbsolutePosition; g.GetAxisAlignedBoundingBoxRaw(out ominX, out omaxX, out ominY, out omaxY, out ominZ, out omaxZ); + +// m_log.DebugFormat( +// "[SCENE]: For {0} found AxisAlignedBoundingBoxRaw {1}, {2}", +// g.Name, new Vector3(ominX, ominY, ominZ), new Vector3(omaxX, omaxY, omaxZ)); ominX += vec.X; omaxX += vec.X; diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 4d5eedfc95..ce1e6b8614 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -2088,7 +2088,14 @@ namespace OpenSim.Region.Framework.Scenes axPos *= parentRot; Vector3 translationOffsetPosition = axPos; - return GroupPosition + translationOffsetPosition; + +// m_log.DebugFormat("[SCENE OBJECT PART]: Found group pos {0} for part {1}", GroupPosition, Name); + + Vector3 worldPos = GroupPosition + translationOffsetPosition; + +// m_log.DebugFormat("[SCENE OBJECT PART]: Found world pos {0} for part {1}", worldPos, Name); + + return worldPos; } /// From c5465414b64d835128827976cc3da32aa462e6a3 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 13 Apr 2011 22:55:26 +0100 Subject: [PATCH 100/138] Use common coalesced serialization code for both tests and the InventoryAccessModule. Continue to restore original absolute positions of stored scene objects, though it's possible that these aren't used again --- .../InventoryAccess/InventoryAccessModule.cs | 67 ++++--------------- 1 file changed, 13 insertions(+), 54 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 1f8bad1eb5..c0946f4d52 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -222,7 +222,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess deletes[g.OwnerID].Add(g); } - // This is pethod scoped and will be returned. It will be the + // This is method scoped and will be returned. It will be the // last created asset id UUID assetID = UUID.Zero; @@ -230,8 +230,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess // with distinct destinations as well. foreach (List objlist in deletes.Values) { - Dictionary xmlStrings = - new Dictionary(); + CoalescedSceneObjects coa = new CoalescedSceneObjects(UUID.Zero); + Dictionary originalPositions = new Dictionary(); foreach (SceneObjectGroup objectGroup in objlist) { @@ -245,7 +245,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess : objectGroup.AbsolutePosition.X, objectGroup.AbsolutePosition.Z); - Vector3 originalPosition = objectGroup.AbsolutePosition; + originalPositions[objectGroup.UUID] = objectGroup.AbsolutePosition; objectGroup.AbsolutePosition = inventoryStoredPosition; @@ -259,59 +259,20 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess (uint)PermissionMask.Modify); objectGroup.RootPart.NextOwnerMask |= (uint)PermissionMask.Move; - - string sceneObjectXml = SceneObjectSerializer.ToOriginalXmlFormat(objectGroup); - - objectGroup.AbsolutePosition = originalPosition; - - xmlStrings[objectGroup.UUID] = sceneObjectXml; + + coa.Add(objectGroup); } string itemXml; if (objlist.Count > 1) - { - float minX, minY, minZ; - float maxX, maxY, maxZ; - - Vector3[] offsets = Scene.GetCombinedBoundingBox(objlist, - out minX, out maxX, out minY, out maxY, - out minZ, out maxZ); - - // CreateWrapper - XmlDocument itemDoc = new XmlDocument(); - XmlElement root = itemDoc.CreateElement("", "CoalescedObject", ""); - itemDoc.AppendChild(root); - - // Embed the offsets into the group XML - for ( int i = 0 ; i < objlist.Count ; i++ ) - { - XmlDocument doc = new XmlDocument(); - SceneObjectGroup g = objlist[i]; - doc.LoadXml(xmlStrings[g.UUID]); - XmlElement e = (XmlElement)doc.SelectSingleNode("/SceneObjectGroup"); - e.SetAttribute("offsetx", offsets[i].X.ToString()); - e.SetAttribute("offsety", offsets[i].Y.ToString()); - e.SetAttribute("offsetz", offsets[i].Z.ToString()); - - XmlNode objectNode = itemDoc.ImportNode(e, true); - root.AppendChild(objectNode); - } - - float sizeX = maxX - minX; - float sizeY = maxY - minY; - float sizeZ = maxZ - minZ; - - root.SetAttribute("x", sizeX.ToString()); - root.SetAttribute("y", sizeY.ToString()); - root.SetAttribute("z", sizeZ.ToString()); - - itemXml = itemDoc.InnerXml; - } + itemXml = CoalescedSceneObjectsSerializer.ToXml(coa); else - { - itemXml = xmlStrings[objlist[0].UUID]; - } + itemXml = SceneObjectSerializer.ToOriginalXmlFormat(objlist[0]); + + // Restore the position of each group now that it has been stored to inventory. + foreach (SceneObjectGroup objectGroup in objlist) + objectGroup.AbsolutePosition = originalPositions[objectGroup.UUID]; // Get the user info of the item destination // @@ -332,7 +293,6 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess { // All returns / deletes go to the object owner // - userID = objlist[0].RootPart.OwnerID; } @@ -346,7 +306,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess // Delete is treated like return in this case // Deleting your own items makes them go to trash // - + InventoryFolderBase folder = null; InventoryItemBase item = null; @@ -548,7 +508,6 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess return assetID; } - /// /// Rez an object into the scene from the user's inventory /// From 5b89c66c9704f2bd219a35f8a70ac60e751d7f49 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Mon, 11 Apr 2011 09:06:28 -0700 Subject: [PATCH 101/138] New tokenbucket algorithm. This one provides fair sharing of the queues when client and simulator throttles are set. This algorithm also uses pre-defined burst rate of 150% of the sustained rate for each of the throttles. Removed the "state" queue. The state queue is not a Linden queue and appeared to be used just to get kill packets sent. --- .../ClientStack/LindenUDP/LLClientView.cs | 6 +- .../ClientStack/LindenUDP/LLUDPClient.cs | 96 +++--- .../ClientStack/LindenUDP/LLUDPServer.cs | 2 +- .../ClientStack/LindenUDP/TokenBucket.cs | 314 +++++++++++------- 4 files changed, 266 insertions(+), 152 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 76d7f7964b..5980669651 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -1610,7 +1610,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else { - OutPacket(kill, ThrottleOutPacketType.State); + // OutPacket(kill, ThrottleOutPacketType.State); + OutPacket(kill, ThrottleOutPacketType.Task); } } @@ -2440,7 +2441,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP packet.Effect = effectBlocks; - OutPacket(packet, ThrottleOutPacketType.State); + // OutPacket(packet, ThrottleOutPacketType.State); + OutPacket(packet, ThrottleOutPacketType.Task); } public void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, Byte[] charterMember, diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index 9a8bfd357c..5a69851b3c 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs @@ -135,7 +135,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP private int m_nextOnQueueEmpty = 1; /// Throttle bucket for this agent's connection - private readonly TokenBucket m_throttle; + private readonly TokenBucket m_throttleClient; + /// Throttle bucket for this agent's connection + private readonly TokenBucket m_throttleCategory; /// Throttle buckets for each packet category private readonly TokenBucket[] m_throttleCategories; /// Outgoing queues for throttled packets @@ -174,7 +176,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_maxRTO = maxRTO; // Create a token bucket throttle for this client that has the scene token bucket as a parent - m_throttle = new TokenBucket(parentThrottle, rates.TotalLimit, rates.Total); + m_throttleClient = new TokenBucket(parentThrottle, rates.TotalLimit); + // Create a token bucket throttle for the total categary with the client bucket as a throttle + m_throttleCategory = new TokenBucket(m_throttleClient, rates.TotalLimit); // Create an array of token buckets for this clients different throttle categories m_throttleCategories = new TokenBucket[THROTTLE_CATEGORY_COUNT]; @@ -185,7 +189,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Initialize the packet outboxes, where packets sit while they are waiting for tokens m_packetOutboxes[i] = new OpenSim.Framework.LocklessQueue(); // Initialize the token buckets that control the throttling for each category - m_throttleCategories[i] = new TokenBucket(m_throttle, rates.GetLimit(type), rates.GetRate(type)); + m_throttleCategories[i] = new TokenBucket(m_throttleCategory, rates.GetLimit(type)); } // Default the retransmission timeout to three seconds @@ -206,6 +210,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_packetOutboxes[i].Clear(); m_nextPackets[i] = null; } + + // pull the throttle out of the scene throttle + m_throttleClient.Parent.UnregisterRequest(m_throttleClient); OnPacketStats = null; OnQueueEmpty = null; } @@ -216,6 +223,26 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// Information about the client connection public ClientInfo GetClientInfo() { +/// + TokenBucket tb; + + tb = m_throttleClient.Parent; + m_log.WarnFormat("[TOKENS] {3}: Actual={0},Request={1},TotalRequest={2}",tb.DripRate,tb.RequestedDripRate,tb.TotalDripRequest,"ROOT"); + + tb = m_throttleClient; + m_log.WarnFormat("[TOKENS] {3}: Actual={0},Request={1},TotalRequest={2}",tb.DripRate,tb.RequestedDripRate,tb.TotalDripRequest," CLIENT"); + + tb = m_throttleCategory; + m_log.WarnFormat("[TOKENS] {3}: Actual={0},Request={1},TotalRequest={2}",tb.DripRate,tb.RequestedDripRate,tb.TotalDripRequest," CATEGORY"); + + for (int i = 0; i < THROTTLE_CATEGORY_COUNT; i++) + { + tb = m_throttleCategories[i]; + m_log.WarnFormat("[TOKENS] {4} <{0}:{1}>: Actual={2},Requested={3}",AgentID,i,tb.DripRate,tb.RequestedDripRate," BUCKET"); + } + +/// + // TODO: This data structure is wrong in so many ways. Locking and copying the entire lists // of pending and needed ACKs for every client every time some method wants information about // this connection is a recipe for poor performance @@ -223,13 +250,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP info.pendingAcks = new Dictionary(); info.needAck = new Dictionary(); - info.resendThrottle = m_throttleCategories[(int)ThrottleOutPacketType.Resend].DripRate; - info.landThrottle = m_throttleCategories[(int)ThrottleOutPacketType.Land].DripRate; - info.windThrottle = m_throttleCategories[(int)ThrottleOutPacketType.Wind].DripRate; - info.cloudThrottle = m_throttleCategories[(int)ThrottleOutPacketType.Cloud].DripRate; - info.taskThrottle = m_throttleCategories[(int)ThrottleOutPacketType.State].DripRate + m_throttleCategories[(int)ThrottleOutPacketType.Task].DripRate; - info.assetThrottle = m_throttleCategories[(int)ThrottleOutPacketType.Asset].DripRate; - info.textureThrottle = m_throttleCategories[(int)ThrottleOutPacketType.Texture].DripRate; + info.resendThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Resend].DripRate; + info.landThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Land].DripRate; + info.windThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Wind].DripRate; + info.cloudThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Cloud].DripRate; + // info.taskThrottle = m_throttleCategories[(int)ThrottleOutPacketType.State].DripRate + m_throttleCategories[(int)ThrottleOutPacketType.Task].DripRate; + info.taskThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Task].DripRate; + info.assetThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Asset].DripRate; + info.textureThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Texture].DripRate; info.totalThrottle = info.resendThrottle + info.landThrottle + info.windThrottle + info.cloudThrottle + info.taskThrottle + info.assetThrottle + info.textureThrottle; @@ -317,8 +345,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP int texture = (int)(BitConverter.ToSingle(adjData, pos) * 0.125f); pos += 4; int asset = (int)(BitConverter.ToSingle(adjData, pos) * 0.125f); // State is a subcategory of task that we allocate a percentage to - int state = (int)((float)task * STATE_TASK_PERCENTAGE); - task -= state; + int state = 0; + // int state = (int)((float)task * STATE_TASK_PERCENTAGE); + // task -= state; // Make sure none of the throttles are set below our packet MTU, // otherwise a throttle could become permanently clogged @@ -339,40 +368,32 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Update the token buckets with new throttle values TokenBucket bucket; - bucket = m_throttle; - bucket.MaxBurst = total; + bucket = m_throttleCategory; + bucket.RequestedDripRate = total; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Resend]; - bucket.DripRate = resend; - bucket.MaxBurst = resend; + bucket.RequestedDripRate = resend; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Land]; - bucket.DripRate = land; - bucket.MaxBurst = land; + bucket.RequestedDripRate = land; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Wind]; - bucket.DripRate = wind; - bucket.MaxBurst = wind; + bucket.RequestedDripRate = wind; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Cloud]; - bucket.DripRate = cloud; - bucket.MaxBurst = cloud; + bucket.RequestedDripRate = cloud; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Asset]; - bucket.DripRate = asset; - bucket.MaxBurst = asset; + bucket.RequestedDripRate = asset; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Task]; - bucket.DripRate = task + state; - bucket.MaxBurst = task + state; + bucket.RequestedDripRate = task; bucket = m_throttleCategories[(int)ThrottleOutPacketType.State]; - bucket.DripRate = state; - bucket.MaxBurst = state; + bucket.RequestedDripRate = state; bucket = m_throttleCategories[(int)ThrottleOutPacketType.Texture]; - bucket.DripRate = texture; - bucket.MaxBurst = texture; + bucket.RequestedDripRate = texture; // Reset the packed throttles cached data m_packedThrottles = null; @@ -387,14 +408,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP data = new byte[7 * 4]; int i = 0; - Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Resend].DripRate), 0, data, i, 4); i += 4; - Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Land].DripRate), 0, data, i, 4); i += 4; - Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Wind].DripRate), 0, data, i, 4); i += 4; - Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Cloud].DripRate), 0, data, i, 4); i += 4; - Buffer.BlockCopy(Utils.FloatToBytes((float)(m_throttleCategories[(int)ThrottleOutPacketType.Task].DripRate) + - m_throttleCategories[(int)ThrottleOutPacketType.State].DripRate), 0, data, i, 4); i += 4; - Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Texture].DripRate), 0, data, i, 4); i += 4; - Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Asset].DripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Resend].RequestedDripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Land].RequestedDripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Wind].RequestedDripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Cloud].RequestedDripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Task].RequestedDripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Texture].RequestedDripRate), 0, data, i, 4); i += 4; + Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Asset].RequestedDripRate), 0, data, i, 4); i += 4; m_packedThrottles = data; } diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 583214ca0b..d08b25f79d 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -228,7 +228,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } #endregion BinaryStats - m_throttle = new TokenBucket(null, sceneThrottleBps, sceneThrottleBps); + m_throttle = new TokenBucket(null, sceneThrottleBps); ThrottleRates = new ThrottleRates(configSource); } diff --git a/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs b/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs index 0a8331f32a..e4d59ff829 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs @@ -26,6 +26,10 @@ */ using System; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using log4net; namespace OpenSim.Region.ClientStack.LindenUDP { @@ -35,89 +39,126 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// public class TokenBucket { - /// Parent bucket to this bucket, or null if this is a root - /// bucket - TokenBucket parent; - /// Size of the bucket in bytes. If zero, the bucket has - /// infinite capacity - int maxBurst; - /// Rate that the bucket fills, in bytes per millisecond. If - /// zero, the bucket always remains full - int tokensPerMS; - /// Number of tokens currently in the bucket - int content; - /// Time of the last drip, in system ticks - int lastDrip; + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + private static Int32 m_counter = 0; + + private Int32 m_identifier; + + /// + /// Number of ticks (ms) per quantum, drip rate and max burst + /// are defined over this interval. + /// + private const Int32 m_ticksPerQuantum = 1000; - #region Properties + /// + /// This is the number of quantums worth of packets that can + /// be accommodated during a burst + /// + private const Double m_quantumsPerBurst = 1.5; + + /// + /// + private const Int32 m_minimumDripRate = 1400; + + /// Time of the last drip, in system ticks + private Int32 m_lastDrip; + + /// + /// The number of bytes that can be sent at this moment. This is the + /// current number of tokens in the bucket + /// + private Int64 m_tokenCount; + + /// + /// Map of children buckets and their requested maximum burst rate + /// + private Dictionary m_children = new Dictionary(); + +#region Properties /// /// The parent bucket of this bucket, or null if this bucket has no /// parent. The parent bucket will limit the aggregate bandwidth of all /// of its children buckets /// + private TokenBucket m_parent; public TokenBucket Parent { - get { return parent; } + get { return m_parent; } + set { m_parent = value; } } /// /// Maximum burst rate in bytes per second. This is the maximum number - /// of tokens that can accumulate in the bucket at any one time + /// of tokens that can accumulate in the bucket at any one time. This + /// also sets the total request for leaf nodes /// - public int MaxBurst + private Int64 m_burstRate; + public Int64 RequestedBurstRate { - get { return maxBurst; } - set { maxBurst = (value >= 0 ? value : 0); } + get { return m_burstRate; } + set { m_burstRate = (value < 0 ? 0 : value); } } + public Int64 BurstRate + { + get { + double rate = RequestedBurstRate * BurstRateModifier(); + if (rate < m_minimumDripRate * m_quantumsPerBurst) + rate = m_minimumDripRate * m_quantumsPerBurst; + + return (Int64) rate; + } + } + /// /// The speed limit of this bucket in bytes per second. This is the - /// number of tokens that are added to the bucket per second + /// number of tokens that are added to the bucket per quantum /// /// Tokens are added to the bucket any time /// is called, at the granularity of /// the system tick interval (typically around 15-22ms) - public int DripRate + private Int64 m_dripRate; + public Int64 RequestedDripRate { - get { return tokensPerMS * 1000; } - set - { - if (value == 0) - tokensPerMS = 0; - else - { - int bpms = (int)((float)value / 1000.0f); + get { return (m_dripRate == 0 ? m_totalDripRequest : m_dripRate); } + set { + m_dripRate = (value < 0 ? 0 : value); + m_burstRate = (Int64)((double)m_dripRate * m_quantumsPerBurst); + m_totalDripRequest = m_dripRate; + if (m_parent != null) + m_parent.RegisterRequest(this,m_dripRate); + } + } - if (bpms <= 0) - tokensPerMS = 1; // 1 byte/ms is the minimum granularity - else - tokensPerMS = bpms; - } + public Int64 DripRate + { + get { + if (m_parent == null) + return Math.Min(RequestedDripRate,TotalDripRequest); + + double rate = (double)RequestedDripRate * m_parent.DripRateModifier(); + if (rate < m_minimumDripRate) + rate = m_minimumDripRate; + + return (Int64)rate; } } /// - /// The speed limit of this bucket in bytes per millisecond + /// The current total of the requested maximum burst rates of + /// this bucket's children buckets. /// - public int DripPerMS - { - get { return tokensPerMS; } - } + private Int64 m_totalDripRequest; + public Int64 TotalDripRequest + { + get { return m_totalDripRequest; } + set { m_totalDripRequest = value; } + } + +#endregion Properties - /// - /// The number of bytes that can be sent at this moment. This is the - /// current number of tokens in the bucket - /// If this bucket has a parent bucket that does not have - /// enough tokens for a request, will - /// return false regardless of the content of this bucket - /// - public int Content - { - get { return content; } - } - - #endregion Properties +#region Constructor /// /// Default constructor @@ -128,56 +169,115 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// zero if this bucket has no maximum capacity /// Rate that the bucket fills, in bytes per /// second. If zero, the bucket always remains full - public TokenBucket(TokenBucket parent, int maxBurst, int dripRate) + public TokenBucket(TokenBucket parent, Int64 dripRate) { - this.parent = parent; - MaxBurst = maxBurst; - DripRate = dripRate; - lastDrip = Environment.TickCount & Int32.MaxValue; + m_identifier = m_counter++; + + Parent = parent; + RequestedDripRate = dripRate; + // TotalDripRequest = dripRate; // this will be overwritten when a child node registers + // MaxBurst = (Int64)((double)dripRate * m_quantumsPerBurst); + m_lastDrip = Environment.TickCount & Int32.MaxValue; } +#endregion Constructor + + /// + /// Compute a modifier for the MaxBurst rate. This is 1.0, meaning + /// no modification if the requested bandwidth is less than the + /// max burst bandwidth all the way to the root of the throttle + /// hierarchy. However, if any of the parents is over-booked, then + /// the modifier will be less than 1. + /// + private double DripRateModifier() + { + Int64 driprate = DripRate; + return driprate >= TotalDripRequest ? 1.0 : (double)driprate / (double)TotalDripRequest; + } + + /// + /// + private double BurstRateModifier() + { + // for now... burst rate is always m_quantumsPerBurst (constant) + // larger than drip rate so the ratio of burst requests is the + // same as the drip ratio + return DripRateModifier(); + } + + /// + /// Register drip rate requested by a child of this throttle. Pass the + /// changes up the hierarchy. + /// + public void RegisterRequest(TokenBucket child, Int64 request) + { + m_children[child] = request; + // m_totalDripRequest = m_children.Values.Sum(); + + m_totalDripRequest = 0; + foreach (KeyValuePair cref in m_children) + m_totalDripRequest += cref.Value; + + // Pass the new values up to the parent + if (m_parent != null) + m_parent.RegisterRequest(this,Math.Min(RequestedDripRate, TotalDripRequest)); + } + + /// + /// Remove the rate requested by a child of this throttle. Pass the + /// changes up the hierarchy. + /// + public void UnregisterRequest(TokenBucket child) + { + m_children.Remove(child); + // m_totalDripRequest = m_children.Values.Sum(); + + m_totalDripRequest = 0; + foreach (KeyValuePair cref in m_children) + m_totalDripRequest += cref.Value; + + // Pass the new values up to the parent + if (m_parent != null) + m_parent.RegisterRequest(this,Math.Min(RequestedDripRate, TotalDripRequest)); + } + /// /// Remove a given number of tokens from the bucket /// /// Number of tokens to remove from the bucket /// True if the requested number of tokens were removed from /// the bucket, otherwise false - public bool RemoveTokens(int amount) + public bool RemoveTokens(Int64 amount) { - bool dummy; - return RemoveTokens(amount, out dummy); + // Deposit tokens for this interval + Drip(); + + // If we have enough tokens then remove them and return + if (m_tokenCount - amount >= 0) + { + if (m_parent == null || m_parent.RemoveTokens(amount)) + { + m_tokenCount -= amount; + return true; + } + } + + return false; } /// - /// Remove a given number of tokens from the bucket + /// Deposit tokens into the bucket from a child bucket that did + /// not use all of its available tokens /// - /// Number of tokens to remove from the bucket - /// True if tokens were added to the bucket - /// during this call, otherwise false - /// True if the requested number of tokens were removed from - /// the bucket, otherwise false - public bool RemoveTokens(int amount, out bool dripSucceeded) + private void Deposit(Int64 count) { - if (maxBurst == 0) - { - dripSucceeded = true; - return true; - } + m_tokenCount += count; - dripSucceeded = Drip(); - - if (content - amount >= 0) - { - if (parent != null && !parent.RemoveTokens(amount)) - return false; - - content -= amount; - return true; - } - else - { - return false; - } + // Deposit the overflow in the parent bucket, this is how we share + // unused bandwidth + Int64 burstrate = BurstRate; + if (m_tokenCount > burstrate) + m_tokenCount = burstrate; } /// @@ -186,37 +286,29 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// call to Drip /// /// True if tokens were added to the bucket, otherwise false - public bool Drip() + private void Drip() { - if (tokensPerMS == 0) + // This should never happen... means we are a leaf node and were created + // with no drip rate... + if (DripRate == 0) { - content = maxBurst; - return true; + m_log.WarnFormat("[TOKENBUCKET] something odd is happening and drip rate is 0"); + return; } - else - { - int now = Environment.TickCount & Int32.MaxValue; - int deltaMS = now - lastDrip; + + // Determine the interval over which we are adding tokens, never add + // more than a single quantum of tokens + Int32 now = Environment.TickCount & Int32.MaxValue; + Int32 deltaMS = Math.Min(now - m_lastDrip, m_ticksPerQuantum); - if (deltaMS <= 0) - { - if (deltaMS < 0) - lastDrip = now; - return false; - } + m_lastDrip = now; - int dripAmount = deltaMS * tokensPerMS; + // This can be 0 in the very unusual case that the timer wrapped + // It can be 0 if we try add tokens at a sub-tick rate + if (deltaMS <= 0) + return; - content = Math.Min(content + dripAmount, maxBurst); - lastDrip = now; - - if (dripAmount < 0 || content < 0) - // sim has been idle for too long, integer has overflown - // previous calculation is meaningless, let's put it at correct max - content = maxBurst; - - return true; - } + Deposit(deltaMS * DripRate / m_ticksPerQuantum); } } } From 3fe22126ca3974b2a10365121ee0141fb54806e6 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Tue, 12 Apr 2011 12:36:36 -0700 Subject: [PATCH 102/138] First pass at moving object property requests into a queue similar to the entity update queue. The number of property packets can become significant when selecting/deselecting large numbers of objects. This is experimental code. --- .../Client/MXP/ClientStack/MXPClientView.cs | 4 +- .../VWoHTTP/ClientStack/VWHClientView.cs | 4 +- OpenSim/Framework/IClientAPI.cs | 37 +- .../ClientStack/LindenUDP/LLClientView.cs | 367 +++++++++++------- .../ClientStack/LindenUDP/PriorityQueue.cs | 12 +- .../Examples/SimpleModule/MyNpcCharacter.cs | 12 +- .../Framework/Scenes/SceneObjectGroup.cs | 10 +- .../Framework/Scenes/SceneObjectPart.cs | 10 +- .../Server/IRCClientView.cs | 5 +- .../OptionalModules/World/NPC/NPCAvatar.cs | 12 +- OpenSim/Tests/Common/Mock/TestClient.cs | 11 +- 11 files changed, 269 insertions(+), 215 deletions(-) diff --git a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs index d1a0440524..a604a2ee63 100644 --- a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs +++ b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs @@ -1337,12 +1337,12 @@ namespace OpenSim.Client.MXP.ClientStack // Need to translate to MXP somehow } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, uint Category, UUID LastOwnerID, string ObjectName, string Description) + public void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags) { //throw new System.NotImplementedException(); } - public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) { //throw new System.NotImplementedException(); } diff --git a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs index fc27f0198b..d8cd0acbd9 100644 --- a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs +++ b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs @@ -884,12 +884,12 @@ namespace OpenSim.Client.VWoHTTP.ClientStack throw new System.NotImplementedException(); } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, uint Category, UUID LastOwnerID, string ObjectName, string Description) + public void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags) { throw new System.NotImplementedException(); } - public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) { throw new System.NotImplementedException(); } diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index 5bf0b7b0a9..c56a756314 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs @@ -570,16 +570,30 @@ namespace OpenSim.Framework public float dwell; } - public class EntityUpdate + public class IEntityUpdate { public ISceneEntity Entity; - public PrimUpdateFlags Flags; - public float TimeDilation; + public uint Flags; - public EntityUpdate(ISceneEntity entity, PrimUpdateFlags flags, float timedilation) + public IEntityUpdate(ISceneEntity entity, uint flags) { Entity = entity; Flags = flags; + } + } + + + public class EntityUpdate : IEntityUpdate + { + // public ISceneEntity Entity; + // public PrimUpdateFlags Flags; + public float TimeDilation; + + public EntityUpdate(ISceneEntity entity, PrimUpdateFlags flags, float timedilation) + : base(entity,(uint)flags) + { + //Entity = entity; + // Flags = flags; TimeDilation = timedilation; } } @@ -1211,20 +1225,9 @@ namespace OpenSim.Framework /// void SendSimStats(SimStats stats); - void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, - uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, - uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, - uint Category, - UUID LastOwnerID, string ObjectName, string Description); + void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags); - void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, - UUID FromTaskUUID, - UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, - UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, - string ItemName, - string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, - uint EveryoneMask, - uint BaseMask, byte saleType, int salePrice); + void SendObjectPropertiesReply(ISceneEntity Entity); void SendAgentOffline(UUID[] agentIDs); diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 5980669651..33b99095a2 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -386,6 +386,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP private int m_cachedTextureSerial; private PriorityQueue m_entityUpdates; + private PriorityQueue m_entityProps; private Prioritizer m_prioritizer; private bool m_disableFacelights = false; @@ -433,9 +434,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP protected IAssetService m_assetService; private const bool m_checkPackets = true; - private Timer m_propertiesPacketTimer; - private List m_propertiesBlocks = new List(); - #endregion Class Members #region Properties @@ -511,6 +509,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_scene = scene; m_entityUpdates = new PriorityQueue(m_scene.Entities.Count); + m_entityProps = new PriorityQueue(m_scene.Entities.Count); m_fullUpdateDataBlocksBuilder = new List(); m_killRecord = new HashSet(); // m_attachmentsSent = new HashSet(); @@ -534,9 +533,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_udpClient.OnQueueEmpty += HandleQueueEmpty; m_udpClient.OnPacketStats += PopulateStats; - m_propertiesPacketTimer = new Timer(100); - m_propertiesPacketTimer.Elapsed += ProcessObjectPropertiesPacket; - m_prioritizer = new Prioritizer(m_scene); RegisterLocalPacketHandlers(); @@ -3636,9 +3632,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_entityUpdates.Enqueue(priority, new EntityUpdate(entity, updateFlags, m_scene.TimeDilation)); } - private Int32 m_LastQueueFill = 0; - private uint m_maxUpdates = 0; - private void ProcessEntityUpdates(int maxUpdates) { OpenSim.Framework.Lazy> objectUpdateBlocks = new OpenSim.Framework.Lazy>(); @@ -3646,46 +3639,30 @@ namespace OpenSim.Region.ClientStack.LindenUDP OpenSim.Framework.Lazy> terseUpdateBlocks = new OpenSim.Framework.Lazy>(); OpenSim.Framework.Lazy> terseAgentUpdateBlocks = new OpenSim.Framework.Lazy>(); + // Check to see if this is a flush if (maxUpdates <= 0) { - m_maxUpdates = Int32.MaxValue; + maxUpdates = Int32.MaxValue; } - else - { - if (m_maxUpdates == 0 || m_LastQueueFill == 0) - { - m_maxUpdates = (uint)maxUpdates; - } - else - { - if (Util.EnvironmentTickCountSubtract(m_LastQueueFill) < 200) - m_maxUpdates += 5; - else - m_maxUpdates = m_maxUpdates >> 1; - } - m_maxUpdates = Util.Clamp(m_maxUpdates,10,500); - } - m_LastQueueFill = Util.EnvironmentTickCount(); - + int updatesThisCall = 0; -// -// DEBUGGING CODE... REMOVE -// LogQueueProcessEvent(this.m_agentId,m_entityUpdates,m_maxUpdates); -// // We must lock for both manipulating the kill record and sending the packet, in order to avoid a race // condition where a kill can be processed before an out-of-date update for the same object. lock (m_killRecord) { float avgTimeDilation = 1.0f; - EntityUpdate update; + IEntityUpdate iupdate; Int32 timeinqueue; // this is just debugging code & can be dropped later - while (updatesThisCall < m_maxUpdates) + while (updatesThisCall < maxUpdates) { lock (m_entityUpdates.SyncRoot) - if (!m_entityUpdates.TryDequeue(out update, out timeinqueue)) + if (!m_entityUpdates.TryDequeue(out iupdate, out timeinqueue)) break; + + EntityUpdate update = (EntityUpdate)iupdate; + avgTimeDilation += update.TimeDilation; avgTimeDilation *= 0.5f; @@ -3725,7 +3702,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP #region UpdateFlags to packet type conversion - PrimUpdateFlags updateFlags = update.Flags; + PrimUpdateFlags updateFlags = (PrimUpdateFlags)update.Flags; bool canUseCompressed = true; bool canUseImproved = true; @@ -3804,6 +3781,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP #endregion Block Construction } + #region Packet Sending @@ -3904,12 +3882,36 @@ namespace OpenSim.Region.ClientStack.LindenUDP #endregion Primitive Packet/Data Sending Methods + // These are used to implement an adaptive backoff in the number + // of updates converted to packets. Since we don't want packets + // to sit in the queue with old data, only convert enough updates + // to packets that can be sent in 200ms. + private Int32 m_LastQueueFill = 0; + private Int32 m_maxUpdates = 0; + void HandleQueueEmpty(ThrottleOutPacketTypeFlags categories) { if ((categories & ThrottleOutPacketTypeFlags.Task) != 0) { + if (m_maxUpdates == 0 || m_LastQueueFill == 0) + { + m_maxUpdates = m_udpServer.PrimUpdatesPerCallback; + } + else + { + if (Util.EnvironmentTickCountSubtract(m_LastQueueFill) < 200) + m_maxUpdates += 5; + else + m_maxUpdates = m_maxUpdates >> 1; + } + m_maxUpdates = Util.Clamp(m_maxUpdates,10,500); + m_LastQueueFill = Util.EnvironmentTickCount(); + if (m_entityUpdates.Count > 0) - ProcessEntityUpdates(m_udpServer.PrimUpdatesPerCallback); + ProcessEntityUpdates(m_maxUpdates); + + if (m_entityProps.Count > 0) + ProcessEntityPropertyRequests(m_maxUpdates); } if ((categories & ThrottleOutPacketTypeFlags.Texture) != 0) @@ -4023,47 +4025,147 @@ namespace OpenSim.Region.ClientStack.LindenUDP OutPacket(pack, ThrottleOutPacketType.Task); } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, - uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, - uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, uint Category, - UUID LastOwnerID, string ObjectName, string Description) +/// ----------------------------------------------------------------- +/// +/// ----------------------------------------------------------------- + + private class ObjectPropertyUpdate : IEntityUpdate { - ObjectPropertiesFamilyPacket objPropFamilyPack = (ObjectPropertiesFamilyPacket)PacketPool.Instance.GetPacket(PacketType.ObjectPropertiesFamily); - // TODO: don't create new blocks if recycling an old packet - - ObjectPropertiesFamilyPacket.ObjectDataBlock objPropDB = new ObjectPropertiesFamilyPacket.ObjectDataBlock(); - objPropDB.RequestFlags = RequestFlags; - objPropDB.ObjectID = ObjectUUID; - if (OwnerID == GroupID) - objPropDB.OwnerID = UUID.Zero; - else - objPropDB.OwnerID = OwnerID; - objPropDB.GroupID = GroupID; - objPropDB.BaseMask = BaseMask; - objPropDB.OwnerMask = OwnerMask; - objPropDB.GroupMask = GroupMask; - objPropDB.EveryoneMask = EveryoneMask; - objPropDB.NextOwnerMask = NextOwnerMask; - - // TODO: More properties are needed in SceneObjectPart! - objPropDB.OwnershipCost = OwnershipCost; - objPropDB.SaleType = SaleType; - objPropDB.SalePrice = SalePrice; - objPropDB.Category = Category; - objPropDB.LastOwnerID = LastOwnerID; - objPropDB.Name = Util.StringToBytes256(ObjectName); - objPropDB.Description = Util.StringToBytes256(Description); - objPropFamilyPack.ObjectData = objPropDB; - objPropFamilyPack.Header.Zerocoded = true; - OutPacket(objPropFamilyPack, ThrottleOutPacketType.Task); + internal bool SendFamilyProps; + + public ObjectPropertyUpdate(ISceneEntity entity, uint flags, bool sendfam) + : base(entity,flags) + { + SendFamilyProps = sendfam; + } + } + + public void SendObjectPropertiesFamilyData(ISceneEntity entity, uint requestFlags) + { + uint priority = m_prioritizer.GetUpdatePriority(this, entity); + lock (m_entityProps.SyncRoot) + m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,requestFlags,true)); } - public void SendObjectPropertiesReply( - UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, - UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, - UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, - string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, - uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) + { + uint priority = m_prioritizer.GetUpdatePriority(this, entity); + lock (m_entityProps.SyncRoot) + m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,0,false)); + } + + private void ProcessEntityPropertyRequests(int maxUpdates) + { + OpenSim.Framework.Lazy> objectFamilyBlocks = + new OpenSim.Framework.Lazy>(); + + OpenSim.Framework.Lazy> objectPropertiesBlocks = + new OpenSim.Framework.Lazy>(); + + IEntityUpdate iupdate; + Int32 timeinqueue; // this is just debugging code & can be dropped later + + int updatesThisCall = 0; + while (updatesThisCall < m_maxUpdates) + { + lock (m_entityProps.SyncRoot) + if (!m_entityProps.TryDequeue(out iupdate, out timeinqueue)) + break; + + ObjectPropertyUpdate update = (ObjectPropertyUpdate)iupdate; + if (update.SendFamilyProps) + { + if (update.Entity is SceneObjectPart) + { + SceneObjectPart sop = (SceneObjectPart)update.Entity; + ObjectPropertiesFamilyPacket.ObjectDataBlock objPropDB = CreateObjectPropertiesFamilyBlock(sop,update.Flags); + objectFamilyBlocks.Value.Add(objPropDB); + } + } + else + { + if (update.Entity is SceneObjectPart) + { + SceneObjectPart sop = (SceneObjectPart)update.Entity; + ObjectPropertiesPacket.ObjectDataBlock objPropDB = CreateObjectPropertiesBlock(sop); + objectPropertiesBlocks.Value.Add(objPropDB); + } + } + } + + + if (objectPropertiesBlocks.IsValueCreated) + { + List blocks = objectPropertiesBlocks.Value; + + ObjectPropertiesPacket packet = (ObjectPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.ObjectProperties); + packet.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[blocks.Count]; + for (int i = 0; i < blocks.Count; i++) + packet.ObjectData[i] = blocks[i]; + + packet.Header.Zerocoded = true; + OutPacket(packet, ThrottleOutPacketType.Task, true); + } + + + if (objectFamilyBlocks.IsValueCreated) + { + List blocks = objectFamilyBlocks.Value; + + // ObjectPropertiesFamilyPacket objPropFamilyPack = + // (ObjectPropertiesFamilyPacket)PacketPool.Instance.GetPacket(PacketType.ObjectPropertiesFamily); + // + // objPropFamilyPack.ObjectData = new ObjectPropertiesFamilyPacket.ObjectDataBlock[blocks.Count]; + // for (int i = 0; i < blocks.Count; i++) + // objPropFamilyPack.ObjectData[i] = blocks[i]; + // + // OutPacket(objPropFamilyPack, ThrottleOutPacketType.Task, true); + + // one packet per object block... uggh... + for (int i = 0; i < blocks.Count; i++) + { + ObjectPropertiesFamilyPacket packet = + (ObjectPropertiesFamilyPacket)PacketPool.Instance.GetPacket(PacketType.ObjectPropertiesFamily); + + packet.ObjectData = blocks[i]; + packet.Header.Zerocoded = true; + OutPacket(packet, ThrottleOutPacketType.Task); + } + + } + + } + + private ObjectPropertiesFamilyPacket.ObjectDataBlock CreateObjectPropertiesFamilyBlock(SceneObjectPart sop, uint requestFlags) + { + ObjectPropertiesFamilyPacket.ObjectDataBlock block = new ObjectPropertiesFamilyPacket.ObjectDataBlock(); + + block.RequestFlags = requestFlags; + block.ObjectID = sop.UUID; + if (sop.OwnerID == sop.GroupID) + block.OwnerID = UUID.Zero; + else + block.OwnerID = sop.OwnerID; + block.GroupID = sop.GroupID; + block.BaseMask = sop.BaseMask; + block.OwnerMask = sop.OwnerMask; + block.GroupMask = sop.GroupMask; + block.EveryoneMask = sop.EveryoneMask; + block.NextOwnerMask = sop.NextOwnerMask; + + // TODO: More properties are needed in SceneObjectPart! + block.OwnershipCost = sop.OwnershipCost; + block.SaleType = sop.ObjectSaleType; + block.SalePrice = sop.SalePrice; + block.Category = sop.Category; + block.LastOwnerID = sop.CreatorID; // copied from old SOG call... is this right? + block.Name = Util.StringToBytes256(sop.Name); + block.Description = Util.StringToBytes256(sop.Description); + + return block; + } + + private ObjectPropertiesPacket.ObjectDataBlock CreateObjectPropertiesBlock(SceneObjectPart sop) { //ObjectPropertiesPacket proper = (ObjectPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.ObjectProperties); // TODO: don't create new blocks if recycling an old packet @@ -4071,85 +4173,43 @@ namespace OpenSim.Region.ClientStack.LindenUDP ObjectPropertiesPacket.ObjectDataBlock block = new ObjectPropertiesPacket.ObjectDataBlock(); - block.ItemID = ItemID; - block.CreationDate = CreationDate; - block.CreatorID = CreatorUUID; - block.FolderID = FolderUUID; - block.FromTaskID = FromTaskUUID; - block.GroupID = GroupUUID; - block.InventorySerial = InventorySerial; + block.ObjectID = sop.UUID; + block.Name = Util.StringToBytes256(sop.Name); + block.Description = Util.StringToBytes256(sop.Description); - block.LastOwnerID = LastOwnerUUID; - // proper.ObjectData[0].LastOwnerID = UUID.Zero; - - block.ObjectID = ObjectUUID; - if (OwnerUUID == GroupUUID) + block.CreationDate = (ulong)sop.CreationDate * 1000000; // viewer wants date in microseconds + block.CreatorID = sop.CreatorID; + block.GroupID = sop.GroupID; + block.LastOwnerID = sop.LastOwnerID; + if (sop.OwnerID == sop.GroupID) block.OwnerID = UUID.Zero; else - block.OwnerID = OwnerUUID; - block.TouchName = Util.StringToBytes256(TouchTitle); - block.TextureID = TextureID; - block.SitName = Util.StringToBytes256(SitTitle); - block.Name = Util.StringToBytes256(ItemName); - block.Description = Util.StringToBytes256(ItemDescription); - block.OwnerMask = OwnerMask; - block.NextOwnerMask = NextOwnerMask; - block.GroupMask = GroupMask; - block.EveryoneMask = EveryoneMask; - block.BaseMask = BaseMask; - // proper.ObjectData[0].AggregatePerms = 53; - // proper.ObjectData[0].AggregatePermTextures = 0; - // proper.ObjectData[0].AggregatePermTexturesOwner = 0; - block.SaleType = saleType; - block.SalePrice = salePrice; + block.OwnerID = sop.OwnerID; - lock (m_propertiesPacketTimer) - { - m_propertiesBlocks.Add(block); + block.ItemID = sop.FromUserInventoryItemID; + block.FolderID = UUID.Zero; // sop.FromFolderID ?? + block.FromTaskID = UUID.Zero; // ??? + block.InventorySerial = (short)sop.InventorySerial; + + SceneObjectPart root = sop.ParentGroup.RootPart; - int length = 0; - foreach (ObjectPropertiesPacket.ObjectDataBlock b in m_propertiesBlocks) - { - length += b.Length; - } - if (length > 1100) // FIXME: use real MTU - { - ProcessObjectPropertiesPacket(null, null); - m_propertiesPacketTimer.Stop(); - return; - } + block.TouchName = Util.StringToBytes256(root.TouchName); + block.TextureID = new byte[0]; // TextureID ??? + block.SitName = Util.StringToBytes256(root.SitName); + block.OwnerMask = root.OwnerMask; + block.NextOwnerMask = root.NextOwnerMask; + block.GroupMask = root.GroupMask; + block.EveryoneMask = root.EveryoneMask; + block.BaseMask = root.BaseMask; + block.SaleType = root.ObjectSaleType; + block.SalePrice = root.SalePrice; - m_propertiesPacketTimer.Stop(); - m_propertiesPacketTimer.Start(); - } - - //proper.Header.Zerocoded = true; - //OutPacket(proper, ThrottleOutPacketType.Task); + return block; } - private void ProcessObjectPropertiesPacket(Object sender, ElapsedEventArgs e) - { - ObjectPropertiesPacket proper = (ObjectPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.ObjectProperties); - - lock (m_propertiesPacketTimer) - { - m_propertiesPacketTimer.Stop(); - - proper.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[m_propertiesBlocks.Count]; - - int index = 0; - - foreach (ObjectPropertiesPacket.ObjectDataBlock b in m_propertiesBlocks) - { - proper.ObjectData[index++] = b; - } - - m_propertiesBlocks.Clear(); - } - - proper.Header.Zerocoded = true; - OutPacket(proper, ThrottleOutPacketType.Task); - } +/// ----------------------------------------------------------------- +/// +/// ----------------------------------------------------------------- #region Estate Data Sending Methods @@ -4489,6 +4549,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP public void SendForceClientSelectObjects(List ObjectIDs) { + m_log.WarnFormat("[LLCLIENTVIEW] sending select with {0} objects", ObjectIDs.Count); + bool firstCall = true; const int MAX_OBJECTS_PER_PACKET = 251; ForceObjectSelectPacket pack = (ForceObjectSelectPacket)PacketPool.Instance.GetPacket(PacketType.ForceObjectSelect); @@ -11381,6 +11443,21 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_log.DebugFormat("[CLIENT]: Packet OUT {0}", packet.Type); } + if (throttlePacketType == ThrottleOutPacketType.Task) + { + System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace(); // get call stack + System.Diagnostics.StackFrame[] stackFrames = stackTrace.GetFrames(); // get method calls (frames) + + string stack = ""; + for (int count = 1; count < stackFrames.Length; count++) + { + stack += (stack == "" ? "" : ",") + stackFrames[count].GetMethod().Name; + if (count > 5) break; + } + + // m_log.WarnFormat("[BADGUY] {0}", stack); + } + m_udpServer.SendPacket(m_udpClient, packet, throttlePacketType, doAutomaticSplitting); } diff --git a/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs b/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs index 364ce4ba9e..6521a00745 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs @@ -78,7 +78,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } } - public bool Enqueue(uint pqueue, EntityUpdate value) + public bool Enqueue(uint pqueue, IEntityUpdate value) { LookupItem lookup; @@ -99,7 +99,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP return true; } - internal bool TryDequeue(out EntityUpdate value, out Int32 timeinqueue) + internal bool TryDequeue(out IEntityUpdate value, out Int32 timeinqueue) { for (int i = 0; i < m_numberOfQueues; ++i) { @@ -122,7 +122,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } timeinqueue = 0; - value = default(EntityUpdate); + value = default(IEntityUpdate); return false; } @@ -175,8 +175,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP #region MinHeapItem private struct MinHeapItem : IComparable { - private EntityUpdate value; - internal EntityUpdate Value { + private IEntityUpdate value; + internal IEntityUpdate Value { get { return this.value; } @@ -212,7 +212,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP this.pqueue = pqueue; } - internal MinHeapItem(uint pqueue, UInt64 entryorder, EntityUpdate value) + internal MinHeapItem(uint pqueue, UInt64 entryorder, IEntityUpdate value) { this.entrytime = Util.EnvironmentTickCount(); this.entryorder = entryorder; diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs index d939329814..89e9e204bb 100644 --- a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs +++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs @@ -702,18 +702,12 @@ namespace OpenSim.Region.Examples.SimpleModule { } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, - uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, - uint NextOwnerMask, int OwnershipCost, byte SaleType,int SalePrice, uint Category, - UUID LastOwnerID, string ObjectName, string Description) + public void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags) { + } - public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, - UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, - UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, - string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, - uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) { } diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index ca7d9d9d57..30563d4232 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -1765,10 +1765,12 @@ namespace OpenSim.Region.Framework.Scenes /// public void ServiceObjectPropertiesFamilyRequest(IClientAPI remoteClient, UUID AgentID, uint RequestFlags) { - remoteClient.SendObjectPropertiesFamilyData(RequestFlags, RootPart.UUID, RootPart.OwnerID, RootPart.GroupID, RootPart.BaseMask, - RootPart.OwnerMask, RootPart.GroupMask, RootPart.EveryoneMask, RootPart.NextOwnerMask, - RootPart.OwnershipCost, RootPart.ObjectSaleType, RootPart.SalePrice, RootPart.Category, - RootPart.CreatorID, RootPart.Name, RootPart.Description); + remoteClient.SendObjectPropertiesFamilyData(RootPart, RequestFlags); + +// remoteClient.SendObjectPropertiesFamilyData(RequestFlags, RootPart.UUID, RootPart.OwnerID, RootPart.GroupID, RootPart.BaseMask, +// RootPart.OwnerMask, RootPart.GroupMask, RootPart.EveryoneMask, RootPart.NextOwnerMask, +// RootPart.OwnershipCost, RootPart.ObjectSaleType, RootPart.SalePrice, RootPart.Category, +// RootPart.CreatorID, RootPart.Name, RootPart.Description); } public void SetPartOwner(SceneObjectPart part, UUID cAgentID, UUID cGroupID) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index ce1e6b8614..8a8a6993cc 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -2055,15 +2055,7 @@ namespace OpenSim.Region.Framework.Scenes public void GetProperties(IClientAPI client) { - //Viewer wants date in microseconds so multiply it by 1,000,000. - client.SendObjectPropertiesReply( - m_fromUserInventoryItemID, (ulong)_creationDate*(ulong)1e6, _creatorID, UUID.Zero, UUID.Zero, - _groupID, (short)InventorySerial, _lastOwnerID, UUID, _ownerID, - ParentGroup.RootPart.TouchName, new byte[0], ParentGroup.RootPart.SitName, Name, Description, - ParentGroup.RootPart._ownerMask, ParentGroup.RootPart._nextOwnerMask, ParentGroup.RootPart._groupMask, ParentGroup.RootPart._everyoneMask, - ParentGroup.RootPart._baseMask, - ParentGroup.RootPart.ObjectSaleType, - ParentGroup.RootPart.SalePrice); + client.SendObjectPropertiesReply(this); } public UUID GetRootPartUUID() diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs index 821cd4bd33..4b6e52e757 100644 --- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs +++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs @@ -1332,14 +1332,13 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, uint Category, UUID LastOwnerID, string ObjectName, string Description) + public void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags) { } - public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) { - } public void SendAgentOffline(UUID[] agentIDs) diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs index 96760a2721..2504e3019c 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs @@ -786,18 +786,12 @@ namespace OpenSim.Region.OptionalModules.World.NPC { } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, - uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, - uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, uint Category, - UUID LastOwnerID, string ObjectName, string Description) + public void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags) { + } - public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, - UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, - UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, - string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, - uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) { } diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs index d1dc17fc9b..dca562674b 100644 --- a/OpenSim/Tests/Common/Mock/TestClient.cs +++ b/OpenSim/Tests/Common/Mock/TestClient.cs @@ -816,18 +816,11 @@ namespace OpenSim.Tests.Common.Mock { } - public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, - uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, - uint NextOwnerMask, int OwnershipCost, byte SaleType,int SalePrice, uint Category, - UUID LastOwnerID, string ObjectName, string Description) + public void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags) { } - public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, - UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, - UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, - string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, - uint BaseMask, byte saleType, int salePrice) + public void SendObjectPropertiesReply(ISceneEntity entity) { } From 5e7aba4f88a90e266e01b5509c4ba04730815475 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Tue, 12 Apr 2011 14:40:57 -0700 Subject: [PATCH 103/138] fixed a couple bugs with the property queues --- .../ClientStack/LindenUDP/LLClientView.cs | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 33b99095a2..f926c3532f 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -4091,9 +4091,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP objectPropertiesBlocks.Value.Add(objPropDB); } } + + updatesThisCall++; } + Int32 ppcnt = 0; + Int32 pbcnt = 0; + if (objectPropertiesBlocks.IsValueCreated) { List blocks = objectPropertiesBlocks.Value; @@ -4105,9 +4110,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP packet.Header.Zerocoded = true; OutPacket(packet, ThrottleOutPacketType.Task, true); + + pbcnt += blocks.Count; + ppcnt++; } + Int32 fpcnt = 0; + Int32 fbcnt = 0; + if (objectFamilyBlocks.IsValueCreated) { List blocks = objectFamilyBlocks.Value; @@ -4130,10 +4141,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP packet.ObjectData = blocks[i]; packet.Header.Zerocoded = true; OutPacket(packet, ThrottleOutPacketType.Task); + + fpcnt++; + fbcnt++; } } + m_log.WarnFormat("[PACKETCOUNTS] queued {0} property packets with {1} blocks",ppcnt,pbcnt); + m_log.WarnFormat("[PACKETCOUNTS] queued {0} family property packets with {1} blocks",fpcnt,fbcnt); } private ObjectPropertiesFamilyPacket.ObjectDataBlock CreateObjectPropertiesFamilyBlock(SceneObjectPart sop, uint requestFlags) @@ -11408,6 +11424,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP OutPacket(packet, throttlePacketType, true); } +/// + Dictionary pktsrc = new Dictionary(); + uint pktcnt = 0; +/// + /// /// This is the starting point for sending a simulator packet out to the client /// @@ -11455,7 +11476,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP if (count > 5) break; } - // m_log.WarnFormat("[BADGUY] {0}", stack); + lock(pktsrc) + { + if (! pktsrc.ContainsKey(stack)) + pktsrc.Add(stack,0); + pktsrc[stack]++; + + if (++pktcnt > 500) + { + pktcnt = 0; + m_log.WarnFormat("[PACKETCOUNTS] START"); + foreach (KeyValuePair pkt in pktsrc) + m_log.WarnFormat("[PACKETCOUNTS] {0,8}, {1}", pkt.Value, pkt.Key); + pktsrc.Clear(); + m_log.WarnFormat("[PACKETCOUNTS] END"); + } + } } m_udpServer.SendPacket(m_udpClient, packet, throttlePacketType, doAutomaticSplitting); From b33aac737a3e7ae28216cb98de99d9c6eba1d563 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Tue, 12 Apr 2011 15:40:57 -0700 Subject: [PATCH 104/138] Fixed the update of items in the priority queue to enable both types of property updates to be specified. Not sure if one form of property update should supercede another. But for now the old OpenSim behavior is preserved by sending both. --- OpenSim/Framework/IClientAPI.cs | 5 +++++ .../ClientStack/LindenUDP/LLClientView.cs | 21 +++++++++++++------ .../ClientStack/LindenUDP/PriorityQueue.cs | 2 +- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index c56a756314..f573c32d07 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs @@ -575,6 +575,11 @@ namespace OpenSim.Framework public ISceneEntity Entity; public uint Flags; + public virtual void Update(IEntityUpdate update) + { + this.Flags |= update.Flags; + } + public IEntityUpdate(ISceneEntity entity, uint flags) { Entity = entity; diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index f926c3532f..a6f2d09bb1 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -4032,26 +4032,34 @@ namespace OpenSim.Region.ClientStack.LindenUDP private class ObjectPropertyUpdate : IEntityUpdate { internal bool SendFamilyProps; + internal bool SendObjectProps; - public ObjectPropertyUpdate(ISceneEntity entity, uint flags, bool sendfam) + public ObjectPropertyUpdate(ISceneEntity entity, uint flags, bool sendfam, bool sendobj) : base(entity,flags) { SendFamilyProps = sendfam; + SendObjectProps = sendobj; + } + public void Update(ObjectPropertyUpdate update) + { + SendFamilyProps = SendFamilyProps || update.SendFamilyProps; + SendObjectProps = SendObjectProps || update.SendObjectProps; + Flags |= update.Flags; } } public void SendObjectPropertiesFamilyData(ISceneEntity entity, uint requestFlags) { - uint priority = m_prioritizer.GetUpdatePriority(this, entity); + uint priority = 0; // time based ordering only lock (m_entityProps.SyncRoot) - m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,requestFlags,true)); + m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,requestFlags,true,false)); } public void SendObjectPropertiesReply(ISceneEntity entity) { - uint priority = m_prioritizer.GetUpdatePriority(this, entity); + uint priority = 0; // time based ordering only lock (m_entityProps.SyncRoot) - m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,0,false)); + m_entityProps.Enqueue(priority, new ObjectPropertyUpdate(entity,0,false,true)); } private void ProcessEntityPropertyRequests(int maxUpdates) @@ -4082,7 +4090,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP objectFamilyBlocks.Value.Add(objPropDB); } } - else + + if (update.SendObjectProps) { if (update.Entity is SceneObjectPart) { diff --git a/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs b/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs index 6521a00745..b62ec07ed9 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/PriorityQueue.cs @@ -87,7 +87,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP if (m_lookupTable.TryGetValue(localid, out lookup)) { entry = lookup.Heap[lookup.Handle].EntryOrder; - value.Flags |= lookup.Heap[lookup.Handle].Value.Flags; + value.Update(lookup.Heap[lookup.Handle].Value); lookup.Heap.Remove(lookup.Handle); } From bf91d1b07784f3c03744efd2d6dea1b621620cce Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Tue, 12 Apr 2011 15:55:21 -0700 Subject: [PATCH 105/138] remove packet monitoring debugging code --- .../ClientStack/LindenUDP/LLClientView.cs | 118 +----------------- 1 file changed, 2 insertions(+), 116 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index a6f2d09bb1..613a921b4d 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -300,77 +300,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// Used to adjust Sun Orbit values so Linden based viewers properly position sun private const float m_sunPainDaHalfOrbitalCutoff = 4.712388980384689858f; - // First log file or time has expired, start writing to a new log file -// -// ----------------------------------------------------------------- -// ----------------------------------------------------------------- -// THIS IS DEBUGGING CODE & SHOULD BE REMOVED -// ----------------------------------------------------------------- -// ----------------------------------------------------------------- - public class QueueLogger - { - public Int32 start = 0; - public StreamWriter Log = null; - private Dictionary m_idMap = new Dictionary(); - - public QueueLogger() - { - DateTime now = DateTime.Now; - String fname = String.Format("queue-{0}.log", now.ToString("yyyyMMddHHmmss")); - Log = new StreamWriter(fname); - - start = Util.EnvironmentTickCount(); - } - - public int LookupID(UUID uuid) - { - int localid; - if (! m_idMap.TryGetValue(uuid,out localid)) - { - localid = m_idMap.Count + 1; - m_idMap[uuid] = localid; - } - - return localid; - } - } - - public static QueueLogger QueueLog = null; - - // ----------------------------------------------------------------- - public void LogAvatarUpdateEvent(UUID client, UUID avatar, Int32 timeinqueue) - { - if (QueueLog == null) - QueueLog = new QueueLogger(); - - Int32 ticks = Util.EnvironmentTickCountSubtract(QueueLog.start); - lock(QueueLog) - { - int cid = QueueLog.LookupID(client); - int aid = QueueLog.LookupID(avatar); - QueueLog.Log.WriteLine("{0},AU,AV{1:D4},AV{2:D4},{3}",ticks,cid,aid,timeinqueue); - } - } - - // ----------------------------------------------------------------- - public void LogQueueProcessEvent(UUID client, PriorityQueue queue, uint maxup) - { - if (QueueLog == null) - QueueLog = new QueueLogger(); - - Int32 ticks = Util.EnvironmentTickCountSubtract(QueueLog.start); - lock(QueueLog) - { - int cid = QueueLog.LookupID(client); - QueueLog.Log.WriteLine("{0},PQ,AV{1:D4},{2},{3}",ticks,cid,maxup,queue.ToString()); - } - } -// ----------------------------------------------------------------- -// ----------------------------------------------------------------- -// ----------------------------------------------------------------- -// ----------------------------------------------------------------- -// - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); protected static Dictionary PacketHandlers = new Dictionary(); //Global/static handlers for all clients @@ -4025,10 +3954,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP OutPacket(pack, ThrottleOutPacketType.Task); } -/// ----------------------------------------------------------------- -/// -/// ----------------------------------------------------------------- - private class ObjectPropertyUpdate : IEntityUpdate { internal bool SendFamilyProps; @@ -4157,8 +4082,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP } - m_log.WarnFormat("[PACKETCOUNTS] queued {0} property packets with {1} blocks",ppcnt,pbcnt); - m_log.WarnFormat("[PACKETCOUNTS] queued {0} family property packets with {1} blocks",fpcnt,fbcnt); + // m_log.WarnFormat("[PACKETCOUNTS] queued {0} property packets with {1} blocks",ppcnt,pbcnt); + // m_log.WarnFormat("[PACKETCOUNTS] queued {0} family property packets with {1} blocks",fpcnt,fbcnt); } private ObjectPropertiesFamilyPacket.ObjectDataBlock CreateObjectPropertiesFamilyBlock(SceneObjectPart sop, uint requestFlags) @@ -4232,10 +4157,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP return block; } -/// ----------------------------------------------------------------- -/// -/// ----------------------------------------------------------------- - #region Estate Data Sending Methods private static bool convertParamStringToBool(byte[] field) @@ -11433,11 +11354,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP OutPacket(packet, throttlePacketType, true); } -/// - Dictionary pktsrc = new Dictionary(); - uint pktcnt = 0; -/// - /// /// This is the starting point for sending a simulator packet out to the client /// @@ -11472,36 +11388,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP if (logPacket) m_log.DebugFormat("[CLIENT]: Packet OUT {0}", packet.Type); } - - if (throttlePacketType == ThrottleOutPacketType.Task) - { - System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace(); // get call stack - System.Diagnostics.StackFrame[] stackFrames = stackTrace.GetFrames(); // get method calls (frames) - - string stack = ""; - for (int count = 1; count < stackFrames.Length; count++) - { - stack += (stack == "" ? "" : ",") + stackFrames[count].GetMethod().Name; - if (count > 5) break; - } - - lock(pktsrc) - { - if (! pktsrc.ContainsKey(stack)) - pktsrc.Add(stack,0); - pktsrc[stack]++; - - if (++pktcnt > 500) - { - pktcnt = 0; - m_log.WarnFormat("[PACKETCOUNTS] START"); - foreach (KeyValuePair pkt in pktsrc) - m_log.WarnFormat("[PACKETCOUNTS] {0,8}, {1}", pkt.Value, pkt.Key); - pktsrc.Clear(); - m_log.WarnFormat("[PACKETCOUNTS] END"); - } - } - } m_udpServer.SendPacket(m_udpClient, packet, throttlePacketType, doAutomaticSplitting); } From 6ed6b46aad85b66dd3c50fcf17d108a8da42c5ff Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Wed, 13 Apr 2011 21:01:51 -0700 Subject: [PATCH 106/138] Comment out the warning if the prioritizer runs without a fully initialized scene presence. Not sure why we are dumping updates to a client that isn't there yet... --- OpenSim/Region/Framework/Scenes/Prioritizer.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/Prioritizer.cs b/OpenSim/Region/Framework/Scenes/Prioritizer.cs index 4694e2b684..e3ed905c2f 100644 --- a/OpenSim/Region/Framework/Scenes/Prioritizer.cs +++ b/OpenSim/Region/Framework/Scenes/Prioritizer.cs @@ -166,7 +166,11 @@ namespace OpenSim.Region.Framework.Scenes ScenePresence presence = m_scene.GetScenePresence(client.AgentId); if (presence == null) { - m_log.WarnFormat("[PRIORITIZER] attempt to use agent {0} not in the scene",client.AgentId); + // this shouldn't happen, it basically means that we are prioritizing + // updates to send to a client that doesn't have a presence in the scene + // seems like there's race condition here... + + // m_log.WarnFormat("[PRIORITIZER] attempt to use agent {0} not in the scene",client.AgentId); // throw new InvalidOperationException("Prioritization agent not defined"); return Int32.MaxValue; } From aaf912586948a3d0d9bb918952766ba48e90fd18 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 14 Apr 2011 17:33:55 +0100 Subject: [PATCH 107/138] simplify coalesced object tests by using existing scene object set up utils this change makes it possible to set an absolute position on a group before it is put into a scene. --- .../Tests/InventoryAccessModuleTests.cs | 40 +++---------------- .../Framework/Scenes/SceneObjectGroup.cs | 21 ++++++---- 2 files changed, 20 insertions(+), 41 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs index c76a30af69..9fc77a74a6 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs @@ -87,41 +87,13 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess.Tests // log4net.Config.XmlConfigurator.Configure(); // Create asset - SceneObjectGroup object1; - { - string partName = "Object1"; - UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); - PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); - Vector3 groupPosition = new Vector3(10, 20, 30); - Quaternion rotationOffset = Quaternion.Identity; - Vector3 offsetPosition = new Vector3(5, 10, 15); - - SceneObjectPart part1 - = new SceneObjectPart( - ownerId, shape, groupPosition, rotationOffset, offsetPosition); - part1.Scale = new Vector3(1, 1, 1); - part1.Name = partName; - - object1 = new SceneObjectGroup(part1); - } + SceneObjectGroup object1 = SceneSetupHelpers.CreateSceneObject(1, m_userId, "Object1", 0x20); + object1.AbsolutePosition = new Vector3(15, 30, 45); + object1.Parts[0].Scale = new Vector3(1, 1, 1); - SceneObjectGroup object2; - { - string partName = "Object2"; - UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); - PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); - Vector3 groupPosition = new Vector3(20, 40, 60); - Quaternion rotationOffset = Quaternion.Identity; - Vector3 offsetPosition = new Vector3(5, 10, 15); - - SceneObjectPart part1 - = new SceneObjectPart( - ownerId, shape, groupPosition, rotationOffset, offsetPosition); - part1.Scale = new Vector3(1, 1, 1); - part1.Name = partName; - - object2 = new SceneObjectGroup(part1); - } + SceneObjectGroup object2 = SceneSetupHelpers.CreateSceneObject(1, m_userId, "Object2", 0x40); + object2.AbsolutePosition = new Vector3(25, 50, 75); + object2.Parts[0].Scale = new Vector3(1, 1, 1); CoalescedSceneObjects coa = new CoalescedSceneObjects(m_userId, object1, object2); diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index ca7d9d9d57..9bb50db921 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -296,11 +296,14 @@ namespace OpenSim.Region.Framework.Scenes { Vector3 val = value; - if ((m_scene.TestBorderCross(val - Vector3.UnitX, Cardinals.E) || m_scene.TestBorderCross(val + Vector3.UnitX, Cardinals.W) - || m_scene.TestBorderCross(val - Vector3.UnitY, Cardinals.N) || m_scene.TestBorderCross(val + Vector3.UnitY, Cardinals.S)) - && !IsAttachmentCheckFull() && (!m_scene.LoadingPrims)) + if (Scene != null) { - m_scene.CrossPrimGroupIntoNewRegion(val, this, true); + if ((Scene.TestBorderCross(val - Vector3.UnitX, Cardinals.E) || Scene.TestBorderCross(val + Vector3.UnitX, Cardinals.W) + || Scene.TestBorderCross(val - Vector3.UnitY, Cardinals.N) || Scene.TestBorderCross(val + Vector3.UnitY, Cardinals.S)) + && !IsAttachmentCheckFull() && (!Scene.LoadingPrims)) + { + m_scene.CrossPrimGroupIntoNewRegion(val, this, true); + } } if (RootPart.GetStatusSandbox()) @@ -308,8 +311,11 @@ namespace OpenSim.Region.Framework.Scenes if (Util.GetDistanceTo(RootPart.StatusSandboxPos, value) > 10) { RootPart.ScriptSetPhysicsStatus(false); - Scene.SimChat(Utils.StringToBytes("Hit Sandbox Limit"), - ChatTypeEnum.DebugChannel, 0x7FFFFFFF, RootPart.AbsolutePosition, Name, UUID, false); + + if (Scene != null) + Scene.SimChat(Utils.StringToBytes("Hit Sandbox Limit"), + ChatTypeEnum.DebugChannel, 0x7FFFFFFF, RootPart.AbsolutePosition, Name, UUID, false); + return; } } @@ -326,7 +332,8 @@ namespace OpenSim.Region.Framework.Scenes //m_scene.PhysicsScene.AddPhysicsActorTaint(m_rootPart.PhysActor); //} - m_scene.EventManager.TriggerParcelPrimCountTainted(); + if (Scene != null) + Scene.EventManager.TriggerParcelPrimCountTainted(); } } From c644ab6a2c902c829a0dc88d08780a4411b4cd29 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 14 Apr 2011 20:21:44 +0100 Subject: [PATCH 108/138] Make scene object parts created by the test utils unit sized. --- .../InventoryAccess/Tests/InventoryAccessModuleTests.cs | 4 +--- OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs index 9fc77a74a6..60a932d764 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs @@ -89,11 +89,9 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess.Tests // Create asset SceneObjectGroup object1 = SceneSetupHelpers.CreateSceneObject(1, m_userId, "Object1", 0x20); object1.AbsolutePosition = new Vector3(15, 30, 45); - object1.Parts[0].Scale = new Vector3(1, 1, 1); SceneObjectGroup object2 = SceneSetupHelpers.CreateSceneObject(1, m_userId, "Object2", 0x40); - object2.AbsolutePosition = new Vector3(25, 50, 75); - object2.Parts[0].Scale = new Vector3(1, 1, 1); + object2.AbsolutePosition = new Vector3(25, 50, 75); CoalescedSceneObjects coa = new CoalescedSceneObjects(m_userId, object1, object2); diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index 709dd78063..eb08b62f19 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs @@ -472,10 +472,10 @@ namespace OpenSim.Tests.Common.Setup /// /// public static SceneObjectPart CreateSceneObjectPart(string name, UUID id, UUID ownerId) - { + { return new SceneObjectPart( ownerId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) - { Name = name, UUID = id }; + { Name = name, UUID = id, Scale = new Vector3(1, 1, 1) }; } /// From e4392648248d11699772aac42db753ae4f84495f Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 14 Apr 2011 20:23:48 +0100 Subject: [PATCH 109/138] simplify TestRezObject() --- .../Tests/InventoryAccessModuleTests.cs | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs index 60a932d764..7a7a8c23f7 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs @@ -143,23 +143,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess.Tests // log4net.Config.XmlConfigurator.Configure(); // Create asset - SceneObjectGroup object1; - SceneObjectPart part1; - { - string partName = "My Little Dog Object"; - UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); - PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); - Vector3 groupPosition = new Vector3(10, 20, 30); - Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); - Vector3 offsetPosition = new Vector3(5, 10, 15); - - part1 - = new SceneObjectPart( - ownerId, shape, groupPosition, rotationOffset, offsetPosition); - part1.Name = partName; - - object1 = new SceneObjectGroup(part1); - } + SceneObjectGroup object1 = SceneSetupHelpers.CreateSceneObject(1, m_userId, "My Little Dog Object", 0x40); UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); From 1569148b49f188f3c46f9fd8ffa096efc70f72fa Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 14 Apr 2011 20:32:27 +0100 Subject: [PATCH 110/138] simplify TestSaveItemToIarV0_1() --- .../Archiver/Tests/InventoryArchiverTests.cs | 20 ++----------------- 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index 7f156f8904..9e3e7d4e75 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -84,24 +84,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests UserProfileTestUtils.CreateUserWithInventory(m_scene, userFirstName, userLastName, userId, userPassword); // Create asset - SceneObjectGroup object1; - SceneObjectPart part1; - { - string partName = "My Little Dog Object"; - UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); - PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); - Vector3 groupPosition = new Vector3(10, 20, 30); - Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); - Vector3 offsetPosition = new Vector3(5, 10, 15); - - part1 - = new SceneObjectPart( - ownerId, shape, groupPosition, rotationOffset, offsetPosition); - part1.Name = partName; - - object1 = new SceneObjectGroup(part1); - m_scene.AddNewSceneObject(object1, false); - } + UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); + SceneObjectGroup object1 = SceneSetupHelpers.CreateSceneObject(1, ownerId, "My Little Dog Object", 0x50); UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); From 55387542eaae8ab27c4709ae5b923d9d2d2a4431 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 14 Apr 2011 20:35:00 +0100 Subject: [PATCH 111/138] simplify InventoryArchiveTestCase setup --- .../Tests/InventoryArchiveTestCase.cs | 20 ++----------------- 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs index e5127a0118..7ee6f28285 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs @@ -105,24 +105,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests MemoryStream archiveWriteStream = new MemoryStream(); // Create asset - SceneObjectGroup object1; - SceneObjectPart part1; - { - string partName = "Ray Gun Object"; - UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); - PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); - Vector3 groupPosition = new Vector3(10, 20, 30); - Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); - Vector3 offsetPosition = new Vector3(5, 10, 15); - - part1 - = new SceneObjectPart( - ownerId, shape, groupPosition, rotationOffset, offsetPosition); - part1.Name = partName; - - object1 = new SceneObjectGroup(part1); - scene.AddNewSceneObject(object1, false); - } + UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); + SceneObjectGroup object1 = SceneSetupHelpers.CreateSceneObject(1, ownerId, "Ray Gun Object", 0x50); UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); From 821e67fb950721c0bb8105318e41d7982cf986f2 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 14 Apr 2011 20:59:52 +0100 Subject: [PATCH 112/138] implement stub TestLoadCoalesecedItem(). Doesn't do what it's meant to do yet. --- .../Tests/InventoryArchiveTestCase.cs | 35 ++++++++++++++++--- .../Archiver/Tests/InventoryArchiverTests.cs | 17 +++++++++ OpenSim/Tests/Common/Setup/AssetHelpers.cs | 18 ++++++++-- 3 files changed, 64 insertions(+), 6 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs index 7ee6f28285..f2d050c16a 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs @@ -68,17 +68,21 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests PrincipalID = UUID.Parse("00000000-0000-0000-0000-000000000555"), FirstName = "Mr", LastName = "Tiddles" }; + protected UserAccount m_uaLL1 = new UserAccount { PrincipalID = UUID.Parse("00000000-0000-0000-0000-000000000666"), FirstName = "Lord", LastName = "Lucan" }; + protected UserAccount m_uaLL2 = new UserAccount { PrincipalID = UUID.Parse("00000000-0000-0000-0000-000000000777"), FirstName = "Lord", - LastName = "Lucan" }; + LastName = "Lucan" }; + protected string m_item1Name = "Ray Gun Item"; + protected string m_coaItemName = "Coalesced Item"; [SetUp] public virtual void SetUp() @@ -104,7 +108,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests MemoryStream archiveWriteStream = new MemoryStream(); - // Create asset + // Create scene object asset UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); SceneObjectGroup object1 = SceneSetupHelpers.CreateSceneObject(1, ownerId, "Ray Gun Object", 0x50); @@ -112,7 +116,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); scene.AssetService.Store(asset1); - // Create item + // Create scene object item InventoryItemBase item1 = new InventoryItemBase(); item1.Name = m_item1Name; item1.ID = UUID.Parse("00000000-0000-0000-0000-000000000020"); @@ -123,8 +127,31 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests item1.Folder = scene.InventoryService.GetRootFolder(m_uaLL1.PrincipalID).ID; scene.AddInventoryItem(item1); + // Create coalesced objects asset + SceneObjectGroup cobj1 = SceneSetupHelpers.CreateSceneObject(1, m_uaLL1.PrincipalID, "Object1", 0x120); + cobj1.AbsolutePosition = new Vector3(15, 30, 45); + + SceneObjectGroup cobj2 = SceneSetupHelpers.CreateSceneObject(1, m_uaLL1.PrincipalID, "Object2", 0x140); + cobj2.AbsolutePosition = new Vector3(25, 50, 75); + + CoalescedSceneObjects coa = new CoalescedSceneObjects(m_uaLL1.PrincipalID, cobj1, cobj2); + + AssetBase coaAsset = AssetHelpers.CreateAsset(0x160, coa); + scene.AssetService.Store(coaAsset); + + // Create coalesced objects inventory item + InventoryItemBase coaItem = new InventoryItemBase(); + coaItem.Name = m_coaItemName; + coaItem.ID = UUID.Parse("00000000-0000-0000-0000-000000000180"); + coaItem.AssetID = asset1.FullID; + coaItem.GroupID = UUID.Random(); + coaItem.CreatorIdAsUuid = m_uaLL1.PrincipalID; + coaItem.Owner = m_uaLL1.PrincipalID; + coaItem.Folder = scene.InventoryService.GetRootFolder(m_uaLL1.PrincipalID).ID; + scene.AddInventoryItem(coaItem); + archiverModule.ArchiveInventory( - Guid.NewGuid(), m_uaLL1.FirstName, m_uaLL1.LastName, m_item1Name, "hampshire", archiveWriteStream); + Guid.NewGuid(), m_uaLL1.FirstName, m_uaLL1.LastName, "/*", "hampshire", archiveWriteStream); m_iarStreamBytes = archiveWriteStream.ToArray(); } diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index 9e3e7d4e75..0c4e364765 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -257,5 +257,22 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests Assert.That(sog1.RootPart.CreatorID, Is.EqualTo(m_uaMT.PrincipalID)); } + + [Test] + public void TestLoadCoalesecedItem() + { + TestHelper.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + UserProfileTestUtils.CreateUserWithInventory(m_scene, m_uaLL1, "password"); + m_archiverModule.DearchiveInventory(m_uaLL1.FirstName, m_uaLL1.LastName, "/", "password", m_iarStream); + + InventoryItemBase coaItem + = InventoryArchiveUtils.FindItemByPath(m_scene.InventoryService, m_uaLL1.PrincipalID, m_coaItemName); + + Assert.That(coaItem, Is.Not.Null, "Didn't find loaded item 1"); + + // TODO: Check that the loaded coalesence is valid and that the required scene object assets are around + } } } \ No newline at end of file diff --git a/OpenSim/Tests/Common/Setup/AssetHelpers.cs b/OpenSim/Tests/Common/Setup/AssetHelpers.cs index af66d7f0a7..971c6bcf36 100644 --- a/OpenSim/Tests/Common/Setup/AssetHelpers.cs +++ b/OpenSim/Tests/Common/Setup/AssetHelpers.cs @@ -55,7 +55,7 @@ namespace OpenSim.Tests.Common AssetBase asset = CreateAsset(UUID.Random(), AssetType.Notecard, "hello", creatorId); scene.AssetService.Store(asset); return asset; - } + } /// /// Create an asset from the given scene object. @@ -72,6 +72,20 @@ namespace OpenSim.Tests.Common sog.OwnerID); } + /// + /// Create an asset from the given scene object. + /// + /// + /// The hexadecimal last part of the UUID for the asset created. A UUID of the form "00000000-0000-0000-0000-{0:XD12}" + /// will be used. + /// + /// + /// + public static AssetBase CreateAsset(int assetUuidTail, CoalescedSceneObjects coa) + { + return CreateAsset(new UUID(string.Format("00000000-0000-0000-0000-{0:X12}", assetUuidTail)), coa); + } + /// /// Create an asset from the given scene object. /// @@ -85,7 +99,7 @@ namespace OpenSim.Tests.Common AssetType.Object, Encoding.ASCII.GetBytes(CoalescedSceneObjectsSerializer.ToXml(coa)), coa.CreatorId); - } + } /// /// Create an asset from the given data. From a0d80140f2d0ad6dd63970a3a3d5c0da8320ae75 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 15 Apr 2011 00:42:06 +0100 Subject: [PATCH 113/138] Make all the objects in a coalescence reappears after being loaded from an IAR. This still doesn't work proprerly since some required textures/contained item assets might be missing. From pure code inspection, it looks like the uuid gatherer may get most asset uuids because the scene object serializer naively pulls non-root parts from all contained scene objects into one mega-object. However, root part uuids may well still be missing, and there may be other odd artifacts from this bug. It appears that storing the size of the coalescence and the offsets is redundant, since one can work out this information from the position data already in the scene object groups. --- .../Archiver/InventoryArchiveReadRequest.cs | 28 ++++++++--- .../Tests/InventoryArchiveTestCase.cs | 2 +- .../Archiver/Tests/InventoryArchiverTests.cs | 43 ++++++++++------- .../Asset/LocalAssetServiceConnector.cs | 2 + .../CoalescedSceneObjectsSerializer.cs | 47 ++++++++++++++++--- OpenSim/Services/AssetService/AssetService.cs | 10 +++- OpenSim/Services/Interfaces/IAssetService.cs | 5 ++ OpenSim/Tests/Common/Mock/MockAssetService.cs | 22 +++++++-- OpenSim/Tests/Common/Setup/AssetHelpers.cs | 7 +++ .../Tests/Common/Setup/SceneSetupHelpers.cs | 7 ++- 10 files changed, 134 insertions(+), 39 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index 01170aaf65..f3d2f26cfe 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs @@ -471,16 +471,30 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver if (m_creatorIdForAssetId.ContainsKey(assetId)) { string xmlData = Utils.BytesToString(data); - SceneObjectGroup sog = SceneObjectSerializer.FromOriginalXmlFormat(xmlData); - foreach (SceneObjectPart sop in sog.Parts) + List sceneObjects = new List(); + + CoalescedSceneObjects coa = null; + if (CoalescedSceneObjectsSerializer.TryFromXml(xmlData, out coa)) { - if (sop.CreatorData == null || sop.CreatorData == "") - { - sop.CreatorID = m_creatorIdForAssetId[assetId]; - } +// m_log.DebugFormat( +// "[INVENTORY ARCHIVER]: Loaded coalescence {0} has {1} objects", assetId, coa.Count); + + sceneObjects.AddRange(coa.Objects); + } + else + { + sceneObjects.Add(SceneObjectSerializer.FromOriginalXmlFormat(xmlData)); } - data = Utils.StringToBytes(SceneObjectSerializer.ToOriginalXmlFormat(sog)); + foreach (SceneObjectGroup sog in sceneObjects) + foreach (SceneObjectPart sop in sog.Parts) + if (sop.CreatorData == null || sop.CreatorData == "") + sop.CreatorID = m_creatorIdForAssetId[assetId]; + + if (coa != null) + data = Utils.StringToBytes(CoalescedSceneObjectsSerializer.ToXml(coa)); + else + data = Utils.StringToBytes(SceneObjectSerializer.ToOriginalXmlFormat(sceneObjects[0])); } } diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs index f2d050c16a..e2316f0bdd 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs @@ -143,7 +143,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests InventoryItemBase coaItem = new InventoryItemBase(); coaItem.Name = m_coaItemName; coaItem.ID = UUID.Parse("00000000-0000-0000-0000-000000000180"); - coaItem.AssetID = asset1.FullID; + coaItem.AssetID = coaAsset.FullID; coaItem.GroupID = UUID.Random(); coaItem.CreatorIdAsUuid = m_uaLL1.PrincipalID; coaItem.Owner = m_uaLL1.PrincipalID; diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index 0c4e364765..f747c899de 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -62,9 +62,33 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests SerialiserModule serialiserModule = new SerialiserModule(); m_archiverModule = new InventoryArchiverModule(); - m_scene = SceneSetupHelpers.SetupScene("Inventory"); + m_scene = SceneSetupHelpers.SetupScene("asset inventory"); SceneSetupHelpers.SetupSceneModules(m_scene, serialiserModule, m_archiverModule); } + + [Test] + public void TestLoadCoalesecedItem() + { + TestHelper.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + UserProfileTestUtils.CreateUserWithInventory(m_scene, m_uaLL1, "password"); + m_archiverModule.DearchiveInventory(m_uaLL1.FirstName, m_uaLL1.LastName, "/", "password", m_iarStream); + + InventoryItemBase coaItem + = InventoryArchiveUtils.FindItemByPath(m_scene.InventoryService, m_uaLL1.PrincipalID, m_coaItemName); + + Assert.That(coaItem, Is.Not.Null, "Didn't find loaded item 1"); + + string assetXml = AssetHelpers.ReadAssetAsString(m_scene.AssetService, coaItem.AssetID); + + CoalescedSceneObjects coa; + bool readResult = CoalescedSceneObjectsSerializer.TryFromXml(assetXml, out coa); + + Assert.That(readResult, Is.True); + + // TODO: Check that the loaded coalesence is valid and that the required scene object assets are around + } /// /// Test saving a single inventory item to a V0.1 OpenSim Inventory Archive @@ -257,22 +281,5 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests Assert.That(sog1.RootPart.CreatorID, Is.EqualTo(m_uaMT.PrincipalID)); } - - [Test] - public void TestLoadCoalesecedItem() - { - TestHelper.InMethod(); -// log4net.Config.XmlConfigurator.Configure(); - - UserProfileTestUtils.CreateUserWithInventory(m_scene, m_uaLL1, "password"); - m_archiverModule.DearchiveInventory(m_uaLL1.FirstName, m_uaLL1.LastName, "/", "password", m_iarStream); - - InventoryItemBase coaItem - = InventoryArchiveUtils.FindItemByPath(m_scene.InventoryService, m_uaLL1.PrincipalID, m_coaItemName); - - Assert.That(coaItem, Is.Not.Null, "Didn't find loaded item 1"); - - // TODO: Check that the loaded coalesence is valid and that the required scene object assets are around - } } } \ No newline at end of file diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs index 1b3419d12f..51d1d599c5 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs @@ -195,6 +195,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset public byte[] GetData(string id) { +// m_log.DebugFormat("[LOCAL ASSET SERVICES CONNECTOR]: Requesting data for asset {0}", id); + AssetBase asset = m_Cache.Get(id); if (asset != null) diff --git a/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs index a0e120a9ac..babcb54ae9 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs @@ -55,11 +55,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization /// /// public static string ToXml(CoalescedSceneObjects coa) - { - // TODO: Should probably return an empty xml serialization rather than a blank string - if (!coa.HasObjects) - return ""; - + { using (StringWriter sw = new StringWriter()) { using (XmlTextWriter writer = new XmlTextWriter(sw)) @@ -105,10 +101,49 @@ namespace OpenSim.Region.Framework.Scenes.Serialization string output = sw.ToString(); -// m_log.Debug(output); +// Console.WriteLine(output); return output; } } + + public static bool TryFromXml(string xml, out CoalescedSceneObjects coa) + { +// m_log.DebugFormat("[COALESCED SCENE OBJECTS SERIALIZER]: TryFromXml() deserializing {0}", xml); + + coa = null; + + using (StringReader sr = new StringReader(xml)) + { + using (XmlTextReader reader = new XmlTextReader(sr)) + { + reader.Read(); + if (reader.Name != "CoalescedObject") + { +// m_log.DebugFormat( +// "[COALESCED SCENE OBJECTS SERIALIZER]: TryFromXml() root element was {0} so returning false", +// reader.Name); + + return false; + } + + coa = new CoalescedSceneObjects(UUID.Zero); + reader.Read(); + + while (reader.NodeType != XmlNodeType.EndElement && reader.Name != "CoalescedObject") + { + if (reader.Name == "SceneObjectGroup") + { + string soXml = reader.ReadOuterXml(); + coa.Add(SceneObjectSerializer.FromOriginalXmlFormat(soXml)); + } + } + + reader.ReadEndElement(); // CoalescedObject + } + } + + return true; + } } } \ No newline at end of file diff --git a/OpenSim/Services/AssetService/AssetService.cs b/OpenSim/Services/AssetService/AssetService.cs index a81af4355a..e1f90b6e18 100644 --- a/OpenSim/Services/AssetService/AssetService.cs +++ b/OpenSim/Services/AssetService/AssetService.cs @@ -89,6 +89,8 @@ namespace OpenSim.Services.AssetService public virtual AssetBase Get(string id) { +// m_log.DebugFormat("[ASSET SERVICE]: Get asset for {0}", id); + UUID assetID; if (!UUID.TryParse(id, out assetID)) @@ -107,6 +109,8 @@ namespace OpenSim.Services.AssetService public virtual AssetMetadata GetMetadata(string id) { +// m_log.DebugFormat("[ASSET SERVICE]: Get asset metadata for {0}", id); + UUID assetID; if (!UUID.TryParse(id, out assetID)) @@ -121,6 +125,8 @@ namespace OpenSim.Services.AssetService public virtual byte[] GetData(string id) { +// m_log.DebugFormat("[ASSET SERVICE]: Get asset data for {0}", id); + UUID assetID; if (!UUID.TryParse(id, out assetID)) @@ -150,7 +156,9 @@ namespace OpenSim.Services.AssetService public virtual string Store(AssetBase asset) { - //m_log.DebugFormat("[ASSET SERVICE]: Store asset {0} {1}", asset.Name, asset.ID); +// m_log.DebugFormat( +// "[ASSET SERVICE]: Storing asset {0} {1}, bytes {2}", asset.Name, asset.ID, asset.Data.Length); + m_Database.StoreAsset(asset); return asset.ID; diff --git a/OpenSim/Services/Interfaces/IAssetService.cs b/OpenSim/Services/Interfaces/IAssetService.cs index 3be6815728..1ac1cec358 100644 --- a/OpenSim/Services/Interfaces/IAssetService.cs +++ b/OpenSim/Services/Interfaces/IAssetService.cs @@ -48,6 +48,11 @@ namespace OpenSim.Services.Interfaces /// AssetMetadata GetMetadata(string id); + /// + /// Get an asset's data, ignoring the metadata. + /// + /// + /// null if there is no such asset byte[] GetData(string id); /// diff --git a/OpenSim/Tests/Common/Mock/MockAssetService.cs b/OpenSim/Tests/Common/Mock/MockAssetService.cs index 4118308bed..9d7c5e29e6 100644 --- a/OpenSim/Tests/Common/Mock/MockAssetService.cs +++ b/OpenSim/Tests/Common/Mock/MockAssetService.cs @@ -54,13 +54,19 @@ namespace OpenSim.Tests.Common.Mock public AssetBase Get(string id) { - m_log.DebugFormat("[MOCK ASSET SERVICE]: Getting asset with id {0}", id); +// m_log.DebugFormat("[MOCK ASSET SERVICE]: Getting asset with id {0}", id); AssetBase asset; if (Assets.ContainsKey(id)) + { asset = Assets[id]; +// m_log.DebugFormat( +// "[MOCK ASSET SERVICE]: Got asset {0} {1}, bytes {2}", asset.Name, asset.ID, asset.Data.Length); + } else - asset = null; + { + asset = null; + } return asset; } @@ -77,7 +83,14 @@ namespace OpenSim.Tests.Common.Mock public byte[] GetData(string id) { - throw new System.NotImplementedException(); +// m_log.DebugFormat("[MOCK ASSET SERVICE]: Requesting data for asset {0}", id); + + AssetBase asset = Get(id); + + if (asset == null) + return null; + else + return asset.Data; } public bool Get(string id, object sender, AssetRetrieved handler) @@ -89,7 +102,8 @@ namespace OpenSim.Tests.Common.Mock public string Store(AssetBase asset) { - m_log.DebugFormat("[MOCK ASSET SERVICE]: Storing asset {0}", asset.ID); +// m_log.DebugFormat( +// "[MOCK ASSET SERVICE]: Storing asset {0} {1}, bytes {2}", asset.Name, asset.ID, asset.Data.Length); Assets[asset.ID] = asset; diff --git a/OpenSim/Tests/Common/Setup/AssetHelpers.cs b/OpenSim/Tests/Common/Setup/AssetHelpers.cs index 971c6bcf36..d572249997 100644 --- a/OpenSim/Tests/Common/Setup/AssetHelpers.cs +++ b/OpenSim/Tests/Common/Setup/AssetHelpers.cs @@ -30,6 +30,7 @@ using OpenMetaverse; using OpenSim.Framework; using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Scenes.Serialization; +using OpenSim.Services.Interfaces; namespace OpenSim.Tests.Common { @@ -118,5 +119,11 @@ namespace OpenSim.Tests.Common asset.Data = data; return asset; } + + public static string ReadAssetAsString(IAssetService assetService, UUID uuid) + { + byte[] assetData = assetService.GetData(uuid.ToString()); + return Encoding.ASCII.GetString(assetData); + } } } diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index eb08b62f19..837f4e235f 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs @@ -168,14 +168,17 @@ namespace OpenSim.Tests.Common.Setup { LocalAssetServicesConnector assetService = new LocalAssetServicesConnector(); IConfigSource config = new IniConfigSource(); - config.AddConfig("Modules"); - config.AddConfig("AssetService"); + config.AddConfig("Modules"); config.Configs["Modules"].Set("AssetServices", "LocalAssetServicesConnector"); + + config.AddConfig("AssetService"); if (real) config.Configs["AssetService"].Set("LocalServiceModule", "OpenSim.Services.AssetService.dll:AssetService"); else config.Configs["AssetService"].Set("LocalServiceModule", "OpenSim.Tests.Common.dll:MockAssetService"); + config.Configs["AssetService"].Set("StorageProvider", "OpenSim.Tests.Common.dll"); + assetService.Initialise(config); assetService.AddRegion(testScene); assetService.RegionLoaded(testScene); From ad70cddcfc48182f75be7643297cea2a9d20ac91 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 15 Apr 2011 00:56:40 +0100 Subject: [PATCH 114/138] extend TestLoadCoalesecedItem() to check loaded object ids and positions --- .../Inventory/Archiver/Tests/InventoryArchiverTests.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index f747c899de..69c5dcdab1 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -86,8 +86,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests bool readResult = CoalescedSceneObjectsSerializer.TryFromXml(assetXml, out coa); Assert.That(readResult, Is.True); + Assert.That(coa.Count, Is.EqualTo(2)); - // TODO: Check that the loaded coalesence is valid and that the required scene object assets are around + List coaObjects = coa.Objects; + Assert.That(coaObjects[0].UUID, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000120"))); + Assert.That(coaObjects[0].AbsolutePosition, Is.EqualTo(new Vector3(15, 30, 45))); + + Assert.That(coaObjects[1].UUID, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000140"))); + Assert.That(coaObjects[1].AbsolutePosition, Is.EqualTo(new Vector3(25, 50, 75))); } /// From 79bd430e08b9e8612194d9b02504f8f4acd889f6 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 15 Apr 2011 01:10:26 +0100 Subject: [PATCH 115/138] Remove the mock inventory service for tests and just use the real one all the time with an in-memory data plugin --- .../Tests/Common/Mock/MockInventoryService.cs | 186 ------------------ .../Tests/Common/Setup/SceneSetupHelpers.cs | 19 +- 2 files changed, 6 insertions(+), 199 deletions(-) delete mode 100644 OpenSim/Tests/Common/Mock/MockInventoryService.cs diff --git a/OpenSim/Tests/Common/Mock/MockInventoryService.cs b/OpenSim/Tests/Common/Mock/MockInventoryService.cs deleted file mode 100644 index 4ac1078795..0000000000 --- a/OpenSim/Tests/Common/Mock/MockInventoryService.cs +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using System.Text; -using OpenSim.Framework; -using OpenMetaverse; -using OpenSim.Services.Interfaces; -using Nini.Config; - -namespace OpenSim.Tests.Common.Mock -{ - public class MockInventoryService : IInventoryService - { - public MockInventoryService() {} - - public MockInventoryService(IConfigSource config) {} - - /// - /// - /// - /// - /// - public bool CreateUserInventory(UUID userId) - { - return false; - } - - /// - /// - /// - /// - /// - public List GetInventorySkeleton(UUID userId) - { - List folders = new List(); - InventoryFolderBase folder = new InventoryFolderBase(); - folder.ID = UUID.Random(); - folder.Owner = userId; - folders.Add(folder); - return folders; - } - - public InventoryFolderBase GetRootFolder(UUID userID) - { - return new InventoryFolderBase(); - } - - public InventoryCollection GetFolderContent(UUID userID, UUID folderID) - { - return null; - } - - public InventoryFolderBase GetFolderForType(UUID userID, AssetType type) - { - return null; - } - - /// - /// Returns a list of all the active gestures in a user's inventory. - /// - /// - /// The of the user - /// - /// - /// A flat list of the gesture items. - /// - public List GetActiveGestures(UUID userId) - { - return null; - } - - public InventoryCollection GetUserInventory(UUID userID) - { - return null; - } - - public void GetUserInventory(UUID userID, OpenSim.Services.Interfaces.InventoryReceiptCallback callback) - { - } - - public List GetFolderItems(UUID userID, UUID folderID) - { - return null; - } - - public bool AddFolder(InventoryFolderBase folder) - { - return false; - } - - public bool UpdateFolder(InventoryFolderBase folder) - { - return false; - } - - public bool MoveFolder(InventoryFolderBase folder) - { - return false; - } - - public bool DeleteFolders(UUID ownerID, List ids) - { - return false; - } - - public bool PurgeFolder(InventoryFolderBase folder) - { - return false; - } - - public bool AddItem(InventoryItemBase item) - { - return true; - } - - public bool UpdateItem(InventoryItemBase item) - { - return false; - } - - public bool MoveItems(UUID ownerID, List items) - { - return false; - } - - public bool DeleteItems(UUID ownerID, List itemIDs) - { - return false; - } - - public InventoryItemBase GetItem(InventoryItemBase item) - { - return null; - } - - public InventoryFolderBase GetFolder(InventoryFolderBase folder) - { - return null; - } - - public bool HasInventoryForUser(UUID userID) - { - return false; - } - - public InventoryFolderBase RequestRootFolder(UUID userID) - { - InventoryFolderBase root = new InventoryFolderBase(); - root.ID = UUID.Random(); - root.Owner = userID; - root.ParentID = UUID.Zero; - return root; - } - - public int GetAssetPermissions(UUID userID, UUID assetID) - { - return 1; - } - } -} \ No newline at end of file diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index 837f4e235f..97d4acefd0 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs @@ -137,7 +137,7 @@ namespace OpenSim.Tests.Common.Setup // For now, always started a 'real' authentication service StartAuthenticationService(testScene, true); - LocalInventoryServicesConnector inventoryService = StartInventoryService(testScene, realServices.Contains("inventory")); + LocalInventoryServicesConnector inventoryService = StartInventoryService(testScene); StartGridService(testScene, true); LocalUserAccountServicesConnector userAccountService = StartUserAccountService(testScene); LocalPresenceServicesConnector presenceService = StartPresenceService(testScene); @@ -208,24 +208,17 @@ namespace OpenSim.Tests.Common.Setup //m_authenticationService = service; } - private static LocalInventoryServicesConnector StartInventoryService(Scene testScene, bool real) + private static LocalInventoryServicesConnector StartInventoryService(Scene testScene) { LocalInventoryServicesConnector inventoryService = new LocalInventoryServicesConnector(); - IConfigSource config = new IniConfigSource(); + + IConfigSource config = new IniConfigSource(); config.AddConfig("Modules"); config.AddConfig("InventoryService"); config.Configs["Modules"].Set("InventoryServices", "LocalInventoryServicesConnector"); - - if (real) - { - config.Configs["InventoryService"].Set("LocalServiceModule", "OpenSim.Services.InventoryService.dll:InventoryService"); - } - else - { - config.Configs["InventoryService"].Set("LocalServiceModule", "OpenSim.Tests.Common.dll:MockInventoryService"); - } - + config.Configs["InventoryService"].Set("LocalServiceModule", "OpenSim.Services.InventoryService.dll:InventoryService"); config.Configs["InventoryService"].Set("StorageProvider", "OpenSim.Tests.Common.dll"); + inventoryService.Initialise(config); inventoryService.AddRegion(testScene); inventoryService.RegionLoaded(testScene); From 54e885581989ddfaf525753ede12c4d4d797cba0 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 15 Apr 2011 01:23:26 +0100 Subject: [PATCH 116/138] remove mock asset service for tests in favour of always using the real one --- .../Scenes/Tests/UuidGathererTests.cs | 4 +- OpenSim/Tests/Common/Mock/MockAssetService.cs | 123 ------------------ .../Tests/Common/Setup/SceneSetupHelpers.cs | 14 +- 3 files changed, 8 insertions(+), 133 deletions(-) delete mode 100644 OpenSim/Tests/Common/Mock/MockAssetService.cs diff --git a/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs b/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs index 6b70865533..dbf9e0f550 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs @@ -47,7 +47,9 @@ namespace OpenSim.Region.Framework.Scenes.Tests [SetUp] public void Init() { - m_assetService = new MockAssetService(); + // FIXME: We don't need a full scene here - it would be enough to set up the asset service. + Scene scene = SceneSetupHelpers.SetupScene(); + m_assetService = scene.AssetService; m_uuidGatherer = new UuidGatherer(m_assetService); } diff --git a/OpenSim/Tests/Common/Mock/MockAssetService.cs b/OpenSim/Tests/Common/Mock/MockAssetService.cs deleted file mode 100644 index 9d7c5e29e6..0000000000 --- a/OpenSim/Tests/Common/Mock/MockAssetService.cs +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using System.Reflection; -using log4net; -using OpenMetaverse; -using OpenSim.Framework; -using OpenSim.Data; -using OpenSim.Services.Interfaces; -using Nini.Config; - -namespace OpenSim.Tests.Common.Mock -{ - public class MockAssetService : IAssetService - { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private readonly Dictionary Assets = new Dictionary(); - - public MockAssetService() {} - - /// - /// This constructor is required if the asset service is being created reflectively (which is the case in some - /// tests). - /// - /// - public MockAssetService(IConfigSource config) {} - - public AssetBase Get(string id) - { -// m_log.DebugFormat("[MOCK ASSET SERVICE]: Getting asset with id {0}", id); - - AssetBase asset; - if (Assets.ContainsKey(id)) - { - asset = Assets[id]; -// m_log.DebugFormat( -// "[MOCK ASSET SERVICE]: Got asset {0} {1}, bytes {2}", asset.Name, asset.ID, asset.Data.Length); - } - else - { - asset = null; - } - - return asset; - } - - public AssetBase GetCached(string id) - { - return Get(id); - } - - public AssetMetadata GetMetadata(string id) - { - throw new System.NotImplementedException(); - } - - public byte[] GetData(string id) - { -// m_log.DebugFormat("[MOCK ASSET SERVICE]: Requesting data for asset {0}", id); - - AssetBase asset = Get(id); - - if (asset == null) - return null; - else - return asset.Data; - } - - public bool Get(string id, object sender, AssetRetrieved handler) - { - handler(id, sender, Get(id)); - - return true; - } - - public string Store(AssetBase asset) - { -// m_log.DebugFormat( -// "[MOCK ASSET SERVICE]: Storing asset {0} {1}, bytes {2}", asset.Name, asset.ID, asset.Data.Length); - - Assets[asset.ID] = asset; - - return asset.ID; - } - - public bool UpdateContent(string id, byte[] data) - { - throw new System.NotImplementedException(); - } - - public bool Delete(string id) - { - throw new System.NotImplementedException(); - } - } -} \ No newline at end of file diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index 97d4acefd0..484a97dc87 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs @@ -132,7 +132,7 @@ namespace OpenSim.Tests.Common.Setup testScene.AddModule(godsModule.Name, godsModule); realServices = realServices.ToLower(); - LocalAssetServicesConnector assetService = StartAssetService(testScene, realServices.Contains("asset")); + LocalAssetServicesConnector assetService = StartAssetService(testScene); // For now, always started a 'real' authentication service StartAuthenticationService(testScene, true); @@ -164,19 +164,15 @@ namespace OpenSim.Tests.Common.Setup return testScene; } - private static LocalAssetServicesConnector StartAssetService(Scene testScene, bool real) + private static LocalAssetServicesConnector StartAssetService(Scene testScene) { LocalAssetServicesConnector assetService = new LocalAssetServicesConnector(); IConfigSource config = new IniConfigSource(); + config.AddConfig("Modules"); - config.Configs["Modules"].Set("AssetServices", "LocalAssetServicesConnector"); - + config.Configs["Modules"].Set("AssetServices", "LocalAssetServicesConnector"); config.AddConfig("AssetService"); - if (real) - config.Configs["AssetService"].Set("LocalServiceModule", "OpenSim.Services.AssetService.dll:AssetService"); - else - config.Configs["AssetService"].Set("LocalServiceModule", "OpenSim.Tests.Common.dll:MockAssetService"); - + config.Configs["AssetService"].Set("LocalServiceModule", "OpenSim.Services.AssetService.dll:AssetService"); config.Configs["AssetService"].Set("StorageProvider", "OpenSim.Tests.Common.dll"); assetService.Initialise(config); From ba73df39a3824a91ffc848d9b6dc2356d1b307cf Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 15 Apr 2011 01:26:07 +0100 Subject: [PATCH 117/138] remove any reference to a mock authentication service since it doesn't exist and we don't use it --- .../Tests/Common/Setup/SceneSetupHelpers.cs | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index 484a97dc87..b819581254 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs @@ -132,11 +132,8 @@ namespace OpenSim.Tests.Common.Setup testScene.AddModule(godsModule.Name, godsModule); realServices = realServices.ToLower(); - LocalAssetServicesConnector assetService = StartAssetService(testScene); - - // For now, always started a 'real' authentication service - StartAuthenticationService(testScene, true); - + LocalAssetServicesConnector assetService = StartAssetService(testScene); + StartAuthenticationService(testScene); LocalInventoryServicesConnector inventoryService = StartInventoryService(testScene); StartGridService(testScene, true); LocalUserAccountServicesConnector userAccountService = StartUserAccountService(testScene); @@ -183,20 +180,18 @@ namespace OpenSim.Tests.Common.Setup return assetService; } - private static void StartAuthenticationService(Scene testScene, bool real) + private static void StartAuthenticationService(Scene testScene) { ISharedRegionModule service = new LocalAuthenticationServicesConnector(); IConfigSource config = new IniConfigSource(); + config.AddConfig("Modules"); config.AddConfig("AuthenticationService"); config.Configs["Modules"].Set("AuthenticationServices", "LocalAuthenticationServicesConnector"); - if (real) - config.Configs["AuthenticationService"].Set( - "LocalServiceModule", "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"); - else - config.Configs["AuthenticationService"].Set( - "LocalServiceModule", "OpenSim.Tests.Common.dll:MockAuthenticationService"); + config.Configs["AuthenticationService"].Set( + "LocalServiceModule", "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"); config.Configs["AuthenticationService"].Set("StorageProvider", "OpenSim.Data.Null.dll"); + service.Initialise(config); service.AddRegion(testScene); service.RegionLoaded(testScene); From 631654a38d2ace833f8cd2dc3b6b3860352f8b13 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 15 Apr 2011 01:30:49 +0100 Subject: [PATCH 118/138] remove old code for a mock grid service, which got removed some time back --- OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index b819581254..5d08764a30 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs @@ -135,7 +135,7 @@ namespace OpenSim.Tests.Common.Setup LocalAssetServicesConnector assetService = StartAssetService(testScene); StartAuthenticationService(testScene); LocalInventoryServicesConnector inventoryService = StartInventoryService(testScene); - StartGridService(testScene, true); + StartGridService(testScene); LocalUserAccountServicesConnector userAccountService = StartUserAccountService(testScene); LocalPresenceServicesConnector presenceService = StartPresenceService(testScene); @@ -218,24 +218,19 @@ namespace OpenSim.Tests.Common.Setup return inventoryService; } - private static LocalGridServicesConnector StartGridService(Scene testScene, bool real) + private static LocalGridServicesConnector StartGridService(Scene testScene) { IConfigSource config = new IniConfigSource(); config.AddConfig("Modules"); config.AddConfig("GridService"); config.Configs["Modules"].Set("GridServices", "LocalGridServicesConnector"); config.Configs["GridService"].Set("StorageProvider", "OpenSim.Data.Null.dll:NullRegionData"); - if (real) - config.Configs["GridService"].Set("LocalServiceModule", "OpenSim.Services.GridService.dll:GridService"); + config.Configs["GridService"].Set("LocalServiceModule", "OpenSim.Services.GridService.dll:GridService"); LocalGridServicesConnector gridService = new LocalGridServicesConnector(); gridService.Initialise(config); - - //else - // config.Configs["GridService"].Set("LocalServiceModule", "OpenSim.Tests.Common.dll:TestGridService"); gridService.AddRegion(testScene); gridService.RegionLoaded(testScene); - //testScene.AddRegionModule(m_gridService.Name, m_gridService); return gridService; } From 66a62678e5da89b0fa004eca3a370d202c239884 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 15 Apr 2011 01:37:27 +0100 Subject: [PATCH 119/138] get rid of all traces of the now used mock service infrastructure --- .../Tests/InventoryArchiveTestCase.cs | 2 +- .../Archiver/Tests/InventoryArchiverTests.cs | 2 +- .../Inventory/Archiver/Tests/PathTests.cs | 14 ++++---- .../Tests/InventoryAccessModuleTests.cs | 2 +- .../World/Serialiser/Tests/SerialiserTests.cs | 2 +- .../Scenes/Tests/StandaloneTeleportTests.cs | 4 +-- .../Scenes/Tests/TaskInventoryTests.cs | 4 +-- .../Tests/Common/Setup/SceneSetupHelpers.cs | 32 ++----------------- 8 files changed, 17 insertions(+), 45 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs index e2316f0bdd..5ba08ee094 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs @@ -101,7 +101,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests // log4net.Config.XmlConfigurator.Configure(); InventoryArchiverModule archiverModule = new InventoryArchiverModule(); - Scene scene = SceneSetupHelpers.SetupScene("Inventory"); + Scene scene = SceneSetupHelpers.SetupScene(); SceneSetupHelpers.SetupSceneModules(scene, archiverModule); UserProfileTestUtils.CreateUserWithInventory(scene, m_uaLL1, "hampshire"); diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index 69c5dcdab1..d03f6da295 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -62,7 +62,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests SerialiserModule serialiserModule = new SerialiserModule(); m_archiverModule = new InventoryArchiverModule(); - m_scene = SceneSetupHelpers.SetupScene("asset inventory"); + m_scene = SceneSetupHelpers.SetupScene(); SceneSetupHelpers.SetupSceneModules(m_scene, serialiserModule, m_archiverModule); } diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs index 0e8f647dbc..c7dae5276b 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs @@ -63,7 +63,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests InventoryArchiverModule archiverModule = new InventoryArchiverModule(); - Scene scene = SceneSetupHelpers.SetupScene("Inventory"); + Scene scene = SceneSetupHelpers.SetupScene(); SceneSetupHelpers.SetupSceneModules(scene, archiverModule); // Create user @@ -180,7 +180,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests InventoryArchiverModule archiverModule = new InventoryArchiverModule(); // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene - Scene scene = SceneSetupHelpers.SetupScene("inventory"); + Scene scene = SceneSetupHelpers.SetupScene(); SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); @@ -223,7 +223,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests SerialiserModule serialiserModule = new SerialiserModule(); InventoryArchiverModule archiverModule = new InventoryArchiverModule(); - Scene scene = SceneSetupHelpers.SetupScene("inventory"); + Scene scene = SceneSetupHelpers.SetupScene(); SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); UserProfileTestUtils.CreateUserWithInventory(scene, m_uaMT, "password"); @@ -248,7 +248,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests InventoryArchiverModule archiverModule = new InventoryArchiverModule(); - Scene scene = SceneSetupHelpers.SetupScene("Inventory"); + Scene scene = SceneSetupHelpers.SetupScene(); SceneSetupHelpers.SetupSceneModules(scene, archiverModule); // Create user @@ -327,7 +327,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests TestHelper.InMethod(); // log4net.Config.XmlConfigurator.Configure(); - Scene scene = SceneSetupHelpers.SetupScene("inventory"); + Scene scene = SceneSetupHelpers.SetupScene(); UserAccount ua1 = UserProfileTestUtils.CreateUserWithInventory(scene); Dictionary foldersCreated = new Dictionary(); @@ -394,7 +394,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests TestHelper.InMethod(); //log4net.Config.XmlConfigurator.Configure(); - Scene scene = SceneSetupHelpers.SetupScene("inventory"); + Scene scene = SceneSetupHelpers.SetupScene(); UserAccount ua1 = UserProfileTestUtils.CreateUserWithInventory(scene); string folder1ExistingName = "a"; @@ -445,7 +445,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests TestHelper.InMethod(); // log4net.Config.XmlConfigurator.Configure(); - Scene scene = SceneSetupHelpers.SetupScene("inventory"); + Scene scene = SceneSetupHelpers.SetupScene(); UserAccount ua1 = UserProfileTestUtils.CreateUserWithInventory(scene); string folder1ExistingName = "a"; diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs index 7a7a8c23f7..8d53cf1542 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs @@ -66,7 +66,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess.Tests config.AddConfig("Modules"); config.Configs["Modules"].Set("InventoryAccessModule", "BasicInventoryAccessModule"); - m_scene = SceneSetupHelpers.SetupScene("Inventory"); + m_scene = SceneSetupHelpers.SetupScene(); SceneSetupHelpers.SetupSceneModules(m_scene, config, m_iam); // Create user diff --git a/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs b/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs index dafaa0c107..a866fd938c 100644 --- a/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs +++ b/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs @@ -237,7 +237,7 @@ namespace OpenSim.Region.CoreModules.World.Serialiser.Tests public void Init() { m_serialiserModule = new SerialiserModule(); - m_scene = SceneSetupHelpers.SetupScene(""); + m_scene = SceneSetupHelpers.SetupScene(); SceneSetupHelpers.SetupSceneModules(m_scene, m_serialiserModule); } diff --git a/OpenSim/Region/Framework/Scenes/Tests/StandaloneTeleportTests.cs b/OpenSim/Region/Framework/Scenes/Tests/StandaloneTeleportTests.cs index 8588f7f599..dd28416788 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/StandaloneTeleportTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/StandaloneTeleportTests.cs @@ -117,11 +117,11 @@ namespace OpenSim.Region.Framework.Scenes.Tests ISharedRegionModule interregionComms = new LocalSimulationConnectorModule(); - Scene sceneB = SceneSetupHelpers.SetupScene("sceneB", sceneBId, 1010, 1010, "grid"); + Scene sceneB = SceneSetupHelpers.SetupScene("sceneB", sceneBId, 1010, 1010); SceneSetupHelpers.SetupSceneModules(sceneB, new IniConfigSource(), interregionComms); sceneB.RegisterRegionWithGrid(); - Scene sceneA = SceneSetupHelpers.SetupScene("sceneA", sceneAId, 1000, 1000, "grid"); + Scene sceneA = SceneSetupHelpers.SetupScene("sceneA", sceneAId, 1000, 1000); SceneSetupHelpers.SetupSceneModules(sceneA, new IniConfigSource(), interregionComms); sceneA.RegisterRegionWithGrid(); diff --git a/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs b/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs index 8138bcc19a..2aef4b0d19 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs @@ -101,7 +101,7 @@ namespace OpenSim.Region.Framework.Tests TestHelper.InMethod(); // log4net.Config.XmlConfigurator.Configure(); - Scene scene = SceneSetupHelpers.SetupScene("inventory"); + Scene scene = SceneSetupHelpers.SetupScene(); UserAccount user1 = CreateUser(scene); SceneObjectGroup sog1 = CreateSO1(scene, user1.PrincipalID); SceneObjectPart sop1 = sog1.RootPart; @@ -127,7 +127,7 @@ namespace OpenSim.Region.Framework.Tests TestHelper.InMethod(); // log4net.Config.XmlConfigurator.Configure(); - Scene scene = SceneSetupHelpers.SetupScene("inventory"); + Scene scene = SceneSetupHelpers.SetupScene(); UserAccount user1 = CreateUser(scene); SceneObjectGroup sog1 = CreateSO1(scene, user1.PrincipalID); SceneObjectPart sop1 = sog1.RootPart; diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index 5d08764a30..99517d2b19 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs @@ -66,32 +66,7 @@ namespace OpenSim.Tests.Common.Setup /// public static TestScene SetupScene() { - return SetupScene(""); - } - - /// - /// Set up a test scene - /// - /// - /// Starts real inventory and asset services, as opposed to mock ones, if true - /// - public static TestScene SetupScene(String realServices) - { - return SetupScene("Unit test region", UUID.Random(), 1000, 1000, realServices); - } - - /// - /// Set up a test scene - /// - /// Name of the region - /// ID of the region - /// X co-ordinate of the region - /// Y co-ordinate of the region - /// This should be the same if simulating two scenes within a standalone - /// - public static TestScene SetupScene(string name, UUID id, uint x, uint y) - { - return SetupScene(name, id, x, y, ""); + return SetupScene("Unit test region", UUID.Random(), 1000, 1000); } /// @@ -103,10 +78,8 @@ namespace OpenSim.Tests.Common.Setup /// X co-ordinate of the region /// Y co-ordinate of the region /// This should be the same if simulating two scenes within a standalone - /// Starts real inventory and asset services, as opposed to mock ones, if true /// - public static TestScene SetupScene( - string name, UUID id, uint x, uint y, String realServices) + public static TestScene SetupScene(string name, UUID id, uint x, uint y) { Console.WriteLine("Setting up test scene {0}", name); @@ -130,7 +103,6 @@ namespace OpenSim.Tests.Common.Setup IRegionModule godsModule = new GodsModule(); godsModule.Initialise(testScene, new IniConfigSource()); testScene.AddModule(godsModule.Name, godsModule); - realServices = realServices.ToLower(); LocalAssetServicesConnector assetService = StartAssetService(testScene); StartAuthenticationService(testScene); From 40bf417da7705711f33c64b82611203ff2a0adad Mon Sep 17 00:00:00 2001 From: BlueWall Date: Wed, 13 Apr 2011 16:10:18 -0400 Subject: [PATCH 120/138] Add ColladaMesh switch --- .../CoreModules/Avatar/Assets/GetMeshModule.cs | 13 +++++++++++-- .../NewFileAgentInventoryVariablePriceModule.cs | 11 ++++++++++- bin/OpenSimDefaults.ini | 6 +++++- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs b/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs index 878242a447..d2278bc3de 100644 --- a/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs @@ -54,6 +54,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets private Scene m_scene; private IAssetService m_assetService; + private bool m_enabled = true; #region IRegionModuleBase Members @@ -65,7 +66,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets public void Initialise(IConfigSource source) { - + IConfig startupConfig = source.Configs["Startup"]; + if (startupConfig == null) + return; + + if (!startupConfig.GetBoolean("ColladaMesh",true)) + m_enabled = false; } public void AddRegion(Scene pScene) @@ -101,16 +107,19 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets public void RegisterCaps(UUID agentID, Caps caps) { + if(!m_enabled) + return; + UUID capID = UUID.Random(); // m_log.Info("[GETMESH]: /CAPS/" + capID); + caps.RegisterHandler("GetMesh", new RestHTTPHandler("GET", "/CAPS/" + capID, delegate(Hashtable m_dhttpMethod) { return ProcessGetMesh(m_dhttpMethod, agentID, caps); })); - } #endregion diff --git a/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs b/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs index 4a42c938d5..fb07cc9ca0 100644 --- a/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs @@ -56,6 +56,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets private Scene m_scene; // private IAssetService m_assetService; private bool m_dumpAssetsToFile = false; + private bool m_enabled = true; #region IRegionModuleBase Members @@ -67,7 +68,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets public void Initialise(IConfigSource source) { - + IConfig startupConfig = source.Configs["Startup"]; + if (startupConfig == null) + return; + + if (!startupConfig.GetBoolean("ColladaMesh",true)) + m_enabled = false; } public void AddRegion(Scene pScene) @@ -103,6 +109,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets public void RegisterCaps(UUID agentID, Caps caps) { + if(!m_enabled) + return; + UUID capID = UUID.Random(); // m_log.Debug("[NEW FILE AGENT INVENTORY VARIABLE PRICE]: /CAPS/" + capID); diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index f857b8da63..107e859827 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -154,7 +154,11 @@ ; mesh, and use it for collisions. This is currently experimental code and enabling ; it may cause unexpected physics problems. ;UseMeshiesPhysicsMesh = false - + + ; enable / disable Collada mesh support + ; default is true + ; ColladaMesh = true + ; Choose one of the physics engines below ; OpenDynamicsEngine is by some distance the most developed physics engine ; basicphysics effectively does not model physics at all, making all objects phantom From 52d92303926c8be46af734707274e6d8ecd70602 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 15 Apr 2011 22:47:47 +0100 Subject: [PATCH 121/138] refactor: split out some rez code into a separate CreateItemForObject() method --- .../InventoryAccess/InventoryAccessModule.cs | 302 +++++++++--------- 1 file changed, 159 insertions(+), 143 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index c0946f4d52..0f2b9a68c2 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -274,154 +274,22 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess foreach (SceneObjectGroup objectGroup in objlist) objectGroup.AbsolutePosition = originalPositions[objectGroup.UUID]; - // Get the user info of the item destination - // - UUID userID = UUID.Zero; - - if (action == DeRezAction.Take || action == DeRezAction.TakeCopy || - action == DeRezAction.SaveToExistingUserInventoryItem) - { - // Take or take copy require a taker - // Saving changes requires a local user - // - if (remoteClient == null) - return UUID.Zero; - - userID = remoteClient.AgentId; - } - else - { - // All returns / deletes go to the object owner - // - userID = objlist[0].RootPart.OwnerID; - } - - if (userID == UUID.Zero) // Can't proceed - { + InventoryItemBase item = CreateItemForObject(action, remoteClient, objlist[0], folderID); + if (item == null) return UUID.Zero; - } - - // If we're returning someone's item, it goes back to the - // owner's Lost And Found folder. - // Delete is treated like return in this case - // Deleting your own items makes them go to trash - // - - InventoryFolderBase folder = null; - InventoryItemBase item = null; - - if (DeRezAction.SaveToExistingUserInventoryItem == action) + + // Can't know creator is the same, so null it in inventory + if (objlist.Count > 1) { - item = new InventoryItemBase(objlist[0].RootPart.FromUserInventoryItemID, userID); - item = m_Scene.InventoryService.GetItem(item); - - //item = userInfo.RootFolder.FindItem( - // objectGroup.RootPart.FromUserInventoryItemID); - - if (null == item) - { - m_log.DebugFormat( - "[AGENT INVENTORY]: Object {0} {1} scheduled for save to inventory has already been deleted.", - objlist[0].Name, objlist[0].UUID); - return UUID.Zero; - } + item.CreatorId = UUID.Zero.ToString(); + item.Flags = (uint)InventoryItemFlags.ObjectHasMultipleItems; } else { - // Folder magic - // - if (action == DeRezAction.Delete) - { - // Deleting someone else's item - // - if (remoteClient == null || - objlist[0].OwnerID != remoteClient.AgentId) - { - - folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.LostAndFoundFolder); - } - else - { - folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.TrashFolder); - } - } - else if (action == DeRezAction.Return) - { - - // Dump to lost + found unconditionally - // - folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.LostAndFoundFolder); - } - - if (folderID == UUID.Zero && folder == null) - { - if (action == DeRezAction.Delete) - { - // Deletes go to trash by default - // - folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.TrashFolder); - } - else - { - if (remoteClient == null || - objlist[0].OwnerID != remoteClient.AgentId) - { - // Taking copy of another person's item. Take to - // Objects folder. - folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.Object); - } - else - { - // Catch all. Use lost & found - // - - folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.LostAndFoundFolder); - } - } - } - - // Override and put into where it came from, if it came - // from anywhere in inventory - // - if (action == DeRezAction.Take || action == DeRezAction.TakeCopy) - { - if (objlist[0].RootPart.FromFolderID != UUID.Zero) - { - InventoryFolderBase f = new InventoryFolderBase(objlist[0].RootPart.FromFolderID, userID); - folder = m_Scene.InventoryService.GetFolder(f); - } - } - - if (folder == null) // None of the above - { - folder = new InventoryFolderBase(folderID); - - if (folder == null) // Nowhere to put it - { - return UUID.Zero; - } - } - - item = new InventoryItemBase(); - // Can't know creator is the same, so null it in inventory - if (objlist.Count > 1) - item.CreatorId = UUID.Zero.ToString(); - else - item.CreatorId = objlist[0].RootPart.CreatorID.ToString(); - item.ID = UUID.Random(); - item.InvType = (int)InventoryType.Object; - item.Folder = folder.ID; - item.Owner = userID; - if (objlist.Count > 1) - { - item.Flags = (uint)InventoryItemFlags.ObjectHasMultipleItems; - } - else - { - item.SaleType = objlist[0].RootPart.ObjectSaleType; - item.SalePrice = objlist[0].RootPart.SalePrice; - } - } + item.CreatorId = objlist[0].RootPart.CreatorID.ToString(); + item.SaleType = objlist[0].RootPart.ObjectSaleType; + item.SalePrice = objlist[0].RootPart.SalePrice; + } AssetBase asset = CreateAsset( objlist[0].GetPartName(objlist[0].RootPart.LocalId), @@ -505,8 +373,156 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess } } } + return assetID; } + + /// + /// Create an item using details for the given scene object. + /// + /// + /// + /// + /// + /// + protected InventoryItemBase CreateItemForObject( + DeRezAction action, IClientAPI remoteClient, SceneObjectGroup so, UUID folderID) + { + // Get the user info of the item destination + // + UUID userID = UUID.Zero; + + if (action == DeRezAction.Take || action == DeRezAction.TakeCopy || + action == DeRezAction.SaveToExistingUserInventoryItem) + { + // Take or take copy require a taker + // Saving changes requires a local user + // + if (remoteClient == null) + return null; + + userID = remoteClient.AgentId; + } + else + { + // All returns / deletes go to the object owner + // + userID = so.RootPart.OwnerID; + } + + if (userID == UUID.Zero) // Can't proceed + { + return null; + } + + // If we're returning someone's item, it goes back to the + // owner's Lost And Found folder. + // Delete is treated like return in this case + // Deleting your own items makes them go to trash + // + + InventoryFolderBase folder = null; + InventoryItemBase item = null; + + if (DeRezAction.SaveToExistingUserInventoryItem == action) + { + item = new InventoryItemBase(so.RootPart.FromUserInventoryItemID, userID); + item = m_Scene.InventoryService.GetItem(item); + + //item = userInfo.RootFolder.FindItem( + // objectGroup.RootPart.FromUserInventoryItemID); + + if (null == item) + { + m_log.DebugFormat( + "[AGENT INVENTORY]: Object {0} {1} scheduled for save to inventory has already been deleted.", + so.Name, so.UUID); + + return null; + } + } + else + { + // Folder magic + // + if (action == DeRezAction.Delete) + { + // Deleting someone else's item + // + if (remoteClient == null || + so.OwnerID != remoteClient.AgentId) + { + folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.LostAndFoundFolder); + } + else + { + folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.TrashFolder); + } + } + else if (action == DeRezAction.Return) + { + // Dump to lost + found unconditionally + // + folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.LostAndFoundFolder); + } + + if (folderID == UUID.Zero && folder == null) + { + if (action == DeRezAction.Delete) + { + // Deletes go to trash by default + // + folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.TrashFolder); + } + else + { + if (remoteClient == null || so.OwnerID != remoteClient.AgentId) + { + // Taking copy of another person's item. Take to + // Objects folder. + folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.Object); + } + else + { + // Catch all. Use lost & found + // + + folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.LostAndFoundFolder); + } + } + } + + // Override and put into where it came from, if it came + // from anywhere in inventory + // + if (action == DeRezAction.Take || action == DeRezAction.TakeCopy) + { + if (so.RootPart.FromFolderID != UUID.Zero) + { + InventoryFolderBase f = new InventoryFolderBase(so.RootPart.FromFolderID, userID); + folder = m_Scene.InventoryService.GetFolder(f); + } + } + + if (folder == null) // None of the above + { + folder = new InventoryFolderBase(folderID); + + if (folder == null) // Nowhere to put it + { + return null; + } + } + + item = new InventoryItemBase(); + item.ID = UUID.Random(); + item.InvType = (int)InventoryType.Object; + item.Folder = folder.ID; + item.Owner = userID; + } + + return item; + } /// /// Rez an object into the scene from the user's inventory From 9c7f14bf366eaa113ca7a89d3b40a42529e7726e Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 15 Apr 2011 23:07:23 +0100 Subject: [PATCH 122/138] minor: remove a small amount of code duplication --- .../Framework/InventoryAccess/InventoryAccessModule.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 0f2b9a68c2..5d1902502f 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -298,17 +298,16 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess Utils.StringToBytes(itemXml), objlist[0].OwnerID.ToString()); m_Scene.AssetService.Store(asset); - assetID = asset.FullID; + + item.AssetID = asset.FullID; + assetID = asset.FullID; if (DeRezAction.SaveToExistingUserInventoryItem == action) { - item.AssetID = asset.FullID; m_Scene.InventoryService.UpdateItem(item); } else { - item.AssetID = asset.FullID; - uint effectivePerms = (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify | PermissionMask.Move) | 7; foreach (SceneObjectGroup grp in objlist) effectivePerms &= grp.GetEffectivePermissions(); From fc365f2a31d46b9c6517159330c7f6953eb60e9f Mon Sep 17 00:00:00 2001 From: BlueWall Date: Fri, 15 Apr 2011 18:23:37 -0400 Subject: [PATCH 123/138] Thanks Snoopy for a patch that allows setting of perms on items given to new avatars --- .../RemoteController/RemoteAdminPlugin.cs | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 1b4d1ea9f9..c6b34f9f20 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs @@ -1587,6 +1587,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController { InventoryItemBase destinationItem = new InventoryItemBase(UUID.Random(), destination); destinationItem.Name = item.Name; + destinationItem.Owner = destination; destinationItem.Description = item.Description; destinationItem.InvType = item.InvType; destinationItem.CreatorId = item.CreatorId; @@ -1606,6 +1607,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController destinationItem.Flags = item.Flags; destinationItem.CreationDate = item.CreationDate; destinationItem.Folder = destinationFolder.ID; + ApplyNextOwnerPermissions(destinationItem); m_application.SceneManager.CurrentOrFirstScene.AddInventoryItem(destinationItem); m_log.DebugFormat("[RADMIN]: Added item {0} to folder {1}", destinationItem.ID, destinationFolder.ID); @@ -1640,6 +1642,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController { InventoryItemBase destinationItem = new InventoryItemBase(UUID.Random(), destination); destinationItem.Name = item.Name; + destinationItem.Owner = destination; destinationItem.Description = item.Description; destinationItem.InvType = item.InvType; destinationItem.CreatorId = item.CreatorId; @@ -1659,6 +1662,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController destinationItem.Flags = item.Flags; destinationItem.CreationDate = item.CreationDate; destinationItem.Folder = destinationFolder.ID; + ApplyNextOwnerPermissions(destinationItem); m_application.SceneManager.CurrentOrFirstScene.AddInventoryItem(destinationItem); m_log.DebugFormat("[RADMIN]: Added item {0} to folder {1}", destinationItem.ID, destinationFolder.ID); @@ -1716,7 +1720,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController { destinationFolder = new InventoryFolderBase(); destinationFolder.ID = UUID.Random(); - destinationFolder.Name = assetType.ToString(); + if (assetType == AssetType.Clothing) { + destinationFolder.Name = "Clothing"; + } else { + destinationFolder.Name = "Body Parts"; + } destinationFolder.Owner = destination; destinationFolder.Type = (short)assetType; destinationFolder.ParentID = inventoryService.GetRootFolder(destination).ID; @@ -1748,6 +1756,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController { InventoryItemBase destinationItem = new InventoryItemBase(UUID.Random(), destination); destinationItem.Name = item.Name; + destinationItem.Owner = destination; destinationItem.Description = item.Description; destinationItem.InvType = item.InvType; destinationItem.CreatorId = item.CreatorId; @@ -1767,6 +1776,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController destinationItem.Flags = item.Flags; destinationItem.CreationDate = item.CreationDate; destinationItem.Folder = extraFolder.ID; + ApplyNextOwnerPermissions(destinationItem); m_application.SceneManager.CurrentOrFirstScene.AddInventoryItem(destinationItem); inventoryMap.Add(item.ID, destinationItem.ID); @@ -1783,6 +1793,29 @@ namespace OpenSim.ApplicationPlugins.RemoteController } } + /// + /// Apply next owner permissions. + /// + + private void ApplyNextOwnerPermissions(InventoryItemBase item) + { + if (item.InvType == (int)InventoryType.Object && (item.CurrentPermissions & 7) != 0) + { + if ((item.CurrentPermissions & ((uint)PermissionMask.Copy >> 13)) == 0) + item.CurrentPermissions &= ~(uint)PermissionMask.Copy; + if ((item.CurrentPermissions & ((uint)PermissionMask.Transfer >> 13)) == 0) + item.CurrentPermissions &= ~(uint)PermissionMask.Transfer; + if ((item.CurrentPermissions & ((uint)PermissionMask.Modify >> 13)) == 0) + item.CurrentPermissions &= ~(uint)PermissionMask.Modify; + } + item.CurrentPermissions &= item.NextPermissions; + item.BasePermissions &= item.NextPermissions; + item.EveryOnePermissions &= item.NextPermissions; + // item.OwnerChanged = true; + // item.PermsMask = 0; + // item.PermsGranter = UUID.Zero; + } + /// /// This method is called if a given model avatar name can not be found. If the external /// file has already been loaded once, then control returns immediately. If not, then it From 1dba671f45b691bcf024e9ffd5568e8a7ea2165c Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 15 Apr 2011 23:32:46 +0100 Subject: [PATCH 124/138] refactor: separate out code that adds permissions --- .../InventoryAccess/InventoryAccessModule.cs | 101 ++++++++++-------- 1 file changed, 59 insertions(+), 42 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 5d1902502f..8b68dbe64a 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -308,48 +308,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess } else { - uint effectivePerms = (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify | PermissionMask.Move) | 7; - foreach (SceneObjectGroup grp in objlist) - effectivePerms &= grp.GetEffectivePermissions(); - effectivePerms |= (uint)PermissionMask.Move; - - if (remoteClient != null && (remoteClient.AgentId != objlist[0].RootPart.OwnerID) && m_Scene.Permissions.PropagatePermissions()) - { - uint perms = effectivePerms; - uint nextPerms = (perms & 7) << 13; - if ((nextPerms & (uint)PermissionMask.Copy) == 0) - perms &= ~(uint)PermissionMask.Copy; - if ((nextPerms & (uint)PermissionMask.Transfer) == 0) - perms &= ~(uint)PermissionMask.Transfer; - if ((nextPerms & (uint)PermissionMask.Modify) == 0) - perms &= ~(uint)PermissionMask.Modify; - - item.BasePermissions = perms & objlist[0].RootPart.NextOwnerMask; - item.CurrentPermissions = item.BasePermissions; - item.NextPermissions = perms & objlist[0].RootPart.NextOwnerMask; - item.EveryOnePermissions = objlist[0].RootPart.EveryoneMask & objlist[0].RootPart.NextOwnerMask; - item.GroupPermissions = objlist[0].RootPart.GroupMask & objlist[0].RootPart.NextOwnerMask; - - // Magic number badness. Maybe this deserves an enum. - // bit 4 (16) is the "Slam" bit, it means treat as passed - // and apply next owner perms on rez - item.CurrentPermissions |= 16; // Slam! - } - else - { - item.BasePermissions = effectivePerms; - item.CurrentPermissions = effectivePerms; - item.NextPermissions = objlist[0].RootPart.NextOwnerMask & effectivePerms; - item.EveryOnePermissions = objlist[0].RootPart.EveryoneMask & effectivePerms; - item.GroupPermissions = objlist[0].RootPart.GroupMask & effectivePerms; - - item.CurrentPermissions &= - ((uint)PermissionMask.Copy | - (uint)PermissionMask.Transfer | - (uint)PermissionMask.Modify | - (uint)PermissionMask.Move | - 7); // Preserve folded permissions - } + AddPermissions(item, objlist[0], objlist, remoteClient); item.CreationDate = Util.UnixTimeSinceEpoch(); item.Description = asset.Description; @@ -376,6 +335,64 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess return assetID; } + /// + /// Add relevant permissions for an object to the item. + /// + /// + /// + /// + /// + /// + protected InventoryItemBase AddPermissions( + InventoryItemBase item, SceneObjectGroup so, List objsForEffectivePermissions, + IClientAPI remoteClient) + { + uint effectivePerms = (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify | PermissionMask.Move) | 7; + foreach (SceneObjectGroup grp in objsForEffectivePermissions) + effectivePerms &= grp.GetEffectivePermissions(); + effectivePerms |= (uint)PermissionMask.Move; + + if (remoteClient != null && (remoteClient.AgentId != so.RootPart.OwnerID) && m_Scene.Permissions.PropagatePermissions()) + { + uint perms = effectivePerms; + uint nextPerms = (perms & 7) << 13; + if ((nextPerms & (uint)PermissionMask.Copy) == 0) + perms &= ~(uint)PermissionMask.Copy; + if ((nextPerms & (uint)PermissionMask.Transfer) == 0) + perms &= ~(uint)PermissionMask.Transfer; + if ((nextPerms & (uint)PermissionMask.Modify) == 0) + perms &= ~(uint)PermissionMask.Modify; + + item.BasePermissions = perms & so.RootPart.NextOwnerMask; + item.CurrentPermissions = item.BasePermissions; + item.NextPermissions = perms & so.RootPart.NextOwnerMask; + item.EveryOnePermissions = so.RootPart.EveryoneMask & so.RootPart.NextOwnerMask; + item.GroupPermissions = so.RootPart.GroupMask & so.RootPart.NextOwnerMask; + + // Magic number badness. Maybe this deserves an enum. + // bit 4 (16) is the "Slam" bit, it means treat as passed + // and apply next owner perms on rez + item.CurrentPermissions |= 16; // Slam! + } + else + { + item.BasePermissions = effectivePerms; + item.CurrentPermissions = effectivePerms; + item.NextPermissions = so.RootPart.NextOwnerMask & effectivePerms; + item.EveryOnePermissions = so.RootPart.EveryoneMask & effectivePerms; + item.GroupPermissions = so.RootPart.GroupMask & effectivePerms; + + item.CurrentPermissions &= + ((uint)PermissionMask.Copy | + (uint)PermissionMask.Transfer | + (uint)PermissionMask.Modify | + (uint)PermissionMask.Move | + 7); // Preserve folded permissions + } + + return item; + } + /// /// Create an item using details for the given scene object. /// From ed74be65995afe192ce03177325c98b0100ab157 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 15 Apr 2011 23:54:30 +0100 Subject: [PATCH 125/138] Make remote admin error messages more helpful on windows. Also, make log messages conform more with convention. --- .../RemoteController/RemoteAdminPlugin.cs | 161 ++++++++---------- 1 file changed, 73 insertions(+), 88 deletions(-) diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index c6b34f9f20..dc4309fbe2 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs @@ -94,7 +94,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController public void Initialise() { - m_log.Info("[RADMIN]: " + Name + " cannot be default-initialized!"); + m_log.Error("[RADMIN]: " + Name + " cannot be default-initialized!"); throw new PluginNotInitialisedException(Name); } @@ -111,7 +111,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController else { m_config = m_configSource.Configs["RemoteAdmin"]; - m_log.Info("[RADMIN]: Remote Admin Plugin Enabled"); + m_log.Debug("[RADMIN]: Remote Admin Plugin Enabled"); m_requiredPassword = m_config.GetString("access_password", String.Empty); int port = m_config.GetInt("port", 0); @@ -230,8 +230,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.ErrorFormat("[RADMIN]: Restart region: failed: {0}", e.Message); - m_log.DebugFormat("[RADMIN]: Restart region: failed: {0}", e.ToString()); + m_log.ErrorFormat("[RADMIN]: Restart region: failed: {0} {1}", e.Message, e.StackTrace); responseData["accepted"] = false; responseData["success"] = false; responseData["rebooting"] = false; @@ -277,8 +276,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.ErrorFormat("[RADMIN]: Broadcasting: failed: {0}", e.Message); - m_log.DebugFormat("[RADMIN]: Broadcasting: failed: {0}", e.ToString()); + m_log.ErrorFormat("[RADMIN]: Broadcasting: failed: {0}", e.Message, e.StackTrace); responseData["accepted"] = false; responseData["success"] = false; @@ -301,7 +299,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController { Hashtable requestData = (Hashtable) request.Params[0]; - m_log.DebugFormat("[RADMIN]: Load Terrain: XmlRpc {0}", request.ToString()); + m_log.DebugFormat("[RADMIN]: Load Terrain: XmlRpc {0}", request); // foreach (string k in requestData.Keys) // { // m_log.DebugFormat("[RADMIN]: Load Terrain: XmlRpc {0}: >{1}< {2}", @@ -348,8 +346,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.ErrorFormat("[RADMIN]: Terrain Loading: failed: {0}", e.Message); - m_log.DebugFormat("[RADMIN]: Terrain Loading: failed: {0}", e.ToString()); + m_log.ErrorFormat("[RADMIN]: Terrain Loading: failed: {0} {1}", e.Message, e.StackTrace); responseData["success"] = false; responseData["error"] = e.Message; @@ -417,14 +414,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.ErrorFormat("[RADMIN] Shutdown: failed: {0}", e.Message); - m_log.DebugFormat("[RADMIN] Shutdown: failed: {0}", e.ToString()); + m_log.ErrorFormat("[RADMIN]: Shutdown: failed: {0} {1}", e.Message, e.StackTrace); responseData["accepted"] = false; responseData["error"] = e.Message; response.Value = responseData; } + m_log.Info("[RADMIN]: Shutdown Administrator Request complete"); return response; } @@ -725,8 +722,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.ErrorFormat("[RADMIN] CreateRegion: failed {0}", e.Message); - m_log.DebugFormat("[RADMIN] CreateRegion: failed {0}", e.ToString()); + m_log.ErrorFormat("[RADMIN] CreateRegion: failed {0} {1}", e.Message, e.StackTrace); responseData["success"] = false; responseData["error"] = e.Message; @@ -792,8 +788,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.ErrorFormat("[RADMIN] DeleteRegion: failed {0}", e.Message); - m_log.DebugFormat("[RADMIN] DeleteRegion: failed {0}", e.ToString()); + m_log.ErrorFormat("[RADMIN] DeleteRegion: failed {0} {1}", e.Message, e.StackTrace); responseData["success"] = false; responseData["error"] = e.Message; @@ -884,8 +879,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.ErrorFormat("[RADMIN] CloseRegion: failed {0}", e.Message); - m_log.DebugFormat("[RADMIN] CloseRegion: failed {0}", e.ToString()); + m_log.ErrorFormat("[RADMIN]: CloseRegion: failed {0} {1}", e.Message, e.StackTrace); responseData["success"] = false; responseData["error"] = e.Message; @@ -982,8 +976,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.ErrorFormat("[RADMIN] ModifyRegion: failed {0}", e.Message); - m_log.DebugFormat("[RADMIN] ModifyRegion: failed {0}", e.ToString()); + m_log.ErrorFormat("[RADMIN] ModifyRegion: failed {0} {1}", e.Message, e.StackTrace); responseData["success"] = false; responseData["error"] = e.Message; @@ -1106,8 +1099,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.ErrorFormat("[RADMIN] CreateUser: failed: {0}", e.Message); - m_log.DebugFormat("[RADMIN] CreateUser: failed: {0}", e.ToString()); + m_log.ErrorFormat("[RADMIN]: CreateUser: failed: {0} {1}", e.Message, e.StackTrace); responseData["success"] = false; responseData["avatar_uuid"] = UUID.Zero.ToString(); @@ -1198,8 +1190,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.ErrorFormat("[RADMIN] UserExists: failed: {0}", e.Message); - m_log.DebugFormat("[RADMIN] UserExists: failed: {0}", e.ToString()); + m_log.ErrorFormat("[RADMIN]: UserExists: failed: {0} {1}", e.Message, e.StackTrace); responseData["success"] = false; responseData["error"] = e.Message; @@ -1372,9 +1363,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - - m_log.ErrorFormat("[RADMIN] UpdateUserAccount: failed: {0}", e.Message); - m_log.DebugFormat("[RADMIN] UpdateUserAccount: failed: {0}", e.ToString()); + m_log.ErrorFormat("[RADMIN] UpdateUserAccount: failed: {0} {1}", e.Message, e.StackTrace); responseData["success"] = false; responseData["avatar_uuid"] = UUID.Zero.ToString(); @@ -1382,6 +1371,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController response.Value = responseData; } + m_log.Info("[RADMIN]: UpdateUserAccount: request complete"); return response; } @@ -1397,7 +1387,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController private void UpdateUserAppearance(Hashtable responseData, Hashtable requestData, UUID userid) { - m_log.DebugFormat("[RADMIN] updateUserAppearance"); + m_log.DebugFormat("[RADMIN]: updateUserAppearance"); string defaultMale = m_config.GetString("default_male", "Default Male"); string defaultFemale = m_config.GetString("default_female", "Default Female"); @@ -1437,16 +1427,16 @@ namespace OpenSim.ApplicationPlugins.RemoteController if (String.IsNullOrEmpty(model)) { - m_log.DebugFormat("[RADMIN] Appearance update not requested"); + m_log.DebugFormat("[RADMIN]: Appearance update not requested"); return; } - m_log.DebugFormat("[RADMIN] Setting appearance for avatar {0}, using model <{1}>", userid, model); + m_log.DebugFormat("[RADMIN]: Setting appearance for avatar {0}, using model <{1}>", userid, model); string[] modelSpecifiers = model.Split(); if (modelSpecifiers.Length != 2) { - m_log.WarnFormat("[RADMIN] User appearance not set for {0}. Invalid model name : <{1}>", userid, model); + m_log.WarnFormat("[RADMIN]: User appearance not set for {0}. Invalid model name : <{1}>", userid, model); // modelSpecifiers = dmodel.Split(); return; } @@ -1457,7 +1447,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController if (modelProfile == null) { - m_log.WarnFormat("[RADMIN] Requested model ({0}) not found. Appearance unchanged", model); + m_log.WarnFormat("[RADMIN]: Requested model ({0}) not found. Appearance unchanged", model); return; } @@ -1467,7 +1457,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController EstablishAppearance(userid, modelProfile.PrincipalID); - m_log.DebugFormat("[RADMIN] Finished setting appearance for avatar {0}, using model {1}", + m_log.DebugFormat("[RADMIN]: Finished setting appearance for avatar {0}, using model {1}", userid, model); } @@ -1479,7 +1469,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController private void EstablishAppearance(UUID destination, UUID source) { - m_log.DebugFormat("[RADMIN] Initializing inventory for {0} from {1}", destination, source); + m_log.DebugFormat("[RADMIN]: Initializing inventory for {0} from {1}", destination, source); Scene scene = m_application.SceneManager.CurrentOrFirstScene; // If the model has no associated appearance we're done. @@ -1501,7 +1491,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.WarnFormat("[RADMIN] Error transferring appearance for {0} : {1}", + m_log.WarnFormat("[RADMIN]: Error transferring appearance for {0} : {1}", destination, e.Message); } @@ -1532,7 +1522,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.WarnFormat("[RADMIN] Error transferring appearance for {0} : {1}", + m_log.WarnFormat("[RADMIN]: Error transferring appearance for {0} : {1}", destination, e.Message); } @@ -1567,7 +1557,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController destinationFolder.ParentID = inventoryService.GetRootFolder(destination).ID; destinationFolder.Version = 1; inventoryService.AddFolder(destinationFolder); // store base record - m_log.ErrorFormat("[RADMIN] Created folder for destination {0}", source); + m_log.ErrorFormat("[RADMIN]: Created folder for destination {0}", source); } // Wearables @@ -1730,7 +1720,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController destinationFolder.ParentID = inventoryService.GetRootFolder(destination).ID; destinationFolder.Version = 1; inventoryService.AddFolder(destinationFolder); // store base record - m_log.ErrorFormat("[RADMIN] Created folder for destination {0}", source); + m_log.ErrorFormat("[RADMIN]: Created folder for destination {0}", source); } InventoryFolderBase extraFolder; @@ -1748,7 +1738,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController extraFolder.ParentID = destinationFolder.ID; inventoryService.AddFolder(extraFolder); - m_log.DebugFormat("[RADMIN] Added folder {0} to folder {1}", extraFolder.ID, sourceFolder.ID); + m_log.DebugFormat("[RADMIN]: Added folder {0} to folder {1}", extraFolder.ID, sourceFolder.ID); List items = inventoryService.GetFolderContent(source, folder.ID).Items; @@ -1825,7 +1815,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController /// indicate which outfit is the default, and this outfit will be automatically worn. The /// other outfits are provided to allow "real" avatars a way to easily change their outfits. /// - private bool CreateDefaultAvatars() { // Only load once @@ -1834,7 +1823,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController return false; } - m_log.DebugFormat("[RADMIN] Creating default avatar entries"); + m_log.DebugFormat("[RADMIN]: Creating default avatar entries"); m_defaultAvatarsLoaded = true; @@ -1890,7 +1879,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController foreach (XmlElement avatar in avatars) { - m_log.DebugFormat("[RADMIN] Loading appearance for {0}, gender = {1}", + m_log.DebugFormat("[RADMIN]: Loading appearance for {0}, gender = {1}", GetStringAttribute(avatar,"name","?"), GetStringAttribute(avatar,"gender","?")); // Create the user identified by the avatar entry @@ -1912,7 +1901,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController account = CreateUser(scopeID, names[0], names[1], password, email); if (null == account) { - m_log.ErrorFormat("[RADMIN] Avatar {0} {1} was not created", names[0], names[1]); + m_log.ErrorFormat("[RADMIN]: Avatar {0} {1} was not created", names[0], names[1]); return false; } } @@ -1930,12 +1919,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController ID = account.PrincipalID; - m_log.DebugFormat("[RADMIN] User {0}[{1}] created or retrieved", name, ID); + m_log.DebugFormat("[RADMIN]: User {0}[{1}] created or retrieved", name, ID); include = true; } catch (Exception e) { - m_log.DebugFormat("[RADMIN] Error creating user {0} : {1}", name, e.Message); + m_log.DebugFormat("[RADMIN]: Error creating user {0} : {1}", name, e.Message); include = false; } @@ -1975,7 +1964,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController clothingFolder.ParentID = inventoryService.GetRootFolder(ID).ID; clothingFolder.Version = 1; inventoryService.AddFolder(clothingFolder); // store base record - m_log.ErrorFormat("[RADMIN] Created clothing folder for {0}/{1}", name, ID); + m_log.ErrorFormat("[RADMIN]: Created clothing folder for {0}/{1}", name, ID); } // OK, now we have an inventory for the user, read in the outfits from the @@ -1988,7 +1977,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController foreach (XmlElement outfit in outfits) { - m_log.DebugFormat("[RADMIN] Loading outfit {0} for {1}", + m_log.DebugFormat("[RADMIN]: Loading outfit {0} for {1}", GetStringAttribute(outfit,"name","?"), GetStringAttribute(avatar,"name","?")); outfitName = GetStringAttribute(outfit,"name",""); @@ -2012,7 +2001,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController // Otherwise, we must create the folder. if (extraFolder == null) { - m_log.DebugFormat("[RADMIN] Creating outfit folder {0} for {1}", outfitName, name); + m_log.DebugFormat("[RADMIN]: Creating outfit folder {0} for {1}", outfitName, name); extraFolder = new InventoryFolderBase(); extraFolder.ID = UUID.Random(); extraFolder.Name = outfitName; @@ -2021,7 +2010,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController extraFolder.Version = 1; extraFolder.ParentID = clothingFolder.ID; inventoryService.AddFolder(extraFolder); - m_log.DebugFormat("[RADMIN] Adding outfile folder {0} to folder {1}", extraFolder.ID, clothingFolder.ID); + m_log.DebugFormat("[RADMIN]: Adding outfile folder {0} to folder {1}", extraFolder.ID, clothingFolder.ID); } // Now get the pieces that make up the outfit @@ -2036,7 +2025,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController switch (child.Name) { case "Permissions" : - m_log.DebugFormat("[RADMIN] Permissions specified"); + m_log.DebugFormat("[RADMIN]: Permissions specified"); perms = child; break; case "Asset" : @@ -2086,7 +2075,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController inventoryItem.Folder = extraFolder.ID; // Parent folder m_application.SceneManager.CurrentOrFirstScene.AddInventoryItem(inventoryItem); - m_log.DebugFormat("[RADMIN] Added item {0} to folder {1}", inventoryItem.ID, extraFolder.ID); + m_log.DebugFormat("[RADMIN]: Added item {0} to folder {1}", inventoryItem.ID, extraFolder.ID); } // Attach item, if attachpoint is specified @@ -2094,7 +2083,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController if (attachpoint != 0) { avatarAppearance.SetAttachment(attachpoint, inventoryItem.ID, inventoryItem.AssetID); - m_log.DebugFormat("[RADMIN] Attached {0}", inventoryItem.ID); + m_log.DebugFormat("[RADMIN]: Attached {0}", inventoryItem.ID); } // Record whether or not the item is to be initially worn @@ -2107,32 +2096,32 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.WarnFormat("[RADMIN] Error wearing item {0} : {1}", inventoryItem.ID, e.Message); + m_log.WarnFormat("[RADMIN]: Error wearing item {0} : {1}", inventoryItem.ID, e.Message); } } // foreach item in outfit - m_log.DebugFormat("[RADMIN] Outfit {0} load completed", outfitName); + m_log.DebugFormat("[RADMIN]: Outfit {0} load completed", outfitName); } // foreach outfit - m_log.DebugFormat("[RADMIN] Inventory update complete for {0}", name); + m_log.DebugFormat("[RADMIN]: Inventory update complete for {0}", name); scene.AvatarService.SetAppearance(ID, avatarAppearance); } catch (Exception e) { - m_log.WarnFormat("[RADMIN] Inventory processing incomplete for user {0} : {1}", + m_log.WarnFormat("[RADMIN]: Inventory processing incomplete for user {0} : {1}", name, e.Message); } } // End of include } - m_log.DebugFormat("[RADMIN] Default avatar loading complete"); + m_log.DebugFormat("[RADMIN]: Default avatar loading complete"); } else { - m_log.DebugFormat("[RADMIN] No default avatar information available"); + m_log.DebugFormat("[RADMIN]: No default avatar information available"); return false; } } catch (Exception e) { - m_log.WarnFormat("[RADMIN] Exception whilst loading default avatars ; {0}", e.Message); + m_log.WarnFormat("[RADMIN]: Exception whilst loading default avatars ; {0}", e.Message); return false; } @@ -2227,8 +2216,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.InfoFormat("[RADMIN] LoadOAR: {0}", e.Message); - m_log.DebugFormat("[RADMIN] LoadOAR: {0}", e.ToString()); + m_log.ErrorFormat("[RADMIN]: LoadOAR: {0} {1}", e.Message, e.StackTrace); responseData["loaded"] = false; responseData["error"] = e.Message; @@ -2333,8 +2321,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.InfoFormat("[RADMIN] SaveOAR: {0}", e.Message); - m_log.DebugFormat("[RADMIN] SaveOAR: {0}", e.ToString()); + m_log.ErrorFormat("[RADMIN]: SaveOAR: {0} {1}", e.Message, e.StackTrace); responseData["saved"] = false; responseData["error"] = e.Message; @@ -2348,7 +2335,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController private void RemoteAdminOarSaveCompleted(Guid uuid, string name) { - m_log.DebugFormat("[RADMIN] File processing complete for {0}", name); + m_log.DebugFormat("[RADMIN]: File processing complete for {0}", name); lock (m_saveOarLock) Monitor.Pulse(m_saveOarLock); } @@ -2386,14 +2373,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController UUID region_uuid = (UUID) (string) requestData["region_uuid"]; if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); - m_log.InfoFormat("[RADMIN] Switched to region {0}", region_uuid.ToString()); + m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); } else if (requestData.Contains("region_name")) { string region_name = (string) requestData["region_name"]; if (!m_application.SceneManager.TrySetCurrentScene(region_name)) throw new Exception(String.Format("failed to switch to region {0}", region_name)); - m_log.InfoFormat("[RADMIN] Switched to region {0}", region_name); + m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); } else throw new Exception("neither region_name nor region_uuid given"); @@ -2424,8 +2411,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.InfoFormat("[RADMIN] LoadXml: {0}", e.Message); - m_log.DebugFormat("[RADMIN] LoadXml: {0}", e.ToString()); + m_log.ErrorFormat("[RADMIN] LoadXml: {0} {1}", e.Message, e.StackTrace); responseData["loaded"] = false; responseData["switched"] = false; @@ -2471,14 +2457,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController UUID region_uuid = (UUID) (string) requestData["region_uuid"]; if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); - m_log.InfoFormat("[RADMIN] Switched to region {0}", region_uuid.ToString()); + m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); } else if (requestData.Contains("region_name")) { string region_name = (string) requestData["region_name"]; if (!m_application.SceneManager.TrySetCurrentScene(region_name)) throw new Exception(String.Format("failed to switch to region {0}", region_name)); - m_log.InfoFormat("[RADMIN] Switched to region {0}", region_name); + m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); } else throw new Exception("neither region_name nor region_uuid given"); @@ -2510,8 +2496,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.InfoFormat("[RADMIN] SaveXml: {0}", e.Message); - m_log.DebugFormat("[RADMIN] SaveXml: {0}", e.ToString()); + m_log.ErrorFormat("[RADMIN]: SaveXml: {0} {1}", e.Message, e.StackTrace); responseData["saved"] = false; responseData["switched"] = false; @@ -2550,14 +2535,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController UUID region_uuid = (UUID) (string) requestData["region_uuid"]; if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); - m_log.InfoFormat("[RADMIN] Switched to region {0}", region_uuid.ToString()); + m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); } else if (requestData.Contains("region_name")) { string region_name = (string) requestData["region_name"]; if (!m_application.SceneManager.TrySetCurrentScene(region_name)) throw new Exception(String.Format("failed to switch to region {0}", region_name)); - m_log.InfoFormat("[RADMIN] Switched to region {0}", region_name); + m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); } else throw new Exception("neither region_name nor region_uuid given"); @@ -2569,7 +2554,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.InfoFormat("[RADMIN] RegionQuery: {0}", e.Message); + m_log.InfoFormat("[RADMIN]: RegionQuery: {0}", e.Message); responseData["success"] = false; responseData["error"] = e.Message; @@ -2610,7 +2595,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.InfoFormat("[RADMIN] ConsoleCommand: {0}", e.Message); + m_log.InfoFormat("[RADMIN]: ConsoleCommand: {0}", e.Message); responseData["success"] = false; responseData["error"] = e.Message; @@ -2647,14 +2632,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController UUID region_uuid = (UUID) (string) requestData["region_uuid"]; if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); - m_log.InfoFormat("[RADMIN] Switched to region {0}", region_uuid.ToString()); + m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); } else if (requestData.Contains("region_name")) { string region_name = (string) requestData["region_name"]; if (!m_application.SceneManager.TrySetCurrentScene(region_name)) throw new Exception(String.Format("failed to switch to region {0}", region_name)); - m_log.InfoFormat("[RADMIN] Switched to region {0}", region_name); + m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); } else throw new Exception("neither region_name nor region_uuid given"); @@ -2665,7 +2650,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.InfoFormat("[RADMIN] Access List Clear Request: {0}", e.Message); + m_log.ErrorFormat("[RADMIN]: Access List Clear Request: {0} {1}", e.Message, e.StackTrace); responseData["success"] = false; responseData["error"] = e.Message; @@ -2704,14 +2689,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController UUID region_uuid = (UUID) (string) requestData["region_uuid"]; if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); - m_log.InfoFormat("[RADMIN] Switched to region {0}", region_uuid.ToString()); + m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); } else if (requestData.Contains("region_name")) { string region_name = (string) requestData["region_name"]; if (!m_application.SceneManager.TrySetCurrentScene(region_name)) throw new Exception(String.Format("failed to switch to region {0}", region_name)); - m_log.InfoFormat("[RADMIN] Switched to region {0}", region_name); + m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); } else throw new Exception("neither region_name nor region_uuid given"); @@ -2731,7 +2716,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController if (account != null) { uuids.Add(account.PrincipalID); - m_log.DebugFormat("[RADMIN] adding \"{0}\" to ACL for \"{1}\"", name, scene.RegionInfo.RegionName); + m_log.DebugFormat("[RADMIN]: adding \"{0}\" to ACL for \"{1}\"", name, scene.RegionInfo.RegionName); } } List accessControlList = new List(scene.RegionInfo.EstateSettings.EstateAccess); @@ -2752,7 +2737,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.InfoFormat("[RADMIN] Access List Add Request: {0}", e.Message); + m_log.ErrorFormat("[RADMIN]: Access List Add Request: {0} {1}", e.Message, e.StackTrace); responseData["success"] = false; responseData["error"] = e.Message; @@ -2791,14 +2776,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController UUID region_uuid = (UUID) (string) requestData["region_uuid"]; if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); - m_log.InfoFormat("[RADMIN] Switched to region {0}", region_uuid.ToString()); + m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); } else if (requestData.Contains("region_name")) { string region_name = (string) requestData["region_name"]; if (!m_application.SceneManager.TrySetCurrentScene(region_name)) throw new Exception(String.Format("failed to switch to region {0}", region_name)); - m_log.InfoFormat("[RADMIN] Switched to region {0}", region_name); + m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); } else throw new Exception("neither region_name nor region_uuid given"); @@ -2839,7 +2824,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.InfoFormat("[RADMIN] Access List Remove Request: {0}", e.Message); + m_log.ErrorFormat("[RADMIN]: Access List Remove Request: {0} {1}", e.Message, e.StackTrace); responseData["success"] = false; responseData["error"] = e.Message; @@ -2878,14 +2863,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController UUID region_uuid = (UUID) (string) requestData["region_uuid"]; if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); - m_log.InfoFormat("[RADMIN] Switched to region {0}", region_uuid.ToString()); + m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); } else if (requestData.Contains("region_name")) { string region_name = (string) requestData["region_name"]; if (!m_application.SceneManager.TrySetCurrentScene(region_name)) throw new Exception(String.Format("failed to switch to region {0}", region_name)); - m_log.InfoFormat("[RADMIN] Switched to region {0}", region_name); + m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); } else throw new Exception("neither region_name nor region_uuid given"); @@ -2907,7 +2892,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { - m_log.InfoFormat("[RADMIN] Acces List List: {0}", e.Message); + m_log.ErrorFormat("[RADMIN]: Access List List: {0} {1}", e.Message, e.StackTrace); responseData["success"] = false; responseData["error"] = e.Message; From cd6dce11086a4e8a06257659c19eaa66d3b1a951 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Fri, 15 Apr 2011 16:42:40 -0700 Subject: [PATCH 126/138] Fixes mantis #5431 -- coalesced objects in HG-enabled regions. Needs more testing to make sure HG inventory isn't broken by this (it shouldn't). --- .../HGInventoryAccessModule.cs | 27 +++---------------- .../InventoryAccess/InventoryAccessModule.cs | 10 ++++++- 2 files changed, 12 insertions(+), 25 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs index 4565d103ff..8c99983a95 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs @@ -129,35 +129,14 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess } /// - /// DeleteToInventory + /// Used in DeleteToInventory /// - public override UUID DeleteToInventory(DeRezAction action, UUID folderID, List objectGroups, IClientAPI remoteClient) + protected override void ExportAsset(UUID agentID, UUID assetID) { - UUID ret = UUID.Zero; - - // HACK: Only works for lists of length one. - // Intermediate version, just to make things compile - foreach (SceneObjectGroup g in objectGroups) - ret = DeleteToInventory(action, folderID, g, remoteClient); - - return ret; - } - - // DO NOT OVERRIDE THE BASE METHOD - public new virtual UUID DeleteToInventory(DeRezAction action, UUID folderID, - SceneObjectGroup objectGroup, IClientAPI remoteClient) - { - UUID assetID = base.DeleteToInventory(action, folderID, new List() {objectGroup}, remoteClient); - if (!assetID.Equals(UUID.Zero)) - { - if (remoteClient != null) - UploadInventoryItem(remoteClient.AgentId, assetID, "", 0); - } + UploadInventoryItem(agentID, assetID, "", 0); else m_log.Debug("[HGScene]: Scene.Inventory did not create asset"); - - return assetID; } /// diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 8b68dbe64a..a716326924 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -330,11 +330,19 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess } } } + + // This is a hook to do some per-asset post-processing for subclasses that need that + ExportAsset(remoteClient.AgentId, assetID); } return assetID; } - + + protected virtual void ExportAsset(UUID agentID, UUID assetID) + { + // nothing to do here + } + /// /// Add relevant permissions for an object to the item. /// From 3e0e1057acffa2c92a6f949cef0183193033d8c2 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Fri, 15 Apr 2011 16:44:53 -0700 Subject: [PATCH 127/138] Remove the call to remove tokens from the parent. Under heavy load this appears to cause problems with the system timer resolution. This caused a problem with tokens going into the root throttle as bursts leading to some starvation. Also changed EnqueueOutgoing to always queue a packet if there are already packets in the queue. Ensures consistent ordering of packet sends. --- OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs | 10 ++++++++++ OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs | 9 ++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index 5a69851b3c..7be8a0ae59 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs @@ -440,6 +440,16 @@ namespace OpenSim.Region.ClientStack.LindenUDP OpenSim.Framework.LocklessQueue queue = m_packetOutboxes[category]; TokenBucket bucket = m_throttleCategories[category]; + // Don't send this packet if there is already a packet waiting in the queue + // even if we have the tokens to send it, tokens should go to the already + // queued packets + if (queue.Count > 0) + { + queue.Enqueue(packet); + return true; + } + + if (!forceQueue && bucket.RemoveTokens(packet.Buffer.DataLength)) { // Enough tokens were removed from the bucket, the packet will not be queued diff --git a/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs b/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs index e4d59ff829..07b0a1df7a 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs @@ -255,11 +255,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP // If we have enough tokens then remove them and return if (m_tokenCount - amount >= 0) { - if (m_parent == null || m_parent.RemoveTokens(amount)) - { - m_tokenCount -= amount; - return true; - } + // we don't have to remove from the parent, the drip rate is already + // reflective of the drip rate limits in the parent + m_tokenCount -= amount; + return true; } return false; From 70084c5e3a34e681357baf5506bd0c8f9815049b Mon Sep 17 00:00:00 2001 From: Dan Lake Date: Sat, 16 Apr 2011 15:29:28 -0700 Subject: [PATCH 128/138] More descriptive debug msg for ServiceOSDRequest failures. --- OpenSim/Framework/WebUtil.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index 64cd014f5c..9d70f63189 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs @@ -222,8 +222,8 @@ namespace OpenSim.Framework m_log.InfoFormat("[WEB UTIL]: osd request <{0}> (URI:{1}, METHOD:{2}) took {3}ms overall, {4}ms writing", reqnum,url,method,tickdiff,tickdata); } - - m_log.WarnFormat("[WEB UTIL] <{0}> osd request failed: {1}",reqnum,errorMessage); + + m_log.WarnFormat("[WEB UTIL]: <{0}> osd request for {1}, method {2} FAILED: {3}", reqnum, url, method, errorMessage); return ErrorResponseMap(errorMessage); } From 03e725ad87916965ebcd8cb264f7a614342da9b7 Mon Sep 17 00:00:00 2001 From: Melanie Date: Sun, 17 Apr 2011 21:43:16 +0100 Subject: [PATCH 129/138] Mantis #5442: Add admin_save_heightmap --- .../RemoteController/RemoteAdminPlugin.cs | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index dc4309fbe2..5a011cecb3 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs @@ -130,6 +130,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController availableMethods["admin_broadcast"] = XmlRpcAlertMethod; availableMethods["admin_restart"] = XmlRpcRestartMethod; availableMethods["admin_load_heightmap"] = XmlRpcLoadHeightmapMethod; + availableMethods["admin_save_heightmap"] = XmlRpcSaveHeightmapMethod; // User management availableMethods["admin_create_user"] = XmlRpcCreateUserMethod; availableMethods["admin_create_user_email"] = XmlRpcCreateUserMethod; @@ -357,6 +358,61 @@ namespace OpenSim.ApplicationPlugins.RemoteController return response; } + public XmlRpcResponse XmlRpcSaveHeightmapMethod(XmlRpcRequest request, IPEndPoint remoteClient) + + { + XmlRpcResponse response = new XmlRpcResponse(); + Hashtable responseData = new Hashtable(); + + m_log.Info("[RADMIN]: Save height maps request started"); + + try + { + Hashtable requestData = (Hashtable)request.Params[0]; + + m_log.DebugFormat("[RADMIN]: Save Terrain: XmlRpc {0}", request.ToString()); + + CheckStringParameters(request, new string[] { "password", "filename", "regionid" }); + + if (m_requiredPassword != String.Empty && + (!requestData.Contains("password") || (string)requestData["password"] != m_requiredPassword)) + throw new Exception("wrong password"); + + string file = (string)requestData["filename"]; + UUID regionID = (UUID)(string)requestData["regionid"]; + m_log.InfoFormat("[RADMIN]: Terrain Saving: {0}", file); + + responseData["accepted"] = true; + + Scene region = null; + + if (!m_application.SceneManager.TryGetScene(regionID, out region)) + throw new Exception("1: unable to get a scene with that name"); + + ITerrainModule terrainModule = region.RequestModuleInterface(); + if (null == terrainModule) throw new Exception("terrain module not available"); + + terrainModule.SaveToFile(file); + + responseData["success"] = false; + + response.Value = responseData; + } + catch (Exception e) + { + m_log.ErrorFormat("[RADMIN]: Terrain Saving: failed: {0}", e.Message); + m_log.DebugFormat("[RADMIN]: Terrain Saving: failed: {0}", e.ToString()); + + responseData["success"] = false; + responseData["error"] = e.Message; + + } + + m_log.Info("[RADMIN]: Save height maps request complete"); + + return response; + } + public XmlRpcResponse XmlRpcShutdownMethod(XmlRpcRequest request, IPEndPoint remoteClient) { m_log.Info("[RADMIN]: Received Shutdown Administrator Request"); From 419fc9427ef14eea443ec6f57501c6915c2de3b9 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 18 Apr 2011 20:03:53 +0100 Subject: [PATCH 130/138] Provide a configuration setting to control whether multiple taken objects are coalesced to inventory This is the CoalesceMultipleObjectsToInventory setting in [Inventory] in OpenSimDefaults.ini Default is true. --- .../HGInventoryAccessModule.cs | 3 + .../InventoryAccess/InventoryAccessModule.cs | 59 ++++++++++++++----- bin/OpenSimDefaults.ini | 7 +++ 3 files changed, 54 insertions(+), 15 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs index 8c99983a95..52791cb046 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs @@ -75,6 +75,9 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess if (name == Name) { m_Enabled = true; + + InitialiseCommon(source); + m_log.InfoFormat("[HG INVENTORY ACCESS MODULE]: {0} enabled.", Name); IConfig thisModuleConfig = source.Configs["HGInventoryAccessModule"]; diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index a716326924..e030ba11f7 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -64,7 +64,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess return m_UserManagement; } } - + + public bool CoalesceMultipleObjectsToInventory { get; set; } #region INonSharedRegionModule @@ -87,10 +88,28 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess if (name == Name) { m_Enabled = true; - m_log.InfoFormat("[INVENTORY ACCESS MODULE]: {0} enabled.", Name); + + InitialiseCommon(source); + + m_log.InfoFormat("[INVENTORY ACCESS MODULE]: {0} enabled.", Name); } } } + + /// + /// Common module config for both this and descendant classes. + /// + /// + protected virtual void InitialiseCommon(IConfigSource source) + { + IConfig inventoryConfig = source.Configs["Inventory"]; + + if (inventoryConfig != null) + CoalesceMultipleObjectsToInventory + = inventoryConfig.GetBoolean("CoalesceMultipleObjectsToInventory", true); + else + CoalesceMultipleObjectsToInventory = true; + } public virtual void PostInitialise() { @@ -206,20 +225,30 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess public virtual UUID DeleteToInventory(DeRezAction action, UUID folderID, List objectGroups, IClientAPI remoteClient) { - UUID ret = UUID.Zero; - - // The following code groups the SOG's by owner. No objects - // belonging to different people can be coalesced, for obvious - // reasons. - Dictionary> deletes = - new Dictionary>(); - - foreach (SceneObjectGroup g in objectGroups) + Dictionary> deletes = new Dictionary>(); + + if (CoalesceMultipleObjectsToInventory) { - if (!deletes.ContainsKey(g.OwnerID)) - deletes[g.OwnerID] = new List(); - - deletes[g.OwnerID].Add(g); + // The following code groups the SOG's by owner. No objects + // belonging to different people can be coalesced, for obvious + // reasons. + foreach (SceneObjectGroup g in objectGroups) + { + if (!deletes.ContainsKey(g.OwnerID)) + deletes[g.OwnerID] = new List(); + + deletes[g.OwnerID].Add(g); + } + } + else + { + // If we don't want to coalesce then put every object in its own bundle. + foreach (SceneObjectGroup g in objectGroups) + { + List bundle = new List(); + bundle.Add(g); + deletes[g.UUID] = bundle; + } } // This is method scoped and will be returned. It will be the diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index 107e859827..2e0a22bc8a 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -453,6 +453,13 @@ ; ForwardOfflineGroupMessages = true +[Inventory] + ; Control whether multiple objects sent to inventory should be coaleseced into a single item + ; There are still some issues with coalescence, including the fact that rotation is not restored + ; and some assets may be missing from archive files. + CoalesceMultipleObjectsToInventory = true + + [ODEPhysicsSettings] ;## ;## World Settings From 5a404a9ab1b8c684e5704efe09205f44d4a2e353 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 18 Apr 2011 21:07:11 +0100 Subject: [PATCH 131/138] Fix bug where objects were being coalesced in the wrong positions. This addresses http://opensimulator.org/mantis/view.php?id=5441 The bug was due to a pre-existing mistake in creating the inventory stored position --- .../Framework/InventoryAccess/InventoryAccessModule.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index e030ba11f7..326ef28b9e 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -269,9 +269,9 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess ? 250 : objectGroup.AbsolutePosition.X) , - (objectGroup.AbsolutePosition.X > (int)Constants.RegionSize) + (objectGroup.AbsolutePosition.Y > (int)Constants.RegionSize) ? 250 - : objectGroup.AbsolutePosition.X, + : objectGroup.AbsolutePosition.Y, objectGroup.AbsolutePosition.Z); originalPositions[objectGroup.UUID] = objectGroup.AbsolutePosition; From 71114d4ad1c4aacbfedea9f4ab5307162ae5d9e0 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 18 Apr 2011 21:34:26 +0100 Subject: [PATCH 132/138] refactor: rename DeleteToInventory() to CopyToInventory() DeleteToInventory() is misleading - it is the caller that decides whether to delete or not --- .../InventoryAccess/InventoryAccessModule.cs | 2 +- .../Interfaces/IInventoryAccessModule.cs | 18 +++++++++++++++++- .../Scenes/AsyncSceneObjectGroupDeleter.cs | 3 ++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 326ef28b9e..666f35339c 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -222,7 +222,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess /// /// /// - public virtual UUID DeleteToInventory(DeRezAction action, UUID folderID, + public virtual UUID CopyToInventory(DeRezAction action, UUID folderID, List objectGroups, IClientAPI remoteClient) { Dictionary> deletes = new Dictionary>(); diff --git a/OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs b/OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs index 05fc2add3e..305975e855 100644 --- a/OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs +++ b/OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs @@ -38,7 +38,23 @@ namespace OpenSim.Region.Framework.Interfaces public interface IInventoryAccessModule { UUID CapsUpdateInventoryItemAsset(IClientAPI remoteClient, UUID itemID, byte[] data); - UUID DeleteToInventory(DeRezAction action, UUID folderID, List objectGroups, IClientAPI remoteClient); + + /// + /// Copy objects to a user's inventory. + /// + /// + /// Is it left to the caller to delete them from the scene if required. + /// + /// + /// + /// + /// + /// + /// Returns the UUID of the newly created item asset (not the item itself). + /// FIXME: This is not very useful. It would be far more useful to return a list of items instead. + /// + UUID CopyToInventory(DeRezAction action, UUID folderID, List objectGroups, IClientAPI remoteClient); + SceneObjectGroup RezObject(IClientAPI remoteClient, UUID itemID, Vector3 RayEnd, Vector3 RayStart, UUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection, bool RezSelected, bool RemoveItem, UUID fromTaskID, bool attachment); diff --git a/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs b/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs index 8feb0227fc..342354257d 100644 --- a/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs +++ b/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs @@ -143,7 +143,8 @@ namespace OpenSim.Region.Framework.Scenes { IInventoryAccessModule invAccess = m_scene.RequestModuleInterface(); if (invAccess != null) - invAccess.DeleteToInventory(x.action, x.folderID, x.objectGroups, x.remoteClient); + invAccess.CopyToInventory(x.action, x.folderID, x.objectGroups, x.remoteClient); + if (x.permissionToDelete) { foreach (SceneObjectGroup g in x.objectGroups) From 61619ddefc96be2c1f802360cca48b1b36be8bb2 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 18 Apr 2011 21:59:01 +0100 Subject: [PATCH 133/138] refactor: split out the code which actually copies a particular bundle to inventory --- .../InventoryAccess/InventoryAccessModule.cs | 237 +++++++++--------- 1 file changed, 123 insertions(+), 114 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 666f35339c..6b3df9ddd6 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -213,19 +213,11 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess return UUID.Zero; } - - /// - /// Delete a scene object from a scene and place in the given avatar's inventory. - /// Returns the UUID of the newly created asset. - /// - /// - /// - /// - /// + public virtual UUID CopyToInventory(DeRezAction action, UUID folderID, List objectGroups, IClientAPI remoteClient) { - Dictionary> deletes = new Dictionary>(); + Dictionary> bundlesToCopy = new Dictionary>(); if (CoalesceMultipleObjectsToInventory) { @@ -234,10 +226,10 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess // reasons. foreach (SceneObjectGroup g in objectGroups) { - if (!deletes.ContainsKey(g.OwnerID)) - deletes[g.OwnerID] = new List(); + if (!bundlesToCopy.ContainsKey(g.OwnerID)) + bundlesToCopy[g.OwnerID] = new List(); - deletes[g.OwnerID].Add(g); + bundlesToCopy[g.OwnerID].Add(g); } } else @@ -247,7 +239,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess { List bundle = new List(); bundle.Add(g); - deletes[g.UUID] = bundle; + bundlesToCopy[g.UUID] = bundle; } } @@ -257,112 +249,129 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess // Each iteration is really a separate asset being created, // with distinct destinations as well. - foreach (List objlist in deletes.Values) + foreach (List bundle in bundlesToCopy.Values) + assetID = CopyBundleToInventory(action, folderID, bundle, remoteClient); + + return assetID; + } + + /// + /// Copy a bundle of objects to inventory. If there is only one object, then this will create an object + /// item. If there are multiple objects then these will be saved as a single coalesced item. + /// + /// + /// + /// + /// + /// + protected UUID CopyBundleToInventory( + DeRezAction action, UUID folderID, List objlist, IClientAPI remoteClient) + { + UUID assetID = UUID.Zero; + + CoalescedSceneObjects coa = new CoalescedSceneObjects(UUID.Zero); + Dictionary originalPositions = new Dictionary(); + + foreach (SceneObjectGroup objectGroup in objlist) { - CoalescedSceneObjects coa = new CoalescedSceneObjects(UUID.Zero); - Dictionary originalPositions = new Dictionary(); + Vector3 inventoryStoredPosition = new Vector3 + (((objectGroup.AbsolutePosition.X > (int)Constants.RegionSize) + ? 250 + : objectGroup.AbsolutePosition.X) + , + (objectGroup.AbsolutePosition.Y > (int)Constants.RegionSize) + ? 250 + : objectGroup.AbsolutePosition.Y, + objectGroup.AbsolutePosition.Z); - foreach (SceneObjectGroup objectGroup in objlist) - { - Vector3 inventoryStoredPosition = new Vector3 - (((objectGroup.AbsolutePosition.X > (int)Constants.RegionSize) - ? 250 - : objectGroup.AbsolutePosition.X) - , - (objectGroup.AbsolutePosition.Y > (int)Constants.RegionSize) - ? 250 - : objectGroup.AbsolutePosition.Y, - objectGroup.AbsolutePosition.Z); + originalPositions[objectGroup.UUID] = objectGroup.AbsolutePosition; - originalPositions[objectGroup.UUID] = objectGroup.AbsolutePosition; + objectGroup.AbsolutePosition = inventoryStoredPosition; - objectGroup.AbsolutePosition = inventoryStoredPosition; - - // Make sure all bits but the ones we want are clear - // on take. - // This will be applied to the current perms, so - // it will do what we want. - objectGroup.RootPart.NextOwnerMask &= - ((uint)PermissionMask.Copy | - (uint)PermissionMask.Transfer | - (uint)PermissionMask.Modify); - objectGroup.RootPart.NextOwnerMask |= - (uint)PermissionMask.Move; - - coa.Add(objectGroup); - } - - string itemXml; - - if (objlist.Count > 1) - itemXml = CoalescedSceneObjectsSerializer.ToXml(coa); - else - itemXml = SceneObjectSerializer.ToOriginalXmlFormat(objlist[0]); + // Make sure all bits but the ones we want are clear + // on take. + // This will be applied to the current perms, so + // it will do what we want. + objectGroup.RootPart.NextOwnerMask &= + ((uint)PermissionMask.Copy | + (uint)PermissionMask.Transfer | + (uint)PermissionMask.Modify); + objectGroup.RootPart.NextOwnerMask |= + (uint)PermissionMask.Move; - // Restore the position of each group now that it has been stored to inventory. - foreach (SceneObjectGroup objectGroup in objlist) - objectGroup.AbsolutePosition = originalPositions[objectGroup.UUID]; - - InventoryItemBase item = CreateItemForObject(action, remoteClient, objlist[0], folderID); - if (item == null) - return UUID.Zero; - - // Can't know creator is the same, so null it in inventory - if (objlist.Count > 1) - { - item.CreatorId = UUID.Zero.ToString(); - item.Flags = (uint)InventoryItemFlags.ObjectHasMultipleItems; - } - else - { - item.CreatorId = objlist[0].RootPart.CreatorID.ToString(); - item.SaleType = objlist[0].RootPart.ObjectSaleType; - item.SalePrice = objlist[0].RootPart.SalePrice; - } - - AssetBase asset = CreateAsset( - objlist[0].GetPartName(objlist[0].RootPart.LocalId), - objlist[0].GetPartDescription(objlist[0].RootPart.LocalId), - (sbyte)AssetType.Object, - Utils.StringToBytes(itemXml), - objlist[0].OwnerID.ToString()); - m_Scene.AssetService.Store(asset); - - item.AssetID = asset.FullID; - assetID = asset.FullID; - - if (DeRezAction.SaveToExistingUserInventoryItem == action) - { - m_Scene.InventoryService.UpdateItem(item); - } - else - { - AddPermissions(item, objlist[0], objlist, remoteClient); - - item.CreationDate = Util.UnixTimeSinceEpoch(); - item.Description = asset.Description; - item.Name = asset.Name; - item.AssetType = asset.Type; - - m_Scene.AddInventoryItem(item); - - if (remoteClient != null && item.Owner == remoteClient.AgentId) - { - remoteClient.SendInventoryItemCreateUpdate(item, 0); - } - else - { - ScenePresence notifyUser = m_Scene.GetScenePresence(item.Owner); - if (notifyUser != null) - { - notifyUser.ControllingClient.SendInventoryItemCreateUpdate(item, 0); - } - } - } - - // This is a hook to do some per-asset post-processing for subclasses that need that - ExportAsset(remoteClient.AgentId, assetID); + coa.Add(objectGroup); } + + string itemXml; + + if (objlist.Count > 1) + itemXml = CoalescedSceneObjectsSerializer.ToXml(coa); + else + itemXml = SceneObjectSerializer.ToOriginalXmlFormat(objlist[0]); + + // Restore the position of each group now that it has been stored to inventory. + foreach (SceneObjectGroup objectGroup in objlist) + objectGroup.AbsolutePosition = originalPositions[objectGroup.UUID]; + + InventoryItemBase item = CreateItemForObject(action, remoteClient, objlist[0], folderID); + if (item == null) + return UUID.Zero; + + // Can't know creator is the same, so null it in inventory + if (objlist.Count > 1) + { + item.CreatorId = UUID.Zero.ToString(); + item.Flags = (uint)InventoryItemFlags.ObjectHasMultipleItems; + } + else + { + item.CreatorId = objlist[0].RootPart.CreatorID.ToString(); + item.SaleType = objlist[0].RootPart.ObjectSaleType; + item.SalePrice = objlist[0].RootPart.SalePrice; + } + + AssetBase asset = CreateAsset( + objlist[0].GetPartName(objlist[0].RootPart.LocalId), + objlist[0].GetPartDescription(objlist[0].RootPart.LocalId), + (sbyte)AssetType.Object, + Utils.StringToBytes(itemXml), + objlist[0].OwnerID.ToString()); + m_Scene.AssetService.Store(asset); + + item.AssetID = asset.FullID; + assetID = asset.FullID; + + if (DeRezAction.SaveToExistingUserInventoryItem == action) + { + m_Scene.InventoryService.UpdateItem(item); + } + else + { + AddPermissions(item, objlist[0], objlist, remoteClient); + + item.CreationDate = Util.UnixTimeSinceEpoch(); + item.Description = asset.Description; + item.Name = asset.Name; + item.AssetType = asset.Type; + + m_Scene.AddInventoryItem(item); + + if (remoteClient != null && item.Owner == remoteClient.AgentId) + { + remoteClient.SendInventoryItemCreateUpdate(item, 0); + } + else + { + ScenePresence notifyUser = m_Scene.GetScenePresence(item.Owner); + if (notifyUser != null) + { + notifyUser.ControllingClient.SendInventoryItemCreateUpdate(item, 0); + } + } + } + + // This is a hook to do some per-asset post-processing for subclasses that need that + ExportAsset(remoteClient.AgentId, assetID); return assetID; } From e00e518692bd3d123db69dceb98b80d3bdd59156 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 18 Apr 2011 22:24:42 +0100 Subject: [PATCH 134/138] add test to ensure that an IAR starts with the control file --- .../Archiver/InventoryArchiveReadRequest.cs | 21 +++++++------- .../Archiver/Tests/InventoryArchiverTests.cs | 29 ++++++++++++++++++- 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index f3d2f26cfe..9acdc9040d 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs @@ -77,12 +77,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver /// private Stream m_loadStream; - /// - /// FIXME: Do not perform this check since older versions of OpenSim do save the control file after other things - /// (I thought they weren't). We will need to bump the version number and perform this check on all - /// subsequent IAR versions only - /// - protected bool m_controlFileLoaded = true; + public bool ControlFileLoaded { get; private set; } + protected bool m_assetsLoaded; protected bool m_inventoryNodesLoaded; @@ -131,6 +127,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver m_userInfo = userInfo; m_invPath = invPath; m_loadStream = loadStream; + + // FIXME: Do not perform this check since older versions of OpenSim do save the control file after other things + // (I thought they weren't). We will need to bump the version number and perform this check on all + // subsequent IAR versions only + ControlFileLoaded = true; } /// @@ -522,7 +523,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver /// /// /// - protected void LoadControlFile(string path, byte[] data) + public void LoadControlFile(string path, byte[] data) { XDocument doc = XDocument.Parse(Encoding.ASCII.GetString(data)); XElement archiveElement = doc.Element("archive"); @@ -538,7 +539,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver majorVersion, MAX_MAJOR_VERSION)); } - m_controlFileLoaded = true; + ControlFileLoaded = true; m_log.InfoFormat("[INVENTORY ARCHIVER]: Loading IAR with version {0}", version); } @@ -550,7 +551,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver /// protected void LoadInventoryFile(string path, TarArchiveReader.TarEntryType entryType, byte[] data) { - if (!m_controlFileLoaded) + if (!ControlFileLoaded) throw new Exception( string.Format( "The IAR you are trying to load does not list {0} before {1}. Aborting load", @@ -597,7 +598,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver /// protected void LoadAssetFile(string path, byte[] data) { - if (!m_controlFileLoaded) + if (!ControlFileLoaded) throw new Exception( string.Format( "The IAR you are trying to load does not list {0} before {1}. Aborting load", diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index d03f6da295..52232a0c9e 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs @@ -94,7 +94,34 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests Assert.That(coaObjects[1].UUID, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000140"))); Assert.That(coaObjects[1].AbsolutePosition, Is.EqualTo(new Vector3(25, 50, 75))); - } + } + + /// + /// Test that the IAR has the required files in the right order. + /// + /// + /// At the moment, the only thing that matters is that the control file is the very first one. + /// + [Test] + public void TestOrder() + { + TestHelper.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + MemoryStream archiveReadStream = new MemoryStream(m_iarStreamBytes); + TarArchiveReader tar = new TarArchiveReader(archiveReadStream); + string filePath; + TarArchiveReader.TarEntryType tarEntryType; + + byte[] data = tar.ReadEntry(out filePath, out tarEntryType); + Assert.That(filePath, Is.EqualTo(ArchiveConstants.CONTROL_FILE_PATH)); + + InventoryArchiveReadRequest iarr + = new InventoryArchiveReadRequest(null, null, null, (Stream)null, false); + iarr.LoadControlFile(filePath, data); + + Assert.That(iarr.ControlFileLoaded, Is.True); + } /// /// Test saving a single inventory item to a V0.1 OpenSim Inventory Archive From 6600aa2baf56e1f58e50eb5589de876e910131bb Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 18 Apr 2011 22:35:33 +0100 Subject: [PATCH 135/138] Add regression test to check that OARs start with the control file. --- .../Archiver/InventoryArchiveReadRequest.cs | 3 +++ .../World/Archiver/ArchiveReadRequest.cs | 9 ++++++++- .../World/Archiver/Tests/ArchiverTests.cs | 18 ++++++++++-------- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index 9acdc9040d..a12931f5e9 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs @@ -77,6 +77,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver /// private Stream m_loadStream; + /// + /// Has the control file been loaded for this archive? + /// public bool ControlFileLoaded { get; private set; } protected bool m_assetsLoaded; diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs index fd8f546737..82bef48c8c 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs @@ -57,6 +57,11 @@ namespace OpenSim.Region.CoreModules.World.Archiver /// bumps here should be compatible. /// public static int MAX_MAJOR_VERSION = 1; + + /// + /// Has the control file been loaded for this archive? + /// + public bool ControlFileLoaded { get; private set; } protected Scene m_scene; protected Stream m_loadStream; @@ -527,7 +532,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver /// /// /// - protected void LoadControlFile(string path, byte[] data) + public void LoadControlFile(string path, byte[] data) { XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable()); XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None); @@ -573,6 +578,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver } currentRegionSettings.Save(); + + ControlFileLoaded = true; } } } \ No newline at end of file diff --git a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs index e2760a2065..2307c8e585 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs @@ -171,7 +171,6 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests MemoryStream archiveReadStream = new MemoryStream(archive); TarArchiveReader tar = new TarArchiveReader(archiveReadStream); - bool gotControlFile = false; bool gotNcAssetFile = false; string expectedNcAssetFileName = string.Format("{0}_{1}", ncAssetUuid, "notecard.txt"); @@ -182,15 +181,19 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests expectedPaths.Add(ArchiveHelpers.CreateObjectPath(sog2)); string filePath; - TarArchiveReader.TarEntryType tarEntryType; + TarArchiveReader.TarEntryType tarEntryType; + byte[] data = tar.ReadEntry(out filePath, out tarEntryType); + Assert.That(filePath, Is.EqualTo(ArchiveConstants.CONTROL_FILE_PATH)); + + ArchiveReadRequest arr = new ArchiveReadRequest(m_scene, (Stream)null, false, false, Guid.Empty); + arr.LoadControlFile(filePath, data); + + Assert.That(arr.ControlFileLoaded, Is.True); + while (tar.ReadEntry(out filePath, out tarEntryType) != null) { - if (ArchiveConstants.CONTROL_FILE_PATH == filePath) - { - gotControlFile = true; - } - else if (filePath.StartsWith(ArchiveConstants.ASSETS_PATH)) + if (filePath.StartsWith(ArchiveConstants.ASSETS_PATH)) { string fileName = filePath.Remove(0, ArchiveConstants.ASSETS_PATH.Length); @@ -203,7 +206,6 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests } } - Assert.That(gotControlFile, Is.True, "No control file in archive"); Assert.That(gotNcAssetFile, Is.True, "No notecard asset file in archive"); Assert.That(foundPaths, Is.EquivalentTo(expectedPaths)); From 61096050386c8ec63d8d92c6ac7b183ddaa77c26 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 18 Apr 2011 22:42:36 +0100 Subject: [PATCH 136/138] bump oar version number to 0.6. This commit contains no data changes - the version bump is to establish a version at which the control file must come first in the archive. --- .../World/Archiver/ArchiveWriteRequestPreparation.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs index f2d487ef94..597b7809e5 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs @@ -206,7 +206,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver /// public static string CreateControlFile(Dictionary options) { - int majorVersion = MAX_MAJOR_VERSION, minorVersion = 5; + int majorVersion = MAX_MAJOR_VERSION, minorVersion = 6; // // if (options.ContainsKey("version")) // { From f5a041d01292adb2b1e650cb9eba0806121d2ddf Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 18 Apr 2011 23:00:41 +0100 Subject: [PATCH 137/138] bump default IAR version to 0.2 and 1.1 for the --profile version. There are no changes in this bump, they just signal a point at which the control file comes first in the archive. --- .../Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs index dc4900f5a7..c039b5a387 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs @@ -394,12 +394,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver if (options.ContainsKey("profile")) { majorVersion = 1; - minorVersion = 0; + minorVersion = 1; } else { majorVersion = 0; - minorVersion = 1; + minorVersion = 2; } m_log.InfoFormat("[INVENTORY ARCHIVER]: Creating version {0}.{1} IAR", majorVersion, minorVersion); From 36c4e94ef739f2d58ff26ae2313e5a930ff02021 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 18 Apr 2011 23:22:04 +0100 Subject: [PATCH 138/138] Move mesh on/off swtich from [Startup] to [Mesh] in anticipation of future config parameters. Default remains true. OpenSimDefault.ini changed so if you haven't overriden this switch then you don't need to do anything. --- .../Region/CoreModules/Avatar/Assets/GetMeshModule.cs | 7 +++---- .../Assets/NewFileAgentInventoryVariablePriceModule.cs | 7 +++---- .../Inventory/Archiver/InventoryArchiveReadRequest.cs | 6 ++++++ bin/OpenSimDefaults.ini | 10 ++++++---- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs b/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs index d2278bc3de..deec444e8b 100644 --- a/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs @@ -66,12 +66,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets public void Initialise(IConfigSource source) { - IConfig startupConfig = source.Configs["Startup"]; - if (startupConfig == null) + IConfig meshConfig = source.Configs["Mesh"]; + if (meshConfig == null) return; - if (!startupConfig.GetBoolean("ColladaMesh",true)) - m_enabled = false; + m_enabled = meshConfig.GetBoolean("ColladaMesh", true); } public void AddRegion(Scene pScene) diff --git a/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs b/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs index fb07cc9ca0..d651cb26f8 100644 --- a/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs @@ -68,12 +68,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets public void Initialise(IConfigSource source) { - IConfig startupConfig = source.Configs["Startup"]; - if (startupConfig == null) + IConfig meshConfig = source.Configs["Mesh"]; + if (meshConfig == null) return; - if (!startupConfig.GetBoolean("ColladaMesh",true)) - m_enabled = false; + m_enabled = meshConfig.GetBoolean("ColladaMesh", true); } public void AddRegion(Scene pScene) diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index a12931f5e9..6b247180d8 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs @@ -82,6 +82,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver /// public bool ControlFileLoaded { get; private set; } + /// + /// Do we want to enforce the check. IAR versions before 0.2 and 1.1 do not guarantee this order, so we can't + /// enforce. + /// + public bool EnforceControlFileCheck { get; private set; } + protected bool m_assetsLoaded; protected bool m_inventoryNodesLoaded; diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index 2e0a22bc8a..e72e85103f 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -155,10 +155,6 @@ ; it may cause unexpected physics problems. ;UseMeshiesPhysicsMesh = false - ; enable / disable Collada mesh support - ; default is true - ; ColladaMesh = true - ; Choose one of the physics engines below ; OpenDynamicsEngine is by some distance the most developed physics engine ; basicphysics effectively does not model physics at all, making all objects phantom @@ -460,6 +456,12 @@ CoalesceMultipleObjectsToInventory = true +[Mesh] + ; enable / disable Collada mesh support + ; default is true + ; ColladaMesh = true + + [ODEPhysicsSettings] ;## ;## World Settings

    a_e@$JuC(SyODC<1jF_}7 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

  • mmO>4df6!ii1f^<%jN7f{-TihQY*< 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 z±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 (RR73|peb zXBFefdosQ+*b+}Bk9qBPV$V`yfKWw#148VhB_GB@mNU?jG58=Vqz?Z#W1vvv-UH(_ z$+OE_ay~u|E_d=)#KaIRcj+vC$?NgK@|#`xEm|HD@|~zs0R0^M=#+p+$CcO4Li#LdXe~i1AvP0 zL6%<0vcp^Qq`|`g<<0!C5quEAY!`XH`c&obikJyMkW%|f3|4xg`|0zMgs&l2ME1pw+ppV_W1 z8ltj&W$45A^muK3$t2<4f(UU{~Be!26=hvf{+>Uhk&CSuXP@2=9tM@W5uT$8K#oHo-6&jU?fY zcjF^Jlte4KZ;N6Lo4siukk1L6&bIZHBq%3Mdl$EC0b?&>+>J=&L2n>mlw8!^WK|BQ zxgr>O^+Vowl83J-7`HBN*vONP9C9mrSXdP*bwi6kG=?t+&EyGzTF!8&)UTwTc7 zL13bI(=Qjd>@t{FZ9q9rQh|JN!-6+S#7)GLblUKQIBhVCaWca_LJlwk4#SS;|BR${ zj%VbmJ4&J<*L(4ie-2(D`|LlB#vIzq0v~sVn3q-p%l0jZ0zN6aa)FKIK*Zf9 zI-D3cb58rxCS;*~GuD1UJ-m6RhN}=p`@-dD^P-eG%>f}~mot&?QK73C2CyqpLi zoULYMwLeAcX?1Yx5s4OO+Ba8Vxri*eV`Ny~W{(l z&6|o&#g!l4rdT?gB8{1+Yv$?549U0cov10GO{?Ka>(URhz_&5`i5VvJbALIv z7>HseP(#d*#AhqHiCU4pNryOCIT-iqo=io0+^aXWZmn$nWpzsrGH}lJn^CDKupp!`Bbo(8 z9EN)MrPSl)cc3rTg;cW{fxE0C@vglPQ-sQ&#XXcPx@(jocG*D#aO#VSQGQ@CE}QZ# zN{+@&sHGW761`1;a$1X+3xpmQ<0lFR@e;@l3w2)@=UfXR!MaAykbZRI{ zWTp=3yThHWmmO}r&xstmF}bN|W3q8eIwvQY*doAbbc$|Q)JC@5xF)qq(D83KPB{z| zW3jMO({43s@B^gXY*H<^Lesuv;_Pvx-DaHCOBg0FvIfIMT_okaTDoMyUKGeCL+mJe zulp8(7(Ru#2P8?hA5w!Q8jDB7{|x`XkHG>#8g$iYLJOtVLiAafB2Kuy>R74@aaKRJ zA!wKzT63cvnH*^WL^*I$>-77wN(6E|x<VuXY8gCe4$w z25`g7;>4+fOCP|z>oxB`qb8r*XnxKhbDTQJgaGJ4Dk_G|)quq*WTt0Q>|vDl@qZ@a z&LCWeF(#E5F1Pli1%@d|D$bjJ$vkXD_NM1JVN4mAZJmq5EJ)*uvyql%n)-Ur(%O}L z(I_kzYh_CWGj=me z0*mYn`PJ4SUi#-s)=ck)cz5BS{!|2PR^k}(F+{{R!d}}Op@U^6&?Q9MnAa-%)uQ;x z*^fDt{dN_z-(KuOWftx#VLAGg1MX#6?wI0VmgSCWTE8r3Fk+Ttx$-PmsS>J`<@n+q zh}oCrd`&QxGd`;&pQWUdX}DMtX0`s9<+Qo7ZE!9Jim%Prx7*aCg@2teTa~7CYyHY> zT4jORwkQ!&hPp7D#wkl!x-i=yg(u8LZ~uNd$b=xnq^B4%**m3i3fa=%2spA&FI)Ex zA_SVBGF)ReGaQT9jQC|+mCY(j*oCn()F_v2FoqI9eO*2cuu=J>asB)o|X}x)d3Q9SbC?XN2?hx_XGKU zOdzk$iGIw*d5}7+Qc$7+#lo5mqY@KTxKlg_>a@}%V?*4F;}9eIAu-g7L(C!tVNUC!qd>n)xgqSDBK0@%Ur@Ka zrKq**v`e$xxTY5-Z_`CYp_tCRvc=^vY}c7toZi7v$6e)neJ^`!D$Itr zl~0EjhIHC8mrw7N^j=k~uy72ryEp`DF4XBiVNLWm>$ZXWQ99 z>C_N3DBkr2bLq8ja;JkJRJ#&R*)Lh6tU~7QaF9J9S@6jX%plvVS)hgcDKfKDxc^)r`i4hj zwT3SspE<>jIuw)e$8zEr~F|N`1Lo zk>}eYoDiC*&vX)bggX^$Zud3`=7tFz#9>hsVr?4cv{o_<`8v#Mjl47QYm7ta8nwTM z$3*OhG6WBY;3}j&>@D?=aIpT;TY4@&GIv&^6SMI7GIh{}Q+==PO`QIF%RrLHt16>DQYCwZg1(YVR9J@MDeI}5HYNEq+l+CZJc6mYq`)?mGO!Z)2$+Ih`N=l zTReUj>9`bAiZr)Z+-u^7q!^RLh-$Tl=#)N)j!{Hck5KYZJlA6_9NHSSXpzftdb_o&JvJ*N-+qHw1&xjKP@HMCd9A;S%gm!lGQ26vZI8GG9*SP`=9YFqRZpZ zo;4`$f0xJgKf!~PW$>OSDPh*Ch$*O87~ZexgLj4DT_;Ei-lIyonn}b{agnDygq>Yi zTe`Fpv@PG&hF5{EvlZWz)@Jz4Ib2HD8HhpUtF_^LXTaxPRG89Qm0Ff4`vKDZmRN>N zN{#{=T760P9)t&`VvcwWF{D9-&?d5(H-1veZME6@ILJ;Ea!Q|%L=jI%#E4|~k2A8m z?q?C>B5uxwIhSF+QOYuuX_V`GgCF-jtA-F&Hh*28MpbH~R#$7IR?B|nl!Iue?VQP* zN?nSF`1G;eFF7=|$FAHN^=`@|leDCi;^H1~@w=?Qp)oYU#S8Ssc35RQB4h4_o8Wnf zVddJ;Fz!w$f^teMRMim{uC5iT1ojL6tHVn%(AGN)!cL`9V88apVMQqx?Tv`Z=V1XF z?+jP3 zTB+Y$B?*tO(r`}kpsw3TuQhav^jbsvWO}VDmegxqu@maGg}n#b+c>?pu(43kWeahA z_1Brw6|w$0i@{iby~jAcMqBQlUd!I1;jH4V`YUyKmmvDOSgSh} zdSJh*zd}VXqrc7p$Rhof5hvAOnW3P+%GO>ww*iq(f8EG$*+)p{HsQOk{@P~xD>MqE zqX9RH9vg43i3v#RN*Rd$NUqAe+6YLtC6QgzXKH$v(3?xf!(RJ`M#*&sMTJKswbt3Wa4?rYt?v*i;x)K>(Z+y9=H>`bKN@Cx7BI>aC4vWv} zZyaS4K(gRd z7fLp`9`{q1QA&rECaq7V1>_->m1_w2bjn*rh#E=sD%Hu*2eQKRmLY3Q{^; z-CnM|Dv`ZWVEQ>N8{}9={>#S-cWW{-JZUL>^?1CQ^BHbS%exLZwb8}!^&&ugCoQlG zryE7q$y^P}(pNhepFHdijCG^$%c}!{jF9}da1UraIQ2v<&Li7o=5Apfm zfLw8AL~ggt-$6X_J%1IXbTO(|YJbHjm2_5&x^`BKs&$q_RXXd!!!X!cg^?zV!DZVG zq`Q~8OerdS#R+lvVLTw(cDWKMmWA4vVSn6b`|XkKzXw_CL&udeT-k^DXK_9cY-}gB zFnFfg;8FgFj92YK#;`up z?}nu`YDg{SU&cJk${#AKTvk>(M*S|zC#zg`&~&UKi&nl!lZ928H6Ospi+xWjN#B2w zA1O8&(ISMj@4XwQ2__#AOfVXb5|h_hrzqk2+wI}{twdf$MY}!uSCbHI=Whs|uFr_Y zsm;3(;E{<6CnBQKc{gkGZdSxY>rqEl?}q0w^?0enoPeebxMYf;NQ+ZE*KZ79Tp1eav3$T0#aE*~jeR zhG)S(hSohv`r@gK5%OtJxgr1mk%CZ4g6 z;dF3X_AyGnf#AX4y?sm)msi?8X6PCFm{Yco(SDHqo|U2+#E12(EEq4~IdIO{$3TIl z7M;E6yPPm+AM?@wdinM-2IG&yKIUZXS8G~Mw*G&aeT?wg8T%M4oles}M%fH!??r4T ztC}g;iVjX}hQ>T@y_sz-52putPT4-DFNibtG3Wpv%O|mqNz5hHy65%BU>{Si*9+$e zB?PEBaAi)1{?PE+J{{Gv?BoY1H+Q%d@`9rdgN#gzcXdjcr?{{b)lSJc> z#y%$5sNVzF@u`xvK}-W2aW{L$LSl|?y8r*0oJg?n8Id+?-v%+NyG8T%OBD>!2x6LtI#+s916V;R3?`czcPd|(!rRF<5>Up9fCp5+J|4Fkq*K*m{kuo1p}R4B;S@W(AmNYhRQ@6w$o6@g<-&h+W4Ah z&{3=Dx9-<;2^SpPIM*YgGvpD^ADQvBb!oBcPV>b=fBXVMUZ&)^b(ukGGjgr8nipxf zL-WzmgP+noa=jba_$kdpL(L|Hn{Hh%WuqS;?UIqGB+Hk8SYsV)oUegPCNX862Ape> zl;)Jzcg_7tnAHNj&+VIEme9(<%UkWvZ0pzgy8M(Xxp#8s8`u}H^b?0Uhfzn@5FwVo ze33ROJ6r3#{YDLU&C+oDDh;P*A}qdtXuu8=WJ#9R0-P_&=rgt!;ilU+pjg7g4F?jK zo>?y$#U@^<;Kz?+<7a5#lF3YoG!Qplb2f>+8yjoAoYg|b1kkc109^)_$kBwcmX`o8sFD zu9lm|?3vB;ELmZqA0HTpfw->{SKD+&f7+-W zQQ)VJ+EK;(lu)Cy0lcq;roR-_%rC*Iqox)&o>(igf)Jtk$~D{0}T5|=G|kR4#}8+rj>QsvQyLgb=hJt zVwWu}SKejIUV*4yk{}&1F$Nt&B`&xMY*}mqHbfK5UyELJNhxfI`fqct;}eWwR_l+g zz_hsqmn{bbjz0XD+pmGEQ84J(r-4pIA?%HBD)KePAhi<7>UjycHAxV^;37=|NiV>6 zSFb`Tctz?qc-@wg(w6W_u{vv6r6p2E4hpK2#wm15e+_C#IBPMe^daCN0!{UaWRQsG zQT!K2Lqy+A5)j(0?`|7VF}M2q^R`P%z#SAIQg56Kj*BGQ*+|I}3o|r1484yRXVh@7wQi~-bU!v4k^S-$Gbulvl8M)7Sd6KWY6jKWTG?pFW7*qb?5(M%yB9pytLY z8n|zWAs$*9pYIJ)$D~p}WtfVRqj5UaE&VOX+c8OD7CatxYFolX9H@%EFp+R)h2}1T ztZ@q2(%*=(1tv-vM6g_tsx$}&napHyg*3xk1c2t}4CtIr`qI9beTtZjEptppT;g0s zOvaS{n9N!txao!80+SM_{>r;{Dy>7i-5-b#K(eF7+wFey`DxeW+TWsLqMG$U@oR5E zM1u9E(Jlg7&17Gmn>+_|)8R^~aJ~n_JLyc>5jASLbx=HK3Z#It_Fx3Vk%48AwiOIt)S>il(FAs_AT0D1VO` zz&Dq4f_eBGM5MG8TtcdrbEW1^87V~cYn(#1bPDJ>g!qrp$>8KpA*#u(ep7Fv-ryja z)}vYu@ry-kkpO0j6Tqx1&Q&CUnbMyCl{}}d?QIyLkU9Svwq4q|0*D zQB5n$QAaebUyd>uF-Ngnd5)^kt-hzAVZdRUt{tjnfRy2=DorTnD1}|jQCfe@QQBO3 zSgp}LqW7c6#$a?}w$zBrxN^u8MEWbAM3x$u=}P(a)N(I4==*>R5=nbPz;O>P8EM zRv_M+bm1!W=R*+elRBYsl+v(f1DcQHKYiL^Ur{CwY);X&V|WZ(IzHL zOm64yh?OwMHirxC3Z277#5MgChoODPLBibJ{N=`LM=?V`ilLwEcW=sJi9f8nU1)fa z-OE0sqlfTW1Urv$iK^~xdcCDv%zc85bfdVRwb4x{1f1RY%uE~!2L=WHvo4}*E4pS3 zR~sL7C`7&s9yD(eS2nuoJVaeF%Cp;a!w5G~J&S+H`dssCHdT?(!}nfy4m{bzbxqcs z*6=n$Rvc)ibA#ktoG#`nM2Pvf^y6+ZmQ|HLkTQQ&{?JhfbWD_y<`1LLGKYhHN+>rC z{@;7N_OC%F12I7>3YF= z)9UKg(&A+V^fiQ{4vX(FPR;3WWFAA*>j8(9#m5}%JSHd#x(9qn>kw}W2_H3vI5#() zA4ZPh7ZG+o7<&=M2=Y^gPSP)p)>QCIqqX$wm*%>O@JVys*i5NS`K|BZWL}fBDIXrkr76C+tWBeAm-POgO`D8oVG^jsk&imDoRNAD zD`}H>nQ6q)8q*ec@UKII--3oZrh%r)c?90xkpbVic>+NWhn(ljA|hBv*omKFWyA+z z;1x>BN8&e-@ryh7*VWE%sr^?vUFNhQAw64m8W(h0A7dJey^cVpYp2w>Nyd*Z$%Gxc8Wf`r$%w zT;fFIRp%u(fv`s5iPzAVbKG6rzay_V*!Q~FUmaoJFi@coLOU}L87im&E zPpQ$?oAuD!oqpZCN|QN$+yR&!4>v8}C~3Z&f!P_c9D{vH&xgyNguNt`sfeL(Y?tVC zP`2%&(?hxBgzP1uTzpP;Iw;$L+3BIolQTXNjAv=hTjf1BW9d7-vUUI2tw+!H+P1^n zOnemZ`D*0GG3`Y>3eW>sJXL-vwk6LDN4y5r9|xToj$S`Z-*-5^cO_)vzFrPOJKsIa z~ocy5oS;T3q1Nd{s;8eS}-@XSDTT0?9;Q>00p8HlGp5dY?1 zAqU?NV|jY1bEETP4q}f^ayCFx^F5=0k`AEXlS(Yj+=&y9ZrvwJo2bY>~LCZRfp63#{N^$PMl$3 z*o7&>o(u2QI|XBPIK4~1fs;C%-lJiAnXatEX+y_t$#E0UJ#6Q;Fr*r#q1@{oe`*MBVLaY@s#crq9F&Mj@p6~?wA+}$! z2Km{&N{_5!uX}TBu}i?Z%0KDgQ!GA6=pH_TnaOYyJ;r4=TZ*IH|0ZGe3`rFQjQ=#BOriY{9H=G-Sh^e zBSqa!<74ExTxvx!0R74V2&A@XmXQOQGDA~RLR-3|gcsmCD7P5WKS1X{g*+V_wLnT? zi;rBaD}&S~#Cx^KLKo^m$7ac<{-q6#)Gf?n8+h~Zgdb_D$VBdn(+h~}P@H1-zs|q( zN&y+CpvG5l_-0!hA}P zLe`{D>4}6S3lfOLs?5UbgcSV1E=a*IgFi$##xwdkorul|+eBt)6Ln40?IC-`gMMS9 zj&Twfb!wVBhL9mJ3d2W*BKAlE6N2ugi-J&OHV~D^5ZnjhF~rmOk3E+1#}HPN979;` z6nwdnf{7kOjM8uJ&5)lvM{BrK>pGQV2*b+BJZ|CQ@x@r?6(2*0xN{|n#a&@@Ga>F` zv38QN4p>@_&O9GefZu!6>~K@Ozlk(KU=4*cgGKII?`hZ zOQfiCW=chmk8Va?s|PE@4ux#T5adnHbWVKPSp?+V>ri2loMS{m&ebI4++KMWiW&OI zxyguhZuO_gx13OjTe(=yo$Q>V28Dp-P|CTEDM>lkq=BK7a~-wFCdc7$p??RCyD{=s zv#3`K*`;D`ut18k3Q>taM6&z>xy8xxP|flj30cJ?6K&fCqVJyF>SApG+f^yQeuttG z2^NU&u=t$*M)J@xu*?n9{M{Dct(&z$_Xv#_FY_qR{a*KAs=O1DkZ*=P&L-lwE{ooX zVv7KxbEy8t^370Ao>OS81^K4foq~M(+s8R%A>ZDKkA!?Xnvicpv6aVDi-df8{#6C} zHo8Q<{pc|hU$JgCVI9QRd!I~1SJ6>0-x-;7KawuR3I+Wp?}p&FW4+OEqx?qM4f@-; zPJg>JJzCB9#6jz5jG{6Jt&9d#$7lBTP|-mv1qn|ecnoB<>7ddYiVt3`c9+jwOUmJE z$11^)gVcAAsZ#3gM>w}e({hSW(+?33_x2F1`fgtF;j3tRnlnCpHBApgJUr3it1Dqr z?=b4X;cJhR3E-tz$=ff7srzv>TP)pTX?UW;SI8!PS75e~AEpU3BGBhEgl~7~Yl-ui zOhNd8@3RA9+aT)z-yBiUg}rXK+evsm+wKyDe+H?%bFW5WehC_&^M$J|q0^TP5j1vr znc4453c^}Fl!YL?9vD#&-p%*%?zV`N3PP6XBM3Jk(h0)N@~wh!3%*ZD5H3JQv~d_u zXFDgU?9=!0CTn1r&y*WATT19W?I*z7YyZ!)RUi_Cju@f+A_>Y-tpev!EiGiwS%LT# z$G6DEWd?L6OPEYtF9r_2d&;FtE7s>k6r-ra;+(oSL%;;~h;r0@rG~p#DtN0hbYAu4 zVPo`|Ji3z*frhMzK(+x{x)nqBR9@KGrtz`(Gfa}=PirlRzZFvC6vW?`o%s7=vG|Js zz^Qj%qO2*`gI{!s@=k&Ml)Nb)M#m7^-y>1$$Y5_Oz8zM^b!s`&P!m&NOPP?Y?I)rvf zq3a^y_^`v`?Se^US3zJ)rCn{;CG>R&TT|t;Ce`TxQzDkV+_J|M!vcdJ24YSH~S z3QWodeLqBdl5!Zm8Q9V+em{hLo_`#>IB1R;Nj>Ndzt3yWTNB6W1lu)Ho6@zz=-n&7 zk(qmh9Tsn99EArk4rzXSf;Wl{vJPv!y^$8=2rpmxgdox}3jukU;c2gZ&^bzL6{S&^ z%B-+Ug_3WwE9$WL4vUvZe9&k!#tckI`DU!Cv^IfeFOdZ~N}v22ao*`1KxA?&K%n%X zp}lMNS5)NB(Z_5$W%eUS^?L1prUqmf`UgRBC>ephiR5>x0E{5H!)K)TBJ@&_Qklnh z=-i7<`ixKhq8GLKV(G*=;VG~EOFAb2JbG6j4Brnd(OqV@BjBG)aMS@wj$pWB59GXm zU!g&K;pO2cMZe3xott+Ezvo>8Dh@t>@W{cR6`Fn2n*D!}H~-u(iUF)N06mC5*bP)f z7RiGiPai|irS{`5qD5qBKVCm@UNd4!g&hu{3*1s7=!{Duh*rO>0&y^XAb2(rS5Z$?efZWAwd93i3P#g4=Lk{3I; zX_R=eqvccT3}6`5;T#|UL%X5@>pmIk`eM;JHY3NWk=u|}1aESV zTy_Wm#YxOPo+)=L6)FU=ZZ;>ko;A~U6;Q$w~3jeVOVBGY-pt{IZAFjweY5_VX;%@L8oE6f#|UOZQ5 zS(_`Kg^H!uD&l@l75Z5w-2Ga&lh!gx=wu-3&;cZSwJ_olfh|^=`Sc^wJVDzVe#E^`i41Da+Y)~>_LxleE+9nXfqbouFeu9 zIb&f;p?s9SCz6JtzPa|}hXJ2LLI8f%$gZS``dMO#)K$tlN*6CN@~a?{1Uj025o=0a zh`$&=HMrd{C?mHRFv9$d7|>#bRcEq;&_v#<&vg6zS`a@~^ukOXYyS$O<|p9KX^&QV zn9Da%Y&-z6=I`a79uk-Y3gZXe?kwr}!P@aD-3g+Mpi>5Wy+~AR?5hU0m*k$blg+UF zP&|C-SRxG{RBzi0X80y(z|QXBh~cQXLS$EDN(1G$jSBSfB%4Y~)VCw~I^o~cB zrN)rX!yoZ(c%O`zcgG{fyWwpd7FodSjb!>V!=*10egjYgH_J~q&?tuwoj zL&439giLhUha3}Bj`J@(_!4OJs!yWiqbU9ox#ixgQ2skq;$WZLn0{*7)Q>JcGz_-( zG%rzqLkp{qj~@YgoQwa<)#^kED4t}*9n7tIpdRf<7Q6TpI&esdq4F54Mx@YmEi@g4pi6JNr>KzR&$eDVRvZV& z_LQyEc%|82u7)nE_ki58)wGf*s&O6PW)2!xFsGiaN{*~{u-}NB%`m6+8<3;f#nvNs zTm6b6G^Y80lOx-Ux7&7555-u1x_b+oFs8>a5ZG3~vIvGOgyH=_8Zk~G&?%BH4mn60 z<0WatjYzne#(rqkE;eErbLu{!Hlj`#!f!-QZ3J>OXDzlKvD@mG6(KNf5F0VbHDasE z6PBNzvtkW^F+GNXz_$7ui(q7>xHaN)3ZWkPB36hS=86+(5jB81L6#GUSGxycSsdwf z7T=~}(IBO)?HlnTmWCm=6omb7gu;QXo&D7|AL5(~_TN$)MXyf>{DU)P{D+;0w>(NMgHwIw^P8sNsAz0YlD zEKuoDJrMhs*^G|Z0RS}aZ1&%zvwK>%RJI#{*m`;PC`(4FN0*mCXpu0sY0M@vj(~q3+}bzBv|6aD-@KL z_&My9H30j}P4*J4*jC%O&mn26IK6Thq6R-_kkPytG9ie1Ghb_Wkf9zl*~7&Ond$LE z-98}9L<{^GgzGS-NxQ=ss)b%wGfXis8P==8^8hP*(+4T<`RLVM7bYIPVw&9|kncVDY*x=xsFs0O;Veq}bTvcPQn1O?bc zDeA&(8mBB_>B4Ly6kfqaN;$}cAZ)z97%~{JDW!1=+0x&Lb`)HsIEZos-*AoD%y2AX zGvb$RRW^eKRS}yptv?pA_6cSuf-IF#Blx?)LNMpvxZxaY3&y`FsZ zs_y_z+(N#)eEGiCjfXe{3XfhLW-zvH{1#TvY_4&QQL}J$Q`;lGRSy=56VN?=mx%}? zVe=;ffm?xOo6M`0Lt&6lC$>!J4o4UEK0 zAJ_$YU)H^{l7^Mz9k8au*zY)sT117?-GpOOX_RF&2AY^)RR9+JVj?$`UU+B{&|=pi z7nYrFy_)9h4SqCFnDPZ1+R*Jq zmYg9fr`?Ktu|Xq|M_zL#5cYx_utI?SlEx=bya^e}U>I%{hvtjm6i&R~bcBNy20yRC zhZ+1_9zS~ZpuBL!tH_{f@)3ZwlE7=q>Cy28<@^KOg?sZNX!sTO19ZQ}fkldN`Q%NJ zZkZ`vHw88?LGDV8YQ{P!Ts={m<8#p$+A>U+VB@sub_VFyd2yay-tfnH%O0e8 z+^YpOd}kA8hj@N!kdBU&qCg7m_Llw`5RYY`ymNIHVo2-Bf;8qjxTiG?iIlAqvCdJ1 zFuf{*b%r3zv3g6#zFoAtFLK)GPJRT>e#p86Oo}sQDrp;MBL~z8(itKO6 zoe#5W=RT6peJa{Qz%i5HNe5QY^oQ@JaDj7NC?%YRQ;J2H8m#T?vOb1MUei6Y54ZW* z0w%CD+vY9(Dq>JHr%e=tXyIL~dbx`PYXhwjqbgiIPQC;CjqdM@fwtRW5Oykk0{g{g z4pq^=EybdJ5n}Rh#-CVRw^3?WaA8L~%#qI^{eIz-X!T|#TGtkBWo($yqwyV<-l^&8 zuOp$s&O{>;*KaBmN{Z2FbF9H?xcK_bETzTMpaqQicv-=BetIy?1@bM|ZxUM}hK0+Q zGVIu2tJh22di`dDescjNv++g^=M;~!*KZ7+B9+z9KAFnuiX~N6SL}o;YhhcV?*$z0 z8N_y(cdNZ7?NHC@JFtePG)!-7%Ta_bR4yGg@Y#amTV+1s=Pklybat(ojC zB~?wi;TR`at2-2WV85!G9w@7tE(gdW)szt@RZW?ppqiTNoSlets_8C%%N9X8w+G*S zRnx)+oE1n%1M~t;ymKadp7o26Fp{h7mbQ%SH6ko2sWn=vODJt7bMKYi_Xy^^M=)|B z4T7$fn$2vA#I{Xl%THaHg5hgYGcR%*dUJq`G<~6YTyCOD6B%JatI6wM6WF;3^N1Y~c37nC(?zy#7nt?3pVRaRI$2=W?fya(47y3Lyy{@^K_V6F zjjp?;;;4fip=%x4GS$9_verLhHo(3}7+~5^dKmt&@?F@@ByaW#WLTl0NylZ77S=oq zRMvLwM;_$us8addVeuUnZ<`^JoazI0TWa_@P1m;hQr7R*vOzat<)2oqwd-&KiO*~E zj8nuS`Iy#k3q;`*X>tW%c(ur)oKmUiv3bPeC`#qut~J=^al!Z!Zo#<%VaG*eov=$; zqtJVd?664NRgDZxU@j)zF09&i=xFvEQ7{lw{`^;u6^_X>GAwC-@*kUU4!@YY$;A&q zwJ7zSJm^9F&;Z~>Tv}hS#neuPDx$~X)~VkY)4@PSMSgF>`jA!DqDq>){49Y`dhpO* zpQua#iQ>b2ME>dy&HOsVv+&2yg9I){b-MNuq`sPmmUK{zx^_^Es&$YnAAL`jvmw$xFB|Dw2QsU#Ss< z?R^%;%2XXIT?=%4*_J@qwNEjO*+RE0!VZg1>2GB4f>gDX_l-?-&=_0fv}}+Qw)ie) zVKFR|u1A1_6m%*1kwtCG%JIk9uBs&*kn*04 z?5V(pV-?M`QeO~bEmZz2E3Yl8T&61>o_?3g9jRQVH^IFYS+w$76gS~aX3dX;9UZ%! zRFZE0B0o|$Nj_g>j_dZBg2@$viR(i5yiK@kNK!$}D`Mf=%{7Gp9M)x~D0((YTidtsT$~ZctMh z?}oQx#YJo;I{g&vuLfcqUDj+$wQ=94lB*Y-_pnzMJNUI1qnd z?K!jwr(n;a8PC{rVCb6_$^Slkj#7v7X3vpyIRDkylEYbf^k>h(fdx78`)|)-GVu4) zo+F9e@7A6piOC;~Jx3Dh-#dGbByzt)dyXU;e+2d%$>#iS?Ku>a-?cqQ0*gO7dk*Vs zZiQ@-U4ZBh)t>J~Z^@qHQ+lu^ z=b2(x07poLQ)wU)+Z*fQ^a+hQ3T6aU&2AB%`MtO7c)zpkxS&7Fjzcuypk>Ewv@B`a z@i8WtWk+2ht@V=1%KY~dmL2b=Wyf!Nbp^Z#8J$JVEr}j*7B$YeqsXep8Fx4%4mrZc zriYo==#?-mHsn?a%>(jt@CUu|Te9c)jUJ81Htc$U9sUv9b69s3n{-H@UG)msb8Lj+ zfwPn-*mK-}GmI!QeeF5sDfRy+>^YiHCG9!r~c011q%nY zu^<8dTS*Udr&q$9;~ZC2tC({v?~>7&l|2k?l zz=hIB#6IK0FU3A%H5~HLY@~(u8JE8l`;3nR!okfi%i5&Ikl4&Au^kP2SG8Fo==cSosJOJmqaz5v1OMBX!S0;Vw_yAt%vLLW^71l9l&Dnzr(p z)|);ED`s!Xd18xy{Tsv(^4ig)}=IOlPm6?E6i#k zZKjrS&D>es%$sVonKUC}Z8Nlj5_?T$7Bsmoq|Aak_O^NY0f5$7e8*07GOW!hw7}$zEj+m?XQ=% zn9t474I3j)=!k_AFx(l^c5qB0+?2KPCSx8Iz{bFix?>ea%Np z>a+nF*J&Lgb!r=AAV{4yl8vFXP90W-I+gzP<6o%r$=4OPQ^zq5jI>QfuZk*d<2pe& z=T27ZedACm- zEP?+*Aj8Lv#B<1#Zxq)B`iNV7b!K7>9T;5izrdNUB7Q|{!KmZe`jxbt+ntB4T*-O& zqls6vnm~>AH7JYLOs>=+amkg4BwM=&1uvPc5v8vQj*nP+t&|R@&O`u4?6}(*PMybZ z3`qBg;3YE z58kXIU*Z_C3lWK@Gk5yrCyHJ0)3=5q4KLMvXfOn6whoc~@)I*DKkX{!r@fhmJ(-2O zO89At?wFM2r^%XDmY*hRTEF~cFk*gUx$^wfBoK@FX#^UBVcD0ThG{}EKPl{De$x75 zpE258;inIx_vmsizGhAagj+I212?*$QG|8{y$ORcu$!;Gytjfhs)ZJ(Lw%6a>?&*5akxjV1r8y4}Qdo_{Z#1#AHlyOh#PdTrsDhyt>0vv!oL;nQJNWO>!E`Yn-5T!t$=2 zN^5tiS{-&0hQ-_ce)YiTb|zZiqGDnw>mI(8inQ%3t4We37}-`g-QVr6ICsR(CgIt^uK69y^qJL(2(ggOiOV=V9%oHbsSy!B^NCq>dKSf9KoVKE) zlnc!hULcCmn@7CohNz+=aa44kKtw{?{s`}Y#fr{`w^Q^wMQ0*N->;&> zOyv}vhP|1Edoqo?((uwRZc7%@k&TzQVFQJc`Gph)nU zAXz>PQO4=3?hMw1Vs%Gh7ju->A9Iv8S2*hZ=&Ld0B=d0RUnc6#U`4~JJ3}O>>droN zCOgJ$ebt!U^XghjhPz+e(6tJbg0boRb z`Ue6`89>o?4j5`m7ty1{yA+$}(hP0UgfvdI9hXk@V;*vx_Uh~Z1ml-rTmqjr8=tcf)uZn6NX|LnxDKNdx$v6L5w^BrcS(|>MU)k zBsWGm?eC~VJKE1`$MLdk)M;s5n&#fFgt!XCosq6uh5l7C9-Wt?D5YV|1~ebXe|i9; z-z^SsICx3CU71+zT1}`O{#0ZL$yhZPU*f7oTzDa!3(H+-a;J{zuoD+ADb=~Z1?Mow zkmXLQCHe+SyY8;2oYkE1D{iu=R7VlFb8Ey(n6D7*f4X*s=7Xn+d!l&74R2T43N#)E z39lff3rEVqsqmuhUUB1+6&^zlOZ?$@_fs8-%bofV`>sJ}HE3%dLwdcX-FC`pBi;N; zLD!bn$4|HE+m#l%lVo!Ir;U&3C#YdFh_u=gIuxS4U8&wdFu!pJ@miR zv-pPb}0Pa< z;08o%>DLX&b@gxoa$Q}f)S~&;cW@f7Nm?|Ik|_G7%VcF*u8u95S1j(~$&~YFot-U1 zAQ1t8eX7bNOs@tie3E0N-9*3f*aposm$P;4E4=Z&5rnZl=P+VAJpn4RiZDtKWWhjmAM> zIO;|?8w!Ndi#wPL|31eW_$?=FH64J%Mu7D;0{Vq-aQ7&Ztg)>s%$}Bg`^^#4qk(s;i#g zQvK^Bo4&DyVmSrpcit%RVdrf5Fo&V0uNV%O!rs#Bj)}mG&(o9we$F^6XXxQT&hIoTbsBmY2Vu8zD_1B% zx0UU>MNuF+-ShPutDFetba1MK@Zt{sb?ETh8!im!E$xME0*b}x=n(aD+F4;)bd)kp zoX4!3-?dDu?K1Q*^h0}rF?7NAqxd18*HyR)w4dK53?&K-BzN&Np~@BQPWysG^135+z>e4OX0QKPbU zRB+QSMS^IFrJ4kWUlItElzHl;5XhuS4J1uwN~pyGLuenTQ(4>8?phQ-TRzLWt=rEo zw5%2lG?q}&r7hb9i;69)8AB^p+G3^heZSAS&oeV2^w)R)`F>yWBG25P=bn4+x#ymH z?k|Q7U-2?)*wIZ~c}8vT)-`Nz-Ro{$!Y)|)x?`gxjoz_COP1BIO}Z#df#ZBr7lcP# z1AAL27aE7&3d&|l?5&|ZY;Ejqp8dAG zX1=wqdJ>uPHU+#bl>fqkZ<+(gdIE8LZ-GF32$w_q0&zLsuc6_+CMOW*iZuKSBT_3k zzcTR`MtoC@$n8!(Bi{Qph{DTpFE6kE^0@O>zEe04gS4=rKZ;lFK=7nvRBmC25al$s z^R)b0nSe}^yyxs>_bqPfFTBHds-%%8 zDEvEo&j=R!swv&DKNajdF<6+#_M9GrJ?G?Gj%(hdaQ6(Vo5tY7@b{ijf3M;(;vK#Q z9nU0pkYEhjuXl&9m(AGaVByGRK>7i zZt{IZ$b{`XdY^0`z5Y$UbAKUI7;ig_sgRX9sr1Mw_Ii^qYwShPHn(%CCfaEl6Z00E zuY=_xOx?Flk%W4KFZSLZ^D1g=bj|yE9z%+P8+;icH~5M%50?>?B0%kRCs$jcA4(3n z!Iu%<;}StIr+0&IvAD%@*HZ#_T0j6j|8a@j4ZZ__ff&8P7mg_xpf2WKZ!1_t&ONM2 zri@}tldvY1z7Qz;$MLvC74%!MG*&=pEVj2D&uuR)_{ zhk(^{2njrRMw%|u9%G8u8wnJr*fvGSKk;?HfV6v$D(Kx0s(<$}`L%Xya(lO_QbtkG zLtmN)7J8)3v)w6XdY!LUtnfNtRtgn=zI(xY`PBd{myR!rKy?Yg`lbOKyiS2fd~tY5o&+}f7_2;*XOChB%+N<2FUuzquD%Y%Arc z7j7%YmC(G${uf6{0e{0%k78t*_aFS_2aoc)3=vh*P}F&QluSmh?wDnWNy_-!CdjW@ zhCq&O#Rxc8&P@c&0y)QkoSZAmmve_j&N0C`a;^n|o}6nFx5~K=xP3YIdg~OEkPujo zqnz6oRcWSjE~cJwlylpvkW3cBaqaWNSm*}lZDH0>`Eww&h`A{ODV9-)O8lvk@|e`E4uD6s6Eq3L&< z@ZD<1wRg|f@XR!YOH*)o3gNvaNit%R60Yoj3=WAl-mB-k&enZ0p^6Nbt9P^%RkQbuK6$6O(Pu1A+ z1j`5utyRM$ocaqES}91l(8}S%JQ$%&r6v5hK;2X9Jgl6aKE;w!Z`*_7CX-s`SxZ@b zJqCa8E{!v<%SNBYaD}6F5Ul#jSmENUXnF=yPwF9z%e7!}=X{H=UJfJmP9g^uU;90o zfWG7_dBZ}Anf$$`kTGq(x(u{D8!BT5k7!A*OuF9=2FGm+AN$_p~8AjH7pY%viJDC8J4cDsS9^#l2WupBIc zDnjAoZPgTnKU!T9D*urQcwIrr9Onqag9!8l;URIWAUq8Bn-YX~AtA7wKtcFGoe_k^ zB*9|!Ot2VppC&UWvY!Xup-ta@hYCc3P>vDW-y>dGs#V}zs)cUMtJ!UHz+UCzRs(b$ za~PR;zie=@b}A~dom#M}dx}wPn+fw?Yv>j*-n#&?-8ZX$_x%dqJJT=c5!o5GOStzO zEVT-m0vTjQ1hNhYm)8aGYsBEWuQeD<^2MK)niGFo+M5u6+dc93twQma04|>R`zB>w zq4?{_6Mr*?iNAV65(^9EoSgshC&X#K?EY~ar}Ptu5S+0M!65{bQo8`pYnXqKxmr#S zH=6BERjw_ggU7a+@NFi%SAS!@g-W?@@&{93iOd#dJKK3m3f(HjsF^Y&Mzf@*9 zJ5?xIMs~%vnec5UT;8fd!~0KXsMxT~Hch3q5oqQab-h0$`#~&vdY2odd$)r?c-woh zp&nNpj6pMiC=bZ!$I);wwCTOVm}LDSGy#+h`+<9u77wTZj6rfczm?XDp_OpDSfcfn zc$L^#xkXsE`ck66m1rP4DObl#&vCd&em+5GdP&Umnp|%&0uZxOJHy_R zb$R>167cP-C}vrHF~*J|SJ{}(nrGX9JQ@x?Hr%#h9znA+(ho02Nrev?l#o#J6hbjw z@)SalE_n)}pY)yl+@IyB{U?45Tzdfl7@F4%^|dr_MDQ*nP#G38(-_CRRj! zf-CNS_{9*hKaB5NX38yS?`*S>;lD#)S%C%$^)&EHx$~dsM`fs&kvgcN-9vn{ABSv| z6fcFovIxCD)H4s?!om+Dq4tPFbV-k(R-M-)!YG`VPmG~OY&j~F6Fdo~gy4C80R&Gn zFN!_sFan{uW#=NCok(Rp$7NMR_6d!xokp)UI&bcUtor~Q)!L?GiT_BJ86#o_o^2Fb z%e(VMB#k##XkIf`yZ{wT4^;T=+>>i((WFjGnbrfRv}_q9bTANgh|)S#jxCEZ3T)Y> znRTC*>gf|i6HkS{QZCJd%Q9GN8R2}Xx&|S>Zg0lGQ`zUBxbVfYuXIYzHfdPU=nVP$ z+lrwXv8Z-EFbqjEq)gpPzmbxExh+ek4r+bNvs7HT)E9c=OygWdzU0*z%Tu zs@B3+)08jF>tSLH%Z|g1E?$@5{YuB?p)>p&Xu!rkN{%5{EEm}oGfD&Hx8Vx3@jNrR zP{|rI65KhJtwPty2i*hE>{2zP^F%zqR4E+uNuOgvU-=lByyvg@rHp(5!eKf%!`SUu zuOG2qTHlfEc9`eun_;G|zspXCd@O8-4xq16qm3?+8ZC6?#?jwCqb<3d6RpcYB2Yum zMsnE%U%d%2|!0iP~g`r>Kmpg zkHR_@szx(UiyyuRTE{^Q_&U0dkM3NSdSemKuTy}((B1}PS+070n z(;ItE3aPyPf?lLG8+T;D&g7UYe4-|kA76)kG3b4c8HR_)+w$OjnOdR$&pK&Zd)o;u zORlp)UUM-{6xS38D6^?h%v+k&j=)gpd{cK8+FJ%S|2KCCyu!^!>^66s9fqi>-K&Z1 z`UB|**Hxw>Y`5}-^JVO=@jTHV+^^7v*H}gq&0w8VTMhTl0NJt}f!Y!Yvr`B*14CJ} zh0?3-zzDT9d>VNqzqXW1FiF0-+G=9EzAqi2tq8T1TAsIdr;%uQtq^9fy&n<7+l?9s zFnKfWrb+F{gZVW%^j2!3iS7Cw>Bw4j1}3r5?A zH41+h!%YITFbRfTFftra94uG~@zA(5k#HF0iyFYee0I-+f}?k?0VW0U+uk_`7^!o| z=MHLId@BOEtcA%x&4*A$?aTp}L$CNxI`aQoQ;P{<#ipWQ+M+zfn;nP_EF|q}gKN{gUZD{0u{(yVyMwhQTt-V#2v| zSl_;2e%2$CI{Pq>55Y8@N}+Fc<&M&M)nw6rGFtJO?i~P-VGNGKadKO~H>B5bc$Fa{ z#=7sP*RX+HVh>v_$}u&zMM+`-CfvNpfolN>bmHC{Z49V4maOlm^p`U#n~{2p_S%>c zZ2DLt+IXi*KRvkzf99kz$u^};Y@5n9>j9->>;a|^mH!u#_A+Ux92@8zm;hn!rj8V2 z&)z*1sK5{NF(*uV&|#W}VOHe7!tD(Y{jzf>$BbglLOwKzvs)3M(Z|}YyzQKU+q~>5 zXO<~pdX>8!dDak&0ku5($51(!Bi_&Crg+|tL3=dbg;IQGp=&UJD>x_8=9N~bJTD73 znsQr?pQVaf5Wsyp`!Z?eks`nGalwi#;hcu_4K2Ohx1~n9Cg)Y zuCO$zw{U%l>AxOpYYngqOKXzRD(e26yMV73fhMrLzOh9!i2$j+CqKdvXq!UU#p`=z ze~wl#w?F5@D6e4MngLv{(S%sH-T_Q?e~zwOGl4AEFe07d7e$Y?@d;M4XOM|`WK zC{x?-%9Y(|vsz~bL33S6%tUs%J^lG`bgjAsATp8r-JSu3uAws!YUU%GJ~~P*-JmX4 zq_&hI4j61>;o!DkAsn~kK_ON{yrsc33!0;emh?T(AR~m-EI~I5W7vk-ARN1 zYo`g{X~N|cA;Qh}GJU_54WaSS%_X0`B`Ck%!Oh%Tu!GbAr!m{|G$=i~$2r!6Vy; zLbu*Z8^gqG=+-a8k-66LmTF!Csd({nZAt#E%a2Q_9I>ml+!FtMUA79jftpG*nIK^G zLsciA+6L|2N-fJ!IcBKt>@?wqnz1b^E$uDEhN>DLGqPWe-PtY5I&zX&mQ0U@HvNYb z9NS`OigUoqIiYeeOw2Hk^K9OjpoFm0~3^dm;kX9vTs^;ugRC85Q z26N2TI?Gfg$0%NvG+$wrNJh=CkJx6vN4t^tG&4;vH+B&}(+8+kiZ;r=p*4ICL0Dac zOwx&E9VHIc6%4KmVtI3OxKno3x-rXvN>Hp7Vc4W-wub|(OP>OTyj%{ zT+2Vd3bD287$(EY%_v+yo#+|O;h4k{_77kEC+Ldh zKMpNEAlu9?Q1iAwM@uMN|BBWQ^>5OtD2_y`{{cB&$A%@=dhV9{%WeIn_(o zv-WZYT{WnP+gKHb-qYHo9=)e^nTe@m6=Uj=D)wlysFznNn$hHib=6$FpBsCdx_8Y5YRxty9P~T&7Vem=P8)0 zXT#I0MjLD9Vpdo?l_fO+xp=FMHWj8}h1hFKV*gVQ`?#)?)}nnK;SfUu$D_#r39p3< z;o**$f#2ZojaQA!KHD8tQ`bT6ru@?x$u({2T|`fHTt-@7^< z9^AY7Vf=98?4lC4erxL4qEJsYmVo6FoD#S8KHR>Fl?sMLN}XL$J3T6f<@$igItHl7HTMZNPzMJuqf^-0H6)JmZyOyl3$V$MrI#MVM(lmR))o}idqxX)1(a3%L>Zaqbdx? zAjgOzi?T{DnMOTTUVE~c6<0zz1v1Y+ zkzTvI6{v`ODLHS@QmW(^YluseL=tL*ZsB0ydRbERie!isIa`aYC*gY)kVSRCF%ngb z2+FF8kY0LVQW|c>)?!7{@VFA4GdFMG06wBt*WSB6ey>5I_Flo@u`{C7Dh66NOS^)y zwqU^F$jKNCgp4L-uVDkTOUE+&FQb&uU9jj7^f*yeEbdt!zsJMk9>Jn2AB&hI$NgxU zEuR#Mh^a0SA>LL!`?7}un~&u?E2+nAA?rhzK+$B&+Pl`r?=nT#-xZp8Ftq7kx#r(T zy%$$`SCzPt`?li>%a21e;=C@_DxO%mHC?|IVpK%t1;0V+uQ4@-o( zx;0<_5l7yJDtd!DR?5?+>$aEoE73QSAIX9>nDStH|- zJR|z00uP-kkoo&K1mKF!x&oQs$Aa@lFjgf`=6lsR$Z8zIryiqgZuEMy)yNzCq#Ctj zIn~e+4AnS_N|m5d*a#l^Ph;UX`ySxDx!J5grB2+On+#xNh}@Q5YlSYJfuU^Jyx=%E z^n+4Q@-z;wm5ZM7w9MR5mx%wSr>4=c}!Q;Kq z!20E0Xy77sXol2t=xY*r+7dDr_&P0+LZdJ`h^0m?z8>#;Es^ ztpMZc_8dMePq7z0wE@xc1}; z*W^iNPm@xWPmZc~@5hPKq+QUd$i}tZ(IVi$vqIp!M#Rx%9RL&ztjw2<9+j5NgxleM!GbJOT>b!Bqx@Anavp2g=5dRVViAH@>X zwcGF`vS%)&e4f7fC8ocnEPEA#Ll+ByS$k4Xp$ zc=I+Z=^o~msrQ=smw*O6EmAiJ8aeVnA1nY(5({XOS3t`u4K4-j!xRLdY6U20X+=QU zVL*YVVkkgS1@-OlfReNYK)JAKz+*z1poJFaE4%K`m@EbCImDzbQbHWmsYNo49&X1Cun16BjwiCIj)g zs>L_*ivW?FwS52~nv{U|v6q_p;7J#NcN)NvG4vL@egu6%LD!R1^~h;aYC7zdsxc8F zd%CDg{gT+*9cm>} zAp#TBv!wdFn3OeyDx#E<(sm)vFYVa+_%W|E7`g{mw=uia3GHl=<8yV=lF(9G5>i?9 z0BK5sSCpPOh~^}B$V)#l;fSN_<43(hjAXIh_%Vh&yiwuS-Vo5pnlUeK|z0%AOlnLpFmgS*)upQ zb*$*z^uE0kyy~ea&}WKM%YuK{S5;1u?W>xgKa=>Ao?Y6rKXJjns#5xTUWTQ^!iA6t z>{P4Yj!SuIfyKthDW9X}Vf8#2+V}~?tD+aoh??xmCMz0G-;GoRQH>;Em6?;!k>rpT zJyYnpO=ns&r_!_0c&5>_PCfG02>my!pVI={Y=yMgm2C4WnZ+?1?>CujI@^S;(fDsh zD>1&sfI)Audzy>~!o+_^K&n80%;fAgIin`=ZH!!OJonI3r=Bl|S*>vlnWrIq!wWZI z8qWlJW~k>{i)l+4Qe~pc=$U3bW9gZyp7$YXa}b|Z#rWJX1PGzvq>!X<3Yqm;?PSSG0CU`!CA_0pd?N~{B;%ZkC$gO+1W*)$$~Fs#eziFsdWV>0f4GOXsk%A(T2TFrQd3DV)u6B3 zA>(Vtke~pbAwvN?Ly7`;(+bHU_!)8(z%wK%fM>{30Iy0(vn8Q$b@Hu@l3N}y%%TAx zm17u&0rnQ1DElPii06|`*;C2mkxaR?kYviNN-|>x@wi6dc_hn+=aDQQo=38Lc=HNL zCh$Cx<-_wxmJiP(Sw1|PGeCpg1tc?oPNVW-@-=-?E*2JT$@E7C*t-`Slx|nXHJvOc z32rmtQTfFiZ1U@oIBNX4^czijC9y9w4BV&@BDwVIOnU9GzFhIsd*RVxc(xgQ^cPoD z8aOQ`Tz|2!B7UrY3`_6f*<`}?H<#WE_uzYYYP04frw88)j}609MYu1@eLS_XLe8JlvsXRQ{3;hwx zB#xTMTw+5^vYS7m`H3|$m)KxPR?Llfx0`0tNQ_cI2PO!vYuY^Z8R6JbC1dGvNorM1 zVg6&rGnJmB#v^0tVf9d9w0jO2Pai!8jprae2aM+!Jp;ybKRx}%^9VhC#sfibn^zEI z=4SWoGBHp&ZErh^*qOYIfYe*@WR*!qIpv*V=;q*AHI5^qgo?DG)0%Pt~PgDp{ z%8+|ZbQwK&8IKH}o7Kal&~ z5+n!X5zXTdd`gzwz<0vH(3Vgb+7LMy+7>xHv^jDxPHGwTJ0SD;;((5vhrE&VxHod1 zGG*=1^fEG;I%kx4D)LRe<%pj*nwq+2HcMU|22LAz$`Lwpn)(;OGc+iGXXsD>?~H+G zXd(C+S`@%D^eBL5Xi@+#Abr!+@XO3lA6KNxQALao;B<%^m)*WR8_YO$~C14Tdy_`oor=SR-?Z4SF_d}CYqLAAMS>&oF~iLr@P@kaZ`hEH*6O-dz8E3UU9Rxx*NFfB`q5m z-3@n%n^MZ%uvy$^Pz!g%?czQy?%TwDQrsKGeL~#p#63uN&CO}q$mVX4H2`^j!`<+p zBw*9H8@R!w0%N?D{w2!9@0}|$oTzgSIm5a+w3w!641x9xYYKukT7;e-I#ohhetzh* zR9{Kz^tj|hSm}mML5w$<$aYr_ke&H=O!NcpKKJAw{u%2t>pth=v;j5)L>|E|2Q?S; zJb|OdnO?5zxxG_R6_W?g%36M=``pN8R~8msnT}^4W~SZc$fU{BJDK$l+p@=TP%I-G zr@e?t8gT}Tnz}xdI#KR6oN|+=-L+?EXIWd4PFlJ*0e0b1&yeyYUKiIzte^|K$_jWl z_9ZUfg-Qm}4X4t{)9JNm_CM;IZ%7!#%qnqHT#8E1vfPxcw#_PaQ+*Or=BE0^G1g5D zh$HN#4$v_Zxekg0xekc~xekj1xsHkhxsHhgxsHp2H&_;@XX!Xuo64gdVt}PU$hzqX#Z9QF_eu=rPly2dOCZAQgokq@vIR_By4_LypKzsj8?EVs;<{VHiv9DZ-%Qi=w<7i@R=VRaD6q5L{`_A&Vnt4Dd+b-A&~ zY%!5KF*g-uv)q_og7Wy zI?TO`xv7S8j|w-ZV2=v7stjAQ#p(IQ?$4h1ZR*7$Y(sMgo)}D>EP^e#a&O|IioRSi zkX$ohAAhb0Thl6koIIYsI+&gnOxG5>)nRwxxSqbm6R#oRI3md!Od%c`v z!IoNc{e~XOufkh}_F?Ri7<%Nb<|@X}F|=v3`~$yL^zDBXR{M=?TJql#GT>OWG3Dj8 zCA>WS{Xo2G9pNj+w1aPnd|hMs|TeT*V`mU$l_`An*RtO(8YY8)E~Uh%%f`_eOu zpBTcMJeisz7w-s|cz;VdSRxfdGh7`U`p*pJu_8Ua_=y+XDN@VnL8u~F&CoX!5|h(Qc@2GXvHQ#P>XKI; zExOH*&i&$MtSas5%KS>TIKwHe@dO8)WLFB zMIV=so&h*$n(|!v4W)8FQS1c-EX2rcHClS>#2L6T6x$Ix=D>&}N55(oLxueX{xEg0 z7$s9~zT9cw#N2ZcZ(o>^eK9<`YIh^lt|`gXl;KxG>LjErQ!}n0WbU|3%_M|G{akY= zWoo7sgw#yS)Xerm6wd4nQPNy>I*LJdD5ZURr%n_LWu46Wj#l$4vwz(qg@`W==%X#ggZ-SB6IZD{~i|a zfzZqW#Q&0@8%_XBy8dJ)SeFUzO0ONvl%6hnvFP#4zg@HjSs%Lj=?mP`p&txzq$$pn zK3&o0{&C~}P-JhazeFVGx$@Z57ZPGE84J43S0O`y7)}aXvU@1EFQ=2WzaGh4sM527 z|1L9?P-eB|&Mb!bMPzDzhbU{atjv&H@}INGzr4%gR51gN!lNObDrUf$Tg_Z#6*^-K`=K26=;%|SC1?P9p{Eq; zz<2I>nh9tuU*70sBY%(ecnryI4{c4ff-gqmOfT1E-Co+)yp4I^;+Dv@W78KP(H+%H zq;q6BGw426aW+$b*p=5Q(b;r7Ps^b|s4m#1&b^B44iQQROtk1kkAX9o?q%7b9|Yf@ z309@0&`fXxRh>V520}S<7|JX53eJQAbPP;13sbN3sMKR6m8WmnGTZGr#W^X~-)Mva z0Gtnn@2+>KO)B<8+Iwbj#wZfdyrt`!vhxQG1c^d|fNf$`=y`VJ z6w-ikfl#ap>Fo&Qi6tjtY9z;TVd|I|c|_vNxt|)zI~Xc|4f&V@oNe|zLUy6DvB(Jm zJBDCFY@kbFv&06lt`<#<8VFZ#i`JpcD3=tX%YaOjyDpK*QWN?na$1-DaVCtX{dszua z0*;^1F3YItM1YORXr&R*5?Q9ZJV6G?kytHA1shH*GAR3mzN=$tOE42<=IOx3CQ%>& zGjkcj=`L!mdy#8FHlP`UAKQMCi0)>ErsJc8k|yDV8dTI{k+r8x)0}3O8q~Z2ctz_` z{8Otx3D-)L7L5bof3F?~*IE)Md73i+mC)VT&r&vQKMVJ`Ff5OsuBL+Eu@V`^nhn&K zl9`qcq-O`ylhRd?wjz+R?bV)(2zxHl*{q^nd-_P^bgDmy$*0a=uQGB)bPnu8hE1f} zg0xOomx>&h8!qO8F!H9d(}(uh53JFg&Xf2Bc^5J)wK^$Xr=}!bL=d#8q#@{Qih;f= zH~6ysazjyV$v$kS!xo#Gp#Bu=PYHgi&Zg3zgI1OLD!$fmn8dTDgpkkC_xES_n~EnZ%M$Occyj21=FOF3HzzKvseC;7az!7YsS&8wLdxHBaJ3|$ zkp9pgL~9TBJd>!vY}5TSdUfUd6B9B^f))FRKA?(ia z+NJv+%}iI@YcL(W)g7ayFdXy&cxa8V2Fwg%(pi?iwzy({<$Hke{-H6OD@)UfcU4#J z5q!~vvmsL}2X6eEOeu_)xB&7ZpBzShUt64>@xh=Qd`~sdsGJ{M{k$oRJXOW{n#|9s z&#H+l6FCKOUz{Gp`6|s8{|?~{v&H+n{6K*rKq2eby*v}#Ny<{N7cIu`tYWmvf21$KAXStqy|O5vJd?A4 z4liHIbigva*N)rCl-H|-*Ey=zm7HCF?=-Ob`mOj{ZlrjBb_Q73w9o$R!v*|2f;|QN zG6wiul9~Yk;2U>LPapTk6<9acv26>72%6?sN77I_&FoxWPkQKB<|LOn={ z**B7gnDNC$sKHD@-TiX$@T%wb`;X008Y)3Ai@qfFohyn0|IQAddNq)kAG%%7(_ab+ z;y}Gy0;#eTQpHM7z5xShIR=Ei2S>sGjT-pjIXo(~`0?gY=ZhE1^yUkF&7nWo-KOkLA8rU`?43a@%(@2Zz{WC>Os{wMDuzc zYk6^~ocHy$;+OhkHH3B)gIGV^VReHb4yPItkKECNCVnj4hiWW`eq* zH8`C3F`T>ouR#SQEsH;F(w3`R(oR)3wez{CjHG2{2Ta;=>Xx)q=te@Q$jBJI>0;-vtzbm~_9agY~mFr;Ty1mNfBjHt!NWkqQ@pdYg zPc*M`BpTd4(cWa`xIsfJHyc`z&rCX=s@3O{81QR?@-42Y33{_;k?$oC<6?xyu3^(J zF(k@r2Kq&Fx;RrZCsT4qx-OV0U6d)k8)GEZ=HMofiDriAB7Vq2);E6JD(W4!d|P0* zC>WSF0NKe-O(@ElUzCa;w?5dsQpe`;9XpgBJ1$Lg6>yMITgNBzpC}%ccH(1|3xkP? z6@8TpixU@cc$&efgXLChcVvk8i$v_`_$Bc1&^XJE^OID6byr;4zn0R+(O|h34<&Bj74e;F;polXWfuD-~d_U$BUOe!>>(Di0?r@f*SKLKpzyyr%NeWOL=*;$-74f`&Q*VWjk{ye63ZDds*yraxEC z4JJ-j4kY(_{%eYp4@ucW0~}8PC2>-qCch(o#D9BeyAN*{Ztr0M9(>>jeFQaz0){Ir-t+`>2+I45LLcg5>9o z{J;u!5>EqyJ$HK0i~hDmCw>L(#S6Mafr=rJaTazdv@#~LW=MUy9=g` z4yG|2J0P56f5h)m{K0&}yY1x4xf5`|B-hS4Kh<#vo!k>>5NdEvOs}~%5V-06$@iku z^ZE{ZDZBsWqV+a!#$*A*yp>vyM1Kff%SpsZ{IP)3LqGB6cUVcGKG3s2w2?YOrn)4v z5aS6kwQ%sgd;oX=M~n6ps{;ZYh{j;(v>O0SO{FauhxlMOYGtnl-qsobu-BeO5D>L! z|Fk*#iv5N@(gZe{SUuyD4E`N3BBpDJ9*h%FoVu|H$n&rsG8sCK$bPt=!7s?c$&d_M zm>fAT!_A@UdHiDRTF40#5Vvawk3y5F}O&ilLSc1~IA-z(d{%!N(&HnUB1X7o+oEE>}%5h$k%!h+oJ=PN2sY%j$|Q*u~GlFa^_d9+{kq)e5ER>B;Sm!usNTL83k*MPUct;WuZddS`Y#`Yr=IblrFl%q7^ zyO9P>5LL?(;?5u)jV4eF@wplwc|-G0=~}R;E%&+zOxj)K*rZ*Qt{uyYm?K?bphn6P zub38pm|j4VyPwDgBH9|5N(A0YFsuqfTqI+?4+-lTN4vE^uxKjgC4w|xum_9o4DQi0 zTZ0HByR*x(Td)g@XkjZK2Ov3($83ZuY-l`o{3LDuPr>Gom>Io;GFszatG~ljVv|*6sK31@Lzf z+z0VX>c;*A2Nim`mGlGnH7Ysocw@_A3$Cmb%|u!Usx&3O9Ot_ldH6;aum6ty8g2D) z9lt&P8)x_r)$)g^IC<|vqf08|1vjM^VS$25B@j_l8EH5h<;k5Y#^S~%6AhlHcXhpm z4J)Zw7gVWC`f_kBBt)RokD$}|WqU&`%9D!hycCtVgprc+{NvrzOEBK8P9{-SEij2v5=3iJ zs!gwz`rlai0{|2o#h5B%qE!n-qpYhKQEhr90c5U>mk^PR1OBp^CR&SnioKd(FHiN4 z6AprY>W!zr020H;)9m$}dY&`BKz?|_!!#bJ$DxhebBuSl$9S7O#=8SGSyqgX43%f# zkm&&Dt}#seM8mig?kwDF<`_t7-N4uv;rIxCf2EgMf{qY34r;~`+zH{2Q$Rpue|F?j zPLN7ej~5WgCRqxA(I3-Dn*PAmFb&+PHZ)@&DOk_*R3@#`&)=v@IlfwkK^4U1W3=Xa zF!ER(Bp_Nzst8krO=&KjY%LsOWS;}v_)L%XvfskN%7WcE?Bm`)vKK_6^vDbFO9-qz zPw_e^jORZs)>^Fd!UPr>sM)t}bM_-xR?aALAg#rr2$pAvzK(fkA_{T8J=V`g-y-3be&>8YwW8NI~clqD4Zs zE<~8F#;o6oCdI-F>fZ1YawVx|`SU1mzG4(7jZ^)_UoZdv6+M=&kHfGAiy-K+^i9$O z@(}z1b#96gaNa6O7({MC5nm4at#nc%w=Q^bLxU5JOC z`XNLeX&5|`I*d8Nk%r?ap&p+Yw>sdOv?Gz@*&+-+Bie(L*q9gESPErf@TVWa^Z+!t zv=1xNw^<0vq~<~$23q)ob~$*zm*OB(ygNSyq!Ef5{EC-CV3g#g;Nl=frYM$CQOiLX zEB)OCEa6%Z$fDNZP;nyma^vlhbjWBhOFV1XEMpDRx4~K<^nkKMAAu5MXu$} z4!Rv!PQwa@+s%5&g7)k(w+`9tIsmYvn6E%Q{1|#`>LjKLrK0pkoH>r zr~TKT|8kW#ZMingdG10hU03WbBwDj4fry})9PBfDFX)?!U``EW`gP|NuEQ^ZmSNAC zl&-Vfg~4=Psk^WgSD|1-rw3*>5I1m8MaijfP-{%wH2;)z9X5f&syNPFSeC9UcNdoX z`H2t@7&=venU^0a{QOg~mj)}Acu%}~!oF&$KbBx28iwoBYfEOOelr?eQI$G2+Kn9D z^Bc_MF2L*og-pZzp(M3uRO(kukm|#Y21s&j&##cA2=P-kU<63*9i4i1G;DRL$3~}q zJ$lcxquly~MK8MbhtRS}Gy%7w9xHkket5=h&IBvm$RUM4b_4ckjOK9!#sxQkaFOFh z7^JMy?~SI4Y6ZW-u)%cw!O``{6kc#MgH8aU(UFqvMTsvXS?as<*u!KYokA01F&@~F zEjv&b9MO`|V=U2X(LRt*Z5my2H-LVrU8h{08~UEqY%TbHXWP;w}Ye456N4LP(K7~40QXXVVd`!xN`FMIMc^}@9 zhCZgm$E57b$CET5p6`>CU}=lHO-#xY`FMIMdE4_5UaF&aJt>ur=Huz5+$$*$FeN?) z=7D@Xy_EMz%14+IACvNtd_36##B-ITL~pZXnxdr-=Huz5oFOR>GbKI-=HYxiy_9^2 z^GL%0Q{rP%4&>wMr96pU@kbgSWJ-KA<;-dH0&SaDpa`LD-i#uwVe`Ti0c+2kKo6jb1ZFt+tDhSP}tkF8oR&RF%f7=%T5}av}bfqXJy?b*@K^ zqp6&u4da8TF6n70XS5Lra z4vMllXxa`k+l?Tj-CD*SE9cl3{P{>`eLYloS)B3pU(hQrz89M12=Tf78s-#1gT+Z` zAH-Z{%8i*R4`yZ&`FG>*T4LM`+GJ5_s%D&Tb5oSJcwPle>E@(*Ntua9<9dtdRYFfh z(j?_X*#sP;mXUrSr2TmW+g~K@-jg>O&0jx+{bBuyGw4CSOwR1)@ja+6sXkt&Bu5$W~nDglF!y)1v$uQlUb6@l6wez;iWfW1EMBE%GHU z#L$@cF=CRs*=77EcWAw{&GRSPXUwA~7EQ3WdEZ`piFa`}jimmS+L8MS&0Imk>+$Sf z9v1~R(#O0<&}nb8&9%Fhd1t{%ZbvfjO%;le=t%}tNq&byfC16uVT8uvvl@`bs%I{} z0LdKT)(eoh5tA`fiI6!=&5o@Pg)pX^p0Os`1bTSDlQCuV@USaA)9LfX#4WI`! z1t0y@S3S`D;G*at{SzcN4TSVN4;adS|6*`A`{^M;SGG>Vdj+!XNze(uOZ~PF94D1UR#)E6gjgcs&q0pv^u?pZYG~&NJnvFnSA<$ z1z;k~=_O?ZSO1=LLm3Nu!q@~(MyaEeS!}|TLZbZTQAbMA8aU=z5}zG?jFf7)21YSA z>>4%xTzXTK;T~KwGc3Iqul-H)t>4Dd@$VMY&(I`RXVJQU>mU?>&=M?M{Va4V&-k*T zCm|`TI7NOf)AyX-Y2xRaUykZCG;9EnGqW|lc?Zk!xYguydU>Q5>7evly_(N4ug1t^ zUnGGrl)iYuhERUA&9CKyQtI2i`fHi^sPX60d&OwW*uADV`RToIEysJ}JXh{ApuBz? zzxYS;nfr!w7?vOc9nibA%E!<&sPTL0qsE_0?_pSK;HW>B-ivR_D`)*SHVys>M%ql+ zfQ@4qt3MQ4(odu60CwPJ;-`#hUFQ=Oe#l7nN3#i;(|5hrlt%H`B77`JnAk^k&NCOo zj#vyh6bRjWE#9QhQ2Le_R&oS&e3uJuaR(eE9hZ zoZt2bXaD@myC5(#q6Mx(sn|w7^ z1h??Bn)rPpgM+P+t$Y~l&aZ)Bp(UdbS_J|<=HmG;Y)IJ(Kg~#Zd^P~59Hs#r&X4RG zz)_X8hKPyEisLm4P%aW^1}?N9jqzwQ18P!c7B=hd03c$edM+_lJs0P2X4ScoT{sqy zNhxmFS+xtPSxKZG9;!M0P$FB0gw#fy)A&1yzd?kqybqzxgdvI<6ckHz>XoRHCU^uv zD-WyB(FNUprb1IY1AxGj-+C3N_zobLlVZK2xfbAsu|u+1P>vPM3Lty<3W9 zt4KHG}a!5l~)Y!IMjFfqtEsF8GGcvp5sgtO{B3THAAfkljgW(J?Ivv>gV5BY- z^Y;7_l^#AEA#Xk$PQVl$9}dqC3Oadk%2ej~)$-wZ)ylyUR0P-vaK@=<^5Kv?v@#cv zN0yQc$wTgyj<4H<=TFMWtlO`b4=0~K3dgS(=`$S8w9L%eDBXv{dI>%r9GRd>bNO&c zpW$$3XLu>NoYs+LP|;WafRNFkr5rCpi_4KDo0h^{<)UDz=xpB z5-0tKPcy`x545amfaOAvRS$mU>T;Bu`*dw;06xtBbt97Oz@SCL^aL-j41=Ua+eU1A6@EKngS_XrmFKx{F^DNfMJw44?`Dex#JN0V31Yi#Y2@c zb|g%hjhKqeU=7KcA`*z&0l0mf07C3K!%*5xe9k2wFeE9_aGlVKAdHdNC)KI*;N`8!c=9%%|6p6k8$kfUjZ3nGDSLe=%Y?CHcLHqJqH`X@ z@AXJ0J2B>xMx1*<&hr^!7}UK7TEQ){<%LxHnH~?sq*s>}LTvZRnRA0|XJJX?5|?-+^eL7qm%ORZtXr0xGJ@{?|j#g68Wy zuDU06AC9;jec5Y?dvq>xanX+iw8>Y$LT;v12~EtQ%j#-B8LCQmt`8d@v3RnJ6AK=> zgH;E+kqh6$%eU9d5=;Y;ja%ttS$Z}%s;2{PWYDcY;Yu&N^Is+lRq9V=>JRI^Ab5&> zQ0z#hg7Rmv@JUko9hNnMNOKcE8FLzCzdB8?f`Tafe+N;pr_ znZd!k3)0?}mzIZIoP$1S_-vZ|EVgDdrWz#Ek8_knkKoJ{f6{-y2ZU}aNnYrl%&iw` zf7~mm%6@IM6q$o^R|$*U(5^I3ZaumWF#EEcg6GqBcsz{=uNVIltfb|~i+uFwa)TLA zG)G^aUC5;Vj1%WT4}bQU!M1_~ysM`m0cgpmS92h4&P$=R1emu#!D~JN3SNk1IiX20iN4Sw^Z;5^#Z$O`kZxH|dx%2~9r>34wyhHBoNp%O$CSOW*7oYVGy?7&$zaB5t zc3RiBeW)n#{6Cz&rE~NGnw9o$R`VZyLANFTc@Efp*$8-V$ zTUPev3|tHNGsYoH?xEF}Y{0iMitMbfVv{6Df_3mix8q> z35*$!c1<^9lo_!Q19@T9qVs!Ob*_a}!FcCDjil<&rDiz^AZgG^Vp$vkhSac&5cwqj zjswUc{63Fgh$FlHlq}5_9B%f^B~Mo>b>|Ni0_R z085xvPkHJoWI6l!av4JfAkM+;d2SR>2S1NMoI$R562)G`fTI$CT_I3gd-u8ry^&pe zG3qPpC2gn}b~A9N_y0l%#EIcRXya(OLbt!hYD9|9R$)aA8`*^tl@TlPp3tp-M&Zzg zaAi+m9hUUnF}T_g7n;dZCWwn)!H$bXM}P*B^1N%$VP1On=xChX0lVzj}EzxAb4AScne zD+8c-a%f-AQTQaf)|%sH2H-^NxbJ6HhN#6ZfyK;dyXST z=pmdvuqsQ}hc-UQl;Eiwi`|_E5akNEbP?L4=%m}jW$y1`5DTPd{OuW@sg-g@&$#=H z8@#(_{i}l4b8Mji_kDek%>`&z2i>RA(ws#H-JWBBi_?9T>Cvf2aRZ5BP_iL?S4L3h zxqDaLm0OrL`7{@5u?y%1gH$?0)KCgHGSwBIm6~Z~aZh9tqSLE+<28)_6k?T|GMV z&|WAymA4BaLmMAQHS%kk7Sd*dce_1ABi%!GK@~@fH?Qg$L34QfZ2bC}cgZpB(V&bQ z{96!X9q5$&bz13&i|Klf1FjM>a_nE%YR58g(i^`Xe7EM`__sl-2^;^G=Mm?oUOk(9 z7RZ1*n6+mR+cCa}*3U5riwPiqK=T)A#$5ScV|)y`Dqcq4!U^h2hF16$F!`1Eco`<> zZWQ;-E0PutU!&{caNXDk(NRJV&AVrG>W{bF_=IVzOwAdS*uCZq)8oV-(l07@d!>cY zY*A1maY?sKsfRB`usDOEXr}lx;JJK6_r4JNKGl;wTidrlAb9O1*4$>oJ ztuJ2xQI0d(Ewax8>y1x_+*7QPwsvCAarei<;_L$igO;09>}o$t7O(#}i_1a-=v%Wa50Sju*p5 zimcxVVQqY};#27i8!9vH!pc_@(>(d8V}&9#@>uc94Ff!k{YrL=x|6(~9TtkhI1 z5DfK<=FmWSaQ6N=AaaliX9v+1I+7H@Z9>X19_5J#Q-@WwbSb<(3L#!Vno6B zUpMG5@CNj8x&JpOFJveUJyd$z`Q=4k1wfVcA7PKg7@FlR+hAvDFe*0Z^cn1CsSlxP z>n&j!=`-j9!c(Mg5&O)K*j)dUeWvqm^qDKXK2uwKw%W?>gWLi!RbOKN%TwImLZ8V# zN%_~y0ap|;(>~IfN8h!HT9~JQW&cq`r7zj9I|a$Un92jh2#PdPB;h{p_Vkmb&lMvX zY8k4z4V9)xT_Nd0x4#pBHP1PML}ap2M^!}~Ns#P7>*#1lIUU;g9l?sjac;D`n_&=J zV=A9cB-|I@B90sW4xIG%a5N3K1HJ5Q4M*g)7B4m&GXjn;Vw~g@)XYDP1p&;B{pB(X z<-UBi^wFF_VI6E;Jl`}rqbD~Nc;d0C&c=(V;)HYn zQG~@U(6F#@cDkplO3orVIB`pBB$L6Qg#?o5U})mwoeqFu@tKF$W!9>X1QMrI_+mU6 zmz$bCgKXR&@=LEEnq7dR-H@A~D(C4}EN47+Lh}vFpvj!&$Pyc8zox9Azn2+1=tXC1LoDs z??BLK9q1P2DFN&6y2p#T29|saO%UaZYjk!Q5CSQsL83fW5UmO$h!*M^q_Vli!oCnC z=zJ1K7)*;omdHeGEtR}-{4GODJu+KYQUQGfCv?kS2`%}zCoiSy8_@GUC6m>lFk>>2 zgHep8ffpEWn)rKJ zTMEq@7|K;N>-r|8M+K;Y9 z0~f;4{^;@V1fPFH53M!tYRkKu--iURz)e?XJOap@CxLLFP%MsuFtY+le*vEyfS)kQ zTwQq7eRboLiNDr;uTLmLgQ>lJHlPxm6h{YdnwOjl9BBlJLXz1NCc(!giYRPjHo(Ih zrx(m*qilWOBGl7~3a9!fh-R6yPl5V-Gk4zcL8&|}c-J08cGTTrTRuBO+ zz`TW=u?*E9yONd38Asrb`kb-M;|w;rSvfp}6qMBz2o5M9huM+MzJ@5Dz#n-8oNr%B z-t^la_A|YZ^9vX^P?)zI6Tz(`DA2ky4C@ziLLzy$BJkoXoP|*`)}V*7MqFH@T~SV! zNi3-9a0e5P$e5(M0fbw#H6^$~B2iO^yRc=8lbi|Ddl3-bO`K%Q3s<6aH##J~D#{30 zPNE!xgGiY>K*bAi>=E*SgLMsBEXK2>mJCrVkHaOS7LW6wUF4*m#Z4>%!kUXx&wnSv zNnpy6hQ?2HNFHR>I}s>O2wDzR^dXd(a958k3BqH?PZ!*Ya5C>s1YU&@<}D(_*I!ha z8~H(UP)hzD2)+n+3#n2Ceh_Og#lv9)EMu~6NXdQ#kV$}|oX7&a(r}0XNj>08DJj*&)(x@w9#9K@jE8uw_-UkqG(xT5z+ZuBnBy?^>hhA8hX4DY z!bA-?1K0qOrRHKCue`zP|I77T`hR!6kDX*G>bG=Q{f3SAQFLZBLaYN6mh<$_!m|u? zhsC#i5bhSVNQ@irvA-6dDzr6d&8vvm2Iy&W6%iVV`Vp@)lBH?1LhO`(HG`)}4XEk` z2H<*@`^bB-8Z$QeK{Noj7}?i@ckIde_H=DsYkfabn)MknJ4-?H7UnYgBPK7{2em&D zey~UkXhZMG-THVStTZaRtiG}m?0n@-S$8Pk=| zy>xb;_@HY9_DKr5GMjdp6n}H#rL&n$O~&_E;+tlCA@NNxzCA-sSw6W# z^u2cwzL|^Z{K{|W_u}4S(x|%AhBO`3!IW>DloC`(1&v#cY=H;$#;r;r^R;L%y@+J5RoK@?9+7sC;Ac zT_)cq`L@WnO}-uSO~|)fzBkKvoqRXS_cr<7F5k`ay-U9L$oF3PZk6wS^4%`q`{nzf ze0RuqmwX?QZ=Zbo^aUR8Ya|?Mci|1j^w!ELNV{}2G31pw9 z>r-?cpldo^d+EYSoG~(SHqo_7L&(g-( zay4CCZEk6z>)mv9(G{d?16{8|1#I~mU3^-s<=b@qnywvm@#J+&A6-w<^&fQcv9}f; z0m%M9R3Ph8b{ zQ@s3=aC@8p8E@>0hZ8OFa9iuj)gQ(bPS=v8%=SKH1cLmE>0cI0JA9;l?*H!gwT2Tl?yzU5WONKuha&E$Uj{o?L}m5F0{a?9zB=hdNd?uLRt{ z%JxKirw2_ulJ>@UTcCMmV|SoA*>qieX>;QWBnzwp2^!m$GOJ)Vz6tnrw0D_^KvTRU z(Gpmh#Q(_wEqy5=b+tDqmPQuUsbl)gS{B>dzN*6fP7ZXnwRTjWydbQpwX1P?8(5*M zqb1%6=3LVe4|Fy*wI;iOT6dre8M**YS+^~|>N=pl!fViuw#HTQKoc^o0d#5bgwF&w z1g-;9#1oxsgjQ<SD=q}XtZwgYV{2RBKEo+LxM&Nzq`x zcw^_%L`x@%Z%3(spKL1(xiQ`eK3v+>$nMbe3*(y_@-dVYU%K#}9_pqNW+On(KmwGiNVoTfN%?U6m5K||(Z$%)%&#;_J8@pS(0$&1>*SEK>O0X#4+|de7 zUlmBM`r@kg)vE%_8{68@DL{Dg7keuj6wne#(F)>pHMX&fER`hSzSeFq&8j3aG1Mcd zbPWkHG}nN-MS(h8pF=tc3d0FCzH6zXHWIPk=@B}Q%7F<=e*y}iGL5TNw6ufo^>=cB zHHHu0$$=X>LFV@6X2@%CSIBpA;Kqu;jp$OzF4NuVV4q!;T!{|Xgl-UTBdySVZf(oC0q` zxGOyE%J8IcdDoTWCr*i95@=c+?@CNj{js+ zc>ZkpnJ(XOI6$7ea(u<4iJxo^uj~qk8*jW$yi=ON|3G4fUw-)|z^b(iop(h`yeZs; zL9z?DtY||goY%fO-nqE5Rfxu+b5+}#F#5+AyWk9W-H>eTjH5~r6)TuY^3->9yoEfH zxjTH>l_MZw;{Il&xaEyaT5xx`ymi9$m!L=Z0jvV*2&}rpm!2Q)W#^Cjn-QWwlUjw@ z6>p2LNK6Q`NDh_Vsyz6ldxLZsS&}Q4E?<*~cZI24K(wJ7OSfr5FAujgc7@y8+abZU zmkkSKsR>Bxa0kUhyb~yd{mcQO!|>=F94%%A#!%5*+B>1ABuqKOLlu@v!}FJQPJCWr z>ZB?I9CP8+z8VvdR^&ILPTps=q#AiedHI{-%;HxvTwbB={if4T*7SMs@=8$*R<*CX z45Ls2`dp#_kuD$k^WzBoS2uR9f;|3A7$b0^vwaQR>?s%oMKWV_K)`jK?a2;QS`g_H zC5G}i5?#C$<3&?^dGflj7huL;-{0P`0%A_QU4VrFuLF(O+C?=2%3Yld?$8hyVRVN^ zca>@g7cPb%=nOB4ceHmV!sXD&CO3xzUC>Xv+S`)UK`y!Qvb=v7DlfYfdf(+p2e~o+ z)A$`fJ`fI7|P7#1$PKfp9t0$MH> zBIao+iI&!`Fw~4B8fsM>BWD;ocz6Yh#DGbSTC&aO$mzqZ)3Mk`Nk~6=1}iA3F@E~a z`dqfFbfB(){x8Yu{gHb9rx!@$R!p6}W_f38Q+0Js&2&}&IwJu;cJj#Kl{J`t)PgtK za%rcIki9~I4@+5bxdzX>>Z+0Qj2QeW17mS~CD;n%;EHytqa4igMu^p|iI(up)=r2t zqnv~}P=6#>Ayf2%5o=pf5bS4~{7F&))1Xxei20`Z?epS|&74BzDqnGVL6TvSQy6*v zY(fO`vS!PbJ4xvzjomc@siq8%2?Sg<*&huae=9gv&*U=jNi9_;jhL$V(Xs_~DZcy;Kf) zpz<1N%J7)Hyq{(pu>lsKX;u5^s!6uCLD5AKxiX|jXgcN?G0mrPu&$1GCa9^50II?- zawJr*hOAr}&&2=-{)4fDR+;>N>+(Hte@^{XRRP@6_DpDhRrwcJ&4+sd!heYDXW>5E z+`I|t*8Q;TvKfp2^pOu#>F+yfhl^BE5B{SQAe6@RoCdH>dV4)a^!|5Ou2O@4}X`DJ-o-eee)uNz*!eBiW8ad%Dt zHrT)g_~TaPi}8p15(CWmC;YvJM6V&iD@gDfw#b}Cg4aG52t1Djzdy@1DhmAR>}dR6 z5P0ouDDVmrymt0;h`R;9X9Gu&09zbJ){_}Ufb0uJXHW28;-#Uc%;cqMA`udP&58U|cgTJE& ze|y)Dy`yT;9t&ywf9re~9K*{S?njb>^gp@cmgaA6{WWOd|0{?`@=y3Na14isk+p{E zWro%~$(T_5?)YiECF z=-^c4#|8q&{Ph3)olAKLC;uPiO5Q(_GroU#`Ik)}JM`?QKlr)-hrM?JkD|!>#!p{n z5-@61R77N>go}!rK!D(NLJ}?#VN4>TqM1Mv5)8?Z1dNJ0NbM&f5j83( zu&ASpii#Q)S5(}cb#Y~t)wn`#1p5Cw)jgNa^jz5YeV*@op8wZSQ+=v_b?VfqQ>QN7 zGr4a2nWJluUAh_JT!abNy?)C@+qbMZbKTod<9o58t8aPactW}2&KFL{!$;=(Zh=4B z03IHLPaqa#UwmI0pqTi>&F_mpT-xyCK9mbwp1_R}$D#ZB*LbwK{iq`j|HI4gtMA~- zG&skG&8&I@P4)LJ-xy|yf~ySqeI#xy{brm5RZS~{JwNw zdEg)67eiM(Jo5P>Qj>TBQYG1L!!P;rLlVBw0GrC`90Oq|2B^eekKl`BCCM&xzKR(6 z5+~TCV7?C1*bnj*5tAZIfl4+>lAa${KXLtBj_ViYx%yCfz1qln z1L>;Go`l9ie%uK8L5InYb|Zn?t><(5nGTdkb5T-8{rEK6A6`Cy`@c12OZinD`-TyO zKj(WR{h~l#02h|dc>#PNWX~A6Ta`hOcu!JnoIKa8aN8zI0z~AfMy#z&Jsp3J=#4xQemH4%{1Y%=r*& z<{ShEuo(v4W5j{TM8nQ*31o2myEpzaCY-jq5A<!R@E0*(gU|o# zf8C};|M%?=sL8{+3cEaE_k3%jvFsml91_`v#Wew+OiW?wYJ=c=c+o!4(MGOVjN!+D zLrfUTI~3-OLvd`k5%5Nget8fD>kEg@;e1n_wSA#yhbI&p#Epn)d3a8Qtm#JX7>07& zOacrJPk0c-4un=7+ke4_3Cc|hCd5=$7Qdvx^?r#!Zy|6wmANweAQR0*XiBi$zmX9v zH;~JHh=A{*>eq2GMLQE9t^!|PCt?>6s!vlEWg}rEf`hp(Gjew_vDzSZF!7Q>v@!9v zL2PGYr$KCE;-3bAh^QBV*$dWxMz&?ePA(Uyn12899)XV_beTbjoV6g%(n}ES3x~0Nu_*>C zp9SJ{ggY3%5+TSD(CK5t69U%9D7q>lpPjbYY=>YxDL*w*OamNsi2O-MTprA?H1Ci4r3gP1r0_>K?ff-$jFX9THf_rXkR=|BR zO}vd}Mp-Q98Tbft%?l?YdMV8)$2LwE8wB5T6@vnnKamrh2tlqa02@Lu;Z%dLvA|6T zlUWkJ2K60!Ce=HDU?wvV@M=dG#|T+tIz{t57!!J%lo4J}U@UyW0<#z_&Q075mqA?5 z#6p8u#Kdg|v5<+64PpTk#fG}8n0VhH_A=}54Fb19ySGV!>F`gS5>T(u+cijFF><+J zwLx6O#0>_4KU*D|HODi-Gar{3!^9H?aSju&7zCm|#=+e<28m~@A`dPY99Z(VrsHFc zT_-j(;T(WJOep3f5GZ#Qo2mmrTz|u78w&o+o!bL%!c2Z-VmO!_z@QO1FTiG4#xFUi z6eFP&@`;>(B879r1@<}2ew{&+40f!T%fO6U4EC2WaWM*UIg#T;N;s1d>B!-PYy=u( z5PVPh;RKr+58+^0o^P1QM4*6y@O`A42|!12ZVp0_33KIk1``5SS-{ZJ@EnGYLxNar zaPF^YY$L)pF8l#Lf=pO9JgsrUO$d~05IiN)6$T+pimM1t2qq&4XTs(cWb!-{0VZpi zFii+gA|YH7p*8kS;&S1W`<>r%r2hCYLAgU&9pajgPe$FsAGh^^R?b1F0Weh2HqIIZ{#^c9&Y2tD_Y081m5Va>8pOj4d&(eiD>}3CX~ahg3Lh*9JIw1C zdJ5|LLm(%~sOv_~IWN4fpAABknQ5>uXIPy<2p&**CHGfQ1zZ;|WzrdXWO!YjAh=y= zoO4uoU0)f5D5Dv~Q4Bk|PhBH^gT!E6JZ|?Qyv=O4;e(YUF19?=0(v%*d0ivSX*+IA z(9^;b93Z$?>k!0};C~IuUhZw?`YD2mt4UUF7RxyZYNQePFhNbS@)`pkOw7aN#f=GS z;#!Q{AqXA>x*H)nlm%FU@DT!ijbMVB1h@#f=OA2<5L`R+y>KZe0hsF=gdaG!6T!qa z0{Ul0um(adVR09*DW!(4t^Jh#{Fj0k%AlK^+ zLcks{2myo5O`l~jnar=0w;iD~xrmATPcZg9xTir#VU8kav_Xh66AgkM&tDa=IV@DTbD1XunK zpr|e!+5v*0B8Q=)Kybn|1o5bi331KBXOIYovWquQLxI(TD96x~!^>tFL>^~f8lD4a zC0E?UIehU>j0K;=W_2Gt3KQp@hL5lN>%=%FY{)K0EUrtD!g7i-iwr`*9xw>O0Cf!- z2N*+n_yrd-d@rm%Fy{{Egi{fMtsfIkfYBm`j7JdH9DFjAU-zeGgFr;|dxPj=;$4H_ zd-}v6`g0jJ>|kBL7zA%Y#Xt(?uwuDlPRK`~vkijpsW6-fhhD(B+2OethZC%qX{f6r z8E;I&I%uk4BDfWLxhfqo2XWQolLg4dvPaDLOiX5iEuI%pBIiH3lKdEH(%MGf4sVSpn(o%!H*MhFDzPMqMJOUpRX%S7V69-&7+0N=C5U zIR;eZT-2xBRW}0~RNpw{q87RfBZYo4h~-SI0A@L24-;46gUbk5y+H`rQiDLIJ_b%l z%uqg95bMogUA!+35@^AQ0Mx;KLDfSr+1dZMfw;29_+|ufM@Zui@BI(?C3Z683E96LHzo^vVV76oU{j zh?bLTFezdtH3kzm6G`DrDv-i05U`sJLcqWzD#2MGkXhCgMW5$~|Z{FQUZt!cn>!zB&`+I=FP!$u1@a!M1|s zvXR2Xr=0VgK?vB}1|b-HZV&+JefNKSX1fA{1ZOrrm*n;x%RSVRq!V52RxiVPUswYZ z8?e+XM=Y+RhUqOAWkwmquMEpG2*Ch~9rPp;Yf;566*qswhfQ$62Xcc$_5akUp1u?f zw?V|Agf}$YYPMYoUtChz0B|gAlM|fDLcb^y3YVPXR^up~1}YF(wv= zb3Blua}=;bgQI{w0V14Z)@+005KM%`J12H<;`$T>izRYSMYgG2ic#))py;0%6~S_I zjB+C9MG)cTrY|?jwXx8g#Vy#$ggv|kW01moev#7zA`gTp^BD*e$ABbGW^$XMlUYnG z>ldcwm!T8pC~{PTqbO6aKz#o zVw4j(^ZJyVJ{Xn|Y|?v1<(qj+F9FI5dW(q@@i7^($f+?1k@FgeAOo2GRcv{|gufab z&xCHM0Rl3|F--8XAp^0v`XPnO2-v9xAz*wm739Y3hlI1g*0427s|LYtdlfO2E^yH&fygn*~yq$>|N9e@W>`>k|Rt0x)&cAR% z%WWy)oUvF2zKKg*cvl8 zku&{#y&FY)PDjnbdh$WAo<-wchcz)F+VcTg=mH_y!y|bLh(gSVy zw^qdeM%*@%$a`6Ta=I{AB6ht>)PcAi@u@TWlV>9yZz4|Hgd=jq?O))89I^jPxCg|} zuZX%3yT3-aUEZI3e?#4f{XY^tfVl17L@BdS?iY+(#6C%)FA%$AiR3FF2i~tJM$D%$ zw;=Z6ux2e{#}N{J&NO1W68v#gb0*?cJouW4nD8|0R>aM>NVJY)Oc-AvZbvL%1$;l5 zYB(Mt)5D0pn3F$Yx>BZI#D2tspbyVoG8H0DYnACH#6CRIT7%eyZU5h|M!DM+I_Vn3 z4=dD&*pC_KHN=kR6xxHh^?8MkD}g*OD0CrWH{vS9&J7B!M4a}DLSG_oM?Ay@91c>Z zB5ub?LIdKAfhzeCw=PzxpcMRXQfVXN_LVCA199tGm5!Q&c(Y0q5VyUlQW@g34^+Ar zv1^Y?n-RM;mA+&82pgr&g?y*k=sd)3>>?`=x98dDKE%%1Hrj$XV}Xsn=k(ibbZi;; zK5nDS5qmb-=o!S$Pi=GnvCnU#;pM>Xwb7-Bo&UDc62$bAjh;sAZnx2=h+7BS=|X%_ zw{3`>W+ToRW~Vz4w~v7Lnul^D?Q|w$-|2Rmi8ytvof?>Ku+wLV9XHx(bS3!RYNz`U zw=T2Odx-fwMXEwN4k}%U+YtX2vFCm}y@J@c(oTQp{739Gd_Lkw?UaYu|CpU>5j!5Y z)9(?tuCdeGoc@WO`d9*4h#BC=e(H)4>&P<{=5NBMTL}ykbAMs4YG%Ja2MeM#Z ziPkawKoSjH0Df;I(Ky7Zz9cF|+=h4sV(DicLrtbrYLR|SGSwn>os>*ZBW}kZss9^dM}9J8x*^Xc$<&P4Rh&#eBW}AgnX(q5 z9aksQ^@!bblIa7)ZHPM%JLV?SsdeCkxB#&mM~>Gac3qoHTM(z#B-2-jn-O;*_TQ9D zC*T(@=!s;iM4YxYnKmPCPU%PAG@#ts{pcM0v_rGAAKi+$?V*0uvKal@){h2Whx9M| zQ7&TVnErGn#tZwc6#9v_8V;=ac#>Qvkj;lR5`2)7I*4p;xbEQuL5R1sm=4jdp=2y2T}J!q&gl#nWu@| zYe{WgOSbm4D8CMK!E+>epTk4C7lC~V{)b%+@zQ2G!{4jj6(gr^aUu=gTR$TDG@WV>;F7W*ZZTf~J*I$wLSCU%cm*Jc3 zX@2nbQ*yH(_4r9@{{b@n2$_E*yAQq^{@U*Q8Fl_bGJLkuz7O^7C!3>#$kB=WPRQ6z zc%MR&;mZ~HaU~T$aGs_}ayw$YFDEcJ-4~Z$C*+ z>o3{d{U!GI3VglN3O^5Duejjn;p^=_#Qvis$#b+Mr=}urtR%trD_(x_;XKLiJ`a3L zC33nYiEfnS)*B_sbrZ_mEXf|s378k`?YBs3st0v@Buc$ivNhi($!)huQd*N_^E5%; zCW+E+mn8QcXv-bohsRvrXC%q_tVC@ugMJko;*AoyHXxZKzEC zp(vLwlP4YV2wCxsM7h&t@{X1z&sbS)8w+}zOsx)Ca^}e7n20!6wl(J>%_&Q%c#z<{ z41bql78Z$DqC<(taI!oK>j+%32eWf4VlNgSK0sUwY!M*8LN+hf9XKUbT{hSgR!gaH z*UfnQy%oJrNhEo}!<#}je+t<%j-=$)BgvkM=^q7-#OrwL8>!@t-kfe-a#Kn*WF*hSdzTcBx;=|*-{H&>zBY5E`bd?B{i*3vbzgmBZ%7&`wJ!2S0vfm zizK_FShBYkON!@8*!q={-F1~@Pn#`K#%%DtMpD{b;8QM1o(kB0l_U|yhW7zU%2+8W z?T=s#d0~IA;eIP@6}H)avaF;Hm6i5ku$u|8t!;u#8RyDM>UppYhir4gW-=xrZ>lWQ zG}uaktfpNe%dSgga!;34=L|WieTJ-foHFJLS%qE6?YK`Zlx1h3Os+y%@?I&cSf9#t z6>Rn@+2+A%VC&W3Rf2LZlyjk+3*~U1RtgzP6Vpdyszb5h`Q_1js{syYXr|m81ap=oVrA| zW!!|Zbu-%M!T9mWlIvEPnwLV3rH}*XTApRH&3y;jb_eQTE=zP5_}(qsym!lr^B&ya zBTJsg(2f?+PeP70veddpR@>Hq|1;3dGqT)@*!PUA`f;DO7ILhWF{dDZot)%aC(FL) zxm zq;7+J+rVR+EPHU@ihJjKsPBEq@ILT}(>{=GZ6C_dD6< z`X2Z_vYhdQthj!}{ZF#w?13x?Wz~NW>4#);X)?To0)MBdPQ=Zm*c_6Q)GR5ALsrNs zD{`u;kULqCd`Bs&|0qRHI~wUnD{A}ExIadrwqq34eXOFmk5kBVoFZr7oX&fKBDI~U z*xCmwlJjK6<~v!DJVQVaQIZ_LQKYn?ip@0?^$i8zVc;_y_z~ba0_8_4N}B`aCMvRT zq9Uc{D~fA2aMvh`cab7BU#BRk{KtuwA--RsjQbU(8KE8bsShZ!;{o6vP{@b-*54_L zbEBfV@q3Nljf&*j1fKlxbhDynY=*p>A=jIV-2Nuye+%?micEh-om&;V6N@I-R@C>N zqWW-H>U)xk*&&fuBxF-CR15y3iek~0#mL8G(kTeRR0AcsT`?VAd4NIKLCoW5E%hWp*#xFtGx*9S< zJZrq&gkJ}0$7B1o^@y$UaC5X&<#!pF|1N}v$MX#M3^P9-g`z54j z?w8(g_G`b1D!j=Skiea9Vv7mh|CEEt={T}W>{Mhg%czT2<8!=o|| zwh@ql_|e{JmRQ!W-hSrWf^hy1`?WkAF+}n;W7`06?c1;IVU1nAw@$p;bi1>+NJ& zu#KX@!#cG2QL$!Ont`7U{KZl6Az7He5BMd(V~ZI@cC&wI2Y!2k@^D+zFh)~`C)U;i zV4c9ONKlp~z_$XAEpbA!uLGV&bZD46NWJ@Q3twy2j+L+vx?q`K%6&qT)mPWLp>oAzWv7h##M@mWNZ9iuKSe+^#&w&^=NkWjE_)Iq-So zIy9`;qR4J;>qg*PfPW`JJRWo4VQ`0beAKqGJfV4)pU1bH+o3Isice;|Sf5$=P}@ym zK9qHxj(@6c97t>4_2O~CKFphNpRvqp&2w;9jt&h-~| zXd4s6?*=aKq7DtmWO4bktqg$N#W@|?_^5c6a+$Cd2e8Y5V8(wDAHN*<)X5!MOVqZS`ELZi8Th-R;zMK3!p2X)7haN2fbV4&Hd8=yrZx~o1LJ3T7dHwb!Z!+ z%5T>H4&XD2JG5QQ|Eo7F^cm`Z?qA+EB%}C{1v>`%R985sPdTGTL!#m zR)_XnRJ>XKmB7;#iLZUO0`CN#U;0;fS+zGLkA=NwUT0zNG&?b$&VGyS)(brNMCpIF z3Vr_c;BMd59ooXE*pRH;H~g4Db#-V@Alcfs%=4Qc_@)YseeO%#N7}l%FYySCcF*h3 z9%kr&UbnCnvpnq6iz_>{rx^e5*!Xl{*r%u0cEmiFVI0qggX7>>A3oq#qW*4`b`aUlaJRW6GQ%y(0=P@4OR~`nw75FU3Bi5oHzh==tX8HZV z7YFd~$H%8)t=Itk-=Qb#_V($2;Ippn(3+y^(~NfmzY=)f7h3Z-+oKow-G{-y4fwq3 z#Q0l`{jqqw7o6*OET`#HM+{gG^;^Y0mZ3AA|$_-X{v#s#hPhQxed6_>#z%pCFFl0L3vp2F7Ur}c&zq@)*-yESkngn{o~^;#=_}nN3eg=(IyUE ze~azAxgQGG+dANzfp;)#gjoCsaz3umGl#-j zG|TkNVQa&Fv0sbilY)}^c@wvt+cnUy??)oBEXh)ZaSaHLMfGz=Q5V%ZwGd%B{rlJ#(EKo|K6d!W{C~? z3zl^|!X98_wU>GBLrD8pKM#p)lUdd@*!W6d`Hx{mVng*a-vVGa?(Wbg<317_vN6Us z0=o-X@sf)QBF33Gug87g!!Fna;$Yi=-S;EbS0`9uSq6RlT8zhstHZ|QC?Hv<1MQtL z{70y-7+=iz)K2Y1#4Kv0tY&-@AZrc-zaIGPV;~Q+Mu^9MHy|5Oop`^)TOJ2igg z#+rYqzq!5aFP8)VU;=pVbM}{Az>kQE=UVl%3@@;=kL%QCMa72fiDlt_-wXWhQSl+W zW<0^3XAkJqen7c+ZDrXrfZu*XC;rS~G<-<**}%2|EBx(I8{+!g6+E_1?9^5s3*P;r z;Y0Jz7U12dcWTchN0TLF=aK&HrK*5`<94MXWR2_8@R~H3K^dlT7~;d&0)(9tI<<1d zk=T%JFt!n4@VT9u_)Vnx-8G$BP6F~+*o&>g!d|lKW3|uRKWs1ifL|Q7{z!YtYlww6^JjZm z3HAlbJDKH#Mcgcfgg2!r}lhQdCdF=V}4q982AFZwNKGTYk#i$hcsjtAgsKjQ=FGYV3EgjDerfEz*HlS zz=XZG6)D#{rG4d^b$_Qg--zTB(nlnpnDJdBCp5I1y*jz(@F6B(coZz-R3(E58d@OkSxHBVH03UWecc-w(r z3H+dFc%*Z`>;rBEa0StDVehS_VTiW^o9J4>34F$LomzWT-XWjCvUotYzt|b)9Si*# z#5!QrmyG?+sHZH}6(Rq{ymtY=680U>?{eQHV?WsiIijyYpfut)rS-nd27U@;xeTf5 z2T#V7h51(kza04Az$dAjtneYdFn$&AjqBmtQD1ah3GH>ZvHY)gCiET@^X~$F+s4iq z&$Uy43hhltCPSu87|WPLtmQG|X92%vbElRO6(4GE58@p%qy1>je?(BRniH_P1%c6YBxk$9cGq;ESX*1m3%+0V8DW%MW=L>!%Md4_iN_ z1H)nUr=2mM3v-{a>??tDAhy;Hqa+qKEv8~h!vLGq}#EDE^p;Z18dQME}cnT3F)%(*G}!V z1ne)M%k2G~8XllT(LIm<&{+rTaux6eQSs)!+6CM;;ENeQ_zy94&+?=|?&bEbgl&P> zqO%TkYSSR5we5uZg!xwk-$>A7g80?ISK7L?N|qlXvd>eHsM}hk?QBM~&9<}s=q_!q zC7+O~oVUNEQ zS=eLhpxE{p7y~1!0Q{H|ZYNr~BFWZ%DD*thT9gS*6cK_Yb@syCpsvQxUWi%)|PeSL4(cb6jT zyf~uH*^VylNj9w*d;)d)^SgwPw8rY|Gsbd1rB8y*A&!S_0b~}i*7H)x=9n*^v#$g8 z1H_Sh&EumN5a;AB?Ho%i_pUxZ($R;rfOA-mkB|?J)a4;(p#RdqO@sp7-Xml~emX)P z!eC&AB96cqYfHveBNPM2(}Fclm!0Rg0^s=F&`6xwW_*COPVW+H>`1Ix&wH8Oj4tg8 ztg#}oX1)WVx9q|$?Q=lmVe^393oO3cXn_ss+QPrwHzUlyj6!kNQ~OMOmy6ep=dQLG z+h#d=esNy0Uz^QUBSgx|siF7t%IY)?U%kgWAXdCX`eIpH5%LywX;~0b-C~80*|rVS zE!vi~wM+ZuIPhyZY<}fd{C0nV@d%ZuFCR9)vE`+$3g&5RIP)xIMs)kAqtS9Q`Y{e5@aS20aqEiiv={SW+b8oHP_GW%O2aUxmdrrk8GbA&+V%m->vO9CK}$X4{qPUsomOf+&)YGX8dkolAYZ# zzB6c+htKq90e=(o*H#^_{<N9~EzIAM0=11JE~`k%&H6 ze_aoEYkLkue;c3Z*6>qj3Go;DTidOzi7LNY-@FFexvo3L9>$F4XTjOeb!)>}{tq5H z-2S;@l12XvT;HvI$nt)F*!=p1^Gk(Sv=}%Z&kYETz&WDf z!p?$uu4qBn_Fi{F-vQ(O!>ISWwNIG$307?n>7IELbU(PQTkAw@*|xCr;8DP|f6}e( zg1@!KhIn&3X9J)5Ww&-sRNm%!Vg+!Hue$YT$1Gcn{TlPEOq~`M3D}$NfA7I0s^DJ@9ze*Bi`p3Bt}@-P*Wlc%(C~1)&|d{5ZJn$R7y%iG}07 z-G|@+POOV?AE{54Uf*Y>L6>E~MtzPU>_C4P@+Cx$C%thbRt-)REzq+-|1pV|*;C(+D{pffgW9e*1>jQVPsKwGgi0x9k^=;HtIMsY(5=0 z_LJPdr{b15MD!by*eCJ(jDvw=KWvFp%|4I!Ok03wyS2ufeaUj*&;Kcg%;3ZFwgOic z2gma61a1Xz_e8Cq0v1m+|Q8$RVi3mYy->4`gs7ohGu;2bO`LWDhp`6ccT9>*=6@%ya>xb1Op z-0tlN4PD(D&&ldn_gd&Fz^^1Fdu4eWBHShrKhvK*ZAw&GSVDa)@^;4ytShQLn|Wse*LF@%+_g?RYG9uGfIT&u97tyz z`{s2SG2}IHyuR2G2gkO_>x*9C?!&!xUvQhu>x=5lo`lvz%%9g6>wxz&|DrqNjul>C zY#G<1l|n9Sc~ZbB^xg!oFM7xKXn#O#jSuw+%d-u*CFk~NO&HSF_?SNC?y(j&Uoa&x zo6iHz!FoW5H7;3Bw)w63JsR)1t?`jQCLLo+d}sKCCIv+Z^*J}S6)eC?K&Sg z2R8{JR=d)X&FxwTIpNf-@knP}3&K|5PK|@xj{NPwaTygMqJAW?K6$Ub1Gq%i{md&J zdf$rv%Ef&&zU-TLuU#;;C+^;dWoQJp4Oo`hlBd{v=wpp}uL0hDaeV*5*d4&G1a?wX z-dv;Z#|UF!Be03=X;^N4zS0GJFZ2HHb_?4w+oB8jJ<}5(!_B~FU)rOocm>Q_FQGBX z^7w!scvX*fFWPL44~=;XTYnGl90u2J>EOp<;0-;|&+m{g`kL#W9bdioQE>D7g!Ila}h^xkA5~Y z5;nDaPEU+|bI7K+A7%l+a&C|IQB*n1_~pQ7m0@kmvTVOC?ikt#{QB#9v}sZKo7bd! zfKRXN(Jn`9-B$A$9f*Bn@%$cb{(m=aw5lO9~%NL!_%W(jIOlChy0|4-}?l18{zjHk0;h=*}yqiL`ykCwwR85 z?z75e@yC1%aLvHQ8uL8Xwj*o=j`eF@e@IVUe=kDi^4NSC$8&sh930orbNoi&x^b^o z++xwM=CQ@+53BA>+?T8ae#%{m`;uM2&sx!=orBm~A0azndryH+m~}V$IVzsH=zfsb z>jn4pX!w&D3GuE3Zb@_ed5-nSzo+H{_N4@Qi{DdwApX3_ZEOe6mB3EKy|qp_RUfB= z;rliM+Z|OO=KkdGOfLUjkH%|AYu+J!b32y+KkLCB?VG6hqmiTg0hWCo@W~JLh~G%D z=Fh2m|Lg>|0NAq=&>_o`jG_e(_vqh+03GRLLSvWl__GSM1o)>D(2a$US%CIL_?X#e z9*Ft97p}JeVZb9jns*>XJZp)?80({B;G16V(QZsYPUgQ3VaNI&?OMdvIyUQJ7jOeM zz=uTDv)M*cAV=1#J=)Y0!T+Tj_ZPpX zr78!stC{s|D?Av5&7~`V&jMb2=jZbH_$|OU0iVJA5hCR`+rwT1kMBH?dRlz`>|=I- zKcA~5!k>N2Zs4Da+FzkLj`hPnrp$Igd-OE$f9-~t_GU3o-%bx3r_2vDsUr{Q?||Vx zQXl62ECysH@Ru{x5+9P6c{efc^aIgitofS#0FTpA83(j^h^_G< zIha3>(`w)sGX9tAE%cUxoX{GL$LaO}9yyVEG4tnfIym!yc68K!H1p?i+6#O(v%bYj z9xA0a|N zNV2fMe3)&-Jdrj2Ktj*;Mgf<~?Z2ThZvQPo{VCZ8VyxfI`dtV7DBu$rx0tHL75a_0 znp4p%(^-8pc(H~P)XQ1SKV-R%f%=sSD?#G0Q`_bB8K=Kh78!oM7GUEF>y z06q(Ny#7wAJwAR3@MXZW-YnY|_MC*}SqFUHgag|2BY^*8v4uQ+{1WreJD?T8PpfZO z;Zwj>_cIpbW7u!P?11ZMJrB6~fOcQhacmy zC9k=C>w#DAIH0v8D9>(|=gtG#-OPW16@Rll{7&QU6$i8j6Xc%)C(OUvioaQY zey1_({sY?Z1o^ixe&qozkNM|W@i)uQ=dr~P9ngQfyTA%>mPdsg>mNN3<8M_kKJ<<} z|Ms=|SYm#P?WYX*Ea0!?emmJpo{&8BeZLVWyImLK>;*HilpJifC>>faYx zj3=`^>8$t14`{DIuPVw!_|rb`?GyvQ(tAL|pRp!&ofZF({w>DelP6n@KlP~t+Rt3I zW&P&<=kd1{_?3)bXjOj*Z&Cj+tNI((9MHeycAFwvD{-f!0le6s-4`Fv{;g%` z{)EriG3>;! z@xfz*!;Uq*VlAoSKEnSQm;%IGfQz?YYyhq$0o-cfRseSl;%N1<{O?dh<$bjXnw4bK<^UIz{aF4kI<>*w*Y_0C@Lx7;k-)kj_)A3N^t z6~8xZjZXpB(7ut!hk9SH_9jxT@ge`u^6>a*0sd?xCxYkkvG1W?Z8yNGf-j1ysL=E~ zZf5_-<755mUhPws3&;rj>C;{wA7zjACj5I*JU-R~pD2GGA7$Re`Sbk09{Bz!mx%mg z{{KU7jP;bcznZ{*H}Hw_Ul07&mc;m5jPHDW6)j@^YkIO*8y7dEsu&+yuk-lc2fSE+FRZZ`uV#DX@tyu= zufG1Sj*sW@-2nWB+|LM+3{bw z=de_Z@zL^ruQm`9oBGlM3;mhD$bo$49YpP`i@xBdzde{$hNj9@JiAc`mlX zoB8wj7%=dlR?YZAE4-P%7$3hmsGWj-wYD$we8%G=@6>|{KV#$ZF<|IHZ7Zr(d#vImI%vOE3cXs(!}!qnXLG6hI`R@k4Y3f1k zbH;yd#ouf%Z0}i@9Mq;H$e-=K*m+Q!&-kz6^JjZsS#(hAirPPBdDz~|W**e~GygZ@ z^B4Ah#X&8F^|>QHp6xyT>Vq-XCuaL)dv5?<%pdPq@i)&OZ0{|=i}RZ|EBm6!eL%2fvb*ZBA*;G6!0`E&~STedG`e=HCC)2+%O z?cGy>PmXP`jNgq=Htdi#@-*Pjh>z#~ESr2tyJ#}-1@ZCRpAGjM(#m;#by58Jm-}=5 z>O-jPCnafP6QDJ*|7x1gzI+XC*hu>#jzV(oH8@O2WH`}@o_&tY#=Xag5 zkKM2P_7|N8@$pXJSspRhJRKkJ0e;}yhqN0K&}ZZ`({rIB{fQ^{ zdm6&*cXZuF+LYNw3V`(`h;0Nm{oO;_`-tQ5Z2@Fkg4i}-_a3ufyu%pDH#CQH+jxpB)bsNBFa*?T56Dtn;&D`=>~qzXJ<0>%8%^Ls~uLi#v8zd$o~#LSrf2kZ<*#L)tx-b;8t)ckX#U zR)098t+d3&l8yhOsadww`wnS8uox;cJ1V(J=G7e?sfuUFx(|$O$WGR@VoTY%YW=rR8Owc8-A~i9;$S1?`vXdv+u4w!MfvT;NclDbJC@ZLLni_G zwjZl$=f}ZUeOMvKRq!33pzZVU4)$1y{P+Ty_jZL`pUaf- z1jgN;5MP6L8aVGGnH&${cerj+$#FW~NqA8vPqjpC{G~Ibw=Pzx`D2M(;}mMg1H|^{ zWomUn8?VUZ#~=P^9WRlm6+HOmw6M!{{1N1=f^SCb8-{l$K9*@D?g=3kFQ_>V%GCCy zOsRK+-+7Sre3^WBpU*cI7+k5V?c_(G-`mNB*mKemqZ3JyKwKn2?0M~;`5(%9PIDkuxkY7@A|9Gzx@Z) z`3uI$kD%KTenvY%H~&lLUz#BQY{=m0hjE0!{4+=r`fzk$d?B<=-k&UyqZ9f-9DcD5QWexG#jZcR4C}APXdmA%3AA1{}RUefO}KNwLTld)rH|&fOGr>av%tP@T&oS*N5S@v%Ie;AWHe=DDT>!k_W*D9%;{^PQy;PGda0WTl(L-4$z%YSW@ z@>5XW`B&77;P@ImzEH^tUM>VTg70&^{0&jcvrgN-MZ5R#dMWY>$bT2ghud8v>@X4k zw+H;)ijA5P+73cK*+xFZ-a}|72cv%IIM1H1I&2f!Ki%sQ<4~ z%I`t>)^kx7p?MVKKL_Q&%ZcDZXdbTD|8tb`Be5=U&w}g-j;V<8!}6);*(ePm1EJNS zm+wLOHNf`0Dv{=?LOF!AIVdw1Z3i#90(=mBSL)?$dDi2Lc{bmMdJy~`l)C{jc(o(Y ze8^v?mp{Hw`8_Dt`fuR&qRvnI;kQS4(T8(Er2CNW`6-mn<8vg+a~|JM!u=ksf%qDX z^-%k8JM^TN=d{#ec7eMFxWMHAE@On9QW5xaAZA{52Br-8-jQ}{XABmrPQ<>`b%ZSl?)&Vf_U=Zy1L>(@>0E9#>f}7W--P=> zds9w^z8}Zh@G zglr%@FL2Mi9cW9M(VjqhAZ|v!+Xva-fXuIl^tc-79;By+rE`5-Aq(g6{chX`^yotx zzx?jYLeALap#ANd)SuWkgBR>NV{S6J=Oml#Bn9cMDBp^_zRrq-M}&#RIc~Kur*O*EfslK3?v;5+$tj!|L>cHJq`B21y<~txPGRm9 zIfZ#vp(r1`Cl*ez$_q=Icv;S6TwhKRxVw{!Ady=|-T6fm3vnOFWoZKUm*?pJgq%RS z2N&fB^1v&=F*gi_G)SL}633>!^skYgak5)-%a_6&j&YQfl+-tr&b_u|ZsoNl^A?rX zmC>aOo26zwqpZBH&W%-5fUI5A;HHHukzICubs0)7no}~Tss=FfY?YgjMX4)`XHL(| zC@GoS*jPHJYH?=fc-&W)*4LLbT<#EC~nWK%Q$#u1h+)#Xzu8SyarY}l}jZkMF7J-T;RW+8EB_K*H z9#g7n=9T}KJjNIe&bg$vp|8P5J1&|B}l%Lzc^Gsup9UlqO>P76v!LVB;+O@8k%UzbxVMV{>a4 zxED2)PpxSvuUlMNU6@_g2#qc-Z**1^RuqjcAt5Im9MZ3^7M?FJBY!b@dhHfDnVf^a zHlkm`sa`pqy~32z`pP1A>D+R?aNEIHkf>aOzD4KawHYFWyPdq)rP-zErTt2u(jv>c zw8@(omG^Ce855h27|1#whap9vxSnNQ-0V#B@}5I|RM`gTIP`6Wkr|akQPl!>b$OU^diFAr>PTMgbmyTx%W?zNn8{BJ(ZzjLs~st6ETAUzuB5E!=c{ zZt2|0^4!rp!q@+7*3j6p#)-9!dPUoe9yHP{nIo^T^m-ldH~ff^W{Dp+!#%gQtUNPo zW^MJN1?2&eCQPlVYPfV!dENCals|cccZamWTfD)$P8QK_LzF=Au{k*tCl=S0mrq<& zRgIY^bHYq4Y09vCDOxnAtZH#peHG7X)8@}FoHjjs>fG{6N*gNcv$zyiaQI6M`XzZ+ z+kEn1ecVRltv3$8K4X-LgO1tk@hrg%cSF^JsvFA7xB)tMpW(p*GFaeZ@f|%nppO|9 zd{=L%MQ83c#*x81DmZ2hL5S(@nPKkRe+obhNsLU(+Qyg7m@~h8ZiC(< zBlQx)7d6?o?O`tpXt^6JtCEJ!(8NMMN9 z%O+mmp!ZIzF2ZjIuv=96bhiI^HEN$#EvnZZAwrpZ)eK~o&!7=3R z?I*gfcq*nf9%PsX%r3WhYGAyOCw0BouTQ4MQ>ODz5yj~!cQgLM!Z>0bff z8q^YY-mmFJiUN}E`o*Ne;-a9Kd;2u5C?sZ+-dV*(!HO+pY|^LAFp#Bm!Lx>7#Vh`0 z7HMXv;yw#^oNL5Tl5YHA7|Z%q926|{$b9T_SRm=f+0>^N=q<#H&!(;WT&1OI^3x!t*YjXU7S%mr?yVO z{DPWWTVKI>y9HH`LmH;`2&$p9X0#ypG8sU&GZCn39}^W7)r;yYxm=eZt7~iPM7dr; zy6bQxB504oXl%3QGPp@l82?NxH;6_zQ!4~@U0qc}dHQA3r_LIkkuiqTn>l@6IR^cL z^4f~B((5^KB`0DTqZeJp)B+s4)QU=03$lE{T(`h_4RS&4Vo`02L1T_!R%@87DQ|2j zt-v-=$h?k|+_l$ncB{A#HfOyc7d6y#-bN-C)*H&*!c<*pO&MqT1W_K8X)DtKRc{kS z0J>dJ4Rv!X>$qf_K~|U7FuB7Z>l;MwP9_&u1ocZ&3E@dv8OdQrXW3!xF zU0YvnkZ*663t6cUIt!z=RZ>T2s~?-k;di|)Cqn3h-0#Kc`& zS2VY@x}3gq7t$~8g1mxa`fOni{ZQ|u&lZU}h<4p3O|Pv(&%u|{YrmIf)HPJr&J%}i zH2iU;2uaT^~4V=(7hA43=(|NbZxNZ%*h* zHE_^aSBs@)J)aH1s%g`cC?d8lZ>yQ(goQYBXXNFJEe)@W-d7dXa}FugJQlh$?B#FZ zMtd^ImQBlSnY70?fv2BKuo0=I-!;i&^}CG^$fN1czn4*gu~VYQZGmMdz2lKd$)!!U zJo?aP+ONEMJBsjbYMYH$4KLg-qxNw`3a9Zh~U8@_9qTu@XL%-pqHrldUjIXRc^={I^ziIFkA)`@*&6|X{z z%jl}krQDjWX1nkf1sv5Hzv+|23 zl+Zg5%9-PWJ3983HS@T0w?8P4H>Amr!xt45mFOL7QAchG^*)6DFIr!hVsddAfJ zu>I#4pan8Byur@-)VnsUU40ACJZJ?9c7WzvgB<+?7NRfOV2~P?|i%+lt(*`&ZVD^4ja;osq>IzIY6J>B#$l0TeQG!42Wkp8T$M| zaDHyH%r$S?jGEiPTxD@gTzY-NchjxMWaiT&$B?p^9z3RST2V#`z4?Ybzk+UilVycm$Z0il-W55^ zIj0$4KevsiZ;ly9>oYQ`eRgmQNjtumg55|TY(_ms%O=pR#~RNECREku*Obnw#)GZJ z^eO)2QCN%C9vf^?W(Jzi`^&=81pvN^*R16}X&)VnlMJDZ`uzEDDIdN8>Aa9m&R^he z;A6EPjx8*&sA|C7JuJD8^Vq>1JeE8Cw&T#4i_qz9_@TVyj56{aH;z0b$I`nO;s}`D zpNx}v`fduI|54{vf%8jxew!3H?WRxOhxj>lb*0yfz1^qBHPYTJEFmV$t*ya&Z_(U_ zf?6!01R}qRmJTSx!!BPxH>{#H1F*go zT~<{^F9Fn?!=mzspOKL2odFZEV!oD^o=-AXD)jjPcw6dz42v#2P}HA|u&+Z~f5B4l z_JMh{_7pJ6Me*7NbnEdA^ua7Tii`eyd@kKF1S+RJnR)cu=py=J^wfIVG)C_$+L2XI zdtE{K;&P1XnufaCYWioEzDA^5&$|Q*^D^>IDz2l?rcWuanpfFSQB_`DMhCAEj+ItC zBC%wTJr2oGM?rbbJe*C^suRRwEw9|&P)P?)goy@nJoxGQ=6s_58FbHy^{k5RV1Ks*%yW>jv6cQIuIid%lqHr?l~iMMza&<*cZx!mIurC*nY-q1?^bK$!|! zwnhTCoSM0nwRNLI4~qq(yS|jrcY0oZFt4JbLa*n+udw)S%|}Q2rs1P~I=VxDE-KFP zfum;zW{Rg^!G!0b5Ra3K;6(scJhi5;24ZD@ZZ$nu#6A~|t*Dx}s19dlwKepIyCq8I zj`g0DOPxbm1@!0f;eGS|T)l64^}gBVmGl{hKKi4CsgBoH^!ZDWv<)?4HU8mAb8Fpr z&{$emf^`cAw5BBV55FM9W0{^F)acX~uv6;+FB1w7TZ;bki!AJ7HQt zyH&UiJbtgLz%d1L*5_v0IH65~3)KeuW2Mhk*YvmD6$xloJoM$1ADi z-mkR@O1Y2DXQ9xH`rCRmA{;(7<(c5?iA=kn9j57B>k9@HvQAWAKf}6m);wi zNB;KQV>hjXM85I>6M|3FLcy>!~UoQNIv$U>sK|TFt2t0;y z|L37$uEYJ{KRqptq5UsN z6HHEM5;nzwgKnHFHt?9DZ{diPvRvv)69Uy^FJ4qWk2m_dC5v%~2izsJv{fozp5%H27b4T%ARv=-s5d zikQar;%P>&#UFi-pCumJ8%7k9>%GM=M($cU;P`3JY0#+X3Ef_twe@v{)8O23QwYCa z2t7S}9$b?ydOUl7Z72psBBJc$fzi4JgMivzXNgQcoPHc?a^dvLP@vynw9f~$p-5Vp zF4|5jW(JJ>;aOnF5IEg0(s|zr*N%4@g0>LR!4Y%a{pjAnyhyJM3z#)K7TqbAG>(pD zs6j)I=8x&N7PuE(nThDBdAQNC1dQg%v!J9mx$OZj`QC80OK}ob-;m>W*VST26mFfm zY5onSnM+M0j5+MFneamkFonf8z9-OkMr-1OzZ#)is`!j)sHs54@+eOULj@tOX@=8Ka7^nv(neM|3&U(bsB&efxr zmzEiiev4}h&}rxy{YkJB^9enVl~peN_UuVj=GD*t$Ju+pNp)O#qol|f2<8JUhYiF*8cY~5fF(Iy@{pUHp@~DL$r&y=Lz6Q! zFywT}8Q%YYZdLc~o`J#34-TiR{^!)GQ}I^St-I}e66T=K?pqhmI?IOd`IA1sQ5WU4 z!jRW0qqCE94N+V0^ot=s4jbRZgkjGA_sjhJ!aD6*=5^@Q&OaQJ<4>6{K=6)++O5ZWUcV_h$?p zWcg3)a=qLBT>Dc@hKibfnr{O({q*Pg9oozCLf!t9wS{=tYv01gxoxiayHse#XRDZH;HzE2a17s>4(l_(qbj=5 z_;?U%ZcSZSMbD9&*9eb5GAcV;CS>QxiFfNt_gYAbVwI{i$8%3ZOq4q3L-C31cUt%l zfK->?5vN!1kklEENoSLfoGd{=pF%|(D$t{24PM^TglARNE^baWHCRqm%aOCy%sg+4 zt_(}@_Z!N*?{hMg-=Q6!Wp;lb8s)_{<&d$ziW|a|BTkK zpIM10je<%gKMRM}$cEjkz z{%}Z5Tv-FdQ2<#|y}irNn_`s$n%$g@T;?SPu5G^#YF)KwZ+>VZlnEU0wQ zdNA;vMs@Q13@muh_DC}MCs@45SUFh#PN1Hc2W(W9t?$&8DYbHBJ4!i*_wQjKDCaCr zjX-COc`HWZ;CPKbK!d-@@^7%fK|+|6A9F_u zkj8v^l$ln`xlUdRZ#c&o9X-y7z?856pRf(g2n(buKEo6}ORQU}3ePKl5pr2Not1Sp z1Lj|=nY8wH&7^@3vFx4vaUqDGpQ^q~QGH{V)T+y*o=>lkPh6$*I4>Dli%VnUYjJ7p zKHDxnhlBX*Hh!7LuhIC8h)>*5T{o5Tx*FuRK#m~3Ku*yQw-^(-O&Yx&#-c*Ac14_> z$ZQm#r{T^W#ySsG$7AZy3NACg->w}WW!in}?=!yWfw^|#2?6>3@(eO9Tfc7`=rLR{ z6X{ZkDRondt6rfOcS9iOpc3{A_sRG1u%%BpG67EUG>Xq)zQafTbK~|tHx;qbo)nK1 zEA68S`zalyA%mf|5;|b^9I&R$GsmreZYk6Ihk~yd$nhb}#}LZLN0NG@q2-MlGU;EE zyF7Wa>tC{^{|{=(z8}<-;s1*2rGr;47KU1(r!Hv7VRXyCeAuoC0}xi7TS=dPg}w>Q zrfDZ=TVTA#&KMQE=dz=lb*Br%2ZRm}jW>z26|nyG8&52}5D zjC1iZ=QEr}R3joVB07yq>e%r=sX(6ppl*H}e-@Am><$SJ5|Aq)b*7WXK{;Ca`c?JH ze?{ft;dErz_5|yg+zbkMpqM3oA-DgvVKaX{oGX7EE3V~W0}m&C+I?z6ZvRZeXjOU; z(eM9;{u_InRPEf|fa?Y?{_S0vUb|)sznexo?rc-0Tk&YDGum7^Ui+Pvcqav$T-LBN zwQF?nhs$Kp_1Zadr*>U&-m8YWQ3^WyJvBN;r){#$u3Ks%759U)~L0%pgMp#c8)@Z5Q5+CAe$={O8m2tUg zRj>GcWMMZIMfOuss)ilPePv}FO+j1=3Y!iw*Bn>w=dy&K=CXvlB0h1L@$PZbxKj7D zhMXbw&MG~pAy=v63t98Nzhf>XzwkQ}dDPiX!j8SKk2G>|w7=>olQv??_ioDKWgn!M z?V1nDREmusWKMl{)T=9d>tX%8US?If`7vz2M(d*2)lyLGJg1&2#Q9<1p-=|>msuCp zDPClrvGNSo9^QEOmA*XvLma^PxZ;{V1aG;dmENfOb!9?*n0bR`mpb?J^oRbCdKn)2 zS}i&K;j7c%g!~VDjr4nErr#gwFRYK{4esh-->3)=3expQC=&BCuYluN@sCg!ZqkR2 z$8tt*;>XMUAAOMIm;T6fH&5XB7=XwZ;co&i9)U9MBMdw8=p+A8MP7WQXX~X0?C)Ez zu6a&aTMx@b>|XKy-iVKIaJ~&qlZzjHj3De+o2cs_p;A)+8#!%cZ${*ukLq`7tKG9q zuE+mnM!lq_%O7KgqUz6l#99BmdZ^55uXBr5N0dgDx=Q0p6QKJ1+fK&SGg}>tA?w^$ zDWy@RF{SS9N};OK1?B7MZ|4qiF$b4<=w$AEJvO?l_1NfcL66%l3-O8Wq>-LLacYW% z(cT}U*TVnj;Mb@P$KH!SG|pjc^4CIQdQpQ1nl_5a;WXq)Ae~|&U8QlQ38kLWSZ~HU zeMsX<-2uuER2m^o3}PzG!JPW+Hn!By%1Yph7(Z;ChV4R_GX&_YsL})|o}bJ_^HP0( zGh*2cERnFP+^^57GQ0t|5m0cE2DZePG~kMntZ#rU4uuLoK9-DM<;QPDyoY$0K8!S? zG^#WPDwXQWi3T~+H7{EhV7rcHdkwVzYoPrfP(>V?PN*ABLDfObADaygv;)e zdP?IPaMR4|By#n25*eUX3o4PwQKctI;|V6hra9;*Y^)=Gl9lD$M@&{+Y3u>w%bccI z`;#2G`V)+=KSgOirUrB?W+(FWPtegA{yhAgc&e#ABP!r+Z1VU2X~50+J%rkTgM}|h zBcP`L`zdW(_)}~gFeWSFe2um%^^``s;98G2)0QGv{w!@Na^24|mLj+OEN$&^U*_85 zk+ikPQ#_9vIAAcgKMM`1!VaY#EvV$LcFKjHHIt2>*(ZTbg~&`-LOoE-g7x$>XS}(s zWa!VcW%SSA(I8A_TgaB5LuEJM!r2D13L8!nL2pSO~yKQEBte}^VS!mT~250P>oaa|D}EoQjWTdnfx0ARkJ`vp#}b*%g0 z`*Q2w8_DdRI7i)4X7mbuh&PSf6rq23zkLU+Ag?G6CHLy3>wr*>3>^@{B37f%upHYG zYY4xT(y}^T9jK}PW z&;QKbe`MD(i}1dV_u6;DF$*~8%74^?wSHi(y!g+$a;RyJ%xnQK?9klqLc(9ec%G3q zP8An5Xcq`XJ^d)#oECYXCwV?W2aC6=KWf!n9{s0%KNimyA^Y;O^x6_i9+BFzEp6<*B8f>zU7GQKJ1`G`_%GRA8PmmES`mDKgI zCU9~f`x@A@Y0{T^m`MZsHI*!Vn@NsR#`nB9O>OyZZ*JzP8(Uy!s9Bpf&DmW)Zc?{B zr#oxXfc(aa4oYbtWIXp{CrV z5zNi9=FH8S=IjbLBA>GG+B-z}`)q!4fAKACFtZ4a8M_oJ3@6ZGXui7`s!6MJ`RcO zWU#o4;z~Oe!ey}Zzj@8^RHrLry4N?X6&8bkZ>cfJT68(nPv9ah3BxT(m*fO9#XKEs z74Qw$o0`ZO$a|24{5s0lw?2E)3gYdX)WruhTQFMe(oMv(h zf8=Ku-toyW-eL4;_(qpB#3a3bxaWHW%(ri3wmVWjNt`Fh3u#|TE zqAo@Y|LC1=#c<<(pu;Fc*8bddi_Fo7V>4{FC^T$6U-P>&{8HA zpf22_XQKC!#MgA+@>l_;@VEysM;;ZJdFR>II@!s`Ze5Xd`31THp1Y9#zd-eQzA%gTz@h50R$TUA>D zNj!No+Uh6ZY0fi8P=YhO$2Z6S_cp-br9o()Wfw!x9?*=>06dRiOkozV{G zvYW{Mb})E3j6nDrhOhL)k0RVzf$(rE+1o~;yATv%P^D^Zn+0kCURi*m;h?T>jFF%Yt%EedcI9pkQMLLd6NPquC2GgsRc z_{;++b=T0mdM3a^o-t;vs&JLAQ@Wm5cCzEzv6G!lqc$+c*~l37l(M*;oJM#g6|$wB zoJUAv6Oo=zHTOj$+ejljl?dMq@QX zn^P}y44^+I$nHMckO0M)D-#Q|rKGT`%t4H^UtIsK2TFzATrZaS7Y5LD}(DxM=Dmp#tsUNjmqi#~F>Y&yGiH;u zMb9Z1dGYm7T4y1ZD9^tN z?D0?h6%RY2f1dNJI z1$CSG(SsT7^kGE1Pf-y%$n!6ghpO|X&+mMJL0?&cWfX|1K#`Pug=$2F&j%w_e*=Hj zSIG^0=Ql`Np*%6Z|0^^ZOlB4Un>rEk@T+9T#{4RfuaaNEU|-f8@fr3jdoWo>YMBS%9{Ja0o2n7lfP5H3gqvZ$=|J{z*Kcee`u=YuOmckA&vbtGA5IL zjf&j=tx%ngvVmqK2o3wtB^G*uF|h%P>ciTrD-wHtT_EG&5^o@_bs`khh`YbmRnw#+ zdIA(dG_s`BQz&1Hl@Y(;Cas){FoD6;!1dOon89WDk@&L#Q+g zD&bCTwXPP)_1~Z^>tg#3YK<$#Q%tHd4*IQmB}|t67AX&rFiy3U zEx)THyMD)0(?xR82{p#dR_-{V_uDl4R1Qb5sMD$$mbi-KBy;8rr#XH#NU3=6JB%YZ z|JMjD0wZ4zmTEf6UgD#~zflK!HX%QSGbV-WCWS{%DAS;)c&jH|j>6+kC^O;vT%U81 z20W=Wq0||nu2ULQ8XxgiC}polu|!(XN!Hou$RO&9F8-wjog>OaP|_=xwJncQ3zT}G zSjWZz0Cok93OS+`cMaj$yEmTMPcMq9vc}n*XUV`f$`p~|FD4V;7*pKh*9x_WeHwGX*giP%g(tAF) z;`cYP<%e@V1$gS}1r0n(IH^adF|J6J={-X4$=n{H_vLhtkbhC8yl_MMo|zoq6Y_77 zlgr0Ld9w0M$iL7{rrio9m&4=*SHmJ>nf;Df-~UX;cMoAe8M^_&F$AM>jc2533~u+3 zX$=DgP!MtO01d64t0gL8I2)W0|P#xY7hu z2;;DmtmzS=!fTs>@H7-fsViMadxUspsm$L=(~i$i>+wM9o+MvP~}7bU|>8SYG` zYy=ctt$j-=U(OVpe!%8+NM9@=XZ9jPd&B0@y-l}sqL1IPUFzd^Yfs zhsx=E;uP>QO}W-P!<0=lrH)MKW70ij(miX^z0s#kcUSt7?rwXZGTq%N_DGQ_^h#7| zOsT6ht~8<4Q|e5m=ThBXe;Bv6FI2=bBBmkY2qWT%KsKiayTKz&)S1QzcUmxFA0y%# z5h-DGTxkLn%Tb-$eu(*%zO+yz#r;A*k=ZQM==8F&(-^xzYYSqLjMBIwQHk+BeFy)T zB&SKI`h^;G>cG1&>NWckt4I-AktiSAr++$jII*5;cV;l9h|;K17gWMJf7R6^u3`DJ z*`57EcoOCni!yjRHO!~1vw$?J)K!{L>MYc7rLNM1QfCpv6H491Ov^uqfiwc!C`$%} z{3+fl_ImCT%6Lkn%OF!pU;36y1CpC9mj)%fbe&5P^$nb^9BBLG+XHQf{cvE27pThf zfgydbM7l=;{qxv}={YAwkX^rdE{xb-b9uz?UpHZHoaNudE7t~w^p0Wa13j2+g&N9m zog}QJ)e)spr7@+h(zw!uQctO~ir&C70CcaVf(QcOTBQl4o>FJEDpnd*npne-_*%ug zO4n(KPuG+8l)4*~-^irw`PY&`dS=fr<+JL(&5Xx0gRCADVs-1zv#icmhU%QWNDd9+ zGle{4m+5Y!QfDWryNfijn>4zI)C1)MSWj$?$&Ab=uxW!s!AG#!)aS)17vHOzlsbo~ z0|$37z3L!|!J&rO=)pC>JlT(}{(=@?$^}ZsPEsazTIm^5?;L6L0;zLJ!!HN2F>Z)v zV>0vSUS)LTCZqY(xqL{7`wyjf4$ey4vY~tY(1Vc3a&AK+D+&q;xj7`1x*nl)B)Y)l zF4>Wxq2x~5ieagpv?(J}yJybGvb$%maXqp-3R4)}8G5Z-p%)Fa)%rDb@6@a_dvCn< zW!xi2n1=Qm`p1t5z4rawr$+h>(|>%|Cyr#_#GNI7-_gIWee)>OU|++AeVWHREXc%N z7UXN*<^Fhtb_K7I!YNJR9(BL&CGST}W?w`55!HTQ?SH^DUgu8jMWaFuUqkl_)%{R) zKT`Tw=@X?-l|EDYTXmwZ$UA*WBcNr^aP%C5>D$&Z=zqG7g>Yg3 zL0H!@M>m#?K_`Iq2mf-4Rb%*&V4~KKp}7&NjtJ|#-bd9ku7j}Vu_wnX?KqNmw}f3|%8c@ow`t&p2_#vrD{|#=37j7psRcHgg`Iga zYUBjeh`CYJ2xlUovBNAIuJp~FppS?raD7RZe?y5Jnh-Lz!HI^<+sQw~RgV3lA$iR6 zOz|U3!eAalv;UGkF+G79NlXG5q;r%sp)_)gymwN=Pkkd~Qkzb6^fc`W)-s7l)2f&p zBF+U48BLHzl{#n0$Iof_HPXa=Ql|^PPo%XkGEr;aaO6A7LnvxrS5Pdll191#msLg9 zOblhq#)&w1x_u%VU0l6{IHc1 zy~*m|`#@*8vk{k-AeHz+Qg1P-`xxjq8sh?xBD}`k2>Zv_qgguz(;B%l1=lS8QhH9s zvr{vi)aW-A>lrO&@Kl;ju}Yl#bd*z5{Aan+DFDhyMtg{cg->V+Pd14&HH4D~o%H?3 zg+#=j5|QZj2cYp{(pYbN4?5hwP)eqTnA{wN^Z6AF1 zB3)l9BWJZ+8A!LdN+S{Fm3m4O!x<78q2WrsvE;pRr12@Fv1uBz0(r=4T)|aF(HWse z6+ouV2sNw#GJ8hoy$T@D7Q?TJYqTud_uHfkNn`G}v0BPivnMn3eB6nd{+ihGS!SIL zCr>ZW#Ufkd9J{c4b1u3-)Q-kE`f|72oQKyB>NP9ssOJz`@wLE1GegNmzZY{t`g%$- zpzmB>A(i|&Vy=HlQ3qT$fZC>uPm|~RR-Bv*tK;inP#s0lsa2AEu~SVF;G0};S9*! zP%}NU_GB*d6D<70b3;X+aryJZx^j;dz*Wh(QctO~je6rsquZ&`UykpCsu*Fh#u%8D zT}4*HaxF!igY1k08#wAi(p<)(P^B-5Q%dMizs#8`vU_q~pltE`xaJWmk*3mwPj@oq z_WDf-+|TUaIEhO&^sNzG<{AsxlXLd0i#bxmj*I1vQ%_}&&5hx1wx_BCGlV>T4F%#j z`K!K>$o$~&RVI4)d}xX9Qj_!%S-&X1N`%Da&>X2S{47c9+W9BU%|FrBdlMy$xj}h!ErEs-J-cXSd2ka z^~&T$p<3cC3RSlkx%k&l;B{YKUve72uwL)7Wf6MNfUAusTUE{zgF`6!`iiiM zU0D?3DK!6`VW>IEo;>n^jzllesqjN=>=p2WPMyE!=3%C9>WQspW$W1f#UX2AgLbJ* z1-(!pw{*yOK}Wh>|Bz+SgEZcY)SajNani&IQt#v+!p&7>=n`~SvzB63xe~X5!87)Y zA@z8HVzR61EEAT7@NTo;fu_f093?F$OEPt7sAf4?_@q&ef1Od9Uq6${%i*-xb+z** z?8LpC2bPACwSn{0GztHJ66_B%5f&E9z`RnTNS^sK@083~#tG{y?Tn0=xQvZ z;ePLBW|&LwakEKJkCRNr@?>k&^!b$Ft!kE%nb@>iA=uZ7`2RSKEaA zSH2pzXMHSFZT$|+rv);4H7osGrWjwy6f^zf*Xi^Mjo+#htJH&J)jrnvCd3VrvLXG7hl_kcKJ+6)$tGKD(;U2sHI>oTHX0cG5 zeRc<6(lN8xDE&^`_53|IQN6Nd-&&0FJJ*M*Rxir$sE??)OV&S9>!0f3qs{a6p_-rK z5FHmPE^NTuU>Dx1tyCRB*ond0Te!3hAJD|*$L1jh*E$EnWw{%|j84B{7kCKH)jVV8FIoDKy?{o_o1uHZ4c`C0aCbl?)p#>FD}MW zR80puF?EfkezEFXqI3nRw=QM7 ze+H`vFYcLrpzd+(n{PX3YK%Fab33(TWCa#;4?VHfSeC2>=5{g}zL6HD2jc+n*o}~K zcc?A9AzP{Z&mnEui28QpFly=8qgYmm?O`&UI-T68iw)VN56JstV5EVyoa%;v>K#PfBAdi$#zvAvwTE zPlMh4ghURICP33`X3wo@HM8GV$i)s4>mKqQ)mbKO)k2((xU4uru`Z`^W-26`w}#9H zj|?uwx@7iimsH}J4$=;b{cWmPd=kSP$$>nm9BEiX&$9ql`@7^mowX} zWoX{#Q(kU(YvfR~PL7A}eu)E^@9i z&fmd3zuh#}Q@dExU)w$NcBI_1cn4a<)gAEB@LllH`d!SercqwIJ-?$|A4Mn?r&J|V zOQ-HMwRG0bP!-d~n+dsXKlaQWnsax`Cm@f!Ut|9KO6=|oNgs_uAnKh)Y1XUD*`0pg ztIPG>sRDSo(-y$ zad>qWaakVYFpy5%jY(UDxg5AB<#sO)k5AhRkC*O+`LA7c7k8K62bIQY@B^A^29<7m ztSfr&L7a;?l#$W|ah2-G%sr;V*%HSh=e_+fL@)c6ReN*@-9f>~qwipqrwxvSo!X0^ z3H&sdi(QFhB2Wh#-A2ngYMDVT97mt;3E_@zHS00WGN*jU0%XUIr3a``V>#k3jE8vD zxa?A)r)HSl$5f-wv?xH?F&;s}rwB@DaO^oFofo7L=a00s$~N!l-g2w%5vupPP%2m- zHt$WV4?Bs9cl#rx5bHteDvkFd9~t1M*;(%H)f(~`=qzs#;<6%x5r@}3$L<_dSrR z0NW3u?3dv6*Vms)-P;$+<|{3qWaHI_PxzF-=RoQOjB|!iM?2ZIUn|6FYSA(}wLion>&cHB;LA2B^qYzw zN?mbK+lG4_fUbiq=;$zp2Aw?XK$?^1D{8oE7)hD{MbndQ2T-xDYh@YB@W^cc4xj4%KYdvL$}D_r?741oiQJYbI=b+AWZ+m~Ba94UI7UdHk^H&kr4Dt`G%_ zUDCul<=3lK8zG`^vi3LvpLCYKN7Ve`)EC=CNL*pFulDzikVsN^W=f&*I(nD+RJ!v$I3(+^KXoX*5pBV1-fFd`X|c1JJFm9c7VLba8Wy0=Nad(epX%dW&@@ z&_ld9fd=;4qeJiGFMpo8bArx#!VHvGTh|^hw|jg@Q6) z`!pD@)oAuXCCfi+cs3C-#}5~u4>gqTmvHp(!Bv=4M{XxfRqJ~ezx{bk_cJ;;M9(0^ zOj?G5AAN@Y>PzME{xrg$-^@eQVn#&=XzGIyRmo2`eg>({W@@*uX=*3V;PKd_Ue0x{ zoWWdY5Hl60P*|&ckFz0r;p!tsIfFGpP&0;3I;&&oTH1^AkN9sPaj_wq`cOqH^@jbi zKTvq|ey}ZEKbuw&?xyDbab%k1*!h$XdJ>&oyIVxygp#VxpFJ(70N~@QcAty zF9wvJ!}hEH=GLi807Rx}vNP1|RelnkrDv(u!hWTwg^4wY%W~Et?)PYRhf7mc@MJ0K zut-d3r&mOtYJD-qyQ$jElLN2~f;zxeVm@UPsS|e&%zh z&xd~MbLUl;;ytC2b(D>PrkBy63u$FELM`8@ZrbGAkK4a4sGAldE-QghxM?%v8p@^% zsC3t^=t@TM#n)-LV=u!=yDz7_R(u5xi$lfh4(1vF>1rU+&=p@thF&r)bogaR_$_qWC2gV8sn;{OWxz=(?#tJU~ z=rU4Rp`yDP8{4DExM_fE=*3_Iya9Y*0(MvP5vPo|PbK#o$?cRZuhA{LQf^h)pk(c83>{d?kyR+$UHWyS6xE-MbonMCiar~pfEq$j#avF7{w6=2WR z@+-i#>on^=jW9)i^{OrMTUQYmMI79wh&s~inkn+z`0#-i=csETzvQ=|Bh9KN^MH`W z*D%3fc@3^#cMUpR)e(818CDv3h!iWCERBcLO4x!q|D2Tt@{v2q3IkeI3?pxDIQ!U57P$m|N$C=18flG~)aTlF(Xp z;kwqUhXf`NjI4JdjdlkFn?Aj7K+T97p(2^eRAW8<#P7*x@mIqBn$KU6o)mPIMvIw3 zu%aD?qCiDEsd?zFN%hlY`x(u1SkC2Dw23#%t!O1Tk+wTnHH{#R%w*cEVjFI1725_x zmKQ@@R&+k%FohWGy-rUw`W7l;pWCU5c<44N;@~^K&qMDuq-0iB{NjgQLvNK|Iit6b z6^|y`%2|BNR?Y#8a~5a@l}3HKh#~G`%J6Yf7T-b*SV?d~1GVzRZzU_ws@sT)EFs<> z2QJ_8XTdiq6VnKPI`RBgNV*dpM7J&_dve}rDLfSKSc5GdieYFLx=B{U)0`xWGF#%ZBgI3 zYm55PUBr3JkT?g3s3QaKnSN;HJ<|`3yN6bPn7^=Qbq|en9yc-~z(cRn*g@qFQ-fdB zd+(u3xzChiM;NL-z@>ZI1I)Uws_sDJBh_?Nr9smReZu{;LZ7PIju9I>0W7+VRX|Am zKDvx`bd^rwwnO{8he+5Z$PYV(u*D3Eo}##SS`$1=8aYoCt8?)K)7|cTp!N-Y0Oc|A zrZb%ae&z#a>7q(rqoj#*5x1Ff&UMDQw@G7nh(J9~-_*g5M%RbTT6!?nLAKCF=Psml zWneN!MxT<#l{#Jil;NO$&vf#kR^4-u%!>3tTviMe zCC$q+yFUsw@IN2jFt<+QTwLVS4VO!rm$*8}_(wQbmya)?;Ek?l&v`>I>#|;@tDhgP zMJ37a8sj^))l`(nT^NJwaUSD{g;9soQ&^dh?T3`>!`N55#PtdtmWwgyBzC-&YRGlF~T*=eW zy9|?~PoX=ql+M$v_$Te)pIq7TBozGKvRtJZkrjl#!h-uxP{X=XtFw}Y7GFz&G6qbv z2FxKedV^5s4xxd3F-QBK`tRS-|9&2OJcC3c`ajEJUzEZ2B{n|gf6|cEr0zP%X+@m= zOe`M@?6Rw3Tpj#Gn)-N)YuVzHIaP~V*^jP5! z3-JDDhZdjVs{!R>$8`(WmC0;1Fq{Fi;TWX}rP1lg$Q$^4YnSjlGPz6m zUF;!Y0hc@GYpG^Ow=iy($7gWaEtQ+Wi#DMVT{NL_{AiFfg9*hz(WUBFbYCKUzDwAg zl`LQTrf$&YQjhuK5ZaH7?~0}CEj`S4=(DSS;D79wS0i$iT)^+rUz&jYXUndx;p#tW z*5((vdG9yZR+ydMgj?rz&gG}KuWK&keAjT54{^}~&mih`dxIFBp}%i8ba{HTLf`K} zig#$Gr+JRfWX@fmE@S>#2n$hs_-{FJvE}NU6^ireN{c)0@2fByrO3xmqPOSF@w^GnmL1()r1}fny z{#^#_=5m`im&X8`TEPz$BO6W+WGX!{an6E6^66^o0Am^ukN0Gkc+-Z0^O}?Xg)O*-NuN zzL#cw3L`y4LQkADx)(r2tnd*o5ix|K*!D5b7S*j@rZxCIUe(}Wn=20}=I*ChbOMS7u0(qI+51F~% z52dnifVTGew2*^uV5F;;->j8Cx((^ekE=5}HG-e*6RZI~ZcSfPJ-ogw=2L&p(tEku z{(aHDMiCl2_va`Z_c8^_49m-`){Uz5mO}3n8Zef_@|C{+j4CxOkL?HL@n_{=ha>Ym z1)joABG&8r7cj)>O&aU3{LsHZN}2PJi~Yh{)8656FMM4bGp_Uk$!Q{e2GR)=A+F85 zdw;FTefn#i**SoblbAvr6c-bJ*&JWClPUfE31jg{lnZNsIjSxj`-dC6_g?bnzTqem z3|0eBhL;AscFFtABiLz_Z+m1Q)U%4O7@$_W1JvrxwA%Bno~%BaLh6G0?ewgV>&~pl zlc5j&(C3tPrcxrI)KltAQynwtD4g&g7_KWD2BK!XfDM}XQv8A`tEn_LpWw&>o8W#w z?kMA;2nB+1mEQfZNE8R%+^B91Sq}+^?p9ST$szF-OadQ%g^vg z-$CK(8lD!qWH9pRAN0qeW{%`FKJhPowzhr22~yHJYsI5MVgHc(?&#Jybe_0;rgar*4&O|2@l+imD56|rJRuJo*EeE@(4Avz!a_29R`^4D) zi$0h`8a+hn%>7?*YF(K>0?s}*BBM8Aw^eo=LnsF})cA^fqps)-wam7T&=T1_Ld)#H z2zm`^!?Jm#9;jbtSA2v=gcD<2LaC=THeb<;XmxTF&`Hdiktw%nz~NEJ1Lf!u^7HG; ztcfrtNA`@wbmr>Fa9tTY&h%5KN2*!pMrkQXFZm9ED^ajYWbdZCX1Rw6c9)kv_WQcc?3S7KD=%iw3PY z#Yn|nU67i-HfY7prT{PSB}IEJ)PguN2Kl`^2KilR^LuHGI_Jh1nCik*zGh_*d4%>C8)PgeEbHG&WWF zX;hfrO7@MArV#{74akdBb`o>;S^Rne+>{XQ-SL4nv-yQuYmd)H$b;o+RIxD_`G@;Z} z>TG1DIS*S2QT(?K=&UG0@u)TfWua&j_; z(t%S@^a=IbtFXPN0K1r2XPZ_mc0GaB$ksA%iWzs06XotJA9c{8dQSx^a)_w(fw#4E zgE!KiHCoG3qMg&_q34%HuO>QiR-5BxQtv8h>=tR_8MNr=cwwrJj@M8!D2OQ~H0ZfP zK=BO2V=7pp@!x%wk<-HVjbszDdoDWEy7FWi3eWxT6{-cA}FJ*kG`11I_#AFiBeuFq!p=om?3iODrIbuOsy~DcwfuUM6*}P#^o3CaLL9 z`Hnq4tIR`pc5oF0-_SZUi^*P9_18$_9@S%ac=jv04!JuU)iOB`@fR~T%q}|@pD@RG zZ0{VT6MIVCFYjgK#%!egcs8JJ*S}$o`}_?A%2cpXR_j!1b%qcc8%=0N{n;@m)6LH) z5t&pD_CXnJx4FP3rc---p3=pniItSjC;-_yw~VjLEO5M-2Zi1Sh@;n7G!MPT$$6Pw zzUgAh%>Qfn5wHCS&?9C#jve!~L)be{JC4I@!bZ)_Ceqku=7wFybsuqu2p6HK7h4pe z)br_1qRUwl#bf)W;f zEgL3moR4xTe{FWd0%q$F6MJ1N2P`Nrr!th95~>MFE?w}_Bv%s{Iia~csh&Jd>LzFe z=P0KaXqlV`E-P{laal1?KkkVi*JUB%;u_~A<3=o0xp9n(l&T!5#6cwtx8t$FbcH(> zhVjEM3G^7!bJ45&Kxa`nyG(l3nulCNlBw=%RUl4|IAr z0W2m`nM+2E-fiOl#Y_Jgy$F?$UILx&&c9c;lSb~5dZ4CrkaJ7Ix~}}*CymQa6oZS= zHJZqTKRxH&eS)SW;Yk7~$7rBj$+9KBfns+u}+1v270 z<>vCBQ~ZIfgwe@-`eDOXq)hii#;jlkKzguXDrsVxS}>i|nMoQ^8daK5>VeAFwX(|L zmEjsc)FoB@-V9o&DOMT14qLDptEw_}eb~k?-x{taQ?`Zu#Z5W0D~!+Y=_Dw-dZW)f z;nRL~amcq>JKVJ4KOtx;IH@7M;^CThO+n_xkc`|cVxCZvU z{Pjxzq7Oc+oLGf-k;beJSNRyPFxdeKhTFkOR<4CgE^lIu7~yvH_0X!Y&ZSKt`CRNb z!hy~#b=MrYg?FIwrF|weY<2iUy!KPXeQJCX2AtC~U(I4tSc6U-+hE3-<`Y~T)MpL5%sRMGD?NrYtUyC+h0o8*aN3-J zHufZ1#0z1-n_8gN@O2Gi?2NU^qUAS*(iO=v6tApVXN$A?7u9QgsNZox#z$@oSHntQ z4S!?QmsRa$)r@BakTE+0CE7m@^WsZrSaiA4m8721#47UcYSK8U@W?#(o?FZHwOHxU z*VkLi&~^0d8phZ30Uzb(^EQ_T9a>_x-dZNQ;c9K`H&0IBi*n`iJ;*p~DT9ywwv;t) zxb2UN@>@1+);3pe-b0|hg-8DZ0_SJ6E%4Y%!|W3cw{Gx{2J~>+=zBOYcmVD9j-LPqJ$nnB3D-RmMz#d z!1p1!p`C- zcH3kdYgr*QI^+(|DeIUCcNfgh!Z+fr@8#O2FfJj)2QM<6A~UwA)@Cj6*^M-FW$_kR z@Ci0D@x_j`81?dgCgknc_XTy~;&OdUuF+?h#!xr#-HS>ewDVO>615 zEu5WQmxbFF-w@ZY>ki&Vf%~fd5oz=ZX{_r%LKr=#?B9l?m0wmg5PG}ucvMqLk%08u zj{VNv+fg$EBT&!nnIq8T9Z1>jj&v&V`?Y$j6CIKocD8QEj$nJ4u>%KN{Naa(4>$+Z zQwTC_Cp09eAzak}^qtR?mRvk6C0mS)ODRepiGyS7VVdRi_(wXSCspgZ3ceMFQP>|e zY=^UVM_9+iJUL03=wQk?Ln%{sbnd;goN;_0GY}s}xyV?Ro@Aw~VUIU0IZRnOPu}S3 zk?j<9N&v@gWqmPYLG$T=g7&*v^lxbCsOawQaMkMm7oR%k_^sll(wb{pV ztB#AcTH}KP$t$b;ZpNQh9NeY*&Gp-Nz$<9MlCSu zZiidRGRJO~j+wOKz}@b!R%{!9v^MX?QgKl#?ITPi4)sWCwmNJssjD$C(lO=$>%(Mz|vt4OC9=LAB-6`>Z|sOgMiJ5_FePnWxlQ z$`T@Cmyg&_L=>S&TB)aqR;}g99y~*{q4K)fFYslUj=9o>Gm6AAqNAHsW-s;G0dYn= z{4Us@zLdJ`+$xdpy4%SM;vYIMI0mH-Mwb~>nx-9r3SHJReuz><5w{B3iZW( zeSA=?^C^}Li~O%7+sdY;-b!xlEq62vYMZ?;+3ft*f$~kYHuU!k_Hhtf#zbQWna$ML zf)^I{1qPJPxL1XaIYgJZN7OM#NxfsrpHO;|I?}q-&T?vBdOwOw`l-n|qY`IH-BQx% z1xQzFgjfH=pUBZu;SXiX>9D-{PD@$2Ka6|uaB?30Ej|#&tzq)wK=|F3GW1ZmCVuQb z6s}*Rf!^FG7mmQ+U&!|TVVN49pG2R%%qh^O%18fJ5QHN1??# zWZ(k`f2zv9kg12l4Vtqrk}Ys;C0}y=A%E{c?pv8D^k2VQG-DX3pekX;|AmwuGJ6Wr zm0C*_F<cWA7CS8V1VOl13j5*J54u4~j{@ zW1JHB8!ovr_?S70n=6x!W7J-B98IF8zje+HsT9&V<}cBwLV6xUdl`8w{H`R9Vfy>* zL~2hm1)6s%wUKEy&U0lKtJ`$7a^Rv9w3s^k^`(oZ zfuf7osZR><;$#^$gDA66WlEKv=ui2(N{0?0A5(fn=~JbX2QqvuX;yp?sW+VTq0+=S z^6q$8fFAt|8E{&=^k=70MRz5%OW$~gUHZsU?b45)Pj%@fS4yXUhLp zRdU4FG&KQDC(fv*{b#9Z)Opo(FQ94HRcQJ`E}r%Whs76+;s?Is{Zu@bij#xGghX<1 zIDf$o4yP{zH$4rvC55}1#N8rpqZ-OVWaJqgM6RCIL1f1{9YijlOAR8!E~N&My_d=v zM8?1qsX=7TnbaV%_FQTZ8N_VFnXEsE96I90tL6+lr{?S|RdcSCrp#Fw zFz0G{=1fd8XV=-3Ihz9Jj9{|;rY6lff7Ul=9>Yg!c>0(&@La~2w(C5QZaK*1naKS_ zJ_HieiD{%qK+)AC$G~&v%%FDuB9KlA%Q`p)4lYd_1IL-Nlv^~`B^>orIK83Wf@nQ<(BXL`B;rKQGzXEb0LW77;6az4#~$yV7c!Z)h2FJ$IQ(iapBM;yFyqpHiH^WTq57G_^p?3mel{(?bmODlMK%KB{!9(uC6Dc?i!M zNs2q1NiQjNV&tbQb(LOH>de=0P)<&+UdH648-3xLkY^0(&5%oqbQUOHsjKvoQfHxt zgK`3M{7Tvc=FYX?1m?xH<_2apB{wju z8F?!;n5PD{y%)jQ-%GYQTnNK*KYm z;o0p>4HGgf+dvIRR70s!Piem;)HzaVOzBpo2S8snH9X)Yr-l>nrYc)G)4MtMQpH%_ z%yHqpm(LuR(|rk=k~uXTd@FNmc7KsEcSyri&Ke$#l`cyO}N;Mi*Tx z*G0YWmT^(Hdu3cyQr1Q1XwgG;QTJt9=asskWoOdc%6fg6=7=)#uw0pEWo0H(CbFC| zW0g)<>MD&Zy`dv#ws1Dbh=VkX<5M;DkzjiwDo>SNSsrOml-L zZ}D$eO6j*e^}By3@}%TrGw_DEJ4J>-d@oe})Ac*_$n zSZst1d~N(APdxeCz}Pw*z6;*e;qL@^ z;>)YUe+!JQ!#@DeI{Y9|hvP_hF2cVH1>{eG?+#u3L!GoI8t|v(HNT&W+%&R<;4L1< zoRp{imM6Y;N0Gn0=ch&9;$P1)HitY7H@4J-txp(nIZC-!IQUmt20x7ZD9HtJo$?7dBBV}c=8rs zMSPz6El+zKU}hUUd5eFUJrQ757(Drk@KIp48a(-m@G)Qx89aH5w`D~8El>O7z?2$1 zd5eFU{Rv?17(Drk@E$PX$A0}GUlCqriu{?uldlN>HZcFM!IQ5DUm2JjgC}1Rz6vlu zHF)wB;cEkvZ}8+R!sh`~WbouI-j-2jc@+ZF&EUyfd~NZ0;w{hejR7;t;K^5n_kdY$ z@Z>GNX+Xc_sXuQP#$Rhcc#E$bz+0a9LSXJ&`vdrw)i(#2x1RX*hkQl)qrm)`!IQ5D z?*dcB;K^Hj?STE3r~NWpn`UtQ*@s;O`tTcG?7GD_*dEzZkeC-7y z2MnG(G2g|%xAD*7El+$NFxL&9yu~*S;4M#l44A)p>emPI7XLOF^0deD#JdYI9vM7& zVrWkx{#m@`iLbIqq@lr+uLvInroF+FxA?q(e#=w82TX5+CvWji0B?EX3m1z_GDJid;2#@)ha# zfRSf@`I5JIt20x7;WCjwF?jM8|2EW+C*Jb3#{uU5F?jM8Z}UjJ<%xfLxyZj6Jb8<^ zIy3cG2BxvWlehT1fIXI{{z71yS^ER{m+5za`P|wcz&nBG7t2$>tit@q;K^Hi3c--4 z{gzjIR*Q_b_JB{~1NIjhp7;bX(+!@y#Ww{*p873MeC@R&3k;q-F>H@y$P;gQ#k=Sq zEFQeYTOSf{dEz6${PAbDSswwGC%*CqkzUq* z@D}d{^jn_zw>OH6GkEeAPli18TVC;-P`(xq-r}uJ;w?|SY{p-MCvWk#4ij&A;+?Ii z4+c-(;v)h3El>R0+eH50g-#FK9iOyw*D;7^wTKY%>e2KZ+*_`e6A_~AEXvEkqT z@EZ~*=374IY=FNR;6q5wV!jRj@3DR$fAvlIJHuB7U(@go_zw&p{l{;DD}UXl1!7wI z$;$7*^V$4G;MrOBh}=RLpUuhtRR|Yn8$5&P2U`~OgXQVBIPkTAr!0AkkAfjjyyb~6 z+>3d;!ILM3`aS%!c*_&tbRYfh>nCsVZUAq2;w$gR8kE74xA?pO-tuY>FsH3O0eqDJ z-txppfq7=|ow|HwqeFRvZ_&i{;4W4{O_$V+944!;Ncn_FQ z4W7KkTbpT*<<*{pSi`gSfVcR!ku~zfTb}r)z|1gs@)ln^fVVvHQD9D3`vdsO0lejj zcY%3k@Z_z2GUREGC^8BTJsDSy!tB@Rlb& z511|nPu}9A0lejj_kbxec=8sX07Je$h~GNG8ppIZ+YsE zoIsy!@Z^bMeq#asmM6aUN%-I3$y39K_)p7_FxSobq{@)ln?Ft4z@+H)D} zB-S4A7T**M`T8K1C*He)ZQM6~|Bxq!{Gtg$#M(El+#`n3e`l z-r^Hr$P;gQ;@#`m%QkrO#Js9L#DN)L@Z>Gt14EwrEwB1-icGfp!CO2Ti?_VuJ(2Ym z58mQq&~5RSC%*8O$XSCYZ}Cn5Z+YT9VC3t@{{j4?K>3pY9x%2~s7?M`ki(yb0iJ1< z*C(_D#`Xzcfam-w9Ox6gyRaGI>=Vdao8!<&zCMWM)hGAR55MK(UGNs~1n`z8zV?00 zF$|u(#WxM$El+$Dn5qU(-s1BDc*_&-0aMT5$ybE0{Q&1xtUcf@-U;Zpyyh2}(FX4Z z@Rb92%M;JNpd|)R-s-oQ`UtQ*@$yjQpuv;3_$r7ZPrT)cuL8^igC}qCZwK&}C%!f? zfA9^zyvSFC&jaRf44%BjR}Sd6JoOg>Q_bMXTfDV__FJBK2bf%gCtndh0?bbho_t04 zC@_TvPu}9K&9ukzw8sUe*x<=qytO&g{x~p044!;N_yjN$4W7KkTN^U%kwA@Z>AP=K=H7;K^J3%luOa%>VkP zU!Tca{LB2~0Q0{Mp1j4!0%NY_Ss$tZ@$Uvt-r^%*$g{jGPrMrn$uA9_JTV-zqWEX= zmM6X`o)3x*p1j4!0(i?4|2F2xqYR$B#lI}Sm4TUQ@Z>Gt3Fx;x^+$nOZSdqRJ}-c` zJnGt+FYMDo4nBe7%;ywc=8r+eMr3JiRV0hpuv-`2%iVcM1v=9@phg= z{g$Wx+L({bH+b?EA2Bu)Z+YV5z?2$1d5d=fc*_%?hq*)6xBT)VZ}C=Vrv3ylwG5uT z#eWgdZ+Yr(im~qB4W7KkR}SDUPrL(6k-?L%2poo+{Xn*}7UE0ha$Bc#g55KQ#St0RJ{*C`-KMiFbhcGlM5j z4E0+~CO!g8Rf8vA5k3k`J%cA-5k3Y?3xg+L5#9ynD}yI*@ecApp7vXw`K^sUZ>YhO zxA?*U-txr9fSGIU3E*Gm9~YRd)}8=98qjZf>TilReZ}C(TYFxnzYv%|c-xe30G}7o zZ+Yr>f%#j5CvWvv4m`_Pp7_MKL-M2lpRs#^mu;^9KmOUXXYX_NR*Y-z7LNOEa_b_j zTuP~Fa)}5dCrYJ}N)bjKiqMD>l2JmaCQ5GAh)Rf2Atg6q&U1a{J8RagnLT@-!#!JGYp&q}HGKC1f7J*?I2S@^$M`TfIuHT@7KanF`d zf>+a5T4T12d$xQUJo}9>x=-K1_WSgR(A;*m`?Lk4`}9=w=zZE=5r4M`m-9YlYYqLd z1~u2*SPB1F;mUptpyeCEtLf{wT}!)X%O}CB>6>^(|amfm>HmX%q$(w1AScYuB+t709$MBg*B+T=JqG>+~J-rp9Zg{@57v?`N6k? zSJO8>iT{YRd$#8Hf>+Zgi^lAi?%DE<;MMdknE$wE%Qu5p(+^?RS~cH4Z24;N>TEqH zjoEJQ6SVwXul<^z8nc#r_F^CA*S$Hv2Xm2ow!Ho>WDOUn>HDXS*!UF_0(!J$J;7s9&eR+ynSuVPQc|0ux%f$`CZImbH1AE zXANtWa?h4egICiJVJ>mcmahb_rnjrc>^Ar8B42@d z!aZBQ9pV|KsR zkJkKp@M`)x%#-ff@|ED#^bMG)wetPRmTv^FrtiV5?VkNM^ysmXgl*N_b^!k&-rvC!ZydANxM$024VA1(j&`7@q9wKnz(o=f?$Cfi@nZxx!`&h}in8_dFNOYAQ+pDULS&z0$~@m?q{ z=W`QVYq0R#r{&*9H;IsVVsn%{tD^R}qDp5*y4JJLN{z8k!nz7KP(d$xQ%cy%`a z-#GR(A1&VrUQOSFIo~~7z8bumeh71!d$zo0)^LHEzWu_O{m?yIUTdaT(+^>>AT8XgZ7e9Eio6PV}Rv*oo0&R5enVJhqSV=Z{iq*v3oU^a8l#zonB z8eu(Z`T@*N?%DEb@M`)552QWZv*m~3v8kr7jF;>{_w2?NSJT@nC40m@TmHUqj#V$@ zAL1i^Kln7Z)#Li#Xg;o24v*`>>LuH6{rrAsYkq<`Y_3P0t!Isrz1O{=<#lY(tLZB+ zA9v4|Ps4mQeI4d>_iXuL@M`*W&60i7JzKsNyqdlTbGLhTkx$nu+0&YjF7iE?`5X9o zatVBzlx%hP?85mln`{0O_;l@(y;<|on%@rlN6r1yhk3VqwtO{sHNCAYWfz;q3+p5 zz76w1_v|9yfjQniyU2H8PIb>N@;#U@x@Rx;2zGXRy?J~4o0aS`_iP$I9<@(K_s;<4 zd+yoto$$Iyo$XJ219OY}7Fs^Vb+9>KP2Yp*YyH7@@n`aC`sS7;`-6Kn4cA}Ar@WfJ z1M{SN_J7ffVELhK2jRA;xovBklC8RN{@7&8*L~X>E>P3=VK#8jmTv~Hrcbvm+1Bpa z@|ED#^mUljJzKtoU~@g{Y(1~QYg(-bEnf}u)%5mCoEzP<<@>>_v-vO|)BNBylj~7u z^Iui6Gc+Hq`8@=iUQOS7HJ*#zvuSu=Zxq&}p6%TGZEU*`mLE5wdG1{`oO^rt8OIu% z_-iNsc?ajG_|$sTT+a||Sm2(m^(4Wo=_}inY+Lv2B434hqkDFdufy!`o?YadFz7_(?%DG7uz%FtKlYlEeaSsrUiWDY7qBme;m)m?O{1{+s4Z0t>1~u1QhuO|OyT~_T-r$~H*9Fz<8EmTv^FrcZY$+0pLVMZN=bs(ZG));zlY>W(G5 zz&%@DYoJ$iJ#Cn)+_UB9nxCX4`;mKgk?+F%-aT9X%&>phkHheoyzxbjy??>z*c-?1 z?eW-KJsf-W*Ou&ExEybr7+cp>4cDdSZEwLG?Vc@P30|G;E0|N+$ zT}pP7d$xQtcr|?+<{9^Fd9AsI3)J*|m=(6jZ!cTE66UMv2QcfpXBYV)%*)-gi@fbx zvK`&C<*Q*mYObdWvxj?jk#E2p>YgpH+sOT+=KLniN8PjKwFY`MeFx?#<}vr|BHxDLo6vlG zvE}RG_NsY%2QbUHXBYYE>r1wld$xQp%vW>%5a#9X+46JUUfT_?&)u_&drrz(Da=9c*+sqy^8xp4dEG|dziQ5}zM*7`+_UAi&*|0lEtrmbwtN!Sucq(7+~}Sy zuiMD^YWhCRuidldHIrUVKZN4tCEj@(IjI z?%72?g}K~4TVDHw>sNFC)M0+%o?YY{Fps%s%g=RtTQHMb=JzjKUTYX#Pa9?}_iXvO z=67LU>7HHW`!H{H&z7HSJp-6`yJyR%Hv93Pyb14Zx@XJJHNOgTj(fKJT=SbS-*V3` z@?Dsod$#;s`?C)-aL+FCLz=Df`!{Rs7rvgX8mi;yJySy!+bS8{t+#^)jeCj61+NF56rz<&l30q=1=a~ny)pFu0MtOr+c=% z)%JR&BdkYFUwLcEE_Kh={3Lia zeHG?9_v|8Hhq>K7TYj$n-+;N_J-f&^VIFbMF7hpyf4FBC`8Le>Hu>?)mQTa}QFH(F zVODX^me)S4;Q}@N5M~GW>>^*;qht%+v*qX7p9#$A?%74Y3UiHnc9BnE?sm^E@^zTU z+_Q^(17>pDeE+kHd=n;d&o1&Um{+@J%U8qwtLFXHh1ttJTVD6+=>6M=`LKI-ksrdG zoLo?Ya7 zFgI%b!MDPEHRq@M?*^~Vj-Pkn^@;lgEuRLj&TcQv{8#() zWAF(!uE z`A+a^dRvI!<#W%L?**^U)(^A2`(E%VHsrQ7d{Jlf55?<$%|{o`hdE61gYSg(s5!rJ zSjmoa&ps2q2$mnZuGBkQn>V-Zz;}FGwtPK!HT@9gYWHmUR`6>2=DTq&a?k$#ENg3o zZPnbi5C4pB%hq*Of>+ZIU@F_^#|c|L!H>(>HGEOi+j~p4hI_VrH@ps1(|3=+`$F#7 z@(ecTt26(BlGWtVg}zy`56PqDQv{py)to;(62C{}o=wB&W&EgSu~*Y4N8$Gt+_U8e z*oMvdYI^$+&NJ@W^4;Lo^j(;rYW=}i@MqkX^VRgd50~r#_iP%jzmH(ktLfWE<9$W< zY#RDEA=vb4`oTx>ea8-dJfLal6MVAi)%5l;91rfnFUjpAau4KErXBWI~1Ca*8G=;-OR&}*~(@BD5adb`lC54|^< zzbDpvk>3+L8fGD`pC6w@^Y@O{iNAM*HU9~hXTNt8*01LXJ|5M4e05=7x^wQ?y1fbJ zv+33JeV7g1vuSvK(9F^K1DIXiv*laZhE1>L{KknTJHS0#ey;gVn0LEp%WLN7{2|N< z?%DDw*21P&b3N5h;CB?=v*lL~o_#h9@4H)Y-+jaT))%=SZ-LSM*hlkzTsPd0bzIk$ zyX5x^Ti07fu(?h(*V+0c&a3X(G`wHB_>@;?w`&o8UhKY#mY-`sr!eny&o1(Hm=9?E z!6(>I>rrz(&6DtcpnG=F{1(jT+_Q^(8|FgyYbuV0L%Umahk|rXRu_?4B*(30_U# zJ_YZeyJyR%!K>-}Fju-~%WGy07pUo*r+fDsvLE|=w&r*8C1vYZb3OGd@x70Gw!H3l-d;6*1Li6BZ25Yaucq(9Ozf85 zUbcKScs2b1W@Y#6B47Ci-qUl>mQTWbHRo4hUgw@I-$Sr#_@bsCeiOeV>Yh!*`!~g> zygHlzE&Pl_^U?Cn;MMdUm}}j$<&)sm^gWo{-LvKE!K>*jUHlHVd$xQfcr|?j^Spbu zd?R=@eG6vZ8}j>?Eni2lYxtt3?|-{wuX4|($@XV?#;4x&m22=Gse873J^a0UHGSiT zl6~1dTRsV1P2cL_chaq(ei2V>=$5kPMdn; z%sFkv(A;*mbHds%3-M?C*c{Ds!iM3TP{;M2iOaKd+Ka4#^SS0WOvgQ2YfkXz>>9qP z>ANuBa?hsWeLBP^n_f-d`4N6j;htUO+c)ERO6x((GuWK3=KS_8_&p+dH2;|E(Q`e$ zI$O_=@fgv1(DEsQO|PaO`~*Much9Eb`~g1Y)%3le;{5^lY0nFds zvo*gSyqdmx7vAT`8$5h`vE|#rtLb|%se873BX~7^(#Ovw-LvI2vxW=Q^j(-E-LvH@ zVZJ(B56o#=Pw-j;=d0l%}=ldNq9qrt6+vVNQk zgnPDpH@t39(+|eS?Lqf!`DU1}rmvUB?Jw@x@>)X;7pUpGF#mMVmT!gmYWnH~Og-QK zS;KLE_Jdc`+vK<{>z=Lo)!^0He3*4KKll_Ia@!idu(yWcdp-la&$GR^ZM2l_=H1$6 z?*FFqVK91(H_<%CHV?;`y$t^;XI#!>jLrYyZEWC^%{8dG<_3(tHTP`!<%3t#H|LGp z=I+_@N$_g=Hq1xev*oqlxE?iq59T)aZ25YaucoieAGiOwXUl8m==>CBt3C4D%P#Uw zm_yyOu)YSZohKRmT%e2{!!BpVcxMP|>Fdjl+a>PV@`Es6 zOy!4Q1BDm49U=l1OKM{KAeP-tCHl7&nBQ^I)WmU7y;JG%od;_>)C4Dc68rF%MTH3&R5enwi&lW+_PyopTVYAXMWpp zJ53&a9eNQxKD6!DZ<*Ov&28&jP22sxEn6O^_{G=7eh5a#GtF$r@Cz^tvuib5_3imF z{K{|)cTO6&({VYE6ZZA!(RDtFJD&4-8`ZO2*S*+Q*ERI(+Adz#x#RfVLBB3EXD-0! zKH+hyo^Af=*jDo|NAvNxeVE_Ial6L;`FytKw{RU=znc3Q|FK4UvwODuT<75`%)8vP z>}TSnS4jS|Jm|d^XU59Fl)PK%eTV%)m(q&E917Gd$zo8Bj>B>t1xG~XUosEo)qSL z?%DEf1e^2KoZtWIxZUHPO~d1PuK5F)C)~4({19f|0r~!97kRsQ+}3l?F7g$ao!zsG zd;)Wjdv=kp!W`?KUF1`kFS%zI`8v$^-LvI&42&KRO_*P}XUorZf3;v9anF{o<346{ zzB)S|U|w+FUjm>TLhR{Ga=N@LI#@dis}++tLT+`=71( zbM5~D%&Xk9<*VU!teWeoTrqC%bkCO8F~jw!=^HRD_v|9yg}J~zyU5#><9364c9E~c z-0z+(pN9Rf=K9+(|8&om*KHiVy#tu#8~Ofc7y0Tp#%&Y#Z27tFuM}oy_iXvO*3*XB z-#uG?uK699qujIQ2VwuHxqn*U9Jlk_v*oM7tLeKiSG#A+&$WL0*0|m7o-N-D^VOW+ zg!!#|wtPRlx1**{zl-ymd$xQf%vaObVOBXfzkk{C{ovK~$u;A)se873FL*Wm0A@$` zYvlsjDJygY;-mV+B_qu1x<5xDa=6v>vFna&?Ot!y&dr@d^JKJm8 zZ^P&{?d@p3rrjyNroCa@wtHv358G(1AwjUY1~u2*y>Z-{?%6av$Le(py_!D#!ML68 zo-N-&u<6zGgCCCDeeT&boZmpO>DAf%o5pR6L-O^fX!&mNYWm@i@O_qhw)_CI*_^MY z@83Lb=eTFf55xB?YWg1jk@36Tv*jz{ze}ag=084eE8vb>!0STGx5IkW^o=LRZEyGN zB0q$=z&%_3+u^@=pa#o6;_n*Wh6{E4Jc{P=^SW^SbpJVSjd$hiXKQ|nVAt?P&Gire zh1X#2*)+U=8EkrW=ARk2XXMfH{ovK~z30YlhePxAu;tsqtLf|i9=Ff9XUjLjV^B@s z{m;1F;hrr&SaxRpYWjAiY-=2ruZJz4g#EA1=D)0L?{(ir%eV5~lI&plhd6}+0h z{*JP}?7jJV*z%3=9*CO0`_8f*=AJD-4EL9szH@llu6ECs?}zun)b!1x%J#f_wtP3N zUrnEUq-?K$U%q~}yv~6&T%e}!!kq1%Ex&$Pzk0Ug=jYf~$IoBTJipb$@iRECZ2P}I zUk_XJ@#FohxgPaw^UuV#ntwi;^Y;q#yDgj_j>zY;HNS~th|T$G-rnTIvMq4WmeD9BXXJc%u^=yM4T~8G=ul4zC&2NSMsoora*!^_be&U`juQk*P*7HkjtMv@fqwDEm z=DR+S?;p12cf$Ecy*d7{aYosi?%DE7x}IaOt=98t^yqq;n7K4g7(Ab_H9sxS++S+0 zr~A3Gt?HgF|6=P|4_<3HA@r$eu4nIX{PZxhbfoW}FuxLxA2rw0huP6RTkEL@uclAV zD%(Ep+45=d>TLhRyx)Bzc&(v^0c!dt%t`LqnqLj`)$|>h3*58iwFb^t(+^;-cF&gA z8tB#ZLzr9Lvx~f)UA8~EXBYVjjD0Y_zu5BiaC_BUPXlHp_iXuU@M`)tOw~PGz7f1S zyS*^4b3Y7z5WJec|M{{V>YlCnmEhI%1DKQDv(HB_g5`&{ts~eqd{J}T>N#b*-nV7b zEWoG!4j{ccyRP%f_NcB4EwBAUucoh@U$+0cXUkhSx2rRMLD^O~%I`b0{2)BntLcZG zvhC!aE#C}YP2ac}uMOO@0Pwqet& z>ANt0a?hUkq5r+_bYF8@HMi}-F9Xl>BzuEdwoStIs=4g|zUteucbjF~G;GV>8z#X+ ziyw!x{d?pSLSyve?~&s<_H3Ai*_LJ(phwTK$z^3*{=@lgVRH`mvu^L`ZLh-A+_Q^( z3UjP`w!Ds2&R28)G-1wk&z4WICN{mAz6*1?dv=i@!u-fRTYj$FYhN$hz3$mXz5?^8 zdv=jeV9Foy{l5gh3bUqrw&rV}jP9Q%%vSE%^7XJk)!d&wm^Zj*7x~KNWjoM4yT~_S zPIAvK@?Ds#+_UA|Vf|{ZKfR)CefMnn*-*I}M;&n_SRzvqD@T$h^LHsP0o&t5Nu z>q>)XuMMNe@78R8{JuUk*QwXE@$tJKj2^#-qDLRUU0m<)aXHt(=A0LM{Ptkh_-O9g z@K0bwrAb5m;2a~9}g|~)!}(xuytKpKi9_I21duj?rc9E4i3$2 zXFDE_hSBkGB6{?A=;3;w!R1^7TWioh8Qnj9n5~b=J-f&cVBYDTEkAl2d3m<~uPNKd z-6!ZG-+=kNd$#;s>u-@LYLuXfL-;p06Guj|zG-RsNtZue~YHnw4NzM4M00gp$m2Q5G6 z`4i?6_jUC5(TgybAKEtY=5?ugT}}8O`?hTPGUk&rsoZo;s-aT8sAH15r`UAYjrTJ+2X7FnI4$Rlx zv*nZE)$~1>AGl{1`2ox?-LvKEVZJ(B{}1tcPwPh)`4)^FpWnZ1`F5DE=KM;pY#X{~ z%MXHA(+^>Ga?dXE{hRQfl6!WM@BXN4pLNfcuY~oev;7bAP4~U%u_3pu;Y-DvzJGJs zeya7LX|nTM_`Wjrrmy@I=Uew|`Fjv-&R5e9Z!KHpgna+AH$X4x`Kt1>vTfnpvN=Cn z8~#_xalI3*eEn>#LHnGySIyho zfZ54CyT~_T4s_2h@-3KS+_U9dxD9NsN6q!vZTOjmd$xQ%cr|?;<}&x}BHw}ep?kKx z)-bxBon_lh9xdMu z`$tV*xvOkDyJySy!{bFwKllaS<8sfIuZQ_+`sy#scAR^*yw*^|1?p@*%vqWr`~Z&I z(yQrv_mu5s_iP$IrgToASJU_JE!$)6+4AkMel>mLKD>wg3E%(dB0q##**#mngJ5$# zYR+%pkDuwdXVY-~Ed-lhO<(zK+1}@#O+#PBr@Wdzh54j=w)`M?HGT2`zF&6Fme(=N z^{DCVzr)W2-LvJN5A)TTf3R$SmPgwsm;C(Mgr9=vYb~~}D-GAhUK>W|&u!U${@gt@ zx1H_$*??JyKjX*Y=+X0M7uWj-T%Nt&3u|b=b0+tXnzy&|d;E;gJ)4I2m&~Yd!mP8% zZ)5O%Y@_*V&QAwrd#!u6=68Zu(+^+{a?h4;1h3BK|DkMWXg*qg7`&Rk`cT=v>z*y& z3SLd$h55C6wtN!2n!XS77x!%WO7Lp>0nBsm+42JfyGG+p-}@uJpE@bu|7;rGU;Qv& zP2c`g*>-i$mhT3yrcWQn{&&xoXRx^*b><(z`BNS(KM3>H^vR#`{fK+Ed>Xu(z5#Q& zd$zpR%=M`0D}TZH);(Lk66UM3^}sx!^#q@UpP8!Z(;?2EC+GX0t@(Wfo9j_$>v^hd z+qkcw<*Q-7I-CD2_P^$%<+}(r=d0<5&y}s^o=wB!0e{7Rv1fk`CMn|&@NqTU&p9`R zzAH56EaVq_#P{od2eUB0*#3+jJ^%DxC|l!Gete>}9_@3kU(NORVJ>jbmQQgVY&qrZNfgU`DppMZf^qfUH5GH zDuT`Rt2w_uHet89XVdU_?jYFoYWiVm!v5u+O+)`-e9Eioo8uF<{wewW#ohtE2$mn( zHu2_lskv<%{`I~sTRsh*eGrTuYae3!W9^jC+;+Cd*Oy`R__`E5`uOVOde=BLUq4%G zm}~zJVD@#-F7iW|liah5yp<>HLig+DBbfya^k+XUjJbY(;!n!XP6M)z#_MwqXr@4__Pv*k5&biPeb*hjSi}$UkP4KUx!)xjQsv(%clr-4PVss z?Uzp2ChplZJRU0H{RcIDr!rx?xM#~Z5$qbisOc-qP1sTH*)*K5->alo)Av@Guv6T# z<=Z&HvFX+H^)<2o-LvJFMzHDCo1+_RP1rBa$oCKXQS>4>e$aDmiFXYbsJU$m{_nmm z8y96h4W7N!XJ^ib3ER(y+l1z}vz-s$2(u7>#*eq5N6&{nT<=}Dd;tcqwFVsnT(g>M z?!&yaoqM)?1M}JRYWiw2VcWZB%WLN7{1j$C_v|8HhdJ6kTRsWvQFA>_n6uooi+mgA z3is?H--Wr^JzE|ZWzE~G=6cd~a16L-FZN;mZEyNM%nE1v{ttex=j#E?HtyLq^pYN* zwk}=^`L=AWEe&g99|@!9>rbKA$M37AwQ2hTFZW~h%FvuM+p+p17#*uWLysP-Db}$4 z=knXm)_UeTmg+DccF!*I4Vcs1vx|Ha=Bw`6^4uqE-q&j0cU_ok+_UAY!K>*9Ft@sA z7x~J93HyzEwtPR#S7-BK9@qTf>%pt(tLshJf8Db+U#5l&)buTw<<83QFSdLm%vWdY zfmz^w5PUayHGLZg+TQNjn%@szP2bpH!anAnEng2_P2Yw2jC*#Gw+$!k0{3kBW|*($ z{3gt|+_U8w>>9s#XMQ7muP2Y@AM^R8lC#XK>02;=a?f7u=Xfq|Z#rSmxo68a5p1qU z&H1)D?ys}+`mMLvbO&OKYcj`g#-9yQm~hPmB6 zTV87(U4IAWckbEp%`jih`IXm9*x%f|Xb5&2NYGtLeKi zf7blqtHG=32QbgOXKTI;*Q2Jd?2PY~&hf`Dy2z(6YrAL555juXoS*E1_gmbv<@>>_ z>4z|HanC*+J$gQ@!f{S^TfDRDdfkM5MAwC;;bWl^u1if{g*nqbd$FJ6xh8$Xgk9pE zE#C<5!>c*Jv-^bg-LvJJ;rlo>ePwSvm$_%l?-|ykrf=>$VatCpzwg-VqyJ}Lh1*{B z&ejIMiErCM>$-Lip1lK%o;zx6f9^OiG`F4Yx#I|!h4?dmd<;GM+%d%UK8efueH>eB z(0x?H1!}I@-acWQpPPGjk*~nK(LKA!CoqS)XUj9#T#uUTN%q5YnLL_*%;T+-v&^gM zdoVY-XUiwStLXwe^V)by48@mkkCTV6Bi)$~=E70=7}C%eekVK#BkmhXo3 zt2y7^f#(kQZ25ZdYWh0NewrV=W^(=NZ2kcgc8unuHNO((tLZB+=ecLg_YiE(SJU?o zoUpEYHVyCJ6v3ufXY(5q_H)fg%U8nrK~0~$6YqPwXD{{$Hs{CJqSZrif1U657h3*} z;qMNsIluKDyietx{SNf#`60pe=(^P0wgdkz-tmG_zym-^6FyD92mLCMK zrcXXFVZU|HmhT6zrXRvQ>z*yI*LyWwpr&seIbmylIlsTy@^jt4?GNI;Eca~r1i|Kf zHRpGany^Lg*)-fgdQC#FrmuVi?*+MM%QwUARnxa%ZgkIGe zYWgnB(^`M<^{^f_y&Z$st{3L}ldbs{)}zk+$0sb6M=$mWHrK=8|78BS2|Gj{&C9tz z2l!;utLXN8d$A9^eH~s^z1`m^qg`m z+n-a;3Qe!)lq+!gLj3>ycp>z17ya*Z$`IFkHZIRzbE1ETUX*WYPlX=)%FN{}gkCrF zD?;xcdf(8xjUD`l-*g+***-iU&$IAcPaAzf*!GIhKMZ|mXw7dSG+)j6l?x{9kMNw& zrr|zs;!|Et--3DdS98xk9j*PNZR_E9Q*+z?g%fs>Z_8fn{ofd`;ext1eeyl5%{^Pb z5$3D2wOxnT{}=n((DH-uZ#Svw8~De|-tC?(KSZ#(9yNXa7x+CE_iP&OtJX_qyqdoM z;DkNpo-MDLqw{+M{4T-Q^7XUjD`CDmoB!B^ecXK?EuUabY|dBH4`I%8&!*w}8~9|? ztLf{HPuLIKvx|He<{|fN`AV3t=KLPaXvsC%}&)=aPF{3gt)?%74Y1#_8uwtO1aujc$7%un32SHa13^s&~3;~cI{ovm$% z*K+U+aCsAb$}HPnu+Gf3YHnLue$vkOZP}d9;{^X?^5W}a-wdPk@WY|UFT>@2PF_Fs z&Y=$t&G`%Y1t0NT{YjXG`NeiNdi3>w6>D4W>-lYDYn=(UVRN6TdAsT`RrhQf-Y(sz z^lJJBOwB!8zK3nt^lJKKg-JWvJzKsJyqdlR^8@#6`D*ZL`Yz0U?%DEMGuNZ0@4*b+ zv*k6DUQIuQS?BV6f3k~wvf`xe=AJE|g!QXAKZSXpd-kR1(c{^|@5HLJZC9VP>$NRf z*VPQyrKaz~{M$WSz7@QhzPiSwt$KwYOKAB@@ak+mFt2o<2Ctbl3{cbeVD@p(UOXSc zrmuL@_t%`XQ{1y@c&w)QWYeqZD{D>KSKPDZwdQQTZ%d!R+~A%q-$$_N)%3$;(w=b7 zrr~tVi{z74a?H}n0;mQRCM)AwOEa?h4e zf>+ZIVRm-UmLL6{kON@!9P|;kKks}tG`F4Yn7Ir_$INx;Lvbzfn5nF0_KI)iw~?(i zRKuFpo8u2tn7Vtmylz(w7pUoNgGqajd$xQf%vaM_U_PPs1h1K+^Q$oDyJu_u=sx7- zoS(vcN9zwBFF&(wIiGzGjQ08CY~SY--I?ah+4lJwFxuxYN009FIX-B(f%j@S>T)&#W`N~PV!aZAluG`y!dD=Z&Ubm6+)tujf+5YN${p=#& zgE`PWTYiU>-UE_Urpcp5MIN(XUq4; zXV#;pZ+~>sw)|ecezv?`n{mFHK0S8Qj&;wLZ-@D6`u_2Fj&RSG*KOo{HGT6$?C5Lr z^|0kDVZNHawP?~_(uScmryY(H zHRrVP|D^DIe6i(QxC(X+U)1!KGjSev&z4VvSJT&FzTuuNp9HU_Z^GQ>o-N-9UQOSJ zdE7m_$X7o%X_f2q+sl@p>pYyoY~`L^mR~g?Vera?W{@byJySy5NxhT&Gq!op0tsPlpLk#F*%!hjI4|}n0ra7`_V_%~{UTlu;Bp@4Y^}3_ZP=sx zxpMBLE&Ki4v*qX7&k0P`J-f(PVcz1NUF1`kBiys))3AOu@0S+L+3wjzz6bMX_v|8X z=ixo8ALRRoE#C_3QD^Ic`LO#|@WbHM^v&}p?W^wDn%@atO<(yEj$8L^`Fikb`UcDv zKg`$9mTv{GrXRqZ;hrtOTkz`Hj?X8tt&Y$Cq7TJ{czjkbn6zVh`FhxzUk&rs+4^BF zaNh{N61>7=Cc6+}(X%D*}plSHHZs1d1O`l$f_o>{oDw^N z-IU*6w!GHN^{DAPFdMpO%U8pEHGLmu2ls6G(eD}eg3)>DJ#0T09Uq$8&UT-k1*7}) zQuLv?mUy2w@V)bfKk{R23BHeR!R+dutu<>ujP8>*%sbt)<b?PKz2 z`Sw~fUQOS865oTnXUiwy`vo<9``JnRk9)R!e}$R(YWl{~^X%2P`2CBPZ-)75`u}2b}@&|+ojHKS8JYK z=DvxR9|o_cZ=5&}|E8NiUeNN@;MMePnB{+#d$xQfcr|?oW?T2{BHx8M(mh*VYpCG@ zHRlgt&UDX~*Ba>6^h20$yJyR5=IH$76Z7m>?%DF1IXb@z^Dp=8BA>!+d0W0e+46I( zrwOyad$#;s>uJF(a?dXEZI~asXUo^a{j28w9Kbx`o-IGudWJAByFI_XYjUBd-x z&L5tGD8N~yD(pM&z7%*_r%ony)VzR|F~z%Yi11>sOi%S=hJI_5^ z{#cvYKWh3u%rD%t|*z9`DU1}&er*@ zdG-hQEwua~%vaMl@E>k``8~c*(DF%m4^W-W{|?R@?ptX2W|*(0AAWb9-Q=Dv-wXR$ zP2as1=H7fgS^NIcxw;0UrXTzOk0bYN&97oRcILh5D?h~dJMP)?bDifKFyC^|F7jQN zyR`n`8(}@_Y(2es_7ANGt@$!sznZ=Yv)X<6{$b1O+(oaZZ^69QJ-f)aVGefBmQQVF zf2ujZ4|Ae>w!GHN^{DBqH_fw4-LvJjW_mS!3iEUK>>^)>dE7l)eu!XmzB-$K^E})8 z*Zz1!%fB`J4jB73m;{eGe*7);()Z7t)3yq|N9dzNbN+1St}nnW%%+=NjvhUC4e*}N zCcnwo$<{g(Y{Ta5QuB7%>SnvSXY(SSXS8qW)$|pZce!WFH?a+yUQOSE`GkA6yk?Hh z@7y-eE_BcS19}nW^5dVOr++(hxn?Fy sHS~Us*KF`Sm$K!%curz-4Ql%4!?>^A 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 z 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∈H-K57U(fUOaQZ0>OI_fB`#PdbVBwv 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%0AX#TEeu6s=uTP;}7WZ7kX3-)JZ@r6-FWbF!D0k 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