@luma.gl/core 9.2.0-alpha.3 → 9.2.0-alpha.5
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/dist/adapter/canvas-context.d.ts +2 -2
- package/dist/adapter/canvas-context.d.ts.map +1 -1
- package/dist/adapter/canvas-context.js +5 -1
- package/dist/adapter/canvas-context.js.map +1 -1
- package/dist/adapter/luma.js +1 -1
- package/dist/dist.dev.js +13 -7
- package/dist/dist.min.js +5 -5
- package/dist/index.cjs +11 -8
- package/dist/index.cjs.map +2 -2
- package/dist/portable/uniform-buffer-layout.d.ts +1 -1
- package/dist/portable/uniform-buffer-layout.d.ts.map +1 -1
- package/dist/portable/uniform-buffer-layout.js +6 -7
- package/dist/portable/uniform-buffer-layout.js.map +1 -1
- package/dist/portable/uniform-store.d.ts +1 -0
- package/dist/portable/uniform-store.d.ts.map +1 -1
- package/dist/portable/uniform-store.js +1 -1
- package/dist/portable/uniform-store.js.map +1 -1
- package/package.json +2 -2
- package/src/adapter/canvas-context.ts +6 -3
- package/src/portable/uniform-buffer-layout.ts +9 -8
- package/src/portable/uniform-store.ts +5 -1
|
@@ -14,7 +14,7 @@ export declare class UniformBufferLayout {
|
|
|
14
14
|
/** number of bytes needed for buffer allocation */
|
|
15
15
|
readonly byteLength: number;
|
|
16
16
|
/** Create a new UniformBufferLayout given a map of attributes. */
|
|
17
|
-
constructor(uniformTypes: Record<string, VariableShaderType>);
|
|
17
|
+
constructor(uniformTypes: Record<string, VariableShaderType>, uniformSizes?: Record<string, number>);
|
|
18
18
|
/** Get the data for the complete buffer */
|
|
19
19
|
getData(uniformValues: Record<string, UniformValue>): Uint8Array;
|
|
20
20
|
/** Does this layout have a field with specified name */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uniform-buffer-layout.d.ts","sourceRoot":"","sources":["../../src/portable/uniform-buffer-layout.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,iBAAiB,EAAC,gDAA6C;AAC5E,OAAO,KAAK,EAAC,kBAAkB,EAAC,kDAA+C;AAI/E,OAAO,KAAK,EAAC,YAAY,EAAC,qCAAkC;AAW5D;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,iBAAiB,CAAA;KAAC,CAAC,CAAM;IAE9F,mDAAmD;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,kEAAkE;
|
|
1
|
+
{"version":3,"file":"uniform-buffer-layout.d.ts","sourceRoot":"","sources":["../../src/portable/uniform-buffer-layout.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,iBAAiB,EAAC,gDAA6C;AAC5E,OAAO,KAAK,EAAC,kBAAkB,EAAC,kDAA+C;AAI/E,OAAO,KAAK,EAAC,YAAY,EAAC,qCAAkC;AAW5D;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,iBAAiB,CAAA;KAAC,CAAC,CAAM;IAE9F,mDAAmD;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,kEAAkE;gBAEhE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAChD,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAyB3C,2CAA2C;IAC3C,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,UAAU;IAgDhE,wDAAwD;IACxD,GAAG,CAAC,IAAI,EAAE,MAAM;IAIhB,0DAA0D;IAC1D,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,GAAG,SAAS;CAI9D"}
|
|
@@ -20,13 +20,15 @@ export class UniformBufferLayout {
|
|
|
20
20
|
/** number of bytes needed for buffer allocation */
|
|
21
21
|
byteLength;
|
|
22
22
|
/** Create a new UniformBufferLayout given a map of attributes. */
|
|
23
|
-
constructor(uniformTypes) {
|
|
23
|
+
constructor(uniformTypes, uniformSizes = {}) {
|
|
24
24
|
/** number of 4 byte slots taken */
|
|
25
25
|
let size = 0;
|
|
26
26
|
// Add layout (type, size and offset) definitions for each uniform in the layout
|
|
27
27
|
for (const [key, uniformType] of Object.entries(uniformTypes)) {
|
|
28
28
|
const typeAndComponents = getVariableShaderTypeInfo(uniformType);
|
|
29
|
-
const { type, components
|
|
29
|
+
const { type, components } = typeAndComponents;
|
|
30
|
+
// Calculate total count for uniform arrays.
|
|
31
|
+
const count = components * (uniformSizes?.[key] ?? 1);
|
|
30
32
|
// First, align (bump) current offset to an even multiple of current object (1, 2, 4)
|
|
31
33
|
size = alignTo(size, count);
|
|
32
34
|
// Use the aligned size as the offset of the current uniform.
|
|
@@ -41,9 +43,8 @@ export class UniformBufferLayout {
|
|
|
41
43
|
}
|
|
42
44
|
/** Get the data for the complete buffer */
|
|
43
45
|
getData(uniformValues) {
|
|
44
|
-
const bufferSize = Math.max(this.byteLength, minBufferSize);
|
|
45
46
|
// Allocate three typed arrays pointing at same memory
|
|
46
|
-
const arrayBuffer = getScratchArrayBuffer(
|
|
47
|
+
const arrayBuffer = getScratchArrayBuffer(this.byteLength);
|
|
47
48
|
const typedArrays = {
|
|
48
49
|
i32: new Int32Array(arrayBuffer),
|
|
49
50
|
u32: new Uint32Array(arrayBuffer),
|
|
@@ -51,8 +52,6 @@ export class UniformBufferLayout {
|
|
|
51
52
|
// TODO not implemented
|
|
52
53
|
f16: new Uint16Array(arrayBuffer)
|
|
53
54
|
};
|
|
54
|
-
// TODO is this needed?
|
|
55
|
-
// typedArrays.i32.fill(0);
|
|
56
55
|
for (const [name, value] of Object.entries(uniformValues)) {
|
|
57
56
|
const uniformLayout = this.layout[name];
|
|
58
57
|
if (!uniformLayout) {
|
|
@@ -82,7 +81,7 @@ export class UniformBufferLayout {
|
|
|
82
81
|
typedArray.set(value, offset);
|
|
83
82
|
}
|
|
84
83
|
}
|
|
85
|
-
return new Uint8Array(arrayBuffer);
|
|
84
|
+
return new Uint8Array(arrayBuffer, 0, this.byteLength);
|
|
86
85
|
}
|
|
87
86
|
/** Does this layout have a field with specified name */
|
|
88
87
|
has(name) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uniform-buffer-layout.js","sourceRoot":"","sources":["../../src/portable/uniform-buffer-layout.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAIpC,OAAO,EAAC,OAAO,EAAC,uDAAoD;AACpE,OAAO,EAAC,yBAAyB,EAAC,yDAAsD;AAGxF,OAAO,EAAC,qBAAqB,EAAC,qCAAkC;AAChE,OAAO,EAAC,aAAa,EAAC,6BAA0B;AAChD,OAAO,EAAC,GAAG,EAAC,wBAAqB;AAEjC;;;GAGG;AACH,MAAM,aAAa,GAAW,IAAI,CAAC;AAEnC;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IACrB,MAAM,GAA4E,EAAE,CAAC;IAE9F,mDAAmD;IAC1C,UAAU,CAAS;IAE5B,kEAAkE;IAClE,
|
|
1
|
+
{"version":3,"file":"uniform-buffer-layout.js","sourceRoot":"","sources":["../../src/portable/uniform-buffer-layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,7 @@ export declare class UniformStore<TPropGroups extends Record<string, Record<stri
|
|
|
24
24
|
*/
|
|
25
25
|
constructor(blocks: Record<keyof TPropGroups, {
|
|
26
26
|
uniformTypes?: Record<string, VariableShaderType>;
|
|
27
|
+
uniformSizes?: Record<string, number>;
|
|
27
28
|
defaultProps?: Record<string, unknown>;
|
|
28
29
|
defaultUniforms?: Record<string, UniformValue>;
|
|
29
30
|
}>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uniform-store.d.ts","sourceRoot":"","sources":["../../src/portable/uniform-store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,kBAAkB,EAAC,kDAA+C;AAC/E,OAAO,KAAK,EAAC,YAAY,EAAC,qCAAkC;AAC5D,OAAO,KAAK,EAAC,MAAM,EAAC,6BAA0B;AAC9C,OAAO,EAAC,MAAM,EAAC,uCAAoC;AAEnD,OAAO,EAAC,YAAY,EAAC,2BAAwB;AAC7C,OAAO,EAAC,mBAAmB,EAAC,mCAAgC;AAE5D;;;;;;GAMG;AACH,qBAAa,YAAY,CACvB,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAClE,MAAM,EACN,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACxB;IAED,uDAAuD;IACvD,aAAa,qEAA8C;IAC3D,sEAAsE;IACtE,oBAAoB,8CAAqD;IACzE,mCAAmC;IACnC,cAAc,iCAAwC;IAEtD;;;OAGG;gBAED,MAAM,EAAE,MAAM,CACZ,MAAM,WAAW,EACjB;QACE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QAClD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KAChD,CACF;
|
|
1
|
+
{"version":3,"file":"uniform-store.d.ts","sourceRoot":"","sources":["../../src/portable/uniform-store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,kBAAkB,EAAC,kDAA+C;AAC/E,OAAO,KAAK,EAAC,YAAY,EAAC,qCAAkC;AAC5D,OAAO,KAAK,EAAC,MAAM,EAAC,6BAA0B;AAC9C,OAAO,EAAC,MAAM,EAAC,uCAAoC;AAEnD,OAAO,EAAC,YAAY,EAAC,2BAAwB;AAC7C,OAAO,EAAC,mBAAmB,EAAC,mCAAgC;AAE5D;;;;;;GAMG;AACH,qBAAa,YAAY,CACvB,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAClE,MAAM,EACN,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACxB;IAED,uDAAuD;IACvD,aAAa,qEAA8C;IAC3D,sEAAsE;IACtE,oBAAoB,8CAAqD;IACzE,mCAAmC;IACnC,cAAc,iCAAwC;IAEtD;;;OAGG;gBAED,MAAM,EAAE,MAAM,CACZ,MAAM,WAAW,EACjB;QACE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QAClD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KAChD,CACF;IAmBH,0CAA0C;IAC1C,OAAO,IAAI,IAAI;IAMf;;;OAGG;IACH,WAAW,CACT,QAAQ,EAAE,OAAO,CAAC;SAAE,KAAK,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KAAC,CAAC,GAC7E,IAAI;IAUP,4DAA4D;IAC5D,0BAA0B,CAAC,iBAAiB,EAAE,MAAM,WAAW,GAAG,MAAM;IAIxE,mEAAmE;IACnE,oBAAoB,CAAC,iBAAiB,EAAE,MAAM,WAAW,GAAG,UAAU;IAMtE;;;OAGG;IACH,mBAAmB,CACjB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,MAAM,WAAW,EACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;SAAE,KAAK,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KAAC,CAAC,GAC9E,MAAM;IAeT,4GAA4G;IAC5G,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,WAAW,GAAG,MAAM;IAcrF,4DAA4D;IAC5D,oBAAoB,IAAI,KAAK,GAAG,MAAM;IAYtC,qEAAqE;IACrE,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM;CAwB1E"}
|
|
@@ -27,7 +27,7 @@ export class UniformStore {
|
|
|
27
27
|
for (const [bufferName, block] of Object.entries(blocks)) {
|
|
28
28
|
const uniformBufferName = bufferName;
|
|
29
29
|
// Create a layout object to help us generate correctly formatted binary uniform buffers
|
|
30
|
-
const uniformBufferLayout = new UniformBufferLayout(block.uniformTypes
|
|
30
|
+
const uniformBufferLayout = new UniformBufferLayout(block.uniformTypes ?? {}, block.uniformSizes ?? {});
|
|
31
31
|
this.uniformBufferLayouts.set(uniformBufferName, uniformBufferLayout);
|
|
32
32
|
// Create a Uniform block to store the uniforms for each buffer.
|
|
33
33
|
const uniformBlock = new UniformBlock({ name: bufferName });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uniform-store.js","sourceRoot":"","sources":["../../src/portable/uniform-store.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAKpC,OAAO,EAAC,MAAM,EAAC,uCAAoC;AACnD,OAAO,EAAC,GAAG,EAAC,wBAAqB;AACjC,OAAO,EAAC,YAAY,EAAC,2BAAwB;AAC7C,OAAO,EAAC,mBAAmB,EAAC,mCAAgC;AAE5D;;;;;;GAMG;AACH,MAAM,OAAO,YAAY;IAMvB,uDAAuD;IACvD,aAAa,GAAG,IAAI,GAAG,EAAmC,CAAC;IAC3D,sEAAsE;IACtE,oBAAoB,GAAG,IAAI,GAAG,EAA0C,CAAC;IACzE,mCAAmC;IACnC,cAAc,GAAG,IAAI,GAAG,EAA6B,CAAC;IAEtD;;;OAGG;IACH,YACE,
|
|
1
|
+
{"version":3,"file":"uniform-store.js","sourceRoot":"","sources":["../../src/portable/uniform-store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@luma.gl/core",
|
|
3
|
-
"version": "9.2.0-alpha.
|
|
3
|
+
"version": "9.2.0-alpha.5",
|
|
4
4
|
"description": "The luma.gl core Device API",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"@probe.gl/stats": "^4.0.8",
|
|
47
47
|
"@types/offscreencanvas": "^2019.6.4"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "bf8346ab62619ec2c3e0b6dd54be3142328c6377"
|
|
50
50
|
}
|
|
@@ -23,8 +23,8 @@ export type CanvasContextProps = {
|
|
|
23
23
|
height?: number;
|
|
24
24
|
/** Visibility (only used if new canvas is created). */
|
|
25
25
|
visible?: boolean;
|
|
26
|
-
/** Whether to size the drawing buffer to the pixel size during auto resize */
|
|
27
|
-
useDevicePixels?: boolean;
|
|
26
|
+
/** Whether to size the drawing buffer to the pixel size during auto resize. If a number is provided it is used as a static pixel ratio */
|
|
27
|
+
useDevicePixels?: boolean | number;
|
|
28
28
|
/** Whether to track window resizes. */
|
|
29
29
|
autoResize?: boolean;
|
|
30
30
|
/** @see https://developer.mozilla.org/en-US/docs/Web/API/GPUCanvasContext/configure#alphamode */
|
|
@@ -362,7 +362,10 @@ export abstract class CanvasContext {
|
|
|
362
362
|
|
|
363
363
|
// Update the canvas drawing buffer size
|
|
364
364
|
if (this.props.autoResize) {
|
|
365
|
-
if (this.props.useDevicePixels) {
|
|
365
|
+
if (typeof this.props.useDevicePixels === 'number') {
|
|
366
|
+
const dpr = this.props.useDevicePixels;
|
|
367
|
+
this.setDrawingBufferSize(this.cssWidth * dpr, this.cssHeight * dpr);
|
|
368
|
+
} else if (this.props.useDevicePixels) {
|
|
366
369
|
this.setDrawingBufferSize(this.devicePixelWidth, this.devicePixelHeight);
|
|
367
370
|
} else {
|
|
368
371
|
this.setDrawingBufferSize(this.cssWidth, this.cssHeight);
|
|
@@ -29,14 +29,19 @@ export class UniformBufferLayout {
|
|
|
29
29
|
readonly byteLength: number;
|
|
30
30
|
|
|
31
31
|
/** Create a new UniformBufferLayout given a map of attributes. */
|
|
32
|
-
constructor(
|
|
32
|
+
constructor(
|
|
33
|
+
uniformTypes: Record<string, VariableShaderType>,
|
|
34
|
+
uniformSizes: Record<string, number> = {}
|
|
35
|
+
) {
|
|
33
36
|
/** number of 4 byte slots taken */
|
|
34
37
|
let size: number = 0;
|
|
35
38
|
|
|
36
39
|
// Add layout (type, size and offset) definitions for each uniform in the layout
|
|
37
40
|
for (const [key, uniformType] of Object.entries(uniformTypes)) {
|
|
38
41
|
const typeAndComponents = getVariableShaderTypeInfo(uniformType);
|
|
39
|
-
const {type, components
|
|
42
|
+
const {type, components} = typeAndComponents;
|
|
43
|
+
// Calculate total count for uniform arrays.
|
|
44
|
+
const count = components * (uniformSizes?.[key] ?? 1);
|
|
40
45
|
// First, align (bump) current offset to an even multiple of current object (1, 2, 4)
|
|
41
46
|
size = alignTo(size, count);
|
|
42
47
|
// Use the aligned size as the offset of the current uniform.
|
|
@@ -53,10 +58,8 @@ export class UniformBufferLayout {
|
|
|
53
58
|
|
|
54
59
|
/** Get the data for the complete buffer */
|
|
55
60
|
getData(uniformValues: Record<string, UniformValue>): Uint8Array {
|
|
56
|
-
const bufferSize = Math.max(this.byteLength, minBufferSize);
|
|
57
|
-
|
|
58
61
|
// Allocate three typed arrays pointing at same memory
|
|
59
|
-
const arrayBuffer = getScratchArrayBuffer(
|
|
62
|
+
const arrayBuffer = getScratchArrayBuffer(this.byteLength);
|
|
60
63
|
const typedArrays = {
|
|
61
64
|
i32: new Int32Array(arrayBuffer),
|
|
62
65
|
u32: new Uint32Array(arrayBuffer),
|
|
@@ -64,8 +67,6 @@ export class UniformBufferLayout {
|
|
|
64
67
|
// TODO not implemented
|
|
65
68
|
f16: new Uint16Array(arrayBuffer)
|
|
66
69
|
};
|
|
67
|
-
// TODO is this needed?
|
|
68
|
-
// typedArrays.i32.fill(0);
|
|
69
70
|
|
|
70
71
|
for (const [name, value] of Object.entries(uniformValues)) {
|
|
71
72
|
const uniformLayout = this.layout[name];
|
|
@@ -101,7 +102,7 @@ export class UniformBufferLayout {
|
|
|
101
102
|
}
|
|
102
103
|
}
|
|
103
104
|
|
|
104
|
-
return new Uint8Array(arrayBuffer);
|
|
105
|
+
return new Uint8Array(arrayBuffer, 0, this.byteLength);
|
|
105
106
|
}
|
|
106
107
|
|
|
107
108
|
/** Does this layout have a field with specified name */
|
|
@@ -39,6 +39,7 @@ export class UniformStore<
|
|
|
39
39
|
keyof TPropGroups,
|
|
40
40
|
{
|
|
41
41
|
uniformTypes?: Record<string, VariableShaderType>;
|
|
42
|
+
uniformSizes?: Record<string, number>;
|
|
42
43
|
defaultProps?: Record<string, unknown>;
|
|
43
44
|
defaultUniforms?: Record<string, UniformValue>;
|
|
44
45
|
}
|
|
@@ -48,7 +49,10 @@ export class UniformStore<
|
|
|
48
49
|
const uniformBufferName = bufferName as keyof TPropGroups;
|
|
49
50
|
|
|
50
51
|
// Create a layout object to help us generate correctly formatted binary uniform buffers
|
|
51
|
-
const uniformBufferLayout = new UniformBufferLayout(
|
|
52
|
+
const uniformBufferLayout = new UniformBufferLayout(
|
|
53
|
+
block.uniformTypes ?? {},
|
|
54
|
+
block.uniformSizes ?? {}
|
|
55
|
+
);
|
|
52
56
|
this.uniformBufferLayouts.set(uniformBufferName, uniformBufferLayout);
|
|
53
57
|
|
|
54
58
|
// Create a Uniform block to store the uniforms for each buffer.
|