Related
Edit: #mathguy has already correctly pointed out that I need to use JSON_ARRAYAGG to have this correctly handle multi-row data. However, I still have an outstanding issue with the lastName object not returning speechmarks. Can anyone advise why this might be, from the SQL below? Many thanks.
I have a requirement to generate JSON to insert data for lots of customers via an API. This contains JSON arrays (one overarching array for all customers and an array for potential multiple addresses) and objects. The code I'm currently using produces this:
[
{
"address": [
{
"addressLine1": "ALLIANCE & LEICESTER PLC",
"addressLine2": "CUSTOMER SERVICES",
"addressLine3": "CARLTON PARK",
"region": "LEICESTERSHIRE",
"city": "LEICESTER",
"zip": "LE190AL",
"type": "residential"
},
{
"addressLine1": null,
"addressLine2": null,
"addressLine3": null,
"region": null,
"city": null,
"zip": null,
"type": null
}
],
"firstName": "SIOBHAN",
"lastName":TOWNSEND
}
]
[
{
"address": [
{
"addressLine1": "VIA DE LOS POBLADOS 2",
"addressLine2": null,
"addressLine3": null,
"region": null,
"city": "MADRID",
"zip": "28033",
"type": "residential"
},
{
"addressLine1": null,
"addressLine2": null,
"addressLine3": null,
"region": null,
"city": null,
"zip": null,
"type": null
}
],
"firstName": "HAYDEN",
"lastName":THOMSON
}
]
[
{
"address": [
{
"addressLine1": "VIA DE LOS POBLADOS 1",
"addressLine2": null,
"addressLine3": null,
"region": null,
"city": "MADRID",
"zip": "28034",
"type": "residential"
},
{
"addressLine1": null,
"addressLine2": null,
"addressLine3": null,
"region": null,
"city": null,
"zip": null,
"type": null
}
],
"firstName": "MADISON",
"lastName":FROST
}
]
...however I need it to look like this:
[
{
"address": [
{
"addressLine1": "ALLIANCE & LEICESTER PLC",
"addressLine2": "CUSTOMER SERVICES",
"addressLine3": "CARLTON PARK",
"region": "LEICESTERSHIRE",
"city": "LEICESTER",
"zip": "LE190AL",
"type": "residential"
},
{
"addressLine1": null,
"addressLine2": null,
"addressLine3": null,
"region": null,
"city": null,
"zip": null,
"type": null
}
],
"firstName": "SIOBHAN",
"lastName": "TOWNSEND"
},
{
"address": [
{
"addressLine1": "VIA DE LOS POBLADOS 2",
"addressLine2": null,
"addressLine3": null,
"region": null,
"city": "MADRID",
"zip": "28033",
"type": "residential"
},
{
"addressLine1": null,
"addressLine2": null,
"addressLine3": null,
"region": null,
"city": null,
"zip": null,
"type": null
}
],
"firstName": "HAYDEN",
"lastName": "THOMSON"
},
{
"address": [
{
"addressLine1": "VIA DE LOS POBLADOS 1",
"addressLine2": null,
"addressLine3": null,
"region": null,
"city": "MADRID",
"zip": "28034",
"type": "residential"
},
{
"addressLine1": null,
"addressLine2": null,
"addressLine3": null,
"region": null,
"city": null,
"zip": null,
"type": null
}
],
"firstName": "MADISON",
"lastName": "FROST"
}
]
The key differences here being:
The overarching array should start at the beginning of the 1st record and finish at the end of the last record, rather than ending after every "row"
For some reason, the last object in the list (lastName) doesn't have its value correctly listed in speechmarks
A comma separator should appear between each customer/row
This is the SQL I have been running:
SELECT
json_array(
json_object('address' VALUE
json_array(json_object('addressLine1' VALUE address.line_1,
'addressLine2' VALUE address.line_2,
'addressLine3' VALUE address.line_3,
'region' VALUE address.county,
'city' VALUE address.town,
'zip' VALUE address.postcode,
'type' VALUE 'residential'),
json_object('addressLine1' VALUE correspondence_address.line_1,
'addressLine2' VALUE correspondence_address.line_2,
'addressLine3' VALUE correspondence_address.line_3,
'region' VALUE correspondence_address.county,
'city' VALUE correspondence_address.town,
'zip' VALUE correspondence_address.postcode,
'type' VALUE case when person.correspondence_address_id is null then null else 'correspondence' end)
),
'firstName' VALUE person.first_name,
'lastName' VALUE person.surname
FORMAT JSON)
)as customer_json
FROM
person,
address,
address correspondence_address
WHERE
person.address_id=address.id
and person.correspondence_address_id=correspondence_address.id(+)
This is being run against an Oracle 19c database. Can anyone help me to troubleshoot if it's possible to set a JSON_ARRAY to wrap around the full dataset, rather than it ending and restarting after each customer record?
Credit to #mathguy for correctly pointing out that I needed to use JSON_ARRAYAGG in order to get the SQL to correctly handle multiple rows.
I have realised that I needed to remove the "FORMAT JSON" from the end as this trailed from the lastName variable and impacted the way it was returned. Removing this fixed my issue. Here is the working code:
SELECT
json_arrayagg(json_object('address' VALUE
json_array(json_object('addressLine1' VALUE address.line_1,
'addressLine2' VALUE address.line_2,
'addressLine3' VALUE address.line_3,
'region' VALUE address.county,
'city' VALUE address.town,
'zip' VALUE address.postcode,
'type' VALUE 'residential'),
json_object('addressLine1' VALUE correspondence_address.line_1,
'addressLine2' VALUE correspondence_address.line_2,
'addressLine3' VALUE correspondence_address.line_3,
'region' VALUE correspondence_address.county,
'city' VALUE correspondence_address.town,
'zip' VALUE correspondence_address.postcode,
'type' VALUE case when person.correspondence_address_id is null then null else 'correspondence' end)
),
'firstName' VALUE person.first_name,
'lastName' VALUE person.surname
))as customer_json
FROM
person,
address,
address correspondence_address
WHERE
person.address_id=address.id
and person.correspondence_address_id=correspondence_address.id(+)
I have nested data and want to update a value of a key of an array which is actually in array format user_properties['first_open_time']['int_value']. I want to change this value to a static value -1582243200000 ie.-. Sample structure of the data is as below:
[
{
"user_properties": [
{
"key": "ga_session_id",
"value": {
"string_value": null,
"int_value": "1582306435",
"float_value": null,
"double_value": null,
"set_timestamp_micros": "1582306435527000"
}
},
{
"key": "ga_session_number",
"value": {
"string_value": null,
"int_value": "1",
"float_value": null,
"double_value": null,
"set_timestamp_micros": "1582306435527000"
}
},
{
"key": "first_open_time",
"value": {
"string_value": null,
"int_value": "1582308000000",
"float_value": null,
"double_value": null,
"set_timestamp_micros": "1582306432489000"
}
}
]
}
]
You basically need to reconstruct the struct, changing what you want to change in the process:
-- CREATE TABLE `temp.firebase_sample`
-- AS (
-- SELECT * FROM `bingo-blast-174dd.analytics_151321511.events_20200225`
-- );
UPDATE `temp.firebase_sample` a
SET user_properties = (
SELECT
ARRAY_AGG(STRUCT(key,
STRUCT(value.string_value,
IF(key='first_open_time', 1582243200000, value.int_value),
value.float_value,
value.double_value,
value.set_timestamp_micros)))
FROM UNNEST(a.user_properties) x)
WHERE TRUE
We have standart analytics table in GoogleBigQuery:
We need to insert new data, with:
event_date,
event_timestamp,
event_name,
event_params.key.value,
event_params.value.string_value,
device.advertising_id
And I can't understand, how i can do it, with "event_params.key.value, event_params.value.string_value, device.advertising_id".
Can you help me make a request?
Somethink like this
INSERT
INTO `table`.`analytics_183424923.events_intraday_20191120`
(
`event_date`,
`event_timestamp`,
`event_name`,
`device.advertising_id`
)
VALUES
(
'20191120',
1574212435206765,
'custom_event',
'deviceId'
);
Here our table in JSON.
[
{
"event_date": "20191120",
"event_timestamp": "1574236440549659",
"event_name": "SHOW_INTERSTITIAL",
"event_params": [
{
"key": "has",
"value": {
"string_value": "0",
"int_value": null,
"float_value": null,
"double_value": null
}
},
{
"key": "firebase_event_origin",
"value": {
"string_value": "app",
"int_value": null,
"float_value": null,
"double_value": null
}
}
],
"event_previous_timestamp": "1574236295986010",
"event_value_in_usd": null,
"event_bundle_sequence_id": "19",
"event_server_timestamp_offset": "6519649",
"user_id": null,
"user_pseudo_id": "1d28ad03ef14b6991cbbcf5c69c5db3f",
"user_properties": [
{
"key": "first_open_time",
"value": {
"string_value": null,
"int_value": "1538305200000",
"float_value": null,
"double_value": null,
"set_timestamp_micros": "1538302277504649"
}
}
],
"device": {
"category": "mobile",
"advertising_id": "8ae303e4-b94b-4599-929c-c8ae3c418ed7",
}
]
INSERT
INTO `table`.`analytics_183424923.events_intraday_20191120`
(
`event_date`,
`event_timestamp`,
`event_name`,
`device`
)
VALUES
(
'20191120',
1574212435206765,
'custom_event',
struct<category string, advertising_id string>('mobile', 'deviceId')
);
A simpler form would work in your case, but sometimes your have to specify the full field list of a struct as above.
Simpler one:
...
VALUES
(
'20191120',
1574212435206765,
'custom_event',
('mobile', 'deviceId')
);
Using the answer to this SO question What is the correct format for the API SurveyQuestionImage.Data field?, I have successfully created questions using the API for questions containing a single image.
I am now trying to create a question with multiple image answers, specifically a side-by-side images question. I am using the NuGet package Google.Apis.ConsumerSurveys.v2 version 1.15.0.564 on the .Net platform.The result is this error return:
Google.Apis.Requests.RequestError Server encountered an error processing the request.
Request Id: 57ae035f00ff0af4b07e61a17d0001737e3430322d747269616c320001707573682d30382d31312d7230360001012f [500]
Errors [ Message[Server encountered an error processing the request.
Request Id: 57ae035f00ff0af4b07e61a17d0001737e3430322d747269616c320001707573682d30382d31312d7230360001012f]
Location[ - ] Reason[INTERNAL_ERROR] Domain[global] ]
Here is the body of the POST to the Surveys resource:
{
"audience": {
"ages": null,
"country": "US",
"countrySubdivision": null,
"gender": null,
"languages": [
"en-US"
],
"mobileAppPanelId": null,
"populationSource": "general",
"ETag": null
},
"cost": null,
"customerData": null,
"description": "",
"owners": null,
"questions": [
{
"answerOrder": "randomize",
"answers": null,
"hasOther": null,
"highValueLabel": null,
"images": [
{
"altText": "White",
"data": "iVBORw0KGgoAAAANSUhEUgAAAH0AAAB9CAYAAACPgGwlAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAACDcSURBVHhe7Z0J2JdFtcDFuFwCQSFEUhAB2QQFZAcRBVFSVBQhl6sgKgoIfCyCgIr7dVfcEnPPFZfKJc0l9620LM2ysnK3Mr1dTdNueX-_cd7_8_9e_t_HIt8-53nOM-8678ycmTPnnDlz3g0SJEiQIEGCBAkSJEiQIEGCBAlqABotW7ZsQ7BxhhMnTvyK1-L9BPUNZs2a9Z9z5szZZMGCBe0ynDdvXhuI3ozbjb54KkG9gmOOOaYFRO6wcOHCbTPkWtdjjz32a2m011NYvHjxpvPnz-8PofcqwpFLly7tJJuPjyWoTwDBO0lo2PqxIseLuHYoI73_tGnT_iM-lqA-AQTuDUufDsGvEzm_FsKfDNF3cb6PjyWoB9DIUcyc3RRCD5fIpI9HfIzzq8FvKuCtWLHC59LcXtdBIp577rlfPeOMMzaGuLtD6G-Db0Z8g2sPgDNmzpy5OSO_eWLz9QAkotK5whpEnQyBvwexP4v4Kec_J102e_bs7RD0NovqW4K6DHPnzv0qhO3uvA3Rj4PAD4P_J3Ld9Dekl5JOWLRoUT_m9k3jqwnqKkDElghvwyDqkeAK8KcQ-d8Zcv4mneEO0mNJ9wA7xlcT1FFoJGuHoHuDZ4E_AF-F2J9nyPl74JPgVeARZWVlvT7__HOtc8lCV9dAwinELVmy5OsQ93DwDvBF8M8SO0MI_RGj-3ccP0F6IjhYQ00kfIK6BCtXrvyKujdE7cJcrTHmeQjrqP4kR3QFuv8B3543b94KpoIxqndRik-Er0sA4VoikW_JyN0J4p4LURXYPgI_ywgucl2B7mMJT7qS9BCmhK3jQkzjmF2CugCydQg-EDwYQmqBe1sCg__KEV2BTsI74h8ENc9qj-_iiI_ZJagLwGjtBvHGM2KXQfh7IeYHEnk1-Bx4Mc9Ogc0P4rhFzC5BXQBHOUSbQ_odiPgTjj8ESxG6gDz3W9I7SU-D6Hsw0lvH7BLUBYBwGmOcy5-BkH8E_5ERtxL8E_gCuBLhb4oWuphdgtoK0fWpGay9FQTfH4JfD74KKrX_s4i4JZFn_hd8A3Qh5hiI3oP8NgKbxE8kqG2gigaB2kD0zhBuJni_hIR-_yAtJ8BVgEr2Sviv8PxZCHPDFAhnzJixUfxEgtoGEkd1C4INB0-CeApmBaJyrSCpZ8i1f4L5DvFnrl0Fi5_AaO-d7PG1GNStIdQOEO1wiHYl6a-KCClKaAW6v2bIcxpmPgHtENlz73N-l0YdBbq5c-duHT-RoLaBTo8QbKICHOl94OuRiAElLqlm2D9kyLW3Sf9GWjza7RjPQPAryWsG2D9-IkFtAebx4MsO0XtAqKMhkmvmL4DvFRFSor9P-hL4EMc_ivgTUOFNtl_oHKAWPJ87nXS0Ztlkk689kLlDNYPYAyHSKRBJxwgtcH_PCCly_gad4occa4C5hONLOF4J_gIsmGe55zz_F45_R6ov3X5g8ygoJneqWgASXTXtaxBpNMS5HEJ9AH4KFrNs186d46-SG3A8i3Q26Vmkj3C9oMdzzWcV8j4mP92ppuk-TdpCjhK_m6CmQJYLMTYHt0fwmkp6K_ghBNPOnglnHjt6fwyexjSwm8jxWHAm93WiKLwT0WMJ_zSdYhmoI4b2-KS-1TQ48hiN20CQfSCMatpDoHp5IHhMZd0KcQ_RMWbyfKeysjJ1-S5cG0d6BdeU2D8lDdzB98B_gS-BetwcAg6Vo8RPJ6gpWLlyZRNGrWraXIh-HelPIU7B-saxI9ZlU71fb-aZSRy3yBAiD-b6GaAGmVXW28E_cu0u0lPB8bzfPn46QQ1AIyVp3Zsh-l4Q70KI8xionb1YEneu_j34FKgtflcFsgwhYi-uz-W6Kt4vSZXwi4n-F67pgHEbeBTYNblT1RwEojvHQvQp4N0Q_g1QnbtgaOHYufp58CZwHkQeFN8PwPMdee4g8FLwYc7fyt6NqAbwDqir1Ym8v22U4BPRqxt0bY4Se3eIuRBiPUHqvFzOuhav3QeewjP70Tl6xCwCcK0tz40G50BQF2heyd6N7-sbb0dyY4Sq3q5gu6lTp7ZIOns1w_Tp01tBBAm-C3gOqNFFAa7A2iO6XOqa-iEQeKA7WWIWARi1ukj34v5YnjuTVBfpYqIrzKn-aa5VJpiMMNgHQfDraadr5RA8U-PSZ-NoTGkSjR1NHbWkGleak25EY6sPt6RxNybdhBHdimdaO7IZqW3UmTNCgW5IvJF3yplcQQU4R-kfePY80pG824FvtoxlCuD3ea4d97uDc8GHQTuPwmAxx1ADeIi8VN_2BfWs2dyyWCbLFsvYyn1xlt1v8UwLF4Ksm_aEWNemYJO4d66xTpykG9YXzhHm3cwz1YrbGDaQDU3Dted8K8635rgnuC3n_TgfyPEwjncER3G8G-_uwTv6r0_g2LVyVS8l6qtJn-K8nMkVdInUufhpcIl5S4zJkyeX83uz0bmvFN-Wb_0Xx7eQl5K-I7t4Dd5O9EtSdfrzwIXgIZx_k7z3JXWvu3vldiXdGRzB9SGkA7jWl2MFRjlTF76lHOHeubZ2FI5bKJBmGyjruqAYRriVicueRnzYnLQzjdAzNsYQGnsnjseS7k1DqFIdzPUjwKO5Np90Kfc1r54NKqWvINVz9RFQiVuTa17VUup-mXe_x_E0GneLbETFsmXQSA4k96Fcsnjnbe32El5OkeUnm3-P8mma1chzD9fc6nwZxxeQOjWcxKhfQjqP8xmUXWPRQbyzH-k47o2BM9gZBvHMdnyvmx2Aa-6h20QuELlhzQuKFoJCt6Cg7ShkJwrfgwr1AftxfYCVAIdwfRiozjwS3Jnnd-E8jFLO1XEn8Y6jycY4inPNoAs4tqE0rJxOeg7pheBloCbT60Ht4xLvXtBFED1bfkaqKiZxldDznjHee4B3L-DePszlqzWq8NxQUB_574La4-UWWX6yel2lNfHaIX4FPgtalgdI7wF97xbqqwzh0q575OwQdla50gnU3-VatYijOZ_G_SnggZzbMQyY4JQlt9CkvBO4I-f6BwzleDDXB4Dbcx64Bx1Fd-0Ocgy5aazKlwdHAYXdio_IcmWxeouWkS6kAG4KPAk8nUKdTbqcQnyLVCvXtRzfROqovJ1nXf3S0PED0IUPG8s59FFQ6ftp8Mcc6_zwM9CGdyT_GnTVyy1JGkuUpN8l1egiITSX5h0hHK1XgjPtiPm5vBQw4rTsHQi6BepB8ijnQcs1TbnO93YyDTkuyypLuESrW5ZltDMoVP4c1FD0HPgsx05B7onXzq_VUK8etQo5xp2053dJb-Pc6eV6jq8mlaNdzD1lEjmJ3O4EUjum3GQabTuJ-2PcjuX0Favy5cEexEe24wP78QFH5vngLRxLQEeee8Ge4_5LoOzPTYGywg_Bz0BZY0EoqmIMtnPSRynfMo7HQvQeClGxOhWCI4ZOvQPvHMH7N4FK_tVVbjvVv2NbZZsv7NivUY9fc2wnlrPYaeR4DiIXl5aRum1rhNNErMqXB9h7YxpjS1jIED4ie_5vCvJ9UkeoPVpCv0aB3yLV1UgW-BEYVCgwI0TJyq4v5BuOdi1wH1E-R44joXdUr1br3CiLhPDOs98gr4tAR696_2qdKtcH8p1ssUdN4WNQ-4AePhJf7uaUJSd5BryPcipPzCIdxSjvCY02jlX58uCcboY0yhZ8VEPGCaDsWXdhWZwE_juoMCWhC75nYHWOFL-pR6veMVeB4xCWWjnKo3BUKcjReHZjOwrvykZf4Fgpfk3cp9cb8j07r4PF-ihM2q52Atv5fcr0CvgYeCmdVEFROcttWOt1R44SbhMyVZe2QabyceebH5JqwXLukyXl59VKkeezlazMWdHGNR9Nn7os2dNtdK1qqmQSU5b7DudylTc5dk51nndelQ06h8raj6eTDqpAYi8JPqf0LGcgn6nUdSUoS3WlTfcq7fqvc6wgZ2dXJbQ8CpPO8ZZTtvw30Hm_MBBA6ychbaO1Hgi8p4HIDv0WZXoKvAFCu6d-FPdbqIpa11iV9QM2hqoXH23H6FGPVjc9EVT4cL7RZm3FShY6jzwvwYMBBbRxbCy9VWzM10C3D8vKfgG64OGmBQWhH5HKZe7mWBauZH8Dx9eQaj8_k7ItVeCknJ0jwddU_fG5wNVApeZZNKwaxUU0ruqZ37nV74JK6wpjlucJUJar4GZ5LbdCpx3SjmG9rJ-dOSP-WhGe510IciXQ9YELKdfhdGo1pC5yKOpp2NM16txrDXHkaFHaiA-qWpxIeiepUnZeV64QeVaiZwRXBpDYzlkvg5pCn4R4D1LBe8DbOFaivQK8iGOlayXZoBNzfwbHqoETuTfGTmmMGcq4Wom9FMjVnMrIuy95axzal_QwvwPO5_pSklNJVS_V66-0fBDidq7bGZTOXdVTA9FWYL0kvvW0jUppG5Ui-erHp10iW9vv4rSlZkWRq1an11rkqLdnUZBtKNB4CuBOT0eC6pYsUPZWsvAR7eWycVmmI9hRew35nc8IO5PzoNPSWItJuTx_NulRpIeRHgxmVjANHruR7ky6A_f7c12BZksIryFoneY466f6E2WY7uTXz_zjd7Q77On3Sffn2sGxXJbPcpLMX0x91BzcE3cW184n_Tap1rxHQTu2AprtUOGI5zmnBaeyl0EF5zPJ-1DyGqbdwXJWm-nWD9GgGyokUQiFCNUc3Y4uo0Cyu7wdvBgzCdX573HeVwJ1lWwS6XDeHwJq1x5gY4N9aHzjuPZCJenBN7txvrXfBTvybQ0Tjsp23N_UMsmFJPi6znGxfk3Iv7nE5xttnOf9jt_zu5x3thyWh7JpQtZQohm5D2Xf3vJbD8qlwcf4dbuDR3GsPUNDkxpPpYIu95wSlFFuBo_neC--34Pjds7hNWqutWEo0AgaQCvbtzhWb3cOUtrMqztBeCNV-NE4oYuxEmh_GkwNIZgiY9Z1Huw8dkLq14m6ajOYQ32v5djRngl2-fZRTVSA1Sh1C9eW8N5etG_nmG3Ng4SyQBTQkXoohdQyJ8vWouY8lu_RHmvi1DtVq9wlNIrzpZKoq13uC6-ZHrz-IHBD2qM99VLwlZNpudRxU9v9u6TF7D0MBtBBon1AI8wVpJpsnVJ608a1xz_PyoFNKaSrVcZf3ZfCLiVVula9CTo7xxnRRdU0dU87hdL5NaQL6NFjZs-erWWpzhN95MiRbsBwfcIFJIVPXbJcHFIdzWs6Ej9oM6RqA8oBh3I-3GmL9tXWUDvdr6mk-8n6UFht9PZsTbW6GimQBKkVLB71opLtk-B3wPkSnrSreTkv1-jctXYQRjdlb2G8G6Y9pf_J1FcnD6V67QjliB3bw9GtrcOgCLpcX0wbTiUdhhbSsdYSOwN7pCOVwiv1KuXOo1LGY32aBtBgYU_Oe7c492tocWeKCw6uuB1A2pf8gkBWbVLqukMguASingqYu1F3VxFdfFK4VXDTgFPgeBzL0l2bcA5XB7-dd06CjSvjDF6yZMkWyjnmG79Ru8HKU3H_oqAk7i7S66mIVjTVOU21xfNZhp_xvCtVLomqA493HiOv6tFH1x0CwaORRL8BAxzpkq3hSOlb9ay4nqIEl53b4RVqDV-6DFY-kve7kc862RhqFGwECt-KnroVDaCThAsDjnhX5bRWWVlHfTHh5QCaNdVLZYdncHwQ6XA7kGoK-crqag3x1TS0VEa9XtVS3wENOFoIXSLWblG8Lu8IV8bRTiGxFerkbsENS4K7WqZwHD9Rp6Cg61KZ9qA66z6ca2DQP93VOAlfLODZATRIyA1-zz0tUNfx7tE0wiDXxCPhaw27kwNRnmZ2Sso6gbK6N05DiqZpbRFaHMuprZx_QhuEhRPOdfeaxuDYiTyMiKV_YNM6r7bK9pRAqWwXKubIVUXTMPMbjjVAhCXYrFFEzm0sJX_Vvst5VlVwACNqKxplo9jYNUL8aLzR1t3EUUnZtqFeqlX6xbsI5RSV3yZt51aIc4S_zrPP8c7tHM-jQ-tL5368-hPCzAaiknq66gQ4gOP9QZcuXbxwccJRr_pW3EhK-o54JXvjtupJ4qrSnmAn2amdKX6iWkHBkjKE-sCOh1K-wyHgeVy7C6IrobvAUm6bNCjBVU-1obumcAHoev8osKNcrKbqU2UQR0dQZ_Q9p-L6fB0HGhjgVVJHfHEjKegEgwXHhgnRYPEgjboYHGQeZ599dvOYfbWCI1yCSyzKJue6imO9hhRUlcQtc15ItVMHDYXyy-nc896RUd7a_OqQWrr2YAWjH7g2-_E0giPenSUuvKjLu4aeN93KEiW8o0ifu0Uc7wPqURqcJKpjDnQk8v0WCqekujm7srec8iijvEtqJKviaUrCK7foB6D79J08o6vZ1LKyMtcWgtnZwRA_UT_BCsb52I0AXen1WQD-Kzg2sqPSbp7VK-0q4El4HRpkj8aVmcix68mbVjVrjJyqZdSdXWDSV9BNja6j61ihDOKUVBjhHoOaW1-kvC6y6EQ6lnpuqy3DAQA2rgM2iPUDVlRVx55Ogxg2pIxGuQF0sUaHDAm_ivXK6zzvYsT9pEJ_sKOjPWZdJRCJ7u4a49rsx_ddKpXYerPkTaqO9qCFUDYNTt8HT-N8nEuiErs-LSqtMdiICkQSnpGTheiWXTqCDeCrri5bzI8cR5PsXpbqJojhdByXWqt0fre8BhKkrP0guj8AsoOqZzuH5zUP2byOE3IB5_v5HI_jvV6W09EN1m-WXgmEbU_q3pkhh8bR-0XHA3-9oR6bb9BMuNNhQ--VXZDke3JcpeqORLJzMtJdG59BGV1M0qxcSmgLGgf3dAxx9XAg8ksbCR5HeMNg56uBQHxZPY2pzqqzgY6XEjYv1AXk_rM8ezzpUB0abNCYV5WAROe7IbYNKEdyiTSvlmWoYUkdXLeqPZA32ls_sknEzkHwuHXOtKEiQQ26nye6o8rR7naiOXAIWXvbatBx_QlQxo10ETPUiUuk-VEuKqlfSrn2pyMPcpT7_hfZJCgHsj4aK4sU5SKNLDQvJLkUKUt9gGemMAI3AZutq2vUWoCCXFONQnx3R77vXjuNR5aluHxyIf0DTobYISJVCihcCdCojR25NNQujHT3yel0UCC6xAaD9yznd_DIJLf48p6qT1ULRiFIYZG2cQ7f1xewlEPEi9y_QDsEaV8DKMQ8EuQhSvI6FurtasQnJfQCe_cY_CuN_hqpq1jjHOGR4FXOPv2O3Ijvu-FDn383KroqWM6uACqAuuP2CJ7dEWwbs0iQB-dliKl5dgapy7DGbS0Qnev6yRtMyG3Ky7k2Or66xqBAlUcur1WH4btd-b6gXOEycTmXb66728YNhscx2seRlgt5kqAIGElNIagLEFqulH4ViAoqG-dKyy7QuLPEAAA7xFfXCCSwnEE2nWERp1hjoHx6th5JWdzd464W7QkFooOuDrrV2X32B_B8-pVnRaBVzZFBI51Po-lJoupTEJQ41uihJ8qNsE4teAPiq2sEEtcpxM5VhE3WVgikjK6dH0g5DTpgOV1IKSa6q4aalHWOOFI5Jb6aIA80YnPQ8CP6hbsj1gWYYqJrftU1eDlEn4x61zu-WiFEjUBHxc0gVg_eGcG5Cz0ByWcMefZFQNtiTZdred6IHHvyvr_pNNBC_v-tljPsOwMX8I2e8dUEOWhkbDbaaAoNdzeoXdvl1mI9WF8z7x0HGtina3y3QnAk0-jtIXg_CGRQBfV_f86nnm3nUgo_DAzqFdxmtXu8yUvrmmZj99Dpul3uDxKcayZ2T7n7-_QI3i6-miAD51p9xBltOlnYkI-DLrG6aFFMdOdOd3y4b2xH2WzMIoOwZi-7VrXiuKUjmHwUDuUgJ4N2GnfFim5xNuSJ69uHkd9oRnt33tuEc0OAFUd7KoAcgfvumzNOzHLelysViM49tQyjcLxDnjpXDJTjmFfMIoGWONhqSxrH_WmulRvWM4sAUUx02b1xZCaA28Gqy_1Qx4ZVLpAoEMToVQY6MpCP-8AuB13IcWlW3zW3XblUq6StFO42ZNVE9-TJRQzmIxsPxI-fCADxDE3aLRpp7EiaiwtE5z29XHUB-4DnVpDHKJ7VldkNlckyJ0goNwjSSH3BU0BX2EptilBgUlWrKBBgE02l3uMZNwwuocElpvq-O2SdHnRqcCRmGPaNcf1PpHY2rYBGgzqIMvUirzaWL34iwPLly1Ut23HPzYQG_JEzFZczWxTSAdJIU3vLcSLh02gXHJkQS09QQ5ucT0MZkKC4EVXbtHq5YeA0UMGrdWThxsMJoVF4rzfpzqTuG3OrsOG9JKTxWpwqivMshfq2aXDREngu78ry3QqtWbiw_dnOZZljRzUokSqkNgTLWdxRXQZW9Zxi2Ujbra2mUG9ByZpG8d-oB4Bu2nNUFojBeRZ6Q8_YJRB2axq-mSNOwkOY0GEkEuifG4z4rO-dfmvBBYv75ZZoK0DtAMoNdq4nefcOUAfG2eAeEL6PhJfd-11t6jxrmfWKUQbJ_ONCfhw7PblELDdwE0Pn_FTRYAEidQDHMA-7DUjd1pFZihiG_JyjM4ONp91dInBtJO_6XxbnT-OxuM4d9s1xrzgf0ZGYx3LP8F7BWYO8nGpuJjVAgsH9ukhw5RBZNed7c90pRGm9nI8c504fj_DuqZTPIAa95RKx2g0bHLk0iN6hOkUYWFAnhGJC6EOuPdv4aW5w7Mdzbg78Bo15GMfKAYYneZRres0WQplxrTgfCZkF_stQndqQIIVnOZfovu_zhkVxF4qhRfxJgHFoxnM8GOwIGqfW6JAusrgjtRBalGPzMHCgRpwjqKcbNuqXm_O6Ag3nZgGXUo2nYjChfHBfBTh_jncjzyrdG8PVTX5GUbwLVO1yx6fCmKtepQguEVwYkd3_NkPOXSkLe-iz50TOM2FMndvO4SKPARLvBSXidMpsSBIdKi4GNcSYX2HxhXOFUQMPySkWgTspE8RqN2xw5NIg7v8yapPbgfI-8IHo4K08pguxz57DsQENdKJ0qTW_vJkRzevO6bJf7fbGfFG4ytBoGEHYA1XjJPIqmoPnfC8L6fUsaLRG1TtX2zTQKEO4s6XgTcO5-di5FPTOYqTvntcEGizQgAa6PZmGcY-6knu5DX-g-rSjSDbriHLPu8RzW1QQoDjPC2qey2rtEAqA6ui6YBmRyuhMAfm2QprOmLo_2bHsYE4Pzsd5wnvd72ktlPCaYJX0LXdg76TFWoIdz07peoG_8Aw_9YvVbtiAVKyRw5DegUWD5dQrGkqpWIOK7FtW7LxcCM0FrsLKvQfKaiWioVBCbJtsk0GGXM9-06WNXNOsYU_tdBI4LwgG7gEqlXtfh46g44OrCHKgz39AvnrG2kGMD19_9qutA2gybRzX0J2jDespUWWhhTV0kfMgSYNhezNYisg-5z1ZtPO0segMMng1qJFmEpL-YL7XXqk7w2hSVYd2E4IagKG6VcH0v8_khIocIEU7l-WS4PmOItF9V1dp2b9ygMaeGtt8WaNgpVV9osnUmHBu4HfkSLi8UBVGF2gDO5IqIroN7-qWK3GXk6_6sS5Lw_mOf1VoF_3VMseJRnY61T4I35G0P8-M5di4cFrlDIqojOEulVW-J3IvyA2kWYSN_JRgB7bDyuKNqdOButfe-DFVCS6wyF4hvAsizq_GPS_XoJUhz9u4NrINnrHZIDRBNJ0WXZQZHAma-ZtXChAiOD6qQvL-RNApQWFPRwmnFzUDpx61gzzrrxR5XiFyGUTvwXfctNjwpHhHmPvCaAj_UKBRxtCaJRusFPK8HCFsZSZ1FBkIwJCdBiLcnw61A2gUDHeUrJHjZGZpo2yb8q6BC_ckv5mgCzE3gtrwtQOEAMhgSY5TCnnHDmlIlRFfJoRpnQZVF3s9BNeJYRmNYRitkg1WCnnH0f02RNXUalQq_7SkP9r22sQdsY6mtVnSdAnVZyU--bRw_qV8Pcl_FN-SGznfqzWU1O0rQ57VtGxEzX3tUPkVwgYBNIAx5_qTarvWPcr4LCUbDMx0bgUlDTeugzu6lcq11ZfZeSBSNwm1pkReE-BbltOwoIb9dA-bgRF1etSIpF6u9bBCg1CG3NO07P43p52d5HLxEw0HIIyhRUfS6_2PuRK2seZKNhhogyoo6f5sZGWla1fjnBZcthzC3N3Z-TsaP9bbmjXlbEIZN-Z7BlJw6dfI18a7D6ZfUOLrkGGHXEW3L0KnIf_VoudOCEseP9FwQALREK5564SgDuuoyTeUI1yU4I4mR7hWO5dNJ7gFCqJkO0Cr3DnB7_g9yuEunNGUYRaoU4c7WrJVNqX1UoTPwob5m5BDLHvMtuEAo7Qtvd51b4PrqWLlI0c7cmwoQ5MYO12WqgHHv0T5_7b-zt0SYl1819cFsjk_qpnulB1N6oKPa_yOet2es__E2UmL66MM4JRkROdZcI8-MduGAxKMhpBNak93437ed9yRo5qjVC-xjVah-5N2ekNnBicKsqpyYudAwgeWT3l0pzLmvT_Ym8SxXMuY7hqGyq0Uck0rojYEjTThVyMxvwYBYVeJsVNppNkQUZanf7srWZpWdWnSdGrD3cF9HQtDODGFNI5VwWqNNUvV071qqGFdKP8-lNOfGukipd-d05GdWYJnNntX3YLqVl0cqsZBgoF6vmoA0TzqH5EUcrRduzih-dPNDMFJkXuGEDN0tiG0g85NNrWmoWJdgjMH5dOc61-egzMmaIiS-0FHuOZcVUy3ZWktHOO7tkckfv0FK6qbExX3b4f-5cB1aue7ECgQVDCajqBj9KYQ-5139EurNoFtLSFwrmgP0AhkQOQtqcNQOkIWVcO_TIZRD35EnV1f39N2sF71nuiOCiramjl9eyq-GDQUqKg_uzHO3SO2Mw2mH1zrutggMWSaMeZ0o_Y3nka19h83OmA8D-p04T_jgom43jtLKgAZw5z5OYQSswFIjbzkf9D0D-_DvQ6ZRY1X6hzRM4se9Wmrakb9_OOFEan8wZHOF6a7Q_TOyik-H1-tn8BIdxeLW339U7CCz1Gg-8q6u7nQXl-f2B0dN5h1qas_5vc_av7k382P7s7dJqqd9dtZkoq6SbEtle3sqKYhRtAI7lbZTILbSPWJ6Nl8j5TfkpGtq_YI6j_QYzuC16lz_V5mzQQe53YaQCFNc6xprZLK1zMEhxGwGcT2F2ISupnqnte9_8VjCRIkSJAgQYIECRIkSJAgQYIECRIkSJAgQYIECRIkSJCg1sAGG_w_9uugSP5CnHgAAAAASUVORK5CYII",
"url": null,
"ETag": null
},
{
"altText": "Black",
"data": "iVBORw0KGgoAAAANSUhEUgAAAH0AAAB9CAYAAACPgGwlAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABGxSURBVHhe7d0DkG1JEgbgt7bNWdu2OWvbtu2dtW2bs7Zn1rZt2_6_2K6IE72nX-v07XPOzYz4YyZevNd9q7JSf2bV3VNSUlJSUlJSUlJSUlJSUlKyC3KQ4KDBwTs42MqflcxUDhUcOTh2B0cPDhs4ECUzlCMEJwhO38HJg6MFZe0zlWMEZw0u38EFgxMH3HzJDIVyKfqeK7hHcKPAQThEUDJDOV1wq-BFK3hh8ODgYoF4XzITkaCx4kMH5w0o-cAVHBA8P7hGIMHz9yq2z0Ao8TDBkYJ9g2cHP1zBD4J3BbcOjhMcLig3PwOhRNm5eH6D4PXB31fwt-BzwQMCmfyxAuVbycSFlZ8yELfvG7wv-GcHXw-eFlwlOHMgwy-ZuBwxOE9wi-CZwaeDf3fAze8fyOYvE-wTlExYJHFc-xWCRwVvDb4V_KeDXwYfCp4X3Cw4beDfFUM3QaE0SZwE7aYBa_5C8POgq_Q_Bt8MPhg8MDhH4N-V0icoGDa190kDrvtTAav-S9BVuoTut8GPA-6_1ewSwFL8xEQsP2FwoeCxgYSNVVNyV-mSuT8HFP-q4HqBg6IRowtXMiHh1s8eUCL2jSVT8L-CrtIlc_7cYXh3gJq9QEDxCJ2SCckpgisGavC3Bb8JusruwyeDJwfqebFdV65kQsLK7xC8OPhE8IegT9FdCAFvCB4SKN-OGpRMSCRkYvlHg-8Gfw36FN3FT4PPBK8Mbhhg6EpGLjJ2NOpRgmsGLwnU5bL2fwR9iu7id8H3gw8EdwtOFRw-OGRQMlJRasm6TxLcJnhn8PuAla9O4PogmZPhfy1A5mDyJIQUXzJSoZyTBVqoDwokZn3KXQ8IHAwdPl4Pvvj4EQsrP1-AgXtu8JWgT6nr4dfBmwLlm4TOQSoZqRh6vFoggXt7ID73KXU9yPQ_EjwnMGlzlqBkZIIrx55JvG4b6Jl_NpDA9Sl1PaBqxXVkzUODiwRoWYliUbMjEEqgEFm72ny_wGAEBu5PQZ9S14NM_xfBNwJzdGK7qRpZfI1TjUAoncK1UC8aPCvAvpmK2UjG3gfUrEweJ68C0HKVzEkUi48fgXC5xw3E3RsHrw7EZHw65fUpdT00Pt7BEdvvH5w7UApW-TYCYXmnCa4UKNPeE6jLt6rwBv-ep_hi8PTgusG5Ah6lZJdFnFWm3SnQTTMOtRH2baNA4eLj5QomcI4flOySiOVg8NGtlScF5tgpiWvuU-BWIKFD8ui1m7NTs1cGv0vSlC7Gao68OTDHjj_frmvvQgWgEvh8oE2LoSul75KwcPHVePPdAzNumDQ19pBKl8yZqkH06LVfPDhm4LCV8hcsOmltnv0xgYRLAjekawfJXFP8y4PrBy5GuNteN133IiwCqWGTZNvIFAmYrpiRJFar1kaAsCATK2bcXEVyx4yCDTSwbPy6mtmo8qUCNOnLgq1SrhtFG6dSvknoEEFKRZ_FZ_LZfEaf1Wf22a3DeqzL-qzTeq3b-u2D_bAvs5nAtQiwKAu1eJthg1iKTPhEgeTo1AELcsvEhmprmlVDgV4y0Piw2dgxvXKtUxMuLiB-ONgq5bpR8CC8yWuCRwd3DZRxuH5jWZcNHEKex513nb5zBq5BnzFQVhrhUusb2NSydWAcEgfDYWgTuJNWvg_vBFuMhVE267BwSj5ToPY1sWrDKPXqgWFGLBge_S7BfQIlk82WpRtVlk2_P_hSINFaPdo8NLh5B8tIFcJGF0779SmB8IKj5wV05oxp3TKQYF4rwCFcOnCAHYazBRJCr2A4AJTPs1H8aCzeB-GqWKeLgBobTi-rtABDhJTHOtXMTvqFA6e-WSlroFDWgTmzKbcPWMy9A8TKwwIbSLHPCGyq6RcK1kQx4Ih8UZoZa_p2oKTCwA1Zm_dBcoiWlSwKJayeh3E3TkfvjcFrA3H_BYHbsQ7E44JHBK5Iu0sn6cQpuCmrBWwIk-e6cnC5wOGXLDogjIG3c1AwgjyH_cY-MhghjpfUXRRaeNPBhKVyw5TKGp3gOwYWYCFNYSzxiQEGS1tSs8ImUJoNoTgW4nrROwLXhG2a8STZNwv6eKAuplRlEkv-asDCjD6pw5Vm5tkkVxQh3m6VZ98MHCwexTSOw-Ye3PcCh09zRmfuy4GbNLp8LlgYyjSn5-qUw8o7Obg4fYdYqYn8eV0gdJjPM8zpwPNoKgatYgeHt-NNXN64c3DzgCE5JA6AXGIwcYLOEFw1YJmPD3w4CrQAC6Iop98VIZvBFbLAppAhy6i5olG_uAFNo58EDrlhEEbg8Dg0Dgsj0lzCHfAY5w8GHeSUYYo9XDj3_PDA6WSh2pgU7cT_KDBq5AObNWsllMWU0tdH2yclIsUjmhgP5QspPIoDQPlCihB4u0AokCNJkgcTMd0PPF6gfcnFcM9cmCSKgn1Iro-iWTdXWBa-Ndg3xmIfHQD7KozZZzmFMCJUuFd_nUCepWwc9EaObFJdqdaUdUrExBuK9wFYtg-1iLi6rKB8uQRvKoF8aSC2s3JJNoUPThb5gRI6Gbw6Wrbpaq_kg8X7ME5m3wcubB_Nwt8bSJZvEqiQ3LmTcwnBPPKOCOU7VeruSwQUr1yRZe90rbzMENNVOuI4HgPXgeFrhM6Oil9A8W14Qf3NzSjPlFuyTQlI3wcvbA7yIzkTg5I4K9uUy2p2dTk9LIzI8Yu4EhSiJAIhgxZ1CrmfnebBlwV4CKXwKwJ8iLkBTSalGZdODwtT-mpBCqgTsWyIGXW7GCTb3GmmbG5Q7QiTFI6UovB7BRTOpY9GxBYfCF3orVXMHKYJoyazr9Jtfdgf-8RIMI_iNyoXZSt3UjXpXYxGuHrJndLBh5PZa5KgFrFzrWbvW2zhf6B0tbnSDCWNsxe_Ud8aMspledQoBUmgGYOjx8mjanHRWKWiZP8fzbqFQ_y9GlyjhseUsHnXbrTKbuJESjQkHLpGGgPclGYKLt5JHnq6Zapw-BkCYkv8xnkogbFsOpcYUEzojtXfQ4vTqeXnw2sIaJEicJRzbS59mS2-uXOGoF-h6kFva6XqswuVk5NW0mnJ6gtrDLB4XTmJisye1S-j4rlz1k3ZHwtk6LplciEK5ykH5dEXJepHfL0RKWNRLN4EySMDzQILpvhlTPCUZL8KuPT2PCnDME61Yzz6ogWRIAPFE4tXTw0ODAxGqEd3Yop1bHC4eTYWjrwyXOHenZLMRIwxskm69LVEfGfxqEPjPsaDxC-L1h9m9Tajb7PmAgmbDL19sYCSTK6jaWJWwYzcoONOY5BG3TrNTrVyBLUogRHjWXzfZs0FDjWF60gqycRvia68RxjcVUp1p8UCdehw9po1LF5mbxpELS-7nwt1K0mVt_BkRsk0TVi4GtxwY3cCdtZigdqBFixTxTi5GGiQUpzTpZuLq6d0A5zoaOwkltJ0MNZShs4AFtop222xUMrH2xvKMF1rGkSzRj1P8VMdypCUytB5Le6cwrtPjzZlL51QuoVTfHui2xiWcV_TnkaJucUp1vGULU9BqfJgMnQ3YIwpNw599i59LWnJi7jWiBzXhNpXbxgPmmIpZ_ABF0Hh2s2uNulJqGAoe2nc-d6kKZ-rN2ZtowxemsSZYlLHyl3wcMXJdSYceltjSUdsiFjnypTYd7_ALdEpKl2m7maKyyGsXBwvha8hYrwaXjmDuJAATTGZM-KES0c9C1nceskaIsFxIc_FR_fk3OKYotKVaOpxyZvrYIPeMZubyOQNYPjCW5OfkqEpuneNFA8Sq0YMjeo7lKwhuGf0rGu82rDImikq3Z0zAxEGGiVyQlbJGqJ0c00HJ-9WpnnvKZZsOHZXkd3u5bXqqzz3IogLcdBmmQZlMVPst_8s0EvAMEpItZRL1hBZrkv2bsugLzVgpqh0Y99axlqoZgSVoSU9oo7Vdm0PARo00G6dIg3r2rb-QXtw0ANKJauEwpVrSAxJnKma7gBl38aOGcpM14rN_HtDx-AIDmJp-fY-wcRpteqxoy691aJLJXOfotJbl82kjGtepmOMMktUi5lbEQmcd9W8mOQxHR02sXyKCgef2-eneC9Tu4embHOwy9pXBGNlEtTTJjJ3b9j0bebUwM2r1z0t6lq3wYml7KP3ic0wSOGhPe3I7wR9mzg1CE9vCfTT3eoVvrCOJREDgt5C85igp8qQG32bOAS43tXo-3tDgNLxDUKWeUBDFPKXkogmizakkSLDE-rzvk3cLrhb14g809WgLBR7d0L5EjokjTl_b8TwZrMbc96qiHeYK4MTyjXK6NvE7cLcnQPldmgDPqDdoe_7N9uBn-mdPa9U6xp6PlUGXxLxxqyHf_XPMXFDzMCzXJvOutX8plKxZB48xOs3aN8qEYUUJZaDMVTl4Oe4xeN3uM6l-aJSKYm41uPBXJOwMnez4n2buBlwra4RsWLMmGFLnsTjw7LpBnmEYUy3bbhihApSaAiOwL_384x96Rq2L_Uribie6-Vn7lazwqb3beJmwMJZrU1H63qw2D067BiipEEzRJPHm7dqau7YofMZtuvyKZ33cJD3DzwFNqv7apuVRr1KbDx37fYmhaMvt9pDZ9k2WZz2VV1etPQlAKxbI4dHcYMWQdKAI3D5wGfwvvwTAq9V8zrtEOLS-37feqD0dsPFFW3fQmEqdmlHoC3a9KtNd6_L9KjNpbitWpgDY2zaS8leSNbhUip5AMnLGF67dKXKgWtw6Dzgo-dtiJHyZdoeS_IoohxDPtD3-zaC5nEMhPAmDp11U_zSiUVzr8aDxVYkRt-mrQVWJG7bVIdF8scyDS94z84YNcumUHF0I0yYzNohVEKavxcSJHu8Bg-i3GvXqjd7MCWROm4Onxn_pcziWRiF49slU9xf32atBR5BVq4EM33qcqDboEojV6HNprVJVITIRtxpu2Zlpk1F4c0cjyKa11N2HRCYaW8PIG8m0XMgddza58LDL50oXQwXYOJYgGe0-jZrLbBuN0nMmPsmhHZ1yPi05g2LZU2baWly9_4u5Uu4xF_vqBvh4o3EeyXfVmp71DIP5DUOB30phyVtqhiKb9dkYa19mwUsygZzrYgbN1v9fVk5rt7lR4dH04aihkySfE7xXtbv-1bEei4fiaQG52m4fS5_b5bvoBifckMXScPLLZ2wRIv3AJEM21tzfZsFreb2TouvtZBdOyjCgvfqXIXyYqX4zYOw2KFEaJB7aI2yUK83Gm3Gp7tXT_m-1WK92p5Xkhi2N15H9eTnooSC9g2QMpTIalZvlA0ECmdNLBxrJxwgOoSHVv4Mqei1xO_x-xwAbWAH1nw7Rk9-sbfBD2Wb5gs-QqhYyrk531eqdjZZosTi_rqbxHJ8I1K78sul2jCunHULDWJ3U_gilN5iPi8l1lO88s53srF6d-_a98Q5pN31yP6Vbb69ymFxqWPphMK4SfQnFowldDeJ5ShzZPWULRa67iSrFmPN08m0F6Hsrvh9zeWr-zWL9ModYF4L86bEW90pdAjcfLEeLl7HbWmkWaWHCMTkNt8uQeMexW3UqY2zge2NFolU9473WETpqe5G58rMvaGjmlDeCUcOM4U7xGK_Ay4ZdFDaXsxeWlxEgKBH23w71svYMPpTTaw2ViOrlVkFJqvV3GPaKGvhceQo6FzeyBi3q9aaLMgiLCE6l9sXxjR-VBuLzEd2VSyUdXCLGC-nX83LunXDJEY4ahOk2Cslk3p7rBvUrBUf4ECqHngxd_Laqxq8WbN6XLxnQR1m-2Bds1c6qxCPkSgu-EniwJiUMkzspnCeYKqX-fH78g5rvHbgCXS3drR3ZfqYQ0TSZijiSYsEyIa0p8RsgOxXUof5ktWamWuM2hSV3hg9FYrSTMPHOJgvONII8l_lqlpdnjL7YUnW6_04GyHx0RjRCePKLd6pn5O7E5KsS6bPgwldrN8BF-JUMcLCrIU7YwFOOauWxXqtoc2Ezy2xsRbr0mBBE1uvxNT_Owj-XFyftbSER2znArlx_x1bVj6kWBfFSvKUdxTt_5cmkSspKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSmZnOzZ818DW5ag0lSSzAAAAABJRU5ErkJggg",
"url": null,
"ETag": null
}
],
"lastAnswerPositionPinned": null,
"lowValueLabel": null,
"mustPickSuggestion": null,
"numStars": null,
"openTextPlaceholder": null,
"openTextSuggestions": null,
"question": "Which star?",
"sentimentText": null,
"singleLineResponse": null,
"thresholdAnswers": null,
"type": "sideBySideImages",
"unitOfMeasurementLabel": null,
"videoId": null,
"ETag": null
}
],
"state": null,
"surveyUrlId": null,
"title": "Stars",
"wantedResponseCount": 100,
"ETag": null
}
Question: does anyone know how to create a question with multiple image answers using the GCS API? More specifically when sending WebSafe base64 encoded PNG image data?
The "owners" field must be filled in correctly; otherwise, your request should work as expected.
(There was a bug in the API related to multi-choice images that is now fixed.)
Below is my JSON. I'm trying to create a tree out of this,
I tried with the following snippet:
require(["dijit/Tree", "dojo/data/ItemFileReadStore", "dijit/tree/ForestStoreModel", "dojo/domReady!"],
function(Tree, ItemFileReadStore, ForestStoreModel){
var store = new ItemFileReadStore({
url: "/om/web/em/tree.json"
});
var treeModel = new ForestStoreModel({
store: store,
query: {id: 'aid'},
rootId: "PSS-32",
rootLabel: "P",
childrenAttrs: ['eqList']
});
var myTree = new Tree({
model: treeModel
}, "treeOne");
myTree.startup();
});
But this is giving me error loading PSS010010026024 children and message: "Cannot read property 'length' of undefined errors,what should be specified in the rootID,rootLabel and childrenAttrs?
[
{
"responseStatus": null,
"entityType": "NODE",
"aid": "p",
"id": "p",
"hsa": null,
"eqList":[ {
"responseStatus": null,
"EId": "5",
"EGroupId": "1006",
"aid": "p",
"additionalInfo": null,
"eqList": [
{
"responseStatus": null,
"EId": null,
"EGroupId": null,
"aid": null,
"additionalInfo": null,
"eqList": null,
"shelfType": null,
"isEqAvailable": null,
"id": null,
"entityType": null,
"hsa": null,
"Elist": null
}
],
"shelfType": null,
"isEqAvailable": null,
"id": "p/p",
"entityType": "E",
"hsa": "-",
"Elist": null
{
"responseStatus": null,
"EId": "5",
"EGroupId": "1006",
"aid": "p#OCS",
"EType": "1830pss-ocs",
"ERelease": "7.0",
"additionalInfo": null,
"eqList": [
{
"responseStatus": null,
"EId": null,
"EGroupId": null,
"aid": null,
"EType": null,
"ERelease": null,
"additionalInfo": null,
"eqList": null,
"shelfType": null,
"isEqAvailable": null,
"id": null,
"entityType": null,
"hsa": null,
"Elist": null
}
],
"shelfType": null,
"isEqAvailable": null,
"id": "p/p#OCS",
"entityType": "E",
"hsa": "-",
"Elist": null
}
]
}
]
The rootID attribute is what ID you want to give the root item that will be created (so that you can query for it later or check if your tree is at the top level). The rootLabel is what you want the label of the root attribute to be. The childrenAttrs is how you tell the Tree where a specific node's children are.
I'm not sure what you're trying to do in your code though since your data doesn't seem to have PSS010010026024 in it but I would recommend checking out the API documentation for the ForestTreeModel here: http://dojotoolkit.org/api/?qs=1.9/dijit/tree/ForestStoreModel