| @@ 8-56 (lines=49) @@ | ||
| 5 | use CultuurNet\UDB3\Location\LocationId;  | 
                                |
| 6 | use CultuurNet\UDB3\Offer\Events\AbstractEvent;  | 
                                |
| 7 | ||
| 8 | class LocationUpdated extends AbstractEvent  | 
                                |
| 9 | { | 
                                |
| 10 | /**  | 
                                |
| 11 | * @var LocationId  | 
                                |
| 12 | */  | 
                                |
| 13 | private $locationId;  | 
                                |
| 14 | ||
| 15 | /**  | 
                                |
| 16 | * @param string $eventId  | 
                                |
| 17 | * @param LocationId $locationId  | 
                                |
| 18 | */  | 
                                |
| 19 | public function __construct(  | 
                                |
| 20 | $eventId,  | 
                                |
| 21 | LocationId $locationId  | 
                                |
| 22 |     ) { | 
                                |
| 23 | parent::__construct($eventId);  | 
                                |
| 24 | ||
| 25 | $this->locationId = $locationId;  | 
                                |
| 26 | }  | 
                                |
| 27 | ||
| 28 | /**  | 
                                |
| 29 | * @return LocationId  | 
                                |
| 30 | */  | 
                                |
| 31 | public function getLocationId()  | 
                                |
| 32 |     { | 
                                |
| 33 | return $this->locationId;  | 
                                |
| 34 | }  | 
                                |
| 35 | ||
| 36 | /**  | 
                                |
| 37 | * @inheritdoc  | 
                                |
| 38 | */  | 
                                |
| 39 | public function serialize()  | 
                                |
| 40 |     { | 
                                |
| 41 | return parent::serialize() + [  | 
                                |
| 42 | 'location_id' => $this->locationId->toNative(),  | 
                                |
| 43 | ];  | 
                                |
| 44 | }  | 
                                |
| 45 | ||
| 46 | /**  | 
                                |
| 47 | * @inheritdoc  | 
                                |
| 48 | */  | 
                                |
| 49 | public static function deserialize(array $data)  | 
                                |
| 50 |     { | 
                                |
| 51 | return new static(  | 
                                |
| 52 | $data['item_id'],  | 
                                |
| 53 | new LocationId($data['location_id'])  | 
                                |
| 54 | );  | 
                                |
| 55 | }  | 
                                |
| 56 | }  | 
                                |
| 57 | ||
| @@ 7-50 (lines=44) @@ | ||
| 4 | ||
| 5 | use Broadway\Serializer\SerializableInterface;  | 
                                |
| 6 | ||
| 7 | abstract class AbstractEventWithIri extends AbstractEvent implements SerializableInterface  | 
                                |
| 8 | { | 
                                |
| 9 | /**  | 
                                |
| 10 | * @var string  | 
                                |
| 11 | */  | 
                                |
| 12 | private $iri;  | 
                                |
| 13 | ||
| 14 | /**  | 
                                |
| 15 | * @param string $itemId  | 
                                |
| 16 | * @param string $iri  | 
                                |
| 17 | */  | 
                                |
| 18 | public function __construct($itemId, $iri)  | 
                                |
| 19 |     { | 
                                |
| 20 | parent::__construct($itemId);  | 
                                |
| 21 | $this->iri = (string) $iri;  | 
                                |
| 22 | }  | 
                                |
| 23 | ||
| 24 | /**  | 
                                |
| 25 | * @return string  | 
                                |
| 26 | */  | 
                                |
| 27 | public function getIri()  | 
                                |
| 28 |     { | 
                                |
| 29 | return $this->iri;  | 
                                |
| 30 | }  | 
                                |
| 31 | ||
| 32 | /**  | 
                                |
| 33 | * @return array  | 
                                |
| 34 | */  | 
                                |
| 35 | public function serialize()  | 
                                |
| 36 |     { | 
                                |
| 37 | return parent::serialize() + array(  | 
                                |
| 38 | 'iri' => $this->iri,  | 
                                |
| 39 | );  | 
                                |
| 40 | }  | 
                                |
| 41 | ||
| 42 | /**  | 
                                |
| 43 | * @param array $data  | 
                                |
| 44 | * @return static  | 
                                |
| 45 | */  | 
                                |
| 46 | public static function deserialize(array $data)  | 
                                |
| 47 |     { | 
                                |
| 48 | return new static($data['item_id'], $data['iri']);  | 
                                |
| 49 | }  | 
                                |
| 50 | }  | 
                                |
