diff options
Diffstat (limited to 'share')
-rwxr-xr-x | share/32BitLaunch/OpenSim.32BitLaunch.exe | bin | 5632 -> 0 bytes | |||
-rw-r--r-- | share/32BitLaunch/OpenSim.32BitLaunch/OpenSim32.sln | 22 | ||||
-rw-r--r-- | share/32BitLaunch/OpenSim.32BitLaunch/Program.cs | 24 | ||||
-rw-r--r-- | share/32BitLaunch/OpenSim.32BitLaunch/Properties/AssemblyInfo.cs | 8 | ||||
-rw-r--r-- | share/32BitLaunch/OpenSim.32BitLaunch/app.config | 75 | ||||
-rw-r--r-- | share/32BitLaunch/README | 5 | ||||
-rwxr-xr-x | share/32BitLaunch/Robust.32BitLaunch.exe | bin | 5632 -> 0 bytes | |||
-rw-r--r-- | share/32BitLaunch/Robust.32BitLaunch/Program.cs | 23 | ||||
-rw-r--r-- | share/32BitLaunch/Robust.32BitLaunch/Robust32.sln | 22 | ||||
-rw-r--r-- | share/32BitLaunch/Robust.32BitLaunch/app.config | 72 | ||||
-rw-r--r-- | share/RegionLoading/example_web.xml | 34 |
11 files changed, 224 insertions, 61 deletions
diff --git a/share/32BitLaunch/OpenSim.32BitLaunch.exe b/share/32BitLaunch/OpenSim.32BitLaunch.exe deleted file mode 100755 index 62c14af..0000000 --- a/share/32BitLaunch/OpenSim.32BitLaunch.exe +++ /dev/null | |||
Binary files differ | |||
diff --git a/share/32BitLaunch/OpenSim.32BitLaunch/OpenSim32.sln b/share/32BitLaunch/OpenSim.32BitLaunch/OpenSim32.sln new file mode 100644 index 0000000..93522ea --- /dev/null +++ b/share/32BitLaunch/OpenSim.32BitLaunch/OpenSim32.sln | |||
@@ -0,0 +1,22 @@ | |||
1 | | ||
2 | Microsoft Visual Studio Solution File, Format Version 12.00 | ||
3 | # Visual Studio 14 | ||
4 | VisualStudioVersion = 14.0.25420.1 | ||
5 | MinimumVisualStudioVersion = 10.0.40219.1 | ||
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim32", "OpenSim32.csproj", "{968B4C73-280D-4FF5-9F73-DD3D10160C2E}" | ||
7 | EndProject | ||
8 | Global | ||
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||
10 | Debug|x86 = Debug|x86 | ||
11 | Release|x86 = Release|x86 | ||
12 | EndGlobalSection | ||
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||
14 | {968B4C73-280D-4FF5-9F73-DD3D10160C2E}.Debug|x86.ActiveCfg = Release|x86 | ||
15 | {968B4C73-280D-4FF5-9F73-DD3D10160C2E}.Debug|x86.Build.0 = Release|x86 | ||
16 | {968B4C73-280D-4FF5-9F73-DD3D10160C2E}.Release|x86.ActiveCfg = Release|x86 | ||
17 | {968B4C73-280D-4FF5-9F73-DD3D10160C2E}.Release|x86.Build.0 = Release|x86 | ||
18 | EndGlobalSection | ||
19 | GlobalSection(SolutionProperties) = preSolution | ||
20 | HideSolutionNode = FALSE | ||
21 | EndGlobalSection | ||
22 | EndGlobal | ||
diff --git a/share/32BitLaunch/OpenSim.32BitLaunch/Program.cs b/share/32BitLaunch/OpenSim.32BitLaunch/Program.cs index 52806b8..ca6c359 100644 --- a/share/32BitLaunch/OpenSim.32BitLaunch/Program.cs +++ b/share/32BitLaunch/OpenSim.32BitLaunch/Program.cs | |||
@@ -27,33 +27,13 @@ | |||
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | 29 | ||
30 | namespace OpenSim._32BitLaunch | 30 | namespace OpenSim32 |
31 | { | 31 | { |
32 | class Program | 32 | class Program |
33 | { | 33 | { |
34 | static void Main(string[] args) | 34 | static void Main(string[] args) |
35 | { | 35 | { |
36 | log4net.Config.XmlConfigurator.Configure(); | 36 | global::OpenSim.Application.Main(args); |
37 | |||
38 | System.Console.WriteLine("32-bit OpenSim executor"); | ||
39 | System.Console.WriteLine("-----------------------"); | ||
40 | System.Console.WriteLine(""); | ||
41 | System.Console.WriteLine("This application is compiled for 32-bit CPU and will run under WOW32 or similar."); | ||
42 | System.Console.WriteLine("All 64-bit incompatibilities should be gone."); | ||
43 | System.Console.WriteLine(""); | ||
44 | System.Threading.Thread.Sleep(300); | ||
45 | try | ||
46 | { | ||
47 | global::OpenSim.Application.Main(args); | ||
48 | } | ||
49 | catch (Exception ex) | ||
50 | { | ||
51 | System.Console.WriteLine("OpenSim threw an exception:"); | ||
52 | System.Console.WriteLine(ex.ToString()); | ||
53 | System.Console.WriteLine(""); | ||
54 | System.Console.WriteLine("Application will now terminate!"); | ||
55 | System.Console.WriteLine(""); | ||
56 | } | ||
57 | } | 37 | } |
58 | } | 38 | } |
59 | } | 39 | } |
diff --git a/share/32BitLaunch/OpenSim.32BitLaunch/Properties/AssemblyInfo.cs b/share/32BitLaunch/OpenSim.32BitLaunch/Properties/AssemblyInfo.cs index e81870f..bda1a79 100644 --- a/share/32BitLaunch/OpenSim.32BitLaunch/Properties/AssemblyInfo.cs +++ b/share/32BitLaunch/OpenSim.32BitLaunch/Properties/AssemblyInfo.cs | |||
@@ -32,11 +32,11 @@ using System.Runtime.InteropServices; | |||
32 | // General information about an assembly is controlled through the following | 32 | // General information about an assembly is controlled through the following |
33 | // set of attributes. Change these attribute values to modify the information | 33 | // set of attributes. Change these attribute values to modify the information |
34 | // associated with an assembly. | 34 | // associated with an assembly. |
35 | [assembly: AssemblyTitle("OpenSim.32BitLaunch")] | 35 | [assembly: AssemblyTitle("OpenSim32")] |
36 | [assembly: AssemblyDescription("")] | 36 | [assembly: AssemblyDescription("OpenSim 32Bit Launcher")] |
37 | [assembly: AssemblyConfiguration("")] | 37 | [assembly: AssemblyConfiguration("")] |
38 | [assembly: AssemblyCompany("http://opensimulator.org")] | 38 | [assembly: AssemblyCompany("http://opensimulator.org")] |
39 | [assembly: AssemblyProduct("OpenSim.32BitLaunch")] | 39 | [assembly: AssemblyProduct("OpenSim 32BitLauncher")] |
40 | [assembly: AssemblyCopyright("Copyright (c) 2008")] | 40 | [assembly: AssemblyCopyright("Copyright (c) 2008")] |
41 | [assembly: AssemblyTrademark("")] | 41 | [assembly: AssemblyTrademark("")] |
42 | [assembly: AssemblyCulture("")] | 42 | [assembly: AssemblyCulture("")] |
@@ -59,5 +59,5 @@ using System.Runtime.InteropServices; | |||
59 | // You can specify all the values or you can default the Build and Revision Numbers | 59 | // You can specify all the values or you can default the Build and Revision Numbers |
60 | // by using the '*' as shown below: | 60 | // by using the '*' as shown below: |
61 | // [assembly: AssemblyVersion("0.6.3.*")] | 61 | // [assembly: AssemblyVersion("0.6.3.*")] |
62 | [assembly: AssemblyVersion("0.6.3.*")] | 62 | [assembly: AssemblyVersion("0.9.1.*")] |
63 | [assembly: AssemblyFileVersion("1.0.0.0")] | 63 | [assembly: AssemblyFileVersion("1.0.0.0")] |
diff --git a/share/32BitLaunch/OpenSim.32BitLaunch/app.config b/share/32BitLaunch/OpenSim.32BitLaunch/app.config new file mode 100644 index 0000000..9224240 --- /dev/null +++ b/share/32BitLaunch/OpenSim.32BitLaunch/app.config | |||
@@ -0,0 +1,75 @@ | |||
1 | <configuration> | ||
2 | <configSections> | ||
3 | <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> | ||
4 | </configSections> | ||
5 | <startup> | ||
6 | <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> | ||
7 | </startup> | ||
8 | <runtime> | ||
9 | <loadFromRemoteSources enabled="true" /> | ||
10 | </runtime> | ||
11 | <appSettings> | ||
12 | </appSettings> | ||
13 | <log4net> | ||
14 | <appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console"> | ||
15 | <filter type="log4net.Filter.LoggerMatchFilter"> | ||
16 | <loggerToMatch value="special"/> | ||
17 | <acceptOnMatch value="false"/> | ||
18 | </filter> | ||
19 | <layout type="log4net.Layout.PatternLayout"> | ||
20 | <conversionPattern value="%date{HH:mm:ss} - %message" /> | ||
21 | <!-- console log with milliseconds. Useful for debugging --> | ||
22 | <!-- <conversionPattern value="%date{HH:mm:ss.fff} - %message" /> --> | ||
23 | </layout> | ||
24 | </appender> | ||
25 | |||
26 | <!-- If you want automatic log-rolling then use RollingFileAppender instead of FileAppender: | ||
27 | <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> | ||
28 | <file value="log/OpenSim.log" /> | ||
29 | <rollingStyle value="Date" /> | ||
30 | <datePattern value="'.'yyyy-MM-dd"/> | ||
31 | ... | ||
32 | --> | ||
33 | |||
34 | <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> | ||
35 | <file value="OpenSim.log" /> | ||
36 | <appendToFile value="true" /> | ||
37 | <filter type="log4net.Filter.LoggerMatchFilter"> | ||
38 | <loggerToMatch value="special"/> | ||
39 | <acceptOnMatch value="false"/> | ||
40 | </filter> | ||
41 | <layout type="log4net.Layout.PatternLayout"> | ||
42 | <conversionPattern value="%date %-5level - %logger %message%newline" /> | ||
43 | </layout> | ||
44 | </appender> | ||
45 | |||
46 | <appender name="StatsLogFileAppender" type="log4net.Appender.FileAppender"> | ||
47 | <file value="OpenSimStats.log"/> | ||
48 | <appendToFile value="true" /> | ||
49 | <layout type="log4net.Layout.PatternLayout"> | ||
50 | <conversionPattern value="%date - %message%newline" /> | ||
51 | </layout> | ||
52 | </appender> | ||
53 | |||
54 | <root> | ||
55 | <level value="DEBUG" /> | ||
56 | <appender-ref ref="Console" /> | ||
57 | <appender-ref ref="LogFileAppender" /> | ||
58 | </root> | ||
59 | |||
60 | <!-- Independently control logging level for XEngine --> | ||
61 | <logger name="OpenSim.Region.ScriptEngine.XEngine"> | ||
62 | <level value="INFO"/> | ||
63 | </logger> | ||
64 | |||
65 | <!-- Independently control logging level for per region module loading --> | ||
66 | <logger name="OpenSim.ApplicationPlugins.RegionModulesController.RegionModulesControllerPlugin"> | ||
67 | <level value="INFO"/> | ||
68 | </logger> | ||
69 | |||
70 | <!-- used for stats recording --> | ||
71 | <logger name="special.StatsLogger"> | ||
72 | <appender-ref ref="StatsLogFileAppender"/> | ||
73 | </logger> | ||
74 | </log4net> | ||
75 | </configuration> \ No newline at end of file | ||
diff --git a/share/32BitLaunch/README b/share/32BitLaunch/README deleted file mode 100644 index 443cde0..0000000 --- a/share/32BitLaunch/README +++ /dev/null | |||
@@ -1,5 +0,0 @@ | |||
1 | Many issues appear in the support channels because of a misunderstanding of the use of these utilities. And through discussion at OpenSimulator Office Hours it was determined that these tools probably serve no useful purpose anymore. | ||
2 | |||
3 | Instead of removing them immediately, we move them here, for a time, in case there is a useful purpose that has escaped us during conversations. | ||
4 | |||
5 | If a need to compile these arises, the OpenSim.32BitLaunch and Robust.32BitLaunch directories may be placed under the ./OpenSim/Tools sources subdirectory, run the prebuild script and compile. | ||
diff --git a/share/32BitLaunch/Robust.32BitLaunch.exe b/share/32BitLaunch/Robust.32BitLaunch.exe deleted file mode 100755 index affedb4..0000000 --- a/share/32BitLaunch/Robust.32BitLaunch.exe +++ /dev/null | |||
Binary files differ | |||
diff --git a/share/32BitLaunch/Robust.32BitLaunch/Program.cs b/share/32BitLaunch/Robust.32BitLaunch/Program.cs index 490414c..ec5943e 100644 --- a/share/32BitLaunch/Robust.32BitLaunch/Program.cs +++ b/share/32BitLaunch/Robust.32BitLaunch/Program.cs | |||
@@ -26,35 +26,14 @@ | |||
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using log4net; | ||
30 | 29 | ||
31 | namespace Robust._32BitLaunch | 30 | namespace Robust32 |
32 | { | 31 | { |
33 | class Program | 32 | class Program |
34 | { | 33 | { |
35 | static void Main(string[] args) | 34 | static void Main(string[] args) |
36 | { | 35 | { |
37 | log4net.Config.XmlConfigurator.Configure(); | ||
38 | |||
39 | System.Console.WriteLine("32-bit OpenSim executor"); | ||
40 | System.Console.WriteLine("-----------------------"); | ||
41 | System.Console.WriteLine(""); | ||
42 | System.Console.WriteLine("This application is compiled for 32-bit CPU and will run under WOW32 or similar."); | ||
43 | System.Console.WriteLine("All 64-bit incompatibilities should be gone."); | ||
44 | System.Console.WriteLine(""); | ||
45 | System.Threading.Thread.Sleep(300); | ||
46 | try | ||
47 | { | ||
48 | global::OpenSim.Server.OpenSimServer.Main(args); | 36 | global::OpenSim.Server.OpenSimServer.Main(args); |
49 | } | ||
50 | catch (Exception ex) | ||
51 | { | ||
52 | System.Console.WriteLine("OpenSim threw an exception:"); | ||
53 | System.Console.WriteLine(ex.ToString()); | ||
54 | System.Console.WriteLine(""); | ||
55 | System.Console.WriteLine("Application will now terminate!"); | ||
56 | System.Console.WriteLine(""); | ||
57 | } | ||
58 | } | 37 | } |
59 | } | 38 | } |
60 | } | 39 | } |
diff --git a/share/32BitLaunch/Robust.32BitLaunch/Robust32.sln b/share/32BitLaunch/Robust.32BitLaunch/Robust32.sln new file mode 100644 index 0000000..368b3ca --- /dev/null +++ b/share/32BitLaunch/Robust.32BitLaunch/Robust32.sln | |||
@@ -0,0 +1,22 @@ | |||
1 | | ||
2 | Microsoft Visual Studio Solution File, Format Version 12.00 | ||
3 | # Visual Studio 14 | ||
4 | VisualStudioVersion = 14.0.25420.1 | ||
5 | MinimumVisualStudioVersion = 10.0.40219.1 | ||
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Robust32", "Robust32.csproj", "{A159489E-6552-4734-8EFA-8E031F63C7F6}" | ||
7 | EndProject | ||
8 | Global | ||
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||
10 | Debug|x86 = Debug|x86 | ||
11 | Release|x86 = Release|x86 | ||
12 | EndGlobalSection | ||
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||
14 | {A159489E-6552-4734-8EFA-8E031F63C7F6}.Debug|x86.ActiveCfg = Debug|x86 | ||
15 | {A159489E-6552-4734-8EFA-8E031F63C7F6}.Debug|x86.Build.0 = Debug|x86 | ||
16 | {A159489E-6552-4734-8EFA-8E031F63C7F6}.Release|x86.ActiveCfg = Release|x86 | ||
17 | {A159489E-6552-4734-8EFA-8E031F63C7F6}.Release|x86.Build.0 = Release|x86 | ||
18 | EndGlobalSection | ||
19 | GlobalSection(SolutionProperties) = preSolution | ||
20 | HideSolutionNode = FALSE | ||
21 | EndGlobalSection | ||
22 | EndGlobal | ||
diff --git a/share/32BitLaunch/Robust.32BitLaunch/app.config b/share/32BitLaunch/Robust.32BitLaunch/app.config new file mode 100644 index 0000000..ca3ee0e --- /dev/null +++ b/share/32BitLaunch/Robust.32BitLaunch/app.config | |||
@@ -0,0 +1,72 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <configuration> | ||
3 | <configSections> | ||
4 | <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> | ||
5 | </configSections> | ||
6 | <startup> | ||
7 | <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> | ||
8 | </startup> | ||
9 | <runtime> | ||
10 | <loadFromRemoteSources enabled="true" /> | ||
11 | </runtime> | ||
12 | <appSettings> | ||
13 | <add key="ClientSettingsProvider.ServiceUri" value="" /> | ||
14 | </appSettings> | ||
15 | <log4net> | ||
16 | <appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console"> | ||
17 | <filter type="log4net.Filter.LoggerMatchFilter"> | ||
18 | <loggerToMatch value="special" /> | ||
19 | <acceptOnMatch value="false" /> | ||
20 | </filter> | ||
21 | <layout type="log4net.Layout.PatternLayout"> | ||
22 | <conversionPattern value="%date{HH:mm:ss} - %message" /> | ||
23 | </layout> | ||
24 | </appender> | ||
25 | <!-- If you want automatic log-rolling then use RollingFileAppender instead of FileAppender: | ||
26 | <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> | ||
27 | <file value="log/Robust.log" /> | ||
28 | <rollingStyle value="Date" /> | ||
29 | <datePattern value="'.'yyyy-MM-dd"/> | ||
30 | ... | ||
31 | --> | ||
32 | <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> | ||
33 | <file value="Robust.log" /> | ||
34 | <appendToFile value="true" /> | ||
35 | <filter type="log4net.Filter.LoggerMatchFilter"> | ||
36 | <loggerToMatch value="special" /> | ||
37 | <acceptOnMatch value="false" /> | ||
38 | </filter> | ||
39 | <layout type="log4net.Layout.PatternLayout"> | ||
40 | <conversionPattern value="%date %-5level - %logger %message%newline" /> | ||
41 | </layout> | ||
42 | </appender> | ||
43 | <appender name="StatsLogFileAppender" type="log4net.Appender.FileAppender"> | ||
44 | <file value="RobustStats.log" /> | ||
45 | <appendToFile value="true" /> | ||
46 | <layout type="log4net.Layout.PatternLayout"> | ||
47 | <conversionPattern value="%date - %message%newline" /> | ||
48 | </layout> | ||
49 | </appender> | ||
50 | <root> | ||
51 | <level value="DEBUG" /> | ||
52 | <appender-ref ref="Console" /> | ||
53 | <appender-ref ref="LogFileAppender" /> | ||
54 | </root> | ||
55 | <!-- used for stats recording --> | ||
56 | <logger name="special.StatsLogger"> | ||
57 | <appender-ref ref="StatsLogFileAppender" /> | ||
58 | </logger> | ||
59 | </log4net> | ||
60 | <system.web> | ||
61 | <membership defaultProvider="ClientAuthenticationMembershipProvider"> | ||
62 | <providers> | ||
63 | <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" /> | ||
64 | </providers> | ||
65 | </membership> | ||
66 | <roleManager defaultProvider="ClientRoleProvider" enabled="true"> | ||
67 | <providers> | ||
68 | <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" /> | ||
69 | </providers> | ||
70 | </roleManager> | ||
71 | </system.web> | ||
72 | </configuration> \ No newline at end of file | ||
diff --git a/share/RegionLoading/example_web.xml b/share/RegionLoading/example_web.xml index f7ed25e..39e8023 100644 --- a/share/RegionLoading/example_web.xml +++ b/share/RegionLoading/example_web.xml | |||
@@ -1,8 +1,26 @@ | |||
1 | <Regions> | 1 | <Nini> |
2 | <Root> | 2 | <Section Name="OpenSim Test"> |
3 | <Config sim_UUID="18fb66dbf6274279885228f1c4064f8c" sim_name="OpenSim Test" sim_location_x="1000" sim_location_y="1000" datastore="OpenSim.db" internal_ip_address="0.0.0.0" internal_ip_port="9000" external_host_name="127.0.0.1" master_avatar_first="Test" master_avatar_last="User" master_avatar_pass="test" /> | 3 | <Key Name="RegionUUID" Value="e3be865f-35b6-4f7c-9aea-9ab017b07635"/> |
4 | </Root> | 4 | <Key Name="InternalAddress" Value="0.0.0.0"/> |
5 | <Root> | 5 | <Key Name="InternalPort" Value="9000"/> |
6 | <Config sim_UUID="111111dbf6274219881228f1c1061f8c" sim_name="OpenSim Test2" sim_location_x="1001" sim_location_y="1000" datastore="OpenSim2.db" internal_ip_address="0.0.0.0" internal_ip_port="9001" external_host_name="127.0.0.1" master_avatar_first="Test" master_avatar_last="User" master_avatar_pass="test" /> | 6 | <Key Name="AllowAlternatePorts" Value="False"/> |
7 | </Root> | 7 | <Key Name="ExternalHostName" Value="127.0.0.1"/> |
8 | </Regions> \ No newline at end of file | 8 | <Key Name="ResolveAddress" Value="False"/> |
9 | <Key Name="Location" Value="1000,1000"/> | ||
10 | <Key Name="SizeX" Value="256"/> | ||
11 | <Key Name="SizeY" Value="256"/> | ||
12 | <Key Name="ClampPrimSize" Value="False"/> | ||
13 | </Section> | ||
14 | <Section Name="OpenSim Test2"> | ||
15 | <Key Name="RegionUUID" Value="e3be865f-35b6-4f7c-9aea-9ab017b07636"/> | ||
16 | <Key Name="InternalAddress" Value="0.0.0.0"/> | ||
17 | <Key Name="InternalPort" Value="9001"/> | ||
18 | <Key Name="AllowAlternatePorts" Value="False"/> | ||
19 | <Key Name="ExternalHostName" Value="127.0.0.1"/> | ||
20 | <Key Name="ResolveAddress" Value="False"/> | ||
21 | <Key Name="Location" Value="1000,1001"/> | ||
22 | <Key Name="SizeX" Value="256"/> | ||
23 | <Key Name="SizeY" Value="256"/> | ||
24 | <Key Name="ClampPrimSize" Value="False"/> | ||
25 | </Section> | ||
26 | </Nini> \ No newline at end of file | ||