jsgui3-server 0.0.75 → 0.0.77
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/examples/client-side-popup-menu-button.html +93 -93
- package/examples/controls/_html-server-color-palette.js +114 -114
- package/examples/controls/html-server-combo-box.js +104 -104
- package/examples/controls/html-server-list.js +98 -98
- package/examples/controls/html-server-popup-menu-button.js +114 -114
- package/examples/controls/html-server-start-stop-toggle-button.js +146 -146
- package/examples/controls/scs-arrow-button.js +36 -36
- package/examples/controls/scs-date-picker.js +157 -157
- package/examples/controls/scs-file-browser.js +82 -82
- package/examples/controls/scs-item.js +159 -159
- package/examples/controls/scs-month-arrow-selector.js +126 -126
- package/examples/controls/scs-month-view.js +95 -95
- package/examples/controls/scs-start-stop-toggle-button.js +40 -40
- package/examples/controls/scs-tree.js +49 -49
- package/examples/controls/scs-year-arrow-selector.js +127 -127
- package/examples/demos/date-picker.js +119 -119
- package/examples/demos/explain-encapsulation.js +9 -9
- package/examples/demos/resizing.js +35 -35
- package/examples/demos/server_time.js +6 -6
- package/examples/demos/square_box.js +324 -324
- package/examples/html-rendering.js +20 -20
- package/examples/html-server.js +100 -100
- package/fs2.js +1836 -1836
- package/module.js +21 -21
- package/old/single-control-server.js +418 -418
- package/package.json +44 -42
- package/publishing/function-publisher.js +202 -202
- package/publishing/notes.md +5 -5
- package/publishing/observable-publisher.js +118 -118
- package/publishing/resource-publisher.js +306 -306
- package/resources/data-resource.js +104 -104
- package/resources/fs-resource.js +148 -148
- package/resources/jsbuilder/Abstract_Single_Declaration.js +105 -0
- package/resources/jsbuilder/Abstract_Single_Declaration_Sequence.js +43 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Abstract_Node.js +62 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Abstract_Node_Group.js +42 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Group_Shared.js +62 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node.js +94 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_0-Core.js +228 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_1-Babel.js +338 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_10-Changing.js +40 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.1.1-Child.js +97 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.1.2-Parent.js +38 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.1.3-Ancestor.js +62 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.2-Inner.js +44 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.3-All.js +73 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.4-Sibling.js +93 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.5-Available_In_Scope.js +29 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.9-Signature.js +116 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3-Basics.js +160 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.0.0-Basics_First.js +179 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.0.1-Basics_Second.js +88 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.0.99-Basics_Last.js +92 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.1-Basics_Each.js +137 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.1.5-Basics_Count.js +74 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.2-Basics_Filter.js +40 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.3-Basics_Collect.js +86 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.4-Basics_Select.js +43 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.5-Basics_Find.js +41 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.6-Basics_Callmap.js +55 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_4.0-Index_Indexes.js +46 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_4.1-Index.js +344 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.0-Category.js +39 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.1-Category_Identifier.js +31 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.2-Category_Literal.js +29 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.3-Category_Expression.js +27 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.4-Category_Pattern.js +9 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.5-Category_Declaration.js +44 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.6-Category_Statement.js +22 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_6.0-Type.js +87 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_6.1-Type_Class_Declaration.js +9 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_6.2-Type_Variable_Declaration.js +28 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_6.3-Type_Variable_Declarator.js +29 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_7-Query.js +737 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_8-Features.js +65 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_9-Planning.js +32 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Arrangement.js +15 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Declared_Object.js +306 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Feature.js +78 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Feature_Declaration.js +249 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Feature_Declarator.js +139 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Feature.js +10 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Feature_Exported.js +101 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Feature_Exports.js +61 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Interpreted.js +180 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/_JSGUI_Root_Node_Interpreted.js +43 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/special_case_objectassign_to_object.js +12 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Group.js +35 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Operation.js +11 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Operation_On_Relationship.js +32 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Ordered_Relationship_Node_To_Group.js +38 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Ordinal.js +40 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Ordinal_Relationship.js +25 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Relationship_Node_To_Group.js +201 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Relationship_Node_Within_Group_To_Node.js +44 -0
- package/resources/jsbuilder/JS_AST/_JS_AST_Node_3.8-Query_Features.js +77 -0
- package/resources/jsbuilder/JS_AST/query/all.js +0 -0
- package/resources/jsbuilder/JS_AST/query/enable_array_as_queryable.js +228 -0
- package/resources/jsbuilder/JS_AST/query/find_object_keys.js +405 -0
- package/resources/jsbuilder/JS_AST/query/node_queries.js +9 -0
- package/resources/jsbuilder/JS_AST/query/root_queries.js +0 -0
- package/resources/jsbuilder/JS_AST/query/root_query_identidy.js +12 -0
- package/resources/jsbuilder/JS_AST_Node_Extended/JSGUI_Singular_Declaration.js +86 -0
- package/resources/jsbuilder/JS_AST_Node_Extended/JS_AST_Node_Declaration.js +124 -0
- package/resources/jsbuilder/JS_AST_Node_Extended/JS_AST_Node_Extended.js +88 -0
- package/resources/jsbuilder/JS_AST_Node_Extended/JS_AST_Node_Extended_0-Core.js +11 -0
- package/resources/jsbuilder/JS_Builder.js +10 -36
- package/resources/jsbuilder/JS_File/Feature/JS_File_Declared_Object.js +32 -0
- package/resources/jsbuilder/JS_File/Feature/JS_File_Exported_Object_Info.js +26 -0
- package/resources/jsbuilder/JS_File/Feature/JS_File_Exports.js +79 -0
- package/resources/jsbuilder/JS_File/Feature/JS_File_Feature.js +18 -0
- package/resources/jsbuilder/JS_File/Feature/JS_File_Imported_Object_Info.js +26 -0
- package/resources/jsbuilder/JS_File/Feature/JS_File_Imports.js +9 -0
- package/resources/jsbuilder/JS_File/JS_File.js +12 -0
- package/resources/jsbuilder/JS_File/JS_File_0-Core.js +202 -0
- package/resources/jsbuilder/JS_File/JS_File_1-Early_Parse.js +175 -0
- package/resources/jsbuilder/JS_File/JS_File_2-Babel.js +81 -0
- package/resources/jsbuilder/JS_File/JS_File_3-JS_AST_Node.js +86 -0
- package/resources/jsbuilder/JS_File/JS_File_4-Query.js +414 -0
- package/resources/jsbuilder/JS_File/JS_File_4.1-Query_Features.js +415 -0
- package/resources/jsbuilder/JS_File/JS_File_5-Planning.js +59 -0
- package/resources/jsbuilder/JS_File/JS_File_6-Changing.js +24 -0
- package/resources/jsbuilder/JS_File/JS_File_Export_Reference.js +12 -0
- package/resources/jsbuilder/JS_File/JS_File_Import_Reference.js +24 -0
- package/resources/jsbuilder/JS_File/JS_File_Import_References.js +32 -0
- package/resources/jsbuilder/JS_File/JS_File_Processor.js +16 -0
- package/resources/jsbuilder/JS_File/JS_Files.js +16 -0
- package/resources/jsbuilder/Module.js +14 -0
- package/resources/jsbuilder/Platform.js +13 -53
- package/resources/jsbuilder/Platforms.js +69 -15
- package/resources/jsbuilder/Project.js +109 -0
- package/resources/jsbuilder/Reference.js +1 -1
- package/resources/jsbuilder/Reference_Sequence.js +16 -7
- package/resources/jsbuilder/Scope.js +30 -0
- package/resources/jsbuilder/Variable_Name_Provider.js +43 -0
- package/resources/jsbuilder/_JS_File.js +226 -0
- package/resources/jsbuilder/ast_query.js +21 -0
- package/resources/jsbuilder/babel/babel_consts.js +150 -0
- package/resources/jsbuilder/babel/babel_node_tools.js +542 -0
- package/resources/jsbuilder/babel/deep_iterate/deep_iterate_babel.js +604 -0
- package/resources/jsbuilder/build.js +16 -0
- package/resources/jsbuilder/platform_notes.md +66 -0
- package/resources/jsbuilder/test/test_ast_node.js +451 -0
- package/resources/jsbuilder/test/test_js_file.js +303 -11
- package/resources/jsbuilder/test/test_project.js +157 -0
- package/resources/local-server-info-resource.js +78 -78
- package/resources/process-js.js +537 -537
- package/resources/server-resource-pool.js +84 -84
- package/resources/website-css-resource.js +411 -411
- package/resources/website-javascript-resource.js +761 -751
- package/resources/website-resource.js +390 -390
- package/resources/website-static-html-resource.js +196 -196
- package/server.js +170 -170
- package/single-control-server.js +398 -398
- package/single-page-app.js +129 -129
- package/resources/jsbuilder/Declaration.js +0 -15
- package/resources/jsbuilder/Declaration_Sequence.js +0 -15
- package/resources/jsbuilder/JS_File.js +0 -77
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var jsgui = require('../server/server');
|
|
4
|
-
|
|
5
|
-
var ctrl = new jsgui.Control({});
|
|
6
|
-
var ctrl2 = new jsgui.Control({});
|
|
7
|
-
|
|
8
|
-
ctrl.add(ctrl2);
|
|
9
|
-
ctrl.add_class('example');
|
|
10
|
-
|
|
11
|
-
ctrl2.add('Hello');
|
|
12
|
-
//ctrl2.add('World');
|
|
13
|
-
|
|
14
|
-
var html = ctrl.all_html_render();
|
|
15
|
-
|
|
16
|
-
console.log('ctrl', ctrl);
|
|
17
|
-
console.log('ctrl.content._arr', ctrl.content._arr);
|
|
18
|
-
console.log('ctrl.content._arr.length', ctrl.content._arr.length);
|
|
19
|
-
console.log('ctrl2.content._arr', ctrl2.content._arr);
|
|
20
|
-
console.log('ctrl2.content._arr.length', ctrl2.content._arr.length);
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
var jsgui = require('../server/server');
|
|
4
|
+
|
|
5
|
+
var ctrl = new jsgui.Control({});
|
|
6
|
+
var ctrl2 = new jsgui.Control({});
|
|
7
|
+
|
|
8
|
+
ctrl.add(ctrl2);
|
|
9
|
+
ctrl.add_class('example');
|
|
10
|
+
|
|
11
|
+
ctrl2.add('Hello');
|
|
12
|
+
//ctrl2.add('World');
|
|
13
|
+
|
|
14
|
+
var html = ctrl.all_html_render();
|
|
15
|
+
|
|
16
|
+
console.log('ctrl', ctrl);
|
|
17
|
+
console.log('ctrl.content._arr', ctrl.content._arr);
|
|
18
|
+
console.log('ctrl.content._arr.length', ctrl.content._arr.length);
|
|
19
|
+
console.log('ctrl2.content._arr', ctrl2.content._arr);
|
|
20
|
+
console.log('ctrl2.content._arr.length', ctrl2.content._arr.length);
|
|
21
21
|
console.log('html', html);
|
package/examples/html-server.js
CHANGED
|
@@ -1,101 +1,101 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Created by James on 02/10/2016.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
var jsgui = require('../server/server');
|
|
6
|
-
var Server = jsgui.Server;
|
|
7
|
-
var port = 80;
|
|
8
|
-
var Server_Page_Context = Server.Page_Context;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
var server = new Server({
|
|
12
|
-
'*': {
|
|
13
|
-
'name': 'html-server'
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
var resource_pool = server.resource_pool;
|
|
18
|
-
|
|
19
|
-
// Rendering single page controls makes a lot of sense.
|
|
20
|
-
// It means the activation code can be contained better there.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
console.log('resource_pool', resource_pool);
|
|
26
|
-
console.log('resource_pool.resources', resource_pool.resources);
|
|
27
|
-
|
|
28
|
-
// Get the website resource
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
// Caching items / resources by type?
|
|
33
|
-
|
|
34
|
-
// Need to give the resources a name.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
//var website = resource_pool.get_resource('Server Router');
|
|
38
|
-
|
|
39
|
-
//console.log('\n\n');
|
|
40
|
-
var server_router = resource_pool.get_resource('Server Router');
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
//console.log('server_router', server_router);
|
|
45
|
-
|
|
46
|
-
if (!server_router) {
|
|
47
|
-
throw 'no server_router';
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
var routing_tree = server_router.routing_tree;
|
|
51
|
-
|
|
52
|
-
routing_tree.set('/', function(req, res) {
|
|
53
|
-
console.log('root path / request');
|
|
54
|
-
var server_page_context = new Server_Page_Context({
|
|
55
|
-
'req': req,
|
|
56
|
-
'res': res,
|
|
57
|
-
'resource_pool': resource_pool
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
// Page_Bounds_Specifier
|
|
61
|
-
|
|
62
|
-
var hd = new jsgui.Client_HTML_Document({
|
|
63
|
-
'context': server_page_context
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
hd.include_client_css();
|
|
67
|
-
hd.include_js('/js/app-bundle.js');
|
|
68
|
-
|
|
69
|
-
var body = hd.body;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
var ctrl = new jsgui.Control({});
|
|
73
|
-
var ctrl2 = new jsgui.Control({});
|
|
74
|
-
|
|
75
|
-
ctrl.add(ctrl2);
|
|
76
|
-
ctrl.add_class('example');
|
|
77
|
-
|
|
78
|
-
ctrl2.add('Hello');
|
|
79
|
-
body.add(ctrl);
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
hd.all_html_render(function(err, deferred_html) {
|
|
83
|
-
if (err) {
|
|
84
|
-
throw err;
|
|
85
|
-
} else {
|
|
86
|
-
//console.log('deferred_html', deferred_html);
|
|
87
|
-
var mime_type = 'text/html';
|
|
88
|
-
//console.log('mime_type ' + mime_type);
|
|
89
|
-
res.writeHead(200, { 'Content-Type': mime_type });
|
|
90
|
-
res.end('<!DOCTYPE html>' + deferred_html, 'utf-8');
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
server.start(port, function(err, cb_start) {
|
|
96
|
-
if (err) {
|
|
97
|
-
throw err;
|
|
98
|
-
} else {
|
|
99
|
-
console.log('master server started');
|
|
100
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Created by James on 02/10/2016.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
var jsgui = require('../server/server');
|
|
6
|
+
var Server = jsgui.Server;
|
|
7
|
+
var port = 80;
|
|
8
|
+
var Server_Page_Context = Server.Page_Context;
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
var server = new Server({
|
|
12
|
+
'*': {
|
|
13
|
+
'name': 'html-server'
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
var resource_pool = server.resource_pool;
|
|
18
|
+
|
|
19
|
+
// Rendering single page controls makes a lot of sense.
|
|
20
|
+
// It means the activation code can be contained better there.
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
console.log('resource_pool', resource_pool);
|
|
26
|
+
console.log('resource_pool.resources', resource_pool.resources);
|
|
27
|
+
|
|
28
|
+
// Get the website resource
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
// Caching items / resources by type?
|
|
33
|
+
|
|
34
|
+
// Need to give the resources a name.
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
//var website = resource_pool.get_resource('Server Router');
|
|
38
|
+
|
|
39
|
+
//console.log('\n\n');
|
|
40
|
+
var server_router = resource_pool.get_resource('Server Router');
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
//console.log('server_router', server_router);
|
|
45
|
+
|
|
46
|
+
if (!server_router) {
|
|
47
|
+
throw 'no server_router';
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
var routing_tree = server_router.routing_tree;
|
|
51
|
+
|
|
52
|
+
routing_tree.set('/', function(req, res) {
|
|
53
|
+
console.log('root path / request');
|
|
54
|
+
var server_page_context = new Server_Page_Context({
|
|
55
|
+
'req': req,
|
|
56
|
+
'res': res,
|
|
57
|
+
'resource_pool': resource_pool
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// Page_Bounds_Specifier
|
|
61
|
+
|
|
62
|
+
var hd = new jsgui.Client_HTML_Document({
|
|
63
|
+
'context': server_page_context
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
hd.include_client_css();
|
|
67
|
+
hd.include_js('/js/app-bundle.js');
|
|
68
|
+
|
|
69
|
+
var body = hd.body;
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
var ctrl = new jsgui.Control({});
|
|
73
|
+
var ctrl2 = new jsgui.Control({});
|
|
74
|
+
|
|
75
|
+
ctrl.add(ctrl2);
|
|
76
|
+
ctrl.add_class('example');
|
|
77
|
+
|
|
78
|
+
ctrl2.add('Hello');
|
|
79
|
+
body.add(ctrl);
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
hd.all_html_render(function(err, deferred_html) {
|
|
83
|
+
if (err) {
|
|
84
|
+
throw err;
|
|
85
|
+
} else {
|
|
86
|
+
//console.log('deferred_html', deferred_html);
|
|
87
|
+
var mime_type = 'text/html';
|
|
88
|
+
//console.log('mime_type ' + mime_type);
|
|
89
|
+
res.writeHead(200, { 'Content-Type': mime_type });
|
|
90
|
+
res.end('<!DOCTYPE html>' + deferred_html, 'utf-8');
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
server.start(port, function(err, cb_start) {
|
|
96
|
+
if (err) {
|
|
97
|
+
throw err;
|
|
98
|
+
} else {
|
|
99
|
+
console.log('master server started');
|
|
100
|
+
}
|
|
101
101
|
});
|