| 51 | ||
| @@ 8-57 (lines=50) @@ | ||
| 5 | use CultuurNet\UDB3\Offer\Events\AbstractEvent;  | 
                                |
| 6 | use ValueObjects\StringLiteral\StringLiteral;  | 
                                |
| 7 | ||
| 8 | abstract class AbstractRejected extends AbstractEvent  | 
                                |
| 9 | { | 
                                |
| 10 | /**  | 
                                |
| 11 | * @var StringLiteral  | 
                                |
| 12 | * The reason why an offer is rejected, e.g.: Image and price info is missing.  | 
                                |
| 13 | */  | 
                                |
| 14 | private $reason;  | 
                                |
| 15 | ||
| 16 | /**  | 
                                |
| 17 |      * {@inheritdoc} | 
                                |
| 18 | *  | 
                                |
| 19 | * @param StringLiteral $reason  | 
                                |
| 20 | * The reason why an offer is rejected, e.g.: Image and price info is missing.  | 
                                |
| 21 | */  | 
                                |
| 22 | public function __construct($itemId, StringLiteral $reason)  | 
                                |
| 23 |     { | 
                                |
| 24 | parent::__construct($itemId);  | 
                                |
| 25 | $this->reason = $reason;  | 
                                |
| 26 | }  | 
                                |
| 27 | ||
| 28 | /**  | 
                                |
| 29 | * @return StringLiteral  | 
                                |
| 30 | */  | 
                                |
| 31 | public function getReason()  | 
                                |
| 32 |     { | 
                                |
| 33 | return $this->reason;  | 
                                |
| 34 | }  | 
                                |
| 35 | ||
| 36 | /**  | 
                                |
| 37 | * @return array  | 
                                |
| 38 | */  | 
                                |
| 39 | public function serialize()  | 
                                |
| 40 |     { | 
                                |
| 41 | return parent::serialize() + array(  | 
                                |
| 42 | 'reason' => $this->reason->toNative(),  | 
                                |
| 43 | );  | 
                                |
| 44 | }  | 
                                |
| 45 | ||
| 46 | /**  | 
                                |
| 47 | * @param array $data  | 
                                |
| 48 | * @return AbstractRejected  | 
                                |
| 49 | */  | 
                                |
| 50 | public static function deserialize(array $data)  | 
                                |
| 51 |     { | 
                                |
| 52 | return new static(  | 
                                |
| 53 | $data['item_id'],  | 
                                |
| 54 | new StringLiteral($data['reason'])  | 
                                |
| 55 | );  | 
                                |
| 56 | }  | 
                                |
| 57 | }  | 
                                |
| 58 | ||
| @@ 7-55 (lines=49) @@ | ||
| 4 | ||
| 5 | use CultuurNet\UDB3\Address\Address;  | 
                                |
| 6 | ||
| 7 | class AddressUpdated extends OrganizerEvent  | 
                                |
| 8 | { | 
                                |
| 9 | /**  | 
                                |
| 10 | * @var Address  | 
                                |
| 11 | */  | 
                                |
| 12 | private $address;  | 
                                |
| 13 | ||
| 14 | /**  | 
                                |
| 15 | * @param string $organizerId  | 
                                |
| 16 | * @param Address $address  | 
                                |
| 17 | */  | 
                                |
| 18 | public function __construct(  | 
                                |
| 19 | $organizerId,  | 
                                |
| 20 | Address $address  | 
                                |
| 21 |     ) { | 
                                |
| 22 | parent::__construct($organizerId);  | 
                                |
| 23 | $this->address = $address;  | 
                                |
| 24 | }  | 
                                |
| 25 | ||
| 26 | /**  | 
                                |
| 27 | * @return Address  | 
                                |
| 28 | */  | 
                                |
| 29 | public function getAddress()  | 
                                |
| 30 |     { | 
                                |
| 31 | return $this->address;  | 
                                |
| 32 | }  | 
                                |
| 33 | ||
| 34 | /**  | 
                                |
| 35 | * @return array  | 
                                |
| 36 | */  | 
                                |
| 37 | public function serialize()  | 
                                |
| 38 |     { | 
                                |
| 39 | return parent::serialize() + [  | 
                                |
| 40 | 'address' => $this->address->serialize(),  | 
                                |
| 41 | ];  | 
                                |
| 42 | }  | 
                                |
| 43 | ||
| 44 | /**  | 
                                |
| 45 | * @param array $data  | 
                                |
| 46 | * @return static  | 
                                |
| 47 | */  | 
                                |
| 48 | public static function deserialize(array $data)  | 
                                |
| 49 |     { | 
                                |
| 50 | return new static(  | 
                                |
| 51 | $data['organizer_id'],  | 
                                |
| 52 | Address::deserialize($data['address'])  | 
                                |
| 53 | );  | 
                                |
| 54 | }  | 
                                |
| 55 | }  | 
                                |
