namespace correction

This commit is contained in:
Wolfgang Koch
2021-05-14 11:32:50 +02:00
parent 24ad6090d2
commit f1927f184e
9 changed files with 108 additions and 122 deletions

View File

@@ -1,5 +0,0 @@
ID;modifiedAt;createdAt;createdBy;modifiedBy;Z_Customer_ID;Z_description;Z_street;Z_town;Z_country_code
1e2f2640-6866-4dcf-8f4d-3027aa831cad;2019-04-04;2019-01-31;admin@business.com;admin@business.com;8e2f2640-6866-4dcf-8f4d-3027aa831cad;Home;Hauptstrasse 11;Berlin;DE
24e718c9-ff99-47f1-8ca3-950c850777d4;2019-04-04;2019-01-30;admin@business.com;admin@business.com;74e718c9-ff99-47f1-8ca3-950c850777d4;Home;Main Street 22;London;GB
3e2f2640-6866-4dcf-8f4d-3027aa831cad;2019-04-04;2019-01-31;admin@business.com;admin@business.com;8e2f2640-6866-4dcf-8f4d-3027aa831cad;Work;Siemensstrasse 21;Berlin;DE
44e718c9-ff99-47f1-8ca3-950c850777d4;2019-04-04;2019-01-30;admin@business.com;admin@business.com;74e718c9-ff99-47f1-8ca3-950c850777d4;Work;Work Street 34;London;GB

View File

@@ -1,5 +1,5 @@
Z_ID;Z_Customer_Z_ID;Z_description;Z_street;Z_town;Z_country_code ID;modifiedAt;createdAt;createdBy;modifiedBy;Customer_ID;description;street;town;country_code
1e2f2640-6866-4dcf-8f4d-3027aa831cad;8e2f2640-6866-4dcf-8f4d-3027aa831cad;Home;Hauptstrasse 11;Berlin;DE 1e2f2640-6866-4dcf-8f4d-3027aa831cad;2019-04-04;2019-01-31;admin@business.com;admin@business.com;8e2f2640-6866-4dcf-8f4d-3027aa831cad;Home;Hauptstrasse 11;Berlin;DE
24e718c9-ff99-47f1-8ca3-950c850777d4;74e718c9-ff99-47f1-8ca3-950c850777d4;Home;Main Street 22;London;GB 24e718c9-ff99-47f1-8ca3-950c850777d4;2019-04-04;2019-01-30;admin@business.com;admin@business.com;74e718c9-ff99-47f1-8ca3-950c850777d4;Home;Main Street 22;London;GB
3e2f2640-6866-4dcf-8f4d-3027aa831cad;8e2f2640-6866-4dcf-8f4d-3027aa831cad;Work;Siemensstrasse 21;Berlin;DE 3e2f2640-6866-4dcf-8f4d-3027aa831cad;2019-04-04;2019-01-31;admin@business.com;admin@business.com;8e2f2640-6866-4dcf-8f4d-3027aa831cad;Work;Siemensstrasse 21;Berlin;DE
44e718c9-ff99-47f1-8ca3-950c850777d4;74e718c9-ff99-47f1-8ca3-950c850777d4;Work;Work Street 34;London;GB 44e718c9-ff99-47f1-8ca3-950c850777d4;2019-04-04;2019-01-30;admin@business.com;admin@business.com;74e718c9-ff99-47f1-8ca3-950c850777d4;Work;Work Street 34;London;GB
1 Z_ID ID Z_Customer_Z_ID modifiedAt Z_description createdAt Z_street createdBy Z_town modifiedBy Z_country_code Customer_ID description street town country_code
2 1e2f2640-6866-4dcf-8f4d-3027aa831cad 1e2f2640-6866-4dcf-8f4d-3027aa831cad 8e2f2640-6866-4dcf-8f4d-3027aa831cad 2019-04-04 Home 2019-01-31 Hauptstrasse 11 admin@business.com Berlin admin@business.com DE 8e2f2640-6866-4dcf-8f4d-3027aa831cad Home Hauptstrasse 11 Berlin DE
3 24e718c9-ff99-47f1-8ca3-950c850777d4 24e718c9-ff99-47f1-8ca3-950c850777d4 74e718c9-ff99-47f1-8ca3-950c850777d4 2019-04-04 Home 2019-01-30 Main Street 22 admin@business.com London admin@business.com GB 74e718c9-ff99-47f1-8ca3-950c850777d4 Home Main Street 22 London GB
4 3e2f2640-6866-4dcf-8f4d-3027aa831cad 3e2f2640-6866-4dcf-8f4d-3027aa831cad 8e2f2640-6866-4dcf-8f4d-3027aa831cad 2019-04-04 Work 2019-01-31 Siemensstrasse 21 admin@business.com Berlin admin@business.com DE 8e2f2640-6866-4dcf-8f4d-3027aa831cad Work Siemensstrasse 21 Berlin DE
5 44e718c9-ff99-47f1-8ca3-950c850777d4 44e718c9-ff99-47f1-8ca3-950c850777d4 74e718c9-ff99-47f1-8ca3-950c850777d4 2019-04-04 Work 2019-01-30 Work Street 34 admin@business.com London admin@business.com GB 74e718c9-ff99-47f1-8ca3-950c850777d4 Work Work Street 34 London GB

