Files.com 1.6.480__tar.gz → 1.6.482__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {files_com-1.6.480/files_com.egg-info → files_com-1.6.482}/PKG-INFO +1 -1
- files_com-1.6.482/_VERSION +1 -0
- {files_com-1.6.480 → files_com-1.6.482/files_com.egg-info}/PKG-INFO +1 -1
- {files_com-1.6.480 → files_com-1.6.482}/files_com.egg-info/SOURCES.txt +1 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/__init__.py +1 -1
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/api_client.py +27 -2
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/bundle.py +5 -4
- {files_com-1.6.480 → files_com-1.6.482}/pyproject.toml +1 -1
- files_com-1.6.482/tests/test_redirect_auth.py +92 -0
- files_com-1.6.480/_VERSION +0 -1
- {files_com-1.6.480 → files_com-1.6.482}/LICENSE +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/README.md +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_com.egg-info/dependency_links.txt +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_com.egg-info/requires.txt +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_com.egg-info/top_level.txt +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/api.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/error.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/list_obj.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/__init__.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/account_line_item.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/action.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/action_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/action_notification_export.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/action_notification_export_result.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/agent_node.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/agent_node_connection.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/agent_node_instance.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/agent_push_update.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/ai_assistant_personality.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/ai_task.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/api_key.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/api_request_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/app.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/as2_incoming_message.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/as2_outgoing_message.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/as2_partner.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/as2_station.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/auto.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/automation.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/automation_authoring_schema.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/automation_execution_node.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/automation_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/automation_run.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/bandwidth_snapshot.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/behavior.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/bundle_action.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/bundle_download.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/bundle_notification.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/bundle_path.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/bundle_recipient.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/bundle_registration.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/chat_message.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/chat_session.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/child_site_management_policy.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/clickwrap.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/custom_domain.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/desktop_configuration_profile.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/direct_connection_info.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/dns_record.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/email_incoming_message.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/email_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/errors.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/event_channel.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/event_delivery_attempt.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/event_record.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/event_subscription.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/event_target.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/exavault_api_request_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/expectation.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/expectation_evaluation.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/expectation_incident.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/external_event.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/file.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/file_action.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/file_comment.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/file_comment_reaction.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/file_migration.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/file_migration_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/file_upload_part.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/folder.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/form_field.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/form_field_set.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/ftp_action_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/gpg_key.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/group.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/group_user.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/history.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/history_export.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/history_export_result.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/holiday_calendar.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/holiday_region.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/image.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/inbound_s3_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/inbox_recipient.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/inbox_registration.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/inbox_upload.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/integration_centric_profile.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/invoice.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/invoice_line_item.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/ip_address.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/key_lifecycle_rule.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/lock.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/metadata_category.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/notification.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/outbound_connection_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/partner.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/partner_channel.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/partner_channel_template.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/partner_connection.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/partner_site.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/partner_site_request.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/payment.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/payment_line_item.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/pending_work_event.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/permission.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/preview.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/public_hosting_request_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/public_ip_address.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/public_key.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/remote_bandwidth_snapshot.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/remote_mount_backend.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/remote_server.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/remote_server_configuration_file.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/remote_server_credential.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/request.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/restore.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/schedule.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/scheduled_export.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/scim_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/secret.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/session.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/settings_change.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/sftp_action_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/sftp_host_key.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/share_group.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/share_group_member.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/siem_http_destination.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/siem_http_destination_event.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/site.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/site_subdomain_redirect.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/snapshot.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/sso_event.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/sso_strategy.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/status.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/style.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/sync.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/sync_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/sync_run.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/sync_run_live_transfer.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/usage_by_top_level_dir.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/usage_daily_snapshot.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/usage_snapshot.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/user.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/user_additional_email_recipient.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/user_cipher_use.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/user_lifecycle_rule.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/user_request.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/user_security_event.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/user_sftp_client_use.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/web_dav_action_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/webhook_test.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/workspace.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/zip_list_entry.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/path_util.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/files_sdk/util.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/setup.cfg +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_account_line_item.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_action.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_action_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_action_notification_export.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_action_notification_export_result.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_agent_node.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_agent_node_connection.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_agent_node_instance.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_agent_push_update.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_ai_assistant_personality.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_ai_task.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_api_errors.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_api_key.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_api_request_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_app.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_as2_incoming_message.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_as2_outgoing_message.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_as2_partner.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_as2_station.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_auto.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_automation.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_automation_authoring_schema.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_automation_execution_node.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_automation_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_automation_run.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_bandwidth_snapshot.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_behavior.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_bundle.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_bundle_action.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_bundle_download.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_bundle_notification.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_bundle_path.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_bundle_recipient.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_bundle_registration.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_chat_message.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_chat_session.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_child_site_management_policy.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_clickwrap.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_connection_adapter.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_custom_domain.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_decimal_contract.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_desktop_configuration_profile.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_direct_connection_info.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_dns_record.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_email_incoming_message.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_email_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_errors.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_event_channel.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_event_delivery_attempt.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_event_record.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_event_subscription.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_event_target.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_exavault_api_request_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_expectation.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_expectation_evaluation.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_expectation_incident.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_external_event.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_file.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_file_action.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_file_comment.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_file_comment_reaction.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_file_migration.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_file_migration_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_file_underscore_destinations.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_file_upload_part.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_folder.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_form_field.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_form_field_set.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_ftp_action_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_gpg_key.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_group.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_group_user.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_history.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_history_export.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_history_export_result.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_holiday_calendar.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_holiday_region.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_image.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_inbound_s3_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_inbox_recipient.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_inbox_registration.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_inbox_upload.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_integration_centric_profile.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_invoice.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_invoice_line_item.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_ip_address.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_key_lifecycle_rule.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_lock.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_metadata_category.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_notification.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_outbound_connection_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_partner.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_partner_channel.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_partner_channel_template.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_partner_connection.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_partner_site.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_partner_site_request.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_path_parameter_encoding.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_path_util.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_payment.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_payment_line_item.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_pending_work_event.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_permission.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_preview.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_public_hosting_request_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_public_ip_address.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_public_key.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_remote_bandwidth_snapshot.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_remote_mount_backend.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_remote_server.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_remote_server_configuration_file.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_remote_server_credential.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_request.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_restore.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_schedule.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_scheduled_export.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_scim_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_secret.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_session.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_settings_change.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_sftp_action_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_sftp_host_key.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_share_group.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_share_group_member.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_siem_http_destination.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_siem_http_destination_event.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_site.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_site_subdomain_redirect.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_snapshot.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_sso_event.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_sso_strategy.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_status.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_stream_download.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_style.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_sync.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_sync_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_sync_run.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_sync_run_live_transfer.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_usage_by_top_level_dir.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_usage_daily_snapshot.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_usage_snapshot.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_user.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_user_additional_email_recipient.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_user_cipher_use.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_user_lifecycle_rule.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_user_request.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_user_security_event.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_user_sftp_client_use.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_web_dav_action_log.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_webhook_test.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_workspace.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_workspace_id.py +0 -0
- {files_com-1.6.480 → files_com-1.6.482}/tests/test_zip_list_entry.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.6.482
|
|
@@ -268,6 +268,7 @@ tests/test_preview.py
|
|
|
268
268
|
tests/test_public_hosting_request_log.py
|
|
269
269
|
tests/test_public_ip_address.py
|
|
270
270
|
tests/test_public_key.py
|
|
271
|
+
tests/test_redirect_auth.py
|
|
271
272
|
tests/test_remote_bandwidth_snapshot.py
|
|
272
273
|
tests/test_remote_mount_backend.py
|
|
273
274
|
tests/test_remote_server.py
|
|
@@ -2,7 +2,7 @@ import json
|
|
|
2
2
|
import random
|
|
3
3
|
import requests
|
|
4
4
|
import time
|
|
5
|
-
from urllib.parse import urljoin
|
|
5
|
+
from urllib.parse import urljoin, urlparse
|
|
6
6
|
from decimal import Decimal
|
|
7
7
|
|
|
8
8
|
import files_sdk
|
|
@@ -16,6 +16,31 @@ import files_sdk.util as util
|
|
|
16
16
|
from requests_toolbelt.adapters import source
|
|
17
17
|
|
|
18
18
|
|
|
19
|
+
FILES_AUTH_HEADERS = (
|
|
20
|
+
"X-FilesAPI-Key",
|
|
21
|
+
"X-FilesAPI-Auth",
|
|
22
|
+
"X-Files-Workspace-Id",
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def _url_origin(url):
|
|
27
|
+
parsed = urlparse(url)
|
|
28
|
+
port = parsed.port
|
|
29
|
+
if port is None:
|
|
30
|
+
port = 443 if parsed.scheme.lower() == "https" else 80
|
|
31
|
+
return parsed.scheme.lower(), (parsed.hostname or "").lower(), port
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class FilesSession(requests.Session):
|
|
35
|
+
def rebuild_auth(self, prepared_request, response):
|
|
36
|
+
super().rebuild_auth(prepared_request, response)
|
|
37
|
+
if _url_origin(response.request.url) != _url_origin(
|
|
38
|
+
prepared_request.url
|
|
39
|
+
):
|
|
40
|
+
for header in FILES_AUTH_HEADERS:
|
|
41
|
+
prepared_request.headers.pop(header, None)
|
|
42
|
+
|
|
43
|
+
|
|
19
44
|
class ApiClient:
|
|
20
45
|
"""
|
|
21
46
|
The Files.com API Client.
|
|
@@ -24,7 +49,7 @@ class ApiClient:
|
|
|
24
49
|
def __init__(self):
|
|
25
50
|
pass
|
|
26
51
|
|
|
27
|
-
self.session =
|
|
52
|
+
self.session = FilesSession()
|
|
28
53
|
|
|
29
54
|
if (
|
|
30
55
|
files_sdk.get_source_ip() is not None
|
|
@@ -19,7 +19,7 @@ class Bundle:
|
|
|
19
19
|
"color_top_text": None, # string - Top bar text color
|
|
20
20
|
"url": None, # string - Public URL of Share Link
|
|
21
21
|
"description": None, # string - Public description
|
|
22
|
-
"expires_at": None, # date-time - Bundle expiration date/time
|
|
22
|
+
"expires_at": None, # date-time - Explicit Bundle expiration date/time. If not set, the site-wide expiration setting may apply.
|
|
23
23
|
"password_protected": None, # boolean - Is this bundle password protected?
|
|
24
24
|
"permissions": None, # string - Permissions that apply to Folders in this Share Link.
|
|
25
25
|
"preview_only": None, # boolean
|
|
@@ -38,6 +38,7 @@ class Bundle:
|
|
|
38
38
|
"deleted": None, # boolean - Indicates if the bundle has been deleted.
|
|
39
39
|
"deleted_at": None, # date-time - Bundle deleted at date/time
|
|
40
40
|
"dont_separate_submissions_by_folder": None, # boolean - Do not create subfolders for files uploaded to this share. Note: there are subtle security pitfalls with allowing anonymous uploads from multiple users to live in the same folder. We strongly discourage use of this option unless absolutely required.
|
|
41
|
+
"effective_expires_at": None, # date-time - Read-only expiration date/time, using the explicit expiration or the site-wide setting when applicable. Null when the Share Link does not expire.
|
|
41
42
|
"max_uses": None, # int64 - Maximum number of times bundle can be accessed
|
|
42
43
|
"internal_name": None, # string - Internal name for identifying this Share Link.
|
|
43
44
|
"note": None, # string - Bundle internal note
|
|
@@ -133,7 +134,7 @@ class Bundle:
|
|
|
133
134
|
# create_snapshot - boolean - If true, create a snapshot of this bundle's contents.
|
|
134
135
|
# description - string - Public description
|
|
135
136
|
# dont_separate_submissions_by_folder - boolean - Do not create subfolders for files uploaded to this share. Note: there are subtle security pitfalls with allowing anonymous uploads from multiple users to live in the same folder. We strongly discourage use of this option unless absolutely required.
|
|
136
|
-
# expires_at - string - Bundle expiration date/time
|
|
137
|
+
# expires_at - string - Explicit Bundle expiration date/time. If not set, the site-wide expiration setting may apply.
|
|
137
138
|
# finalize_snapshot - boolean - If true, finalize the snapshot of this bundle's contents. Note that `create_snapshot` must also be true.
|
|
138
139
|
# inbox_id - int64 - ID of the associated inbox, if available.
|
|
139
140
|
# max_uses - int64 - Maximum number of times bundle can be accessed
|
|
@@ -387,7 +388,7 @@ def get(id, params=None, options=None):
|
|
|
387
388
|
# form_field_set_id - int64 - Id of Form Field Set to use with this bundle
|
|
388
389
|
# create_snapshot - boolean - If true, create a snapshot of this bundle's contents.
|
|
389
390
|
# dont_separate_submissions_by_folder - boolean - Do not create subfolders for files uploaded to this share. Note: there are subtle security pitfalls with allowing anonymous uploads from multiple users to live in the same folder. We strongly discourage use of this option unless absolutely required.
|
|
390
|
-
# expires_at - string - Bundle expiration date/time
|
|
391
|
+
# expires_at - string - Explicit Bundle expiration date/time. If not set, the site-wide expiration setting may apply.
|
|
391
392
|
# finalize_snapshot - boolean - If true, finalize the snapshot of this bundle's contents. Note that `create_snapshot` must also be true.
|
|
392
393
|
# max_uses - int64 - Maximum number of times bundle can be accessed
|
|
393
394
|
# group_id - int64 - Owning group ID. If set, members of this group can view, edit, and share this Share Link.
|
|
@@ -608,7 +609,7 @@ def share(id, params=None, options=None):
|
|
|
608
609
|
# create_snapshot - boolean - If true, create a snapshot of this bundle's contents.
|
|
609
610
|
# description - string - Public description
|
|
610
611
|
# dont_separate_submissions_by_folder - boolean - Do not create subfolders for files uploaded to this share. Note: there are subtle security pitfalls with allowing anonymous uploads from multiple users to live in the same folder. We strongly discourage use of this option unless absolutely required.
|
|
611
|
-
# expires_at - string - Bundle expiration date/time
|
|
612
|
+
# expires_at - string - Explicit Bundle expiration date/time. If not set, the site-wide expiration setting may apply.
|
|
612
613
|
# finalize_snapshot - boolean - If true, finalize the snapshot of this bundle's contents. Note that `create_snapshot` must also be true.
|
|
613
614
|
# inbox_id - int64 - ID of the associated inbox, if available.
|
|
614
615
|
# max_uses - int64 - Maximum number of times bundle can be accessed
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import threading
|
|
2
|
+
import unittest
|
|
3
|
+
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
|
|
4
|
+
|
|
5
|
+
import files_sdk
|
|
6
|
+
from files_sdk.api_client import ApiClient
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class RedirectHandler(BaseHTTPRequestHandler):
|
|
10
|
+
def do_GET(self):
|
|
11
|
+
if self.path == "/api/rest/v1/cross-origin":
|
|
12
|
+
self.send_response(302)
|
|
13
|
+
self.send_header("Location", self.server.cross_origin_url + "/download")
|
|
14
|
+
self.end_headers()
|
|
15
|
+
return
|
|
16
|
+
if self.path == "/api/rest/v1/same-origin":
|
|
17
|
+
self.send_response(302)
|
|
18
|
+
self.send_header("Location", "/api/rest/v1/final")
|
|
19
|
+
self.end_headers()
|
|
20
|
+
return
|
|
21
|
+
|
|
22
|
+
self.server.received_headers.append(self.headers)
|
|
23
|
+
self.send_response(204)
|
|
24
|
+
self.end_headers()
|
|
25
|
+
|
|
26
|
+
def log_message(self, *args):
|
|
27
|
+
pass
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class TestRedirectAuth(unittest.TestCase):
|
|
31
|
+
def setUp(self):
|
|
32
|
+
self.api_server = ThreadingHTTPServer(("127.0.0.1", 0), RedirectHandler)
|
|
33
|
+
self.storage_server = ThreadingHTTPServer(("127.0.0.1", 0), RedirectHandler)
|
|
34
|
+
self.api_server.received_headers = []
|
|
35
|
+
self.storage_server.received_headers = []
|
|
36
|
+
self.api_url = "http://127.0.0.1:{}".format(self.api_server.server_port)
|
|
37
|
+
self.storage_url = "http://127.0.0.1:{}".format(
|
|
38
|
+
self.storage_server.server_port
|
|
39
|
+
)
|
|
40
|
+
self.api_server.cross_origin_url = self.storage_url
|
|
41
|
+
self.storage_server.cross_origin_url = self.api_url
|
|
42
|
+
self.threads = [
|
|
43
|
+
threading.Thread(target=self.api_server.serve_forever),
|
|
44
|
+
threading.Thread(target=self.storage_server.serve_forever),
|
|
45
|
+
]
|
|
46
|
+
for thread in self.threads:
|
|
47
|
+
thread.start()
|
|
48
|
+
|
|
49
|
+
self.original_base_url = files_sdk.base_url
|
|
50
|
+
files_sdk.base_url = self.api_url
|
|
51
|
+
|
|
52
|
+
def tearDown(self):
|
|
53
|
+
files_sdk.base_url = self.original_base_url
|
|
54
|
+
files_sdk.set_workspace_id(None)
|
|
55
|
+
for server in (self.api_server, self.storage_server):
|
|
56
|
+
server.shutdown()
|
|
57
|
+
server.server_close()
|
|
58
|
+
for thread in self.threads:
|
|
59
|
+
thread.join()
|
|
60
|
+
|
|
61
|
+
def test_cross_origin_redirect_strips_files_auth_headers(self):
|
|
62
|
+
client = ApiClient()
|
|
63
|
+
client.send_request(
|
|
64
|
+
"GET",
|
|
65
|
+
"/cross-origin",
|
|
66
|
+
session_id="testsession",
|
|
67
|
+
workspace_id=123,
|
|
68
|
+
params={},
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
redirected_headers = self.storage_server.received_headers[0]
|
|
72
|
+
self.assertNotIn("X-FilesAPI-Key", redirected_headers)
|
|
73
|
+
self.assertNotIn("X-FilesAPI-Auth", redirected_headers)
|
|
74
|
+
self.assertNotIn("X-Files-Workspace-Id", redirected_headers)
|
|
75
|
+
|
|
76
|
+
def test_same_origin_redirect_keeps_files_auth_headers(self):
|
|
77
|
+
client = ApiClient()
|
|
78
|
+
client.send_request(
|
|
79
|
+
"GET",
|
|
80
|
+
"/same-origin",
|
|
81
|
+
api_key="testkey",
|
|
82
|
+
workspace_id=123,
|
|
83
|
+
params={},
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
redirected_headers = self.api_server.received_headers[0]
|
|
87
|
+
self.assertEqual("testkey", redirected_headers["X-FilesAPI-Key"])
|
|
88
|
+
self.assertEqual("123", redirected_headers["X-Files-Workspace-Id"])
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
if __name__ == "__main__":
|
|
92
|
+
unittest.main()
|
files_com-1.6.480/_VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.6.480
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/action_notification_export_result.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/remote_server_configuration_file.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|