| 56 | ||
| @@ 7-56 (lines=50) @@ | ||
| 4 | ||
| 5 | use CultuurNet\UDB3\ContactPoint;  | 
                                |
| 6 | ||
| 7 | class ContactPointUpdated extends OrganizerEvent  | 
                                |
| 8 | { | 
                                |
| 9 | /**  | 
                                |
| 10 | * @var ContactPoint  | 
                                |
| 11 | */  | 
                                |
| 12 | private $contactPoint;  | 
                                |
| 13 | ||
| 14 | /**  | 
                                |
| 15 | * @param string $organizerId  | 
                                |
| 16 | * @param ContactPoint $contactPoint  | 
                                |
| 17 | */  | 
                                |
| 18 | public function __construct(  | 
                                |
| 19 | $organizerId,  | 
                                |
| 20 | ContactPoint $contactPoint  | 
                                |
| 21 |     ) { | 
                                |
| 22 | parent::__construct($organizerId);  | 
                                |
| 23 | $this->contactPoint = $contactPoint;  | 
                                |
| 24 | }  | 
                                |
| 25 | ||
| 26 | /**  | 
                                |
| 27 | * @return ContactPoint  | 
                                |
| 28 | */  | 
                                |
| 29 | public function getContactPoint()  | 
                                |
| 30 |     { | 
                                |
| 31 | return $this->contactPoint;  | 
                                |
| 32 | }  | 
                                |
| 33 | ||
| 34 | ||
| 35 | /**  | 
                                |
| 36 | * @return array  | 
                                |
| 37 | */  | 
                                |
| 38 | public function serialize()  | 
                                |
| 39 |     { | 
                                |
| 40 | return parent::serialize() + [  | 
                                |
| 41 | 'contactPoint' => $this->contactPoint->serialize(),  | 
                                |
| 42 | ];  | 
                                |
| 43 | }  | 
                                |
| 44 | ||
| 45 | /**  | 
                                |
| 46 | * @param array $data  | 
                                |
| 47 | * @return static  | 
                                |
| 48 | */  | 
                                |
| 49 | public static function deserialize(array $data)  | 
                                |
| 50 |     { | 
                                |
| 51 | return new static(  | 
                                |
| 52 | $data['organizer_id'],  | 
                                |
| 53 | ContactPoint::deserialize($data['contactPoint'])  | 
                                |
| 54 | );  | 
                                |
| 55 | }  | 
                                |
| 56 | }  | 
                                |
| 57 | ||
| @@ 7-56 (lines=50) @@ | ||
| 4 | ||
| 5 | use CultuurNet\UDB3\Title;  | 
                                |
| 6 | ||
| 7 | class TitleUpdated extends OrganizerEvent  | 
                                |