View File

@@ -1,3 +0,0 @@
ID;modifiedAt;createdAt;createdBy;modifiedBy;Z_email;Z_firstName;Z_lastName;Z_creditCardNo;Z_dateOfBirth;Z_status;Z_creditScore
8e2f2640-6866-4dcf-8f4d-3027aa831cad;2019-04-04;2019-01-31;admin@business.com;admin@business.com;john.doe@test.com;John;Doe;9977-6655-4433-2211;1970-01-01;gold;80.0
74e718c9-ff99-47f1-8ca3-950c850777d4;2019-04-04;2019-01-30;admin@business.com;admin@business.com;jane.doe@sap.com;Jane;Doe;2211-3344-5566-7788;1980-11-11;platinum;100.0

View File

@@ -1,3 +1,3 @@
Z_ID;Z_email;Z_firstName;Z_lastName;Z_creditCardNo;Z_dateOfBirth;Z_status;Z_creditScore ID;modifiedAt;createdAt;createdBy;modifiedBy;email;firstName;lastName;creditCardNo;dateOfBirth;status;creditScore
8e2f2640-6866-4dcf-8f4d-3027aa831cad;john.doe@test.com;John;Doe;9977-6655-4433-2211;1970-01-01;gold;80.0 8e2f2640-6866-4dcf-8f4d-3027aa831cad;2019-04-04;2019-01-31;admin@business.com;admin@business.com;john.doe@test.com;John;Doe;9977-6655-4433-2211;1970-01-01;gold;80.0
74e718c9-ff99-47f1-8ca3-950c850777d4;jane.doe@sap.com;Jane;Doe;2211-3344-5566-7788;1980-11-11;platinum;100.0 74e718c9-ff99-47f1-8ca3-950c850777d4;2019-04-04;2019-01-30;admin@business.com;admin@business.com;jane.doe@sap.com;Jane;Doe;2211-3344-5566-7788;1980-11-11;platinum;100.0
1 Z_ID ID Z_email modifiedAt Z_firstName createdAt Z_lastName createdBy Z_creditCardNo modifiedBy Z_dateOfBirth email Z_status firstName Z_creditScore lastName creditCardNo dateOfBirth status creditScore
2 8e2f2640-6866-4dcf-8f4d-3027aa831cad 8e2f2640-6866-4dcf-8f4d-3027aa831cad john.doe@test.com 2019-04-04 John 2019-01-31 Doe admin@business.com 9977-6655-4433-2211 admin@business.com 1970-01-01 john.doe@test.com gold John 80.0 Doe 9977-6655-4433-2211 1970-01-01 gold 80.0
3 74e718c9-ff99-47f1-8ca3-950c850777d4 74e718c9-ff99-47f1-8ca3-950c850777d4 jane.doe@sap.com 2019-04-04 Jane 2019-01-30 Doe admin@business.com 2211-3344-5566-7788 admin@business.com 1980-11-11 jane.doe@sap.com platinum Jane 100.0 Doe 2211-3344-5566-7788 1980-11-11 platinum 100.0

View File

