Index: mojo/dart/packages/mojo_services/lib/mojo/media/media_transport.mojom.dart |
diff --git a/mojo/dart/packages/mojo_services/lib/mojo/media/media_transport.mojom.dart b/mojo/dart/packages/mojo_services/lib/mojo/media/media_transport.mojom.dart |
index 507df9fbcadc7d01abe87979553a839207e3d92a..808dfd224539f4310c64af943a6674a4e9cb6258 100644 |
--- a/mojo/dart/packages/mojo_services/lib/mojo/media/media_transport.mojom.dart |
+++ b/mojo/dart/packages/mojo_services/lib/mojo/media/media_transport.mojom.dart |
@@ -5,9 +5,12 @@ |
library media_transport_mojom; |
import 'dart:async'; |
+import 'dart:collection'; |
import 'package:mojo/bindings.dart' as bindings; |
import 'package:mojo/core.dart' as core; |
+import 'package:mojo/mojo/bindings/types/mojom_types.mojom.dart' as mojom_types; |
+import 'package:mojo/mojo/bindings/types/service_describer.mojom.dart' as service_describer; |
import 'package:mojo_services/mojo/media/media_common.mojom.dart' as media_common_mojom; |
import 'package:mojo_services/mojo/media/media_pipe.mojom.dart' as media_pipe_mojom; |
import 'package:mojo_services/mojo/media/media_types.mojom.dart' as media_types_mojom; |
@@ -78,6 +81,22 @@ class _MediaProducerConnectParams extends bindings.Struct { |
'Object containing handles cannot be encoded to JSON.'); |
} |
} |
+mojom_types.MojomStruct _media_transport_MediaProducer_Connect_Params__() { |
+ return new mojom_types.MojomStruct() |
+ ..declData = (new mojom_types.DeclarationData() |
+ ..shortName = '_MediaProducerConnectParams' |
+ ..fullIdentifier = 'mojo.media._MediaProducerConnectParams') |
+ ..fields = <mojom_types.StructField>[ |
+ new mojom_types.StructField() |
+ ..declData = (new mojom_types.DeclarationData()..shortName = 'Consumer') |
+ ..type = (new mojom_types.Type() |
+ ..typeReference = (new mojom_types.TypeReference() |
+ |
+ ..identifier = '_media_transport_MediaConsumer__' |
+ ..typeKey = '_media_transport_MediaConsumer__' |
+ )), |
+ ]; |
+} |
class MediaProducerConnectResponseParams extends bindings.Struct { |
@@ -136,6 +155,13 @@ class MediaProducerConnectResponseParams extends bindings.Struct { |
return map; |
} |
} |
+mojom_types.MojomStruct _media_transport_MediaProducer_Connect_ResponseParams__() { |
+ return new mojom_types.MojomStruct() |
+ ..declData = (new mojom_types.DeclarationData() |
+ ..shortName = 'MediaProducerConnectResponseParams' |
+ ..fullIdentifier = 'mojo.media.MediaProducerConnectResponseParams') |
+ ..fields = <mojom_types.StructField>[]; |
+} |
class _MediaProducerDisconnectParams extends bindings.Struct { |
@@ -194,6 +220,13 @@ class _MediaProducerDisconnectParams extends bindings.Struct { |
return map; |
} |
} |
+mojom_types.MojomStruct _media_transport_MediaProducer_Disconnect_Params__() { |
+ return new mojom_types.MojomStruct() |
+ ..declData = (new mojom_types.DeclarationData() |
+ ..shortName = '_MediaProducerDisconnectParams' |
+ ..fullIdentifier = 'mojo.media._MediaProducerDisconnectParams') |
+ ..fields = <mojom_types.StructField>[]; |
+} |
class _MediaPullModeProducerGetBufferParams extends bindings.Struct { |
@@ -252,6 +285,13 @@ class _MediaPullModeProducerGetBufferParams extends bindings.Struct { |
return map; |
} |
} |
+mojom_types.MojomStruct _media_transport_MediaPullModeProducer_GetBuffer_Params__() { |
+ return new mojom_types.MojomStruct() |
+ ..declData = (new mojom_types.DeclarationData() |
+ ..shortName = '_MediaPullModeProducerGetBufferParams' |
+ ..fullIdentifier = 'mojo.media._MediaPullModeProducerGetBufferParams') |
+ ..fields = <mojom_types.StructField>[]; |
+} |
class MediaPullModeProducerGetBufferResponseParams extends bindings.Struct { |
@@ -318,6 +358,20 @@ class MediaPullModeProducerGetBufferResponseParams extends bindings.Struct { |
'Object containing handles cannot be encoded to JSON.'); |
} |
} |
+mojom_types.MojomStruct _media_transport_MediaPullModeProducer_GetBuffer_ResponseParams__() { |
+ return new mojom_types.MojomStruct() |
+ ..declData = (new mojom_types.DeclarationData() |
+ ..shortName = 'MediaPullModeProducerGetBufferResponseParams' |
+ ..fullIdentifier = 'mojo.media.MediaPullModeProducerGetBufferResponseParams') |
+ ..fields = <mojom_types.StructField>[ |
+ new mojom_types.StructField() |
+ ..declData = (new mojom_types.DeclarationData()..shortName = 'Buffer') |
+ ..type = (new mojom_types.Type() |
+..handleType = (new mojom_types.HandleType() |
+..kind = mojom_types.HandleTypeKind.sharedBuffer |
+..nullable = false)), |
+ ]; |
+} |
class _MediaPullModeProducerPullPacketParams extends bindings.Struct { |
@@ -386,6 +440,24 @@ class _MediaPullModeProducerPullPacketParams extends bindings.Struct { |
return map; |
} |
} |
+mojom_types.MojomStruct _media_transport_MediaPullModeProducer_PullPacket_Params__() { |
+ return new mojom_types.MojomStruct() |
+ ..declData = (new mojom_types.DeclarationData() |
+ ..shortName = '_MediaPullModeProducerPullPacketParams' |
+ ..fullIdentifier = 'mojo.media._MediaPullModeProducerPullPacketParams') |
+ ..fields = <mojom_types.StructField>[ |
+ new mojom_types.StructField() |
+ ..declData = (new mojom_types.DeclarationData()..shortName = 'ToRelease') |
+ ..type = (new mojom_types.Type() |
+ ..typeReference = (new mojom_types.TypeReference() |
+ ..nullable = true |
+ |
+ |
+ ..identifier = '_media_pipe_MediaPacket__' |
+ ..typeKey = '_media_pipe_MediaPacket__' |
+ )), |
+ ]; |
+} |
class MediaPullModeProducerPullPacketResponseParams extends bindings.Struct { |
@@ -454,6 +526,22 @@ class MediaPullModeProducerPullPacketResponseParams extends bindings.Struct { |
return map; |
} |
} |
+mojom_types.MojomStruct _media_transport_MediaPullModeProducer_PullPacket_ResponseParams__() { |
+ return new mojom_types.MojomStruct() |
+ ..declData = (new mojom_types.DeclarationData() |
+ ..shortName = 'MediaPullModeProducerPullPacketResponseParams' |
+ ..fullIdentifier = 'mojo.media.MediaPullModeProducerPullPacketResponseParams') |
+ ..fields = <mojom_types.StructField>[ |
+ new mojom_types.StructField() |
+ ..declData = (new mojom_types.DeclarationData()..shortName = 'Packet') |
+ ..type = (new mojom_types.Type() |
+ ..typeReference = (new mojom_types.TypeReference() |
+ |
+ ..identifier = '_media_pipe_MediaPacket__' |
+ ..typeKey = '_media_pipe_MediaPacket__' |
+ )), |
+ ]; |
+} |
class _MediaPullModeProducerReleasePacketParams extends bindings.Struct { |
@@ -522,6 +610,22 @@ class _MediaPullModeProducerReleasePacketParams extends bindings.Struct { |
return map; |
} |
} |
+mojom_types.MojomStruct _media_transport_MediaPullModeProducer_ReleasePacket_Params__() { |
+ return new mojom_types.MojomStruct() |
+ ..declData = (new mojom_types.DeclarationData() |
+ ..shortName = '_MediaPullModeProducerReleasePacketParams' |
+ ..fullIdentifier = 'mojo.media._MediaPullModeProducerReleasePacketParams') |
+ ..fields = <mojom_types.StructField>[ |
+ new mojom_types.StructField() |
+ ..declData = (new mojom_types.DeclarationData()..shortName = 'ToRelease') |
+ ..type = (new mojom_types.Type() |
+ ..typeReference = (new mojom_types.TypeReference() |
+ |
+ ..identifier = '_media_pipe_MediaPacket__' |
+ ..typeKey = '_media_pipe_MediaPacket__' |
+ )), |
+ ]; |
+} |
class _MediaConsumerSetBufferParams extends bindings.Struct { |
@@ -596,6 +700,24 @@ class _MediaConsumerSetBufferParams extends bindings.Struct { |
'Object containing handles cannot be encoded to JSON.'); |
} |
} |
+mojom_types.MojomStruct _media_transport_MediaConsumer_SetBuffer_Params__() { |
+ return new mojom_types.MojomStruct() |
+ ..declData = (new mojom_types.DeclarationData() |
+ ..shortName = '_MediaConsumerSetBufferParams' |
+ ..fullIdentifier = 'mojo.media._MediaConsumerSetBufferParams') |
+ ..fields = <mojom_types.StructField>[ |
+ new mojom_types.StructField() |
+ ..declData = (new mojom_types.DeclarationData()..shortName = 'Buffer') |
+ ..type = (new mojom_types.Type() |
+..handleType = (new mojom_types.HandleType() |
+..kind = mojom_types.HandleTypeKind.sharedBuffer |
+..nullable = false)), |
+ |
+ new mojom_types.StructField() |
+ ..declData = (new mojom_types.DeclarationData()..shortName = 'Size') |
+ ..type = (new mojom_types.Type()..simpleType = mojom_types.SimpleType.uint64), |
+ ]; |
+} |
class MediaConsumerSetBufferResponseParams extends bindings.Struct { |
@@ -654,6 +776,13 @@ class MediaConsumerSetBufferResponseParams extends bindings.Struct { |
return map; |
} |
} |
+mojom_types.MojomStruct _media_transport_MediaConsumer_SetBuffer_ResponseParams__() { |
+ return new mojom_types.MojomStruct() |
+ ..declData = (new mojom_types.DeclarationData() |
+ ..shortName = 'MediaConsumerSetBufferResponseParams' |
+ ..fullIdentifier = 'mojo.media.MediaConsumerSetBufferResponseParams') |
+ ..fields = <mojom_types.StructField>[]; |
+} |
class _MediaConsumerPushPacketParams extends bindings.Struct { |
@@ -722,6 +851,22 @@ class _MediaConsumerPushPacketParams extends bindings.Struct { |
return map; |
} |
} |
+mojom_types.MojomStruct _media_transport_MediaConsumer_PushPacket_Params__() { |
+ return new mojom_types.MojomStruct() |
+ ..declData = (new mojom_types.DeclarationData() |
+ ..shortName = '_MediaConsumerPushPacketParams' |
+ ..fullIdentifier = 'mojo.media._MediaConsumerPushPacketParams') |
+ ..fields = <mojom_types.StructField>[ |
+ new mojom_types.StructField() |
+ ..declData = (new mojom_types.DeclarationData()..shortName = 'Packet') |
+ ..type = (new mojom_types.Type() |
+ ..typeReference = (new mojom_types.TypeReference() |
+ |
+ ..identifier = '_media_pipe_MediaPacket__' |
+ ..typeKey = '_media_pipe_MediaPacket__' |
+ )), |
+ ]; |
+} |
class MediaConsumerPushPacketResponseParams extends bindings.Struct { |
@@ -780,10 +925,46 @@ class MediaConsumerPushPacketResponseParams extends bindings.Struct { |
return map; |
} |
} |
+mojom_types.MojomStruct _media_transport_MediaConsumer_PushPacket_ResponseParams__() { |
+ return new mojom_types.MojomStruct() |
+ ..declData = (new mojom_types.DeclarationData() |
+ ..shortName = 'MediaConsumerPushPacketResponseParams' |
+ ..fullIdentifier = 'mojo.media.MediaConsumerPushPacketResponseParams') |
+ ..fields = <mojom_types.StructField>[]; |
+} |
+ |
const int _MediaProducer_connectName = 0; |
const int _MediaProducer_disconnectName = 1; |
+mojom_types.MojomInterface _media_transport_MediaProducer__() { |
+ return new mojom_types.MojomInterface() |
+ ..declData = (new mojom_types.DeclarationData() |
+ ..shortName = 'MediaProducer' |
+ ..fullIdentifier = 'mojo.media.MediaProducer') |
+ ..interfaceName = 'MediaProducer' |
+ ..methods = <int, mojom_types.MojomMethod>{ |
+_MediaProducer_connectName: new mojom_types.MojomMethod() |
+ ..declData = (new mojom_types.DeclarationData()..shortName = 'Connect') |
+ ..ordinal = _MediaProducer_connectName |
+ ..responseParams = _media_transport_MediaProducer_Connect_ResponseParams__()..parameters = _media_transport_MediaProducer_Connect_Params__(),_MediaProducer_disconnectName: new mojom_types.MojomMethod() |
+ ..declData = (new mojom_types.DeclarationData()..shortName = 'Disconnect') |
+ ..ordinal = _MediaProducer_disconnectName..parameters = _media_transport_MediaProducer_Disconnect_Params__(), |
+ }; |
+} |
+ |
+class _MediaProducerServiceDescription implements service_describer.ServiceDescription { |
+dynamic getTopLevelInterface([Function responseFactory = null]) { |
+ return _media_transport_MediaProducer__(); |
+ } |
+ dynamic getTypeDefinition(String typeKey,[Function responseFactory = null]) { |
+ return getAllMojomTypeDefinitions()[typeKey]; |
+ } |
+ dynamic getAllTypeDefinitions([Function responseFactory = null]) { |
+ return getAllMojomTypeDefinitions(); |
+ } |
+} |
+ |
abstract class MediaProducer { |
static const String serviceName = null; |
dynamic connect(Object consumer,[Function responseFactory = null]); |
@@ -806,6 +987,9 @@ class _MediaProducerProxyImpl extends bindings.Proxy { |
return new _MediaProducerProxyImpl.fromEndpoint(endpoint); |
} |
+ service_describer.ServiceDescription get serviceDescription => |
+ new _MediaProducerServiceDescription(); |
+ |
void handleResponse(bindings.ServiceMessage message) { |
switch (message.header.type) { |
case _MediaProducer_connectName: |
@@ -1003,12 +1187,47 @@ class MediaProducerStub extends bindings.Stub { |
} |
int get version => 0; |
+ |
+ |
+ service_describer.ServiceDescription get serviceDescription => |
+ new _MediaProducerServiceDescription(); |
} |
const int _MediaPullModeProducer_getBufferName = 0; |
const int _MediaPullModeProducer_pullPacketName = 1; |
const int _MediaPullModeProducer_releasePacketName = 2; |
+mojom_types.MojomInterface _media_transport_MediaPullModeProducer__() { |
+ return new mojom_types.MojomInterface() |
+ ..declData = (new mojom_types.DeclarationData() |
+ ..shortName = 'MediaPullModeProducer' |
+ ..fullIdentifier = 'mojo.media.MediaPullModeProducer') |
+ ..interfaceName = 'MediaPullModeProducer' |
+ ..methods = <int, mojom_types.MojomMethod>{ |
+_MediaPullModeProducer_getBufferName: new mojom_types.MojomMethod() |
+ ..declData = (new mojom_types.DeclarationData()..shortName = 'GetBuffer') |
+ ..ordinal = _MediaPullModeProducer_getBufferName |
+ ..responseParams = _media_transport_MediaPullModeProducer_GetBuffer_ResponseParams__()..parameters = _media_transport_MediaPullModeProducer_GetBuffer_Params__(),_MediaPullModeProducer_pullPacketName: new mojom_types.MojomMethod() |
+ ..declData = (new mojom_types.DeclarationData()..shortName = 'PullPacket') |
+ ..ordinal = _MediaPullModeProducer_pullPacketName |
+ ..responseParams = _media_transport_MediaPullModeProducer_PullPacket_ResponseParams__()..parameters = _media_transport_MediaPullModeProducer_PullPacket_Params__(),_MediaPullModeProducer_releasePacketName: new mojom_types.MojomMethod() |
+ ..declData = (new mojom_types.DeclarationData()..shortName = 'ReleasePacket') |
+ ..ordinal = _MediaPullModeProducer_releasePacketName..parameters = _media_transport_MediaPullModeProducer_ReleasePacket_Params__(), |
+ }; |
+} |
+ |
+class _MediaPullModeProducerServiceDescription implements service_describer.ServiceDescription { |
+dynamic getTopLevelInterface([Function responseFactory = null]) { |
+ return _media_transport_MediaPullModeProducer__(); |
+ } |
+ dynamic getTypeDefinition(String typeKey,[Function responseFactory = null]) { |
+ return getAllMojomTypeDefinitions()[typeKey]; |
+ } |
+ dynamic getAllTypeDefinitions([Function responseFactory = null]) { |
+ return getAllMojomTypeDefinitions(); |
+ } |
+} |
+ |
abstract class MediaPullModeProducer { |
static const String serviceName = null; |
dynamic getBuffer([Function responseFactory = null]); |
@@ -1032,6 +1251,9 @@ class _MediaPullModeProducerProxyImpl extends bindings.Proxy { |
return new _MediaPullModeProducerProxyImpl.fromEndpoint(endpoint); |
} |
+ service_describer.ServiceDescription get serviceDescription => |
+ new _MediaPullModeProducerServiceDescription(); |
+ |
void handleResponse(bindings.ServiceMessage message) { |
switch (message.header.type) { |
case _MediaPullModeProducer_getBufferName: |
@@ -1286,11 +1508,44 @@ class MediaPullModeProducerStub extends bindings.Stub { |
} |
int get version => 0; |
+ |
+ |
+ service_describer.ServiceDescription get serviceDescription => |
+ new _MediaPullModeProducerServiceDescription(); |
} |
const int _MediaConsumer_setBufferName = 0; |
const int _MediaConsumer_pushPacketName = 1; |
+mojom_types.MojomInterface _media_transport_MediaConsumer__() { |
+ return new mojom_types.MojomInterface() |
+ ..declData = (new mojom_types.DeclarationData() |
+ ..shortName = 'MediaConsumer' |
+ ..fullIdentifier = 'mojo.media.MediaConsumer') |
+ ..interfaceName = 'MediaConsumer' |
+ ..methods = <int, mojom_types.MojomMethod>{ |
+_MediaConsumer_setBufferName: new mojom_types.MojomMethod() |
+ ..declData = (new mojom_types.DeclarationData()..shortName = 'SetBuffer') |
+ ..ordinal = _MediaConsumer_setBufferName |
+ ..responseParams = _media_transport_MediaConsumer_SetBuffer_ResponseParams__()..parameters = _media_transport_MediaConsumer_SetBuffer_Params__(),_MediaConsumer_pushPacketName: new mojom_types.MojomMethod() |
+ ..declData = (new mojom_types.DeclarationData()..shortName = 'PushPacket') |
+ ..ordinal = _MediaConsumer_pushPacketName |
+ ..responseParams = _media_transport_MediaConsumer_PushPacket_ResponseParams__()..parameters = _media_transport_MediaConsumer_PushPacket_Params__(), |
+ }; |
+} |
+ |
+class _MediaConsumerServiceDescription implements service_describer.ServiceDescription { |
+dynamic getTopLevelInterface([Function responseFactory = null]) { |
+ return _media_transport_MediaConsumer__(); |
+ } |
+ dynamic getTypeDefinition(String typeKey,[Function responseFactory = null]) { |
+ return getAllMojomTypeDefinitions()[typeKey]; |
+ } |
+ dynamic getAllTypeDefinitions([Function responseFactory = null]) { |
+ return getAllMojomTypeDefinitions(); |
+ } |
+} |
+ |
abstract class MediaConsumer { |
static const String serviceName = null; |
dynamic setBuffer(core.MojoSharedBuffer buffer,int size,[Function responseFactory = null]); |
@@ -1313,6 +1568,9 @@ class _MediaConsumerProxyImpl extends bindings.Proxy { |
return new _MediaConsumerProxyImpl.fromEndpoint(endpoint); |
} |
+ service_describer.ServiceDescription get serviceDescription => |
+ new _MediaConsumerServiceDescription(); |
+ |
void handleResponse(bindings.ServiceMessage message) { |
switch (message.header.type) { |
case _MediaConsumer_setBufferName: |
@@ -1553,6 +1811,83 @@ class MediaConsumerStub extends bindings.Stub { |
} |
int get version => 0; |
+ |
+ |
+ service_describer.ServiceDescription get serviceDescription => |
+ new _MediaConsumerServiceDescription(); |
} |
+ |
+ |
+ |
+ |
+ |
+Map<String, mojom_types.UserDefinedType> _initDescriptions() { |
+ var map = new HashMap<String, mojom_types.UserDefinedType>(); |
+map["_media_transport_MediaProducer_Connect_Params__"] = |
+ new mojom_types.UserDefinedType() |
+ ..structType = _media_transport_MediaProducer_Connect_Params__(); |
+map["_media_transport_MediaProducer_Connect_ResponseParams__"] = |
+ new mojom_types.UserDefinedType() |
+ ..structType = _media_transport_MediaProducer_Connect_ResponseParams__(); |
+map["_media_transport_MediaProducer_Disconnect_Params__"] = |
+ new mojom_types.UserDefinedType() |
+ ..structType = _media_transport_MediaProducer_Disconnect_Params__(); |
+map["_media_transport_MediaPullModeProducer_GetBuffer_Params__"] = |
+ new mojom_types.UserDefinedType() |
+ ..structType = _media_transport_MediaPullModeProducer_GetBuffer_Params__(); |
+map["_media_transport_MediaPullModeProducer_GetBuffer_ResponseParams__"] = |
+ new mojom_types.UserDefinedType() |
+ ..structType = _media_transport_MediaPullModeProducer_GetBuffer_ResponseParams__(); |
+map["_media_transport_MediaPullModeProducer_PullPacket_Params__"] = |
+ new mojom_types.UserDefinedType() |
+ ..structType = _media_transport_MediaPullModeProducer_PullPacket_Params__(); |
+map["_media_transport_MediaPullModeProducer_PullPacket_ResponseParams__"] = |
+ new mojom_types.UserDefinedType() |
+ ..structType = _media_transport_MediaPullModeProducer_PullPacket_ResponseParams__(); |
+map["_media_transport_MediaPullModeProducer_ReleasePacket_Params__"] = |
+ new mojom_types.UserDefinedType() |
+ ..structType = _media_transport_MediaPullModeProducer_ReleasePacket_Params__(); |
+map["_media_transport_MediaConsumer_SetBuffer_Params__"] = |
+ new mojom_types.UserDefinedType() |
+ ..structType = _media_transport_MediaConsumer_SetBuffer_Params__(); |
+map["_media_transport_MediaConsumer_SetBuffer_ResponseParams__"] = |
+ new mojom_types.UserDefinedType() |
+ ..structType = _media_transport_MediaConsumer_SetBuffer_ResponseParams__(); |
+map["_media_transport_MediaConsumer_PushPacket_Params__"] = |
+ new mojom_types.UserDefinedType() |
+ ..structType = _media_transport_MediaConsumer_PushPacket_Params__(); |
+map["_media_transport_MediaConsumer_PushPacket_ResponseParams__"] = |
+ new mojom_types.UserDefinedType() |
+ ..structType = _media_transport_MediaConsumer_PushPacket_ResponseParams__(); |
+map["_media_transport_MediaProducer__"] = |
+ new mojom_types.UserDefinedType() |
+ ..interfaceType = _media_transport_MediaProducer__(); |
+map["_media_transport_MediaPullModeProducer__"] = |
+ new mojom_types.UserDefinedType() |
+ ..interfaceType = _media_transport_MediaPullModeProducer__(); |
+map["_media_transport_MediaConsumer__"] = |
+ new mojom_types.UserDefinedType() |
+ ..interfaceType = _media_transport_MediaConsumer__(); |
+media_common_mojom.getAllMojomTypeDefinitions().forEach((String s, mojom_types.UserDefinedType udt) { |
+ map[s] = udt; |
+}); |
+media_pipe_mojom.getAllMojomTypeDefinitions().forEach((String s, mojom_types.UserDefinedType udt) { |
+ map[s] = udt; |
+}); |
+media_types_mojom.getAllMojomTypeDefinitions().forEach((String s, mojom_types.UserDefinedType udt) { |
+ map[s] = udt; |
+}); |
+ |
+ return map; |
+} |
+ |
+var _MojomDesc; |
+Map<String, mojom_types.UserDefinedType> getAllMojomTypeDefinitions() { |
+ if (_MojomDesc == null) { |
+ _MojomDesc = _initDescriptions(); |
+ } |
+ return _MojomDesc; |
+} |
+ |