| 8 | { | 
                                |
| 9 | /**  | 
                                |
| 10 | * @var Title  | 
                                |
| 11 | */  | 
                                |
| 12 | private $title;  | 
                                |
| 13 | ||
| 14 | /**  | 
                                |
| 15 | * TitleUpdated constructor.  | 
                                |
| 16 | * @param string $organizerId  | 
                                |
| 17 | * @param Title $title  | 
                                |
| 18 | */  | 
                                |
| 19 | public function __construct(  | 
                                |
| 20 | $organizerId,  | 
                                |
| 21 | Title $title  | 
                                |
| 22 |     ) { | 
                                |
| 23 | parent::__construct($organizerId);  | 
                                |
| 24 | $this->title = $title;  | 
                                |
| 25 | }  | 
                                |
| 26 | ||
| 27 | /**  | 
                                |
| 28 | * @return Title  | 
                                |
| 29 | */  | 
                                |
| 30 | public function getTitle()  | 
                                |
| 31 |     { | 
                                |
| 32 | return $this->title;  | 
                                |
| 33 | }  | 
                                |
| 34 | ||
| 35 | /**  | 
                                |
| 36 | * @return array  | 
                                |
| 37 | */  | 
                                |
| 38 | public function serialize()  | 
                                |
| 39 |     { | 
                                |
| 40 | return parent::serialize() + [  | 
                                |
| 41 | 'title' => $this->getTitle()->toNative(),  | 
                                |
| 42 | ];  | 
                                |
| 43 | }  | 
                                |
| 44 | ||
| 45 | /**  | 
                                |
| 46 | * @param array $data  | 
                                |
| 47 | * @return static  | 
                                |
| 48 | */  | 
                                |
| 49 | public static function deserialize(array $data)  | 
                                |
| 50 |     { | 
                                |
| 51 | return new static(  | 
                                |
| 52 | $data['organizer_id'],  | 
                                |
| 53 | new Title($data['title'])  | 
                                |
| 54 | );  | 
                                |
| 55 | }  | 
                                |
| 56 | }  | 
                                |
| 57 | ||
| @@ 7-56 (lines=50) @@ | ||
| 4 | ||
| 5 | use ValueObjects\Web\Url;  | 
                                |
| 6 | ||
| 7 | class WebsiteUpdated extends OrganizerEvent  | 
                                |
| 8 | { | 
                                |
| 9 | /**  | 
                                |
| 10 | * @var Url  | 
                                |
| 11 | */  | 
                                |
| 12 | private $website;  | 
                                |
| 13 | ||
| 14 | /**  | 
                                |
| 15 | * WebsiteUpdated constructor.  | 
                                |
| 16 | * @param string $organizerId  | 
                                |
| 17 | * @param Url $website  | 
                                |
| 18 | */  | 
                                |
| 19 | public function __construct(  | 
                                |
| 20 | $organizerId,  | 
                                |
| 21 | Url $website  | 
                                |
| 22 |     ) { | 
                                |
| 23 | parent::__construct($organizerId);  | 
                                |
| 24 | $this->website = $website;  | 
                                |
| 25 | }  | 
                                |
| 26 | ||
| 27 | /**  | 
                                |
| 28 | * @return Url  | 
                                |
| 29 | */  | 
                                |
| 30 | public function getWebsite()  | 
                                |
| 31 |     { | 
                                |
| 32 | return $this->website;  | 
                                |
| 33 | }  | 
                                |
| 34 | ||
| 35 | /**  | 
                                |
| 36 | * @return array  | 
                                |
| 37 | */  | 
                                |
| 38 | public function serialize()  | 
                                |
| 39 |     { | 
                                |
| 40 | return parent::serialize() + [  | 
                                |
| 41 | 'website' => (string) $this->getWebsite(),  | 
                                |
| 42 | ];  | 
                                |
| 43 | }  | 
                                |
| 44 | ||
| 45 | /**  | 
                                |
| 46 | * @param array $data  | 
                                |
| 47 | * @return static  | 
                                |
| 48 | */  | 
                                |
| 49 | public static function deserialize(array $data)  | 
                                |
| 50 |     { | 
                                |
| 51 | return new static(  | 
                                |
| 52 | $data['organizer_id'],  | 
                                |
| 53 | Url::fromNative($data['website'])  | 
                                |
| 54 | );  | 
                                |
| 55 | }  | 
                                |
| 56 | }  | 
                                |
| 57 | ||
| @@ 8-51 (lines=44) @@ | ||
| 5 | use ValueObjects\Identity\UUID;  | 
                                |
| 6 | use ValueObjects\StringLiteral\StringLiteral;  | 
                                |
| 7 | ||
| 8 | class AbstractConstraintEvent extends AbstractEvent  | 
                                |