@@ -1,4 +1,4 @@
Z_regionCode regionCode;name;descr
AMER AMER;Americas;North, Central and South America
EMEA EMEA;Europe, the Middle East and Africa;Europe, the Middle East and Africa
APJ APJ;Asia Pacific and Japan;Asia Pacific and Japan
1 Z_regionCode regionCode name descr
2 AMER AMER Americas North, Central and South America
3 EMEA EMEA Europe, the Middle East and Africa Europe, the Middle East and Africa
4 APJ APJ Asia Pacific and Japan Asia Pacific and Japan

View File

@@ -1,3 +0,0 @@
ID;createdAt;createdBy;buyer;OrderNo;currency_code;Z_Customer_ID;Z_priority
7e2f2640-6866-4dcf-8f4d-3027aa831cad;2019-01-31;john.doe@test.com;john.doe@test.com;1;EUR;8e2f2640-6866-4dcf-8f4d-3027aa831cad;high
64e718c9-ff99-47f1-8ca3-950c850777d4;2019-01-30;jane.doe@test.com;jane.doe@test.com;2;EUR;74e718c9-ff99-47f1-8ca3-950c850777d4;low

View File

@@ -1,3 +1,3 @@
ID;createdAt;createdBy;buyer;OrderNo;currency_code;Z_Customer_Z_ID;Z_priority ID;createdAt;createdBy;buyer;OrderNo;currency_code;Z_Customer_ID;Z_priority;Z_SalesRegion_regionCode
7e2f2640-6866-4dcf-8f4d-3027aa831cad;2019-01-31;john.doe@test.com;john.doe@test.com;1;EUR;8e2f2640-6866-4dcf-8f4d-3027aa831cad;high 7e2f2640-6866-4dcf-8f4d-3027aa831cad;2019-01-31;john.doe@test.com;john.doe@test.com;1;EUR;8e2f2640-6866-4dcf-8f4d-3027aa831cad;high;EMEA
64e718c9-ff99-47f1-8ca3-950c850777d4;2019-01-30;jane.doe@test.com;jane.doe@test.com;2;EUR;74e718c9-ff99-47f1-8ca3-950c850777d4;low 64e718c9-ff99-47f1-8ca3-950c850777d4;2019-01-30;jane.doe@test.com;jane.doe@test.com;2;EUR;74e718c9-ff99-47f1-8ca3-950c850777d4;low;APJ
1 ID createdAt createdBy buyer OrderNo currency_code Z_Customer_Z_ID Z_Customer_ID Z_priority Z_SalesRegion_regionCode
2 7e2f2640-6866-4dcf-8f4d-3027aa831cad 2019-01-31 john.doe@test.com john.doe@test.com 1 EUR 8e2f2640-6866-4dcf-8f4d-3027aa831cad 8e2f2640-6866-4dcf-8f4d-3027aa831cad high EMEA
3 64e718c9-ff99-47f1-8ca3-950c850777d4 2019-01-30 jane.doe@test.com jane.doe@test.com 2 EUR 74e718c9-ff99-47f1-8ca3-950c850777d4 74e718c9-ff99-47f1-8ca3-950c850777d4 low APJ

View File

