From 8609c7342fa513d311fea34e91cfb7eb40bda22c Mon Sep 17 00:00:00 2001 From: Jochem Berends Date: Wed, 22 Jan 2025 15:21:36 +0100 Subject: [PATCH] Add test cassette for multi-attachment property validation This commit introduces a new test cassette for validating single-reference validators in multi-attachment properties. It ensures the behavior of the feature is accurately captured and tested. --- ...chment_property_single_ref_validators.json | 1 + ...ferences_property_value_gets_replaces.json | 1 + tests/test_properties_multi_attachment.py | 60 +++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 tests/cassettes/TestMultiAttachmentProperties.test_get_multi_attachment_property_single_ref_validators.json create mode 100644 tests/cassettes/TestMultiAttachmentProperties.test_single_stored_file_references_property_value_gets_replaces.json create mode 100644 tests/test_properties_multi_attachment.py diff --git a/tests/cassettes/TestMultiAttachmentProperties.test_get_multi_attachment_property_single_ref_validators.json b/tests/cassettes/TestMultiAttachmentProperties.test_get_multi_attachment_property_single_ref_validators.json new file mode 100644 index 00000000..1f0fa13c --- /dev/null +++ b/tests/cassettes/TestMultiAttachmentProperties.test_get_multi_attachment_property_single_ref_validators.json @@ -0,0 +1 @@ +{"http_interactions": [{"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "]}, "method": "GET", "uri": "/api/v3/scopes.json?status=ACTIVE&name=Bike+Project&fields=id%2Cname%2Cref%2Ctext%2Ccreated_at%2Cupdated_at%2Cstart_date%2Cdue_date%2Cstatus%2Ccategory%2Cprogress%2Cmembers%2Cteam%2Ctags%2Cscope_options%2Cteam_id_name%2Cworkflow_root_id%2Ccatalog_root_id%2Capp_root_id%2Cproduct_model_id%2Cproduct_instance_id%2Ccatalog_model_id%2Ccatalog_instance_id%2Cproject_info&limit=2"}, "response": {"body": {"encoding": "utf-8", "string": "{\"count\":1,\"next\":null,\"previous\":null,\"results\":[{\"id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"name\":\"Bike Project\",\"ref\":\"bike-project\",\"text\":\"Project used to test Pykechain and push it to the limits\",\"status\":\"ACTIVE\",\"category\":\"USER_SCOPE\",\"created_at\":\"2019-10-22T08:06:48.874535Z\",\"updated_at\":\"2023-03-15T14:58:44.000690Z\",\"tags\":[\"bike\",\"x-scope-target\"],\"scope_options\":{\"overrideSidebar\":false,\"representations\":[{\"rtype\":\"customIcon\",\"config\":{\"displayIcon\":\"bicycle\",\"displayIconMode\":\"regular\"}}],\"customNavigation\":[]},\"team_id_name\":null,\"members\":[{\"id\":286,\"username\":\"supervisor\",\"name\":\"\",\"is_active\":true,\"email\":\"\",\"is_member\":false,\"is_manager\":false,\"is_supervisor\":true,\"is_leadmember\":false},{\"id\":3,\"username\":\"testmanager\",\"name\":\"\",\"is_active\":true,\"email\":\"\",\"is_member\":false,\"is_manager\":true,\"is_supervisor\":false,\"is_leadmember\":false},{\"id\":4,\"username\":\"testuser\",\"name\":\"User Test\",\"is_active\":true,\"email\":\"a@b.nl\",\"is_member\":true,\"is_manager\":false,\"is_supervisor\":false,\"is_leadmember\":false},{\"id\":93,\"username\":\"testlead\",\"name\":\"\",\"is_active\":true,\"email\":\"\",\"is_member\":false,\"is_manager\":false,\"is_supervisor\":false,\"is_leadmember\":true},{\"id\":1,\"username\":\"superuser\",\"name\":\"Superuser\",\"is_active\":true,\"email\":\"hostmaster+pim3-test@ke-chain.com\",\"is_member\":false,\"is_manager\":false,\"is_supervisor\":false,\"is_leadmember\":true}],\"project_info\":[],\"start_date\":null,\"due_date\":null,\"workflow_root_id\":\"010d6604-45cb-48c4-8457-63f50826a48f\",\"catalog_root_id\":\"dfe4fc50-4962-4f9a-9481-7eb2da81742a\",\"app_root_id\":\"3ba384e4-2771-4f00-a082-b28f1653d026\",\"product_model_id\":\"98849124-1949-4603-9ea2-14994ba2020a\",\"product_instance_id\":\"a6073e4b-591a-4513-b270-9fa61ab2a3c3\",\"catalog_model_id\":\"b6614c51-255a-42e9-8328-41267e13da77\",\"catalog_instance_id\":\"90a3ce91-e816-410a-bc1a-16620145af23\"}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:41 GMT"], "Content-Type": ["application/json"], "Content-Length": ["1838"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, POST, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 200, "message": "OK"}, "url": "/api/v3/scopes.json?status=ACTIVE&name=Bike+Project&fields=id%2Cname%2Cref%2Ctext%2Ccreated_at%2Cupdated_at%2Cstart_date%2Cdue_date%2Cstatus%2Ccategory%2Cprogress%2Cmembers%2Cteam%2Ctags%2Cscope_options%2Cteam_id_name%2Cworkflow_root_id%2Ccatalog_root_id%2Capp_root_id%2Cproduct_model_id%2Cproduct_instance_id%2Ccatalog_model_id%2Ccatalog_instance_id%2Cproject_info&limit=2"}, "recorded_at": "2025-01-22T14:20:41"}, {"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "]}, "method": "GET", "uri": "/api/v3/parts.json?name=Wheel&category=MODEL&limit=2&scope_id=bd5dceaa-a35e-47b0-9fc5-875410f4a56f&fields=id%2Cname%2Cref%2Cdescription%2Ccreated_at%2Cupdated_at%2Cproperties%2Ccategory%2Cclassification%2Cparent_id%2Cmultiplicity%2Cvalue_options%2Cproperty_type%2Cvalue%2Coutput%2Corder%2Cpart_id%2Cscope_id%2Cmodel_id%2Cproxy_source_id_name%2Cunit"}, "response": {"body": {"encoding": "utf-8", "string": "{\"count\":1,\"next\":null,\"previous\":null,\"results\":[{\"id\":\"e01573ed-8308-4510-a2fd-464c3cdd0a08\",\"name\":\"Wheel\",\"ref\":\"wheel\",\"description\":\"\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"multiplicity\":\"ZERO_MANY\",\"created_at\":\"2019-10-22T08:06:49.859787Z\",\"updated_at\":\"2019-10-22T08:06:49.859801Z\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"parent_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"model_id\":null,\"properties\":[{\"id\":\"63e528c9-d8c7-44b1-bbdd-93ede1b72a03\",\"name\":\"Diameter\",\"ref\":\"diameter\",\"description\":\"\",\"property_type\":\"FLOAT_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":0,\"unit\":null,\"value_options\":{},\"value\":432.1,\"created_at\":\"2019-10-22T08:06:49.874406Z\",\"updated_at\":\"2022-08-10T12:27:50.797782Z\",\"part_id\":\"e01573ed-8308-4510-a2fd-464c3cdd0a08\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"410803f0-489b-443e-a8ac-4e422fb76a43\",\"name\":\"Spokes\",\"ref\":\"spokes\",\"description\":\"\",\"property_type\":\"INT_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":1,\"unit\":null,\"value_options\":{},\"value\":0,\"created_at\":\"2019-10-22T08:06:49.897461Z\",\"updated_at\":\"2022-08-10T12:27:50.797792Z\",\"part_id\":\"e01573ed-8308-4510-a2fd-464c3cdd0a08\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"dfeb257f-6b0b-4adc-96f0-6d876d2f4c15\",\"name\":\"Rim Material\",\"ref\":\"rim-material\",\"description\":\"\",\"property_type\":\"CHAR_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":2,\"unit\":null,\"value_options\":{},\"value\":\"Adamantium\",\"created_at\":\"2019-10-22T08:06:49.921445Z\",\"updated_at\":\"2022-08-10T12:27:50.797796Z\",\"part_id\":\"e01573ed-8308-4510-a2fd-464c3cdd0a08\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"987e9a1b-102e-40d8-8e34-1ff3d915a9cd\",\"name\":\"Tire Thickness\",\"ref\":\"tire-thickness\",\"description\":\"\",\"property_type\":\"FLOAT_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":3,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.946001Z\",\"updated_at\":\"2019-10-22T08:06:49.950276Z\",\"part_id\":\"e01573ed-8308-4510-a2fd-464c3cdd0a08\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"41786848-b30e-4da5-be3e-ffb3d6081b74\",\"name\":\"Country of manufacture\",\"ref\":\"country-of-manufacture\",\"description\":\"\",\"property_type\":\"SINGLE_SELECT_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":4,\"unit\":null,\"value_options\":{\"validators\":[{\"vtype\":\"requiredFieldValidator\",\"config\":{}}],\"value_choices\":[\"United States\",\"France\",\"Germany\",\"Italy\"],\"representations\":[{\"rtype\":\"buttonRepresentation\",\"config\":{\"buttonRepresentation\":\"checkboxes\"}}]},\"value\":null,\"created_at\":\"2022-05-06T12:22:53.375562Z\",\"updated_at\":\"2022-05-06T12:22:53.383478Z\",\"part_id\":\"e01573ed-8308-4510-a2fd-464c3cdd0a08\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"57a31b7b-b0cf-4b7b-aa0d-57ff3249ae3a\",\"name\":\"Copied property instance\",\"ref\":\"copied-property-instance\",\"description\":\"description of the property\",\"property_type\":\"INT_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":5,\"unit\":\"unit of the property\",\"value_options\":{},\"value\":42,\"created_at\":\"2024-09-10T13:52:26.537159Z\",\"updated_at\":\"2024-09-10T13:52:26.547386Z\",\"part_id\":\"e01573ed-8308-4510-a2fd-464c3cdd0a08\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true}],\"output\":true}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:41 GMT"], "Content-Type": ["application/json"], "Content-Length": ["3456"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, POST, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 200, "message": "OK"}, "url": "/api/v3/parts.json?name=Wheel&category=MODEL&limit=2&scope_id=bd5dceaa-a35e-47b0-9fc5-875410f4a56f&fields=id%2Cname%2Cref%2Cdescription%2Ccreated_at%2Cupdated_at%2Cproperties%2Ccategory%2Cclassification%2Cparent_id%2Cmultiplicity%2Cvalue_options%2Cproperty_type%2Cvalue%2Coutput%2Corder%2Cpart_id%2Cscope_id%2Cmodel_id%2Cproxy_source_id_name%2Cunit"}, "recorded_at": "2025-01-22T14:20:41"}, {"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "]}, "method": "GET", "uri": "/api/v3/parts.json?name=Bike&category=MODEL&limit=2&scope_id=bd5dceaa-a35e-47b0-9fc5-875410f4a56f&fields=id%2Cname%2Cref%2Cdescription%2Ccreated_at%2Cupdated_at%2Cproperties%2Ccategory%2Cclassification%2Cparent_id%2Cmultiplicity%2Cvalue_options%2Cproperty_type%2Cvalue%2Coutput%2Corder%2Cpart_id%2Cscope_id%2Cmodel_id%2Cproxy_source_id_name%2Cunit"}, "response": {"body": {"encoding": "utf-8", "string": "{\"count\":1,\"next\":null,\"previous\":null,\"results\":[{\"id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"name\":\"Bike\",\"ref\":\"bike\",\"description\":\"\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"multiplicity\":\"ZERO_MANY\",\"created_at\":\"2019-10-22T08:06:49.168674Z\",\"updated_at\":\"2019-10-22T08:06:49.168684Z\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"parent_id\":\"98849124-1949-4603-9ea2-14994ba2020a\",\"model_id\":null,\"properties\":[{\"id\":\"8750eb0f-c6bc-4fa0-ab2f-78009601355f\",\"name\":\"Gears\",\"ref\":\"gears\",\"description\":\"\",\"property_type\":\"INT_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":0,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.210145Z\",\"updated_at\":\"2020-02-12T12:38:30.959584Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"1c50588c-37fd-4adc-9881-686a29ce59cd\",\"name\":\"Total height\",\"ref\":\"total-height\",\"description\":\"\",\"property_type\":\"FLOAT_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":1,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.248814Z\",\"updated_at\":\"2019-10-22T08:06:49.253309Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"fe0f3048-2eb3-4e38-9bb8-811e7aa9ce7b\",\"name\":\"Picture\",\"ref\":\"picture\",\"description\":\"\",\"property_type\":\"ATTACHMENT_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":2,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.285941Z\",\"updated_at\":\"2019-10-22T08:06:49.290285Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"8fdbc130-e718-43dd-86a1-c74833624ee6\",\"name\":\"Description\",\"ref\":\"description\",\"description\":\"\",\"property_type\":\"TEXT_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":3,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.324187Z\",\"updated_at\":\"2019-10-22T08:06:49.328534Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"ce87608e-926f-4c94-bbe9-1d7a33642e4a\",\"name\":\"Expiring date\",\"ref\":\"expiring-date\",\"description\":\"\",\"property_type\":\"DATETIME_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":4,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.363957Z\",\"updated_at\":\"2019-10-22T08:06:49.368629Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"ed128e59-ffab-4f66-a6c1-94061c079707\",\"name\":\"Website\",\"ref\":\"website\",\"description\":\"\",\"property_type\":\"LINK_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":5,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.406049Z\",\"updated_at\":\"2019-10-22T08:06:49.410337Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"3bc6e0b1-aa10-41a5-a829-7b500b03a2b6\",\"name\":\"Sale?\",\"ref\":\"sale\",\"description\":\"\",\"property_type\":\"BOOLEAN_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":6,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.447365Z\",\"updated_at\":\"2019-10-22T08:06:49.451781Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"b528b92d-9e51-47c3-9520-1bdbb3a891c1\",\"name\":\"sig\",\"ref\":\"sig\",\"description\":\"\",\"property_type\":\"SIGNATURE_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":7,\"unit\":null,\"value_options\":{\"representations\":[{\"rtype\":\"signature\",\"config\":{\"signature\":\"nameAndDate\"}}]},\"value\":{\"category\":\"REFERENCED\",\"classification\":\"SCOPED\",\"file\":{\"XS\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_c12ad114-b0d9-442d-be6a-0338dfd5b4cd/signature_2024-09-11_11-43-06-thumbnail-100x100-70.jpg?Expires=1737556241&Signature=AWhD79yMBCMFR~gRzRgw3mHq81vGrPjpIpL-c8s2TAh-mvjnd412VbshezPq6Vt9Ssm-o5GBGPGmsxuxUnBD6zBTJFDT7LB4U5pwfKvhQJ7OVH8faTyXSmDvsL-bKOdVDHFPVMSGIYEL9zkiROLRAMUugG8PKsIuhNhRvy5BkwjVVyUh6CK~P7Dp48DJcKvxOyxFnpQEU~2N9VR6TbJJx9GZ9IUx66GN9uKlgYU40xgOn8iU2ct7JVR0qNYfdGJMrIOf4vRJvn~IBKq7DKXnhFGCtS3TdxX8afhH5iXChs2u2TS2zdDSGlEutBvQGMaVM6CLt7-3ExL41RYFqMY5Nw__&Key-Pair-Id=K35XCI687NDNBJ\",\"XL\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_c12ad114-b0d9-442d-be6a-0338dfd5b4cd/signature_2024-09-11_11-43-06-crop-c0-5__0-5-2048x2048-70.jpg?Expires=1737556241&Signature=UEJFR8xCrMjKXeL1NrBSgTnAxtvHbDrLWEsmXjQrrOdizdnoAx~lNx7rQC2n7iddz08ibdG7xKzuSkRF8PVtec8jzdFbOr7rFDJaS~J1AYKmfs9OC4f-axDvcorCjDcylD~UXkZ0SoeZBmS3DP3IaEvb0we2Kt7f2bn~4FyllVvJ406qSB8s64-5r04zJJt0X6E-8AsNEz-zBHRKbRqDK1FWV40WCS0chHAVog01jhBx0ca-j9zOLpaQN~SgsYFAmuNvjEwLbarBjRYVOTENGydJjkYmW8UsP2IXfs~ksW3bzsyuBMbARWnseibSzsMeOAnGFWiUB2UWxkm3Zgx6WA__&Key-Pair-Id=K35XCI687NDNBJ\",\"S\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_c12ad114-b0d9-442d-be6a-0338dfd5b4cd/signature_2024-09-11_11-43-06-thumbnail-320x320-70.jpg?Expires=1737556241&Signature=b3Hj86PyUZjJnjCXEy69rxDmFsOsCtLvmudFNMH7h6CCkRSeVlzAT6ioX4azN00gS4xkeEvkTE6-zyGCy7tqTKJaPsUr1gYdW8bnjASFRJWgusUuXEcbM54hIY8iqcyAVeOSWIp6KVbXIQnbXWq4Sm8RTzpWoSSB4XMGJoq1Cl3dtWtZUuGrTZuqDPMWIpqbrBVEbWx50pQgaA0jL49NOa1avkwALGkTdVUqGyFQnURUbKauerF~~mrwvm7mdd5xn5AbA~oD7L-6RMnowdtvfs2Z87cV4B099PXAqzUI~lAgoBl6F8JFs57X9L5W-EvRLMXLbfeTC3dUS7eJkoHWlQ__&Key-Pair-Id=K35XCI687NDNBJ\",\"L\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_c12ad114-b0d9-442d-be6a-0338dfd5b4cd/signature_2024-09-11_11-43-06-crop-c0-5__0-5-1024x1024-70.jpg?Expires=1737556241&Signature=TETnfPMWnm4Vf5hyBjiD0GBxEKUOgiqWggbcGdEMP0EDvHQjTZbDQ5o395Ta-4PIoN-vpPE4Fapf0IdvvGBiS-9A0oeC-GqextpXm-FJ7VkakBVM7APzr~1eB8xalB61B9-BqHhEN9J9A7Ci-Gp8GKFzN1WUtdBYEiS1Cil~bGdHwCFl4iQx-8mPfO31kAqCKQ2ynr5UFTN~9LElOIIWy6k~9EvRkZ7AtYLHoCDq2MUCTZOPSpX8z0OvaUGbKmnS996Xco5lSfaD47EYjVo7RCUm3qA4CGB5umhC8leUgxC~z7iQ4ePGAjVpLb~P-oMLpdMyqaNqrHwbA~E3gOJfMg__&Key-Pair-Id=K35XCI687NDNBJ\",\"M\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_c12ad114-b0d9-442d-be6a-0338dfd5b4cd/signature_2024-09-11_11-43-06-crop-c0-5__0-5-640x640-70.jpg?Expires=1737556241&Signature=PDe32zaoWp6WqzN5U4b30ebreBZqNcATrrKWBnRVQ7KUn7zUYyV3fM~jzBdQhbazO0swSHFZn2mq0gzCm3jTb3oVbzgyaC~a2iecowctCrtUiMmWetYjudFkPSxZdfxfmhRqP9Yn3mLgkz~sfuq4fSaroBLZVt4IEda5mTqtR4fiNP3z8og1OsjovdxJGrheGoeSNnUf~DEjq-7zRW7bmpnTs7xoWcRy88-fosvbkW3PcH3ZZ7jNIimTUquML2L2Q815WurUej3TSa1gOGfw1JzdBOeum~8VsGuRwZnuJU5rQhmKIANDdkQcku8lrHjN6zKv8R6Ytb4pa7i5QFED5w__&Key-Pair-Id=K35XCI687NDNBJ\",\"full_size\":\"https://media.cdn.ke-chain.com/pim3-test/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_c12ad114-b0d9-442d-be6a-0338dfd5b4cd/signature_2024-09-11_11-43-06?Expires=1737556241&Signature=XTMWgD~8E6L~yvJQzwKF~pYm261CLOBDFx~iBT~wSNJFExia27j9XfIcMPHEcvj2sCEqwtLewHyzFLvbkzpbeQy2Be0J65zlA0TMUXbfaMQ9zQfRN3taDzzhojDFD-ThB~xFARsl3JZkuiVuJmLmu5yQ86EubxltoOLDAhlFkAgFD0dao-M0LX~yoaENK5wkzOupz5AQ3wEaewl2atIZzslo5-uub~cPQyCJkdl0Jpx~OqyEsDKldhLDI2hu918juCa38fkQuLdDvt8gKQS~iyHsoOX67m0xU7QgWpqKopr8-P1OudTT9WD9xjOal5zbhTjavBFfGRQuVNTa1HM4VQ__&Key-Pair-Id=K35XCI687NDNBJ\"},\"id\":\"c12ad114-b0d9-442d-be6a-0338dfd5b4cd\",\"name\":\"signature_2024-09-11_11-43-06\",\"scope\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"property_id\":null},\"created_at\":\"2024-09-11T09:41:33.341683Z\",\"updated_at\":\"2024-09-11T09:43:07.629482Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"c68cbc60-0c6f-40df-ad40-ae3506e70c31\",\"name\":\"__Test property\",\"ref\":\"test-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":8,\"unit\":\"unit of the property\",\"value_options\":{},\"value\":[],\"created_at\":\"2025-01-22T13:24:31.981775Z\",\"updated_at\":\"2025-01-22T13:24:31.981781Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"b946df83-3bfa-4731-ad40-d63cec9e1450\",\"name\":\"__Test property\",\"ref\":\"test-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":9,\"unit\":\"unit of the property\",\"value_options\":{},\"value\":[],\"created_at\":\"2025-01-22T13:25:04.059162Z\",\"updated_at\":\"2025-01-22T13:25:04.066442Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"950cb70b-85c3-4d11-b7b9-35665f63a980\",\"name\":\"__Test property\",\"ref\":\"test-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":10,\"unit\":\"unit of the property\",\"value_options\":{},\"value\":[],\"created_at\":\"2025-01-22T13:26:23.191756Z\",\"updated_at\":\"2025-01-22T13:26:23.200584Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"2f31bc8f-b679-488f-8ea5-c3a5f43dc448\",\"name\":\"__Test property\",\"ref\":\"test-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":11,\"unit\":\"unit of the property\",\"value_options\":{},\"value\":[],\"created_at\":\"2025-01-22T13:26:27.122549Z\",\"updated_at\":\"2025-01-22T13:26:27.128557Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"e20dfb6d-31fe-4a26-99cf-563cf8a6f5c5\",\"name\":\"__Test property\",\"ref\":\"test-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":12,\"unit\":\"unit of the property\",\"value_options\":{\"validators\":[{\"vtype\":\"singleReferenceValidator\",\"config\":{}}]},\"value\":[],\"created_at\":\"2025-01-22T13:26:53.532776Z\",\"updated_at\":\"2025-01-22T13:26:53.704624Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true}],\"output\":true}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:41 GMT"], "Content-Type": ["application/json"], "Content-Length": ["10528"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, POST, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 200, "message": "OK"}, "url": "/api/v3/parts.json?name=Bike&category=MODEL&limit=2&scope_id=bd5dceaa-a35e-47b0-9fc5-875410f4a56f&fields=id%2Cname%2Cref%2Cdescription%2Ccreated_at%2Cupdated_at%2Cproperties%2Ccategory%2Cclassification%2Cparent_id%2Cmultiplicity%2Cvalue_options%2Cproperty_type%2Cvalue%2Coutput%2Corder%2Cpart_id%2Cscope_id%2Cmodel_id%2Cproxy_source_id_name%2Cunit"}, "recorded_at": "2025-01-22T14:20:41"}, {"request": {"body": {"encoding": "utf-8", "string": "{\"name\": \"__Test MAP property\", \"part_id\": \"e4a047a6-4a00-41a6-bae4-732ac2f639de\", \"description\": \"description of the property\", \"property_type\": \"STOREDFILE_REFERENCES_VALUE\", \"value\": null, \"unit\": \"unit of the property\", \"value_options\": {}}"}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "], "Content-Length": ["244"], "Content-Type": ["application/json"]}, "method": "POST", "uri": "/api/v3/properties/create_model?validators=%3Cclass+%27pykechain.models.validators.validators.SingleReferenceValidator%27%3E&fields=id%2Cname%2Cref%2Ccreated_at%2Cupdated_at%2Cmodel_id%2Cpart_id%2Corder%2Cscope_id%2Ccategory%2Cproperty_type%2Cvalue%2Cvalue_options%2Coutput%2Cdescription%2Cunit"}, "response": {"body": {"encoding": "utf-8", "string": "{\"results\":[{\"id\":\"4abf2c3b-f83e-423c-8171-bddfec6ec937\",\"name\":\"__Test MAP property\",\"ref\":\"test-map-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"MODEL\",\"order\":13,\"unit\":\"unit of the property\",\"value_options\":{},\"value\":[],\"created_at\":\"2025-01-22T14:20:41.489200Z\",\"updated_at\":\"2025-01-22T14:20:41.498420Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:41 GMT"], "Content-Type": ["application/json"], "Content-Length": ["509"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["POST, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 201, "message": "Created"}, "url": "/api/v3/properties/create_model?validators=%3Cclass+%27pykechain.models.validators.validators.SingleReferenceValidator%27%3E&fields=id%2Cname%2Cref%2Ccreated_at%2Cupdated_at%2Cmodel_id%2Cpart_id%2Corder%2Cscope_id%2Ccategory%2Cproperty_type%2Cvalue%2Cvalue_options%2Coutput%2Cdescription%2Cunit"}, "recorded_at": "2025-01-22T14:20:41"}, {"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "]}, "method": "GET", "uri": "/api/v3/parts.json?category=INSTANCE&limit=100&model_id=e4a047a6-4a00-41a6-bae4-732ac2f639de&fields=id%2Cname%2Cref%2Cdescription%2Ccreated_at%2Cupdated_at%2Cproperties%2Ccategory%2Cclassification%2Cparent_id%2Cmultiplicity%2Cvalue_options%2Cproperty_type%2Cvalue%2Coutput%2Corder%2Cpart_id%2Cscope_id%2Cmodel_id%2Cproxy_source_id_name%2Cunit"}, "response": {"body": {"encoding": "utf-8", "string": "{\"count\":1,\"next\":null,\"previous\":null,\"results\":[{\"id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"name\":\"Bike\",\"ref\":\"bike\",\"description\":\"\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"multiplicity\":\"ZERO_MANY\",\"created_at\":\"2019-10-22T08:06:49.178518Z\",\"updated_at\":\"2019-10-22T08:06:49.178529Z\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"parent_id\":\"a6073e4b-591a-4513-b270-9fa61ab2a3c3\",\"model_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"properties\":[{\"id\":\"8a6b873c-b1ca-4aae-b896-3895e20089bd\",\"name\":\"Gears\",\"ref\":\"gears\",\"description\":\"\",\"property_type\":\"INT_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":0,\"unit\":null,\"value_options\":{},\"value\":419,\"created_at\":\"2019-10-22T08:06:49.222935Z\",\"updated_at\":\"2023-10-04T07:15:37.712520Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"8750eb0f-c6bc-4fa0-ab2f-78009601355f\",\"output\":true},{\"id\":\"e69cf175-14bf-41b3-bb08-553f1a0294ac\",\"name\":\"Total height\",\"ref\":\"total-height\",\"description\":\"\",\"property_type\":\"FLOAT_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":1,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.259956Z\",\"updated_at\":\"2020-04-08T19:53:10.199306Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"1c50588c-37fd-4adc-9881-686a29ce59cd\",\"output\":true},{\"id\":\"cd72a3f9-71a8-42a9-bbbe-4a994db423f3\",\"name\":\"Picture\",\"ref\":\"picture\",\"description\":\"\",\"property_type\":\"ATTACHMENT_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":2,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.297090Z\",\"updated_at\":\"2022-08-10T12:27:52.460502Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"fe0f3048-2eb3-4e38-9bb8-811e7aa9ce7b\",\"output\":true},{\"id\":\"7a8462f2-1c3c-43e3-91d4-77998ce3a276\",\"name\":\"Description\",\"ref\":\"description\",\"description\":\"\",\"property_type\":\"TEXT_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":3,\"unit\":null,\"value_options\":{},\"value\":\"6660-0178-001\",\"created_at\":\"2019-10-22T08:06:49.335910Z\",\"updated_at\":\"2021-09-28T07:22:00.074817Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"8fdbc130-e718-43dd-86a1-c74833624ee6\",\"output\":true},{\"id\":\"da778535-dabd-4665-bcc1-c848b529b4c5\",\"name\":\"Expiring date\",\"ref\":\"expiring-date\",\"description\":\"\",\"property_type\":\"DATETIME_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":4,\"unit\":null,\"value_options\":{},\"value\":\"2022-03-21T23:20:00+00:00\",\"created_at\":\"2019-10-22T08:06:49.375322Z\",\"updated_at\":\"2022-03-22T09:45:55.670593Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"ce87608e-926f-4c94-bbe9-1d7a33642e4a\",\"output\":true},{\"id\":\"1f354e76-181c-459b-afae-ce82f97f9579\",\"name\":\"Website\",\"ref\":\"website\",\"description\":\"\",\"property_type\":\"LINK_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":5,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.416946Z\",\"updated_at\":\"2021-09-28T07:23:50.233290Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"ed128e59-ffab-4f66-a6c1-94061c079707\",\"output\":true},{\"id\":\"65e1fac1-7a76-4b05-bee3-d1f1c866519c\",\"name\":\"Sale?\",\"ref\":\"sale\",\"description\":\"\",\"property_type\":\"BOOLEAN_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":6,\"unit\":null,\"value_options\":{},\"value\":true,\"created_at\":\"2019-10-22T08:06:49.458908Z\",\"updated_at\":\"2021-03-29T13:02:00.167147Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"3bc6e0b1-aa10-41a5-a829-7b500b03a2b6\",\"output\":true},{\"id\":\"21bb6395-298a-4235-acf9-26ad8e186578\",\"name\":\"sig\",\"ref\":\"sig\",\"description\":\"\",\"property_type\":\"SIGNATURE_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":7,\"unit\":null,\"value_options\":{\"representations\":[{\"rtype\":\"signature\",\"config\":{\"signature\":\"nameAndDate\"}}]},\"value\":null,\"created_at\":\"2024-09-11T09:41:33.450752Z\",\"updated_at\":\"2024-09-11T09:41:33.475627Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"b528b92d-9e51-47c3-9520-1bdbb3a891c1\",\"output\":true},{\"id\":\"be3029b0-3ccd-4512-9ef8-5de7221b1a5d\",\"name\":\"__Test property\",\"ref\":\"test-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":9,\"unit\":\"unit of the property\",\"value_options\":{},\"value\":[],\"created_at\":\"2025-01-22T13:25:04.140124Z\",\"updated_at\":\"2025-01-22T13:25:04.149294Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"b946df83-3bfa-4731-ad40-d63cec9e1450\",\"output\":true},{\"id\":\"ff59ad09-b7d6-4e05-825e-aa29b57a343d\",\"name\":\"__Test property\",\"ref\":\"test-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":10,\"unit\":\"unit of the property\",\"value_options\":{},\"value\":[],\"created_at\":\"2025-01-22T13:26:23.227449Z\",\"updated_at\":\"2025-01-22T13:26:23.234935Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"950cb70b-85c3-4d11-b7b9-35665f63a980\",\"output\":true},{\"id\":\"3d67d6bd-abe7-4b64-ae3b-6cf6d1f4bd05\",\"name\":\"__Test property\",\"ref\":\"test-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":11,\"unit\":\"unit of the property\",\"value_options\":{},\"value\":[],\"created_at\":\"2025-01-22T13:26:27.154272Z\",\"updated_at\":\"2025-01-22T13:26:27.162271Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"2f31bc8f-b679-488f-8ea5-c3a5f43dc448\",\"output\":true},{\"id\":\"1650d366-7322-4423-9918-07c2dc08d8af\",\"name\":\"__Test property\",\"ref\":\"test-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":12,\"unit\":\"unit of the property\",\"value_options\":{\"validators\":[{\"vtype\":\"singleReferenceValidator\",\"config\":{}}]},\"value\":[],\"created_at\":\"2025-01-22T13:26:53.567722Z\",\"updated_at\":\"2025-01-22T13:26:53.727219Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"e20dfb6d-31fe-4a26-99cf-563cf8a6f5c5\",\"output\":true},{\"id\":\"94da2d2c-f458-4032-8549-32536e2ded1d\",\"name\":\"__Test MAP property\",\"ref\":\"test-map-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":13,\"unit\":\"unit of the property\",\"value_options\":{},\"value\":[],\"created_at\":\"2025-01-22T14:20:41.529037Z\",\"updated_at\":\"2025-01-22T14:20:41.538220Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"4abf2c3b-f83e-423c-8171-bddfec6ec937\",\"output\":true}],\"output\":true}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:41 GMT"], "Content-Type": ["application/json"], "Content-Length": ["7271"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, POST, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 200, "message": "OK"}, "url": "/api/v3/parts.json?category=INSTANCE&limit=100&model_id=e4a047a6-4a00-41a6-bae4-732ac2f639de&fields=id%2Cname%2Cref%2Cdescription%2Ccreated_at%2Cupdated_at%2Cproperties%2Ccategory%2Cclassification%2Cparent_id%2Cmultiplicity%2Cvalue_options%2Cproperty_type%2Cvalue%2Coutput%2Corder%2Cpart_id%2Cscope_id%2Cmodel_id%2Cproxy_source_id_name%2Cunit"}, "recorded_at": "2025-01-22T14:20:41"}, {"request": {"body": {"encoding": "utf-8", "string": "{\"value_options\": {\"validators\": [{\"vtype\": \"singleReferenceValidator\", \"config\": {}}]}, \"id\": \"4abf2c3b-f83e-423c-8171-bddfec6ec937\"}"}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "], "Content-Length": ["134"], "Content-Type": ["application/json"]}, "method": "PUT", "uri": "/api/v3/properties/4abf2c3b-f83e-423c-8171-bddfec6ec937.json?fields=id%2Cname%2Cref%2Ccreated_at%2Cupdated_at%2Cmodel_id%2Cpart_id%2Corder%2Cscope_id%2Ccategory%2Cproperty_type%2Cvalue%2Cvalue_options%2Coutput%2Cdescription%2Cunit"}, "response": {"body": {"encoding": "utf-8", "string": "{\"results\":[{\"id\":\"4abf2c3b-f83e-423c-8171-bddfec6ec937\",\"name\":\"__Test MAP property\",\"ref\":\"test-map-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"MODEL\",\"order\":13,\"unit\":\"unit of the property\",\"value_options\":{\"validators\":[{\"vtype\":\"singleReferenceValidator\",\"config\":{}}]},\"value\":[],\"created_at\":\"2025-01-22T14:20:41.489200Z\",\"updated_at\":\"2025-01-22T14:20:41.745258Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:41 GMT"], "Content-Type": ["application/json"], "Content-Length": ["572"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, PUT, PATCH, DELETE, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 200, "message": "OK"}, "url": "/api/v3/properties/4abf2c3b-f83e-423c-8171-bddfec6ec937.json?fields=id%2Cname%2Cref%2Ccreated_at%2Cupdated_at%2Cmodel_id%2Cpart_id%2Corder%2Cscope_id%2Ccategory%2Cproperty_type%2Cvalue%2Cvalue_options%2Coutput%2Cdescription%2Cunit"}, "recorded_at": "2025-01-22T14:20:41"}, {"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "]}, "method": "GET", "uri": "/api/v3/properties/94da2d2c-f458-4032-8549-32536e2ded1d.json?fields=id%2Cname%2Cref%2Ccreated_at%2Cupdated_at%2Cmodel_id%2Cpart_id%2Corder%2Cscope_id%2Ccategory%2Cproperty_type%2Cvalue%2Cvalue_options%2Coutput%2Cdescription%2Cunit"}, "response": {"body": {"encoding": "utf-8", "string": "{\"results\":[{\"id\":\"94da2d2c-f458-4032-8549-32536e2ded1d\",\"name\":\"__Test MAP property\",\"ref\":\"test-map-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"INSTANCE\",\"order\":13,\"unit\":\"unit of the property\",\"value_options\":{\"validators\":[{\"vtype\":\"singleReferenceValidator\",\"config\":{}}]},\"value\":[],\"created_at\":\"2025-01-22T14:20:41.529037Z\",\"updated_at\":\"2025-01-22T14:20:41.768163Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"4abf2c3b-f83e-423c-8171-bddfec6ec937\",\"output\":true}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:41 GMT"], "Content-Type": ["application/json"], "Content-Length": ["609"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, PUT, PATCH, DELETE, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 200, "message": "OK"}, "url": "/api/v3/properties/94da2d2c-f458-4032-8549-32536e2ded1d.json?fields=id%2Cname%2Cref%2Ccreated_at%2Cupdated_at%2Cmodel_id%2Cpart_id%2Corder%2Cscope_id%2Ccategory%2Cproperty_type%2Cvalue%2Cvalue_options%2Coutput%2Cdescription%2Cunit"}, "recorded_at": "2025-01-22T14:20:41"}, {"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "], "Content-Length": ["0"]}, "method": "DELETE", "uri": "/api/v3/properties/4abf2c3b-f83e-423c-8171-bddfec6ec937.json"}, "response": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:42 GMT"], "Content-Type": ["application/json"], "Content-Length": ["14"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, PUT, PATCH, DELETE, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 204, "message": "No Content"}, "url": "/api/v3/properties/4abf2c3b-f83e-423c-8171-bddfec6ec937.json"}, "recorded_at": "2025-01-22T14:20:42"}], "recorded_with": "betamax/0.9.0"} \ No newline at end of file diff --git a/tests/cassettes/TestMultiAttachmentProperties.test_single_stored_file_references_property_value_gets_replaces.json b/tests/cassettes/TestMultiAttachmentProperties.test_single_stored_file_references_property_value_gets_replaces.json new file mode 100644 index 00000000..99265be5 --- /dev/null +++ b/tests/cassettes/TestMultiAttachmentProperties.test_single_stored_file_references_property_value_gets_replaces.json @@ -0,0 +1 @@ +{"http_interactions": [{"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "]}, "method": "GET", "uri": "/api/v3/scopes.json?status=ACTIVE&name=Bike+Project&fields=id%2Cname%2Cref%2Ctext%2Ccreated_at%2Cupdated_at%2Cstart_date%2Cdue_date%2Cstatus%2Ccategory%2Cprogress%2Cmembers%2Cteam%2Ctags%2Cscope_options%2Cteam_id_name%2Cworkflow_root_id%2Ccatalog_root_id%2Capp_root_id%2Cproduct_model_id%2Cproduct_instance_id%2Ccatalog_model_id%2Ccatalog_instance_id%2Cproject_info&limit=2"}, "response": {"body": {"encoding": "utf-8", "string": "{\"count\":1,\"next\":null,\"previous\":null,\"results\":[{\"id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"name\":\"Bike Project\",\"ref\":\"bike-project\",\"text\":\"Project used to test Pykechain and push it to the limits\",\"status\":\"ACTIVE\",\"category\":\"USER_SCOPE\",\"created_at\":\"2019-10-22T08:06:48.874535Z\",\"updated_at\":\"2023-03-15T14:58:44.000690Z\",\"tags\":[\"bike\",\"x-scope-target\"],\"scope_options\":{\"overrideSidebar\":false,\"representations\":[{\"rtype\":\"customIcon\",\"config\":{\"displayIcon\":\"bicycle\",\"displayIconMode\":\"regular\"}}],\"customNavigation\":[]},\"team_id_name\":null,\"members\":[{\"id\":286,\"username\":\"supervisor\",\"name\":\"\",\"is_active\":true,\"email\":\"\",\"is_member\":false,\"is_manager\":false,\"is_supervisor\":true,\"is_leadmember\":false},{\"id\":3,\"username\":\"testmanager\",\"name\":\"\",\"is_active\":true,\"email\":\"\",\"is_member\":false,\"is_manager\":true,\"is_supervisor\":false,\"is_leadmember\":false},{\"id\":4,\"username\":\"testuser\",\"name\":\"User Test\",\"is_active\":true,\"email\":\"a@b.nl\",\"is_member\":true,\"is_manager\":false,\"is_supervisor\":false,\"is_leadmember\":false},{\"id\":93,\"username\":\"testlead\",\"name\":\"\",\"is_active\":true,\"email\":\"\",\"is_member\":false,\"is_manager\":false,\"is_supervisor\":false,\"is_leadmember\":true},{\"id\":1,\"username\":\"superuser\",\"name\":\"Superuser\",\"is_active\":true,\"email\":\"hostmaster+pim3-test@ke-chain.com\",\"is_member\":false,\"is_manager\":false,\"is_supervisor\":false,\"is_leadmember\":true}],\"project_info\":[],\"start_date\":null,\"due_date\":null,\"workflow_root_id\":\"010d6604-45cb-48c4-8457-63f50826a48f\",\"catalog_root_id\":\"dfe4fc50-4962-4f9a-9481-7eb2da81742a\",\"app_root_id\":\"3ba384e4-2771-4f00-a082-b28f1653d026\",\"product_model_id\":\"98849124-1949-4603-9ea2-14994ba2020a\",\"product_instance_id\":\"a6073e4b-591a-4513-b270-9fa61ab2a3c3\",\"catalog_model_id\":\"b6614c51-255a-42e9-8328-41267e13da77\",\"catalog_instance_id\":\"90a3ce91-e816-410a-bc1a-16620145af23\"}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:44 GMT"], "Content-Type": ["application/json"], "Content-Length": ["1838"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, POST, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 200, "message": "OK"}, "url": "/api/v3/scopes.json?status=ACTIVE&name=Bike+Project&fields=id%2Cname%2Cref%2Ctext%2Ccreated_at%2Cupdated_at%2Cstart_date%2Cdue_date%2Cstatus%2Ccategory%2Cprogress%2Cmembers%2Cteam%2Ctags%2Cscope_options%2Cteam_id_name%2Cworkflow_root_id%2Ccatalog_root_id%2Capp_root_id%2Cproduct_model_id%2Cproduct_instance_id%2Ccatalog_model_id%2Ccatalog_instance_id%2Cproject_info&limit=2"}, "recorded_at": "2025-01-22T14:20:44"}, {"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "]}, "method": "GET", "uri": "/api/v3/parts.json?name=Wheel&category=MODEL&limit=2&scope_id=bd5dceaa-a35e-47b0-9fc5-875410f4a56f&fields=id%2Cname%2Cref%2Cdescription%2Ccreated_at%2Cupdated_at%2Cproperties%2Ccategory%2Cclassification%2Cparent_id%2Cmultiplicity%2Cvalue_options%2Cproperty_type%2Cvalue%2Coutput%2Corder%2Cpart_id%2Cscope_id%2Cmodel_id%2Cproxy_source_id_name%2Cunit"}, "response": {"body": {"encoding": "utf-8", "string": "{\"count\":1,\"next\":null,\"previous\":null,\"results\":[{\"id\":\"e01573ed-8308-4510-a2fd-464c3cdd0a08\",\"name\":\"Wheel\",\"ref\":\"wheel\",\"description\":\"\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"multiplicity\":\"ZERO_MANY\",\"created_at\":\"2019-10-22T08:06:49.859787Z\",\"updated_at\":\"2019-10-22T08:06:49.859801Z\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"parent_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"model_id\":null,\"properties\":[{\"id\":\"63e528c9-d8c7-44b1-bbdd-93ede1b72a03\",\"name\":\"Diameter\",\"ref\":\"diameter\",\"description\":\"\",\"property_type\":\"FLOAT_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":0,\"unit\":null,\"value_options\":{},\"value\":432.1,\"created_at\":\"2019-10-22T08:06:49.874406Z\",\"updated_at\":\"2022-08-10T12:27:50.797782Z\",\"part_id\":\"e01573ed-8308-4510-a2fd-464c3cdd0a08\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"410803f0-489b-443e-a8ac-4e422fb76a43\",\"name\":\"Spokes\",\"ref\":\"spokes\",\"description\":\"\",\"property_type\":\"INT_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":1,\"unit\":null,\"value_options\":{},\"value\":0,\"created_at\":\"2019-10-22T08:06:49.897461Z\",\"updated_at\":\"2022-08-10T12:27:50.797792Z\",\"part_id\":\"e01573ed-8308-4510-a2fd-464c3cdd0a08\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"dfeb257f-6b0b-4adc-96f0-6d876d2f4c15\",\"name\":\"Rim Material\",\"ref\":\"rim-material\",\"description\":\"\",\"property_type\":\"CHAR_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":2,\"unit\":null,\"value_options\":{},\"value\":\"Adamantium\",\"created_at\":\"2019-10-22T08:06:49.921445Z\",\"updated_at\":\"2022-08-10T12:27:50.797796Z\",\"part_id\":\"e01573ed-8308-4510-a2fd-464c3cdd0a08\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"987e9a1b-102e-40d8-8e34-1ff3d915a9cd\",\"name\":\"Tire Thickness\",\"ref\":\"tire-thickness\",\"description\":\"\",\"property_type\":\"FLOAT_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":3,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.946001Z\",\"updated_at\":\"2019-10-22T08:06:49.950276Z\",\"part_id\":\"e01573ed-8308-4510-a2fd-464c3cdd0a08\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"41786848-b30e-4da5-be3e-ffb3d6081b74\",\"name\":\"Country of manufacture\",\"ref\":\"country-of-manufacture\",\"description\":\"\",\"property_type\":\"SINGLE_SELECT_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":4,\"unit\":null,\"value_options\":{\"validators\":[{\"vtype\":\"requiredFieldValidator\",\"config\":{}}],\"value_choices\":[\"United States\",\"France\",\"Germany\",\"Italy\"],\"representations\":[{\"rtype\":\"buttonRepresentation\",\"config\":{\"buttonRepresentation\":\"checkboxes\"}}]},\"value\":null,\"created_at\":\"2022-05-06T12:22:53.375562Z\",\"updated_at\":\"2022-05-06T12:22:53.383478Z\",\"part_id\":\"e01573ed-8308-4510-a2fd-464c3cdd0a08\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"57a31b7b-b0cf-4b7b-aa0d-57ff3249ae3a\",\"name\":\"Copied property instance\",\"ref\":\"copied-property-instance\",\"description\":\"description of the property\",\"property_type\":\"INT_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":5,\"unit\":\"unit of the property\",\"value_options\":{},\"value\":42,\"created_at\":\"2024-09-10T13:52:26.537159Z\",\"updated_at\":\"2024-09-10T13:52:26.547386Z\",\"part_id\":\"e01573ed-8308-4510-a2fd-464c3cdd0a08\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true}],\"output\":true}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:44 GMT"], "Content-Type": ["application/json"], "Content-Length": ["3456"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, POST, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 200, "message": "OK"}, "url": "/api/v3/parts.json?name=Wheel&category=MODEL&limit=2&scope_id=bd5dceaa-a35e-47b0-9fc5-875410f4a56f&fields=id%2Cname%2Cref%2Cdescription%2Ccreated_at%2Cupdated_at%2Cproperties%2Ccategory%2Cclassification%2Cparent_id%2Cmultiplicity%2Cvalue_options%2Cproperty_type%2Cvalue%2Coutput%2Corder%2Cpart_id%2Cscope_id%2Cmodel_id%2Cproxy_source_id_name%2Cunit"}, "recorded_at": "2025-01-22T14:20:44"}, {"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "]}, "method": "GET", "uri": "/api/v3/parts.json?name=Bike&category=MODEL&limit=2&scope_id=bd5dceaa-a35e-47b0-9fc5-875410f4a56f&fields=id%2Cname%2Cref%2Cdescription%2Ccreated_at%2Cupdated_at%2Cproperties%2Ccategory%2Cclassification%2Cparent_id%2Cmultiplicity%2Cvalue_options%2Cproperty_type%2Cvalue%2Coutput%2Corder%2Cpart_id%2Cscope_id%2Cmodel_id%2Cproxy_source_id_name%2Cunit"}, "response": {"body": {"encoding": "utf-8", "string": "{\"count\":1,\"next\":null,\"previous\":null,\"results\":[{\"id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"name\":\"Bike\",\"ref\":\"bike\",\"description\":\"\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"multiplicity\":\"ZERO_MANY\",\"created_at\":\"2019-10-22T08:06:49.168674Z\",\"updated_at\":\"2019-10-22T08:06:49.168684Z\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"parent_id\":\"98849124-1949-4603-9ea2-14994ba2020a\",\"model_id\":null,\"properties\":[{\"id\":\"8750eb0f-c6bc-4fa0-ab2f-78009601355f\",\"name\":\"Gears\",\"ref\":\"gears\",\"description\":\"\",\"property_type\":\"INT_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":0,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.210145Z\",\"updated_at\":\"2020-02-12T12:38:30.959584Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"1c50588c-37fd-4adc-9881-686a29ce59cd\",\"name\":\"Total height\",\"ref\":\"total-height\",\"description\":\"\",\"property_type\":\"FLOAT_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":1,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.248814Z\",\"updated_at\":\"2019-10-22T08:06:49.253309Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"fe0f3048-2eb3-4e38-9bb8-811e7aa9ce7b\",\"name\":\"Picture\",\"ref\":\"picture\",\"description\":\"\",\"property_type\":\"ATTACHMENT_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":2,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.285941Z\",\"updated_at\":\"2019-10-22T08:06:49.290285Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"8fdbc130-e718-43dd-86a1-c74833624ee6\",\"name\":\"Description\",\"ref\":\"description\",\"description\":\"\",\"property_type\":\"TEXT_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":3,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.324187Z\",\"updated_at\":\"2019-10-22T08:06:49.328534Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"ce87608e-926f-4c94-bbe9-1d7a33642e4a\",\"name\":\"Expiring date\",\"ref\":\"expiring-date\",\"description\":\"\",\"property_type\":\"DATETIME_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":4,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.363957Z\",\"updated_at\":\"2019-10-22T08:06:49.368629Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"ed128e59-ffab-4f66-a6c1-94061c079707\",\"name\":\"Website\",\"ref\":\"website\",\"description\":\"\",\"property_type\":\"LINK_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":5,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.406049Z\",\"updated_at\":\"2019-10-22T08:06:49.410337Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"3bc6e0b1-aa10-41a5-a829-7b500b03a2b6\",\"name\":\"Sale?\",\"ref\":\"sale\",\"description\":\"\",\"property_type\":\"BOOLEAN_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":6,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.447365Z\",\"updated_at\":\"2019-10-22T08:06:49.451781Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"b528b92d-9e51-47c3-9520-1bdbb3a891c1\",\"name\":\"sig\",\"ref\":\"sig\",\"description\":\"\",\"property_type\":\"SIGNATURE_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":7,\"unit\":null,\"value_options\":{\"representations\":[{\"rtype\":\"signature\",\"config\":{\"signature\":\"nameAndDate\"}}]},\"value\":{\"category\":\"REFERENCED\",\"classification\":\"SCOPED\",\"file\":{\"XS\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_c12ad114-b0d9-442d-be6a-0338dfd5b4cd/signature_2024-09-11_11-43-06-thumbnail-100x100-70.jpg?Expires=1737556245&Signature=WbJqWXj4vEK51IVENzGs2nRHFomwt3OYl8LwxjBfSuC5tG4ynHsXmJxQAIWd2Po0O9vTFzYbn4ub09RqS6lZEEVuUexzckHKpoqQB~U0o03G4zVLxM2LisWGgckdfNBW8sSdD3f5VBviQ7BtnrnaPbZresEdvyTRYdltzMKJQBkOYL8MOumg1tnFScFC64b-F4hDj81fMv2pteDqDStNu-6jrYeKtzfLByhRrgb8B0xRf1423u8eTR-mfgqpu1h7OsMtcbhuHG82NP3tph~JbPO1jroVMUI1YUD69Y2KG4Yoq83Mfh3-BkCnQtKCsLYrOntbr82CxzwXsWBZMHQnRQ__&Key-Pair-Id=K35XCI687NDNBJ\",\"XL\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_c12ad114-b0d9-442d-be6a-0338dfd5b4cd/signature_2024-09-11_11-43-06-crop-c0-5__0-5-2048x2048-70.jpg?Expires=1737556245&Signature=fIqtpzsNdQW0BFipzlEgL8Z1ZBLjl~PPUaghVXH9Q0LSih5SJZIWYykAFr79JMGsQhUM~j6Swe34LlnJFKjNDj17aQGbq2YdWmm-WzcyauQkf6hpHLUoTugtzNZJhvA47qqbJzGWIF0JlnxxD1UoAgZNjnlXofrtmOxYMiHiP4FR3aUl-VEbPOvG47ng2Ybk7tbQJJCe2DS692jiM20wyDeL0lMNo5t0k6q4vFbWivbnH0WwTCC9FDQV9rjnHcKcaN623DAs28i5jewkJ8b9s8wmDRytedIuyVaDM-VkshYQ56jW2Xn8v-52Kq9UvcwmZQo9vXq-OW3RmCIykrPt6w__&Key-Pair-Id=K35XCI687NDNBJ\",\"S\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_c12ad114-b0d9-442d-be6a-0338dfd5b4cd/signature_2024-09-11_11-43-06-thumbnail-320x320-70.jpg?Expires=1737556245&Signature=Z86rctYGyEa-KXXbR-ZW08QXwUzFFVo-RhHEhlgTkhABslqeCF8AG~ettOg0DPYQHjCs4k51w2dQnMFp60kavt3DLodfNT7tm7Ki7IVqGs4HBR2jWGR6Q3vVgf2HN74TZQYyBK4jg7ExE4zVieGaeDDNLi7HZ7V3-x3n2iqN17y-I-zqUxGuaxuJBV9Cp9crO36~A0VbrApkz~T~qVLca~bZ5NzM0SQf5VzFl3IZehCK0dMUqjINK4yRzURQutI6YAzkRAXUqJBN5RqhBQAiaZiFRSb2M~2FKasSLjuK-Ispa58XlG45nok4Oy7KZOsWkZcrD6HNPnwn3u0OZ3h3HQ__&Key-Pair-Id=K35XCI687NDNBJ\",\"L\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_c12ad114-b0d9-442d-be6a-0338dfd5b4cd/signature_2024-09-11_11-43-06-crop-c0-5__0-5-1024x1024-70.jpg?Expires=1737556245&Signature=XKxXEtMOEwJUb9orO8AyceTcWx1W7uL0OvatoeuG3PwJwh~ZrubkpUTqhatCeRKCwEoExiOFGukWjPj37NOHnllyYVSTBIZa5hJvKlyrpmMbGsTA9GYaSBUQhikUAkKWUiDO7OCzGUjFMQ-FAtyyZCcGV0VJCohL4Mn25VlLp9CIUA0Lf7qEdpU3oPTqxfUsMSMeuk-Ngrz~FzD7rMHuIvA4fmdH0osrFeQk6xwTb0kSEK1~LlrCabWqQ8YmLrM8ADM7RJ0GU~pmTgO2AkWjUYxrtF2he-WEr~SgZyPGtbNciE60aCmvzhBGirmp3SXYdh5zeud4mr6LQYMv0iCCVQ__&Key-Pair-Id=K35XCI687NDNBJ\",\"M\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_c12ad114-b0d9-442d-be6a-0338dfd5b4cd/signature_2024-09-11_11-43-06-crop-c0-5__0-5-640x640-70.jpg?Expires=1737556245&Signature=M1f~Uh7c~k7wxmMK4axIG7RFKAJrMW4wjFz~e1A0yZhf4YedtkK~9~FfU~pXhDMVzoJYQ5CMlGRdVPQG08RIwMcwURbOMQ2TiWaJlBvSLY0Vhnbbwz5rFIR-rsBy1SOlgAeHaRUESxqCSHXXbNww05aoag22zZuEAp5gaOjVLE1TerO0IlCzSi0fskr-gCy8qJ3cPdoQd26ypol71X6qolwsadDORQZdIjr8v5jKDiXeT1hn3WBoFvimvGZJqHEQ~M44Mh~udGDi-HqUP546ks91U~E-A0yIHva~dn7dbwMOvle1GMuYmtaoftSSSk8TpFw5QRnvz8MD~PKGvbuqMQ__&Key-Pair-Id=K35XCI687NDNBJ\",\"full_size\":\"https://media.cdn.ke-chain.com/pim3-test/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_c12ad114-b0d9-442d-be6a-0338dfd5b4cd/signature_2024-09-11_11-43-06?Expires=1737556245&Signature=DWcMU~QbYMXavzIolYyfQhMbxzys5RL-v6LSazIce5BC1SVLekEWaiGaX2~RbriQk6DRq6zglc~QQP13I9aGTVlHAgG42C03JoYpd~mLG8y2yoDx9YBJ6WQyKj7SKJ-4VvcwK0uOhOFruWMZGBRl5QHvUIiB0rkb-wHSGpovsp7h05qK5SILxy0iFclNSuoo3N5mQ2oEqcX-52E1Fg7iz~l27cjexRFhMqaioyEZzifc~0sGYDItBsZpFERKDdIVj-Ia3K54CAStYv4Ct9TiBKuYUWBJARm94oasXuesY336-RB9fDUDRXNvCavAUXQ40KgZFbrq7Ou-nHL-yVF8nQ__&Key-Pair-Id=K35XCI687NDNBJ\"},\"id\":\"c12ad114-b0d9-442d-be6a-0338dfd5b4cd\",\"name\":\"signature_2024-09-11_11-43-06\",\"scope\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"property_id\":null},\"created_at\":\"2024-09-11T09:41:33.341683Z\",\"updated_at\":\"2024-09-11T09:43:07.629482Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"c68cbc60-0c6f-40df-ad40-ae3506e70c31\",\"name\":\"__Test property\",\"ref\":\"test-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":8,\"unit\":\"unit of the property\",\"value_options\":{},\"value\":[],\"created_at\":\"2025-01-22T13:24:31.981775Z\",\"updated_at\":\"2025-01-22T13:24:31.981781Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"b946df83-3bfa-4731-ad40-d63cec9e1450\",\"name\":\"__Test property\",\"ref\":\"test-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":9,\"unit\":\"unit of the property\",\"value_options\":{},\"value\":[],\"created_at\":\"2025-01-22T13:25:04.059162Z\",\"updated_at\":\"2025-01-22T13:25:04.066442Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"950cb70b-85c3-4d11-b7b9-35665f63a980\",\"name\":\"__Test property\",\"ref\":\"test-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":10,\"unit\":\"unit of the property\",\"value_options\":{},\"value\":[],\"created_at\":\"2025-01-22T13:26:23.191756Z\",\"updated_at\":\"2025-01-22T13:26:23.200584Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"2f31bc8f-b679-488f-8ea5-c3a5f43dc448\",\"name\":\"__Test property\",\"ref\":\"test-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":11,\"unit\":\"unit of the property\",\"value_options\":{},\"value\":[],\"created_at\":\"2025-01-22T13:26:27.122549Z\",\"updated_at\":\"2025-01-22T13:26:27.128557Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true},{\"id\":\"e20dfb6d-31fe-4a26-99cf-563cf8a6f5c5\",\"name\":\"__Test property\",\"ref\":\"test-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"MODEL\",\"classification\":\"PRODUCT\",\"order\":12,\"unit\":\"unit of the property\",\"value_options\":{\"validators\":[{\"vtype\":\"singleReferenceValidator\",\"config\":{}}]},\"value\":[],\"created_at\":\"2025-01-22T13:26:53.532776Z\",\"updated_at\":\"2025-01-22T13:26:53.704624Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true}],\"output\":true}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:45 GMT"], "Content-Type": ["application/json"], "Content-Length": ["10528"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, POST, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 200, "message": "OK"}, "url": "/api/v3/parts.json?name=Bike&category=MODEL&limit=2&scope_id=bd5dceaa-a35e-47b0-9fc5-875410f4a56f&fields=id%2Cname%2Cref%2Cdescription%2Ccreated_at%2Cupdated_at%2Cproperties%2Ccategory%2Cclassification%2Cparent_id%2Cmultiplicity%2Cvalue_options%2Cproperty_type%2Cvalue%2Coutput%2Corder%2Cpart_id%2Cscope_id%2Cmodel_id%2Cproxy_source_id_name%2Cunit"}, "recorded_at": "2025-01-22T14:20:45"}, {"request": {"body": {"encoding": "utf-8", "string": "{\"name\": \"__Test MAP property\", \"part_id\": \"e4a047a6-4a00-41a6-bae4-732ac2f639de\", \"description\": \"description of the property\", \"property_type\": \"STOREDFILE_REFERENCES_VALUE\", \"value\": null, \"unit\": \"unit of the property\", \"value_options\": {}}"}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "], "Content-Length": ["244"], "Content-Type": ["application/json"]}, "method": "POST", "uri": "/api/v3/properties/create_model?validators=%3Cclass+%27pykechain.models.validators.validators.SingleReferenceValidator%27%3E&fields=id%2Cname%2Cref%2Ccreated_at%2Cupdated_at%2Cmodel_id%2Cpart_id%2Corder%2Cscope_id%2Ccategory%2Cproperty_type%2Cvalue%2Cvalue_options%2Coutput%2Cdescription%2Cunit"}, "response": {"body": {"encoding": "utf-8", "string": "{\"results\":[{\"id\":\"e440f330-fd36-4421-810e-510f166ffe12\",\"name\":\"__Test MAP property\",\"ref\":\"test-map-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"MODEL\",\"order\":13,\"unit\":\"unit of the property\",\"value_options\":{},\"value\":[],\"created_at\":\"2025-01-22T14:20:45.106627Z\",\"updated_at\":\"2025-01-22T14:20:45.112331Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:45 GMT"], "Content-Type": ["application/json"], "Content-Length": ["509"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["POST, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 201, "message": "Created"}, "url": "/api/v3/properties/create_model?validators=%3Cclass+%27pykechain.models.validators.validators.SingleReferenceValidator%27%3E&fields=id%2Cname%2Cref%2Ccreated_at%2Cupdated_at%2Cmodel_id%2Cpart_id%2Corder%2Cscope_id%2Ccategory%2Cproperty_type%2Cvalue%2Cvalue_options%2Coutput%2Cdescription%2Cunit"}, "recorded_at": "2025-01-22T14:20:45"}, {"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "]}, "method": "GET", "uri": "/api/v3/parts.json?category=INSTANCE&limit=100&model_id=e4a047a6-4a00-41a6-bae4-732ac2f639de&fields=id%2Cname%2Cref%2Cdescription%2Ccreated_at%2Cupdated_at%2Cproperties%2Ccategory%2Cclassification%2Cparent_id%2Cmultiplicity%2Cvalue_options%2Cproperty_type%2Cvalue%2Coutput%2Corder%2Cpart_id%2Cscope_id%2Cmodel_id%2Cproxy_source_id_name%2Cunit"}, "response": {"body": {"encoding": "utf-8", "string": "{\"count\":1,\"next\":null,\"previous\":null,\"results\":[{\"id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"name\":\"Bike\",\"ref\":\"bike\",\"description\":\"\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"multiplicity\":\"ZERO_MANY\",\"created_at\":\"2019-10-22T08:06:49.178518Z\",\"updated_at\":\"2019-10-22T08:06:49.178529Z\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"parent_id\":\"a6073e4b-591a-4513-b270-9fa61ab2a3c3\",\"model_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"properties\":[{\"id\":\"8a6b873c-b1ca-4aae-b896-3895e20089bd\",\"name\":\"Gears\",\"ref\":\"gears\",\"description\":\"\",\"property_type\":\"INT_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":0,\"unit\":null,\"value_options\":{},\"value\":419,\"created_at\":\"2019-10-22T08:06:49.222935Z\",\"updated_at\":\"2023-10-04T07:15:37.712520Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"8750eb0f-c6bc-4fa0-ab2f-78009601355f\",\"output\":true},{\"id\":\"e69cf175-14bf-41b3-bb08-553f1a0294ac\",\"name\":\"Total height\",\"ref\":\"total-height\",\"description\":\"\",\"property_type\":\"FLOAT_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":1,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.259956Z\",\"updated_at\":\"2020-04-08T19:53:10.199306Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"1c50588c-37fd-4adc-9881-686a29ce59cd\",\"output\":true},{\"id\":\"cd72a3f9-71a8-42a9-bbbe-4a994db423f3\",\"name\":\"Picture\",\"ref\":\"picture\",\"description\":\"\",\"property_type\":\"ATTACHMENT_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":2,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.297090Z\",\"updated_at\":\"2022-08-10T12:27:52.460502Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"fe0f3048-2eb3-4e38-9bb8-811e7aa9ce7b\",\"output\":true},{\"id\":\"7a8462f2-1c3c-43e3-91d4-77998ce3a276\",\"name\":\"Description\",\"ref\":\"description\",\"description\":\"\",\"property_type\":\"TEXT_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":3,\"unit\":null,\"value_options\":{},\"value\":\"6660-0178-001\",\"created_at\":\"2019-10-22T08:06:49.335910Z\",\"updated_at\":\"2021-09-28T07:22:00.074817Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"8fdbc130-e718-43dd-86a1-c74833624ee6\",\"output\":true},{\"id\":\"da778535-dabd-4665-bcc1-c848b529b4c5\",\"name\":\"Expiring date\",\"ref\":\"expiring-date\",\"description\":\"\",\"property_type\":\"DATETIME_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":4,\"unit\":null,\"value_options\":{},\"value\":\"2022-03-21T23:20:00+00:00\",\"created_at\":\"2019-10-22T08:06:49.375322Z\",\"updated_at\":\"2022-03-22T09:45:55.670593Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"ce87608e-926f-4c94-bbe9-1d7a33642e4a\",\"output\":true},{\"id\":\"1f354e76-181c-459b-afae-ce82f97f9579\",\"name\":\"Website\",\"ref\":\"website\",\"description\":\"\",\"property_type\":\"LINK_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":5,\"unit\":null,\"value_options\":{},\"value\":null,\"created_at\":\"2019-10-22T08:06:49.416946Z\",\"updated_at\":\"2021-09-28T07:23:50.233290Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"ed128e59-ffab-4f66-a6c1-94061c079707\",\"output\":true},{\"id\":\"65e1fac1-7a76-4b05-bee3-d1f1c866519c\",\"name\":\"Sale?\",\"ref\":\"sale\",\"description\":\"\",\"property_type\":\"BOOLEAN_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":6,\"unit\":null,\"value_options\":{},\"value\":true,\"created_at\":\"2019-10-22T08:06:49.458908Z\",\"updated_at\":\"2021-03-29T13:02:00.167147Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"3bc6e0b1-aa10-41a5-a829-7b500b03a2b6\",\"output\":true},{\"id\":\"21bb6395-298a-4235-acf9-26ad8e186578\",\"name\":\"sig\",\"ref\":\"sig\",\"description\":\"\",\"property_type\":\"SIGNATURE_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":7,\"unit\":null,\"value_options\":{\"representations\":[{\"rtype\":\"signature\",\"config\":{\"signature\":\"nameAndDate\"}}]},\"value\":null,\"created_at\":\"2024-09-11T09:41:33.450752Z\",\"updated_at\":\"2024-09-11T09:41:33.475627Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"b528b92d-9e51-47c3-9520-1bdbb3a891c1\",\"output\":true},{\"id\":\"be3029b0-3ccd-4512-9ef8-5de7221b1a5d\",\"name\":\"__Test property\",\"ref\":\"test-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":9,\"unit\":\"unit of the property\",\"value_options\":{},\"value\":[],\"created_at\":\"2025-01-22T13:25:04.140124Z\",\"updated_at\":\"2025-01-22T13:25:04.149294Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"b946df83-3bfa-4731-ad40-d63cec9e1450\",\"output\":true},{\"id\":\"ff59ad09-b7d6-4e05-825e-aa29b57a343d\",\"name\":\"__Test property\",\"ref\":\"test-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":10,\"unit\":\"unit of the property\",\"value_options\":{},\"value\":[],\"created_at\":\"2025-01-22T13:26:23.227449Z\",\"updated_at\":\"2025-01-22T13:26:23.234935Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"950cb70b-85c3-4d11-b7b9-35665f63a980\",\"output\":true},{\"id\":\"3d67d6bd-abe7-4b64-ae3b-6cf6d1f4bd05\",\"name\":\"__Test property\",\"ref\":\"test-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":11,\"unit\":\"unit of the property\",\"value_options\":{},\"value\":[],\"created_at\":\"2025-01-22T13:26:27.154272Z\",\"updated_at\":\"2025-01-22T13:26:27.162271Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"2f31bc8f-b679-488f-8ea5-c3a5f43dc448\",\"output\":true},{\"id\":\"1650d366-7322-4423-9918-07c2dc08d8af\",\"name\":\"__Test property\",\"ref\":\"test-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":12,\"unit\":\"unit of the property\",\"value_options\":{\"validators\":[{\"vtype\":\"singleReferenceValidator\",\"config\":{}}]},\"value\":[],\"created_at\":\"2025-01-22T13:26:53.567722Z\",\"updated_at\":\"2025-01-22T13:26:53.727219Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"e20dfb6d-31fe-4a26-99cf-563cf8a6f5c5\",\"output\":true},{\"id\":\"62b8cadc-e963-4a9a-ad87-1a8a8f9d6bb8\",\"name\":\"__Test MAP property\",\"ref\":\"test-map-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"INSTANCE\",\"classification\":\"PRODUCT\",\"order\":13,\"unit\":\"unit of the property\",\"value_options\":{},\"value\":[],\"created_at\":\"2025-01-22T14:20:45.138292Z\",\"updated_at\":\"2025-01-22T14:20:45.146446Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"e440f330-fd36-4421-810e-510f166ffe12\",\"output\":true}],\"output\":true}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:45 GMT"], "Content-Type": ["application/json"], "Content-Length": ["7271"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, POST, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 200, "message": "OK"}, "url": "/api/v3/parts.json?category=INSTANCE&limit=100&model_id=e4a047a6-4a00-41a6-bae4-732ac2f639de&fields=id%2Cname%2Cref%2Cdescription%2Ccreated_at%2Cupdated_at%2Cproperties%2Ccategory%2Cclassification%2Cparent_id%2Cmultiplicity%2Cvalue_options%2Cproperty_type%2Cvalue%2Coutput%2Corder%2Cpart_id%2Cscope_id%2Cmodel_id%2Cproxy_source_id_name%2Cunit"}, "recorded_at": "2025-01-22T14:20:45"}, {"request": {"body": {"encoding": "utf-8", "string": "{\"value_options\": {\"validators\": [{\"vtype\": \"singleReferenceValidator\", \"config\": {}}]}, \"id\": \"e440f330-fd36-4421-810e-510f166ffe12\"}"}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "], "Content-Length": ["134"], "Content-Type": ["application/json"]}, "method": "PUT", "uri": "/api/v3/properties/e440f330-fd36-4421-810e-510f166ffe12.json?fields=id%2Cname%2Cref%2Ccreated_at%2Cupdated_at%2Cmodel_id%2Cpart_id%2Corder%2Cscope_id%2Ccategory%2Cproperty_type%2Cvalue%2Cvalue_options%2Coutput%2Cdescription%2Cunit"}, "response": {"body": {"encoding": "utf-8", "string": "{\"results\":[{\"id\":\"e440f330-fd36-4421-810e-510f166ffe12\",\"name\":\"__Test MAP property\",\"ref\":\"test-map-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"MODEL\",\"order\":13,\"unit\":\"unit of the property\",\"value_options\":{\"validators\":[{\"vtype\":\"singleReferenceValidator\",\"config\":{}}]},\"value\":[],\"created_at\":\"2025-01-22T14:20:45.106627Z\",\"updated_at\":\"2025-01-22T14:20:45.359653Z\",\"part_id\":\"e4a047a6-4a00-41a6-bae4-732ac2f639de\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":null,\"output\":true}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:45 GMT"], "Content-Type": ["application/json"], "Content-Length": ["572"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, PUT, PATCH, DELETE, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 200, "message": "OK"}, "url": "/api/v3/properties/e440f330-fd36-4421-810e-510f166ffe12.json?fields=id%2Cname%2Cref%2Ccreated_at%2Cupdated_at%2Cmodel_id%2Cpart_id%2Corder%2Cscope_id%2Ccategory%2Cproperty_type%2Cvalue%2Cvalue_options%2Coutput%2Cdescription%2Cunit"}, "recorded_at": "2025-01-22T14:20:45"}, {"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "]}, "method": "GET", "uri": "/api/v3/properties/62b8cadc-e963-4a9a-ad87-1a8a8f9d6bb8.json?fields=id%2Cname%2Cref%2Ccreated_at%2Cupdated_at%2Cmodel_id%2Cpart_id%2Corder%2Cscope_id%2Ccategory%2Cproperty_type%2Cvalue%2Cvalue_options%2Coutput%2Cdescription%2Cunit"}, "response": {"body": {"encoding": "utf-8", "string": "{\"results\":[{\"id\":\"62b8cadc-e963-4a9a-ad87-1a8a8f9d6bb8\",\"name\":\"__Test MAP property\",\"ref\":\"test-map-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"INSTANCE\",\"order\":13,\"unit\":\"unit of the property\",\"value_options\":{\"validators\":[{\"vtype\":\"singleReferenceValidator\",\"config\":{}}]},\"value\":[],\"created_at\":\"2025-01-22T14:20:45.138292Z\",\"updated_at\":\"2025-01-22T14:20:45.382789Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"e440f330-fd36-4421-810e-510f166ffe12\",\"output\":true}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:45 GMT"], "Content-Type": ["application/json"], "Content-Length": ["609"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, PUT, PATCH, DELETE, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 200, "message": "OK"}, "url": "/api/v3/properties/62b8cadc-e963-4a9a-ad87-1a8a8f9d6bb8.json?fields=id%2Cname%2Cref%2Ccreated_at%2Cupdated_at%2Cmodel_id%2Cpart_id%2Corder%2Cscope_id%2Ccategory%2Cproperty_type%2Cvalue%2Cvalue_options%2Coutput%2Cdescription%2Cunit"}, "recorded_at": "2025-01-22T14:20:45"}, {"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "]}, "method": "GET", "uri": "/api/v3/scopes.json?id=bd5dceaa-a35e-47b0-9fc5-875410f4a56f&fields=id%2Cname%2Cref%2Ctext%2Ccreated_at%2Cupdated_at%2Cstart_date%2Cdue_date%2Cstatus%2Ccategory%2Cprogress%2Cmembers%2Cteam%2Ctags%2Cscope_options%2Cteam_id_name%2Cworkflow_root_id%2Ccatalog_root_id%2Capp_root_id%2Cproduct_model_id%2Cproduct_instance_id%2Ccatalog_model_id%2Ccatalog_instance_id%2Cproject_info&limit=2"}, "response": {"body": {"encoding": "utf-8", "string": "{\"count\":1,\"next\":null,\"previous\":null,\"results\":[{\"id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"name\":\"Bike Project\",\"ref\":\"bike-project\",\"text\":\"Project used to test Pykechain and push it to the limits\",\"status\":\"ACTIVE\",\"category\":\"USER_SCOPE\",\"created_at\":\"2019-10-22T08:06:48.874535Z\",\"updated_at\":\"2023-03-15T14:58:44.000690Z\",\"tags\":[\"bike\",\"x-scope-target\"],\"scope_options\":{\"overrideSidebar\":false,\"representations\":[{\"rtype\":\"customIcon\",\"config\":{\"displayIcon\":\"bicycle\",\"displayIconMode\":\"regular\"}}],\"customNavigation\":[]},\"team_id_name\":null,\"members\":[{\"id\":286,\"username\":\"supervisor\",\"name\":\"\",\"is_active\":true,\"email\":\"\",\"is_member\":false,\"is_manager\":false,\"is_supervisor\":true,\"is_leadmember\":false},{\"id\":3,\"username\":\"testmanager\",\"name\":\"\",\"is_active\":true,\"email\":\"\",\"is_member\":false,\"is_manager\":true,\"is_supervisor\":false,\"is_leadmember\":false},{\"id\":4,\"username\":\"testuser\",\"name\":\"User Test\",\"is_active\":true,\"email\":\"a@b.nl\",\"is_member\":true,\"is_manager\":false,\"is_supervisor\":false,\"is_leadmember\":false},{\"id\":93,\"username\":\"testlead\",\"name\":\"\",\"is_active\":true,\"email\":\"\",\"is_member\":false,\"is_manager\":false,\"is_supervisor\":false,\"is_leadmember\":true},{\"id\":1,\"username\":\"superuser\",\"name\":\"Superuser\",\"is_active\":true,\"email\":\"hostmaster+pim3-test@ke-chain.com\",\"is_member\":false,\"is_manager\":false,\"is_supervisor\":false,\"is_leadmember\":true}],\"project_info\":[],\"start_date\":null,\"due_date\":null,\"workflow_root_id\":\"010d6604-45cb-48c4-8457-63f50826a48f\",\"catalog_root_id\":\"dfe4fc50-4962-4f9a-9481-7eb2da81742a\",\"app_root_id\":\"3ba384e4-2771-4f00-a082-b28f1653d026\",\"product_model_id\":\"98849124-1949-4603-9ea2-14994ba2020a\",\"product_instance_id\":\"a6073e4b-591a-4513-b270-9fa61ab2a3c3\",\"catalog_model_id\":\"b6614c51-255a-42e9-8328-41267e13da77\",\"catalog_instance_id\":\"90a3ce91-e816-410a-bc1a-16620145af23\"}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:45 GMT"], "Content-Type": ["application/json"], "Content-Length": ["1838"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, POST, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 200, "message": "OK"}, "url": "/api/v3/scopes.json?id=bd5dceaa-a35e-47b0-9fc5-875410f4a56f&fields=id%2Cname%2Cref%2Ctext%2Ccreated_at%2Cupdated_at%2Cstart_date%2Cdue_date%2Cstatus%2Ccategory%2Cprogress%2Cmembers%2Cteam%2Ctags%2Cscope_options%2Cteam_id_name%2Cworkflow_root_id%2Ccatalog_root_id%2Capp_root_id%2Cproduct_model_id%2Cproduct_instance_id%2Ccatalog_model_id%2Ccatalog_instance_id%2Cproject_info&limit=2"}, "recorded_at": "2025-01-22T14:20:45"}, {"request": {"body": {"encoding": "utf-8", "string": "--86cf9fa2f997c3eca2013129cd766627\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\ntest_upload_image.png\r\n--86cf9fa2f997c3eca2013129cd766627\r\nContent-Disposition: form-data; name=\"scope\"\r\n\r\nbd5dceaa-a35e-47b0-9fc5-875410f4a56f\r\n--86cf9fa2f997c3eca2013129cd766627\r\nContent-Disposition: form-data; name=\"category\"\r\n\r\nREFERENCED\r\n--86cf9fa2f997c3eca2013129cd766627\r\nContent-Disposition: form-data; name=\"classification\"\r\n\r\nSCOPED\r\n--86cf9fa2f997c3eca2013129cd766627\r\nContent-Disposition: form-data; name=\"file\"; filename=\"test_upload_image.png\"\r\n\r\n\ufffd\ufffd\ufffd\ufffd\u0000\u0010JFIF\u0000\u0001\u0001\u0000\u0000\u0001\u0000\u0001\u0000\u0000\ufffd\ufffd\u0000C\u0000\u0006\u0004\u0005\u0006\u0005\u0004\u0006\u0006\u0005\u0006\u0007\u0007\u0006\b\n\u0010\n\n\t\t\n\u0014\u000e\u000f\f\u0010\u0017\u0014\u0018\u0018\u0017\u0014\u0016\u0016\u001a\u001d%\u001f\u001a\u001b#\u001c\u0016\u0016 , #&')*)\u0019\u001f-0-(0%()(\ufffd\ufffd\u0000C\u0001\u0007\u0007\u0007\n\b\n\u0013\n\n\u0013(\u001a\u0016\u001a((((((((((((((((((((((((((((((((((((((((((((((((((\ufffd\ufffd\u0000\u0011\b\u0000i\u0000\ufffd\u0003\u0001\"\u0000\u0002\u0011\u0001\u0003\u0011\u0001\ufffd\ufffd\u0000\u001b\u0000\u0000\u0002\u0002\u0003\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0004\u0005\u0003\u0006\u0000\u0002\u0007\u0001\ufffd\ufffd\u0000E\u0010\u0000\u0002\u0001\u0002\u0004\u0005\u0001\u0003\u0007\b\t\u0003\u0005\u0000\u0000\u0000\u0001\u0002\u0003\u0004\u0011\u0000\u0005\u0012!\u0006\u00131AQa\u0014\"q\u00072B\ufffd\ufffd\ufffd\ufffd#356rt\ufffd\ufffd\u001547bs\ufffd\ufffd\ufffd\ufffd\u0016\ufffd\ufffd\u0017$Ru\ufffd\ufffd\ufffd\u0000\u001b\u0001\u0000\u0003\u0001\u0001\u0001\u0001\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0002\u0003\u0004\u0001\u0000\u0005\u0006\u0007\ufffd\ufffd\u00000\u0011\u0000\u0001\u0003\u0002\u0002\u0007\b\u0002\u0003\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0000\u0002\u0011\u0003!\u00121\u0004\u0005\u0013A\ufffd\ufffd\ufffd\u0014\"aq\ufffd\ufffd\ufffd\ufffd2Q\u0015#\ufffdR\ufffd\ufffd\u0000\f\u0003\u0001\u0000\u0002\u0011\u0003\u0011\u0000?\u0000m\u001d8\ufffd\ufffd\u000fL\u001c\ufffdzbQ\u0007\ufffd>\ufffd\ufffd_\ufffd6\ufffd%\ufffd\u000fL{\ufffd\ufffd\u0011\u000e=\ufffd\ufffdq\ufffdl\ufffd\ufffdN3\ufffd\ufffd\\\ufffdLg'\ufffd\u001d\ufffdn\ufffd-\ufffdc\ufffdV\u0018\u0018}1\ufffd'\ufffd\u001b\ufffdv\ufffd\u0001\ufffd\ufffd\ufffd\ufffd<\u001b\ufffd\u01e2,f5\ufffd\ufffdU\ufffd\u0012\ufffd~\ufffd!b\ufffd\u0129\u0017\ufffd\u0004\ufffd1\ufffdP$~\ufffd\ufffd#\ufffd\ufffd\ufffd\u001e%X\ufffd\ufffd\ufffdD\ufffd\ufffd\u00111\ufffdG\ufffd\ufffd<,\ufffd9\ufffdZ\ufffdbu\\b.&U\u008b\ufffd\ufffd\u0017\ufffd\ufffd\ufffdW\u001e\ufffd\ufffd\ufffdad\ufffd\ufffd\ufffd\u000b\ufffd\ufffd\ufffd\ufffd\u0018\ufffd\ufffd\ufffd\ufffd\ufffd\u0003YUO\u0005\ufffd#\ufffd [\ufffd\ufffd8Ytf\ufffd\tR\ufffd\u01daq[\ufffd\ufffd\ufffd\u0000\ufffdr\u5f39\ufffdR\ufffd:\ufffdN\f\ufffd\u001e\ufffd6\ufffdC2\ufffd`\ufffd\ufffd.M\ufffd4\ufffd\ufffd5L\ufffdw\ufffd\ufffd\ufffd\u315a\ufffd\u001b\ufffd[A\ufffd\ufffd.\ufffd\ufffd-\ufffd\ufffd\u000e\ufffd~W3\ufffdc\u000b\f4\u0014\ufffdK\ufffd\ufffd\u001a\ufffd\ufffd}.m\u007f\ufffd\ufffd\ufffd\ufffd\ufffd\u0004\ufffd\ufffdT+\ufffd,\u001e\ufffd\ufffdA\ufffd\u0016\u0645}]Pz\ufffd\ufffd\ufffd\ufffd?t\ufffd\ufffd\u04a0\u0001\ufffd[\ufffdw\ufffdL;\ufffd\u03e6\ufffd\f\ufffdT\ufffd\ufffdeL1\ufffd\ufffdL\ufffdJ\ufffd=C\u0003\ufffd[\r\ufffd\ufffd\ufffd\u01bcd\u0768\u007f\ufffdtY\ufffdu\ufffdO\ufffd^%AweQ\ufffd\ufffdlr\u0014\ufffd|\ufffddC\f\ufffd\b\r\ufffdF`\ufffd\ufffdbI7\ufffdo\ufffdc\ufffd\ufffd\ufffd3h\u0015cfZ\ufffdQ\ufffd\u03a4\u0005A\u0004w\"\ufffdm\u04e6\ufffd\u0017k\ufffd\u001d\ufffdsF\ufffdHg\ufffd\ufffdK\ufffd-E#N!I\ufffd\ufffd-\ufffd*\u001b\ufffd\ufffd\u0012@\ufffdT\u00050J\ufffdu\ufffd,w\ufffd\ufffd\ufffd\u001c\ufffds:\u001a\ufffdh)\ufffd\ufffdn\ufffd\u0101\ufffd\ufffd\ufffd~\ufffdaG\ufffd\ufffd\u000b\ufffd\ufffd\u0006\ufffd7\u0011\ufffd\u001d/\ufffd\ufffd\u0004\u0003\ufffd\ufffd\u00125\ufffdY\ufffd\ufffd\n\ufffd\ufffd(a\ufffd\ufffd<\u0015\ufffd\ufffd\ufffd1\ufffd>1To\ufffd\ufffd^%\ufffd\ufffd\u000b\ufffd*c\u0012\ufffdV\ufffd\ufffd\u0006\ufffd}w\u00dc\ufffd\ufffd\ufffdbz\ufffd5\u0019\ufffd\ufffdy\ufffdu\ufffdGN\ufffd|c\u04e5\ufffdhT\ufffd\u001ek\u02ab\ufffd\ufffdS\ufffd>I\ufffd\ufffd\ufffdc=\ufffd\ufffd\fr\ufffd\ufffd3*~}\f\ufffd\ufffd\u0016\ufffdR\u001f\u0018\ufffd(n\ufffd\u059eKtCp<\\\ufffd\u0018\ufffd\ufffd[\u001a1\u0013e;4G\ufffd\ufffdZ.\ufffd\ufffd=1\u001b\ufffdM\u0014\ufffd\f\ufffd\u0010\ufffd+\ufffd\ufffd\u0001?V&\ufffd\ufffd\ufffd$\ufffdj\ufffd\ufffd\ufffd5\ufffd\u0002\ufffdI\u048a6\ufffd\u000b\ufffd \u001bn|\ufffd\ufffd\u0000Ld\ufffdf\ufffdf\ufffd\ufffd\u065dr\ufffd\ufffd\ufffd\u0005\ufffd\ufffdH\ufffd6\ufffdXm\ufffd2\ufffd\ufffd\ufffd\ufffd\u0017\ufffdGR\ufffd\ufffd\ufffdw\u0000\ufffd\u0012f\ufffds>\ufffd\ua104\u0012\tE,\ufffd\u007fxm\ufffdq\ufffd\u0018]w\ufffd\ufffd\u0003\ufffds\ufffd\ufffd?\ufffde\ufffd\u0011$\ufffd/m\u001aI\u001e\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd&\ufffd\ufffd\ufffd\ufffd4\u0006HR;\ufffdk\ufffdm\ufffd\ufffd\u001dw\ufffdn\ufffd\ufffd\ufffd\ufffd\ufffd?+\ufffd\ufffdjz.\u001f\ufffdc\ufffdF\ufffdX\ufffdb\ufffd!\ufffd\ufffd\ufffdJ\ufffd\ufffd\ufffd\ufffd]j\u0019\ufffd\ufffd#\u0006;\ufffd\ufffd%\ufffd}\ufffd\r\u04ca\ufffd]W\u0015&}\u0002B\ufffdl&[\ufffd\ufffd\ufffd[\ufffd\u014d\ufffd4\ufffdce\ufffdU\ufffde\ufffd\u001f%dX\ufffd(\ufffd\u000bi8\ufffd\ufffd*A1\ufffd4B\ufffdI\u000f&\ufffd\u007f\ufffd\u000b8\ufffd\ufffd\u0013!\u1b26:\ufffdj\"\u032af:`\ufffd\ufffd\ufffd37\ufffdO\ufffdQ\ufffd\ufffdXohi\ufffd)\u0003Gt\ufffd+3(Dgr\u0015\u0014]\ufffd\ufffd\ufffd\u001eI\ufffdO\u0011\ufffd\ufffdd\u0019$\ufffdS\ufffd\ufffd]R\ufffd\u001d4\ufffd\ufffdI\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0012\ufffd>;\ufffd8\ufffd\u0135\ufffd\ufffd4ks\uc537T\ufffd\u9bfb\u001e\ufffdl1Y\ufffd0\ufffd\ufffd\ufffd\ufffd;\u0017\ufffd,\ufffd^\ufffd\ufffd\ufffd\ufffd3\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0017r\ufffd\u0019\ufffd\ufffd]o\ufffd(\ufffd\ufffd\ufffda\ufffdV\u0765&F}\ufffd[a\ufffdx\ufffd;\ufffds\ufffd\ufffd8\ufffdj\ufffd\u00b6Z\ufffd\ufffd\ufffd\u0001{(\u0003\ufffd\ufffd\u0000\ufffda\ufffd\t\u001c\ufffd\ufffd\ufffd\f\u1159\ufffd\u001e\ufffd_n\ufffd\ufffd%\ufffd\ufffd^*h\ufffd0l\u0019\ufffd\ufffdO\ufffda\u000f.z\ufffd\ufffd\u0018\u0302\ufffd\ufffd\ufffd&\u0010\ufffd*0a\ufffdF%A=\ufffd\ufffd\u0191O5\u0013\ufffd\ufffd\ufffd\ufffd\ufffd`\ufffd\u0016!\ufffd\ufffd\ufffdd\ufffd\u001e\u001av\ufffd\ufffdBUw7\u0017\ufffd\ufffd_\u001bSP\ufffd<,\ufffdT\ufffd\ufffd\ufffd\ufffd\u0005\ufffd\u001c/\u0001\u0016\ufffd\ufffd[\ufffd-4i\"]H\ufffd>s\u0002>\ufffd\ufffd\ufffd\u04f4\u0014\ufffd$|\ufffd\ufffdQ\u0018/\ufffd\u0018\ufffd\ufffdlf\u0012\ufffd'4`+\ufffd\ufffd\ufffd+\ufffdd:U\ufffd_}\ufffd\u000e\ufffd\ufffd\ufffd\u001cN\ufffdS\t}\ufffd\ufffd\ufffd`\u0000\ufffd\"\u0013h\ufffd\u001b\ufffd\ufffd\ufffdc\ufffd\u007f\ufffd\u0007\u000e-O8f\ufffd\bJ\u9c1b\u0777\ufffd\ufffdu\ufffd|\ufffd\ufffdT\ufffdC$9\ufffd\ufffd\ufffd*\ufffd9\ufffdH \ufffdlW|yf\u0000\ufffdU\u0006\ufffd\ufffd\ufffd\ufffd\u0358\ufffd\ufffdQ<\ufffd\ufffde\u0007S1\u0749\ufffd\ufffd\ufffd\ufffd\ufffdfU,2e\ufffd\ufffdW\ufffd$\u05c7L:\\\u0000\ufffd0\u0003Q\ufffdx;c\ufffd\ufffd\ufffdi\ufffdN^V\ufffdj\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdR\ufffd\ufffd{\ufffd[\u0001\ufffd\u061e\ufffd\ufffd\ufffd!\ufffd\ufffd\ufffdJ*\ufffd\ufffdE\ufffdT\ufffd\ufffdm\ufffd\u0003\ufffd2\u06d1\u00069qU\ufffd\u001ea\ufffds\ufffd\b\n\ufffdbM\ufffd'\ufffdlG\u0014\ufffd3\ufffdA\u001c\ufffd\ufffd\ufffd`|\ufffd\ufffd1\ufffd\u000f\ufffdW\n\ufffd\u0019\ufffd\ufffd\ufffdY\ufffd\u0000$J\u0540]z\u000e\ufffdcn\ufffd\u0003\ufffd\ufffd\ufffd\ufffd,\u04faf2\ufffd8\u0000\ufffd\ufffd(\ufffd\ufffdn\ufffd\ufffd\n\u0004f\ufffdf\ufffd\ufffd \ufffdz\ufffd*}\ufffdSr\u001dQ\ufffdq\ufffd\u0016\u04f9\ufffdk\ufffd\ufffdlOW\u00054Be\ufffd`\ufffd\ufffd\ufffd8\u001e\ufffd\u0010M\ufffd\ufffd\ufffd\u001e\ufffd\ufffd8\ufffd\u0012\ufffdA\ufffd\ufffdy\ufffdS\ufffd1R$\u042bJ\ufffdC\ufffd\u0000\ufffd\ufffd\u0007\ufffd\u0000\ufffdv'\n\ufffdn\n\ufffdz\u0018\ufffd\ufffds\ufffdM\"D\ufffd\ufffdy\ufffd\u0737\r\ufffd>\ufffd\ufffd\ufffd;\ufffd\\dNK\ufffd\n\ufffd\u0158X\ufffdW\u001e\ufffd\ufffd\u001e\ufffd\ufffd\ft\u0005\ufffd\ufffd\fr-\ufffd\ufffd\ufffd\u0015(\ufffd\ufffdE0sSRK\u0003#G\u0013(\ufffdF8\ufffd>\ufffd\ufffd\u001f\ufffd\u0001\u0019\ufffd\r<\ufffd\ufffd\u3d6e\nT\ufffd\f\ufffd\ufffd$\ufffd\u0007k^\ufffd\u060e\ufffdY TE\ufffd\ufffd\u0000\ufffd\u007f\ufffd:\u0006m\ufffd\ufffd\ufffd\ufffdJ\ufffd\ufffd;\ufffd\ufffd#R6\ufffdp\ufffd\u0015\ufffd\u0000\ufffdz\ufffd\ufffd\ufffd\ufffd>\u0201\ufffd\ufffd\ufffd\ufffd%\ufffdI\ufffd\ufffdUt\ufffd\ufffd:\ufffd\ufffd(\ufffdH\ufffdgO\"\u000b(\ufffd\ufffd\u06fe\u000b\ufffdxd\ufffdt\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdd\ufffd\ufffd\u000bLieX\u050d\ufffd[}C\ufffd\u00172r\ufffd@a\ufffdZ\ufffd(c \ufffd\u0016\ufffd\u0000\ufffd\u0015}\ufffdR\u05c3\ufffdK\ufffd8\u0003S\u0006U&@6\ufffdS\ufffd\u0010\ufffd\ufffd\u001dM21B\ufffd\ufffdm\ufffd\ufffd\ufffds\u0657\ufffd\u001bh\ufffd\ufffd\ufffdT;zj\ufffd\ufffd\u0000}022E\u001bH\ufffd\u001a\ufffdX\u0012\ufffd_\ufffd\ufffd\ufffd\n`\ufffd\ufffd2B*\ufffd\ufffd]8\ufffd\u001d^\u0015\ufffd\u000e\ufffd\ufffd\ufffd\ufffd6\ufffd\ufffd}\ufffd\ufffd\br \ufffd\ufffd\u0016Y\ufffdD\ufffd(\u000e\ufffd\u0002\u001bSL\ufffd0>F\ufffd\ufffd\ufffd9\ufffd\ufffd\u0012r\ufffd\u001aa\ufffdI^R\u001bJ\u0007\u0000y\ufffd\ufffd\ufffd1\ufffd\u0012\u0018a\ufffd\ufffd\ufffdO0\u0007\ufffd\ufffd\u001a\ufffdT\ufffd\ufffd\ufffd\u02d8\ufffdqKE\u0014\ufffdM\ufffdqn\ufffd\t\u001fg\ufffd\ufffd3N)\ufffd\ufffd\ufffd\u001a\ufffd\ufffd\u001f>\ufffd\ufffdzq\ufffdF\ufffd\ufffd\u0003a\u0731\u07fe\ufffd0\u0006\ufffdA\ufffd\ufffd\u00013\u0013\ufffdd\b\ufffdB\ufffdl\ufffd)i\ufffd\ufffd\ufffdz\ufffd\ufffd\u0014D\ufffd\u0002H?\u0010:[\u0004\ufffdp\ufffd*\ufffd#\ufffd-k\ufffd\ufffdX\u0005>\ufffd\ufffd\u07c9!\ufffd2\ufffd-\u001dUDB8\ufffd\u0015\u000b\ufffd\ufffdb\u01ed\ufffdK\ufffd\u007fLW\ufffd\u0014\ufffd\u0019Ua\ufffd\ufffd%\ufffd\u0019\ufffd+\ufffdHV>\ufffd\fH\ufffd\ufffd\u0003G/\ufffd\u0012\u022b3\ufffdJ5\ufffd\ufffd\ufffdtx\ufffdf\ufffd{\ufffdT\u0002\u0010v\ufffdW\ufffd\ufffd|p\u0013\ufffd-%R\u0192\ufffd\ufffd~j\ufffd\u0002\ufffd\u000b\ufffd\ufffd\ufffd\ufffd\u0006\u0000\ufffd\ufffd\ufffd'\ufffd\u0015\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd~RF*N\ufffdw\u0003M\ufffdk\r\ufffd\ufffd\ufffd%\u0015\u0016}M\ufffd9\u0015MQ@\ufffdn|a\ufffd\ufffdGMV\ufffd\ufffd\ufffd\ufffd\ufffd\u00018M\u0378\ufffd\ufffd\u0101\ufffd{})E\u0014\ufffd54U\ufffd\u001b\ufffd\u000b\ufffd\u001eQf \u0002\ufffd#\ufffd\ufffdm\ufffd\ufffd\u0019\ufffd\ufffdT\ufffd\ufffdR\ufffd\u001bSJ\ufffd\ufffd%e\f/k\ufffd\ufffd\ufffdqm\ufffd+\ufffd\ufffd\u05a4r\ufffd\\,\u02b3\ufffd\ufffdp\ufffd^\ufffd\u0012\ufffd6\ufffdo|\u0012\ufffd^\ufffd\ufffdJy\"\ufffd\ufffd\ufffdTQ3\ufffd\u001b\ufffd\ufffdA$\ufffd\ufffd\ufffde'\ufffd\u0002\u021e\ufffd\ufffd~\ufffd:\u00fa9\u000f\ufffd\ufffdJ\ufffd\ufffd>d\ufffd=\ufffd\ufffd\ufffdd7\ufffd\ufffd\u001f^\ufffd\ufffdll\ufffd\ufffdOO2\ufffd\u0537\ufffdm!\ufffd\ufffd\ufffd\ufffd{\ufffdU\ufffd\ufffd\\\ufffdx*\u23b1\ufffdY\ufffd]3rc6\ufffd\ufffd\\\u000e\ufffd\ufffd7\u0018\ufffd\ufffd:\ufffdT\ufffd\ufffdJ\ufffd\u001a\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdn\ufffd\u07b6\ufffdI\ufffd\u0003p1c_\u0003\ufffd\u05ea\ufffd\ufffd\u02cf{\ufffdEe\ufffd\ufffd\r\ufffd\ufffdP\ufffd\ufffdG+\u001dQ\ufffd\ufffd\ufffd\ufffd\ufffdX\ufffd\ufffd\ufffd\ufffd*\ufffd\ufffd\u24b3Cj\u00014\ufffdj\ufffd\u0000)\u001d\ufffd;\ufffd)\ufffd\ufffd\ufffd\ufffdAO\f\\\ufffd\u0015#\ufffd\ufffd\u0106=\ufffd\u052a\b\u001aM\ufffd\ufffd\ufffdy\u0190R\ufffd4\u0010$i)\ufffd\ufffdx\ufffd\u0003\ufffd4\ufffdz\ufffdk\ufffd\ufffd\u0004\ufffd5\ufffd-\u001dz\ufffd\ufffd\ufffdm\ufffd=z/3\f\ufffd\ufffd\u044c\u0011\ufffd\ufffdP\u074a&\ufffd&\ufffd\b\ufffd\ufffd\u0016\ufffd\ufffd\ufffd\n\ufffd\u0006c\u0014l\ufffd`WU\ufffd\ufffdm\ufffd&\ufffd7\ufffdsR'\u029a`\ufffdY\u0654\ufffdP\ufffd\ufffdV\ufffd\ufffd8&\ufffd1\u0014\ufffdO\u0004\ufffd4\ufffd\u001a\ufffd,\ufffd\ufffd\u001b\u07ee4\u04dd\ufffd\ufffd\ufffd\u0010q\u001b\ufffd\u05da\ufffd\ufffd:]$\ufffd\ufffd8\ufffd\ufffd\ufffdh\ufffd_\ufffd\ufffd\u0270\ufffd<\ufffd%\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0004\ufffdl\u0004\ufffdB\">!\ufffd\\}x+\ufffds\ufffd\ufffd\u007fi\ufffd\ufffdNB\ufffd}!\ufffd\ufffd\ufffd=\ufffd\ufffd\ufffd\ufffd\u0003g\ufffd@\u0553\ufffdp\ufffd\ufffd\u0003C\ufffd,\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdt\ufffd\u0010\ufffd-$\ufffd\u001f\ufffdF\u000b\ufffdx\ufffd?\ufffdE\ufffd\ufffd0\ufffd\ufffd\ufffdg\ufffd\ufffd\ufffdb\u0005\ufffdQ*\ufffd\ufffdF+(r\ufffdf\ufffd\u001cQ\u0002J\ufffd5\n\\\ufffdB\ufffd\ufffd\ufffd\ufffdi\u0015i*\ufffdf\u0016\ufffd\ufffd\ufffdM-\u001ca\u0000k\ufffd\ufffd\u0010w\ufffdb\ufffd\ufffdb\ufffd\ufffd\ufffdI\ufffdT\u0017`I\ufffd\ufffd\ufffd\ufffd^\ufffd\ufffd\ufffd\ufffdJ{L\\JZ\ufffd\u0019]D\ufffd\ufffd\ufffd:\ufffd\ufffdR\ufffd\ufffd\u00041\ufffd1\ufffd+\ufffd\ua8a9\ufffdOK\f\ufffdlH\ufffd.\ufffd\u001f\u0015\u044c\ufffd\u001ad\u001b4\u001e_\b\ufffdA\ufffd\u0000ds\ufffdM\ufffd\ufffd\ufffd+\u001a\ufffd0\ufffd\ufffd\ufffdR\u0013\ufffdj\ufffd\f{\ufffd\ufffd\ufffd\u077b\fD\ufffd\ufffd$\ufffd\ufffdE\\\ufffd%\ufffd<\ufffd\u0287\u0016\ufffdN\ufffd\ufffd1\ufffd\u0015RQRSL2\ufffd\ufffdi\t:\ufffde29\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd:Ir\ufffd\ufffd\ufffd\u0003\r\u0013\ufffd\u0541y\u0012\u0014(\ufffd\ufffd\ufffd\ufffdo\ufffd`\ufffd|&p\ufffd:\ufffd9\ufffd\ufffd\ufffdC\ufffd\u03565l\u0006|\ufffdY\u0011c%#y\u0018\u0007\u0000\ufffd\r\ufffd]\ufffd>~\ufffd0\ufffd\ufffd\ufffd\ufffd\ufffd*Z\f\ufffd\ufffdE:\ufffd\ufffd\ufffdV]\u0000*\ufffd\ufffd\ufffd\u0013\ufffd\ufffd 7\ufffd3\ufffd\ufffd\ufffdT\ufffdB\u0531T\ufffd\ufffd\f\ufffd\u0019\u00141\ufffdk\u0016\u0000\u000b\ufffd\ud170\u0016\u02a9\u7927\ufffdR\ufffd\ufffdT\ufffd\t$\ufffd\u0013\ufffd@w[\u000e\ufffd\ufffdm\ufffd\ufffdPt\ufffd\ufffd\ufffd8P\",\ufffd\ufffd\ufffd0\ufffdi\ufffd\ufffd*\ufffd\ufffdJUL!uI\ufffdS\ufffd\ufffdWS\ufffd\ufffdo\ufffd^\ufffd\ufffdb\ufffdR\ufffdM\u02d4\ufffd\ufffd\ufffd\u0015\ufffdoq{\u0012H\ufffd=p\ufffd4\ufffd!\ufffd+\ufffdb\ufffdi\"\ufffd\u0002\ufffd$\ufffd\ufffdeQ\u040f\ufffd\u0001c\u04f6\"\ufffd5\ufffd\u0357\ufffd\ufffd\ufffd\ufffd\ufffd\u0016I\ufffdO\ufffd\u0006\ufffd\ufffd\u0003n\ufffd\ufffdv\ufffd\ufffdx2H\u66f1\u0006\ufffdy\ufffde\ufffd\ufffd\ufffd\ufffd\u057e\ufffd#VE*\u0018\u0004\ufffd1V\u001d\ufffd\u001b\ufffd\ufffd\u001d0d\ufffd\ufffdn\ufffdQ\ufffdP\ufffd\ufffd\ufffd!\u0016\ufffd\ufffdH\u056fN\ufffd#\ufffd\u001b\u001f\ufffd\u0006\u007fIg\ufffdu)\u001c\ufffdH` $j4\ufffd\ufffd@-\ufffd\ufffd\ufffd<\ufffd\tsFz\ufffd\ufffd\ufffd\u0016\ufffdQ\u001e\ufffdd\ufffd.\ufffd\ufffd\ufffd$\r\ufffdQ\u3b70\u000f\ufffdZ\u007f(Z\ufffdN\ufffdj\ufffd5\u03b3\ufffd\ufffd\ufffd|\ufffdir\ufffd\ufffd\\,K \u0000\u0012-~\ufffd\u001b\ufffdm{`\\\ufffd>M\u0012\ufffd#QIPj\ufffd%$\ufffd\u0007fm\u0301\ufffd\ufffd;\ufffd\u0012G`0\ufffd\ufffd\ufffdyy\ufffd\u0019\\i\ufffd\ufffd\ufffd\ufffd\u0729\ufffd\ufffdH\ufffd\ufffd\ufffdaC\ufffd\u025aT\ufffdNd\ufffd\ufffd4ic\ufffd(\u015c\u000e\ufffd!\ufffd~\ufffdN\ufffd\u0012\ufffdOl\ufffd\u0003\ufffdSSDsE\u0321\ufffdof\ufffd\ufffd*\ufffd(^\ufffd4\ufffd\ufffd\ufffde\f\ufffdcpN\ufffd\u0000t\ufffda\ufffdre\ufffd\ufffd\ufffdqX\ufffdB\ufffd\r%B\ufffd\ufffd\u0000 \ufffd\ufffdCZ\ufffdf\ufffd\ufffd\u001bg\ufffd)S\ufffd\ufffd&m%\u001d+\ufffdcV\ufffdsU\"\ufffdq\u02f5\ufffd\ufffd\u001b\u001d\ufffd\ufffd\ufffd\ufffd\ufffd}\ufffd5\u000eA*5J;Q\ufffdV\ufffd\ufffd\u0010\ufffdU\u0571a\u071bw7\u001b\ufffd\u0003\u0005OMuH\ufffdpLB\ufffd`0lT\ufffdyeF]\ufffdR\ufffd\ufffd&m-,\ufffd<\ufffd\u0003J\u001d\ufffd\u0012\u0003[\ufffd\ufffd\ufffd\ufffdp\ufffd-\ufffd\ufffd7\ufffd\ufffd\u001d\ufffd\u02e3\ufffd\u02ac\u02a5\ufffdB\ufffd\ufffd\ufffdq\ufffd68\ufffd\ufffd\ufffduG\ufffd\ufffd\ufffd\ufffd,Re\ufffd:,\ufffd\u0010=\ud885\udecd&\ufffd\u001b\ufffd\ufffd\ufffd\ufffd6\ufffd\ufffdj^)\ufffd\u0015T\ufffd\ufffd\ufffdw\u490cF\u07d3\ufffd\t\ufffd\ufffd\ufffd/n\u07b8i\ufffdK\ufffd\u0006b\ufffdt\ufffdKe\ufffd\u001fY\ufffd\u00154\u0012SCAL\ufffd\ufffd\ufffd\ufffdA\ufffd#qb\ufffd\u0019\u07f6\ufffd\u0011\ufffd\ufffd\ufffd[:f\ufffdRKR\ufffd\ufffd\u001c\ufffd\ufffd\ufffd:\ufffd\ufffd\ufffd9\ucbe7\ufffd\u066e}A\ufffd\ufffd*\ufffdV\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0015E\ufffd\ufffdzB\u001dV\ufffdHR\ufffd\ufffd\t\ufffd\ufffdlK\ufffd\ufffd\ufffd\ufffdU\\4\ufffduL\ufffd\ufffd037&Er\ufffd\ufffd5\u0003\ufffd\ufffd\ufffd\u0017\ufffd\ufffd\ufffd\ufffd$@\ufffdo\ufffd\"u\u0019\ufffd/\ufffdG\ufffdE\ufffd\ufffd\ufffd\ufffd*h\u02c4\ufffd9P\ufffd\r\ufffd\ufffdZ\ufffd}\ufffd\u007f\ufffd\u0019UQM6T\ufffd\u000eg$Nd\u0003MDaT\ufffd\u0004\u0006\u000e\t\ufffd\ufffd\u001b\u0010;\ufffd\u0007\u0001_\ufffd\ufffd\ufffd\ufffd v\ufffdR\u04a4\ufffd\ufffdK\ufffd\u0003.\ufffd\ufffd\ufffd\u001d\ufffdK\u001d\ufffd\ufffd\r\ufffd\f\ufffd4\ufffd~D\ufffdmEV\\\ufffd{)\ufffdK6\ufffd\u0000\ufffda\ufffd\ufffd\u001b\u001e\ufffd\u000f\ufffdn\u0010K\ufffd\ufffdPk\ufffd\u001b)n[\ufffd*\ufffd\ufffd\ufffd\ufffd39\ufffd\ufffdW\ufffd\ufffd\\\ufffd\u0001$\u000b\ufffd\ufffd[\ufffd\ufffd\\4e\ufffd\ufffd\ufffd\\\ufffd04sS\u0013!\u0015!U\ufffdIk)R\r\ufffd{\ufffd\ufffd\ufffd_\ufffd\ufffd\ufffd\u0643\u0394p3\ufffd\ufffdURH\ufffdW\u0428&\ufffd\ufffd<\ufffd\u0007\ufffdg\u0015\ufffd\ufffd3ME\u0014R\ufffdye*B\ufffdA\ufffd\ufffdI\ufffd\ufffd\ufffd\u0015:\ufffdf\ufffd\ufffd\ufffd\\\u0432\ufffd^\"U\ufffd6\ufffd3\ufffdj:z\\\ufffd+\ufffd\b#\ufffd\ufffdK$\ufffd\ufffd\ufffd\ufffdC\ufffd\ufffd\u0000\ufffd5Yunc\r6g\ufffd\ufffd\u0000D\ufffdH\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0006\ufffd{\u001b\ufffd=\ufffd-\u0017\u0014%EZ\ufffdPj\u0003\ufffd\u0017\ufffdH\u0004\ufffdT\ufffd\u0000\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\t\ufffd\ufffd+\ufffdz\ufffd\ufffd\ufffd\ufffde\ufffdH\ufffd\ufffd\u052e\ufffd-\ufffd\ufffd_\ufffdno\ufffd\ufffd\ufffd\f\ufffd\ufffd:p\ufffdn[\u043fCh\ufffdS?j\ufffdO\ufffd\u0005\u0016Y\ufffdxM<\ufffdF\ufffd\ufffdI=\ufffd\ufffd\ufffd\ufffd{\ufffdqT\ufffdL\ufffd\ufffd\ufffd\ufffd6\ufffd\ufffd(K\\\ufffd\ufffd\"\u07a2\ufffd\ufffd\u0017\ufffd|7\ufffdus\u0435G\u000f\ufffd\u0002\u0578]\ufffd\ufffd\ufffd\ufffd\u06dfq\ufffd\ufffd>\u0018\ufffd0\ufffd\u001e*8Eug\"\ufffd6\ufffdD@@b:\ufffdca\ufffd\u04e9M\ufffd8O\ufffd\ufffd$\ufffd\ufffd\u0018/\ufffd-a\ufffdBS\ufffdV@\ufffd5\u0001D\ufffdIta\ufffdp\ufffd\ufffd3\u000b\ufffd\ufffdG\ufffd^\ufffd#\ufffd\ufffd;\u0007\u0010\ufffdH\ufffdF\u06e8\ufffd?\u001f\ufffd\ufffd`\ufffd\ufffd3\u00069{\"\ufffd\u000eby\ufffd\ufffd&O\ufffd\ufffdQU \ufffd\u02f2\ufffd \ufffd\ufffdq\u0004U\ufffd ~\ufffd?\ufffdk_a\u04ee\u0012M\ufffd$\ufffdd\ufffd\ufffd,\u0012*\u0000\ufffd\nHn\ufffd\ufffd(\u0017\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0015\ufffd\u0000\u0532\ufffd\ufffd\ufffd\u0000\u0018\u01df&?\ufffd\ufffdM\ufffd\u0000\ufffd\ufffd\u0000,y,!\ufffduR$\ufffdyO\ufffd\ufffd\ufffd\u07c7,\ufffd\u0015\u04c78\ufffd=\ufffd\ufffdi\ufffd:\u0006X\u041e\u007f\ufffd\ufffd.\u007f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd~ut\u000e\u066d\u0004h\ufffd+L\ufffd\ufffd\u0004o#[\ufffd;\u0013\ufffd\u0000\ufffd,\\\u0007\ufffdx\ufffd\ufffdy\u007f\ufffd\ufffdg\u07e7'\ufffd\u00006\"\ufffdT>\ufffd\ufffd[\u0004o\ufffd\ufffd\ufffd\ufffdh$\ufffdO\ufffd\u000e\u001c\ufffds\\\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdL^*I\r\ufffdS\ufffd\ufffd\ufffd\ufffd\ufffd0\u0013R\ufffdp\ufffdUd\ufffd}^_-\f\ufffd0\ufffd\ufffdUT\u001b\u000e\ufffdA\f\r\ufffd\ufffd\ufffd\ufffd\u0002\u02bf\ufffd\ufffd~\ufffd\u001f\ufffdp\u0007\ufffd\u000f\ufffd/\ufffd\ufffd\ufffd1\ufffd\ufffdV\ufffd\ufffd\ufffd\ufffdl\ufffd\bcq\f\u0566z\ufffd\u04b9cl\ufffd?\ufffd\ufffd\ufffd@\ufffd\u0019\ufffd\ufffd\ufffd\ufffdV%@\ufffd\b#q\ufffd\ufffd\ufffd\u0004\ufffdn[\ufffd\ufffd*\ufffd\ufffds\n\ufffdbI\u0013\ufffd`\ufffd\ufffdU\ufffd\u001eE\ufffd\ufffd\ufffd>1]\ufffd\ufffd\u007f\"\ufffd\u0000\u0012O\ufffd\u0017\u0016\ufffd\ufffdR\ufffd\ufffd\ufffd\ufffd)\ufffd4\ufffd\fy\b\u001dqF\ufffd\u0007J\ufffd\u047c9\ufffd\u059c\ufffd\ufffdT\ufffd\ufffd\ufffd\ufffd\ufffdB(\u001b\ufffd\ufffd\ufffdq\ufffd`\ufffd\ufffd\ufffdk\ufffd\"\ufffd\ufffd\ufffd\u0019S\ufffd\ufffd\ta\ufffd>\ufffd\ufffda\ufffdck[b\t\ufffd/\ufffdV]\ufffd\u0016\ufffd\ufffdQ\ufffd\ufffdX]\u009f\ufffdj?\ufffdo\ufffd1\u001dZ\ufffdq-\ufffd#\ufffd\ufffd\ufffde\ufffd\u0000\ufffd\ufffd\u001c\ufffd\ufffde\ufffd\ufffd\u000f>\ufffd\ufffdl\ufffd\ufffdC\u02a7i\u0011c\ufffdk\u0010\u0011\r\ufffdc\ufffdC{\ufffdo\ufffds\f\ufffdfq\b)\ufffdh\ufffd\ufffd%\u0796G\u0012\ufffdP\ufffd\ufffd{_\ufffd6#\u03ee.U\u007f\ufffd\ufffdo\u0757\ufffd\ufffd\n8\u0007\ufffdY\ufffd\ufffd\ufffd\ufffdl1\ufffd\u000b\u001aj\ufffd\ufffd$\ufffd\ufffd!\ufffd\ufffdL\ufffdJ\ufffdh\u8a68\ufffd\ufffd,\ufffd1T\ufffdT\u0221\ufffd;\u0011ot\ufffd_\ufffd\fj\ufffd\u031a\ufffd\ufffd0\u0013=\u0005\f\ufffd\ufffd\u001e\ufffd\ufffdx\ufffdK\r\ufffdn\u0000>\ufffd\u0007\ufffd\u0177\ufffd?Z*\u007fu\ufffd\ufffd\u000e\u0000\ufffdo\ufffd<\ufffd\ufffd\ufffd\ufffd\u0017\u001c\ufffd\ufffdT\r\ufffd'3\ufffd\ufffdk\u0003\ufffdO\ufffd%\u0206_\ufffdf\ufffd\u0011\ufffdKW\u0005Z\ufffdz`\u0006\ufffdl:\ufffd*\ufffd\u0017\u0004\u000b\\\ufffdq\ufffd\u0005\ufffd\u0015\tK6R\ufffdae\ufffdqQ\u0010d:\ufffdq\ufffd\ufffd6%T\ufffd\\\r\ufffd\ufffdl&\ufffd\ufffd\u0000\ufffd\ufffd\ufffd\ufffd\ufffd\u0000\ufffd.\ufffdc\ufffd\ufffd\ufffd\ufffd\ufffd\u0000I\ufffd\u02afs\u001f\ufffd\u001bD\ufffd\ufffd\ufffdx\u0012\ufffd\ufffd\ufffdVIG:\u001ajEJ\ufffd\ufffd\ufffdQM3\ufffd\u0017\ufffd\u0015=\u001a\ufffd\ufffdIKANx\ufffd\\\u01a6\ufffd1\ufffd\b\ufffd9rC\ufffdT\ufffd\u001e\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd|A\ufffd\u007f\ufffd\ufffd\ufffd\ufffd\u0017\ufffd\u001c_x\u0017\ufffdB\u007f\u069f\ufffd\u000e\u001d\ufffdsZ\u001d&\ufffd\ufffd`\ufffd\ufffd\ufffd](\ufffd\ufffd\ufffdks\ufffdC\ufffd\ufffd\ufffd\ufffdS\ufffd\u0327\ufffd)\ufffd\ufffd\ufffd\ufffd\ufffd\u0003\ufffd\ufffdqW\ufffd$Q\ufffdI\u001eS4\u0005\ufffd\ufffd`v\u0508T\ufffd\ufffd\ufffd=\ufffd\u001b[r\b;w\ufffd\ufffd;\ufffd\u000f\ufffd~\u073f\u00ca\ufffdq\ufffd\ufffd\u00bf\ufffd\ufffd\ufffdu\u001a\ufffdsZg;zM\ufffd\ufffd\ufffd-i\ufffd\ufffd*\ufffd\ufffd\u001c\ufffdY+\ufffdZ\ufffd\ufffd8\ufffd9\ufffdD(\ufffd\u00e3\ufffd\u061bx7\u00aa\ufffd\u001e\ufffd2\ufffd\u06ab0\ufffdZ\u0019b\ufffd\u0016\ufffd\u0000\ufffd:\ufffdu#pA\u061b\ufffd\u0006\ufffd0\udae3\udff4i\ufffd\u0000\ufffd\ufffd\ufffd\u0000f,\ufffdC\ufffd_\ufffd?a\ufffd\u0000\u07ca;S\ufffd\ufffdna\ufffd|}\ufffd\nRK\ufffd\ufffdT\ufffd\ufffd7\ufffd\ufffd\ufffd\\\ufffd\ufffd/\ufffdU\ufffd'\ufffd\ufffdi6\ufffdt\ufffd\ufffd\ufffd\ufffd\u0007K\ufffd9v}\f\ufffdgk\\\u001dP\ufffd\u0011\ufffd8\ufffd\u050d\ufffd^\ufffd\ufffd\ufffdbJ\ufffd\ufffd~\ufffd\ufffd\ufffdc&\ufffd\ufffdt%\ufffd0\ufffd\ufffd\ufffd\ufffd\r\n--86cf9fa2f997c3eca2013129cd766627--\r\n"}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "], "Content-Length": ["8161"], "Content-Type": ["multipart/form-data; boundary=86cf9fa2f997c3eca2013129cd766627"]}, "method": "POST", "uri": "/api/v3/stored_files/upload"}, "response": {"body": {"encoding": "utf-8", "string": "{\"results\":[{\"category\":\"REFERENCED\",\"created_at\":\"2025-01-22T14:20:45.656274Z\",\"classification\":\"SCOPED\",\"content_type\":\"image/jpeg\",\"derived_from\":null,\"description\":\"\",\"description_translations\":{\"it\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"nl\":\"\"},\"display_description\":\"\",\"display_name\":\"test_upload_image.png\",\"file\":{\"XS\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_63789f8a-dfde-4317-8f41-a6b7b405a70c/test_upload_image-thumbnail-100x100.png?Expires=1737556246&Signature=LTJBkO5xh7pCFgvkQeffrjEDi33QxCUf6ukKk044e8Xb826lQP1VBjHys2y-9c9hyw3L7CbEuP7e542Nu41L2ueXApjP8HSr~eqhRbXaU75BWbY30MYmEWwyuBJNjrNx80iI8FiSF-bkKYS7PzCL~XMGM03RF~KrISgR-IBiZSewHR6mPKjdmU5tZAoHbBl6uRwU61KAuFBtnyvY0Mq5RSOzFWmoh7WlNRmeNUwDr2kmy6fYeTTvTm0Gr-oofH5JRsyrb3x1~SeLJtMajHmktV9FfTSDDsfVWg7HnmlBJglOUA1VfbqYO85McGCSr9iP6CbZoWml-zt443oVtLmcxA__&Key-Pair-Id=K35XCI687NDNBJ\",\"XL\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_63789f8a-dfde-4317-8f41-a6b7b405a70c/test_upload_image-crop-c0-5__0-5-2048x2048.png?Expires=1737556246&Signature=ib5sNENskKcruS~K09DGT2yVXvfVtN6ISulRQ68fxPJGQ1g6FcK9GJhsj5p7LTImwQ2jMpQNT~k2MpMRIBvSwrrV~gvU-xSE1AcPWt8AK8eKIvvAAQn~t~AwwZLucA7JdGUFu8r3KNaKY0yEjk8Xhde8GmLwSDcT28W1K9XaXWjhHvpXQPS3rTteYGO~RsJ0kbkxgTp5fNEXzQEXviQ~bi427brgAwaauMECCRJ-0IhI7mizSI6gk26X-GjzrjOtugMOz5NaglVTb9kZFG2d841UtfZ2xf7dqKiQKIbB32wu-7yeuwp3Id1TjbjejGVQOx6J5fa8Q4kTp-NnDonL3A__&Key-Pair-Id=K35XCI687NDNBJ\",\"S\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_63789f8a-dfde-4317-8f41-a6b7b405a70c/test_upload_image-thumbnail-320x320.png?Expires=1737556246&Signature=Cjice-MSvlseQ1HDmY3lnYNzao6SGSrlU3U2Sv2ShlkXOhrKlhyotiTsCJ16RzcyPg45fKuf0Z4Q9Qofn4k6RXQQq2j0qZFx5TBrvdj9fS6qkWL44u~dsOLcEyKGcNOOmiHg6KCGHuEkT3jvnyQIQgQH6nQqKeY2kl72c1wJpv55XissQrwKoEWwhQXWExvlnQRIjBxggYrKGpVaOBwto9PARqo2VJDxN3gT1ORpKPIz~ajC~tACTb5gPu9q-ac9yRQyZA4fm71opGwU3bmKOgQswwCslNS-TeSeK3FoW3yzMnd19cqDz0hYLd3w6FsUuZVg9PqyxafQOo-9U9i-2g__&Key-Pair-Id=K35XCI687NDNBJ\",\"L\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_63789f8a-dfde-4317-8f41-a6b7b405a70c/test_upload_image-crop-c0-5__0-5-1024x1024.png?Expires=1737556246&Signature=CKQ70ar6YMhNOg3YfFVCrA2qAizVHwXmLqkC6rHJcHwx5LOIwkNLxOLABac5sTnVXV1Eogz67y-yjLbTQRyrAOPgUmppll4jJ1LoM~57GizMbMXf4oUDRuvMCYNvEEEurgvjWurys919E5azCYpdB0FcMxBCyD54GezTqXOR5MQkPSxjqKVl-8K4osCuAZgO7QVevsTVLuOPK~TEkEj96pEbet71CrMDKxwg8mhLE66srwqmlEGZV4B2CFJwL1VaRALCFQGjz08Fc7MJ55b93mDmt4~BSa1EXaE0uynDP96dKHstz34H92XKcM-LYHCi7EBGcIBQGh58rcjE1SUEPA__&Key-Pair-Id=K35XCI687NDNBJ\",\"M\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_63789f8a-dfde-4317-8f41-a6b7b405a70c/test_upload_image-crop-c0-5__0-5-640x640.png?Expires=1737556246&Signature=bucgCJpgP4-guej1xKOfpWsAjtMOYzwrXDv91zw5lU-tdZg0v7BAFW3NH9psOq5NO9-cD6-EVs8BPenua0R8rauqEwLO5YHnCtOpvF~U9d8NgHTZsLu~6M7zqI-70XShnqG7YH~1mtTrIsY0i65~XBC6z5cQvQEAczDhu~QFKl2~lR29h2~DssH4W9esegNnrI8n-L6c1Drb4ACuo-xKlCiIkrCcooOoCXZks65RPm3kz0S-RqaGIkB-8IkAmRRXxtBz6jYUGkmQrjT1gQxW6fH-86zd77K6pLA5HBYE4LHwtRJ-WWQqRw7inBffvvpmbM-Mt0xV5gUKZaPX-ERGIQ__&Key-Pair-Id=K35XCI687NDNBJ\",\"full_size\":\"https://media.cdn.ke-chain.com/pim3-test/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_63789f8a-dfde-4317-8f41-a6b7b405a70c/test_upload_image.png?Expires=1737556246&Signature=OZs79YdYNQd11kciGzjSf~5FUsXi38mlPxDew9v3MxcNAx98evCKhjA0rJUVV8gmUiVoKOudkDdVOr3hfq0xf~bn5AXfU9tTeGMQi0WKxoA6zAKfWcjM1ewnCxb6SvuG5rE8hJmkYOt7iy9oOQ~TeU-LY6cqDGqvFaV10Kxs94lkjbp-LlrUp4GfUQtjXmvOq5LTbKA~ZNILgH5cDVSfKyiyF7HHEIBMRB4DmeJ4luoiI0hm1gwuSMGzKmwKE15OBfDT1xCYqql41isrxtES50g76a-lBqIXBS5f~gPLush~OE9lkoMgJ2XIw0w1VMqYZ~6dQIzjBj91xrm9obH19g__&Key-Pair-Id=K35XCI687NDNBJ\"},\"file_type\":\"IMAGE\",\"form_collections\":[],\"id\":\"63789f8a-dfde-4317-8f41-a6b7b405a70c\",\"is_hidden\":false,\"meta\":{},\"name\":\"test_upload_image.png\",\"name_translations\":{\"it\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"nl\":\"\"},\"options\":{},\"permissions\":{\"create\":true,\"update\":true,\"destroy\":true,\"read\":true},\"ref\":\"test_upload_imagepng-3\",\"scope\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"tags\":[],\"updated_at\":\"2025-01-22T14:20:45.656296Z\"}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:46 GMT"], "Content-Type": ["application/json"], "Content-Length": ["4266"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["POST, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 201, "message": "Created"}, "url": "/api/v3/stored_files/upload"}, "recorded_at": "2025-01-22T14:20:46"}, {"request": {"body": {"encoding": "utf-8", "string": "{\"value\": [\"63789f8a-dfde-4317-8f41-a6b7b405a70c\"]}"}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "], "Content-Length": ["51"], "Content-Type": ["application/json"]}, "method": "PUT", "uri": "/api/v3/properties/62b8cadc-e963-4a9a-ad87-1a8a8f9d6bb8.json?fields=id%2Cname%2Cref%2Ccreated_at%2Cupdated_at%2Cmodel_id%2Cpart_id%2Corder%2Cscope_id%2Ccategory%2Cproperty_type%2Cvalue%2Cvalue_options%2Coutput%2Cdescription%2Cunit"}, "response": {"body": {"encoding": "utf-8", "string": "{\"results\":[{\"id\":\"62b8cadc-e963-4a9a-ad87-1a8a8f9d6bb8\",\"name\":\"__Test MAP property\",\"ref\":\"test-map-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"INSTANCE\",\"order\":13,\"unit\":\"unit of the property\",\"value_options\":{\"validators\":[{\"vtype\":\"singleReferenceValidator\",\"config\":{}}]},\"value\":[{\"id\":\"63789f8a-dfde-4317-8f41-a6b7b405a70c\",\"name\":\"test_upload_image.png\"}],\"created_at\":\"2025-01-22T14:20:45.138292Z\",\"updated_at\":\"2025-01-22T14:20:46.168514Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"e440f330-fd36-4421-810e-510f166ffe12\",\"output\":true}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:46 GMT"], "Content-Type": ["application/json"], "Content-Length": ["685"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, PUT, PATCH, DELETE, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 200, "message": "OK"}, "url": "/api/v3/properties/62b8cadc-e963-4a9a-ad87-1a8a8f9d6bb8.json?fields=id%2Cname%2Cref%2Ccreated_at%2Cupdated_at%2Cmodel_id%2Cpart_id%2Corder%2Cscope_id%2Ccategory%2Cproperty_type%2Cvalue%2Cvalue_options%2Coutput%2Cdescription%2Cunit"}, "recorded_at": "2025-01-22T14:20:46"}, {"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "]}, "method": "GET", "uri": "/api/v3/properties/62b8cadc-e963-4a9a-ad87-1a8a8f9d6bb8.json?fields=id%2Cname%2Cref%2Ccreated_at%2Cupdated_at%2Cmodel_id%2Cpart_id%2Corder%2Cscope_id%2Ccategory%2Cproperty_type%2Cvalue%2Cvalue_options%2Coutput%2Cdescription%2Cunit"}, "response": {"body": {"encoding": "utf-8", "string": "{\"results\":[{\"id\":\"62b8cadc-e963-4a9a-ad87-1a8a8f9d6bb8\",\"name\":\"__Test MAP property\",\"ref\":\"test-map-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"INSTANCE\",\"order\":13,\"unit\":\"unit of the property\",\"value_options\":{\"validators\":[{\"vtype\":\"singleReferenceValidator\",\"config\":{}}]},\"value\":[{\"id\":\"63789f8a-dfde-4317-8f41-a6b7b405a70c\",\"name\":\"test_upload_image.png\"}],\"created_at\":\"2025-01-22T14:20:45.138292Z\",\"updated_at\":\"2025-01-22T14:20:46.168514Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"e440f330-fd36-4421-810e-510f166ffe12\",\"output\":true}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:46 GMT"], "Content-Type": ["application/json"], "Content-Length": ["685"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, PUT, PATCH, DELETE, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 200, "message": "OK"}, "url": "/api/v3/properties/62b8cadc-e963-4a9a-ad87-1a8a8f9d6bb8.json?fields=id%2Cname%2Cref%2Ccreated_at%2Cupdated_at%2Cmodel_id%2Cpart_id%2Corder%2Cscope_id%2Ccategory%2Cproperty_type%2Cvalue%2Cvalue_options%2Coutput%2Cdescription%2Cunit"}, "recorded_at": "2025-01-22T14:20:46"}, {"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "]}, "method": "GET", "uri": "/api/v3/stored_files?id__in=63789f8a-dfde-4317-8f41-a6b7b405a70c&fields=id%2Cname%2Ccategory%2Cscope%2Cclassification%2Cfile%2Ccontent_type%2Cdescription%2Ccreated_at%2Cupdated_at%2Ctags"}, "response": {"body": {"encoding": "utf-8", "string": "{\"results\":[{\"category\":\"REFERENCED\",\"created_at\":\"2025-01-22T14:20:45.656274Z\",\"classification\":\"SCOPED\",\"content_type\":\"image/jpeg\",\"description\":\"\",\"file\":{\"XS\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_63789f8a-dfde-4317-8f41-a6b7b405a70c/test_upload_image-thumbnail-100x100.png?Expires=1737556246&Signature=LTJBkO5xh7pCFgvkQeffrjEDi33QxCUf6ukKk044e8Xb826lQP1VBjHys2y-9c9hyw3L7CbEuP7e542Nu41L2ueXApjP8HSr~eqhRbXaU75BWbY30MYmEWwyuBJNjrNx80iI8FiSF-bkKYS7PzCL~XMGM03RF~KrISgR-IBiZSewHR6mPKjdmU5tZAoHbBl6uRwU61KAuFBtnyvY0Mq5RSOzFWmoh7WlNRmeNUwDr2kmy6fYeTTvTm0Gr-oofH5JRsyrb3x1~SeLJtMajHmktV9FfTSDDsfVWg7HnmlBJglOUA1VfbqYO85McGCSr9iP6CbZoWml-zt443oVtLmcxA__&Key-Pair-Id=K35XCI687NDNBJ\",\"XL\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_63789f8a-dfde-4317-8f41-a6b7b405a70c/test_upload_image-crop-c0-5__0-5-2048x2048.png?Expires=1737556246&Signature=ib5sNENskKcruS~K09DGT2yVXvfVtN6ISulRQ68fxPJGQ1g6FcK9GJhsj5p7LTImwQ2jMpQNT~k2MpMRIBvSwrrV~gvU-xSE1AcPWt8AK8eKIvvAAQn~t~AwwZLucA7JdGUFu8r3KNaKY0yEjk8Xhde8GmLwSDcT28W1K9XaXWjhHvpXQPS3rTteYGO~RsJ0kbkxgTp5fNEXzQEXviQ~bi427brgAwaauMECCRJ-0IhI7mizSI6gk26X-GjzrjOtugMOz5NaglVTb9kZFG2d841UtfZ2xf7dqKiQKIbB32wu-7yeuwp3Id1TjbjejGVQOx6J5fa8Q4kTp-NnDonL3A__&Key-Pair-Id=K35XCI687NDNBJ\",\"S\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_63789f8a-dfde-4317-8f41-a6b7b405a70c/test_upload_image-thumbnail-320x320.png?Expires=1737556246&Signature=Cjice-MSvlseQ1HDmY3lnYNzao6SGSrlU3U2Sv2ShlkXOhrKlhyotiTsCJ16RzcyPg45fKuf0Z4Q9Qofn4k6RXQQq2j0qZFx5TBrvdj9fS6qkWL44u~dsOLcEyKGcNOOmiHg6KCGHuEkT3jvnyQIQgQH6nQqKeY2kl72c1wJpv55XissQrwKoEWwhQXWExvlnQRIjBxggYrKGpVaOBwto9PARqo2VJDxN3gT1ORpKPIz~ajC~tACTb5gPu9q-ac9yRQyZA4fm71opGwU3bmKOgQswwCslNS-TeSeK3FoW3yzMnd19cqDz0hYLd3w6FsUuZVg9PqyxafQOo-9U9i-2g__&Key-Pair-Id=K35XCI687NDNBJ\",\"L\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_63789f8a-dfde-4317-8f41-a6b7b405a70c/test_upload_image-crop-c0-5__0-5-1024x1024.png?Expires=1737556246&Signature=CKQ70ar6YMhNOg3YfFVCrA2qAizVHwXmLqkC6rHJcHwx5LOIwkNLxOLABac5sTnVXV1Eogz67y-yjLbTQRyrAOPgUmppll4jJ1LoM~57GizMbMXf4oUDRuvMCYNvEEEurgvjWurys919E5azCYpdB0FcMxBCyD54GezTqXOR5MQkPSxjqKVl-8K4osCuAZgO7QVevsTVLuOPK~TEkEj96pEbet71CrMDKxwg8mhLE66srwqmlEGZV4B2CFJwL1VaRALCFQGjz08Fc7MJ55b93mDmt4~BSa1EXaE0uynDP96dKHstz34H92XKcM-LYHCi7EBGcIBQGh58rcjE1SUEPA__&Key-Pair-Id=K35XCI687NDNBJ\",\"M\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_63789f8a-dfde-4317-8f41-a6b7b405a70c/test_upload_image-crop-c0-5__0-5-640x640.png?Expires=1737556246&Signature=bucgCJpgP4-guej1xKOfpWsAjtMOYzwrXDv91zw5lU-tdZg0v7BAFW3NH9psOq5NO9-cD6-EVs8BPenua0R8rauqEwLO5YHnCtOpvF~U9d8NgHTZsLu~6M7zqI-70XShnqG7YH~1mtTrIsY0i65~XBC6z5cQvQEAczDhu~QFKl2~lR29h2~DssH4W9esegNnrI8n-L6c1Drb4ACuo-xKlCiIkrCcooOoCXZks65RPm3kz0S-RqaGIkB-8IkAmRRXxtBz6jYUGkmQrjT1gQxW6fH-86zd77K6pLA5HBYE4LHwtRJ-WWQqRw7inBffvvpmbM-Mt0xV5gUKZaPX-ERGIQ__&Key-Pair-Id=K35XCI687NDNBJ\",\"full_size\":\"https://media.cdn.ke-chain.com/pim3-test/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_63789f8a-dfde-4317-8f41-a6b7b405a70c/test_upload_image.png?Expires=1737556246&Signature=OZs79YdYNQd11kciGzjSf~5FUsXi38mlPxDew9v3MxcNAx98evCKhjA0rJUVV8gmUiVoKOudkDdVOr3hfq0xf~bn5AXfU9tTeGMQi0WKxoA6zAKfWcjM1ewnCxb6SvuG5rE8hJmkYOt7iy9oOQ~TeU-LY6cqDGqvFaV10Kxs94lkjbp-LlrUp4GfUQtjXmvOq5LTbKA~ZNILgH5cDVSfKyiyF7HHEIBMRB4DmeJ4luoiI0hm1gwuSMGzKmwKE15OBfDT1xCYqql41isrxtES50g76a-lBqIXBS5f~gPLush~OE9lkoMgJ2XIw0w1VMqYZ~6dQIzjBj91xrm9obH19g__&Key-Pair-Id=K35XCI687NDNBJ\"},\"id\":\"63789f8a-dfde-4317-8f41-a6b7b405a70c\",\"name\":\"test_upload_image.png\",\"scope\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"tags\":[],\"updated_at\":\"2025-01-22T14:20:45.656296Z\"}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:46 GMT"], "Content-Type": ["application/json"], "Content-Length": ["3866"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, POST, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 200, "message": "OK"}, "url": "/api/v3/stored_files?id__in=63789f8a-dfde-4317-8f41-a6b7b405a70c&fields=id%2Cname%2Ccategory%2Cscope%2Cclassification%2Cfile%2Ccontent_type%2Cdescription%2Ccreated_at%2Cupdated_at%2Ctags"}, "recorded_at": "2025-01-22T14:20:46"}, {"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "]}, "method": "GET", "uri": "/api/v3/scopes.json?id=bd5dceaa-a35e-47b0-9fc5-875410f4a56f&fields=id%2Cname%2Cref%2Ctext%2Ccreated_at%2Cupdated_at%2Cstart_date%2Cdue_date%2Cstatus%2Ccategory%2Cprogress%2Cmembers%2Cteam%2Ctags%2Cscope_options%2Cteam_id_name%2Cworkflow_root_id%2Ccatalog_root_id%2Capp_root_id%2Cproduct_model_id%2Cproduct_instance_id%2Ccatalog_model_id%2Ccatalog_instance_id%2Cproject_info&limit=2"}, "response": {"body": {"encoding": "utf-8", "string": "{\"count\":1,\"next\":null,\"previous\":null,\"results\":[{\"id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"name\":\"Bike Project\",\"ref\":\"bike-project\",\"text\":\"Project used to test Pykechain and push it to the limits\",\"status\":\"ACTIVE\",\"category\":\"USER_SCOPE\",\"created_at\":\"2019-10-22T08:06:48.874535Z\",\"updated_at\":\"2023-03-15T14:58:44.000690Z\",\"tags\":[\"bike\",\"x-scope-target\"],\"scope_options\":{\"overrideSidebar\":false,\"representations\":[{\"rtype\":\"customIcon\",\"config\":{\"displayIcon\":\"bicycle\",\"displayIconMode\":\"regular\"}}],\"customNavigation\":[]},\"team_id_name\":null,\"members\":[{\"id\":286,\"username\":\"supervisor\",\"name\":\"\",\"is_active\":true,\"email\":\"\",\"is_member\":false,\"is_manager\":false,\"is_supervisor\":true,\"is_leadmember\":false},{\"id\":3,\"username\":\"testmanager\",\"name\":\"\",\"is_active\":true,\"email\":\"\",\"is_member\":false,\"is_manager\":true,\"is_supervisor\":false,\"is_leadmember\":false},{\"id\":4,\"username\":\"testuser\",\"name\":\"User Test\",\"is_active\":true,\"email\":\"a@b.nl\",\"is_member\":true,\"is_manager\":false,\"is_supervisor\":false,\"is_leadmember\":false},{\"id\":93,\"username\":\"testlead\",\"name\":\"\",\"is_active\":true,\"email\":\"\",\"is_member\":false,\"is_manager\":false,\"is_supervisor\":false,\"is_leadmember\":true},{\"id\":1,\"username\":\"superuser\",\"name\":\"Superuser\",\"is_active\":true,\"email\":\"hostmaster+pim3-test@ke-chain.com\",\"is_member\":false,\"is_manager\":false,\"is_supervisor\":false,\"is_leadmember\":true}],\"project_info\":[],\"start_date\":null,\"due_date\":null,\"workflow_root_id\":\"010d6604-45cb-48c4-8457-63f50826a48f\",\"catalog_root_id\":\"dfe4fc50-4962-4f9a-9481-7eb2da81742a\",\"app_root_id\":\"3ba384e4-2771-4f00-a082-b28f1653d026\",\"product_model_id\":\"98849124-1949-4603-9ea2-14994ba2020a\",\"product_instance_id\":\"a6073e4b-591a-4513-b270-9fa61ab2a3c3\",\"catalog_model_id\":\"b6614c51-255a-42e9-8328-41267e13da77\",\"catalog_instance_id\":\"90a3ce91-e816-410a-bc1a-16620145af23\"}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:46 GMT"], "Content-Type": ["application/json"], "Content-Length": ["1838"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, POST, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 200, "message": "OK"}, "url": "/api/v3/scopes.json?id=bd5dceaa-a35e-47b0-9fc5-875410f4a56f&fields=id%2Cname%2Cref%2Ctext%2Ccreated_at%2Cupdated_at%2Cstart_date%2Cdue_date%2Cstatus%2Ccategory%2Cprogress%2Cmembers%2Cteam%2Ctags%2Cscope_options%2Cteam_id_name%2Cworkflow_root_id%2Ccatalog_root_id%2Capp_root_id%2Cproduct_model_id%2Cproduct_instance_id%2Ccatalog_model_id%2Ccatalog_instance_id%2Cproject_info&limit=2"}, "recorded_at": "2025-01-22T14:20:46"}, {"request": {"body": {"encoding": "utf-8", "string": "--0c4108be13d41415505877d0e600b6db\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\ntest_upload_image.png\r\n--0c4108be13d41415505877d0e600b6db\r\nContent-Disposition: form-data; name=\"scope\"\r\n\r\nbd5dceaa-a35e-47b0-9fc5-875410f4a56f\r\n--0c4108be13d41415505877d0e600b6db\r\nContent-Disposition: form-data; name=\"category\"\r\n\r\nREFERENCED\r\n--0c4108be13d41415505877d0e600b6db\r\nContent-Disposition: form-data; name=\"classification\"\r\n\r\nSCOPED\r\n--0c4108be13d41415505877d0e600b6db\r\nContent-Disposition: form-data; name=\"file\"; filename=\"test_upload_image.png\"\r\n\r\n\ufffd\ufffd\ufffd\ufffd\u0000\u0010JFIF\u0000\u0001\u0001\u0000\u0000\u0001\u0000\u0001\u0000\u0000\ufffd\ufffd\u0000C\u0000\u0006\u0004\u0005\u0006\u0005\u0004\u0006\u0006\u0005\u0006\u0007\u0007\u0006\b\n\u0010\n\n\t\t\n\u0014\u000e\u000f\f\u0010\u0017\u0014\u0018\u0018\u0017\u0014\u0016\u0016\u001a\u001d%\u001f\u001a\u001b#\u001c\u0016\u0016 , #&')*)\u0019\u001f-0-(0%()(\ufffd\ufffd\u0000C\u0001\u0007\u0007\u0007\n\b\n\u0013\n\n\u0013(\u001a\u0016\u001a((((((((((((((((((((((((((((((((((((((((((((((((((\ufffd\ufffd\u0000\u0011\b\u0000i\u0000\ufffd\u0003\u0001\"\u0000\u0002\u0011\u0001\u0003\u0011\u0001\ufffd\ufffd\u0000\u001b\u0000\u0000\u0002\u0002\u0003\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0004\u0005\u0003\u0006\u0000\u0002\u0007\u0001\ufffd\ufffd\u0000E\u0010\u0000\u0002\u0001\u0002\u0004\u0005\u0001\u0003\u0007\b\t\u0003\u0005\u0000\u0000\u0000\u0001\u0002\u0003\u0004\u0011\u0000\u0005\u0012!\u0006\u00131AQa\u0014\"q\u00072B\ufffd\ufffd\ufffd\ufffd#356rt\ufffd\ufffd\u001547bs\ufffd\ufffd\ufffd\ufffd\u0016\ufffd\ufffd\u0017$Ru\ufffd\ufffd\ufffd\u0000\u001b\u0001\u0000\u0003\u0001\u0001\u0001\u0001\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0002\u0003\u0004\u0001\u0000\u0005\u0006\u0007\ufffd\ufffd\u00000\u0011\u0000\u0001\u0003\u0002\u0002\u0007\b\u0002\u0003\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0000\u0002\u0011\u0003!\u00121\u0004\u0005\u0013A\ufffd\ufffd\ufffd\u0014\"aq\ufffd\ufffd\ufffd\ufffd2Q\u0015#\ufffdR\ufffd\ufffd\u0000\f\u0003\u0001\u0000\u0002\u0011\u0003\u0011\u0000?\u0000m\u001d8\ufffd\ufffd\u000fL\u001c\ufffdzbQ\u0007\ufffd>\ufffd\ufffd_\ufffd6\ufffd%\ufffd\u000fL{\ufffd\ufffd\u0011\u000e=\ufffd\ufffdq\ufffdl\ufffd\ufffdN3\ufffd\ufffd\\\ufffdLg'\ufffd\u001d\ufffdn\ufffd-\ufffdc\ufffdV\u0018\u0018}1\ufffd'\ufffd\u001b\ufffdv\ufffd\u0001\ufffd\ufffd\ufffd\ufffd<\u001b\ufffd\u01e2,f5\ufffd\ufffdU\ufffd\u0012\ufffd~\ufffd!b\ufffd\u0129\u0017\ufffd\u0004\ufffd1\ufffdP$~\ufffd\ufffd#\ufffd\ufffd\ufffd\u001e%X\ufffd\ufffd\ufffdD\ufffd\ufffd\u00111\ufffdG\ufffd\ufffd<,\ufffd9\ufffdZ\ufffdbu\\b.&U\u008b\ufffd\ufffd\u0017\ufffd\ufffd\ufffdW\u001e\ufffd\ufffd\ufffdad\ufffd\ufffd\ufffd\u000b\ufffd\ufffd\ufffd\ufffd\u0018\ufffd\ufffd\ufffd\ufffd\ufffd\u0003YUO\u0005\ufffd#\ufffd [\ufffd\ufffd8Ytf\ufffd\tR\ufffd\u01daq[\ufffd\ufffd\ufffd\u0000\ufffdr\u5f39\ufffdR\ufffd:\ufffdN\f\ufffd\u001e\ufffd6\ufffdC2\ufffd`\ufffd\ufffd.M\ufffd4\ufffd\ufffd5L\ufffdw\ufffd\ufffd\ufffd\u315a\ufffd\u001b\ufffd[A\ufffd\ufffd.\ufffd\ufffd-\ufffd\ufffd\u000e\ufffd~W3\ufffdc\u000b\f4\u0014\ufffdK\ufffd\ufffd\u001a\ufffd\ufffd}.m\u007f\ufffd\ufffd\ufffd\ufffd\ufffd\u0004\ufffd\ufffdT+\ufffd,\u001e\ufffd\ufffdA\ufffd\u0016\u0645}]Pz\ufffd\ufffd\ufffd\ufffd?t\ufffd\ufffd\u04a0\u0001\ufffd[\ufffdw\ufffdL;\ufffd\u03e6\ufffd\f\ufffdT\ufffd\ufffdeL1\ufffd\ufffdL\ufffdJ\ufffd=C\u0003\ufffd[\r\ufffd\ufffd\ufffd\u01bcd\u0768\u007f\ufffdtY\ufffdu\ufffdO\ufffd^%AweQ\ufffd\ufffdlr\u0014\ufffd|\ufffddC\f\ufffd\b\r\ufffdF`\ufffd\ufffdbI7\ufffdo\ufffdc\ufffd\ufffd\ufffd3h\u0015cfZ\ufffdQ\ufffd\u03a4\u0005A\u0004w\"\ufffdm\u04e6\ufffd\u0017k\ufffd\u001d\ufffdsF\ufffdHg\ufffd\ufffdK\ufffd-E#N!I\ufffd\ufffd-\ufffd*\u001b\ufffd\ufffd\u0012@\ufffdT\u00050J\ufffdu\ufffd,w\ufffd\ufffd\ufffd\u001c\ufffds:\u001a\ufffdh)\ufffd\ufffdn\ufffd\u0101\ufffd\ufffd\ufffd~\ufffdaG\ufffd\ufffd\u000b\ufffd\ufffd\u0006\ufffd7\u0011\ufffd\u001d/\ufffd\ufffd\u0004\u0003\ufffd\ufffd\u00125\ufffdY\ufffd\ufffd\n\ufffd\ufffd(a\ufffd\ufffd<\u0015\ufffd\ufffd\ufffd1\ufffd>1To\ufffd\ufffd^%\ufffd\ufffd\u000b\ufffd*c\u0012\ufffdV\ufffd\ufffd\u0006\ufffd}w\u00dc\ufffd\ufffd\ufffdbz\ufffd5\u0019\ufffd\ufffdy\ufffdu\ufffdGN\ufffd|c\u04e5\ufffdhT\ufffd\u001ek\u02ab\ufffd\ufffdS\ufffd>I\ufffd\ufffd\ufffdc=\ufffd\ufffd\fr\ufffd\ufffd3*~}\f\ufffd\ufffd\u0016\ufffdR\u001f\u0018\ufffd(n\ufffd\u059eKtCp<\\\ufffd\u0018\ufffd\ufffd[\u001a1\u0013e;4G\ufffd\ufffdZ.\ufffd\ufffd=1\u001b\ufffdM\u0014\ufffd\f\ufffd\u0010\ufffd+\ufffd\ufffd\u0001?V&\ufffd\ufffd\ufffd$\ufffdj\ufffd\ufffd\ufffd5\ufffd\u0002\ufffdI\u048a6\ufffd\u000b\ufffd \u001bn|\ufffd\ufffd\u0000Ld\ufffdf\ufffdf\ufffd\ufffd\u065dr\ufffd\ufffd\ufffd\u0005\ufffd\ufffdH\ufffd6\ufffdXm\ufffd2\ufffd\ufffd\ufffd\ufffd\u0017\ufffdGR\ufffd\ufffd\ufffdw\u0000\ufffd\u0012f\ufffds>\ufffd\ua104\u0012\tE,\ufffd\u007fxm\ufffdq\ufffd\u0018]w\ufffd\ufffd\u0003\ufffds\ufffd\ufffd?\ufffde\ufffd\u0011$\ufffd/m\u001aI\u001e\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd&\ufffd\ufffd\ufffd\ufffd4\u0006HR;\ufffdk\ufffdm\ufffd\ufffd\u001dw\ufffdn\ufffd\ufffd\ufffd\ufffd\ufffd?+\ufffd\ufffdjz.\u001f\ufffdc\ufffdF\ufffdX\ufffdb\ufffd!\ufffd\ufffd\ufffdJ\ufffd\ufffd\ufffd\ufffd]j\u0019\ufffd\ufffd#\u0006;\ufffd\ufffd%\ufffd}\ufffd\r\u04ca\ufffd]W\u0015&}\u0002B\ufffdl&[\ufffd\ufffd\ufffd[\ufffd\u014d\ufffd4\ufffdce\ufffdU\ufffde\ufffd\u001f%dX\ufffd(\ufffd\u000bi8\ufffd\ufffd*A1\ufffd4B\ufffdI\u000f&\ufffd\u007f\ufffd\u000b8\ufffd\ufffd\u0013!\u1b26:\ufffdj\"\u032af:`\ufffd\ufffd\ufffd37\ufffdO\ufffdQ\ufffd\ufffdXohi\ufffd)\u0003Gt\ufffd+3(Dgr\u0015\u0014]\ufffd\ufffd\ufffd\u001eI\ufffdO\u0011\ufffd\ufffdd\u0019$\ufffdS\ufffd\ufffd]R\ufffd\u001d4\ufffd\ufffdI\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0012\ufffd>;\ufffd8\ufffd\u0135\ufffd\ufffd4ks\uc537T\ufffd\u9bfb\u001e\ufffdl1Y\ufffd0\ufffd\ufffd\ufffd\ufffd;\u0017\ufffd,\ufffd^\ufffd\ufffd\ufffd\ufffd3\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0017r\ufffd\u0019\ufffd\ufffd]o\ufffd(\ufffd\ufffd\ufffda\ufffdV\u0765&F}\ufffd[a\ufffdx\ufffd;\ufffds\ufffd\ufffd8\ufffdj\ufffd\u00b6Z\ufffd\ufffd\ufffd\u0001{(\u0003\ufffd\ufffd\u0000\ufffda\ufffd\t\u001c\ufffd\ufffd\ufffd\f\u1159\ufffd\u001e\ufffd_n\ufffd\ufffd%\ufffd\ufffd^*h\ufffd0l\u0019\ufffd\ufffdO\ufffda\u000f.z\ufffd\ufffd\u0018\u0302\ufffd\ufffd\ufffd&\u0010\ufffd*0a\ufffdF%A=\ufffd\ufffd\u0191O5\u0013\ufffd\ufffd\ufffd\ufffd\ufffd`\ufffd\u0016!\ufffd\ufffd\ufffdd\ufffd\u001e\u001av\ufffd\ufffdBUw7\u0017\ufffd\ufffd_\u001bSP\ufffd<,\ufffdT\ufffd\ufffd\ufffd\ufffd\u0005\ufffd\u001c/\u0001\u0016\ufffd\ufffd[\ufffd-4i\"]H\ufffd>s\u0002>\ufffd\ufffd\ufffd\u04f4\u0014\ufffd$|\ufffd\ufffdQ\u0018/\ufffd\u0018\ufffd\ufffdlf\u0012\ufffd'4`+\ufffd\ufffd\ufffd+\ufffdd:U\ufffd_}\ufffd\u000e\ufffd\ufffd\ufffd\u001cN\ufffdS\t}\ufffd\ufffd\ufffd`\u0000\ufffd\"\u0013h\ufffd\u001b\ufffd\ufffd\ufffdc\ufffd\u007f\ufffd\u0007\u000e-O8f\ufffd\bJ\u9c1b\u0777\ufffd\ufffdu\ufffd|\ufffd\ufffdT\ufffdC$9\ufffd\ufffd\ufffd*\ufffd9\ufffdH \ufffdlW|yf\u0000\ufffdU\u0006\ufffd\ufffd\ufffd\ufffd\u0358\ufffd\ufffdQ<\ufffd\ufffde\u0007S1\u0749\ufffd\ufffd\ufffd\ufffd\ufffdfU,2e\ufffd\ufffdW\ufffd$\u05c7L:\\\u0000\ufffd0\u0003Q\ufffdx;c\ufffd\ufffd\ufffdi\ufffdN^V\ufffdj\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdR\ufffd\ufffd{\ufffd[\u0001\ufffd\u061e\ufffd\ufffd\ufffd!\ufffd\ufffd\ufffdJ*\ufffd\ufffdE\ufffdT\ufffd\ufffdm\ufffd\u0003\ufffd2\u06d1\u00069qU\ufffd\u001ea\ufffds\ufffd\b\n\ufffdbM\ufffd'\ufffdlG\u0014\ufffd3\ufffdA\u001c\ufffd\ufffd\ufffd`|\ufffd\ufffd1\ufffd\u000f\ufffdW\n\ufffd\u0019\ufffd\ufffd\ufffdY\ufffd\u0000$J\u0540]z\u000e\ufffdcn\ufffd\u0003\ufffd\ufffd\ufffd\ufffd,\u04faf2\ufffd8\u0000\ufffd\ufffd(\ufffd\ufffdn\ufffd\ufffd\n\u0004f\ufffdf\ufffd\ufffd \ufffdz\ufffd*}\ufffdSr\u001dQ\ufffdq\ufffd\u0016\u04f9\ufffdk\ufffd\ufffdlOW\u00054Be\ufffd`\ufffd\ufffd\ufffd8\u001e\ufffd\u0010M\ufffd\ufffd\ufffd\u001e\ufffd\ufffd8\ufffd\u0012\ufffdA\ufffd\ufffdy\ufffdS\ufffd1R$\u042bJ\ufffdC\ufffd\u0000\ufffd\ufffd\u0007\ufffd\u0000\ufffdv'\n\ufffdn\n\ufffdz\u0018\ufffd\ufffds\ufffdM\"D\ufffd\ufffdy\ufffd\u0737\r\ufffd>\ufffd\ufffd\ufffd;\ufffd\\dNK\ufffd\n\ufffd\u0158X\ufffdW\u001e\ufffd\ufffd\u001e\ufffd\ufffd\ft\u0005\ufffd\ufffd\fr-\ufffd\ufffd\ufffd\u0015(\ufffd\ufffdE0sSRK\u0003#G\u0013(\ufffdF8\ufffd>\ufffd\ufffd\u001f\ufffd\u0001\u0019\ufffd\r<\ufffd\ufffd\u3d6e\nT\ufffd\f\ufffd\ufffd$\ufffd\u0007k^\ufffd\u060e\ufffdY TE\ufffd\ufffd\u0000\ufffd\u007f\ufffd:\u0006m\ufffd\ufffd\ufffd\ufffdJ\ufffd\ufffd;\ufffd\ufffd#R6\ufffdp\ufffd\u0015\ufffd\u0000\ufffdz\ufffd\ufffd\ufffd\ufffd>\u0201\ufffd\ufffd\ufffd\ufffd%\ufffdI\ufffd\ufffdUt\ufffd\ufffd:\ufffd\ufffd(\ufffdH\ufffdgO\"\u000b(\ufffd\ufffd\u06fe\u000b\ufffdxd\ufffdt\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdd\ufffd\ufffd\u000bLieX\u050d\ufffd[}C\ufffd\u00172r\ufffd@a\ufffdZ\ufffd(c \ufffd\u0016\ufffd\u0000\ufffd\u0015}\ufffdR\u05c3\ufffdK\ufffd8\u0003S\u0006U&@6\ufffdS\ufffd\u0010\ufffd\ufffd\u001dM21B\ufffd\ufffdm\ufffd\ufffd\ufffds\u0657\ufffd\u001bh\ufffd\ufffd\ufffdT;zj\ufffd\ufffd\u0000}022E\u001bH\ufffd\u001a\ufffdX\u0012\ufffd_\ufffd\ufffd\ufffd\n`\ufffd\ufffd2B*\ufffd\ufffd]8\ufffd\u001d^\u0015\ufffd\u000e\ufffd\ufffd\ufffd\ufffd6\ufffd\ufffd}\ufffd\ufffd\br \ufffd\ufffd\u0016Y\ufffdD\ufffd(\u000e\ufffd\u0002\u001bSL\ufffd0>F\ufffd\ufffd\ufffd9\ufffd\ufffd\u0012r\ufffd\u001aa\ufffdI^R\u001bJ\u0007\u0000y\ufffd\ufffd\ufffd1\ufffd\u0012\u0018a\ufffd\ufffd\ufffdO0\u0007\ufffd\ufffd\u001a\ufffdT\ufffd\ufffd\ufffd\u02d8\ufffdqKE\u0014\ufffdM\ufffdqn\ufffd\t\u001fg\ufffd\ufffd3N)\ufffd\ufffd\ufffd\u001a\ufffd\ufffd\u001f>\ufffd\ufffdzq\ufffdF\ufffd\ufffd\u0003a\u0731\u07fe\ufffd0\u0006\ufffdA\ufffd\ufffd\u00013\u0013\ufffdd\b\ufffdB\ufffdl\ufffd)i\ufffd\ufffd\ufffdz\ufffd\ufffd\u0014D\ufffd\u0002H?\u0010:[\u0004\ufffdp\ufffd*\ufffd#\ufffd-k\ufffd\ufffdX\u0005>\ufffd\ufffd\u07c9!\ufffd2\ufffd-\u001dUDB8\ufffd\u0015\u000b\ufffd\ufffdb\u01ed\ufffdK\ufffd\u007fLW\ufffd\u0014\ufffd\u0019Ua\ufffd\ufffd%\ufffd\u0019\ufffd+\ufffdHV>\ufffd\fH\ufffd\ufffd\u0003G/\ufffd\u0012\u022b3\ufffdJ5\ufffd\ufffd\ufffdtx\ufffdf\ufffd{\ufffdT\u0002\u0010v\ufffdW\ufffd\ufffd|p\u0013\ufffd-%R\u0192\ufffd\ufffd~j\ufffd\u0002\ufffd\u000b\ufffd\ufffd\ufffd\ufffd\u0006\u0000\ufffd\ufffd\ufffd'\ufffd\u0015\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd~RF*N\ufffdw\u0003M\ufffdk\r\ufffd\ufffd\ufffd%\u0015\u0016}M\ufffd9\u0015MQ@\ufffdn|a\ufffd\ufffdGMV\ufffd\ufffd\ufffd\ufffd\ufffd\u00018M\u0378\ufffd\ufffd\u0101\ufffd{})E\u0014\ufffd54U\ufffd\u001b\ufffd\u000b\ufffd\u001eQf \u0002\ufffd#\ufffd\ufffdm\ufffd\ufffd\u0019\ufffd\ufffdT\ufffd\ufffdR\ufffd\u001bSJ\ufffd\ufffd%e\f/k\ufffd\ufffd\ufffdqm\ufffd+\ufffd\ufffd\u05a4r\ufffd\\,\u02b3\ufffd\ufffdp\ufffd^\ufffd\u0012\ufffd6\ufffdo|\u0012\ufffd^\ufffd\ufffdJy\"\ufffd\ufffd\ufffdTQ3\ufffd\u001b\ufffd\ufffdA$\ufffd\ufffd\ufffde'\ufffd\u0002\u021e\ufffd\ufffd~\ufffd:\u00fa9\u000f\ufffd\ufffdJ\ufffd\ufffd>d\ufffd=\ufffd\ufffd\ufffdd7\ufffd\ufffd\u001f^\ufffd\ufffdll\ufffd\ufffdOO2\ufffd\u0537\ufffdm!\ufffd\ufffd\ufffd\ufffd{\ufffdU\ufffd\ufffd\\\ufffdx*\u23b1\ufffdY\ufffd]3rc6\ufffd\ufffd\\\u000e\ufffd\ufffd7\u0018\ufffd\ufffd:\ufffdT\ufffd\ufffdJ\ufffd\u001a\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdn\ufffd\u07b6\ufffdI\ufffd\u0003p1c_\u0003\ufffd\u05ea\ufffd\ufffd\u02cf{\ufffdEe\ufffd\ufffd\r\ufffd\ufffdP\ufffd\ufffdG+\u001dQ\ufffd\ufffd\ufffd\ufffd\ufffdX\ufffd\ufffd\ufffd\ufffd*\ufffd\ufffd\u24b3Cj\u00014\ufffdj\ufffd\u0000)\u001d\ufffd;\ufffd)\ufffd\ufffd\ufffd\ufffdAO\f\\\ufffd\u0015#\ufffd\ufffd\u0106=\ufffd\u052a\b\u001aM\ufffd\ufffd\ufffdy\u0190R\ufffd4\u0010$i)\ufffd\ufffdx\ufffd\u0003\ufffd4\ufffdz\ufffdk\ufffd\ufffd\u0004\ufffd5\ufffd-\u001dz\ufffd\ufffd\ufffdm\ufffd=z/3\f\ufffd\ufffd\u044c\u0011\ufffd\ufffdP\u074a&\ufffd&\ufffd\b\ufffd\ufffd\u0016\ufffd\ufffd\ufffd\n\ufffd\u0006c\u0014l\ufffd`WU\ufffd\ufffdm\ufffd&\ufffd7\ufffdsR'\u029a`\ufffdY\u0654\ufffdP\ufffd\ufffdV\ufffd\ufffd8&\ufffd1\u0014\ufffdO\u0004\ufffd4\ufffd\u001a\ufffd,\ufffd\ufffd\u001b\u07ee4\u04dd\ufffd\ufffd\ufffd\u0010q\u001b\ufffd\u05da\ufffd\ufffd:]$\ufffd\ufffd8\ufffd\ufffd\ufffdh\ufffd_\ufffd\ufffd\u0270\ufffd<\ufffd%\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0004\ufffdl\u0004\ufffdB\">!\ufffd\\}x+\ufffds\ufffd\ufffd\u007fi\ufffd\ufffdNB\ufffd}!\ufffd\ufffd\ufffd=\ufffd\ufffd\ufffd\ufffd\u0003g\ufffd@\u0553\ufffdp\ufffd\ufffd\u0003C\ufffd,\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdt\ufffd\u0010\ufffd-$\ufffd\u001f\ufffdF\u000b\ufffdx\ufffd?\ufffdE\ufffd\ufffd0\ufffd\ufffd\ufffdg\ufffd\ufffd\ufffdb\u0005\ufffdQ*\ufffd\ufffdF+(r\ufffdf\ufffd\u001cQ\u0002J\ufffd5\n\\\ufffdB\ufffd\ufffd\ufffd\ufffdi\u0015i*\ufffdf\u0016\ufffd\ufffd\ufffdM-\u001ca\u0000k\ufffd\ufffd\u0010w\ufffdb\ufffd\ufffdb\ufffd\ufffd\ufffdI\ufffdT\u0017`I\ufffd\ufffd\ufffd\ufffd^\ufffd\ufffd\ufffd\ufffdJ{L\\JZ\ufffd\u0019]D\ufffd\ufffd\ufffd:\ufffd\ufffdR\ufffd\ufffd\u00041\ufffd1\ufffd+\ufffd\ua8a9\ufffdOK\f\ufffdlH\ufffd.\ufffd\u001f\u0015\u044c\ufffd\u001ad\u001b4\u001e_\b\ufffdA\ufffd\u0000ds\ufffdM\ufffd\ufffd\ufffd+\u001a\ufffd0\ufffd\ufffd\ufffdR\u0013\ufffdj\ufffd\f{\ufffd\ufffd\ufffd\u077b\fD\ufffd\ufffd$\ufffd\ufffdE\\\ufffd%\ufffd<\ufffd\u0287\u0016\ufffdN\ufffd\ufffd1\ufffd\u0015RQRSL2\ufffd\ufffdi\t:\ufffde29\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd:Ir\ufffd\ufffd\ufffd\u0003\r\u0013\ufffd\u0541y\u0012\u0014(\ufffd\ufffd\ufffd\ufffdo\ufffd`\ufffd|&p\ufffd:\ufffd9\ufffd\ufffd\ufffdC\ufffd\u03565l\u0006|\ufffdY\u0011c%#y\u0018\u0007\u0000\ufffd\r\ufffd]\ufffd>~\ufffd0\ufffd\ufffd\ufffd\ufffd\ufffd*Z\f\ufffd\ufffdE:\ufffd\ufffd\ufffdV]\u0000*\ufffd\ufffd\ufffd\u0013\ufffd\ufffd 7\ufffd3\ufffd\ufffd\ufffdT\ufffdB\u0531T\ufffd\ufffd\f\ufffd\u0019\u00141\ufffdk\u0016\u0000\u000b\ufffd\ud170\u0016\u02a9\u7927\ufffdR\ufffd\ufffdT\ufffd\t$\ufffd\u0013\ufffd@w[\u000e\ufffd\ufffdm\ufffd\ufffdPt\ufffd\ufffd\ufffd8P\",\ufffd\ufffd\ufffd0\ufffdi\ufffd\ufffd*\ufffd\ufffdJUL!uI\ufffdS\ufffd\ufffdWS\ufffd\ufffdo\ufffd^\ufffd\ufffdb\ufffdR\ufffdM\u02d4\ufffd\ufffd\ufffd\u0015\ufffdoq{\u0012H\ufffd=p\ufffd4\ufffd!\ufffd+\ufffdb\ufffdi\"\ufffd\u0002\ufffd$\ufffd\ufffdeQ\u040f\ufffd\u0001c\u04f6\"\ufffd5\ufffd\u0357\ufffd\ufffd\ufffd\ufffd\ufffd\u0016I\ufffdO\ufffd\u0006\ufffd\ufffd\u0003n\ufffd\ufffdv\ufffd\ufffdx2H\u66f1\u0006\ufffdy\ufffde\ufffd\ufffd\ufffd\ufffd\u057e\ufffd#VE*\u0018\u0004\ufffd1V\u001d\ufffd\u001b\ufffd\ufffd\u001d0d\ufffd\ufffdn\ufffdQ\ufffdP\ufffd\ufffd\ufffd!\u0016\ufffd\ufffdH\u056fN\ufffd#\ufffd\u001b\u001f\ufffd\u0006\u007fIg\ufffdu)\u001c\ufffdH` $j4\ufffd\ufffd@-\ufffd\ufffd\ufffd<\ufffd\tsFz\ufffd\ufffd\ufffd\u0016\ufffdQ\u001e\ufffdd\ufffd.\ufffd\ufffd\ufffd$\r\ufffdQ\u3b70\u000f\ufffdZ\u007f(Z\ufffdN\ufffdj\ufffd5\u03b3\ufffd\ufffd\ufffd|\ufffdir\ufffd\ufffd\\,K \u0000\u0012-~\ufffd\u001b\ufffdm{`\\\ufffd>M\u0012\ufffd#QIPj\ufffd%$\ufffd\u0007fm\u0301\ufffd\ufffd;\ufffd\u0012G`0\ufffd\ufffd\ufffdyy\ufffd\u0019\\i\ufffd\ufffd\ufffd\ufffd\u0729\ufffd\ufffdH\ufffd\ufffd\ufffdaC\ufffd\u025aT\ufffdNd\ufffd\ufffd4ic\ufffd(\u015c\u000e\ufffd!\ufffd~\ufffdN\ufffd\u0012\ufffdOl\ufffd\u0003\ufffdSSDsE\u0321\ufffdof\ufffd\ufffd*\ufffd(^\ufffd4\ufffd\ufffd\ufffde\f\ufffdcpN\ufffd\u0000t\ufffda\ufffdre\ufffd\ufffd\ufffdqX\ufffdB\ufffd\r%B\ufffd\ufffd\u0000 \ufffd\ufffdCZ\ufffdf\ufffd\ufffd\u001bg\ufffd)S\ufffd\ufffd&m%\u001d+\ufffdcV\ufffdsU\"\ufffdq\u02f5\ufffd\ufffd\u001b\u001d\ufffd\ufffd\ufffd\ufffd\ufffd}\ufffd5\u000eA*5J;Q\ufffdV\ufffd\ufffd\u0010\ufffdU\u0571a\u071bw7\u001b\ufffd\u0003\u0005OMuH\ufffdpLB\ufffd`0lT\ufffdyeF]\ufffdR\ufffd\ufffd&m-,\ufffd<\ufffd\u0003J\u001d\ufffd\u0012\u0003[\ufffd\ufffd\ufffd\ufffdp\ufffd-\ufffd\ufffd7\ufffd\ufffd\u001d\ufffd\u02e3\ufffd\u02ac\u02a5\ufffdB\ufffd\ufffd\ufffdq\ufffd68\ufffd\ufffd\ufffduG\ufffd\ufffd\ufffd\ufffd,Re\ufffd:,\ufffd\u0010=\ud885\udecd&\ufffd\u001b\ufffd\ufffd\ufffd\ufffd6\ufffd\ufffdj^)\ufffd\u0015T\ufffd\ufffd\ufffdw\u490cF\u07d3\ufffd\t\ufffd\ufffd\ufffd/n\u07b8i\ufffdK\ufffd\u0006b\ufffdt\ufffdKe\ufffd\u001fY\ufffd\u00154\u0012SCAL\ufffd\ufffd\ufffd\ufffdA\ufffd#qb\ufffd\u0019\u07f6\ufffd\u0011\ufffd\ufffd\ufffd[:f\ufffdRKR\ufffd\ufffd\u001c\ufffd\ufffd\ufffd:\ufffd\ufffd\ufffd9\ucbe7\ufffd\u066e}A\ufffd\ufffd*\ufffdV\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0015E\ufffd\ufffdzB\u001dV\ufffdHR\ufffd\ufffd\t\ufffd\ufffdlK\ufffd\ufffd\ufffd\ufffdU\\4\ufffduL\ufffd\ufffd037&Er\ufffd\ufffd5\u0003\ufffd\ufffd\ufffd\u0017\ufffd\ufffd\ufffd\ufffd$@\ufffdo\ufffd\"u\u0019\ufffd/\ufffdG\ufffdE\ufffd\ufffd\ufffd\ufffd*h\u02c4\ufffd9P\ufffd\r\ufffd\ufffdZ\ufffd}\ufffd\u007f\ufffd\u0019UQM6T\ufffd\u000eg$Nd\u0003MDaT\ufffd\u0004\u0006\u000e\t\ufffd\ufffd\u001b\u0010;\ufffd\u0007\u0001_\ufffd\ufffd\ufffd\ufffd v\ufffdR\u04a4\ufffd\ufffdK\ufffd\u0003.\ufffd\ufffd\ufffd\u001d\ufffdK\u001d\ufffd\ufffd\r\ufffd\f\ufffd4\ufffd~D\ufffdmEV\\\ufffd{)\ufffdK6\ufffd\u0000\ufffda\ufffd\ufffd\u001b\u001e\ufffd\u000f\ufffdn\u0010K\ufffd\ufffdPk\ufffd\u001b)n[\ufffd*\ufffd\ufffd\ufffd\ufffd39\ufffd\ufffdW\ufffd\ufffd\\\ufffd\u0001$\u000b\ufffd\ufffd[\ufffd\ufffd\\4e\ufffd\ufffd\ufffd\\\ufffd04sS\u0013!\u0015!U\ufffdIk)R\r\ufffd{\ufffd\ufffd\ufffd_\ufffd\ufffd\ufffd\u0643\u0394p3\ufffd\ufffdURH\ufffdW\u0428&\ufffd\ufffd<\ufffd\u0007\ufffdg\u0015\ufffd\ufffd3ME\u0014R\ufffdye*B\ufffdA\ufffd\ufffdI\ufffd\ufffd\ufffd\u0015:\ufffdf\ufffd\ufffd\ufffd\\\u0432\ufffd^\"U\ufffd6\ufffd3\ufffdj:z\\\ufffd+\ufffd\b#\ufffd\ufffdK$\ufffd\ufffd\ufffd\ufffdC\ufffd\ufffd\u0000\ufffd5Yunc\r6g\ufffd\ufffd\u0000D\ufffdH\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0006\ufffd{\u001b\ufffd=\ufffd-\u0017\u0014%EZ\ufffdPj\u0003\ufffd\u0017\ufffdH\u0004\ufffdT\ufffd\u0000\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\t\ufffd\ufffd+\ufffdz\ufffd\ufffd\ufffd\ufffde\ufffdH\ufffd\ufffd\u052e\ufffd-\ufffd\ufffd_\ufffdno\ufffd\ufffd\ufffd\f\ufffd\ufffd:p\ufffdn[\u043fCh\ufffdS?j\ufffdO\ufffd\u0005\u0016Y\ufffdxM<\ufffdF\ufffd\ufffdI=\ufffd\ufffd\ufffd\ufffd{\ufffdqT\ufffdL\ufffd\ufffd\ufffd\ufffd6\ufffd\ufffd(K\\\ufffd\ufffd\"\u07a2\ufffd\ufffd\u0017\ufffd|7\ufffdus\u0435G\u000f\ufffd\u0002\u0578]\ufffd\ufffd\ufffd\ufffd\u06dfq\ufffd\ufffd>\u0018\ufffd0\ufffd\u001e*8Eug\"\ufffd6\ufffdD@@b:\ufffdca\ufffd\u04e9M\ufffd8O\ufffd\ufffd$\ufffd\ufffd\u0018/\ufffd-a\ufffdBS\ufffdV@\ufffd5\u0001D\ufffdIta\ufffdp\ufffd\ufffd3\u000b\ufffd\ufffdG\ufffd^\ufffd#\ufffd\ufffd;\u0007\u0010\ufffdH\ufffdF\u06e8\ufffd?\u001f\ufffd\ufffd`\ufffd\ufffd3\u00069{\"\ufffd\u000eby\ufffd\ufffd&O\ufffd\ufffdQU \ufffd\u02f2\ufffd \ufffd\ufffdq\u0004U\ufffd ~\ufffd?\ufffdk_a\u04ee\u0012M\ufffd$\ufffdd\ufffd\ufffd,\u0012*\u0000\ufffd\nHn\ufffd\ufffd(\u0017\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0015\ufffd\u0000\u0532\ufffd\ufffd\ufffd\u0000\u0018\u01df&?\ufffd\ufffdM\ufffd\u0000\ufffd\ufffd\u0000,y,!\ufffduR$\ufffdyO\ufffd\ufffd\ufffd\u07c7,\ufffd\u0015\u04c78\ufffd=\ufffd\ufffdi\ufffd:\u0006X\u041e\u007f\ufffd\ufffd.\u007f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd~ut\u000e\u066d\u0004h\ufffd+L\ufffd\ufffd\u0004o#[\ufffd;\u0013\ufffd\u0000\ufffd,\\\u0007\ufffdx\ufffd\ufffdy\u007f\ufffd\ufffdg\u07e7'\ufffd\u00006\"\ufffdT>\ufffd\ufffd[\u0004o\ufffd\ufffd\ufffd\ufffdh$\ufffdO\ufffd\u000e\u001c\ufffds\\\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdL^*I\r\ufffdS\ufffd\ufffd\ufffd\ufffd\ufffd0\u0013R\ufffdp\ufffdUd\ufffd}^_-\f\ufffd0\ufffd\ufffdUT\u001b\u000e\ufffdA\f\r\ufffd\ufffd\ufffd\ufffd\u0002\u02bf\ufffd\ufffd~\ufffd\u001f\ufffdp\u0007\ufffd\u000f\ufffd/\ufffd\ufffd\ufffd1\ufffd\ufffdV\ufffd\ufffd\ufffd\ufffdl\ufffd\bcq\f\u0566z\ufffd\u04b9cl\ufffd?\ufffd\ufffd\ufffd@\ufffd\u0019\ufffd\ufffd\ufffd\ufffdV%@\ufffd\b#q\ufffd\ufffd\ufffd\u0004\ufffdn[\ufffd\ufffd*\ufffd\ufffds\n\ufffdbI\u0013\ufffd`\ufffd\ufffdU\ufffd\u001eE\ufffd\ufffd\ufffd>1]\ufffd\ufffd\u007f\"\ufffd\u0000\u0012O\ufffd\u0017\u0016\ufffd\ufffdR\ufffd\ufffd\ufffd\ufffd)\ufffd4\ufffd\fy\b\u001dqF\ufffd\u0007J\ufffd\u047c9\ufffd\u059c\ufffd\ufffdT\ufffd\ufffd\ufffd\ufffd\ufffdB(\u001b\ufffd\ufffd\ufffdq\ufffd`\ufffd\ufffd\ufffdk\ufffd\"\ufffd\ufffd\ufffd\u0019S\ufffd\ufffd\ta\ufffd>\ufffd\ufffda\ufffdck[b\t\ufffd/\ufffdV]\ufffd\u0016\ufffd\ufffdQ\ufffd\ufffdX]\u009f\ufffdj?\ufffdo\ufffd1\u001dZ\ufffdq-\ufffd#\ufffd\ufffd\ufffde\ufffd\u0000\ufffd\ufffd\u001c\ufffd\ufffde\ufffd\ufffd\u000f>\ufffd\ufffdl\ufffd\ufffdC\u02a7i\u0011c\ufffdk\u0010\u0011\r\ufffdc\ufffdC{\ufffdo\ufffds\f\ufffdfq\b)\ufffdh\ufffd\ufffd%\u0796G\u0012\ufffdP\ufffd\ufffd{_\ufffd6#\u03ee.U\u007f\ufffd\ufffdo\u0757\ufffd\ufffd\n8\u0007\ufffdY\ufffd\ufffd\ufffd\ufffdl1\ufffd\u000b\u001aj\ufffd\ufffd$\ufffd\ufffd!\ufffd\ufffdL\ufffdJ\ufffdh\u8a68\ufffd\ufffd,\ufffd1T\ufffdT\u0221\ufffd;\u0011ot\ufffd_\ufffd\fj\ufffd\u031a\ufffd\ufffd0\u0013=\u0005\f\ufffd\ufffd\u001e\ufffd\ufffdx\ufffdK\r\ufffdn\u0000>\ufffd\u0007\ufffd\u0177\ufffd?Z*\u007fu\ufffd\ufffd\u000e\u0000\ufffdo\ufffd<\ufffd\ufffd\ufffd\ufffd\u0017\u001c\ufffd\ufffdT\r\ufffd'3\ufffd\ufffdk\u0003\ufffdO\ufffd%\u0206_\ufffdf\ufffd\u0011\ufffdKW\u0005Z\ufffdz`\u0006\ufffdl:\ufffd*\ufffd\u0017\u0004\u000b\\\ufffdq\ufffd\u0005\ufffd\u0015\tK6R\ufffdae\ufffdqQ\u0010d:\ufffdq\ufffd\ufffd6%T\ufffd\\\r\ufffd\ufffdl&\ufffd\ufffd\u0000\ufffd\ufffd\ufffd\ufffd\ufffd\u0000\ufffd.\ufffdc\ufffd\ufffd\ufffd\ufffd\ufffd\u0000I\ufffd\u02afs\u001f\ufffd\u001bD\ufffd\ufffd\ufffdx\u0012\ufffd\ufffd\ufffdVIG:\u001ajEJ\ufffd\ufffd\ufffdQM3\ufffd\u0017\ufffd\u0015=\u001a\ufffd\ufffdIKANx\ufffd\\\u01a6\ufffd1\ufffd\b\ufffd9rC\ufffdT\ufffd\u001e\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd|A\ufffd\u007f\ufffd\ufffd\ufffd\ufffd\u0017\ufffd\u001c_x\u0017\ufffdB\u007f\u069f\ufffd\u000e\u001d\ufffdsZ\u001d&\ufffd\ufffd`\ufffd\ufffd\ufffd](\ufffd\ufffd\ufffdks\ufffdC\ufffd\ufffd\ufffd\ufffdS\ufffd\u0327\ufffd)\ufffd\ufffd\ufffd\ufffd\ufffd\u0003\ufffd\ufffdqW\ufffd$Q\ufffdI\u001eS4\u0005\ufffd\ufffd`v\u0508T\ufffd\ufffd\ufffd=\ufffd\u001b[r\b;w\ufffd\ufffd;\ufffd\u000f\ufffd~\u073f\u00ca\ufffdq\ufffd\ufffd\u00bf\ufffd\ufffd\ufffdu\u001a\ufffdsZg;zM\ufffd\ufffd\ufffd-i\ufffd\ufffd*\ufffd\ufffd\u001c\ufffdY+\ufffdZ\ufffd\ufffd8\ufffd9\ufffdD(\ufffd\u00e3\ufffd\u061bx7\u00aa\ufffd\u001e\ufffd2\ufffd\u06ab0\ufffdZ\u0019b\ufffd\u0016\ufffd\u0000\ufffd:\ufffdu#pA\u061b\ufffd\u0006\ufffd0\udae3\udff4i\ufffd\u0000\ufffd\ufffd\ufffd\u0000f,\ufffdC\ufffd_\ufffd?a\ufffd\u0000\u07ca;S\ufffd\ufffdna\ufffd|}\ufffd\nRK\ufffd\ufffdT\ufffd\ufffd7\ufffd\ufffd\ufffd\\\ufffd\ufffd/\ufffdU\ufffd'\ufffd\ufffdi6\ufffdt\ufffd\ufffd\ufffd\ufffd\u0007K\ufffd9v}\f\ufffdgk\\\u001dP\ufffd\u0011\ufffd8\ufffd\u050d\ufffd^\ufffd\ufffd\ufffdbJ\ufffd\ufffd~\ufffd\ufffd\ufffdc&\ufffd\ufffdt%\ufffd0\ufffd\ufffd\ufffd\ufffd\r\n--0c4108be13d41415505877d0e600b6db--\r\n"}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "], "Content-Length": ["8161"], "Content-Type": ["multipart/form-data; boundary=0c4108be13d41415505877d0e600b6db"]}, "method": "POST", "uri": "/api/v3/stored_files/upload"}, "response": {"body": {"encoding": "utf-8", "string": "{\"results\":[{\"category\":\"REFERENCED\",\"created_at\":\"2025-01-22T14:20:46.712942Z\",\"classification\":\"SCOPED\",\"content_type\":\"image/jpeg\",\"derived_from\":null,\"description\":\"\",\"description_translations\":{\"it\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"nl\":\"\"},\"display_description\":\"\",\"display_name\":\"test_upload_image.png\",\"file\":{\"XS\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_4e176152-e447-40e9-aea0-9de80de03a07/test_upload_image-thumbnail-100x100.png?Expires=1737556247&Signature=Q5QnhYAgFEDzIdDl2MQxcx7fVVwkTHXRo71alZ6jejTyjPfQ~-jnguaXbtsVV1mRK9h62UpZTEwC1nuMsL86XK847zk7n3x8~wnpWx7jhDY9T4QOluO-nZkJ-99XkL0hkYx1Q6lVlwDXDZ~m5KJjT5ioXxekwpL9fR4nMB24-uyd2Wtmw1OM-DA1ABs918ub5khmDWNJuxByyleEJI6qcmYbGWZLQbZXLk4H-Dd4gcTs8YQ8Omj~zmv27-npv7I-Ke7wmJvYfdW1Q~R3DAPkICWAhOXVy8WbdrGHpSrSkUpNM2M08ilcxRZ9k8cO2FTmqcMM7Yn7etqHp3lx9S7dDw__&Key-Pair-Id=K35XCI687NDNBJ\",\"XL\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_4e176152-e447-40e9-aea0-9de80de03a07/test_upload_image-crop-c0-5__0-5-2048x2048.png?Expires=1737556247&Signature=cYBPr-cQQyfwXxCE~qPT2Q~WVWNFL7~ctlX-H0BRjoz-OkLQXCoG79L3Ur1GVerYF7jWo3Uy1jAgEAdZreabX6FWPyntcwAYHB-Tk7fUuEJziafhqhRNFswNdee0upbwmjswLmJ-e1dZopRpQseJ~GJBEz6xdIEmfFA9plG5vNCzm2tCww9XzPmFodKnBPdULvD-m9x6GrxS0U1G677PO8rdG1hLW9Ki~G7t1CwjGrX5dOQFM2QsYdFeISohtjDHXK5tQTOzeMzBlh3j1d86QVI1avwvk-958mYj-p9Kpy~HH-ui5liE9tyr91To7nUgONCZSwm~ZmznW9kUbAJ04A__&Key-Pair-Id=K35XCI687NDNBJ\",\"S\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_4e176152-e447-40e9-aea0-9de80de03a07/test_upload_image-thumbnail-320x320.png?Expires=1737556247&Signature=N6jp1b96mAeF~abXkJWs1dRH1IXhjXEKEPpSezZ~glY4WzOMvUVdmtGl2S~91AEaDKfte3JZ-ygEQWIE-pES9mozsbKm5GRoIwvpmWxGczp-hK5oSJmVleZDJLpsgPMvfSQd1rLy4fY7sDsGnUUAtLuM9r2AbiENoeYSIplqrMRPxtFxa2Q~7RiqVfNuwXuTtiSMdSsqRUh-xNp7jdptleg6DYDxNxSt4nqtTsrCxWyhWH5j29wcwdUbmPSVcfFGhsjydFxkVQ3AvgvVFxynhTuBJ0d~mU0ijgLPXu5Iy86SeQ5Ye1GbDvCQilUsIOYQyFp05VYM4WXOpb4ImCa0rQ__&Key-Pair-Id=K35XCI687NDNBJ\",\"L\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_4e176152-e447-40e9-aea0-9de80de03a07/test_upload_image-crop-c0-5__0-5-1024x1024.png?Expires=1737556247&Signature=gJ4gul4~8Oye~ooh7dhBtMPQwIBdPM6OBQcS4ucWWJ1ZnrUkDlboHHtErLx1NiwkalmeH5d6vRErGgXQO0wvXR8PUGp8uZ~O4tL4shOjNxf0ScLMm-fELOiF49bWs~Z8teBW-zQR8uexP7UVDTQu-U3TRwT4XsBIVXaCTt6qYdn3vbA04Rm4zcrr9xMaEZFP0erTgJei6KnI~rNCqVQ3-sAUZ5DOzVpwtyKNC8bORx5Hse0r4AeBz-3k4S1xI2gezaRszp2Z635aHOvKJkjiLOQv2I4dKOX0Ligle3oN8lSXz5uRWI2AzpKUQvCYdRPQAWu1YPCo1~iKYxzvLe2nWQ__&Key-Pair-Id=K35XCI687NDNBJ\",\"M\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_4e176152-e447-40e9-aea0-9de80de03a07/test_upload_image-crop-c0-5__0-5-640x640.png?Expires=1737556247&Signature=J~~r6vdhpKTQtrnlaroazaGikaqWRJ7v5DAkZ1b4mCLTr8SmRlVKGcVYZ5w3FOEeRR1MLoMt7huOjEdAsb3TV9wzLPUg8xuMY2ugIw~bVdjfnzIk2-2NdSmfpVumnCzQ~cRVP~0XuoI~~EVQsp4HumCvm10bPO4ydgEVBM-XYxVPuCSVK-OpNLBSwtNW1sd0AdMZ8uTK5WvyFD~VtYMGcc~k9fPz2in-8~0ERPGEsi8pfyC2odTNkEEaPk~YNMUdALyOdR1S8l7daKQbhkffbS5dVzyvgNJ3Wsc3AEu5SXKvSQC7Ia1xRIEV87UZxsy1lz2HsA80FjvfwY2ecwm9AQ__&Key-Pair-Id=K35XCI687NDNBJ\",\"full_size\":\"https://media.cdn.ke-chain.com/pim3-test/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_4e176152-e447-40e9-aea0-9de80de03a07/test_upload_image.png?Expires=1737556247&Signature=XBKCFRn66OvwwHTnEp9eUHOOyKI01Z2swRWs9HNXnaoQbKwLNp9QDmCREC~NwRT6A4e2TzjjC7p5eSrnZDkthEJvDgWu3m82bVNYcY7ugFXxKvmf3IzIpRbw~rA1jclOzBzbRIxavAjfqat8RmBcQ6UagKW1q41mYYmfszB7uMWG3tGDujx58EjOnycNKv~WTmdqNG3bmMlXKfrMZc-5-~Zt0Zsosk5P5fdkJrTN6AaisL6XmNf-tmDt80jZpH7oEugHlUofMXBarQ0Y97wa3UnUROQ2uK8ayXVPZp2avpDCB3a~2H13nVIgZ3GGuNpCc73~fjYzkCQQ7X~FvCHFCg__&Key-Pair-Id=K35XCI687NDNBJ\"},\"file_type\":\"IMAGE\",\"form_collections\":[],\"id\":\"4e176152-e447-40e9-aea0-9de80de03a07\",\"is_hidden\":false,\"meta\":{},\"name\":\"test_upload_image.png\",\"name_translations\":{\"it\":\"\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"nl\":\"\"},\"options\":{},\"permissions\":{\"create\":true,\"update\":true,\"destroy\":true,\"read\":true},\"ref\":\"test_upload_imagepng-4\",\"scope\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"tags\":[],\"updated_at\":\"2025-01-22T14:20:46.712960Z\"}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:47 GMT"], "Content-Type": ["application/json"], "Content-Length": ["4266"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["POST, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 201, "message": "Created"}, "url": "/api/v3/stored_files/upload"}, "recorded_at": "2025-01-22T14:20:47"}, {"request": {"body": {"encoding": "utf-8", "string": "{\"value\": [\"4e176152-e447-40e9-aea0-9de80de03a07\"]}"}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "], "Content-Length": ["51"], "Content-Type": ["application/json"]}, "method": "PUT", "uri": "/api/v3/properties/62b8cadc-e963-4a9a-ad87-1a8a8f9d6bb8.json?fields=id%2Cname%2Cref%2Ccreated_at%2Cupdated_at%2Cmodel_id%2Cpart_id%2Corder%2Cscope_id%2Ccategory%2Cproperty_type%2Cvalue%2Cvalue_options%2Coutput%2Cdescription%2Cunit"}, "response": {"body": {"encoding": "utf-8", "string": "{\"results\":[{\"id\":\"62b8cadc-e963-4a9a-ad87-1a8a8f9d6bb8\",\"name\":\"__Test MAP property\",\"ref\":\"test-map-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"INSTANCE\",\"order\":13,\"unit\":\"unit of the property\",\"value_options\":{\"validators\":[{\"vtype\":\"singleReferenceValidator\",\"config\":{}}]},\"value\":[{\"id\":\"4e176152-e447-40e9-aea0-9de80de03a07\",\"name\":\"test_upload_image.png\"}],\"created_at\":\"2025-01-22T14:20:45.138292Z\",\"updated_at\":\"2025-01-22T14:20:47.179401Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"e440f330-fd36-4421-810e-510f166ffe12\",\"output\":true}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:47 GMT"], "Content-Type": ["application/json"], "Content-Length": ["685"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, PUT, PATCH, DELETE, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 200, "message": "OK"}, "url": "/api/v3/properties/62b8cadc-e963-4a9a-ad87-1a8a8f9d6bb8.json?fields=id%2Cname%2Cref%2Ccreated_at%2Cupdated_at%2Cmodel_id%2Cpart_id%2Corder%2Cscope_id%2Ccategory%2Cproperty_type%2Cvalue%2Cvalue_options%2Coutput%2Cdescription%2Cunit"}, "recorded_at": "2025-01-22T14:20:47"}, {"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "]}, "method": "GET", "uri": "/api/v3/properties/62b8cadc-e963-4a9a-ad87-1a8a8f9d6bb8.json?fields=id%2Cname%2Cref%2Ccreated_at%2Cupdated_at%2Cmodel_id%2Cpart_id%2Corder%2Cscope_id%2Ccategory%2Cproperty_type%2Cvalue%2Cvalue_options%2Coutput%2Cdescription%2Cunit"}, "response": {"body": {"encoding": "utf-8", "string": "{\"results\":[{\"id\":\"62b8cadc-e963-4a9a-ad87-1a8a8f9d6bb8\",\"name\":\"__Test MAP property\",\"ref\":\"test-map-property\",\"description\":\"description of the property\",\"property_type\":\"STOREDFILE_REFERENCES_VALUE\",\"category\":\"INSTANCE\",\"order\":13,\"unit\":\"unit of the property\",\"value_options\":{\"validators\":[{\"vtype\":\"singleReferenceValidator\",\"config\":{}}]},\"value\":[{\"id\":\"4e176152-e447-40e9-aea0-9de80de03a07\",\"name\":\"test_upload_image.png\"}],\"created_at\":\"2025-01-22T14:20:45.138292Z\",\"updated_at\":\"2025-01-22T14:20:47.179401Z\",\"part_id\":\"96e4986d-3989-473e-9d70-8d71824d1818\",\"scope_id\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"model_id\":\"e440f330-fd36-4421-810e-510f166ffe12\",\"output\":true}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:47 GMT"], "Content-Type": ["application/json"], "Content-Length": ["685"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, PUT, PATCH, DELETE, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 200, "message": "OK"}, "url": "/api/v3/properties/62b8cadc-e963-4a9a-ad87-1a8a8f9d6bb8.json?fields=id%2Cname%2Cref%2Ccreated_at%2Cupdated_at%2Cmodel_id%2Cpart_id%2Corder%2Cscope_id%2Ccategory%2Cproperty_type%2Cvalue%2Cvalue_options%2Coutput%2Cdescription%2Cunit"}, "recorded_at": "2025-01-22T14:20:47"}, {"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "]}, "method": "GET", "uri": "/api/v3/stored_files?id__in=4e176152-e447-40e9-aea0-9de80de03a07&fields=id%2Cname%2Ccategory%2Cscope%2Cclassification%2Cfile%2Ccontent_type%2Cdescription%2Ccreated_at%2Cupdated_at%2Ctags"}, "response": {"body": {"encoding": "utf-8", "string": "{\"results\":[{\"category\":\"REFERENCED\",\"created_at\":\"2025-01-22T14:20:46.712942Z\",\"classification\":\"SCOPED\",\"content_type\":\"image/jpeg\",\"description\":\"\",\"file\":{\"XS\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_4e176152-e447-40e9-aea0-9de80de03a07/test_upload_image-thumbnail-100x100.png?Expires=1737556247&Signature=Q5QnhYAgFEDzIdDl2MQxcx7fVVwkTHXRo71alZ6jejTyjPfQ~-jnguaXbtsVV1mRK9h62UpZTEwC1nuMsL86XK847zk7n3x8~wnpWx7jhDY9T4QOluO-nZkJ-99XkL0hkYx1Q6lVlwDXDZ~m5KJjT5ioXxekwpL9fR4nMB24-uyd2Wtmw1OM-DA1ABs918ub5khmDWNJuxByyleEJI6qcmYbGWZLQbZXLk4H-Dd4gcTs8YQ8Omj~zmv27-npv7I-Ke7wmJvYfdW1Q~R3DAPkICWAhOXVy8WbdrGHpSrSkUpNM2M08ilcxRZ9k8cO2FTmqcMM7Yn7etqHp3lx9S7dDw__&Key-Pair-Id=K35XCI687NDNBJ\",\"XL\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_4e176152-e447-40e9-aea0-9de80de03a07/test_upload_image-crop-c0-5__0-5-2048x2048.png?Expires=1737556247&Signature=cYBPr-cQQyfwXxCE~qPT2Q~WVWNFL7~ctlX-H0BRjoz-OkLQXCoG79L3Ur1GVerYF7jWo3Uy1jAgEAdZreabX6FWPyntcwAYHB-Tk7fUuEJziafhqhRNFswNdee0upbwmjswLmJ-e1dZopRpQseJ~GJBEz6xdIEmfFA9plG5vNCzm2tCww9XzPmFodKnBPdULvD-m9x6GrxS0U1G677PO8rdG1hLW9Ki~G7t1CwjGrX5dOQFM2QsYdFeISohtjDHXK5tQTOzeMzBlh3j1d86QVI1avwvk-958mYj-p9Kpy~HH-ui5liE9tyr91To7nUgONCZSwm~ZmznW9kUbAJ04A__&Key-Pair-Id=K35XCI687NDNBJ\",\"S\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_4e176152-e447-40e9-aea0-9de80de03a07/test_upload_image-thumbnail-320x320.png?Expires=1737556247&Signature=N6jp1b96mAeF~abXkJWs1dRH1IXhjXEKEPpSezZ~glY4WzOMvUVdmtGl2S~91AEaDKfte3JZ-ygEQWIE-pES9mozsbKm5GRoIwvpmWxGczp-hK5oSJmVleZDJLpsgPMvfSQd1rLy4fY7sDsGnUUAtLuM9r2AbiENoeYSIplqrMRPxtFxa2Q~7RiqVfNuwXuTtiSMdSsqRUh-xNp7jdptleg6DYDxNxSt4nqtTsrCxWyhWH5j29wcwdUbmPSVcfFGhsjydFxkVQ3AvgvVFxynhTuBJ0d~mU0ijgLPXu5Iy86SeQ5Ye1GbDvCQilUsIOYQyFp05VYM4WXOpb4ImCa0rQ__&Key-Pair-Id=K35XCI687NDNBJ\",\"L\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_4e176152-e447-40e9-aea0-9de80de03a07/test_upload_image-crop-c0-5__0-5-1024x1024.png?Expires=1737556247&Signature=gJ4gul4~8Oye~ooh7dhBtMPQwIBdPM6OBQcS4ucWWJ1ZnrUkDlboHHtErLx1NiwkalmeH5d6vRErGgXQO0wvXR8PUGp8uZ~O4tL4shOjNxf0ScLMm-fELOiF49bWs~Z8teBW-zQR8uexP7UVDTQu-U3TRwT4XsBIVXaCTt6qYdn3vbA04Rm4zcrr9xMaEZFP0erTgJei6KnI~rNCqVQ3-sAUZ5DOzVpwtyKNC8bORx5Hse0r4AeBz-3k4S1xI2gezaRszp2Z635aHOvKJkjiLOQv2I4dKOX0Ligle3oN8lSXz5uRWI2AzpKUQvCYdRPQAWu1YPCo1~iKYxzvLe2nWQ__&Key-Pair-Id=K35XCI687NDNBJ\",\"M\":\"https://media.cdn.ke-chain.com/pim3-test/__sized__/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_4e176152-e447-40e9-aea0-9de80de03a07/test_upload_image-crop-c0-5__0-5-640x640.png?Expires=1737556247&Signature=J~~r6vdhpKTQtrnlaroazaGikaqWRJ7v5DAkZ1b4mCLTr8SmRlVKGcVYZ5w3FOEeRR1MLoMt7huOjEdAsb3TV9wzLPUg8xuMY2ugIw~bVdjfnzIk2-2NdSmfpVumnCzQ~cRVP~0XuoI~~EVQsp4HumCvm10bPO4ydgEVBM-XYxVPuCSVK-OpNLBSwtNW1sd0AdMZ8uTK5WvyFD~VtYMGcc~k9fPz2in-8~0ERPGEsi8pfyC2odTNkEEaPk~YNMUdALyOdR1S8l7daKQbhkffbS5dVzyvgNJ3Wsc3AEu5SXKvSQC7Ia1xRIEV87UZxsy1lz2HsA80FjvfwY2ecwm9AQ__&Key-Pair-Id=K35XCI687NDNBJ\",\"full_size\":\"https://media.cdn.ke-chain.com/pim3-test/storedfiles/s_bd5dceaa-a35e-47b0-9fc5-875410f4a56f/f_4e176152-e447-40e9-aea0-9de80de03a07/test_upload_image.png?Expires=1737556247&Signature=XBKCFRn66OvwwHTnEp9eUHOOyKI01Z2swRWs9HNXnaoQbKwLNp9QDmCREC~NwRT6A4e2TzjjC7p5eSrnZDkthEJvDgWu3m82bVNYcY7ugFXxKvmf3IzIpRbw~rA1jclOzBzbRIxavAjfqat8RmBcQ6UagKW1q41mYYmfszB7uMWG3tGDujx58EjOnycNKv~WTmdqNG3bmMlXKfrMZc-5-~Zt0Zsosk5P5fdkJrTN6AaisL6XmNf-tmDt80jZpH7oEugHlUofMXBarQ0Y97wa3UnUROQ2uK8ayXVPZp2avpDCB3a~2H13nVIgZ3GGuNpCc73~fjYzkCQQ7X~FvCHFCg__&Key-Pair-Id=K35XCI687NDNBJ\"},\"id\":\"4e176152-e447-40e9-aea0-9de80de03a07\",\"name\":\"test_upload_image.png\",\"scope\":\"bd5dceaa-a35e-47b0-9fc5-875410f4a56f\",\"tags\":[],\"updated_at\":\"2025-01-22T14:20:46.712960Z\"}]}"}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:47 GMT"], "Content-Type": ["application/json"], "Content-Length": ["3866"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, POST, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 200, "message": "OK"}, "url": "/api/v3/stored_files?id__in=4e176152-e447-40e9-aea0-9de80de03a07&fields=id%2Cname%2Ccategory%2Cscope%2Cclassification%2Cfile%2Ccontent_type%2Cdescription%2Ccreated_at%2Cupdated_at%2Ctags"}, "recorded_at": "2025-01-22T14:20:47"}, {"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["python-requests/2.32.3"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["*/*"], "Connection": ["keep-alive"], "X-Requested-With": ["XMLHttpRequest"], "PyKechain-Version": ["4.15.0"], "Authorization": ["Token "], "Content-Length": ["0"]}, "method": "DELETE", "uri": "/api/v3/properties/e440f330-fd36-4421-810e-510f166ffe12.json"}, "response": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"Server": ["nginx/1.22.1"], "Date": ["Wed, 22 Jan 2025 14:20:47 GMT"], "Content-Type": ["application/json"], "Content-Length": ["14"], "Connection": ["keep-alive"], "vary": ["Accept, Accept-Language, Cookie"], "allow": ["GET, PUT, PATCH, DELETE, HEAD, OPTIONS"], "x-frame-options": ["SAMEORIGIN"], "content-language": ["en", "En"], "strict-transport-security": ["max-age=15768000; includeSubDomains"], "x-content-type-options": ["nosniff"], "referrer-policy": ["same-origin"], "cross-origin-opener-policy": ["same-origin"], "Ke-Chain": ["3"]}, "status": {"code": 204, "message": "No Content"}, "url": "/api/v3/properties/e440f330-fd36-4421-810e-510f166ffe12.json"}, "recorded_at": "2025-01-22T14:20:47"}], "recorded_with": "betamax/0.9.0"} \ No newline at end of file diff --git a/tests/test_properties_multi_attachment.py b/tests/test_properties_multi_attachment.py new file mode 100644 index 00000000..622e4245 --- /dev/null +++ b/tests/test_properties_multi_attachment.py @@ -0,0 +1,60 @@ +import os +from pathlib import Path + +from pykechain.enums import PropertyType +from pykechain.models.stored_file import StoredFile +from pykechain.models.validators import SingleReferenceValidator +from tests.classes import TestBetamax + + +class TestMultiAttachmentProperties(TestBetamax): + def setUp(self): + super().setUp() + self.test_files_dir = os.path.dirname( + os.path.dirname(os.path.abspath(__file__)).replace("\\", "/") + ) + self.upload_path = os.path.join( + self.test_files_dir, + "tests", + "files", + "test_upload_image_to_attachment_property", + "test_upload_image.png", + ) + + self.wheel_model = self.project.model("Wheel") + self.bike_model = self.project.model("Bike") + self.prop_name = "__Test MAP property" + self.prop_model = self.bike_model.add_property( + name=self.prop_name, + property_type=PropertyType.STOREDFILE_REFERENCES_VALUE, + description="description of the property", + unit="unit of the property", + validators=[SingleReferenceValidator], + ) + self.bike = self.bike_model.instance() + self.prop = self.bike.property(name=self.prop_name) + + def tearDown(self): + if self.prop_model: + self.prop_model.delete() + super().tearDown() + + def test_get_multi_attachment_property_single_ref_validators(self): + self.prop_model.validators = (SingleReferenceValidator(),) + self.prop.refresh() + self.assertTrue(self.prop.has_validator(SingleReferenceValidator)) + + def test_single_stored_file_references_property_value_gets_replaces(self): + self.prop_model.validators = (SingleReferenceValidator(),) + self.prop.refresh() + self.prop.upload(self.upload_path) + self.prop.refresh() + self.assertIsInstance(self.prop.value, list) + self.assertEqual(len(self.prop.value), 1) + self.assertIsInstance(self.prop.value[0], StoredFile) + + # replace + self.prop.upload(self.upload_path) + self.prop.refresh() + self.assertEqual(len(self.prop.value), 1) + self.assertIsInstance(self.prop.value[0], StoredFile)