| 9 | { | 
                                |
| 10 | /**  | 
                                |
| 11 | * @var StringLiteral  | 
                                |
| 12 | */  | 
                                |
| 13 | private $query;  | 
                                |
| 14 | ||
| 15 | /**  | 
                                |
| 16 | * AbstractPermissionEvent constructor.  | 
                                |
| 17 | * @param UUID $uuid  | 
                                |
| 18 | * @param StringLiteral $query  | 
                                |
| 19 | */  | 
                                |
| 20 | public function __construct(UUID $uuid, StringLiteral $query)  | 
                                |
| 21 |     { | 
                                |
| 22 | parent::__construct($uuid);  | 
                                |
| 23 | $this->query = $query;  | 
                                |
| 24 | }  | 
                                |
| 25 | ||
| 26 | /**  | 
                                |
| 27 | * @return StringLiteral  | 
                                |
| 28 | */  | 
                                |
| 29 | public function getQuery()  | 
                                |
| 30 |     { | 
                                |
| 31 | return $this->query;  | 
                                |
| 32 | }  | 
                                |
| 33 | ||
| 34 | /**  | 
                                |
| 35 | * @inheritdoc  | 
                                |
| 36 | */  | 
                                |
| 37 | public static function deserialize(array $data)  | 
                                |
| 38 |     { | 
                                |
| 39 | return new static(new UUID($data['uuid']), new StringLiteral($data['query']));  | 
                                |
| 40 | }  | 
                                |
| 41 | ||
| 42 | /**  | 
                                |
| 43 | * @inheritdoc  | 
                                |
| 44 | */  | 
                                |
| 45 | public function serialize()  | 
                                |
| 46 |     { | 
                                |
| 47 | return parent::serialize() + array(  | 
                                |
| 48 | 'query' => $this->query->toNative(),  | 
                                |
| 49 | );  | 
                                |
| 50 | }  | 
                                |
| 51 | }  | 
                                |
| 52 | ||
| @@ 8-51 (lines=44) @@ | ||
| 5 | use CultuurNet\UDB3\Role\ValueObjects\Permission;  | 
                                |
| 6 | use ValueObjects\Identity\UUID;  | 
                                |
| 7 | ||
| 8 | class AbstractPermissionEvent extends AbstractEvent  | 
                                |
| 9 | { | 
                                |
| 10 | /**  | 
                                |
| 11 | * @var Permission  | 
                                |
| 12 | */  | 
                                |
| 13 | private $permission;  | 
                                |
| 14 | ||
| 15 | /**  | 
                                |
| 16 | * AbstractPermissionEvent constructor.  | 
                                |
| 17 | * @param UUID $uuid  | 
                                |
| 18 | * @param Permission $permission  | 
                                |
| 19 | */  | 
                                |
| 20 | public function __construct(UUID $uuid, Permission $permission)  | 
                                |
| 21 |     { | 
                                |
| 22 | parent::__construct($uuid);  | 
                                |
| 23 | $this->permission = $permission;  | 
                                |
| 24 | }  | 
                                |
| 25 | ||
| 26 | /**  | 
                                |
| 27 | * @return Permission  | 
                                |
| 28 | */  | 
                                |
| 29 | public function getPermission()  | 
                                |
| 30 |     { | 
                                |
| 31 | return $this->permission;  | 
                                |
| 32 | }  | 
                                |
| 33 | ||
| 34 | /**  | 
                                |
| 35 | * @inheritdoc  | 
                                |
| 36 | */  | 
                                |
| 37 | public static function deserialize(array $data)  | 
                                |
| 38 |     { | 
                                |
| 39 | return new static(new UUID($data['uuid']), Permission::fromNative($data['permission']));  | 
                                |
| 40 | }  | 
                                |
| 41 | ||
| 42 | /**  | 
                                |
| 43 | * @inheritdoc  | 
                                |
| 44 | */  | 
                                |
| 45 | public function serialize()  | 
                                |
| 46 |     { | 
                                |
| 47 | return parent::serialize() + array(  | 
                                |
| 48 | 'permission' => $this->permission->toNative(),  | 
                                |
| 49 | );  | 
                                |
| 50 | }  | 
                                |
| 51 | }  | 
                                |
| 52 | ||
| @@ 8-54 (lines=47) @@ | ||
| 5 | use ValueObjects\Identity\UUID;  | 
                                |
| 6 | use ValueObjects\StringLiteral\StringLiteral;  | 
                                |
| 7 | ||
| 8 | class RoleCreated extends AbstractEvent  | 
                                |