@@ -10,58 +10,56 @@ using {
namespace Z_bookshop.extension; namespace Z_bookshop.extension;
// extend existing entity // extend existing entity
extend orders.Orders with { extend orders.Orders with {
Z_Customer : Association to one Z_Customers; Z_Customer : Association to one Z_Customers;
Z_SalesRegion : Association to one Z_SalesRegion; Z_SalesRegion : Association to one Z_SalesRegion;
Z_priority : String @assert.range enum {high; medium; low} default 'medium'; Z_priority : String @assert.range enum {high; medium; low} default 'medium';
Z_Remarks : Composition of many Z_Remarks on Z_Remarks.Z_parent = $self; // Z_Remarks : Composition of many Z_Remarks on Z_Remarks.parent = $self;
} }
// new entity - as association target // new entity - as association target
entity Z_Customers // : cuid, managed entity Z_Customers : cuid, managed
{ {
key Z_ID : UUID; // workaround email : String;
Z_email : String; firstName : String;
Z_firstName : String; lastName : String;
Z_lastName : String; creditCardNo : String;
Z_creditCardNo : String; dateOfBirth : Date;
Z_dateOfBirth : Date; status : String @assert.range enum {platinum; gold; silver; bronze} default 'bronze';
Z_status : String @assert.range enum {platinum; gold; silver; bronze} default 'bronze'; creditScore : Decimal @assert.range: [ 1.0, 100.0 ] default 50.0;
Z_creditScore : Decimal @assert.range: [ 1.0, 100.0 ] default 50.0; PostalAddresses : Composition of many Z_CustomerPostalAddresses on PostalAddresses.Customer = $self;
Z_PostalAddresses : Composition of many Z_CustomerPostalAddresses on Z_PostalAddresses.Z_Customer = $self;
} }
// new unique constraint (secondary index) // new unique constraint (secondary index)
annotate Z_Customers with @assert.unique: { Z_email: [ Z_email ] } annotate Z_Customers with @assert.unique: { email: [ email ] }
{ {
Z_email @mandatory; // mandatory check email @mandatory; // mandatory check
} }
// new entity - as composition target // new entity - as composition target
entity Z_CustomerPostalAddresses // : entity Z_CustomerPostalAddresses : cuid, managed
{ {
key Z_ID : UUID; // workaround Customer : Association to one Z_Customers;
Z_Customer : Association to one Z_Customers; description : String;
Z_description : String; street : String;
Z_street : String; town : String;
Z_town : String; country : Country;
Z_country : Country;
} }
// new entity - as code list // new entity - as code list
entity Z_SalesRegion: CodeList { entity Z_SalesRegion: CodeList {
key Z_regionCode : String(11); key regionCode : String(11);
} }
// new entity - as composition target // new entity - as composition target
entity Z_Remarks // : cuid, managed entity Z_Remarks : cuid, managed
{ {
key Z_ID : UUID; // workaround parent : Association to one orders.Orders;
Z_parent : Association to one orders.Orders; number : Integer;
// number : Integer; // try without Z_ remarksLine : String;
Z_number : Integer;
Z_remarksLine : String;
} }

View File

@@ -10,41 +10,40 @@ annotate OrdersService.Z_SalesRegion with @odata.draft.enabled;
// new entity -- titles // new entity -- titles
annotate OrdersService.Z_Customers with { annotate OrdersService.Z_Customers with {
Z_ID @( // workaround ID @(
UI.Hidden, UI.Hidden,
Common : {Text : Z_email} Common : {Text : email}
); );
Z_firstName @title : 'First Name'; firstName @title : 'First Name';
Z_lastName @title : 'Last Name'; lastName @title : 'Last Name';
Z_email @title : 'Email'; email @title : 'Email';
Z_creditCardNo @title : 'Credit Card No'; creditCardNo @title : 'Credit Card No';
Z_dateOfBirth @title : 'Date of Birth'; dateOfBirth @title : 'Date of Birth';
Z_status @title : 'Status'; status @title : 'Status';
Z_creditScore @title : 'Credit Score'; creditScore @title : 'Credit Score';
} }
// new entity -- titles // new entity -- titles
annotate OrdersService.Z_CustomerPostalAddresses with { annotate OrdersService.Z_CustomerPostalAddresses with {
Z_ID @( // workaround ID @(
UI.Hidden, UI.Hidden,
Common : {Text : Z_description} Common : {Text : description}
); );
Z_description @title : 'Description'; description @title : 'Description';
Z_street @title : 'Street'; street @title : 'Street';
Z_town @title : 'Town'; town @title : 'Town';
Z_country @title : 'Country'; country @title : 'Country';
} }
// new entity -- titles // new entity -- titles
annotate OrdersService.Z_SalesRegion with { annotate OrdersService.Z_SalesRegion with {
Z_regionCode @title: 'Region Code'; regionCode @title: 'Region Code';
} }
// new entity -- titles // new entity -- titles
annotate OrdersService.Z_Remarks with { annotate OrdersService.Z_Remarks with {
// number @title: 'Remark Number'; number @title: 'Remark Number';
Z_number @title: 'Remark Number'; remarksLine @title: 'Remark';
Z_remarksLine @title: 'Remark';
} }
@@ -55,26 +54,26 @@ annotate OrdersService.Z_Customers with @(UI : {
TypeNamePlural : 'Customers', TypeNamePlural : 'Customers',
Title : { Title : {
$Type : 'UI.DataField', $Type : 'UI.DataField',
Value : Z_email Value : email
} }
}, },
LineItem : [ LineItem : [
{Value : Z_firstName}, {Value : firstName},
{Value : Z_lastName}, {Value : lastName},
{Value : Z_email}, {Value : email},
{Value : Z_status}, {Value : status},
{Value : Z_creditScore} {Value : creditScore}
], ],
Facets : [ Facets : [
{$Type: 'UI.ReferenceFacet', Label: 'Main', Target : '@UI.FieldGroup#Main'}, {$Type: 'UI.ReferenceFacet', Label: 'Main', Target : '@UI.FieldGroup#Main'},
{$Type: 'UI.ReferenceFacet', Label: 'Customer Postal Addresses', Target: 'Z_PostalAddresses/@UI.LineItem'} {$Type: 'UI.ReferenceFacet', Label: 'Customer Postal Addresses', Target: 'PostalAddresses/@UI.LineItem'}
], ],
FieldGroup #Main : {Data : [ FieldGroup #Main : {Data : [
{Value : Z_firstName}, {Value : firstName},
{Value : Z_lastName}, {Value : lastName},
{Value : Z_email}, {Value : email},
{Value : Z_status}, {Value : status},
{Value : Z_creditScore} {Value : creditScore}
]} ]}
} ) ; } ) ;
@@ -85,23 +84,23 @@ annotate OrdersService.Z_CustomerPostalAddresses with @(UI : {
TypeNamePlural : 'CustomerPostalAddresses', TypeNamePlural : 'CustomerPostalAddresses',
Title : { Title : {
$Type : 'UI.DataField', $Type : 'UI.DataField',
Value : Z_description Value : description
} }
}, },
LineItem : [ LineItem : [
{Value : Z_description}, {Value : description},
{Value : Z_street}, {Value : street},
{Value : Z_town}, {Value : town},
{Value : Z_country_code} {Value : country_code}
], ],
Facets : [ Facets : [
{$Type: 'UI.ReferenceFacet', Label: 'Main', Target : '@UI.FieldGroup#Main'} {$Type: 'UI.ReferenceFacet', Label: 'Main', Target : '@UI.FieldGroup#Main'}
], ],
FieldGroup #Main : {Data : [ FieldGroup #Main : {Data : [
{Value : Z_description}, {Value : description},
{Value : Z_street}, {Value : street},
{Value : Z_town}, {Value : town},
{Value : Z_country_code} {Value : country_code}
]} ]}
}, ) { }, ) {
@@ -115,18 +114,22 @@ annotate OrdersService.Z_SalesRegion with @(
TypeNamePlural: 'Sales Regions', TypeNamePlural: 'Sales Regions',
Title : { Title : {
$Type : 'UI.DataField', $Type : 'UI.DataField',
Value : Z_regionCode Value : regionCode
} }
}, },
LineItem: [ LineItem: [
{Value: Z_regionCode} {Value: regionCode} //,
// {Value: name},
// {Value: descr}
], ],
Facets: [ Facets: [
{$Type: 'UI.ReferenceFacet', Label: 'Main', Target: '@UI.FieldGroup#Main'} {$Type: 'UI.ReferenceFacet', Label: 'Main', Target: '@UI.FieldGroup#Main'}
], ],
FieldGroup#Main: { FieldGroup#Main: {
Data: [ Data: [
{Value: Z_regionCode} {Value: regionCode} //,
// {Value: name},
// {Value: descr}
] ]
} }
}, },
@@ -143,23 +146,20 @@ annotate OrdersService.Z_Remarks with @(
TypeNamePlural: 'Remarks', TypeNamePlural: 'Remarks',
Title : { Title : {
$Type : 'UI.DataField', $Type : 'UI.DataField',
Value : Z_number Value : number
// Value : number
} }
}, },
LineItem: [ LineItem: [
{Value: Z_number}, {Value: number},
// {Value: number}, {Value: remarksLine}
{Value: Z_remarksLine}
], ],
Facets: [ Facets: [
{$Type: 'UI.ReferenceFacet', Label: 'Main', Target: '@UI.FieldGroup#Main'} {$Type: 'UI.ReferenceFacet', Label: 'Main', Target: '@UI.FieldGroup#Main'}
], ],
FieldGroup#Main: { FieldGroup#Main: {
Data: [ Data: [
{Value: Z_number}, {Value: number},
// {Value: number}, {Value: remarksLine}
{Value: Z_remarksLine}
] ]
} }
}, },
@@ -167,7 +167,6 @@ annotate OrdersService.Z_Remarks with @(
}; };
// extend existing entity Orders with new extension fields and new composition // extend existing entity Orders with new extension fields and new composition
@odata.draft.enabled @odata.draft.enabled
@@ -176,9 +175,9 @@ annotate OrdersService.Orders with @(
SelectionFields: [ createdAt, createdBy ], SelectionFields: [ createdAt, createdBy ],
LineItem: [ LineItem: [
{Value: OrderNo, Label:'OrderNo'}, {Value: OrderNo, Label:'OrderNo'},
{Value: Z_Customer_Z_ID, Label:'Customer'}, // workaround - extension field {Value: Z_Customer_ID, Label:'Customer'}, // extension field
{Value: Z_SalesRegion_Z_regionCode, Label:'Sales Region'}, // workaround - extension field {Value: Z_SalesRegion_regionCode, Label:'Sales Region'}, // extension field
{Value: Z_priority, Label:'Priority'}, // extension field {Value: Z_priority, Label:'Priority'}, // extension field
{Value: createdAt, Label:'Date'} {Value: createdAt, Label:'Date'}
], ],
HeaderInfo: { HeaderInfo: {
@@ -200,15 +199,15 @@ annotate OrdersService.Orders with @(
], ],
Facets: [ Facets: [
{$Type: 'UI.ReferenceFacet', Label: '{i18n>Details}', Target: '@UI.FieldGroup#Details'}, {$Type: 'UI.ReferenceFacet', Label: '{i18n>Details}', Target: '@UI.FieldGroup#Details'},
{$Type: 'UI.ReferenceFacet', Label: '{i18n>OrderItems}', Target: 'Items/@UI.LineItem'}, {$Type: 'UI.ReferenceFacet', Label: '{i18n>OrderItems}', Target: 'Items/@UI.LineItem'} //,
{$Type: 'UI.ReferenceFacet', Label: 'Remarks', Target: 'Z_Remarks/@UI.LineItem'} // new composition // {$Type: 'UI.ReferenceFacet', Label: 'Remarks', Target: 'Z_Remarks/@UI.LineItem'} // new composition
], ],
FieldGroup#Details: { FieldGroup#Details: {
Data: [ Data: [
{Value: currency_code, Label:'Currency'}, // correction {Value: currency_code, Label:'Currency'},
{Value: Z_Customer_Z_ID, Label:'Customer'}, // workaround - extension field {Value: Z_Customer_ID, Label:'Customer'}, // extension field
{Value: Z_SalesRegion_Z_regionCode, Label:'Sales Region'}, // workaround - extension field {Value: Z_SalesRegion_regionCode, Label:'Sales Region'}, // extension field
{Value: Z_priority, Label:'Priority'} // extension field {Value: Z_priority, Label:'Priority'} // extension field
] ]
}, },
FieldGroup#Created: { FieldGroup#Created: {
@@ -226,10 +225,10 @@ annotate OrdersService.Orders with @(
}, },
) )
//{ {
// createdAt @UI.HiddenFilter:false; createdAt @UI.HiddenFilter:false;
// createdBy @UI.HiddenFilter:false; createdBy @UI.HiddenFilter:false;
//} }
; ;
@@ -239,17 +238,17 @@ annotate OrdersService.Orders with @(
Z_Customer @( Z_Customer @(
Common: { Common: {
//show email, not id for Customer in the context of Orders //show email, not id for Customer in the context of Orders
Text: Z_Customer.Z_email , TextArrangement: #TextOnly, Text: Z_Customer.email , TextArrangement: #TextOnly,
ValueList: { ValueList: {
Label: 'Customers', Label: 'Customers',
CollectionPath: 'Z_Customers', CollectionPath: 'Z_Customers',
Parameters: [ Parameters: [
{ $Type: 'Common.ValueListParameterInOut', { $Type: 'Common.ValueListParameterInOut',
LocalDataProperty: Z_Customer_Z_ID, // workaround LocalDataProperty: Z_Customer_ID,
ValueListProperty: 'Z_ID' // workaround ValueListProperty: 'ID'
}, },
{ $Type: 'Common.ValueListParameterDisplayOnly', { $Type: 'Common.ValueListParameterDisplayOnly',
ValueListProperty: 'Z_email' ValueListProperty: 'email'
} }
] ]
} }