| 9 | { | 
                                |
| 10 | /**  | 
                                |
| 11 | * @var StringLiteral  | 
                                |
| 12 | */  | 
                                |
| 13 | private $name;  | 
                                |
| 14 | ||
| 15 | /**  | 
                                |
| 16 | * RoleCreated constructor.  | 
                                |
| 17 | * @param UUID $uuid  | 
                                |
| 18 | * @param StringLiteral $name  | 
                                |
| 19 | */  | 
                                |
| 20 | public function __construct(UUID $uuid, StringLiteral $name)  | 
                                |
| 21 |     { | 
                                |
| 22 | parent::__construct($uuid);  | 
                                |
| 23 | $this->name = $name;  | 
                                |
| 24 | }  | 
                                |
| 25 | ||
| 26 | /**  | 
                                |
| 27 | * @return StringLiteral  | 
                                |
| 28 | */  | 
                                |
| 29 | public function getName()  | 
                                |
| 30 |     { | 
                                |
| 31 | return $this->name;  | 
                                |
| 32 | }  | 
                                |
| 33 | ||
| 34 | /**  | 
                                |
| 35 | * @inheritdoc  | 
                                |
| 36 | */  | 
                                |
| 37 | public static function deserialize(array $data)  | 
                                |
| 38 |     { | 
                                |
| 39 | return new static(  | 
                                |
| 40 | new UUID($data['uuid']),  | 
                                |
| 41 | new StringLiteral($data['name'])  | 
                                |
| 42 | );  | 
                                |
| 43 | }  | 
                                |
| 44 | ||
| 45 | /**  | 
                                |
| 46 | * @inheritdoc  | 
                                |
| 47 | */  | 
                                |
| 48 | public function serialize()  | 
                                |
| 49 |     { | 
                                |
| 50 | return parent::serialize() + [  | 
                                |
| 51 | 'name' => $this->name->toNative(),  | 
                                |
| 52 | ];  | 
                                |
| 53 | }  | 
                                |
| 54 | }  | 
                                |
| 55 | ||
| @@ 8-54 (lines=47) @@ | ||
| 5 | use ValueObjects\Identity\UUID;  | 
                                |
| 6 | use ValueObjects\StringLiteral\StringLiteral;  | 
                                |
| 7 | ||
| 8 | class RoleRenamed extends AbstractEvent  | 
                                |
| 9 | { | 
                                |
| 10 | /**  | 
                                |
| 11 | * @var StringLiteral  | 
                                |
| 12 | */  | 
                                |
| 13 | private $name;  | 
                                |
| 14 | ||
| 15 | /**  | 
                                |
| 16 | * RoleCreated constructor.  | 
                                |
| 17 | * @param UUID $uuid  | 
                                |
| 18 | * @param StringLiteral $name  | 
                                |
| 19 | */  | 
                                |
| 20 | public function __construct(UUID $uuid, StringLiteral $name)  | 
                                |
| 21 |     { | 
                                |
| 22 | parent::__construct($uuid);  | 
                                |
| 23 | $this->name = $name;  | 
                                |
| 24 | }  | 
                                |
| 25 | ||
| 26 | /**  | 
                                |
| 27 | * @return StringLiteral  | 
                                |
| 28 | */  | 
                                |
| 29 | public function getName()  | 
                                |
| 30 |     { | 
                                |
| 31 | return $this->name;  | 
                                |
| 32 | }  | 
                                |
| 33 | ||
| 34 | /**  | 
                                |
| 35 | * @inheritdoc  | 
                                |
| 36 | */  | 
                                |
| 37 | public static function deserialize(array $data)  | 
                                |
| 38 |     { | 
                                |
| 39 | return new static(  | 
                                |
| 40 | new UUID($data['uuid']),  | 
                                |
| 41 | new StringLiteral($data['name'])  | 
                                |
| 42 | );  | 
                                |
| 43 | }  | 
                                |
| 44 | ||
| 45 | /**  | 
                                |
| 46 | * @inheritdoc  | 
                                |
| 47 | */  | 
                                |
| 48 | public function serialize()  | 
                                |
| 49 |     { | 
                                |
| 50 | return parent::serialize() + [  | 
                                |
| 51 | 'name' => $this->name->toNative(),  | 
                                |
| 52 | ];  | 
                                |
| 53 | }  | 
                                |
| 54 | }  | 
                                |
| 55 | ||