From 9aa470246fff2bea8753c81a38279cb07f759e0b Mon Sep 17 00:00:00 2001 From: jschellevis Date: Tue, 30 Jan 2018 11:40:13 +0100 Subject: [PATCH] Initial version of the freely available OPNsense documentation project, original commiters are listed in LICENSE file. --- .gitignore | 26 + LICENSE | 15 +- Makefile | 219 + README.md | 61 +- requirements.txt | 8 + source/_static/css/opnsense.css | 4697 +++++++++++++++++ source/_static/deciso_ruit.png | Bin 0 -> 37714 bytes source/_static/favicon.ico | Bin 0 -> 370070 bytes source/_static/favicon.png | Bin 0 -> 2938 bytes source/conf.py | 382 ++ source/contribute.rst | 209 + source/develop.rst | 36 + source/development/architecture.rst | 136 + source/development/backend.rst | 27 + source/development/backend/autorun.rst | 54 + source/development/backend/configd.rst | 102 + source/development/backend/legacy.rst | 114 + source/development/backend/templates.rst | 147 + source/development/components.rst | 18 + source/development/components/acl.rst | 55 + .../components/images/acl-finger-print.jpg | Bin 0 -> 884342 bytes .../components/images/menusystem.png | Bin 0 -> 25226 bytes source/development/components/menusystem.rst | 66 + source/development/examples.rst | 10 + source/development/examples/helloworld.rst | 987 ++++ .../examples/images/Hello-World.jpg | Bin 0 -> 247692 bytes .../images/HelloWorld_Empty_template.png | Bin 0 -> 48728 bytes .../images/HelloWorld_Template_no_content.png | Bin 0 -> 47283 bytes .../images/HelloWorld_first_test_action.png | Bin 0 -> 78912 bytes .../HelloWorld_form_validation_error.png | Bin 0 -> 66023 bytes .../images/HelloWorld_menu_registration.png | Bin 0 -> 74685 bytes .../examples/images/Helloworld_overview.png | Bin 0 -> 120390 bytes source/development/frontend.rst | 15 + source/development/frontend/controller.rst | 101 + source/development/frontend/models.rst | 202 + source/development/frontend/routing.rst | 85 + source/development/guidelines.rst | 18 + source/development/guidelines/basics.rst | 92 + source/development/guidelines/peps.rst | 7 + source/development/guidelines/psr1.rst | 196 + source/development/guidelines/psr2.rst | 656 +++ source/development/how-tos/api.rst | 121 + .../images/Usermanager_add_api_key.png | Bin 0 -> 18166 bytes source/development/howtos.rst | 10 + .../images/OPNsense_Components.png | Bin 0 -> 62702 bytes .../development/images/OPNsense_backend.png | Bin 0 -> 47986 bytes .../development/images/OPNsense_frontend.png | Bin 0 -> 49006 bytes source/development/images/flow.png | Bin 0 -> 113985 bytes source/development/images/guidelines_new.png | Bin 0 -> 535963 bytes .../images/ideas_join_the_development.jpg | Bin 0 -> 93829 bytes source/development/workflow.rst | 181 + source/fork/images/fork-lift_new.jpg | Bin 0 -> 206096 bytes source/fork/thefork.rst | 135 + source/images/OPNsense-Deciso-Screenshot.jpg | Bin 0 -> 111589 bytes source/images/OPNsense_Logo.ai | 4585 ++++++++++++++++ source/images/manual_guy.png | Bin 0 -> 851117 bytes source/images/opnsense_logo-zilver_grijs.png | Bin 0 -> 34280 bytes source/images/support-1024x492.jpg | Bin 0 -> 115745 bytes source/index.rst | 31 + source/intro.rst | 105 + source/legal.rst | 143 + source/manual.rst | 35 + source/manual/aliases.rst | 155 + source/manual/antivirus.rst | 18 + source/manual/captiveportal.rst | 111 + source/manual/dynamic_routing.rst | 59 + source/manual/gui.rst | 130 + source/manual/hacarp.rst | 43 + source/manual/hardware.rst | 191 + source/manual/how-tos/accounting.rst | 100 + source/manual/how-tos/c-icap.rst | 75 + source/manual/how-tos/cachingproxy.rst | 192 + source/manual/how-tos/carp.rst | 238 + source/manual/how-tos/cellular.rst | 87 + source/manual/how-tos/clamav.rst | 127 + source/manual/how-tos/cloud_backup.rst | 118 + .../manual/how-tos/dynamicrouting_howto.rst | 78 + source/manual/how-tos/dynamicrouting_ospf.rst | 128 + source/manual/how-tos/dynamicrouting_rip.rst | 45 + .../manual/how-tos/dynamicrouting_zebra.rst | 40 + source/manual/how-tos/edrop.rst | 137 + source/manual/how-tos/freeradius.rst | 99 + source/manual/how-tos/fwcategory.rst | 62 + source/manual/how-tos/guestnet.rst | 604 +++ source/manual/how-tos/haproxy.rst | 201 + source/manual/how-tos/haproxy_howtos.rst | 85 + .../how-tos/images/4g_configure_ppp.png | Bin 0 -> 51798 bytes .../600px-Google_Drive_Backup_screenshot.png | Bin 0 -> 50528 bytes .../images/900px-Carp_setup_example.png | Bin 0 -> 110350 bytes .../how-tos/images/Filter_Category_Result.png | Bin 0 -> 57602 bytes .../how-tos/images/Filter_by_Category.png | Bin 0 -> 13615 bytes .../images/Filtering_Bridge_Step_1.png | Bin 0 -> 56520 bytes .../images/Filtering_Bridge_Step_2.png | Bin 0 -> 26790 bytes .../images/Filtering_Bridge_Step_2a.png | Bin 0 -> 89391 bytes .../images/Filtering_Bridge_Step_3a.png | Bin 0 -> 36301 bytes .../images/Filtering_Bridge_Step_3b.png | Bin 0 -> 32967 bytes .../images/Filtering_Bridge_Step_4.png | Bin 0 -> 13084 bytes .../images/Filtering_Bridge_Step_5.png | Bin 0 -> 73005 bytes .../images/Filtering_Bridge_Step_6.png | Bin 0 -> 8189 bytes .../images/Filtering_Bridge_Step_7.png | Bin 0 -> 18203 bytes .../images/Filtering_Bridge_Step_9.png | Bin 0 -> 9493 bytes .../images/Interface_assignment_4g.png | Bin 0 -> 34082 bytes .../manual/how-tos/images/OPN20322R_870px.png | Bin 0 -> 258481 bytes source/manual/how-tos/images/OTP_seed.png | Bin 0 -> 9707 bytes .../manual/how-tos/images/Rule_Category.png | Bin 0 -> 13895 bytes source/manual/how-tos/images/Rules_Full.png | Bin 0 -> 101356 bytes source/manual/how-tos/images/SPE_ICAP.png | Bin 0 -> 42895 bytes source/manual/how-tos/images/SPE_home.png | Bin 0 -> 101343 bytes .../how-tos/images/Trust_Settings_OSX.png | Bin 0 -> 131038 bytes source/manual/how-tos/images/alerts.jpg | Bin 0 -> 32120 bytes .../how-tos/images/amazon-web-services.png | Bin 0 -> 25923 bytes source/manual/how-tos/images/applybtn.png | Bin 0 -> 4348 bytes .../images/aws_capture_initial_password.png | Bin 0 -> 87800 bytes .../manual/how-tos/images/aws_choose_disc.png | Bin 0 -> 94556 bytes .../images/aws_configure_security_group.png | Bin 0 -> 97869 bytes .../manual/how-tos/images/aws_instances.png | Bin 0 -> 298108 bytes .../how-tos/images/aws_launch_new_image.png | Bin 0 -> 196826 bytes .../how-tos/images/aws_review_settings.png | Bin 0 -> 111431 bytes .../how-tos/images/aws_search_current_ip.png | Bin 0 -> 111230 bytes .../manual/how-tos/images/aws_ssh_keypair.png | Bin 0 -> 88896 bytes source/manual/how-tos/images/aws_status.png | Bin 0 -> 129655 bytes .../how-tos/images/block_private_networks.png | Bin 0 -> 6003 bytes source/manual/how-tos/images/btn_download.png | Bin 0 -> 3731 bytes source/manual/how-tos/images/btn_save.png | Bin 0 -> 4328 bytes source/manual/how-tos/images/btn_upload.png | Bin 0 -> 4577 bytes source/manual/how-tos/images/c-icap_av.png | Bin 0 -> 35803 bytes .../manual/how-tos/images/c-icap_settings.png | Bin 0 -> 31531 bytes .../how-tos/images/captiveportal_popup.png | Bin 0 -> 34234 bytes source/manual/how-tos/images/certificate.png | Bin 0 -> 92776 bytes source/manual/how-tos/images/changefilter.png | Bin 0 -> 47184 bytes .../manual/how-tos/images/clamav_settings.png | Bin 0 -> 108754 bytes .../images/cli_list_captiveportalsessions.png | Bin 0 -> 12493 bytes .../how-tos/images/cp-traffic-shaping.png | Bin 0 -> 35402 bytes .../how-tos/images/cp_active_sessions.png | Bin 0 -> 28627 bytes .../how-tos/images/cp_active_vouchers.png | Bin 0 -> 22541 bytes .../how-tos/images/cp_royalhotel_voucher.png | Bin 0 -> 152108 bytes .../how-tos/images/cp_voucher_login.png | Bin 0 -> 14138 bytes .../manual/how-tos/images/create_vouchers.png | Bin 0 -> 27450 bytes .../images/default_login_no_authenticator.png | Bin 0 -> 19975 bytes .../how-tos/images/disable_offloading.png | Bin 0 -> 37735 bytes source/manual/how-tos/images/downloadbtn.png | Bin 0 -> 6698 bytes .../how-tos/images/dynamic_routes_howto.png | Bin 0 -> 56305 bytes .../images/dynamic_routes_ospf_general.png | Bin 0 -> 23707 bytes .../dynamic_routes_ospf_interface_dialog.png | Bin 0 -> 32480 bytes .../images/dynamic_routes_ospf_interfaces.png | Bin 0 -> 20227 bytes .../dynamic_routes_ospf_network_dialog.png | Bin 0 -> 18496 bytes .../images/dynamic_routes_ospf_networks.png | Bin 0 -> 22012 bytes .../how-tos/images/dynamic_routes_rip.png | Bin 0 -> 25296 bytes .../how-tos/images/dynamic_routes_zebra.png | Bin 0 -> 15306 bytes .../manual/how-tos/images/expanded_view.png | Bin 0 -> 37309 bytes .../manual/how-tos/images/export_CA_cert.png | Bin 0 -> 6434 bytes .../manual/how-tos/images/facebook_click.png | Bin 0 -> 16798 bytes .../manual/how-tos/images/facebook_lock.png | Bin 0 -> 7363 bytes source/manual/how-tos/images/firmware.png | Bin 0 -> 17597 bytes .../how-tos/images/freeradius_clients.png | Bin 0 -> 21745 bytes .../how-tos/images/freeradius_edit_client.png | Bin 0 -> 19686 bytes .../how-tos/images/freeradius_edit_user.png | Bin 0 -> 25448 bytes .../how-tos/images/freeradius_general.png | Bin 0 -> 24517 bytes .../how-tos/images/freeradius_users.png | Bin 0 -> 20724 bytes .../images/fw_category_multiselect.png | Bin 0 -> 21455 bytes .../how-tos/images/google_token_sample.png | Bin 0 -> 103945 bytes .../how-tos/images/guestnet_fwrules.png | Bin 0 -> 86792 bytes source/manual/how-tos/images/haproxy_acls.png | Bin 0 -> 53085 bytes .../manual/how-tos/images/haproxy_actions.png | Bin 0 -> 53517 bytes .../how-tos/images/haproxy_backends.png | Bin 0 -> 53779 bytes .../haproxy_condition_add_authentication.png | Bin 0 -> 35426 bytes .../how-tos/images/haproxy_edit_acl.png | Bin 0 -> 28851 bytes .../how-tos/images/haproxy_edit_action.png | Bin 0 -> 100184 bytes .../how-tos/images/haproxy_edit_backend.png | Bin 0 -> 112976 bytes .../how-tos/images/haproxy_edit_frontend.png | Bin 0 -> 108778 bytes .../haproxy_edit_rule_authentication.png | Bin 0 -> 39098 bytes .../how-tos/images/haproxy_edit_server.png | Bin 0 -> 24524 bytes .../images/haproxy_forward_to_dir_rule.png | Bin 0 -> 43818 bytes .../images/haproxy_forward_to_dir_service.png | Bin 0 -> 5608 bytes .../haproxy_frontend_add_authentication.png | Bin 0 -> 6495 bytes .../how-tos/images/haproxy_frontends.png | Bin 0 -> 25450 bytes .../manual/how-tos/images/haproxy_general.png | Bin 0 -> 22108 bytes .../images/haproxy_root_path_condition.png | Bin 0 -> 28895 bytes .../manual/how-tos/images/haproxy_servers.png | Bin 0 -> 58604 bytes .../haproxy_settings_global_params_auth.png | Bin 0 -> 72870 bytes source/manual/how-tos/images/idps.png | Bin 0 -> 25981 bytes source/manual/how-tos/images/ids_menu.png | Bin 0 -> 6100 bytes .../manual/how-tos/images/ids_tabs_user.png | Bin 0 -> 8768 bytes .../how-tos/images/ids_tabs_user_add.png | Bin 0 -> 3612 bytes .../how-tos/images/insight_details_view.png | Bin 0 -> 30546 bytes .../manual/how-tos/images/insight_export.png | Bin 0 -> 305371 bytes .../how-tos/images/insight_export_view.png | Bin 0 -> 29760 bytes .../how-tos/images/insight_full_details.png | Bin 0 -> 75547 bytes source/manual/how-tos/images/insight_gui.png | Bin 0 -> 72489 bytes .../manual/how-tos/images/iphone_qr_scan.png | Bin 0 -> 250691 bytes source/manual/how-tos/images/ips_action.png | Bin 0 -> 12895 bytes .../manual/how-tos/images/ips_description.png | Bin 0 -> 9715 bytes .../images/ips_description_country.png | Bin 0 -> 10492 bytes .../how-tos/images/ips_facebook_alert.png | Bin 0 -> 18761 bytes .../manual/how-tos/images/ips_geoip_alert.png | Bin 0 -> 18439 bytes .../how-tos/images/ips_rule_add_geoip.png | Bin 0 -> 64545 bytes .../how-tos/images/ips_rule_details.png | Bin 0 -> 55052 bytes source/manual/how-tos/images/ips_save.png | Bin 0 -> 5490 bytes .../how-tos/images/ipsec_ipsec_lan_rule.png | Bin 0 -> 8778 bytes .../how-tos/images/ipsec_road_vpn_p1a.png | Bin 0 -> 21421 bytes .../how-tos/images/ipsec_s2s_vpn_p1a_4.png | Bin 0 -> 38503 bytes .../images/ipsec_s2s_vpn_p1a_apply.png | Bin 0 -> 17933 bytes .../images/ipsec_s2s_vpn_p1a_enable.png | Bin 0 -> 5379 bytes .../images/ipsec_s2s_vpn_p1a_p2_empty.png | Bin 0 -> 13607 bytes .../images/ipsec_s2s_vpn_p1a_show_p2.png | Bin 0 -> 5777 bytes .../images/ipsec_s2s_vpn_p1a_success.png | Bin 0 -> 9511 bytes .../how-tos/images/ipsec_s2s_vpn_p1b_4.png | Bin 0 -> 19218 bytes source/manual/how-tos/images/ipsec_status.png | Bin 0 -> 38489 bytes .../manual/how-tos/images/ipsec_wan_rules.png | Bin 0 -> 25805 bytes .../images/ldap_mygroup_properties.png | Bin 0 -> 76679 bytes .../how-tos/images/ldap_selectcontainer.png | Bin 0 -> 36675 bytes .../manual/how-tos/images/ldap_testfail.png | Bin 0 -> 11980 bytes source/manual/how-tos/images/ldap_testok.png | Bin 0 -> 15412 bytes .../manual/how-tos/images/mycompany_login.png | Bin 0 -> 59695 bytes .../how-tos/images/netflow_exporter.png | Bin 0 -> 39927 bytes .../how-tos/images/opnsense_add_gif.png | Bin 0 -> 30256 bytes .../images/opnsense_hotspot_controller.png | Bin 0 -> 110323 bytes .../manual/how-tos/images/osx-ipsec-conf1.png | Bin 0 -> 31675 bytes .../manual/how-tos/images/osx-ipsec-conf2.png | Bin 0 -> 21027 bytes .../how-tos/images/osx-ipsec-connected.png | Bin 0 -> 10770 bytes .../manual/how-tos/images/osx-ipsec-new.png | Bin 0 -> 26362 bytes source/manual/how-tos/images/otp_qr_code.png | Bin 0 -> 4708 bytes source/manual/how-tos/images/pie_details.png | Bin 0 -> 186672 bytes source/manual/how-tos/images/pie_piece.png | Bin 0 -> 17158 bytes .../how-tos/images/plugin_mdns_repeater.png | Bin 0 -> 31320 bytes .../images/postfix_add_domain_forward.png | Bin 0 -> 17962 bytes .../how-tos/images/postfix_add_new_domain.png | Bin 0 -> 15783 bytes .../how-tos/images/postfix_antispam_tab.png | Bin 0 -> 15210 bytes .../how-tos/images/postfix_general_tab.png | Bin 0 -> 63884 bytes .../how-tos/images/ppp_celular_configured.png | Bin 0 -> 11736 bytes source/manual/how-tos/images/proxy_basics.png | Bin 0 -> 25679 bytes .../manual/how-tos/images/proxy_blacklist.png | Bin 0 -> 38201 bytes source/manual/how-tos/images/proxy_cache.png | Bin 0 -> 12978 bytes .../how-tos/images/proxy_categories.png | Bin 0 -> 39345 bytes .../manual/how-tos/images/proxy_catgegory.png | Bin 0 -> 14958 bytes .../manual/how-tos/images/proxy_firefox.png | Bin 0 -> 85676 bytes .../manual/how-tos/images/proxy_firewall.png | Bin 0 -> 48736 bytes source/manual/how-tos/images/proxy_tag.png | Bin 0 -> 4665 bytes source/manual/how-tos/images/proxy_ut1.png | Bin 0 -> 35950 bytes .../how-tos/images/qs-access_server.png | Bin 0 -> 31527 bytes .../manual/how-tos/images/redis_general.png | Bin 0 -> 33066 bytes .../how-tos/images/redis_menu_entry.png | Bin 0 -> 4639 bytes .../how-tos/images/rspamd_antispam_menu.png | Bin 0 -> 11883 bytes .../manual/how-tos/images/rspamd_general.png | Bin 0 -> 16552 bytes .../manual/how-tos/images/rspamd_mx_check.png | Bin 0 -> 14323 bytes source/manual/how-tos/images/rulesdrop.png | Bin 0 -> 68855 bytes .../manual/how-tos/images/rulesets_enable.png | Bin 0 -> 44764 bytes source/manual/how-tos/images/schedule.png | Bin 0 -> 62063 bytes .../screenshot_enable_transparent_http.png | Bin 0 -> 24570 bytes source/manual/how-tos/images/search_ca.png | Bin 0 -> 10429 bytes .../how-tos/images/shaping_rules_s1.png | Bin 0 -> 52290 bytes .../how-tos/images/shaping_rules_s2.png | Bin 0 -> 39821 bytes .../how-tos/images/shaping_rules_s3.png | Bin 0 -> 33640 bytes .../how-tos/images/shaping_rules_s4.png | Bin 0 -> 113415 bytes .../how-tos/images/spamhaus_drop_edrop.png | Bin 0 -> 62993 bytes source/manual/how-tos/images/spamhaus_lan.png | Bin 0 -> 53319 bytes .../how-tos/images/spamhaus_pftable.png | Bin 0 -> 57483 bytes .../how-tos/images/spamhaus_wan_rules.png | Bin 0 -> 57297 bytes .../images/sslvpn_client_certificate.png | Bin 0 -> 40017 bytes .../images/sslvpn_connection_status.png | Bin 0 -> 40632 bytes .../images/sslvpn_firewall_rule_client.png | Bin 0 -> 77229 bytes .../how-tos/images/sslvpn_image_new.png | Bin 0 -> 555105 bytes .../how-tos/images/sslvpn_openvpn_rule.png | Bin 0 -> 75061 bytes .../manual/how-tos/images/sslvpn_server.png | Bin 0 -> 34077 bytes .../manual/how-tos/images/sslvpn_wan_rule.png | Bin 0 -> 76032 bytes source/manual/how-tos/images/stacked_view.png | Bin 0 -> 42079 bytes source/manual/how-tos/images/stream_view.png | Bin 0 -> 39324 bytes .../how-tos/images/system_access_tester.png | Bin 0 -> 79490 bytes .../how-tos/images/template_download.png | Bin 0 -> 29032 bytes .../how-tos/images/template_filelisting.png | Bin 0 -> 16581 bytes source/manual/how-tos/images/tor_exit.png | Bin 0 -> 45547 bytes .../how-tos/images/tor_exit_acl_entry.png | Bin 0 -> 49933 bytes source/manual/how-tos/images/tor_general.png | Bin 0 -> 89156 bytes .../how-tos/images/tor_hidden_services.png | Bin 0 -> 42840 bytes .../images/tor_hidden_services_edit.png | Bin 0 -> 43835 bytes .../tor_hidden_services_edit_very_hidden.png | Bin 0 -> 7275 bytes .../images/tor_hidden_services_route_edit.png | Bin 0 -> 52345 bytes .../images/tor_hidden_services_routing.png | Bin 0 -> 45195 bytes ...hidden_servicesvery_hidden_credentials.png | Bin 0 -> 17055 bytes source/manual/how-tos/images/tor_relay.png | Bin 0 -> 64584 bytes .../manual/how-tos/images/tor_socks_acl.png | Bin 0 -> 44619 bytes .../how-tos/images/tor_socks_acl_edit.png | Bin 0 -> 48385 bytes .../images/tunnelbroker_configure_lan.png | Bin 0 -> 40140 bytes .../how-tos/images/tunnelbroker_dhcpv6.png | Bin 0 -> 42515 bytes .../how-tos/images/tunnelbroker_fw_rules.png | Bin 0 -> 58214 bytes .../how-tos/images/tunnelbroker_setup.png | Bin 0 -> 129126 bytes .../how-tos/images/user_cloudimport.png | Bin 0 -> 3755 bytes .../images/user_ldap_distinguishedname.png | Bin 0 -> 19813 bytes .../manual/how-tos/images/user_privileges.png | Bin 0 -> 87004 bytes .../how-tos/images/user_testresult_ldap.png | Bin 0 -> 43674 bytes .../how-tos/images/usermanager_groups.png | Bin 0 -> 113864 bytes .../how-tos/images/viscosity_connected.png | Bin 0 -> 13383 bytes .../manual/how-tos/images/viscosity_files.png | Bin 0 -> 11178 bytes .../how-tos/images/viscosity_imported.png | Bin 0 -> 24696 bytes .../manual/how-tos/images/viscosity_login.png | Bin 0 -> 39425 bytes source/manual/how-tos/images/zerotier-0.png | Bin 0 -> 154043 bytes source/manual/how-tos/images/zerotier-1.png | Bin 0 -> 44095 bytes source/manual/how-tos/images/zerotier-2.png | Bin 0 -> 49847 bytes source/manual/how-tos/images/zerotier-3.png | Bin 0 -> 54318 bytes source/manual/how-tos/images/zerotier-4.png | Bin 0 -> 42012 bytes source/manual/how-tos/images/zerotier-5.png | Bin 0 -> 65870 bytes source/manual/how-tos/insight.rst | 137 + source/manual/how-tos/installaws.rst | 95 + source/manual/how-tos/ips-feodo.rst | 125 + source/manual/how-tos/ips-geoip.rst | 111 + source/manual/how-tos/ips-sslfingerprint.rst | 130 + source/manual/how-tos/ipsec-road.rst | 339 ++ source/manual/how-tos/ipsec-s2s.rst | 533 ++ source/manual/how-tos/ipv6_tunnelbroker.rst | 129 + source/manual/how-tos/mailgateway.rst | 112 + source/manual/how-tos/multicast-dns.rst | 37 + source/manual/how-tos/multiwan.rst | 211 + source/manual/how-tos/netflow_exporter.rst | 22 + source/manual/how-tos/proxyicapantivirus.rst | 89 + .../how-tos/proxyicapantivirusinternal.rst | 73 + source/manual/how-tos/proxytransparent.rst | 168 + source/manual/how-tos/proxywebfilter.rst | 131 + .../how-tos/resources/Carp_example_backup.xml | 701 +++ .../how-tos/resources/Carp_example_master.xml | 704 +++ .../config-OPNsense-ipsec-Site-A.xml | 618 +++ .../config-OPNsense-ipsec-Site-B.xml | 642 +++ .../resources/mycompany_cptemplate.zip | Bin 0 -> 289275 bytes .../how-tos/resources/template_popup.zip | Bin 0 -> 282508 bytes source/manual/how-tos/shaper.rst | 624 +++ source/manual/how-tos/sslvpn_client.rst | 405 ++ source/manual/how-tos/sslvpn_s2s.rst | 323 ++ source/manual/how-tos/tor.rst | 308 ++ source/manual/how-tos/transparent_bridge.rst | 206 + source/manual/how-tos/two_factor.rst | 110 + source/manual/how-tos/user-ldap.rst | 125 + source/manual/how-tos/user-local.rst | 52 + source/manual/how-tos/user-radius.rst | 19 + source/manual/how-tos/zerotier.rst | 202 + source/manual/howtos.rst | 32 + source/manual/images/IPv6.png | Bin 0 -> 127376 bytes source/manual/images/OPNsense_4G_new.png | Bin 0 -> 622053 bytes .../manual/images/Screenshot_Use_RAMdisks.png | Bin 0 -> 54090 bytes .../Virtual_Private_Network_overview.png | Bin 0 -> 137615 bytes source/manual/images/advanced.png | Bin 0 -> 87720 bytes source/manual/images/alias_firewall_rules.png | Bin 0 -> 31526 bytes source/manual/images/alias_remote_ipsec.png | Bin 0 -> 34043 bytes source/manual/images/aliases_host.png | Bin 0 -> 32861 bytes source/manual/images/auth_server_fallback.png | Bin 0 -> 21189 bytes .../images/captiveportal_template_folder.png | Bin 0 -> 19206 bytes source/manual/images/disableoffloading.png | Bin 0 -> 19089 bytes source/manual/images/dropdown_tab.png | Bin 0 -> 14499 bytes source/manual/images/eye_on_virus_new.jpg | Bin 0 -> 187926 bytes source/manual/images/firmware-update.png | Bin 0 -> 8899 bytes source/manual/images/firmware_flavour.png | Bin 0 -> 12135 bytes source/manual/images/forward_proxy.png | Bin 0 -> 16963 bytes source/manual/images/gui_layout.png | Bin 0 -> 368416 bytes source/manual/images/help_msg.png | Bin 0 -> 9599 bytes source/manual/images/hotspot_login.png | Bin 0 -> 19006 bytes source/manual/images/info.png | Bin 0 -> 41897 bytes source/manual/images/light_bulbs.png | Bin 0 -> 193143 bytes source/manual/images/login.png | Bin 0 -> 17514 bytes source/manual/images/menu_plugins.png | Bin 0 -> 6737 bytes .../images/netflow_analyzer_insight.png | Bin 0 -> 102773 bytes source/manual/images/netflow_exporter.png | Bin 0 -> 27979 bytes .../manual/images/netflow_insight_details.png | Bin 0 -> 163605 bytes source/manual/images/os-vmware.png | Bin 0 -> 7963 bytes source/manual/images/os-xen.png | Bin 0 -> 7952 bytes source/manual/images/pftable_youtube.png | Bin 0 -> 30704 bytes source/manual/images/plugins_quagga.png | Bin 0 -> 14940 bytes source/manual/images/proxy_form.png | Bin 0 -> 28476 bytes source/manual/images/quick-navigation.png | Bin 0 -> 27516 bytes source/manual/images/submenu.png | Bin 0 -> 18133 bytes .../manual/images/systemhealt_selection.png | Bin 0 -> 16580 bytes source/manual/images/systemhealth_excel.png | Bin 0 -> 354233 bytes .../manual/images/systemhealth_filtered.png | Bin 0 -> 38854 bytes source/manual/images/systemhealth_gui.png | Bin 0 -> 307807 bytes source/manual/images/systemhealth_inverse.png | Bin 0 -> 47636 bytes .../images/systemhealth_labelfilter.png | Bin 0 -> 8397 bytes .../images/systemhealth_obscureddata.png | Bin 0 -> 35111 bytes source/manual/images/systemhealth_sample.png | Bin 0 -> 31181 bytes source/manual/images/systemhealth_zoomed.png | Bin 0 -> 48343 bytes source/manual/images/tab.png | Bin 0 -> 9011 bytes source/manual/images/traffic_shaping.png | Bin 0 -> 133560 bytes .../images/two_factor_authentication.png | Bin 0 -> 35785 bytes source/manual/images/user_manager.png | Bin 0 -> 122861 bytes source/manual/images/vpn.png | Bin 0 -> 9224 bytes source/manual/install.rst | 403 ++ source/manual/ips.rst | 88 + source/manual/ipv6.rst | 24 + source/manual/mobile_wan.rst | 44 + source/manual/multiwan.rst | 50 + source/manual/netflow.rst | 100 + source/manual/proxy.rst | 109 + source/manual/shaping.rst | 80 + source/manual/systemhealth.rst | 158 + source/manual/two_factor.rst | 56 + source/manual/users.rst | 62 + source/manual/virtuals.rst | 145 + source/manual/vpnet.rst | 80 + source/relations.rst | 15 + source/relations/FreeBSD.rst | 35 + source/relations/deciso.rst | 43 + source/relations/hardenedBSD.rst | 46 + .../images/Logo-label-hardenedbsd.png | Bin 0 -> 18693 bytes source/relations/images/freebsd-logo-full.png | Bin 0 -> 36887 bytes source/relations/images/index.png | Bin 0 -> 2386 bytes .../images/logo_deciso_2015_with_movement.png | Bin 0 -> 40020 bytes source/relations/images/osi_standard_logo.png | Bin 0 -> 61727 bytes source/relations/m0n0wall.rst | 92 + source/relations/osi.rst | 33 + source/support.rst | 26 + themes/opnsense/sass/_theme_badge.sass | 88 + themes/opnsense/sass/_theme_badge_fa.sass | 68 + themes/opnsense/sass/_theme_breadcrumbs.sass | 31 + .../_theme_font_awesome_compatibility.sass | 24 + themes/opnsense/sass/_theme_font_local.sass | 48 + themes/opnsense/sass/_theme_layout.sass | 406 ++ themes/opnsense/sass/_theme_mathjax.sass | 5 + themes/opnsense/sass/_theme_rst.sass | 322 ++ themes/opnsense/sass/_theme_variables.sass | 66 + themes/opnsense/sass/badge_only.sass | 16 + themes/opnsense/sass/theme.sass | 54 + 417 files changed, 27530 insertions(+), 10 deletions(-) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 requirements.txt create mode 100644 source/_static/css/opnsense.css create mode 100644 source/_static/deciso_ruit.png create mode 100644 source/_static/favicon.ico create mode 100644 source/_static/favicon.png create mode 100644 source/conf.py create mode 100644 source/contribute.rst create mode 100644 source/develop.rst create mode 100644 source/development/architecture.rst create mode 100644 source/development/backend.rst create mode 100644 source/development/backend/autorun.rst create mode 100644 source/development/backend/configd.rst create mode 100644 source/development/backend/legacy.rst create mode 100644 source/development/backend/templates.rst create mode 100644 source/development/components.rst create mode 100644 source/development/components/acl.rst create mode 100644 source/development/components/images/acl-finger-print.jpg create mode 100644 source/development/components/images/menusystem.png create mode 100644 source/development/components/menusystem.rst create mode 100644 source/development/examples.rst create mode 100644 source/development/examples/helloworld.rst create mode 100644 source/development/examples/images/Hello-World.jpg create mode 100644 source/development/examples/images/HelloWorld_Empty_template.png create mode 100644 source/development/examples/images/HelloWorld_Template_no_content.png create mode 100644 source/development/examples/images/HelloWorld_first_test_action.png create mode 100644 source/development/examples/images/HelloWorld_form_validation_error.png create mode 100644 source/development/examples/images/HelloWorld_menu_registration.png create mode 100644 source/development/examples/images/Helloworld_overview.png create mode 100644 source/development/frontend.rst create mode 100644 source/development/frontend/controller.rst create mode 100644 source/development/frontend/models.rst create mode 100644 source/development/frontend/routing.rst create mode 100644 source/development/guidelines.rst create mode 100644 source/development/guidelines/basics.rst create mode 100644 source/development/guidelines/peps.rst create mode 100644 source/development/guidelines/psr1.rst create mode 100644 source/development/guidelines/psr2.rst create mode 100644 source/development/how-tos/api.rst create mode 100644 source/development/how-tos/images/Usermanager_add_api_key.png create mode 100644 source/development/howtos.rst create mode 100644 source/development/images/OPNsense_Components.png create mode 100644 source/development/images/OPNsense_backend.png create mode 100644 source/development/images/OPNsense_frontend.png create mode 100644 source/development/images/flow.png create mode 100644 source/development/images/guidelines_new.png create mode 100644 source/development/images/ideas_join_the_development.jpg create mode 100644 source/development/workflow.rst create mode 100644 source/fork/images/fork-lift_new.jpg create mode 100644 source/fork/thefork.rst create mode 100644 source/images/OPNsense-Deciso-Screenshot.jpg create mode 100644 source/images/OPNsense_Logo.ai create mode 100644 source/images/manual_guy.png create mode 100644 source/images/opnsense_logo-zilver_grijs.png create mode 100644 source/images/support-1024x492.jpg create mode 100644 source/index.rst create mode 100644 source/intro.rst create mode 100644 source/legal.rst create mode 100644 source/manual.rst create mode 100644 source/manual/aliases.rst create mode 100644 source/manual/antivirus.rst create mode 100644 source/manual/captiveportal.rst create mode 100644 source/manual/dynamic_routing.rst create mode 100644 source/manual/gui.rst create mode 100644 source/manual/hacarp.rst create mode 100644 source/manual/hardware.rst create mode 100644 source/manual/how-tos/accounting.rst create mode 100644 source/manual/how-tos/c-icap.rst create mode 100644 source/manual/how-tos/cachingproxy.rst create mode 100644 source/manual/how-tos/carp.rst create mode 100644 source/manual/how-tos/cellular.rst create mode 100644 source/manual/how-tos/clamav.rst create mode 100644 source/manual/how-tos/cloud_backup.rst create mode 100644 source/manual/how-tos/dynamicrouting_howto.rst create mode 100644 source/manual/how-tos/dynamicrouting_ospf.rst create mode 100644 source/manual/how-tos/dynamicrouting_rip.rst create mode 100644 source/manual/how-tos/dynamicrouting_zebra.rst create mode 100644 source/manual/how-tos/edrop.rst create mode 100644 source/manual/how-tos/freeradius.rst create mode 100644 source/manual/how-tos/fwcategory.rst create mode 100644 source/manual/how-tos/guestnet.rst create mode 100644 source/manual/how-tos/haproxy.rst create mode 100644 source/manual/how-tos/haproxy_howtos.rst create mode 100644 source/manual/how-tos/images/4g_configure_ppp.png create mode 100644 source/manual/how-tos/images/600px-Google_Drive_Backup_screenshot.png create mode 100644 source/manual/how-tos/images/900px-Carp_setup_example.png create mode 100644 source/manual/how-tos/images/Filter_Category_Result.png create mode 100644 source/manual/how-tos/images/Filter_by_Category.png create mode 100644 source/manual/how-tos/images/Filtering_Bridge_Step_1.png create mode 100644 source/manual/how-tos/images/Filtering_Bridge_Step_2.png create mode 100644 source/manual/how-tos/images/Filtering_Bridge_Step_2a.png create mode 100644 source/manual/how-tos/images/Filtering_Bridge_Step_3a.png create mode 100644 source/manual/how-tos/images/Filtering_Bridge_Step_3b.png create mode 100644 source/manual/how-tos/images/Filtering_Bridge_Step_4.png create mode 100644 source/manual/how-tos/images/Filtering_Bridge_Step_5.png create mode 100644 source/manual/how-tos/images/Filtering_Bridge_Step_6.png create mode 100644 source/manual/how-tos/images/Filtering_Bridge_Step_7.png create mode 100644 source/manual/how-tos/images/Filtering_Bridge_Step_9.png create mode 100644 source/manual/how-tos/images/Interface_assignment_4g.png create mode 100644 source/manual/how-tos/images/OPN20322R_870px.png create mode 100644 source/manual/how-tos/images/OTP_seed.png create mode 100644 source/manual/how-tos/images/Rule_Category.png create mode 100644 source/manual/how-tos/images/Rules_Full.png create mode 100644 source/manual/how-tos/images/SPE_ICAP.png create mode 100644 source/manual/how-tos/images/SPE_home.png create mode 100644 source/manual/how-tos/images/Trust_Settings_OSX.png create mode 100644 source/manual/how-tos/images/alerts.jpg create mode 100644 source/manual/how-tos/images/amazon-web-services.png create mode 100644 source/manual/how-tos/images/applybtn.png create mode 100644 source/manual/how-tos/images/aws_capture_initial_password.png create mode 100644 source/manual/how-tos/images/aws_choose_disc.png create mode 100644 source/manual/how-tos/images/aws_configure_security_group.png create mode 100644 source/manual/how-tos/images/aws_instances.png create mode 100644 source/manual/how-tos/images/aws_launch_new_image.png create mode 100644 source/manual/how-tos/images/aws_review_settings.png create mode 100644 source/manual/how-tos/images/aws_search_current_ip.png create mode 100644 source/manual/how-tos/images/aws_ssh_keypair.png create mode 100644 source/manual/how-tos/images/aws_status.png create mode 100644 source/manual/how-tos/images/block_private_networks.png create mode 100644 source/manual/how-tos/images/btn_download.png create mode 100644 source/manual/how-tos/images/btn_save.png create mode 100644 source/manual/how-tos/images/btn_upload.png create mode 100644 source/manual/how-tos/images/c-icap_av.png create mode 100644 source/manual/how-tos/images/c-icap_settings.png create mode 100644 source/manual/how-tos/images/captiveportal_popup.png create mode 100644 source/manual/how-tos/images/certificate.png create mode 100644 source/manual/how-tos/images/changefilter.png create mode 100644 source/manual/how-tos/images/clamav_settings.png create mode 100644 source/manual/how-tos/images/cli_list_captiveportalsessions.png create mode 100644 source/manual/how-tos/images/cp-traffic-shaping.png create mode 100644 source/manual/how-tos/images/cp_active_sessions.png create mode 100644 source/manual/how-tos/images/cp_active_vouchers.png create mode 100644 source/manual/how-tos/images/cp_royalhotel_voucher.png create mode 100644 source/manual/how-tos/images/cp_voucher_login.png create mode 100644 source/manual/how-tos/images/create_vouchers.png create mode 100644 source/manual/how-tos/images/default_login_no_authenticator.png create mode 100644 source/manual/how-tos/images/disable_offloading.png create mode 100644 source/manual/how-tos/images/downloadbtn.png create mode 100644 source/manual/how-tos/images/dynamic_routes_howto.png create mode 100644 source/manual/how-tos/images/dynamic_routes_ospf_general.png create mode 100644 source/manual/how-tos/images/dynamic_routes_ospf_interface_dialog.png create mode 100644 source/manual/how-tos/images/dynamic_routes_ospf_interfaces.png create mode 100644 source/manual/how-tos/images/dynamic_routes_ospf_network_dialog.png create mode 100644 source/manual/how-tos/images/dynamic_routes_ospf_networks.png create mode 100644 source/manual/how-tos/images/dynamic_routes_rip.png create mode 100644 source/manual/how-tos/images/dynamic_routes_zebra.png create mode 100644 source/manual/how-tos/images/expanded_view.png create mode 100644 source/manual/how-tos/images/export_CA_cert.png create mode 100644 source/manual/how-tos/images/facebook_click.png create mode 100644 source/manual/how-tos/images/facebook_lock.png create mode 100644 source/manual/how-tos/images/firmware.png create mode 100644 source/manual/how-tos/images/freeradius_clients.png create mode 100644 source/manual/how-tos/images/freeradius_edit_client.png create mode 100644 source/manual/how-tos/images/freeradius_edit_user.png create mode 100644 source/manual/how-tos/images/freeradius_general.png create mode 100644 source/manual/how-tos/images/freeradius_users.png create mode 100644 source/manual/how-tos/images/fw_category_multiselect.png create mode 100644 source/manual/how-tos/images/google_token_sample.png create mode 100644 source/manual/how-tos/images/guestnet_fwrules.png create mode 100644 source/manual/how-tos/images/haproxy_acls.png create mode 100644 source/manual/how-tos/images/haproxy_actions.png create mode 100644 source/manual/how-tos/images/haproxy_backends.png create mode 100644 source/manual/how-tos/images/haproxy_condition_add_authentication.png create mode 100644 source/manual/how-tos/images/haproxy_edit_acl.png create mode 100644 source/manual/how-tos/images/haproxy_edit_action.png create mode 100644 source/manual/how-tos/images/haproxy_edit_backend.png create mode 100644 source/manual/how-tos/images/haproxy_edit_frontend.png create mode 100644 source/manual/how-tos/images/haproxy_edit_rule_authentication.png create mode 100644 source/manual/how-tos/images/haproxy_edit_server.png create mode 100644 source/manual/how-tos/images/haproxy_forward_to_dir_rule.png create mode 100644 source/manual/how-tos/images/haproxy_forward_to_dir_service.png create mode 100644 source/manual/how-tos/images/haproxy_frontend_add_authentication.png create mode 100644 source/manual/how-tos/images/haproxy_frontends.png create mode 100644 source/manual/how-tos/images/haproxy_general.png create mode 100644 source/manual/how-tos/images/haproxy_root_path_condition.png create mode 100644 source/manual/how-tos/images/haproxy_servers.png create mode 100644 source/manual/how-tos/images/haproxy_settings_global_params_auth.png create mode 100644 source/manual/how-tos/images/idps.png create mode 100644 source/manual/how-tos/images/ids_menu.png create mode 100644 source/manual/how-tos/images/ids_tabs_user.png create mode 100644 source/manual/how-tos/images/ids_tabs_user_add.png create mode 100644 source/manual/how-tos/images/insight_details_view.png create mode 100644 source/manual/how-tos/images/insight_export.png create mode 100644 source/manual/how-tos/images/insight_export_view.png create mode 100644 source/manual/how-tos/images/insight_full_details.png create mode 100644 source/manual/how-tos/images/insight_gui.png create mode 100644 source/manual/how-tos/images/iphone_qr_scan.png create mode 100644 source/manual/how-tos/images/ips_action.png create mode 100644 source/manual/how-tos/images/ips_description.png create mode 100644 source/manual/how-tos/images/ips_description_country.png create mode 100644 source/manual/how-tos/images/ips_facebook_alert.png create mode 100644 source/manual/how-tos/images/ips_geoip_alert.png create mode 100644 source/manual/how-tos/images/ips_rule_add_geoip.png create mode 100644 source/manual/how-tos/images/ips_rule_details.png create mode 100644 source/manual/how-tos/images/ips_save.png create mode 100644 source/manual/how-tos/images/ipsec_ipsec_lan_rule.png create mode 100644 source/manual/how-tos/images/ipsec_road_vpn_p1a.png create mode 100644 source/manual/how-tos/images/ipsec_s2s_vpn_p1a_4.png create mode 100644 source/manual/how-tos/images/ipsec_s2s_vpn_p1a_apply.png create mode 100644 source/manual/how-tos/images/ipsec_s2s_vpn_p1a_enable.png create mode 100644 source/manual/how-tos/images/ipsec_s2s_vpn_p1a_p2_empty.png create mode 100644 source/manual/how-tos/images/ipsec_s2s_vpn_p1a_show_p2.png create mode 100644 source/manual/how-tos/images/ipsec_s2s_vpn_p1a_success.png create mode 100644 source/manual/how-tos/images/ipsec_s2s_vpn_p1b_4.png create mode 100644 source/manual/how-tos/images/ipsec_status.png create mode 100644 source/manual/how-tos/images/ipsec_wan_rules.png create mode 100644 source/manual/how-tos/images/ldap_mygroup_properties.png create mode 100644 source/manual/how-tos/images/ldap_selectcontainer.png create mode 100644 source/manual/how-tos/images/ldap_testfail.png create mode 100644 source/manual/how-tos/images/ldap_testok.png create mode 100644 source/manual/how-tos/images/mycompany_login.png create mode 100644 source/manual/how-tos/images/netflow_exporter.png create mode 100644 source/manual/how-tos/images/opnsense_add_gif.png create mode 100644 source/manual/how-tos/images/opnsense_hotspot_controller.png create mode 100644 source/manual/how-tos/images/osx-ipsec-conf1.png create mode 100644 source/manual/how-tos/images/osx-ipsec-conf2.png create mode 100644 source/manual/how-tos/images/osx-ipsec-connected.png create mode 100644 source/manual/how-tos/images/osx-ipsec-new.png create mode 100644 source/manual/how-tos/images/otp_qr_code.png create mode 100644 source/manual/how-tos/images/pie_details.png create mode 100644 source/manual/how-tos/images/pie_piece.png create mode 100644 source/manual/how-tos/images/plugin_mdns_repeater.png create mode 100644 source/manual/how-tos/images/postfix_add_domain_forward.png create mode 100644 source/manual/how-tos/images/postfix_add_new_domain.png create mode 100644 source/manual/how-tos/images/postfix_antispam_tab.png create mode 100644 source/manual/how-tos/images/postfix_general_tab.png create mode 100644 source/manual/how-tos/images/ppp_celular_configured.png create mode 100644 source/manual/how-tos/images/proxy_basics.png create mode 100644 source/manual/how-tos/images/proxy_blacklist.png create mode 100644 source/manual/how-tos/images/proxy_cache.png create mode 100644 source/manual/how-tos/images/proxy_categories.png create mode 100644 source/manual/how-tos/images/proxy_catgegory.png create mode 100644 source/manual/how-tos/images/proxy_firefox.png create mode 100644 source/manual/how-tos/images/proxy_firewall.png create mode 100644 source/manual/how-tos/images/proxy_tag.png create mode 100644 source/manual/how-tos/images/proxy_ut1.png create mode 100644 source/manual/how-tos/images/qs-access_server.png create mode 100644 source/manual/how-tos/images/redis_general.png create mode 100644 source/manual/how-tos/images/redis_menu_entry.png create mode 100644 source/manual/how-tos/images/rspamd_antispam_menu.png create mode 100644 source/manual/how-tos/images/rspamd_general.png create mode 100644 source/manual/how-tos/images/rspamd_mx_check.png create mode 100644 source/manual/how-tos/images/rulesdrop.png create mode 100644 source/manual/how-tos/images/rulesets_enable.png create mode 100644 source/manual/how-tos/images/schedule.png create mode 100644 source/manual/how-tos/images/screenshot_enable_transparent_http.png create mode 100644 source/manual/how-tos/images/search_ca.png create mode 100644 source/manual/how-tos/images/shaping_rules_s1.png create mode 100644 source/manual/how-tos/images/shaping_rules_s2.png create mode 100644 source/manual/how-tos/images/shaping_rules_s3.png create mode 100644 source/manual/how-tos/images/shaping_rules_s4.png create mode 100644 source/manual/how-tos/images/spamhaus_drop_edrop.png create mode 100644 source/manual/how-tos/images/spamhaus_lan.png create mode 100644 source/manual/how-tos/images/spamhaus_pftable.png create mode 100644 source/manual/how-tos/images/spamhaus_wan_rules.png create mode 100644 source/manual/how-tos/images/sslvpn_client_certificate.png create mode 100644 source/manual/how-tos/images/sslvpn_connection_status.png create mode 100644 source/manual/how-tos/images/sslvpn_firewall_rule_client.png create mode 100644 source/manual/how-tos/images/sslvpn_image_new.png create mode 100644 source/manual/how-tos/images/sslvpn_openvpn_rule.png create mode 100644 source/manual/how-tos/images/sslvpn_server.png create mode 100644 source/manual/how-tos/images/sslvpn_wan_rule.png create mode 100644 source/manual/how-tos/images/stacked_view.png create mode 100644 source/manual/how-tos/images/stream_view.png create mode 100644 source/manual/how-tos/images/system_access_tester.png create mode 100644 source/manual/how-tos/images/template_download.png create mode 100644 source/manual/how-tos/images/template_filelisting.png create mode 100644 source/manual/how-tos/images/tor_exit.png create mode 100644 source/manual/how-tos/images/tor_exit_acl_entry.png create mode 100644 source/manual/how-tos/images/tor_general.png create mode 100644 source/manual/how-tos/images/tor_hidden_services.png create mode 100644 source/manual/how-tos/images/tor_hidden_services_edit.png create mode 100644 source/manual/how-tos/images/tor_hidden_services_edit_very_hidden.png create mode 100644 source/manual/how-tos/images/tor_hidden_services_route_edit.png create mode 100644 source/manual/how-tos/images/tor_hidden_services_routing.png create mode 100644 source/manual/how-tos/images/tor_hidden_servicesvery_hidden_credentials.png create mode 100644 source/manual/how-tos/images/tor_relay.png create mode 100644 source/manual/how-tos/images/tor_socks_acl.png create mode 100644 source/manual/how-tos/images/tor_socks_acl_edit.png create mode 100644 source/manual/how-tos/images/tunnelbroker_configure_lan.png create mode 100644 source/manual/how-tos/images/tunnelbroker_dhcpv6.png create mode 100644 source/manual/how-tos/images/tunnelbroker_fw_rules.png create mode 100644 source/manual/how-tos/images/tunnelbroker_setup.png create mode 100644 source/manual/how-tos/images/user_cloudimport.png create mode 100644 source/manual/how-tos/images/user_ldap_distinguishedname.png create mode 100644 source/manual/how-tos/images/user_privileges.png create mode 100644 source/manual/how-tos/images/user_testresult_ldap.png create mode 100644 source/manual/how-tos/images/usermanager_groups.png create mode 100644 source/manual/how-tos/images/viscosity_connected.png create mode 100644 source/manual/how-tos/images/viscosity_files.png create mode 100644 source/manual/how-tos/images/viscosity_imported.png create mode 100644 source/manual/how-tos/images/viscosity_login.png create mode 100644 source/manual/how-tos/images/zerotier-0.png create mode 100644 source/manual/how-tos/images/zerotier-1.png create mode 100644 source/manual/how-tos/images/zerotier-2.png create mode 100644 source/manual/how-tos/images/zerotier-3.png create mode 100644 source/manual/how-tos/images/zerotier-4.png create mode 100644 source/manual/how-tos/images/zerotier-5.png create mode 100644 source/manual/how-tos/insight.rst create mode 100644 source/manual/how-tos/installaws.rst create mode 100644 source/manual/how-tos/ips-feodo.rst create mode 100644 source/manual/how-tos/ips-geoip.rst create mode 100644 source/manual/how-tos/ips-sslfingerprint.rst create mode 100644 source/manual/how-tos/ipsec-road.rst create mode 100644 source/manual/how-tos/ipsec-s2s.rst create mode 100644 source/manual/how-tos/ipv6_tunnelbroker.rst create mode 100644 source/manual/how-tos/mailgateway.rst create mode 100644 source/manual/how-tos/multicast-dns.rst create mode 100644 source/manual/how-tos/multiwan.rst create mode 100644 source/manual/how-tos/netflow_exporter.rst create mode 100644 source/manual/how-tos/proxyicapantivirus.rst create mode 100644 source/manual/how-tos/proxyicapantivirusinternal.rst create mode 100644 source/manual/how-tos/proxytransparent.rst create mode 100644 source/manual/how-tos/proxywebfilter.rst create mode 100644 source/manual/how-tos/resources/Carp_example_backup.xml create mode 100644 source/manual/how-tos/resources/Carp_example_master.xml create mode 100644 source/manual/how-tos/resources/config-OPNsense-ipsec-Site-A.xml create mode 100644 source/manual/how-tos/resources/config-OPNsense-ipsec-Site-B.xml create mode 100644 source/manual/how-tos/resources/mycompany_cptemplate.zip create mode 100644 source/manual/how-tos/resources/template_popup.zip create mode 100644 source/manual/how-tos/shaper.rst create mode 100644 source/manual/how-tos/sslvpn_client.rst create mode 100644 source/manual/how-tos/sslvpn_s2s.rst create mode 100644 source/manual/how-tos/tor.rst create mode 100644 source/manual/how-tos/transparent_bridge.rst create mode 100644 source/manual/how-tos/two_factor.rst create mode 100644 source/manual/how-tos/user-ldap.rst create mode 100644 source/manual/how-tos/user-local.rst create mode 100644 source/manual/how-tos/user-radius.rst create mode 100644 source/manual/how-tos/zerotier.rst create mode 100644 source/manual/howtos.rst create mode 100644 source/manual/images/IPv6.png create mode 100644 source/manual/images/OPNsense_4G_new.png create mode 100644 source/manual/images/Screenshot_Use_RAMdisks.png create mode 100644 source/manual/images/Virtual_Private_Network_overview.png create mode 100644 source/manual/images/advanced.png create mode 100644 source/manual/images/alias_firewall_rules.png create mode 100644 source/manual/images/alias_remote_ipsec.png create mode 100644 source/manual/images/aliases_host.png create mode 100644 source/manual/images/auth_server_fallback.png create mode 100644 source/manual/images/captiveportal_template_folder.png create mode 100644 source/manual/images/disableoffloading.png create mode 100644 source/manual/images/dropdown_tab.png create mode 100644 source/manual/images/eye_on_virus_new.jpg create mode 100644 source/manual/images/firmware-update.png create mode 100644 source/manual/images/firmware_flavour.png create mode 100644 source/manual/images/forward_proxy.png create mode 100644 source/manual/images/gui_layout.png create mode 100644 source/manual/images/help_msg.png create mode 100644 source/manual/images/hotspot_login.png create mode 100644 source/manual/images/info.png create mode 100644 source/manual/images/light_bulbs.png create mode 100644 source/manual/images/login.png create mode 100644 source/manual/images/menu_plugins.png create mode 100644 source/manual/images/netflow_analyzer_insight.png create mode 100644 source/manual/images/netflow_exporter.png create mode 100644 source/manual/images/netflow_insight_details.png create mode 100644 source/manual/images/os-vmware.png create mode 100644 source/manual/images/os-xen.png create mode 100644 source/manual/images/pftable_youtube.png create mode 100644 source/manual/images/plugins_quagga.png create mode 100644 source/manual/images/proxy_form.png create mode 100644 source/manual/images/quick-navigation.png create mode 100644 source/manual/images/submenu.png create mode 100644 source/manual/images/systemhealt_selection.png create mode 100644 source/manual/images/systemhealth_excel.png create mode 100644 source/manual/images/systemhealth_filtered.png create mode 100644 source/manual/images/systemhealth_gui.png create mode 100644 source/manual/images/systemhealth_inverse.png create mode 100644 source/manual/images/systemhealth_labelfilter.png create mode 100644 source/manual/images/systemhealth_obscureddata.png create mode 100644 source/manual/images/systemhealth_sample.png create mode 100644 source/manual/images/systemhealth_zoomed.png create mode 100644 source/manual/images/tab.png create mode 100644 source/manual/images/traffic_shaping.png create mode 100644 source/manual/images/two_factor_authentication.png create mode 100644 source/manual/images/user_manager.png create mode 100644 source/manual/images/vpn.png create mode 100644 source/manual/install.rst create mode 100644 source/manual/ips.rst create mode 100644 source/manual/ipv6.rst create mode 100644 source/manual/mobile_wan.rst create mode 100644 source/manual/multiwan.rst create mode 100644 source/manual/netflow.rst create mode 100644 source/manual/proxy.rst create mode 100644 source/manual/shaping.rst create mode 100644 source/manual/systemhealth.rst create mode 100644 source/manual/two_factor.rst create mode 100644 source/manual/users.rst create mode 100644 source/manual/virtuals.rst create mode 100644 source/manual/vpnet.rst create mode 100644 source/relations.rst create mode 100644 source/relations/FreeBSD.rst create mode 100644 source/relations/deciso.rst create mode 100644 source/relations/hardenedBSD.rst create mode 100644 source/relations/images/Logo-label-hardenedbsd.png create mode 100644 source/relations/images/freebsd-logo-full.png create mode 100644 source/relations/images/index.png create mode 100644 source/relations/images/logo_deciso_2015_with_movement.png create mode 100644 source/relations/images/osi_standard_logo.png create mode 100644 source/relations/m0n0wall.rst create mode 100644 source/relations/osi.rst create mode 100644 source/support.rst create mode 100644 themes/opnsense/sass/_theme_badge.sass create mode 100644 themes/opnsense/sass/_theme_badge_fa.sass create mode 100644 themes/opnsense/sass/_theme_breadcrumbs.sass create mode 100644 themes/opnsense/sass/_theme_font_awesome_compatibility.sass create mode 100644 themes/opnsense/sass/_theme_font_local.sass create mode 100644 themes/opnsense/sass/_theme_layout.sass create mode 100644 themes/opnsense/sass/_theme_mathjax.sass create mode 100644 themes/opnsense/sass/_theme_rst.sass create mode 100644 themes/opnsense/sass/_theme_variables.sass create mode 100644 themes/opnsense/sass/badge_only.sass create mode 100644 themes/opnsense/sass/theme.sass diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..809b1d3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +# OS generated files # +###################### +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db + +# Tools # +######### +update.sh +xcode_install.sh + +# Non source files # +################### + +build/ +bower_components/ +.sass-cache +*.pyc +log/ +old/ +.idea/ + diff --git a/LICENSE b/LICENSE index 4456a1b..6d9c487 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,6 @@ -# docs +# OPNsense documentation +The documentation is licensed under a 2-clause BSD Licnse: + Copyright (c) Deciso B.V. Copyright (c) 2017-2018 Fabian Franz Copyright (c) 2017-2018 Michael Muenz @@ -28,3 +30,14 @@ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Pictures +Some pictures are licensed under the Creative Commons Zero (CC0) license: + +https://creativecommons.org/publicdomain/zero/1.0/ + +# Logo's +Logo's may be subject to additional copyrights, property +rights, trademarks etc. and may require the consent of a third party or the +license of these rights. Deciso B.V. does not represent or make any warranties +that it owns or licenses any of the mentioned, nor does it grant them. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..4b4b074 --- /dev/null +++ b/Makefile @@ -0,0 +1,219 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = build + +# User-friendly check for sphinx-build +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +endif + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source + +.PHONY: help +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " applehelp to make an Apple Help Book" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + @echo " coverage to run coverage check of the documentation (if enabled)" + +.PHONY: clean +clean: + rm -rf $(BUILDDIR)/* + +.PHONY: html +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +.PHONY: html-fallback +html-fallback: + python3 /usr/bin/sphinx-build -b html source build +.PHONY: dirhtml +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +.PHONY: singlehtml +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +.PHONY: pickle +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +.PHONY: json +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +.PHONY: htmlhelp +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +.PHONY: qthelp +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/OPNsense.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/OPNsense.qhc" + +.PHONY: applehelp +applehelp: + $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp + @echo + @echo "Build finished. The help book is in $(BUILDDIR)/applehelp." + @echo "N.B. You won't be able to view it unless you put it in" \ + "~/Library/Documentation/Help or install it in your application" \ + "bundle." + +.PHONY: devhelp +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/OPNsense" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/OPNsense" + @echo "# devhelp" + +.PHONY: epub +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +.PHONY: latex +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +.PHONY: latexpdf +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +.PHONY: latexpdfja +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +.PHONY: text +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +.PHONY: man +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +.PHONY: texinfo +texinfo: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." + @echo "Run \`make' in that directory to run these through makeinfo" \ + "(use \`make info' here to do that automatically)." + +.PHONY: info +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +.PHONY: gettext +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +.PHONY: changes +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +.PHONY: linkcheck +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +.PHONY: doctest +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." + +.PHONY: coverage +coverage: + $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage + @echo "Testing of coverage in the sources finished, look at the " \ + "results in $(BUILDDIR)/coverage/python.txt." + +.PHONY: xml +xml: + $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml + @echo + @echo "Build finished. The XML files are in $(BUILDDIR)/xml." + +.PHONY: pseudoxml +pseudoxml: + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml + @echo + @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/README.md b/README.md index bbed289..f4e8b15 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,15 @@ -# docs -OPNsense documentation -====================== -The OPNsense project invites developers and users to start -contributing to the documentation. +![alt text](https://opnsense.org/wp-content/themes/OPNsense/assets/img/opnsense.png "Logo Title Text 1") -Contribute -========== +# OPNsense documentation +Welcome to the OPNsense documentation & wiki. +The purpose of this project is to provide OPNsense users with quality documentation. +## Contribute You can contribute to the project in many ways, e.g. testing functionality, sending in bug reports or creating pull requests directly via GitHub. Any help is always very welcome! -License -======= +## License OPNsense documentation is available under the 2-Clause BSD license: http://opensource.org/licenses/BSD-2-Clause @@ -24,3 +21,49 @@ for everybody. Some pictures are licensed under the Creative Commons Zero (CC0) license: https://creativecommons.org/publicdomain/zero/1.0/ + +Logo's may be subject to additional copyrights, property +rights, trademarks etc. and may require the consent of a third party or the +license of these rights. Deciso B.V. does not represent or make any warranties +that it owns or licenses any of the mentioned, nor does it grant them. + +#### Prepare build +Install Sphinx, our default theme and contrib packages +``` +pip install -r requirements.txt +``` + + +#### Generate HTML documents +``` +make html +``` + +(```make clean``` to flush) + + +#### Changing theme +* Install Sass (http://sass-lang.com/), on OSX via ```/Library/Ruby/Gems``` +``` +gem install --no-user-install sass +``` +* Install npm (https://www.npmjs.com/get-npm) +* Install Bower (https://bower.io/) +``` +npm install -g bower +``` + + +Install required stylesheets using bower +``` +bower install wyrm +bower install robotoslab-googlefont +bower install inconsolata-googlefont +bower install font-awesome +``` +(for font-awesome, choose newest) + + +#### Build your theme: +``` +sass -I bower_components/wyrm/sass/ -I bower_components/bourbon/dist/ -I bower_components/neat/app/assets/stylesheets/ -I bower_components/font-awesome/scss/ themes/opnsense/sass/theme.sass > source/_static/css/opnsense.css diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..a80cf25 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,8 @@ +sphinx +sphinx_rtd_theme +sphinxcontrib-blockdiag +sphinxcontrib-nwdiag +sphinxcontrib-seqdiag +sphinxcontrib-actdiag +sphinxcontrib-inheritance +blockdiagcontrib-cisco \ No newline at end of file diff --git a/source/_static/css/opnsense.css b/source/_static/css/opnsense.css new file mode 100644 index 0000000..6e8330a --- /dev/null +++ b/source/_static/css/opnsense.css @@ -0,0 +1,4697 @@ +@charset "UTF-8"; +.wy-side-nav-search > div.version { + color: #ffffff !important; } + +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + +article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { + display: block; } + +audio, canvas, video { + display: inline-block; + *display: inline; + *zoom: 1; } + +audio:not([controls]) { + display: none; } + +[hidden] { + display: none; } + +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; } + +body { + margin: 0; } + +a:hover, a:active { + outline: 0; } + +abbr[title] { + border-bottom: 1px dotted; } + +b, strong { + font-weight: bold; } + +blockquote { + margin: 0; } + +dfn { + font-style: italic; } + +ins { + background: #ff9; + color: #000; + text-decoration: none; } + +mark { + background: #ff0; + color: #000; + font-style: italic; + font-weight: bold; } + +pre, code, .rst-content tt, .rst-content code, kbd, samp { + font-family: monospace, serif; + _font-family: "courier new", monospace; + font-size: 1em; } + +pre { + white-space: pre; } + +q { + quotes: none; } + +q:before, q:after { + content: ""; + content: none; } + +small { + font-size: 85%; } + +sub, sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sup { + top: -0.5em; } + +sub { + bottom: -0.25em; } + +ul, ol, dl { + margin: 0; + padding: 0; + list-style: none; + list-style-image: none; } + +li { + list-style: none; } + +dd { + margin: 0; } + +img { + border: 0; + -ms-interpolation-mode: bicubic; + vertical-align: middle; + max-width: 100%; } + +svg:not(:root) { + overflow: hidden; } + +figure { + margin: 0; } + +form { + margin: 0; } + +fieldset { + border: 0; + margin: 0; + padding: 0; } + +label { + cursor: pointer; } + +legend { + border: 0; + *margin-left: -7px; + padding: 0; + white-space: normal; } + +button, input, select, textarea { + font-size: 100%; + margin: 0; + vertical-align: baseline; + *vertical-align: middle; } + +button, input { + line-height: normal; } + +button, input[type="button"], input[type="reset"], input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; + *overflow: visible; } + +button[disabled], input[disabled] { + cursor: default; } + +input[type="checkbox"], input[type="radio"] { + box-sizing: border-box; + padding: 0; + *width: 13px; + *height: 13px; } + +input[type="search"] { + -webkit-appearance: textfield; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; } + +input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; } + +button::-moz-focus-inner, input::-moz-focus-inner { + border: 0; + padding: 0; } + +textarea { + overflow: auto; + vertical-align: top; + resize: vertical; } + +table { + border-collapse: collapse; + border-spacing: 0; } + +td { + vertical-align: top; } + +.chromeframe { + margin: 0.2em 0; + background: #ccc; + color: black; + padding: 0.2em 0; } + +.ir { + display: block; + border: 0; + text-indent: -999em; + overflow: hidden; + background-color: transparent; + background-repeat: no-repeat; + text-align: left; + direction: ltr; + *line-height: 0; } + +.ir br { + display: none; } + +.hidden { + display: none !important; + visibility: hidden; } + +.visuallyhidden { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; } + +.visuallyhidden.focusable:active, .visuallyhidden.focusable:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; } + +.invisible { + visibility: hidden; } + +.relative { + position: relative; } + +big, small { + font-size: 100%; } + +@media print { + html, body, section { + background: none !important; } + + * { + box-shadow: none !important; + text-shadow: none !important; + filter: none !important; + -ms-filter: none !important; } + + a, a:visited { + text-decoration: underline; } + + .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { + content: ""; } + + pre, blockquote { + page-break-inside: avoid; } + + thead { + display: table-header-group; } + + tr, img { + page-break-inside: avoid; } + + img { + max-width: 100% !important; } + + @page { + margin: 0.5cm; } + p, h2, .rst-content .toctree-wrapper p.caption, h3 { + orphans: 3; + widows: 3; } + + h2, .rst-content .toctree-wrapper p.caption, h3 { + page-break-after: avoid; } } +.fa:before, .wy-menu-vertical li span.toctree-expand:before, .wy-menu-vertical li.on a span.toctree-expand:before, .wy-menu-vertical li.current > a span.toctree-expand:before, .rst-content .admonition-title:before, .rst-content h1 .headerlink:before, .rst-content h2 .headerlink:before, .rst-content h3 .headerlink:before, .rst-content h4 .headerlink:before, .rst-content h5 .headerlink:before, .rst-content h6 .headerlink:before, .rst-content dl dt .headerlink:before, .rst-content p.caption .headerlink:before, .rst-content tt.download span:first-child:before, .rst-content code.download span:first-child:before, .icon:before, .wy-dropdown .caret:before, .wy-inline-validate.wy-inline-validate-success .wy-input-context:before, .wy-inline-validate.wy-inline-validate-danger .wy-input-context:before, .wy-inline-validate.wy-inline-validate-warning .wy-input-context:before, .wy-inline-validate.wy-inline-validate-info .wy-input-context:before, .wy-alert, .rst-content .note, .rst-content .attention, .rst-content .caution, .rst-content .danger, .rst-content .error, .rst-content .hint, .rst-content .important, .rst-content .tip, .rst-content .warning, .rst-content .seealso, .rst-content .admonition-todo, .btn, input[type="text"], input[type="password"], input[type="email"], input[type="url"], input[type="date"], input[type="month"], input[type="time"], input[type="datetime"], input[type="datetime-local"], input[type="week"], input[type="number"], input[type="search"], input[type="tel"], input[type="color"], select, textarea, .wy-menu-vertical li.on a, .wy-menu-vertical li.current > a, .wy-side-nav-search > a, .wy-side-nav-search .wy-dropdown > a, .wy-nav-top a { + -webkit-font-smoothing: antialiased; } + +.clearfix { + *zoom: 1; } + .clearfix:before, .clearfix:after { + display: table; + content: ""; } + .clearfix:after { + clear: both; } + +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url("../fonts/fontawesome-webfont.eot?v=4.7.0"); + src: url("../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") format("embedded-opentype"), url("../fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"), url("../fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"), url("../fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"), url("../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") format("svg"); + font-weight: normal; + font-style: normal; } +.fa, .wy-menu-vertical li span.toctree-expand, .wy-menu-vertical li.on a span.toctree-expand, .wy-menu-vertical li.current > a span.toctree-expand, .rst-content .admonition-title, .rst-content h1 .headerlink, .rst-content h2 .headerlink, .rst-content h3 .headerlink, .rst-content h4 .headerlink, .rst-content h5 .headerlink, .rst-content h6 .headerlink, .rst-content dl dt .headerlink, .rst-content p.caption .headerlink, .rst-content tt.download span:first-child, .rst-content code.download span:first-child, .icon { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } + +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333em; + line-height: 0.75em; + vertical-align: -15%; } + +.fa-2x { + font-size: 2em; } + +.fa-3x { + font-size: 3em; } + +.fa-4x { + font-size: 4em; } + +.fa-5x { + font-size: 5em; } + +.fa-fw { + width: 1.28571em; + text-align: center; } + +.fa-ul { + padding-left: 0; + margin-left: 2.14286em; + list-style-type: none; } + .fa-ul > li { + position: relative; } + +.fa-li { + position: absolute; + left: -2.14286em; + width: 2.14286em; + top: 0.14286em; + text-align: center; } + .fa-li.fa-lg { + left: -1.85714em; } + +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eee; + border-radius: .1em; } + +.fa-pull-left { + float: left; } + +.fa-pull-right { + float: right; } + +.fa.fa-pull-left, .wy-menu-vertical li span.fa-pull-left.toctree-expand, .wy-menu-vertical li.on a span.fa-pull-left.toctree-expand, .wy-menu-vertical li.current > a span.fa-pull-left.toctree-expand, .rst-content .fa-pull-left.admonition-title, .rst-content h1 .fa-pull-left.headerlink, .rst-content h2 .fa-pull-left.headerlink, .rst-content h3 .fa-pull-left.headerlink, .rst-content h4 .fa-pull-left.headerlink, .rst-content h5 .fa-pull-left.headerlink, .rst-content h6 .fa-pull-left.headerlink, .rst-content dl dt .fa-pull-left.headerlink, .rst-content p.caption .fa-pull-left.headerlink, .rst-content tt.download span.fa-pull-left:first-child, .rst-content code.download span.fa-pull-left:first-child, .fa-pull-left.icon { + margin-right: .3em; } +.fa.fa-pull-right, .wy-menu-vertical li span.fa-pull-right.toctree-expand, .wy-menu-vertical li.on a span.fa-pull-right.toctree-expand, .wy-menu-vertical li.current > a span.fa-pull-right.toctree-expand, .rst-content .fa-pull-right.admonition-title, .rst-content h1 .fa-pull-right.headerlink, .rst-content h2 .fa-pull-right.headerlink, .rst-content h3 .fa-pull-right.headerlink, .rst-content h4 .fa-pull-right.headerlink, .rst-content h5 .fa-pull-right.headerlink, .rst-content h6 .fa-pull-right.headerlink, .rst-content dl dt .fa-pull-right.headerlink, .rst-content p.caption .fa-pull-right.headerlink, .rst-content tt.download span.fa-pull-right:first-child, .rst-content code.download span.fa-pull-right:first-child, .fa-pull-right.icon { + margin-left: .3em; } + +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; } + +.pull-left { + float: left; } + +.fa.pull-left, .wy-menu-vertical li span.pull-left.toctree-expand, .wy-menu-vertical li.on a span.pull-left.toctree-expand, .wy-menu-vertical li.current > a span.pull-left.toctree-expand, .rst-content .pull-left.admonition-title, .rst-content h1 .pull-left.headerlink, .rst-content h2 .pull-left.headerlink, .rst-content h3 .pull-left.headerlink, .rst-content h4 .pull-left.headerlink, .rst-content h5 .pull-left.headerlink, .rst-content h6 .pull-left.headerlink, .rst-content dl dt .pull-left.headerlink, .rst-content p.caption .pull-left.headerlink, .rst-content tt.download span.pull-left:first-child, .rst-content code.download span.pull-left:first-child, .pull-left.icon { + margin-right: .3em; } +.fa.pull-right, .wy-menu-vertical li span.pull-right.toctree-expand, .wy-menu-vertical li.on a span.pull-right.toctree-expand, .wy-menu-vertical li.current > a span.pull-right.toctree-expand, .rst-content .pull-right.admonition-title, .rst-content h1 .pull-right.headerlink, .rst-content h2 .pull-right.headerlink, .rst-content h3 .pull-right.headerlink, .rst-content h4 .pull-right.headerlink, .rst-content h5 .pull-right.headerlink, .rst-content h6 .pull-right.headerlink, .rst-content dl dt .pull-right.headerlink, .rst-content p.caption .pull-right.headerlink, .rst-content tt.download span.pull-right:first-child, .rst-content code.download span.pull-right:first-child, .pull-right.icon { + margin-left: .3em; } + +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; } + +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); } + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); } } +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); } } +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); } + +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); } + +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); } + +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); } + +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; } + +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; } + +.fa-stack-1x, .fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; } + +.fa-stack-1x { + line-height: inherit; } + +.fa-stack-2x { + font-size: 2em; } + +.fa-inverse { + color: #fff; } + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: ""; } + +.fa-music:before { + content: ""; } + +.fa-search:before, .icon-search:before { + content: ""; } + +.fa-envelope-o:before { + content: ""; } + +.fa-heart:before { + content: ""; } + +.fa-star:before { + content: ""; } + +.fa-star-o:before { + content: ""; } + +.fa-user:before { + content: ""; } + +.fa-film:before { + content: ""; } + +.fa-th-large:before { + content: ""; } + +.fa-th:before { + content: ""; } + +.fa-th-list:before { + content: ""; } + +.fa-check:before { + content: ""; } + +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: ""; } + +.fa-search-plus:before { + content: ""; } + +.fa-search-minus:before { + content: ""; } + +.fa-power-off:before { + content: ""; } + +.fa-signal:before { + content: ""; } + +.fa-gear:before, +.fa-cog:before { + content: ""; } + +.fa-trash-o:before { + content: ""; } + +.fa-home:before, .icon-home:before { + content: ""; } + +.fa-file-o:before { + content: ""; } + +.fa-clock-o:before { + content: ""; } + +.fa-road:before { + content: ""; } + +.fa-download:before, .rst-content tt.download span:first-child:before, .rst-content code.download span:first-child:before { + content: ""; } + +.fa-arrow-circle-o-down:before { + content: ""; } + +.fa-arrow-circle-o-up:before { + content: ""; } + +.fa-inbox:before { + content: ""; } + +.fa-play-circle-o:before { + content: ""; } + +.fa-rotate-right:before, +.fa-repeat:before { + content: ""; } + +.fa-refresh:before { + content: ""; } + +.fa-list-alt:before { + content: ""; } + +.fa-lock:before { + content: ""; } + +.fa-flag:before { + content: ""; } + +.fa-headphones:before { + content: ""; } + +.fa-volume-off:before { + content: ""; } + +.fa-volume-down:before { + content: ""; } + +.fa-volume-up:before { + content: ""; } + +.fa-qrcode:before { + content: ""; } + +.fa-barcode:before { + content: ""; } + +.fa-tag:before { + content: ""; } + +.fa-tags:before { + content: ""; } + +.fa-book:before, .icon-book:before { + content: ""; } + +.fa-bookmark:before { + content: ""; } + +.fa-print:before { + content: ""; } + +.fa-camera:before { + content: ""; } + +.fa-font:before { + content: ""; } + +.fa-bold:before { + content: ""; } + +.fa-italic:before { + content: ""; } + +.fa-text-height:before { + content: ""; } + +.fa-text-width:before { + content: ""; } + +.fa-align-left:before { + content: ""; } + +.fa-align-center:before { + content: ""; } + +.fa-align-right:before { + content: ""; } + +.fa-align-justify:before { + content: ""; } + +.fa-list:before { + content: ""; } + +.fa-dedent:before, +.fa-outdent:before { + content: ""; } + +.fa-indent:before { + content: ""; } + +.fa-video-camera:before { + content: ""; } + +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: ""; } + +.fa-pencil:before { + content: ""; } + +.fa-map-marker:before { + content: ""; } + +.fa-adjust:before { + content: ""; } + +.fa-tint:before { + content: ""; } + +.fa-edit:before, +.fa-pencil-square-o:before { + content: ""; } + +.fa-share-square-o:before { + content: ""; } + +.fa-check-square-o:before { + content: ""; } + +.fa-arrows:before { + content: ""; } + +.fa-step-backward:before { + content: ""; } + +.fa-fast-backward:before { + content: ""; } + +.fa-backward:before { + content: ""; } + +.fa-play:before { + content: ""; } + +.fa-pause:before { + content: ""; } + +.fa-stop:before { + content: ""; } + +.fa-forward:before { + content: ""; } + +.fa-fast-forward:before { + content: ""; } + +.fa-step-forward:before { + content: ""; } + +.fa-eject:before { + content: ""; } + +.fa-chevron-left:before { + content: ""; } + +.fa-chevron-right:before { + content: ""; } + +.fa-plus-circle:before { + content: ""; } + +.fa-minus-circle:before { + content: ""; } + +.fa-times-circle:before, .wy-inline-validate.wy-inline-validate-danger .wy-input-context:before { + content: ""; } + +.fa-check-circle:before, .wy-inline-validate.wy-inline-validate-success .wy-input-context:before { + content: ""; } + +.fa-question-circle:before { + content: ""; } + +.fa-info-circle:before { + content: ""; } + +.fa-crosshairs:before { + content: ""; } + +.fa-times-circle-o:before { + content: ""; } + +.fa-check-circle-o:before { + content: ""; } + +.fa-ban:before { + content: ""; } + +.fa-arrow-left:before { + content: ""; } + +.fa-arrow-right:before { + content: ""; } + +.fa-arrow-up:before { + content: ""; } + +.fa-arrow-down:before { + content: ""; } + +.fa-mail-forward:before, +.fa-share:before { + content: ""; } + +.fa-expand:before { + content: ""; } + +.fa-compress:before { + content: ""; } + +.fa-plus:before { + content: ""; } + +.fa-minus:before { + content: ""; } + +.fa-asterisk:before { + content: ""; } + +.fa-exclamation-circle:before, .wy-inline-validate.wy-inline-validate-warning .wy-input-context:before, .wy-inline-validate.wy-inline-validate-info .wy-input-context:before, .rst-content .admonition-title:before { + content: ""; } + +.fa-gift:before { + content: ""; } + +.fa-leaf:before { + content: ""; } + +.fa-fire:before, .icon-fire:before { + content: ""; } + +.fa-eye:before { + content: ""; } + +.fa-eye-slash:before { + content: ""; } + +.fa-warning:before, +.fa-exclamation-triangle:before { + content: ""; } + +.fa-plane:before { + content: ""; } + +.fa-calendar:before { + content: ""; } + +.fa-random:before { + content: ""; } + +.fa-comment:before { + content: ""; } + +.fa-magnet:before { + content: ""; } + +.fa-chevron-up:before { + content: ""; } + +.fa-chevron-down:before { + content: ""; } + +.fa-retweet:before { + content: ""; } + +.fa-shopping-cart:before { + content: ""; } + +.fa-folder:before { + content: ""; } + +.fa-folder-open:before { + content: ""; } + +.fa-arrows-v:before { + content: ""; } + +.fa-arrows-h:before { + content: ""; } + +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: ""; } + +.fa-twitter-square:before { + content: ""; } + +.fa-facebook-square:before { + content: ""; } + +.fa-camera-retro:before { + content: ""; } + +.fa-key:before { + content: ""; } + +.fa-gears:before, +.fa-cogs:before { + content: ""; } + +.fa-comments:before { + content: ""; } + +.fa-thumbs-o-up:before { + content: ""; } + +.fa-thumbs-o-down:before { + content: ""; } + +.fa-star-half:before { + content: ""; } + +.fa-heart-o:before { + content: ""; } + +.fa-sign-out:before { + content: ""; } + +.fa-linkedin-square:before { + content: ""; } + +.fa-thumb-tack:before { + content: ""; } + +.fa-external-link:before { + content: ""; } + +.fa-sign-in:before { + content: ""; } + +.fa-trophy:before { + content: ""; } + +.fa-github-square:before { + content: ""; } + +.fa-upload:before { + content: ""; } + +.fa-lemon-o:before { + content: ""; } + +.fa-phone:before { + content: ""; } + +.fa-square-o:before { + content: ""; } + +.fa-bookmark-o:before { + content: ""; } + +.fa-phone-square:before { + content: ""; } + +.fa-twitter:before { + content: ""; } + +.fa-facebook-f:before, +.fa-facebook:before { + content: ""; } + +.fa-github:before, .icon-github:before { + content: ""; } + +.fa-unlock:before { + content: ""; } + +.fa-credit-card:before { + content: ""; } + +.fa-feed:before, +.fa-rss:before { + content: ""; } + +.fa-hdd-o:before { + content: ""; } + +.fa-bullhorn:before { + content: ""; } + +.fa-bell:before { + content: ""; } + +.fa-certificate:before { + content: ""; } + +.fa-hand-o-right:before { + content: ""; } + +.fa-hand-o-left:before { + content: ""; } + +.fa-hand-o-up:before { + content: ""; } + +.fa-hand-o-down:before { + content: ""; } + +.fa-arrow-circle-left:before, .icon-circle-arrow-left:before { + content: ""; } + +.fa-arrow-circle-right:before, .icon-circle-arrow-right:before { + content: ""; } + +.fa-arrow-circle-up:before { + content: ""; } + +.fa-arrow-circle-down:before { + content: ""; } + +.fa-globe:before { + content: ""; } + +.fa-wrench:before { + content: ""; } + +.fa-tasks:before { + content: ""; } + +.fa-filter:before { + content: ""; } + +.fa-briefcase:before { + content: ""; } + +.fa-arrows-alt:before { + content: ""; } + +.fa-group:before, +.fa-users:before { + content: ""; } + +.fa-chain:before, +.fa-link:before, +.icon-link:before { + content: ""; } + +.fa-cloud:before { + content: ""; } + +.fa-flask:before { + content: ""; } + +.fa-cut:before, +.fa-scissors:before { + content: ""; } + +.fa-copy:before, +.fa-files-o:before { + content: ""; } + +.fa-paperclip:before { + content: ""; } + +.fa-save:before, +.fa-floppy-o:before { + content: ""; } + +.fa-square:before { + content: ""; } + +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: ""; } + +.fa-list-ul:before { + content: ""; } + +.fa-list-ol:before { + content: ""; } + +.fa-strikethrough:before { + content: ""; } + +.fa-underline:before { + content: ""; } + +.fa-table:before { + content: ""; } + +.fa-magic:before { + content: ""; } + +.fa-truck:before { + content: ""; } + +.fa-pinterest:before { + content: ""; } + +.fa-pinterest-square:before { + content: ""; } + +.fa-google-plus-square:before { + content: ""; } + +.fa-google-plus:before { + content: ""; } + +.fa-money:before { + content: ""; } + +.fa-caret-down:before, .wy-dropdown .caret:before, .icon-caret-down:before { + content: ""; } + +.fa-caret-up:before { + content: ""; } + +.fa-caret-left:before { + content: ""; } + +.fa-caret-right:before { + content: ""; } + +.fa-columns:before { + content: ""; } + +.fa-unsorted:before, +.fa-sort:before { + content: ""; } + +.fa-sort-down:before, +.fa-sort-desc:before { + content: ""; } + +.fa-sort-up:before, +.fa-sort-asc:before { + content: ""; } + +.fa-envelope:before { + content: ""; } + +.fa-linkedin:before { + content: ""; } + +.fa-rotate-left:before, +.fa-undo:before { + content: ""; } + +.fa-legal:before, +.fa-gavel:before { + content: ""; } + +.fa-dashboard:before, +.fa-tachometer:before { + content: ""; } + +.fa-comment-o:before { + content: ""; } + +.fa-comments-o:before { + content: ""; } + +.fa-flash:before, +.fa-bolt:before { + content: ""; } + +.fa-sitemap:before { + content: ""; } + +.fa-umbrella:before { + content: ""; } + +.fa-paste:before, +.fa-clipboard:before { + content: ""; } + +.fa-lightbulb-o:before { + content: ""; } + +.fa-exchange:before { + content: ""; } + +.fa-cloud-download:before { + content: ""; } + +.fa-cloud-upload:before { + content: ""; } + +.fa-user-md:before { + content: ""; } + +.fa-stethoscope:before { + content: ""; } + +.fa-suitcase:before { + content: ""; } + +.fa-bell-o:before { + content: ""; } + +.fa-coffee:before { + content: ""; } + +.fa-cutlery:before { + content: ""; } + +.fa-file-text-o:before { + content: ""; } + +.fa-building-o:before { + content: ""; } + +.fa-hospital-o:before { + content: ""; } + +.fa-ambulance:before { + content: ""; } + +.fa-medkit:before { + content: ""; } + +.fa-fighter-jet:before { + content: ""; } + +.fa-beer:before { + content: ""; } + +.fa-h-square:before { + content: ""; } + +.fa-plus-square:before { + content: ""; } + +.fa-angle-double-left:before { + content: ""; } + +.fa-angle-double-right:before { + content: ""; } + +.fa-angle-double-up:before { + content: ""; } + +.fa-angle-double-down:before { + content: ""; } + +.fa-angle-left:before { + content: ""; } + +.fa-angle-right:before { + content: ""; } + +.fa-angle-up:before { + content: ""; } + +.fa-angle-down:before { + content: ""; } + +.fa-desktop:before { + content: ""; } + +.fa-laptop:before { + content: ""; } + +.fa-tablet:before { + content: ""; } + +.fa-mobile-phone:before, +.fa-mobile:before { + content: ""; } + +.fa-circle-o:before { + content: ""; } + +.fa-quote-left:before { + content: ""; } + +.fa-quote-right:before { + content: ""; } + +.fa-spinner:before { + content: ""; } + +.fa-circle:before { + content: ""; } + +.fa-mail-reply:before, +.fa-reply:before { + content: ""; } + +.fa-github-alt:before { + content: ""; } + +.fa-folder-o:before { + content: ""; } + +.fa-folder-open-o:before { + content: ""; } + +.fa-smile-o:before { + content: ""; } + +.fa-frown-o:before { + content: ""; } + +.fa-meh-o:before { + content: ""; } + +.fa-gamepad:before { + content: ""; } + +.fa-keyboard-o:before { + content: ""; } + +.fa-flag-o:before { + content: ""; } + +.fa-flag-checkered:before { + content: ""; } + +.fa-terminal:before { + content: ""; } + +.fa-code:before { + content: ""; } + +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: ""; } + +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: ""; } + +.fa-location-arrow:before { + content: ""; } + +.fa-crop:before { + content: ""; } + +.fa-code-fork:before { + content: ""; } + +.fa-unlink:before, +.fa-chain-broken:before { + content: ""; } + +.fa-question:before { + content: ""; } + +.fa-info:before { + content: ""; } + +.fa-exclamation:before { + content: ""; } + +.fa-superscript:before { + content: ""; } + +.fa-subscript:before { + content: ""; } + +.fa-eraser:before { + content: ""; } + +.fa-puzzle-piece:before { + content: ""; } + +.fa-microphone:before { + content: ""; } + +.fa-microphone-slash:before { + content: ""; } + +.fa-shield:before { + content: ""; } + +.fa-calendar-o:before { + content: ""; } + +.fa-fire-extinguisher:before { + content: ""; } + +.fa-rocket:before { + content: ""; } + +.fa-maxcdn:before { + content: ""; } + +.fa-chevron-circle-left:before { + content: ""; } + +.fa-chevron-circle-right:before { + content: ""; } + +.fa-chevron-circle-up:before { + content: ""; } + +.fa-chevron-circle-down:before { + content: ""; } + +.fa-html5:before { + content: ""; } + +.fa-css3:before { + content: ""; } + +.fa-anchor:before { + content: ""; } + +.fa-unlock-alt:before { + content: ""; } + +.fa-bullseye:before { + content: ""; } + +.fa-ellipsis-h:before { + content: ""; } + +.fa-ellipsis-v:before { + content: ""; } + +.fa-rss-square:before { + content: ""; } + +.fa-play-circle:before { + content: ""; } + +.fa-ticket:before { + content: ""; } + +.fa-minus-square:before { + content: ""; } + +.fa-minus-square-o:before, .wy-menu-vertical li.on a span.toctree-expand:before, .wy-menu-vertical li.current > a span.toctree-expand:before { + content: ""; } + +.fa-level-up:before { + content: ""; } + +.fa-level-down:before { + content: ""; } + +.fa-check-square:before { + content: ""; } + +.fa-pencil-square:before { + content: ""; } + +.fa-external-link-square:before { + content: ""; } + +.fa-share-square:before { + content: ""; } + +.fa-compass:before { + content: ""; } + +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: ""; } + +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: ""; } + +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: ""; } + +.fa-euro:before, +.fa-eur:before { + content: ""; } + +.fa-gbp:before { + content: ""; } + +.fa-dollar:before, +.fa-usd:before { + content: ""; } + +.fa-rupee:before, +.fa-inr:before { + content: ""; } + +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: ""; } + +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: ""; } + +.fa-won:before, +.fa-krw:before { + content: ""; } + +.fa-bitcoin:before, +.fa-btc:before { + content: ""; } + +.fa-file:before { + content: ""; } + +.fa-file-text:before { + content: ""; } + +.fa-sort-alpha-asc:before { + content: ""; } + +.fa-sort-alpha-desc:before { + content: ""; } + +.fa-sort-amount-asc:before { + content: ""; } + +.fa-sort-amount-desc:before { + content: ""; } + +.fa-sort-numeric-asc:before { + content: ""; } + +.fa-sort-numeric-desc:before { + content: ""; } + +.fa-thumbs-up:before { + content: ""; } + +.fa-thumbs-down:before { + content: ""; } + +.fa-youtube-square:before { + content: ""; } + +.fa-youtube:before { + content: ""; } + +.fa-xing:before { + content: ""; } + +.fa-xing-square:before { + content: ""; } + +.fa-youtube-play:before { + content: ""; } + +.fa-dropbox:before { + content: ""; } + +.fa-stack-overflow:before { + content: ""; } + +.fa-instagram:before { + content: ""; } + +.fa-flickr:before { + content: ""; } + +.fa-adn:before { + content: ""; } + +.fa-bitbucket:before, .icon-bitbucket:before { + content: ""; } + +.fa-bitbucket-square:before { + content: ""; } + +.fa-tumblr:before { + content: ""; } + +.fa-tumblr-square:before { + content: ""; } + +.fa-long-arrow-down:before { + content: ""; } + +.fa-long-arrow-up:before { + content: ""; } + +.fa-long-arrow-left:before { + content: ""; } + +.fa-long-arrow-right:before { + content: ""; } + +.fa-apple:before { + content: ""; } + +.fa-windows:before { + content: ""; } + +.fa-android:before { + content: ""; } + +.fa-linux:before { + content: ""; } + +.fa-dribbble:before { + content: ""; } + +.fa-skype:before { + content: ""; } + +.fa-foursquare:before { + content: ""; } + +.fa-trello:before { + content: ""; } + +.fa-female:before { + content: ""; } + +.fa-male:before { + content: ""; } + +.fa-gittip:before, +.fa-gratipay:before { + content: ""; } + +.fa-sun-o:before { + content: ""; } + +.fa-moon-o:before { + content: ""; } + +.fa-archive:before { + content: ""; } + +.fa-bug:before { + content: ""; } + +.fa-vk:before { + content: ""; } + +.fa-weibo:before { + content: ""; } + +.fa-renren:before { + content: ""; } + +.fa-pagelines:before { + content: ""; } + +.fa-stack-exchange:before { + content: ""; } + +.fa-arrow-circle-o-right:before { + content: ""; } + +.fa-arrow-circle-o-left:before { + content: ""; } + +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: ""; } + +.fa-dot-circle-o:before { + content: ""; } + +.fa-wheelchair:before { + content: ""; } + +.fa-vimeo-square:before { + content: ""; } + +.fa-turkish-lira:before, +.fa-try:before { + content: ""; } + +.fa-plus-square-o:before, .wy-menu-vertical li span.toctree-expand:before { + content: ""; } + +.fa-space-shuttle:before { + content: ""; } + +.fa-slack:before { + content: ""; } + +.fa-envelope-square:before { + content: ""; } + +.fa-wordpress:before { + content: ""; } + +.fa-openid:before { + content: ""; } + +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: ""; } + +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: ""; } + +.fa-yahoo:before { + content: ""; } + +.fa-google:before { + content: ""; } + +.fa-reddit:before { + content: ""; } + +.fa-reddit-square:before { + content: ""; } + +.fa-stumbleupon-circle:before { + content: ""; } + +.fa-stumbleupon:before { + content: ""; } + +.fa-delicious:before { + content: ""; } + +.fa-digg:before { + content: ""; } + +.fa-pied-piper-pp:before { + content: ""; } + +.fa-pied-piper-alt:before { + content: ""; } + +.fa-drupal:before { + content: ""; } + +.fa-joomla:before { + content: ""; } + +.fa-language:before { + content: ""; } + +.fa-fax:before { + content: ""; } + +.fa-building:before { + content: ""; } + +.fa-child:before { + content: ""; } + +.fa-paw:before { + content: ""; } + +.fa-spoon:before { + content: ""; } + +.fa-cube:before { + content: ""; } + +.fa-cubes:before { + content: ""; } + +.fa-behance:before { + content: ""; } + +.fa-behance-square:before { + content: ""; } + +.fa-steam:before { + content: ""; } + +.fa-steam-square:before { + content: ""; } + +.fa-recycle:before { + content: ""; } + +.fa-automobile:before, +.fa-car:before { + content: ""; } + +.fa-cab:before, +.fa-taxi:before { + content: ""; } + +.fa-tree:before { + content: ""; } + +.fa-spotify:before { + content: ""; } + +.fa-deviantart:before { + content: ""; } + +.fa-soundcloud:before { + content: ""; } + +.fa-database:before { + content: ""; } + +.fa-file-pdf-o:before { + content: ""; } + +.fa-file-word-o:before { + content: ""; } + +.fa-file-excel-o:before { + content: ""; } + +.fa-file-powerpoint-o:before { + content: ""; } + +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: ""; } + +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: ""; } + +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: ""; } + +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: ""; } + +.fa-file-code-o:before { + content: ""; } + +.fa-vine:before { + content: ""; } + +.fa-codepen:before { + content: ""; } + +.fa-jsfiddle:before { + content: ""; } + +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: ""; } + +.fa-circle-o-notch:before { + content: ""; } + +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: ""; } + +.fa-ge:before, +.fa-empire:before { + content: ""; } + +.fa-git-square:before { + content: ""; } + +.fa-git:before { + content: ""; } + +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: ""; } + +.fa-tencent-weibo:before { + content: ""; } + +.fa-qq:before { + content: ""; } + +.fa-wechat:before, +.fa-weixin:before { + content: ""; } + +.fa-send:before, +.fa-paper-plane:before { + content: ""; } + +.fa-send-o:before, +.fa-paper-plane-o:before { + content: ""; } + +.fa-history:before { + content: ""; } + +.fa-circle-thin:before { + content: ""; } + +.fa-header:before { + content: ""; } + +.fa-paragraph:before { + content: ""; } + +.fa-sliders:before { + content: ""; } + +.fa-share-alt:before { + content: ""; } + +.fa-share-alt-square:before { + content: ""; } + +.fa-bomb:before { + content: ""; } + +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: ""; } + +.fa-tty:before { + content: ""; } + +.fa-binoculars:before { + content: ""; } + +.fa-plug:before { + content: ""; } + +.fa-slideshare:before { + content: ""; } + +.fa-twitch:before { + content: ""; } + +.fa-yelp:before { + content: ""; } + +.fa-newspaper-o:before { + content: ""; } + +.fa-wifi:before { + content: ""; } + +.fa-calculator:before { + content: ""; } + +.fa-paypal:before { + content: ""; } + +.fa-google-wallet:before { + content: ""; } + +.fa-cc-visa:before { + content: ""; } + +.fa-cc-mastercard:before { + content: ""; } + +.fa-cc-discover:before { + content: ""; } + +.fa-cc-amex:before { + content: ""; } + +.fa-cc-paypal:before { + content: ""; } + +.fa-cc-stripe:before { + content: ""; } + +.fa-bell-slash:before { + content: ""; } + +.fa-bell-slash-o:before { + content: ""; } + +.fa-trash:before { + content: ""; } + +.fa-copyright:before { + content: ""; } + +.fa-at:before { + content: ""; } + +.fa-eyedropper:before { + content: ""; } + +.fa-paint-brush:before { + content: ""; } + +.fa-birthday-cake:before { + content: ""; } + +.fa-area-chart:before { + content: ""; } + +.fa-pie-chart:before { + content: ""; } + +.fa-line-chart:before { + content: ""; } + +.fa-lastfm:before { + content: ""; } + +.fa-lastfm-square:before { + content: ""; } + +.fa-toggle-off:before { + content: ""; } + +.fa-toggle-on:before { + content: ""; } + +.fa-bicycle:before { + content: ""; } + +.fa-bus:before { + content: ""; } + +.fa-ioxhost:before { + content: ""; } + +.fa-angellist:before { + content: ""; } + +.fa-cc:before { + content: ""; } + +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: ""; } + +.fa-meanpath:before { + content: ""; } + +.fa-buysellads:before { + content: ""; } + +.fa-connectdevelop:before { + content: ""; } + +.fa-dashcube:before { + content: ""; } + +.fa-forumbee:before { + content: ""; } + +.fa-leanpub:before { + content: ""; } + +.fa-sellsy:before { + content: ""; } + +.fa-shirtsinbulk:before { + content: ""; } + +.fa-simplybuilt:before { + content: ""; } + +.fa-skyatlas:before { + content: ""; } + +.fa-cart-plus:before { + content: ""; } + +.fa-cart-arrow-down:before { + content: ""; } + +.fa-diamond:before { + content: ""; } + +.fa-ship:before { + content: ""; } + +.fa-user-secret:before { + content: ""; } + +.fa-motorcycle:before { + content: ""; } + +.fa-street-view:before { + content: ""; } + +.fa-heartbeat:before { + content: ""; } + +.fa-venus:before { + content: ""; } + +.fa-mars:before { + content: ""; } + +.fa-mercury:before { + content: ""; } + +.fa-intersex:before, +.fa-transgender:before { + content: ""; } + +.fa-transgender-alt:before { + content: ""; } + +.fa-venus-double:before { + content: ""; } + +.fa-mars-double:before { + content: ""; } + +.fa-venus-mars:before { + content: ""; } + +.fa-mars-stroke:before { + content: ""; } + +.fa-mars-stroke-v:before { + content: ""; } + +.fa-mars-stroke-h:before { + content: ""; } + +.fa-neuter:before { + content: ""; } + +.fa-genderless:before { + content: ""; } + +.fa-facebook-official:before { + content: ""; } + +.fa-pinterest-p:before { + content: ""; } + +.fa-whatsapp:before { + content: ""; } + +.fa-server:before { + content: ""; } + +.fa-user-plus:before { + content: ""; } + +.fa-user-times:before { + content: ""; } + +.fa-hotel:before, +.fa-bed:before { + content: ""; } + +.fa-viacoin:before { + content: ""; } + +.fa-train:before { + content: ""; } + +.fa-subway:before { + content: ""; } + +.fa-medium:before { + content: ""; } + +.fa-yc:before, +.fa-y-combinator:before { + content: ""; } + +.fa-optin-monster:before { + content: ""; } + +.fa-opencart:before { + content: ""; } + +.fa-expeditedssl:before { + content: ""; } + +.fa-battery-4:before, +.fa-battery:before, +.fa-battery-full:before { + content: ""; } + +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: ""; } + +.fa-battery-2:before, +.fa-battery-half:before { + content: ""; } + +.fa-battery-1:before, +.fa-battery-quarter:before { + content: ""; } + +.fa-battery-0:before, +.fa-battery-empty:before { + content: ""; } + +.fa-mouse-pointer:before { + content: ""; } + +.fa-i-cursor:before { + content: ""; } + +.fa-object-group:before { + content: ""; } + +.fa-object-ungroup:before { + content: ""; } + +.fa-sticky-note:before { + content: ""; } + +.fa-sticky-note-o:before { + content: ""; } + +.fa-cc-jcb:before { + content: ""; } + +.fa-cc-diners-club:before { + content: ""; } + +.fa-clone:before { + content: ""; } + +.fa-balance-scale:before { + content: ""; } + +.fa-hourglass-o:before { + content: ""; } + +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: ""; } + +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: ""; } + +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: ""; } + +.fa-hourglass:before { + content: ""; } + +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: ""; } + +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: ""; } + +.fa-hand-scissors-o:before { + content: ""; } + +.fa-hand-lizard-o:before { + content: ""; } + +.fa-hand-spock-o:before { + content: ""; } + +.fa-hand-pointer-o:before { + content: ""; } + +.fa-hand-peace-o:before { + content: ""; } + +.fa-trademark:before { + content: ""; } + +.fa-registered:before { + content: ""; } + +.fa-creative-commons:before { + content: ""; } + +.fa-gg:before { + content: ""; } + +.fa-gg-circle:before { + content: ""; } + +.fa-tripadvisor:before { + content: ""; } + +.fa-odnoklassniki:before { + content: ""; } + +.fa-odnoklassniki-square:before { + content: ""; } + +.fa-get-pocket:before { + content: ""; } + +.fa-wikipedia-w:before { + content: ""; } + +.fa-safari:before { + content: ""; } + +.fa-chrome:before { + content: ""; } + +.fa-firefox:before { + content: ""; } + +.fa-opera:before { + content: ""; } + +.fa-internet-explorer:before { + content: ""; } + +.fa-tv:before, +.fa-television:before { + content: ""; } + +.fa-contao:before { + content: ""; } + +.fa-500px:before { + content: ""; } + +.fa-amazon:before { + content: ""; } + +.fa-calendar-plus-o:before { + content: ""; } + +.fa-calendar-minus-o:before { + content: ""; } + +.fa-calendar-times-o:before { + content: ""; } + +.fa-calendar-check-o:before { + content: ""; } + +.fa-industry:before { + content: ""; } + +.fa-map-pin:before { + content: ""; } + +.fa-map-signs:before { + content: ""; } + +.fa-map-o:before { + content: ""; } + +.fa-map:before { + content: ""; } + +.fa-commenting:before { + content: ""; } + +.fa-commenting-o:before { + content: ""; } + +.fa-houzz:before { + content: ""; } + +.fa-vimeo:before { + content: ""; } + +.fa-black-tie:before { + content: ""; } + +.fa-fonticons:before { + content: ""; } + +.fa-reddit-alien:before { + content: ""; } + +.fa-edge:before { + content: ""; } + +.fa-credit-card-alt:before { + content: ""; } + +.fa-codiepie:before { + content: ""; } + +.fa-modx:before { + content: ""; } + +.fa-fort-awesome:before { + content: ""; } + +.fa-usb:before { + content: ""; } + +.fa-product-hunt:before { + content: ""; } + +.fa-mixcloud:before { + content: ""; } + +.fa-scribd:before { + content: ""; } + +.fa-pause-circle:before { + content: ""; } + +.fa-pause-circle-o:before { + content: ""; } + +.fa-stop-circle:before { + content: ""; } + +.fa-stop-circle-o:before { + content: ""; } + +.fa-shopping-bag:before { + content: ""; } + +.fa-shopping-basket:before { + content: ""; } + +.fa-hashtag:before { + content: ""; } + +.fa-bluetooth:before { + content: ""; } + +.fa-bluetooth-b:before { + content: ""; } + +.fa-percent:before { + content: ""; } + +.fa-gitlab:before, .icon-gitlab:before { + content: ""; } + +.fa-wpbeginner:before { + content: ""; } + +.fa-wpforms:before { + content: ""; } + +.fa-envira:before { + content: ""; } + +.fa-universal-access:before { + content: ""; } + +.fa-wheelchair-alt:before { + content: ""; } + +.fa-question-circle-o:before { + content: ""; } + +.fa-blind:before { + content: ""; } + +.fa-audio-description:before { + content: ""; } + +.fa-volume-control-phone:before { + content: ""; } + +.fa-braille:before { + content: ""; } + +.fa-assistive-listening-systems:before { + content: ""; } + +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: ""; } + +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: ""; } + +.fa-glide:before { + content: ""; } + +.fa-glide-g:before { + content: ""; } + +.fa-signing:before, +.fa-sign-language:before { + content: ""; } + +.fa-low-vision:before { + content: ""; } + +.fa-viadeo:before { + content: ""; } + +.fa-viadeo-square:before { + content: ""; } + +.fa-snapchat:before { + content: ""; } + +.fa-snapchat-ghost:before { + content: ""; } + +.fa-snapchat-square:before { + content: ""; } + +.fa-pied-piper:before { + content: ""; } + +.fa-first-order:before { + content: ""; } + +.fa-yoast:before { + content: ""; } + +.fa-themeisle:before { + content: ""; } + +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: ""; } + +.fa-fa:before, +.fa-font-awesome:before { + content: ""; } + +.fa-handshake-o:before { + content: ""; } + +.fa-envelope-open:before { + content: ""; } + +.fa-envelope-open-o:before { + content: ""; } + +.fa-linode:before { + content: ""; } + +.fa-address-book:before { + content: ""; } + +.fa-address-book-o:before { + content: ""; } + +.fa-vcard:before, +.fa-address-card:before { + content: ""; } + +.fa-vcard-o:before, +.fa-address-card-o:before { + content: ""; } + +.fa-user-circle:before { + content: ""; } + +.fa-user-circle-o:before { + content: ""; } + +.fa-user-o:before { + content: ""; } + +.fa-id-badge:before { + content: ""; } + +.fa-drivers-license:before, +.fa-id-card:before { + content: ""; } + +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: ""; } + +.fa-quora:before { + content: ""; } + +.fa-free-code-camp:before { + content: ""; } + +.fa-telegram:before { + content: ""; } + +.fa-thermometer-4:before, +.fa-thermometer:before, +.fa-thermometer-full:before { + content: ""; } + +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: ""; } + +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: ""; } + +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: ""; } + +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: ""; } + +.fa-shower:before { + content: ""; } + +.fa-bathtub:before, +.fa-s15:before, +.fa-bath:before { + content: ""; } + +.fa-podcast:before { + content: ""; } + +.fa-window-maximize:before { + content: ""; } + +.fa-window-minimize:before { + content: ""; } + +.fa-window-restore:before { + content: ""; } + +.fa-times-rectangle:before, +.fa-window-close:before { + content: ""; } + +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: ""; } + +.fa-bandcamp:before { + content: ""; } + +.fa-grav:before { + content: ""; } + +.fa-etsy:before { + content: ""; } + +.fa-imdb:before { + content: ""; } + +.fa-ravelry:before { + content: ""; } + +.fa-eercast:before { + content: ""; } + +.fa-microchip:before { + content: ""; } + +.fa-snowflake-o:before { + content: ""; } + +.fa-superpowers:before { + content: ""; } + +.fa-wpexplorer:before { + content: ""; } + +.fa-meetup:before { + content: ""; } + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; } + +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; } + +.fa, .wy-menu-vertical li span.toctree-expand, .wy-menu-vertical li.on a span.toctree-expand, .wy-menu-vertical li.current > a span.toctree-expand, .rst-content .admonition-title, .rst-content h1 .headerlink, .rst-content h2 .headerlink, .rst-content h3 .headerlink, .rst-content h4 .headerlink, .rst-content h5 .headerlink, .rst-content h6 .headerlink, .rst-content dl dt .headerlink, .rst-content p.caption .headerlink, .rst-content tt.download span:first-child, .rst-content code.download span:first-child, .icon, .wy-dropdown .caret, .wy-inline-validate.wy-inline-validate-success .wy-input-context, .wy-inline-validate.wy-inline-validate-danger .wy-input-context, .wy-inline-validate.wy-inline-validate-warning .wy-input-context, .wy-inline-validate.wy-inline-validate-info .wy-input-context { + font-family: inherit; } + .fa:before, .wy-menu-vertical li span.toctree-expand:before, .wy-menu-vertical li.on a span.toctree-expand:before, .wy-menu-vertical li.current > a span.toctree-expand:before, .rst-content .admonition-title:before, .rst-content h1 .headerlink:before, .rst-content h2 .headerlink:before, .rst-content h3 .headerlink:before, .rst-content h4 .headerlink:before, .rst-content h5 .headerlink:before, .rst-content h6 .headerlink:before, .rst-content dl dt .headerlink:before, .rst-content p.caption .headerlink:before, .rst-content tt.download span:first-child:before, .rst-content code.download span:first-child:before, .icon:before, .wy-dropdown .caret:before, .wy-inline-validate.wy-inline-validate-success .wy-input-context:before, .wy-inline-validate.wy-inline-validate-danger .wy-input-context:before, .wy-inline-validate.wy-inline-validate-warning .wy-input-context:before, .wy-inline-validate.wy-inline-validate-info .wy-input-context:before { + font-family: "FontAwesome"; + display: inline-block; + font-style: normal; + font-weight: normal; + line-height: 1; + text-decoration: inherit; } + +a .fa, a .wy-menu-vertical li span.toctree-expand, .wy-menu-vertical li a span.toctree-expand, .wy-menu-vertical li.on a span.toctree-expand, .wy-menu-vertical li.current > a span.toctree-expand, a .rst-content .admonition-title, .rst-content a .admonition-title, a .rst-content h1 .headerlink, .rst-content h1 a .headerlink, a .rst-content h2 .headerlink, .rst-content h2 a .headerlink, a .rst-content h3 .headerlink, .rst-content h3 a .headerlink, a .rst-content h4 .headerlink, .rst-content h4 a .headerlink, a .rst-content h5 .headerlink, .rst-content h5 a .headerlink, a .rst-content h6 .headerlink, .rst-content h6 a .headerlink, a .rst-content dl dt .headerlink, .rst-content dl dt a .headerlink, a .rst-content p.caption .headerlink, .rst-content p.caption a .headerlink, a .rst-content tt.download span:first-child, .rst-content tt.download a span:first-child, a .rst-content code.download span:first-child, .rst-content code.download a span:first-child, a .icon { + display: inline-block; + text-decoration: inherit; } + +.btn .fa, .btn .wy-menu-vertical li span.toctree-expand, .wy-menu-vertical li .btn span.toctree-expand, .btn .wy-menu-vertical li.on a span.toctree-expand, .wy-menu-vertical li.on a .btn span.toctree-expand, .btn .wy-menu-vertical li.current > a span.toctree-expand, .wy-menu-vertical li.current > a .btn span.toctree-expand, .btn .rst-content .admonition-title, .rst-content .btn .admonition-title, .btn .rst-content h1 .headerlink, .rst-content h1 .btn .headerlink, .btn .rst-content h2 .headerlink, .rst-content h2 .btn .headerlink, .btn .rst-content h3 .headerlink, .rst-content h3 .btn .headerlink, .btn .rst-content h4 .headerlink, .rst-content h4 .btn .headerlink, .btn .rst-content h5 .headerlink, .rst-content h5 .btn .headerlink, .btn .rst-content h6 .headerlink, .rst-content h6 .btn .headerlink, .btn .rst-content dl dt .headerlink, .rst-content dl dt .btn .headerlink, .btn .rst-content p.caption .headerlink, .rst-content p.caption .btn .headerlink, .btn .rst-content tt.download span:first-child, .rst-content tt.download .btn span:first-child, .btn .rst-content code.download span:first-child, .rst-content code.download .btn span:first-child, .btn .icon, .nav .fa, .nav .wy-menu-vertical li span.toctree-expand, .wy-menu-vertical li .nav span.toctree-expand, .nav .wy-menu-vertical li.on a span.toctree-expand, .wy-menu-vertical li.on a .nav span.toctree-expand, .nav .wy-menu-vertical li.current > a span.toctree-expand, .wy-menu-vertical li.current > a .nav span.toctree-expand, .nav .rst-content .admonition-title, .rst-content .nav .admonition-title, .nav .rst-content h1 .headerlink, .rst-content h1 .nav .headerlink, .nav .rst-content h2 .headerlink, .rst-content h2 .nav .headerlink, .nav .rst-content h3 .headerlink, .rst-content h3 .nav .headerlink, .nav .rst-content h4 .headerlink, .rst-content h4 .nav .headerlink, .nav .rst-content h5 .headerlink, .rst-content h5 .nav .headerlink, .nav .rst-content h6 .headerlink, .rst-content h6 .nav .headerlink, .nav .rst-content dl dt .headerlink, .rst-content dl dt .nav .headerlink, .nav .rst-content p.caption .headerlink, .rst-content p.caption .nav .headerlink, .nav .rst-content tt.download span:first-child, .rst-content tt.download .nav span:first-child, .nav .rst-content code.download span:first-child, .rst-content code.download .nav span:first-child, .nav .icon { + display: inline; } + .btn .fa.fa-large, .btn .wy-menu-vertical li span.fa-large.toctree-expand, .wy-menu-vertical li .btn span.fa-large.toctree-expand, .btn .rst-content .fa-large.admonition-title, .rst-content .btn .fa-large.admonition-title, .btn .rst-content h1 .fa-large.headerlink, .rst-content h1 .btn .fa-large.headerlink, .btn .rst-content h2 .fa-large.headerlink, .rst-content h2 .btn .fa-large.headerlink, .btn .rst-content h3 .fa-large.headerlink, .rst-content h3 .btn .fa-large.headerlink, .btn .rst-content h4 .fa-large.headerlink, .rst-content h4 .btn .fa-large.headerlink, .btn .rst-content h5 .fa-large.headerlink, .rst-content h5 .btn .fa-large.headerlink, .btn .rst-content h6 .fa-large.headerlink, .rst-content h6 .btn .fa-large.headerlink, .btn .rst-content dl dt .fa-large.headerlink, .rst-content dl dt .btn .fa-large.headerlink, .btn .rst-content p.caption .fa-large.headerlink, .rst-content p.caption .btn .fa-large.headerlink, .btn .rst-content tt.download span.fa-large:first-child, .rst-content tt.download .btn span.fa-large:first-child, .btn .rst-content code.download span.fa-large:first-child, .rst-content code.download .btn span.fa-large:first-child, .btn .fa-large.icon, .nav .fa.fa-large, .nav .wy-menu-vertical li span.fa-large.toctree-expand, .wy-menu-vertical li .nav span.fa-large.toctree-expand, .nav .rst-content .fa-large.admonition-title, .rst-content .nav .fa-large.admonition-title, .nav .rst-content h1 .fa-large.headerlink, .rst-content h1 .nav .fa-large.headerlink, .nav .rst-content h2 .fa-large.headerlink, .rst-content h2 .nav .fa-large.headerlink, .nav .rst-content h3 .fa-large.headerlink, .rst-content h3 .nav .fa-large.headerlink, .nav .rst-content h4 .fa-large.headerlink, .rst-content h4 .nav .fa-large.headerlink, .nav .rst-content h5 .fa-large.headerlink, .rst-content h5 .nav .fa-large.headerlink, .nav .rst-content h6 .fa-large.headerlink, .rst-content h6 .nav .fa-large.headerlink, .nav .rst-content dl dt .fa-large.headerlink, .rst-content dl dt .nav .fa-large.headerlink, .nav .rst-content p.caption .fa-large.headerlink, .rst-content p.caption .nav .fa-large.headerlink, .nav .rst-content tt.download span.fa-large:first-child, .rst-content tt.download .nav span.fa-large:first-child, .nav .rst-content code.download span.fa-large:first-child, .rst-content code.download .nav span.fa-large:first-child, .nav .fa-large.icon { + line-height: 0.9em; } + .btn .fa.fa-spin, .btn .wy-menu-vertical li span.fa-spin.toctree-expand, .wy-menu-vertical li .btn span.fa-spin.toctree-expand, .btn .rst-content .fa-spin.admonition-title, .rst-content .btn .fa-spin.admonition-title, .btn .rst-content h1 .fa-spin.headerlink, .rst-content h1 .btn .fa-spin.headerlink, .btn .rst-content h2 .fa-spin.headerlink, .rst-content h2 .btn .fa-spin.headerlink, .btn .rst-content h3 .fa-spin.headerlink, .rst-content h3 .btn .fa-spin.headerlink, .btn .rst-content h4 .fa-spin.headerlink, .rst-content h4 .btn .fa-spin.headerlink, .btn .rst-content h5 .fa-spin.headerlink, .rst-content h5 .btn .fa-spin.headerlink, .btn .rst-content h6 .fa-spin.headerlink, .rst-content h6 .btn .fa-spin.headerlink, .btn .rst-content dl dt .fa-spin.headerlink, .rst-content dl dt .btn .fa-spin.headerlink, .btn .rst-content p.caption .fa-spin.headerlink, .rst-content p.caption .btn .fa-spin.headerlink, .btn .rst-content tt.download span.fa-spin:first-child, .rst-content tt.download .btn span.fa-spin:first-child, .btn .rst-content code.download span.fa-spin:first-child, .rst-content code.download .btn span.fa-spin:first-child, .btn .fa-spin.icon, .nav .fa.fa-spin, .nav .wy-menu-vertical li span.fa-spin.toctree-expand, .wy-menu-vertical li .nav span.fa-spin.toctree-expand, .nav .rst-content .fa-spin.admonition-title, .rst-content .nav .fa-spin.admonition-title, .nav .rst-content h1 .fa-spin.headerlink, .rst-content h1 .nav .fa-spin.headerlink, .nav .rst-content h2 .fa-spin.headerlink, .rst-content h2 .nav .fa-spin.headerlink, .nav .rst-content h3 .fa-spin.headerlink, .rst-content h3 .nav .fa-spin.headerlink, .nav .rst-content h4 .fa-spin.headerlink, .rst-content h4 .nav .fa-spin.headerlink, .nav .rst-content h5 .fa-spin.headerlink, .rst-content h5 .nav .fa-spin.headerlink, .nav .rst-content h6 .fa-spin.headerlink, .rst-content h6 .nav .fa-spin.headerlink, .nav .rst-content dl dt .fa-spin.headerlink, .rst-content dl dt .nav .fa-spin.headerlink, .nav .rst-content p.caption .fa-spin.headerlink, .rst-content p.caption .nav .fa-spin.headerlink, .nav .rst-content tt.download span.fa-spin:first-child, .rst-content tt.download .nav span.fa-spin:first-child, .nav .rst-content code.download span.fa-spin:first-child, .rst-content code.download .nav span.fa-spin:first-child, .nav .fa-spin.icon { + display: inline-block; } + +.btn.fa:before, .wy-menu-vertical li span.btn.toctree-expand:before, .rst-content .btn.admonition-title:before, .rst-content h1 .btn.headerlink:before, .rst-content h2 .btn.headerlink:before, .rst-content h3 .btn.headerlink:before, .rst-content h4 .btn.headerlink:before, .rst-content h5 .btn.headerlink:before, .rst-content h6 .btn.headerlink:before, .rst-content dl dt .btn.headerlink:before, .rst-content p.caption .btn.headerlink:before, .rst-content tt.download span.btn:first-child:before, .rst-content code.download span.btn:first-child:before, .btn.icon:before { + opacity: 0.5; + -webkit-transition: opacity 0.05s ease-in; + -moz-transition: opacity 0.05s ease-in; + transition: opacity 0.05s ease-in; } + +.btn.fa:hover:before, .wy-menu-vertical li span.btn.toctree-expand:hover:before, .rst-content .btn.admonition-title:hover:before, .rst-content h1 .btn.headerlink:hover:before, .rst-content h2 .btn.headerlink:hover:before, .rst-content h3 .btn.headerlink:hover:before, .rst-content h4 .btn.headerlink:hover:before, .rst-content h5 .btn.headerlink:hover:before, .rst-content h6 .btn.headerlink:hover:before, .rst-content dl dt .btn.headerlink:hover:before, .rst-content p.caption .btn.headerlink:hover:before, .rst-content tt.download span.btn:first-child:hover:before, .rst-content code.download span.btn:first-child:hover:before, .btn.icon:hover:before { + opacity: 1; } + +.btn-mini .fa:before, .btn-mini .wy-menu-vertical li span.toctree-expand:before, .wy-menu-vertical li .btn-mini span.toctree-expand:before, .btn-mini .rst-content .admonition-title:before, .rst-content .btn-mini .admonition-title:before, .btn-mini .rst-content h1 .headerlink:before, .rst-content h1 .btn-mini .headerlink:before, .btn-mini .rst-content h2 .headerlink:before, .rst-content h2 .btn-mini .headerlink:before, .btn-mini .rst-content h3 .headerlink:before, .rst-content h3 .btn-mini .headerlink:before, .btn-mini .rst-content h4 .headerlink:before, .rst-content h4 .btn-mini .headerlink:before, .btn-mini .rst-content h5 .headerlink:before, .rst-content h5 .btn-mini .headerlink:before, .btn-mini .rst-content h6 .headerlink:before, .rst-content h6 .btn-mini .headerlink:before, .btn-mini .rst-content dl dt .headerlink:before, .rst-content dl dt .btn-mini .headerlink:before, .btn-mini .rst-content p.caption .headerlink:before, .rst-content p.caption .btn-mini .headerlink:before, .btn-mini .rst-content tt.download span:first-child:before, .rst-content tt.download .btn-mini span:first-child:before, .btn-mini .rst-content code.download span:first-child:before, .rst-content code.download .btn-mini span:first-child:before, .btn-mini .icon:before { + font-size: 14px; + vertical-align: -15%; } + +.wy-alert, .rst-content .note, .rst-content .attention, .rst-content .caution, .rst-content .danger, .rst-content .error, .rst-content .hint, .rst-content .important, .rst-content .tip, .rst-content .warning, .rst-content .seealso, .rst-content .admonition-todo { + padding: 12px; + line-height: 24px; + margin-bottom: 24px; + background: #e7f2fa; } + +.wy-alert-title, .rst-content .admonition-title { + color: #fff; + font-weight: bold; + display: block; + color: #fff; + background: #6ab0de; + margin: -12px; + padding: 6px 12px; + margin-bottom: 12px; } + +.wy-alert.wy-alert-danger, .rst-content .wy-alert-danger.note, .rst-content .wy-alert-danger.attention, .rst-content .wy-alert-danger.caution, .rst-content .danger, .rst-content .error, .rst-content .wy-alert-danger.hint, .rst-content .wy-alert-danger.important, .rst-content .wy-alert-danger.tip, .rst-content .wy-alert-danger.warning, .rst-content .wy-alert-danger.seealso, .rst-content .wy-alert-danger.admonition-todo { + background: #fdf3f2; } + .wy-alert.wy-alert-danger .wy-alert-title, .rst-content .wy-alert-danger.note .wy-alert-title, .rst-content .wy-alert-danger.attention .wy-alert-title, .rst-content .wy-alert-danger.caution .wy-alert-title, .rst-content .danger .wy-alert-title, .rst-content .error .wy-alert-title, .rst-content .wy-alert-danger.hint .wy-alert-title, .rst-content .wy-alert-danger.important .wy-alert-title, .rst-content .wy-alert-danger.tip .wy-alert-title, .rst-content .wy-alert-danger.warning .wy-alert-title, .rst-content .wy-alert-danger.seealso .wy-alert-title, .rst-content .wy-alert-danger.admonition-todo .wy-alert-title, .wy-alert.wy-alert-danger .rst-content .admonition-title, .rst-content .wy-alert.wy-alert-danger .admonition-title, .rst-content .wy-alert-danger.note .admonition-title, .rst-content .wy-alert-danger.attention .admonition-title, .rst-content .wy-alert-danger.caution .admonition-title, .rst-content .danger .admonition-title, .rst-content .error .admonition-title, .rst-content .wy-alert-danger.hint .admonition-title, .rst-content .wy-alert-danger.important .admonition-title, .rst-content .wy-alert-danger.tip .admonition-title, .rst-content .wy-alert-danger.warning .admonition-title, .rst-content .wy-alert-danger.seealso .admonition-title, .rst-content .wy-alert-danger.admonition-todo .admonition-title { + background: #f29f97; } + +.wy-alert.wy-alert-warning, .rst-content .wy-alert-warning.note, .rst-content .attention, .rst-content .caution, .rst-content .wy-alert-warning.danger, .rst-content .wy-alert-warning.error, .rst-content .wy-alert-warning.hint, .rst-content .wy-alert-warning.important, .rst-content .wy-alert-warning.tip, .rst-content .warning, .rst-content .wy-alert-warning.seealso, .rst-content .admonition-todo { + background: #ffedcc; } + .wy-alert.wy-alert-warning .wy-alert-title, .rst-content .wy-alert-warning.note .wy-alert-title, .rst-content .attention .wy-alert-title, .rst-content .caution .wy-alert-title, .rst-content .wy-alert-warning.danger .wy-alert-title, .rst-content .wy-alert-warning.error .wy-alert-title, .rst-content .wy-alert-warning.hint .wy-alert-title, .rst-content .wy-alert-warning.important .wy-alert-title, .rst-content .wy-alert-warning.tip .wy-alert-title, .rst-content .warning .wy-alert-title, .rst-content .wy-alert-warning.seealso .wy-alert-title, .rst-content .admonition-todo .wy-alert-title, .wy-alert.wy-alert-warning .rst-content .admonition-title, .rst-content .wy-alert.wy-alert-warning .admonition-title, .rst-content .wy-alert-warning.note .admonition-title, .rst-content .attention .admonition-title, .rst-content .caution .admonition-title, .rst-content .wy-alert-warning.danger .admonition-title, .rst-content .wy-alert-warning.error .admonition-title, .rst-content .wy-alert-warning.hint .admonition-title, .rst-content .wy-alert-warning.important .admonition-title, .rst-content .wy-alert-warning.tip .admonition-title, .rst-content .warning .admonition-title, .rst-content .wy-alert-warning.seealso .admonition-title, .rst-content .admonition-todo .admonition-title { + background: #f0b37e; } + +.wy-alert.wy-alert-info, .rst-content .note, .rst-content .wy-alert-info.attention, .rst-content .wy-alert-info.caution, .rst-content .wy-alert-info.danger, .rst-content .wy-alert-info.error, .rst-content .wy-alert-info.hint, .rst-content .wy-alert-info.important, .rst-content .wy-alert-info.tip, .rst-content .wy-alert-info.warning, .rst-content .seealso, .rst-content .wy-alert-info.admonition-todo { + background: #e7f2fa; } + .wy-alert.wy-alert-info .wy-alert-title, .rst-content .note .wy-alert-title, .rst-content .wy-alert-info.attention .wy-alert-title, .rst-content .wy-alert-info.caution .wy-alert-title, .rst-content .wy-alert-info.danger .wy-alert-title, .rst-content .wy-alert-info.error .wy-alert-title, .rst-content .wy-alert-info.hint .wy-alert-title, .rst-content .wy-alert-info.important .wy-alert-title, .rst-content .wy-alert-info.tip .wy-alert-title, .rst-content .wy-alert-info.warning .wy-alert-title, .rst-content .seealso .wy-alert-title, .rst-content .wy-alert-info.admonition-todo .wy-alert-title, .wy-alert.wy-alert-info .rst-content .admonition-title, .rst-content .wy-alert.wy-alert-info .admonition-title, .rst-content .note .admonition-title, .rst-content .wy-alert-info.attention .admonition-title, .rst-content .wy-alert-info.caution .admonition-title, .rst-content .wy-alert-info.danger .admonition-title, .rst-content .wy-alert-info.error .admonition-title, .rst-content .wy-alert-info.hint .admonition-title, .rst-content .wy-alert-info.important .admonition-title, .rst-content .wy-alert-info.tip .admonition-title, .rst-content .wy-alert-info.warning .admonition-title, .rst-content .seealso .admonition-title, .rst-content .wy-alert-info.admonition-todo .admonition-title { + background: #6ab0de; } + +.wy-alert.wy-alert-success, .rst-content .wy-alert-success.note, .rst-content .wy-alert-success.attention, .rst-content .wy-alert-success.caution, .rst-content .wy-alert-success.danger, .rst-content .wy-alert-success.error, .rst-content .hint, .rst-content .important, .rst-content .tip, .rst-content .wy-alert-success.warning, .rst-content .wy-alert-success.seealso, .rst-content .wy-alert-success.admonition-todo { + background: #dbfaf4; } + .wy-alert.wy-alert-success .wy-alert-title, .rst-content .wy-alert-success.note .wy-alert-title, .rst-content .wy-alert-success.attention .wy-alert-title, .rst-content .wy-alert-success.caution .wy-alert-title, .rst-content .wy-alert-success.danger .wy-alert-title, .rst-content .wy-alert-success.error .wy-alert-title, .rst-content .hint .wy-alert-title, .rst-content .important .wy-alert-title, .rst-content .tip .wy-alert-title, .rst-content .wy-alert-success.warning .wy-alert-title, .rst-content .wy-alert-success.seealso .wy-alert-title, .rst-content .wy-alert-success.admonition-todo .wy-alert-title, .wy-alert.wy-alert-success .rst-content .admonition-title, .rst-content .wy-alert.wy-alert-success .admonition-title, .rst-content .wy-alert-success.note .admonition-title, .rst-content .wy-alert-success.attention .admonition-title, .rst-content .wy-alert-success.caution .admonition-title, .rst-content .wy-alert-success.danger .admonition-title, .rst-content .wy-alert-success.error .admonition-title, .rst-content .hint .admonition-title, .rst-content .important .admonition-title, .rst-content .tip .admonition-title, .rst-content .wy-alert-success.warning .admonition-title, .rst-content .wy-alert-success.seealso .admonition-title, .rst-content .wy-alert-success.admonition-todo .admonition-title { + background: #1abc9c; } + +.wy-alert.wy-alert-neutral, .rst-content .wy-alert-neutral.note, .rst-content .wy-alert-neutral.attention, .rst-content .wy-alert-neutral.caution, .rst-content .wy-alert-neutral.danger, .rst-content .wy-alert-neutral.error, .rst-content .wy-alert-neutral.hint, .rst-content .wy-alert-neutral.important, .rst-content .wy-alert-neutral.tip, .rst-content .wy-alert-neutral.warning, .rst-content .wy-alert-neutral.seealso, .rst-content .wy-alert-neutral.admonition-todo { + background: #f3f6f6; } + .wy-alert.wy-alert-neutral .wy-alert-title, .rst-content .wy-alert-neutral.note .wy-alert-title, .rst-content .wy-alert-neutral.attention .wy-alert-title, .rst-content .wy-alert-neutral.caution .wy-alert-title, .rst-content .wy-alert-neutral.danger .wy-alert-title, .rst-content .wy-alert-neutral.error .wy-alert-title, .rst-content .wy-alert-neutral.hint .wy-alert-title, .rst-content .wy-alert-neutral.important .wy-alert-title, .rst-content .wy-alert-neutral.tip .wy-alert-title, .rst-content .wy-alert-neutral.warning .wy-alert-title, .rst-content .wy-alert-neutral.seealso .wy-alert-title, .rst-content .wy-alert-neutral.admonition-todo .wy-alert-title, .wy-alert.wy-alert-neutral .rst-content .admonition-title, .rst-content .wy-alert.wy-alert-neutral .admonition-title, .rst-content .wy-alert-neutral.note .admonition-title, .rst-content .wy-alert-neutral.attention .admonition-title, .rst-content .wy-alert-neutral.caution .admonition-title, .rst-content .wy-alert-neutral.danger .admonition-title, .rst-content .wy-alert-neutral.error .admonition-title, .rst-content .wy-alert-neutral.hint .admonition-title, .rst-content .wy-alert-neutral.important .admonition-title, .rst-content .wy-alert-neutral.tip .admonition-title, .rst-content .wy-alert-neutral.warning .admonition-title, .rst-content .wy-alert-neutral.seealso .admonition-title, .rst-content .wy-alert-neutral.admonition-todo .admonition-title { + color: #404040; + background: #e1e4e5; } + .wy-alert.wy-alert-neutral a, .rst-content .wy-alert-neutral.note a, .rst-content .wy-alert-neutral.attention a, .rst-content .wy-alert-neutral.caution a, .rst-content .wy-alert-neutral.danger a, .rst-content .wy-alert-neutral.error a, .rst-content .wy-alert-neutral.hint a, .rst-content .wy-alert-neutral.important a, .rst-content .wy-alert-neutral.tip a, .rst-content .wy-alert-neutral.warning a, .rst-content .wy-alert-neutral.seealso a, .rst-content .wy-alert-neutral.admonition-todo a { + color: #2980B9; } + +.wy-alert p:last-child, .rst-content .note p:last-child, .rst-content .attention p:last-child, .rst-content .caution p:last-child, .rst-content .danger p:last-child, .rst-content .error p:last-child, .rst-content .hint p:last-child, .rst-content .important p:last-child, .rst-content .tip p:last-child, .rst-content .warning p:last-child, .rst-content .seealso p:last-child, .rst-content .admonition-todo p:last-child { + margin-bottom: 0; } + +.wy-tray-container { + position: fixed; + bottom: 0px; + left: 0; + z-index: 600; } + .wy-tray-container li { + display: block; + width: 300px; + background: transparent; + color: #fff; + text-align: center; + box-shadow: 0 5px 5px 0 rgba(0, 0, 0, 0.1); + padding: 0 24px; + min-width: 20%; + opacity: 0; + height: 0; + line-height: 56px; + overflow: hidden; + -webkit-transition: all 0.3s ease-in; + -moz-transition: all 0.3s ease-in; + transition: all 0.3s ease-in; } + .wy-tray-container li.wy-tray-item-success { + background: #27AE60; } + .wy-tray-container li.wy-tray-item-info { + background: #2980B9; } + .wy-tray-container li.wy-tray-item-warning { + background: #E67E22; } + .wy-tray-container li.wy-tray-item-danger { + background: #E74C3C; } + .wy-tray-container li.on { + opacity: 1; + height: 56px; } + +@media screen and (max-width: 768px) { + .wy-tray-container { + bottom: auto; + top: 0; + width: 100%; } + .wy-tray-container li { + width: 100%; } } +button { + font-size: 100%; + margin: 0; + vertical-align: baseline; + *vertical-align: middle; + cursor: pointer; + line-height: normal; + -webkit-appearance: button; + *overflow: visible; } + +button::-moz-focus-inner, input::-moz-focus-inner { + border: 0; + padding: 0; } + +button[disabled] { + cursor: default; } + +.btn { + /* Structure */ + display: inline-block; + border-radius: 2px; + line-height: normal; + white-space: nowrap; + text-align: center; + cursor: pointer; + font-size: 100%; + padding: 6px 12px 8px 12px; + color: #fff; + border: 1px solid rgba(0, 0, 0, 0.1); + background-color: #27AE60; + text-decoration: none; + font-weight: normal; + font-family: "Lato", "proxima-nova", "Helvetica Neue", Arial, sans-serif; + box-shadow: 0px 1px 2px -1px rgba(255, 255, 255, 0.5) inset, 0px -2px 0px 0px rgba(0, 0, 0, 0.1) inset; + outline-none: false; + vertical-align: middle; + *display: inline; + zoom: 1; + -webkit-user-drag: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-transition: all 0.1s linear; + -moz-transition: all 0.1s linear; + transition: all 0.1s linear; } + +.btn-hover { + background: #2e8ece; + color: #fff; } + +.btn:hover { + background: #2cc36b; + color: #fff; } +.btn:focus { + background: #2cc36b; + outline: 0; } +.btn:active { + box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.05) inset, 0px 2px 0px 0px rgba(0, 0, 0, 0.1) inset; + padding: 8px 12px 6px 12px; } +.btn:visited { + color: #fff; } +.btn:disabled { + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + filter: alpha(opacity=40); + opacity: 0.4; + cursor: not-allowed; + box-shadow: none; } + +.btn-disabled { + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + filter: alpha(opacity=40); + opacity: 0.4; + cursor: not-allowed; + box-shadow: none; } + .btn-disabled:hover, .btn-disabled:focus, .btn-disabled:active { + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + filter: alpha(opacity=40); + opacity: 0.4; + cursor: not-allowed; + box-shadow: none; } + +.btn::-moz-focus-inner { + padding: 0; + border: 0; } + +.btn-small { + font-size: 80%; } + +.btn-info { + background-color: #2980B9 !important; } + .btn-info:hover { + background-color: #2e8ece !important; } + +.btn-neutral { + background-color: #f3f6f6 !important; + color: #404040 !important; } + .btn-neutral:hover { + background-color: #e5ebeb !important; + color: #404040; } + .btn-neutral:visited { + color: #404040 !important; } + +.btn-success { + background-color: #27AE60 !important; } + .btn-success:hover { + background-color: #229955 !important; } + +.btn-danger { + background-color: #E74C3C !important; } + .btn-danger:hover { + background-color: #ea6153 !important; } + +.btn-warning { + background-color: #E67E22 !important; } + .btn-warning:hover { + background-color: #e98b39 !important; } + +.btn-invert { + background-color: #222; } + .btn-invert:hover { + background-color: #2f2f2f !important; } + +.btn-link { + background-color: transparent !important; + color: #2980B9; + box-shadow: none; + border-color: transparent !important; } + .btn-link:hover { + background-color: transparent !important; + color: #409ad5 !important; + box-shadow: none; } + .btn-link:active { + background-color: transparent !important; + color: #409ad5 !important; + box-shadow: none; } + .btn-link:visited { + color: #9B59B6; } + +.wy-btn-group .btn, .wy-control .btn { + vertical-align: middle; } + +.wy-btn-group { + margin-bottom: 24px; + *zoom: 1; } + .wy-btn-group:before, .wy-btn-group:after { + display: table; + content: ""; } + .wy-btn-group:after { + clear: both; } + +.wy-dropdown { + position: relative; + display: inline-block; } + +.wy-dropdown-active .wy-dropdown-menu { + display: block; } + +.wy-dropdown-menu { + position: absolute; + left: 0; + display: none; + float: left; + top: 100%; + min-width: 100%; + background: #fcfcfc; + z-index: 100; + border: solid 1px #cfd7dd; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.1); + padding: 12px; } + .wy-dropdown-menu > dd > a { + display: block; + clear: both; + color: #404040; + white-space: nowrap; + font-size: 90%; + padding: 0 12px; + cursor: pointer; } + .wy-dropdown-menu > dd > a:hover { + background: #2980B9; + color: #fff; } + .wy-dropdown-menu > dd.divider { + border-top: solid 1px #cfd7dd; + margin: 6px 0; } + .wy-dropdown-menu > dd.search { + padding-bottom: 12px; } + .wy-dropdown-menu > dd.search input[type="search"] { + width: 100%; } + .wy-dropdown-menu > dd.call-to-action { + background: #e3e3e3; + text-transform: uppercase; + font-weight: 500; + font-size: 80%; } + .wy-dropdown-menu > dd.call-to-action:hover { + background: #e3e3e3; } + .wy-dropdown-menu > dd.call-to-action .btn { + color: #fff; } + +.wy-dropdown.wy-dropdown-up .wy-dropdown-menu { + bottom: 100%; + top: auto; + left: auto; + right: 0; } + +.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu { + background: #fcfcfc; + margin-top: 2px; } +.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a { + padding: 6px 12px; } + .wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover { + background: #2980B9; + color: #fff; } + +.wy-dropdown.wy-dropdown-left .wy-dropdown-menu { + right: 0; + left: auto; + text-align: right; } + +.wy-dropdown-arrow:before { + content: " "; + border-bottom: 5px solid whitesmoke; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + position: absolute; + display: block; + top: -4px; + left: 50%; + margin-left: -3px; } +.wy-dropdown-arrow.wy-dropdown-arrow-left:before { + left: 11px; } + +.wy-form-stacked select { + display: block; } + +.wy-form-aligned input, .wy-form-aligned textarea, .wy-form-aligned select, .wy-form-aligned .wy-help-inline, .wy-form-aligned label { + display: inline-block; + *display: inline; + *zoom: 1; + vertical-align: middle; } + +.wy-form-aligned .wy-control-group > label { + display: inline-block; + vertical-align: middle; + width: 10em; + margin: 6px 12px 0 0; + float: left; } +.wy-form-aligned .wy-control { + float: left; } + .wy-form-aligned .wy-control label { + display: block; } + .wy-form-aligned .wy-control select { + margin-top: 6px; } + +fieldset { + border: 0; + margin: 0; + padding: 0; } + +legend { + display: block; + width: 100%; + border: 0; + padding: 0; + white-space: normal; + margin-bottom: 24px; + font-size: 150%; + *margin-left: -7px; } + +label { + display: block; + margin: 0 0 0.3125em 0; + color: #333; + font-size: 90%; } + +input, select, textarea { + font-size: 100%; + margin: 0; + vertical-align: baseline; + *vertical-align: middle; } + +.wy-control-group { + margin-bottom: 24px; + *zoom: 1; + max-width: 68em; + margin-left: auto; + margin-right: auto; + *zoom: 1; } + .wy-control-group:before, .wy-control-group:after { + display: table; + content: ""; } + .wy-control-group:after { + clear: both; } + .wy-control-group:before, .wy-control-group:after { + display: table; + content: ""; } + .wy-control-group:after { + clear: both; } + +.wy-control-group.wy-control-group-required > label:after { + content: " *"; + color: #E74C3C; } + +.wy-control-group .wy-form-full, .wy-control-group .wy-form-halves, .wy-control-group .wy-form-thirds { + padding-bottom: 12px; } + .wy-control-group .wy-form-full select, .wy-control-group .wy-form-halves select, .wy-control-group .wy-form-thirds select { + width: 100%; } + .wy-control-group .wy-form-full input[type="text"], .wy-control-group .wy-form-full input[type="password"], .wy-control-group .wy-form-full input[type="email"], .wy-control-group .wy-form-full input[type="url"], .wy-control-group .wy-form-full input[type="date"], .wy-control-group .wy-form-full input[type="month"], .wy-control-group .wy-form-full input[type="time"], .wy-control-group .wy-form-full input[type="datetime"], .wy-control-group .wy-form-full input[type="datetime-local"], .wy-control-group .wy-form-full input[type="week"], .wy-control-group .wy-form-full input[type="number"], .wy-control-group .wy-form-full input[type="search"], .wy-control-group .wy-form-full input[type="tel"], .wy-control-group .wy-form-full input[type="color"], .wy-control-group .wy-form-halves input[type="text"], .wy-control-group .wy-form-halves input[type="password"], .wy-control-group .wy-form-halves input[type="email"], .wy-control-group .wy-form-halves input[type="url"], .wy-control-group .wy-form-halves input[type="date"], .wy-control-group .wy-form-halves input[type="month"], .wy-control-group .wy-form-halves input[type="time"], .wy-control-group .wy-form-halves input[type="datetime"], .wy-control-group .wy-form-halves input[type="datetime-local"], .wy-control-group .wy-form-halves input[type="week"], .wy-control-group .wy-form-halves input[type="number"], .wy-control-group .wy-form-halves input[type="search"], .wy-control-group .wy-form-halves input[type="tel"], .wy-control-group .wy-form-halves input[type="color"], .wy-control-group .wy-form-thirds input[type="text"], .wy-control-group .wy-form-thirds input[type="password"], .wy-control-group .wy-form-thirds input[type="email"], .wy-control-group .wy-form-thirds input[type="url"], .wy-control-group .wy-form-thirds input[type="date"], .wy-control-group .wy-form-thirds input[type="month"], .wy-control-group .wy-form-thirds input[type="time"], .wy-control-group .wy-form-thirds input[type="datetime"], .wy-control-group .wy-form-thirds input[type="datetime-local"], .wy-control-group .wy-form-thirds input[type="week"], .wy-control-group .wy-form-thirds input[type="number"], .wy-control-group .wy-form-thirds input[type="search"], .wy-control-group .wy-form-thirds input[type="tel"], .wy-control-group .wy-form-thirds input[type="color"] { + width: 100%; } + +.wy-control-group .wy-form-full { + float: left; + display: block; + margin-right: 2.35765%; + width: 100%; + margin-right: 0; } + .wy-control-group .wy-form-full:last-child { + margin-right: 0; } + +.wy-control-group .wy-form-halves { + float: left; + display: block; + margin-right: 2.35765%; + width: 48.82117%; } + .wy-control-group .wy-form-halves:last-child { + margin-right: 0; } + .wy-control-group .wy-form-halves:nth-of-type(2n) { + margin-right: 0; } + .wy-control-group .wy-form-halves:nth-of-type(2n+1) { + clear: left; } + +.wy-control-group .wy-form-thirds { + float: left; + display: block; + margin-right: 2.35765%; + width: 31.76157%; } + .wy-control-group .wy-form-thirds:last-child { + margin-right: 0; } + .wy-control-group .wy-form-thirds:nth-of-type(3n) { + margin-right: 0; } + .wy-control-group .wy-form-thirds:nth-of-type(3n+1) { + clear: left; } + +.wy-control-group.wy-control-group-no-input .wy-control { + margin: 6px 0 0 0; + font-size: 90%; } + +.wy-control-no-input { + display: inline-block; + margin: 6px 0 0 0; + font-size: 90%; } + +.wy-control-group.fluid-input input[type="text"], .wy-control-group.fluid-input input[type="password"], .wy-control-group.fluid-input input[type="email"], .wy-control-group.fluid-input input[type="url"], .wy-control-group.fluid-input input[type="date"], .wy-control-group.fluid-input input[type="month"], .wy-control-group.fluid-input input[type="time"], .wy-control-group.fluid-input input[type="datetime"], .wy-control-group.fluid-input input[type="datetime-local"], .wy-control-group.fluid-input input[type="week"], .wy-control-group.fluid-input input[type="number"], .wy-control-group.fluid-input input[type="search"], .wy-control-group.fluid-input input[type="tel"], .wy-control-group.fluid-input input[type="color"] { + width: 100%; } + +.wy-form-message-inline { + display: inline-block; + padding-left: 0.3em; + color: #666; + vertical-align: middle; + font-size: 90%; } + +.wy-form-message { + display: block; + color: #999; + font-size: 70%; + margin-top: 0.3125em; + font-style: italic; } + .wy-form-message p { + font-size: inherit; + font-style: italic; + margin-bottom: 6px; } + .wy-form-message p:last-child { + margin-bottom: 0; } + +input { + line-height: normal; } + +input[type="button"], input[type="reset"], input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; + font-family: "Lato", "proxima-nova", "Helvetica Neue", Arial, sans-serif; + *overflow: visible; } +input[type="text"], input[type="password"], input[type="email"], input[type="url"], input[type="date"], input[type="month"], input[type="time"], input[type="datetime"], input[type="datetime-local"], input[type="week"], input[type="number"], input[type="search"], input[type="tel"], input[type="color"] { + -webkit-appearance: none; + padding: 6px; + display: inline-block; + border: 1px solid #ccc; + font-size: 80%; + font-family: "Lato", "proxima-nova", "Helvetica Neue", Arial, sans-serif; + box-shadow: inset 0 1px 3px #ddd; + border-radius: 0; + -webkit-transition: border 0.3s linear; + -moz-transition: border 0.3s linear; + transition: border 0.3s linear; } +input[type="datetime-local"] { + padding: 0.34375em 0.625em; } +input[disabled] { + cursor: default; } +input[type="checkbox"], input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; + margin-right: 0.3125em; + *height: 13px; + *width: 13px; } +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } +input[type="text"]:focus, input[type="password"]:focus, input[type="email"]:focus, input[type="url"]:focus, input[type="date"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="week"]:focus, input[type="number"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="color"]:focus { + outline: 0; + outline: thin dotted \9; + border-color: #333; } +input.no-focus:focus { + border-color: #ccc !important; } +input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 1px auto #129FEA; } +input[type="text"][disabled], input[type="password"][disabled], input[type="email"][disabled], input[type="url"][disabled], input[type="date"][disabled], input[type="month"][disabled], input[type="time"][disabled], input[type="datetime"][disabled], input[type="datetime-local"][disabled], input[type="week"][disabled], input[type="number"][disabled], input[type="search"][disabled], input[type="tel"][disabled], input[type="color"][disabled] { + cursor: not-allowed; + background-color: #fafafa; } + +input:focus:invalid, textarea:focus:invalid, select:focus:invalid { + color: #E74C3C; + border: 1px solid #E74C3C; } + +input:focus:invalid:focus, textarea:focus:invalid:focus, select:focus:invalid:focus { + border-color: #E74C3C; } + +input[type="file"]:focus:invalid:focus, input[type="radio"]:focus:invalid:focus, input[type="checkbox"]:focus:invalid:focus { + outline-color: #E74C3C; } + +input.wy-input-large { + padding: 12px; + font-size: 100%; } + +textarea { + overflow: auto; + vertical-align: top; + width: 100%; + font-family: "Lato", "proxima-nova", "Helvetica Neue", Arial, sans-serif; } + +select, textarea { + padding: 0.5em 0.625em; + display: inline-block; + border: 1px solid #ccc; + font-size: 80%; + box-shadow: inset 0 1px 3px #ddd; + -webkit-transition: border 0.3s linear; + -moz-transition: border 0.3s linear; + transition: border 0.3s linear; } + +select { + border: 1px solid #ccc; + background-color: #fff; } + select[multiple] { + height: auto; } + +select:focus, textarea:focus { + outline: 0; } + +select[disabled], textarea[disabled], input[readonly], select[readonly], textarea[readonly] { + cursor: not-allowed; + background-color: #fafafa; } + +input[type="radio"][disabled], input[type="checkbox"][disabled] { + cursor: not-allowed; } + +.wy-checkbox, .wy-radio { + margin: 6px 0; + color: #404040; + display: block; } + .wy-checkbox input, .wy-radio input { + vertical-align: baseline; } + +.wy-form-message-inline { + display: inline-block; + *display: inline; + *zoom: 1; + vertical-align: middle; } + +.wy-input-prefix, .wy-input-suffix { + white-space: nowrap; + padding: 6px; } + .wy-input-prefix .wy-input-context, .wy-input-suffix .wy-input-context { + line-height: 27px; + padding: 0 8px; + display: inline-block; + font-size: 80%; + background-color: #f3f6f6; + border: solid 1px #ccc; + color: #999; } + +.wy-input-suffix .wy-input-context { + border-left: 0; } + +.wy-input-prefix .wy-input-context { + border-right: 0; } + +.wy-switch { + position: relative; + display: block; + height: 24px; + margin-top: 12px; + cursor: pointer; } + .wy-switch:before { + position: absolute; + content: ""; + display: block; + left: 0; + top: 0; + width: 36px; + height: 12px; + border-radius: 4px; + background: #ccc; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; } + .wy-switch:after { + position: absolute; + content: ""; + display: block; + width: 18px; + height: 18px; + border-radius: 4px; + background: #999; + left: -3px; + top: -3px; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; } + .wy-switch span { + position: absolute; + left: 48px; + display: block; + font-size: 12px; + color: #ccc; + line-height: 1; } + +.wy-switch.active:before { + background: #1e8449; } +.wy-switch.active:after { + left: 24px; + background: #27AE60; } + +.wy-switch.disabled { + cursor: not-allowed; + opacity: 0.8; } + +.wy-control-group.wy-control-group-error .wy-form-message, .wy-control-group.wy-control-group-error > label { + color: #E74C3C; } +.wy-control-group.wy-control-group-error input[type="text"], .wy-control-group.wy-control-group-error input[type="password"], .wy-control-group.wy-control-group-error input[type="email"], .wy-control-group.wy-control-group-error input[type="url"], .wy-control-group.wy-control-group-error input[type="date"], .wy-control-group.wy-control-group-error input[type="month"], .wy-control-group.wy-control-group-error input[type="time"], .wy-control-group.wy-control-group-error input[type="datetime"], .wy-control-group.wy-control-group-error input[type="datetime-local"], .wy-control-group.wy-control-group-error input[type="week"], .wy-control-group.wy-control-group-error input[type="number"], .wy-control-group.wy-control-group-error input[type="search"], .wy-control-group.wy-control-group-error input[type="tel"], .wy-control-group.wy-control-group-error input[type="color"] { + border: solid 1px #E74C3C; } +.wy-control-group.wy-control-group-error textarea { + border: solid 1px #E74C3C; } + +.wy-inline-validate { + white-space: nowrap; } + .wy-inline-validate .wy-input-context { + padding: 0.5em 0.625em; + display: inline-block; + font-size: 80%; } + +.wy-inline-validate.wy-inline-validate-success .wy-input-context { + color: #27AE60; } + +.wy-inline-validate.wy-inline-validate-danger .wy-input-context { + color: #E74C3C; } + +.wy-inline-validate.wy-inline-validate-warning .wy-input-context { + color: #E67E22; } + +.wy-inline-validate.wy-inline-validate-info .wy-input-context { + color: #2980B9; } + +.rotate-90 { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); } + +.rotate-180 { + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); } + +.rotate-270 { + -webkit-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); } + +.mirror { + -webkit-transform: scaleX(-1); + -moz-transform: scaleX(-1); + -ms-transform: scaleX(-1); + -o-transform: scaleX(-1); + transform: scaleX(-1); } + .mirror.rotate-90 { + -webkit-transform: scaleX(-1) rotate(90deg); + -moz-transform: scaleX(-1) rotate(90deg); + -ms-transform: scaleX(-1) rotate(90deg); + -o-transform: scaleX(-1) rotate(90deg); + transform: scaleX(-1) rotate(90deg); } + .mirror.rotate-180 { + -webkit-transform: scaleX(-1) rotate(180deg); + -moz-transform: scaleX(-1) rotate(180deg); + -ms-transform: scaleX(-1) rotate(180deg); + -o-transform: scaleX(-1) rotate(180deg); + transform: scaleX(-1) rotate(180deg); } + .mirror.rotate-270 { + -webkit-transform: scaleX(-1) rotate(270deg); + -moz-transform: scaleX(-1) rotate(270deg); + -ms-transform: scaleX(-1) rotate(270deg); + -o-transform: scaleX(-1) rotate(270deg); + transform: scaleX(-1) rotate(270deg); } + +@media only screen and (max-width: 480px) { + .wy-form button[type="submit"] { + margin: 0.7em 0 0; } + .wy-form input[type="text"], .wy-form input[type="password"], .wy-form input[type="email"], .wy-form input[type="url"], .wy-form input[type="date"], .wy-form input[type="month"], .wy-form input[type="time"], .wy-form input[type="datetime"], .wy-form input[type="datetime-local"], .wy-form input[type="week"], .wy-form input[type="number"], .wy-form input[type="search"], .wy-form input[type="tel"], .wy-form input[type="color"] { + margin-bottom: 0.3em; + display: block; } + .wy-form label { + margin-bottom: 0.3em; + display: block; } + + .wy-form input[type="password"], .wy-form input[type="email"], .wy-form input[type="url"], .wy-form input[type="date"], .wy-form input[type="month"], .wy-form input[type="time"], .wy-form input[type="datetime"], .wy-form input[type="datetime-local"], .wy-form input[type="week"], .wy-form input[type="number"], .wy-form input[type="search"], .wy-form input[type="tel"], .wy-form input[type="color"] { + margin-bottom: 0; } + + .wy-form-aligned .wy-control-group label { + margin-bottom: 0.3em; + text-align: left; + display: block; + width: 100%; } + .wy-form-aligned .wy-control { + margin: 1.5em 0 0 0; } + + .wy-form .wy-help-inline, .wy-form-message-inline, .wy-form-message { + display: block; + font-size: 80%; + padding: 6px 0; } } +@media screen and (max-width: 768px) { + .tablet-hide { + display: none; } } + +@media screen and (max-width: 480px) { + .mobile-hide { + display: none; } } + +.float-left { + float: left; } + +.float-right { + float: right; } + +.full-width { + width: 100%; } + +.wy-table, .rst-content table.docutils, .rst-content table.field-list { + border-collapse: collapse; + border-spacing: 0; + empty-cells: show; + margin-bottom: 24px; } + .wy-table caption, .rst-content table.docutils caption, .rst-content table.field-list caption { + color: #000; + font: italic 85%/1 arial, sans-serif; + padding: 1em 0; + text-align: center; } + .wy-table td, .rst-content table.docutils td, .rst-content table.field-list td, .wy-table th, .rst-content table.docutils th, .rst-content table.field-list th { + font-size: 90%; + margin: 0; + overflow: visible; + padding: 8px 16px; } + .wy-table td:first-child, .rst-content table.docutils td:first-child, .rst-content table.field-list td:first-child, .wy-table th:first-child, .rst-content table.docutils th:first-child, .rst-content table.field-list th:first-child { + border-left-width: 0; } + .wy-table thead, .rst-content table.docutils thead, .rst-content table.field-list thead { + color: #000; + text-align: left; + vertical-align: bottom; + white-space: nowrap; } + .wy-table thead th, .rst-content table.docutils thead th, .rst-content table.field-list thead th { + font-weight: bold; + border-bottom: solid 2px #e1e4e5; } + .wy-table td, .rst-content table.docutils td, .rst-content table.field-list td { + background-color: transparent; + vertical-align: middle; } + +.wy-table td p, .rst-content table.docutils td p, .rst-content table.field-list td p { + line-height: 18px; } + .wy-table td p:last-child, .rst-content table.docutils td p:last-child, .rst-content table.field-list td p:last-child { + margin-bottom: 0; } + +.wy-table .wy-table-cell-min, .rst-content table.docutils .wy-table-cell-min, .rst-content table.field-list .wy-table-cell-min { + width: 1%; + padding-right: 0; } + .wy-table .wy-table-cell-min input[type=checkbox], .rst-content table.docutils .wy-table-cell-min input[type=checkbox], .rst-content table.field-list .wy-table-cell-min input[type=checkbox], .wy-table .wy-table-cell-min input[type=checkbox], .rst-content table.docutils .wy-table-cell-min input[type=checkbox], .rst-content table.field-list .wy-table-cell-min input[type=checkbox] { + margin: 0; } + +.wy-table-secondary { + color: gray; + font-size: 90%; } + +.wy-table-tertiary { + color: gray; + font-size: 80%; } + +.wy-table-odd td, .wy-table-striped tr:nth-child(2n-1) td, .rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td { + background-color: #f3f6f6; } + +.wy-table-backed { + background-color: #f3f6f6; } + +/* BORDERED TABLES */ +.wy-table-bordered-all, .rst-content table.docutils { + border: 1px solid #e1e4e5; } + .wy-table-bordered-all td, .rst-content table.docutils td { + border-bottom: 1px solid #e1e4e5; + border-left: 1px solid #e1e4e5; } + .wy-table-bordered-all tbody > tr:last-child td, .rst-content table.docutils tbody > tr:last-child td { + border-bottom-width: 0; } + +.wy-table-bordered { + border: 1px solid #e1e4e5; } + +.wy-table-bordered-rows td { + border-bottom: 1px solid #e1e4e5; } +.wy-table-bordered-rows tbody > tr:last-child td { + border-bottom-width: 0; } + +.wy-table-horizontal tbody > tr:last-child td { + border-bottom-width: 0; } +.wy-table-horizontal td, .wy-table-horizontal th { + border-width: 0 0 1px 0; + border-bottom: 1px solid #e1e4e5; } +.wy-table-horizontal tbody > tr:last-child td { + border-bottom-width: 0; } + +/* RESPONSIVE TABLES */ +.wy-table-responsive { + margin-bottom: 24px; + max-width: 100%; + overflow: auto; } + .wy-table-responsive table { + margin-bottom: 0 !important; } + .wy-table-responsive table td, .wy-table-responsive table th { + white-space: nowrap; } + +a { + color: #2980B9; + text-decoration: none; + cursor: pointer; } + a:hover { + color: #3091d1; } + a:visited { + color: #9B59B6; } + +html { + height: 100%; + overflow-x: hidden; } + +body { + font-family: "Lato", "proxima-nova", "Helvetica Neue", Arial, sans-serif; + font-weight: normal; + color: #404040; + min-height: 100%; + overflow-x: hidden; + background: #edf0f2; } + +.wy-text-left { + text-align: left; } + +.wy-text-center { + text-align: center; } + +.wy-text-right { + text-align: right; } + +.wy-text-large { + font-size: 120%; } + +.wy-text-normal { + font-size: 100%; } + +.wy-text-small, small { + font-size: 80%; } + +.wy-text-strike { + text-decoration: line-through; } + +.wy-text-warning { + color: #E67E22 !important; } + +a.wy-text-warning:hover { + color: #eb9950 !important; } + +.wy-text-info { + color: #2980B9 !important; } + +a.wy-text-info:hover { + color: #409ad5 !important; } + +.wy-text-success { + color: #27AE60 !important; } + +a.wy-text-success:hover { + color: #36d278 !important; } + +.wy-text-danger { + color: #E74C3C !important; } + +a.wy-text-danger:hover { + color: #ed7669 !important; } + +.wy-text-neutral { + color: #404040 !important; } + +a.wy-text-neutral:hover { + color: #595959 !important; } + +h1, h2, .rst-content .toctree-wrapper p.caption, h3, h4, h5, h6, legend { + margin-top: 0; + font-weight: 700; + font-family: "Roboto Slab", "ff-tisa-web-pro", "Georgia", Arial, sans-serif; } + +p { + line-height: 24px; + margin: 0; + font-size: 16px; + margin-bottom: 24px; } + +h1 { + font-size: 175%; } + +h2, .rst-content .toctree-wrapper p.caption { + font-size: 150%; } + +h3 { + font-size: 125%; } + +h4 { + font-size: 115%; } + +h5 { + font-size: 110%; } + +h6 { + font-size: 100%; } + +hr { + display: block; + height: 1px; + border: 0; + border-top: 1px solid #e1e4e5; + margin: 24px 0; + padding: 0; } + +code, .rst-content tt, .rst-content code { + white-space: nowrap; + max-width: 100%; + background: #fff; + border: solid 1px #e1e4e5; + font-size: 75%; + padding: 0 5px; + font-family: Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace; + color: #E74C3C; + overflow-x: auto; } + code.code-large, .rst-content tt.code-large { + font-size: 90%; } + +.wy-plain-list-disc, .rst-content .section ul, .rst-content .toctree-wrapper ul, article ul { + list-style: disc; + line-height: 24px; + margin-bottom: 24px; } + .wy-plain-list-disc li, .rst-content .section ul li, .rst-content .toctree-wrapper ul li, article ul li { + list-style: disc; + margin-left: 24px; } + .wy-plain-list-disc li p:last-child, .rst-content .section ul li p:last-child, .rst-content .toctree-wrapper ul li p:last-child, article ul li p:last-child { + margin-bottom: 0; } + .wy-plain-list-disc li ul, .rst-content .section ul li ul, .rst-content .toctree-wrapper ul li ul, article ul li ul { + margin-bottom: 0; } + .wy-plain-list-disc li li, .rst-content .section ul li li, .rst-content .toctree-wrapper ul li li, article ul li li { + list-style: circle; } + .wy-plain-list-disc li li li, .rst-content .section ul li li li, .rst-content .toctree-wrapper ul li li li, article ul li li li { + list-style: square; } + .wy-plain-list-disc li ol li, .rst-content .section ul li ol li, .rst-content .toctree-wrapper ul li ol li, article ul li ol li { + list-style: decimal; } + +.wy-plain-list-decimal, .rst-content .section ol, .rst-content ol.arabic, article ol { + list-style: decimal; + line-height: 24px; + margin-bottom: 24px; } + .wy-plain-list-decimal li, .rst-content .section ol li, .rst-content ol.arabic li, article ol li { + list-style: decimal; + margin-left: 24px; } + .wy-plain-list-decimal li p:last-child, .rst-content .section ol li p:last-child, .rst-content ol.arabic li p:last-child, article ol li p:last-child { + margin-bottom: 0; } + .wy-plain-list-decimal li ul, .rst-content .section ol li ul, .rst-content ol.arabic li ul, article ol li ul { + margin-bottom: 0; } + .wy-plain-list-decimal li ul li, .rst-content .section ol li ul li, .rst-content ol.arabic li ul li, article ol li ul li { + list-style: disc; } + +.codeblock-example { + border: 1px solid #e1e4e5; + border-bottom: none; + padding: 24px; + padding-top: 48px; + font-weight: 500; + background: #fff; + position: relative; } + .codeblock-example:after { + content: "Example"; + position: absolute; + top: 0px; + left: 0px; + background: #9B59B6; + color: white; + padding: 6px 12px; } + .codeblock-example.prettyprint-example-only { + border: 1px solid #e1e4e5; + margin-bottom: 24px; } + +.codeblock, pre.literal-block, .rst-content .literal-block, .rst-content pre.literal-block, div[class^='highlight'] { + border: 1px solid #e1e4e5; + padding: 0px; + overflow-x: auto; + background: #fff; + margin: 1px 0 24px 0; } + .codeblock div[class^='highlight'], pre.literal-block div[class^='highlight'], .rst-content .literal-block div[class^='highlight'], div[class^='highlight'] div[class^='highlight'] { + border: none; + background: none; + margin: 0; } + +div[class^='highlight'] td.code { + width: 100%; } + +.linenodiv pre { + border-right: solid 1px #e6e9ea; + margin: 0; + padding: 12px 12px; + font-family: Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace; + font-size: 12px; + line-height: 1.5; + color: #d9d9d9; } + +div[class^='highlight'] pre { + white-space: pre; + margin: 0; + padding: 12px 12px; + font-family: Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace; + font-size: 12px; + line-height: 1.5; + display: block; + overflow: auto; + color: #404040; } + +@media print { + .codeblock, pre.literal-block, .rst-content .literal-block, .rst-content pre.literal-block, div[class^='highlight'], div[class^='highlight'] pre { + white-space: pre-wrap; } } +.hll { + background-color: #ffffcc; + margin: 0 -12px; + padding: 0 12px; + display: block; } + +.c { + color: #999988; + font-style: italic; } + +.err { + color: #a61717; + background-color: #e3d2d2; } + +.k { + font-weight: bold; } + +.o { + font-weight: bold; } + +.cm { + color: #999988; + font-style: italic; } + +.cp { + color: #999999; + font-weight: bold; } + +.c1 { + color: #999988; + font-style: italic; } + +.cs { + color: #999999; + font-weight: bold; + font-style: italic; } + +.gd { + color: #000000; + background-color: #ffdddd; } + +.gd .x { + color: #000000; + background-color: #ffaaaa; } + +.ge { + font-style: italic; } + +.gr { + color: #aa0000; } + +.gh { + color: #999999; } + +.gi { + color: #000000; + background-color: #ddffdd; } + +.gi .x { + color: #000000; + background-color: #aaffaa; } + +.go { + color: #888888; } + +.gp { + color: #555555; } + +.gs { + font-weight: bold; } + +.gu { + color: #800080; + font-weight: bold; } + +.gt { + color: #aa0000; } + +.kc { + font-weight: bold; } + +.kd { + font-weight: bold; } + +.kn { + font-weight: bold; } + +.kp { + font-weight: bold; } + +.kr { + font-weight: bold; } + +.kt { + color: #445588; + font-weight: bold; } + +.m { + color: #009999; } + +.s { + color: #dd1144; } + +.n { + color: #333333; } + +.na { + color: teal; } + +.nb { + color: #0086b3; } + +.nc { + color: #445588; + font-weight: bold; } + +.no { + color: teal; } + +.ni { + color: purple; } + +.ne { + color: #990000; + font-weight: bold; } + +.nf { + color: #990000; + font-weight: bold; } + +.nn { + color: #555555; } + +.nt { + color: navy; } + +.nv { + color: teal; } + +.ow { + font-weight: bold; } + +.w { + color: #bbbbbb; } + +.mf { + color: #009999; } + +.mh { + color: #009999; } + +.mi { + color: #009999; } + +.mo { + color: #009999; } + +.sb { + color: #dd1144; } + +.sc { + color: #dd1144; } + +.sd { + color: #dd1144; } + +.s2 { + color: #dd1144; } + +.se { + color: #dd1144; } + +.sh { + color: #dd1144; } + +.si { + color: #dd1144; } + +.sx { + color: #dd1144; } + +.sr { + color: #009926; } + +.s1 { + color: #dd1144; } + +.ss { + color: #990073; } + +.bp { + color: #999999; } + +.vc { + color: teal; } + +.vg { + color: teal; } + +.vi { + color: teal; } + +.il { + color: #009999; } + +.gc { + color: #999; + background-color: #EAF2F5; } + +.wy-breadcrumbs li { + display: inline-block; } + .wy-breadcrumbs li.wy-breadcrumbs-aside { + float: right; } + .wy-breadcrumbs li a { + display: inline-block; + padding: 5px; } + .wy-breadcrumbs li a:first-child { + padding-left: 0; } + .wy-breadcrumbs li code, .wy-breadcrumbs li .rst-content tt, .rst-content .wy-breadcrumbs li tt { + padding: 5px; + border: none; + background: none; } + .wy-breadcrumbs li code.literal, .wy-breadcrumbs li .rst-content tt.literal, .rst-content .wy-breadcrumbs li tt.literal { + color: #404040; } + +.wy-breadcrumbs-extra { + margin-bottom: 0; + color: #b3b3b3; + font-size: 80%; + display: inline-block; } + +@media screen and (max-width: 480px) { + .wy-breadcrumbs-extra { + display: none; } + + .wy-breadcrumbs li.wy-breadcrumbs-aside { + display: none; } } +@media print { + .wy-breadcrumbs li.wy-breadcrumbs-aside { + display: none; } } +.wy-affix { + position: fixed; + top: 1.618em; } + +.wy-menu a:hover { + text-decoration: none; } + +.wy-menu-horiz { + *zoom: 1; } + .wy-menu-horiz:before, .wy-menu-horiz:after { + display: table; + content: ""; } + .wy-menu-horiz:after { + clear: both; } + .wy-menu-horiz ul, .wy-menu-horiz li { + display: inline-block; } + .wy-menu-horiz li:hover { + background: rgba(255, 255, 255, 0.1); } + .wy-menu-horiz li.divide-left { + border-left: solid 1px #404040; } + .wy-menu-horiz li.divide-right { + border-right: solid 1px #404040; } + .wy-menu-horiz a { + height: 32px; + display: inline-block; + line-height: 32px; + padding: 0 16px; } + +.wy-menu-vertical { + width: 300px; } + .wy-menu-vertical header, .wy-menu-vertical p.caption { + height: 32px; + display: inline-block; + line-height: 32px; + padding: 0 1.618em; + margin-bottom: 0; + display: block; + font-weight: bold; + text-transform: uppercase; + font-size: 80%; + color: #6f6f6f; + white-space: nowrap; } + .wy-menu-vertical ul { + margin-bottom: 0; } + .wy-menu-vertical li.divide-top { + border-top: solid 1px #404040; } + .wy-menu-vertical li.divide-bottom { + border-bottom: solid 1px #404040; } + .wy-menu-vertical li.current { + background: #e3e3e3; } + .wy-menu-vertical li.current a { + color: gray; + border-right: solid 1px #c9c9c9; + padding: 0.4045em 2.427em; } + .wy-menu-vertical li.current a:hover { + background: #d6d6d6; } + .wy-menu-vertical li code, .wy-menu-vertical li .rst-content tt, .rst-content .wy-menu-vertical li tt { + border: none; + background: inherit; + color: inherit; + padding-left: 0; + padding-right: 0; } + .wy-menu-vertical li span.toctree-expand { + display: block; + float: left; + margin-left: -1.2em; + font-size: 0.8em; + line-height: 1.6em; + color: #4d4d4d; } + .wy-menu-vertical li.on a, .wy-menu-vertical li.current > a { + color: #404040; + padding: 0.4045em 1.618em; + font-weight: bold; + position: relative; + background: #fcfcfc; + border: none; + border-bottom: solid 1px #c9c9c9; + border-top: solid 1px #c9c9c9; + padding-left: 1.618em -4px; } + .wy-menu-vertical li.on a:hover, .wy-menu-vertical li.current > a:hover { + background: #fcfcfc; } + .wy-menu-vertical li.on a:hover span.toctree-expand, .wy-menu-vertical li.current > a:hover span.toctree-expand { + color: gray; } + .wy-menu-vertical li.on a span.toctree-expand, .wy-menu-vertical li.current > a span.toctree-expand { + display: block; + font-size: 0.8em; + line-height: 1.6em; + color: #333333; } + .wy-menu-vertical li.toctree-l1.current li.toctree-l2 > ul, .wy-menu-vertical li.toctree-l2.current li.toctree-l3 > ul { + display: none; } + .wy-menu-vertical li.toctree-l1.current li.toctree-l2.current > ul, .wy-menu-vertical li.toctree-l2.current li.toctree-l3.current > ul { + display: block; } + .wy-menu-vertical li.toctree-l2.current > a { + background: #c9c9c9; + padding: 0.4045em 2.427em; } + .wy-menu-vertical li.toctree-l2.current li.toctree-l3 > a { + display: block; + background: #c9c9c9; + padding: 0.4045em 4.045em; } + .wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand { + color: gray; } + .wy-menu-vertical li.toctree-l2 span.toctree-expand { + color: #a3a3a3; } + .wy-menu-vertical li.toctree-l3 { + font-size: 0.9em; } + .wy-menu-vertical li.toctree-l3.current > a { + background: #bdbdbd; + padding: 0.4045em 4.045em; } + .wy-menu-vertical li.toctree-l3.current li.toctree-l4 > a { + display: block; + background: #bdbdbd; + padding: 0.4045em 5.663em; + border-top: none; + border-bottom: none; } + .wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand { + color: gray; } + .wy-menu-vertical li.toctree-l3 span.toctree-expand { + color: #969696; } + .wy-menu-vertical li.toctree-l4 { + font-size: 0.9em; } + .wy-menu-vertical li.current ul { + display: block; } + .wy-menu-vertical li ul { + margin-bottom: 0; + display: none; } + .wy-menu-vertical .local-toc li ul { + display: block; } + .wy-menu-vertical li ul li a { + margin-bottom: 0; + color: #b3b3b3; + font-weight: normal; } + .wy-menu-vertical a { + display: inline-block; + line-height: 18px; + padding: 0.4045em 1.618em; + display: block; + position: relative; + font-size: 90%; + color: #b3b3b3; } + .wy-menu-vertical a:hover { + background-color: #4e4a4a; + cursor: pointer; } + .wy-menu-vertical a:hover span.toctree-expand { + color: #b3b3b3; } + .wy-menu-vertical a:active { + background-color: #2980B9; + cursor: pointer; + color: #fff; } + .wy-menu-vertical a:active span.toctree-expand { + color: #fff; } + +.wy-side-nav-search { + display: block; + width: 300px; + padding: 0.809em; + margin-bottom: 0.809em; + z-index: 200; + background-color: #d94f00; + text-align: center; + padding: 0.809em; + display: block; + color: #fcfcfc; + margin-bottom: 0.809em; } + .wy-side-nav-search input[type=text] { + width: 100%; + border-radius: 50px; + padding: 6px 12px; + border-color: #2472a4; } + .wy-side-nav-search img { + display: block; + margin: auto auto 0.809em auto; + height: 45px; + width: 45px; + background-color: #2980B9; + padding: 5px; + border-radius: 100%; } + .wy-side-nav-search > a, .wy-side-nav-search .wy-dropdown > a { + color: #fcfcfc; + font-size: 100%; + font-weight: bold; + display: inline-block; + padding: 4px 6px; + margin-bottom: 0.809em; } + .wy-side-nav-search > a:hover, .wy-side-nav-search .wy-dropdown > a:hover { + background: rgba(255, 255, 255, 0.1); } + .wy-side-nav-search > a img.logo, .wy-side-nav-search .wy-dropdown > a img.logo { + display: block; + margin: 0 auto; + height: auto; + width: 160px; + border-radius: 0; + max-width: 100%; + background: transparent; } + .wy-side-nav-search > a.icon img.logo, .wy-side-nav-search .wy-dropdown > a.icon img.logo { + margin-top: 0.85em; } + .wy-side-nav-search > div.version { + margin-top: -0.4045em; + margin-bottom: 0.809em; + font-weight: normal; + color: rgba(255, 255, 255, 0.3); } + +.wy-nav .wy-menu-vertical header { + color: #2980B9; } +.wy-nav .wy-menu-vertical a { + color: #b3b3b3; } + .wy-nav .wy-menu-vertical a:hover { + background-color: #2980B9; + color: #fff; } + +[data-menu-wrap] { + -webkit-transition: all 0.2s ease-in; + -moz-transition: all 0.2s ease-in; + transition: all 0.2s ease-in; + position: absolute; + opacity: 1; + width: 100%; + opacity: 0; } + [data-menu-wrap].move-center { + left: 0; + right: auto; + opacity: 1; } + [data-menu-wrap].move-left { + right: auto; + left: -100%; + opacity: 0; } + [data-menu-wrap].move-right { + right: -100%; + left: auto; + opacity: 0; } + +.wy-body-for-nav { + background: left repeat-y #fcfcfc; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOERBMTRGRDBFMUUxMUUzODUwMkJCOThDMEVFNURFMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOERBMTRGRTBFMUUxMUUzODUwMkJCOThDMEVFNURFMCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE4REExNEZCMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE4REExNEZDMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EwrlwAAAAA5JREFUeNpiMDU0BAgwAAE2AJgB9BnaAAAAAElFTkSuQmCC); + background-size: 300px 1px; } + +.wy-grid-for-nav { + position: absolute; + width: 100%; + height: 100%; } + +.wy-nav-side { + position: fixed; + top: 0; + bottom: 0; + left: 0; + padding-bottom: 2em; + width: 300px; + overflow-x: hidden; + overflow-y: hidden; + min-height: 100%; + background: #343131; + z-index: 200; } + +.wy-side-scroll { + width: 320px; + position: relative; + overflow-x: hidden; + overflow-y: scroll; + height: 100%; } + +.wy-nav-top { + display: none; + background: #2980B9; + color: #fff; + padding: 0.4045em 0.809em; + position: relative; + line-height: 50px; + text-align: center; + font-size: 100%; + *zoom: 1; } + .wy-nav-top:before, .wy-nav-top:after { + display: table; + content: ""; } + .wy-nav-top:after { + clear: both; } + .wy-nav-top a { + color: #fff; + font-weight: bold; } + .wy-nav-top img { + margin-right: 12px; + height: 45px; + width: 45px; + background-color: #2980B9; + padding: 5px; + border-radius: 100%; } + .wy-nav-top i { + font-size: 30px; + float: left; + cursor: pointer; + padding-top: inherit; } + +.wy-nav-content-wrap { + margin-left: 300px; + background: #fcfcfc; + min-height: 100%; } + +.wy-nav-content { + padding: 1.618em 3.236em; + height: 100%; + max-width: 800px; + margin: auto; } + +.wy-body-mask { + position: fixed; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.2); + display: none; + z-index: 499; } + .wy-body-mask.on { + display: block; } + +footer { + color: gray; } + footer p { + margin-bottom: 12px; } + footer span.commit code, footer span.commit .rst-content tt, .rst-content footer span.commit tt { + padding: 0px; + font-family: Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace; + font-size: 1em; + background: none; + border: none; + color: gray; } + +.rst-footer-buttons { + *zoom: 1; } + .rst-footer-buttons:before, .rst-footer-buttons:after { + width: 100%; } + .rst-footer-buttons:before, .rst-footer-buttons:after { + display: table; + content: ""; } + .rst-footer-buttons:after { + clear: both; } + +.rst-breadcrumbs-buttons { + margin-top: 12px; + *zoom: 1; } + .rst-breadcrumbs-buttons:before, .rst-breadcrumbs-buttons:after { + display: table; + content: ""; } + .rst-breadcrumbs-buttons:after { + clear: both; } + +#search-results .search li { + margin-bottom: 24px; + border-bottom: solid 1px #e1e4e5; + padding-bottom: 24px; } +#search-results .search li:first-child { + border-top: solid 1px #e1e4e5; + padding-top: 24px; } +#search-results .search li a { + font-size: 120%; + margin-bottom: 12px; + display: inline-block; } +#search-results .context { + color: gray; + font-size: 90%; } + +@media screen and (max-width: 768px) { + .wy-body-for-nav { + background: #fcfcfc; } + + .wy-nav-top { + display: block; } + + .wy-nav-side { + left: -300px; } + .wy-nav-side.shift { + width: 85%; + left: 0; } + + .wy-side-scroll { + width: auto; } + + .wy-side-nav-search { + width: auto; } + + .wy-menu.wy-menu-vertical { + width: auto; } + + .wy-nav-content-wrap { + margin-left: 0; } + .wy-nav-content-wrap .wy-nav-content { + padding: 1.618em; } + .wy-nav-content-wrap.shift { + position: fixed; + min-width: 100%; + left: 85%; + top: 0; + height: 100%; + overflow: hidden; } } +@media screen and (min-width: 1400px) { + .wy-nav-content-wrap { + background: rgba(0, 0, 0, 0.05); } + + .wy-nav-content { + margin: 0; + background: #fcfcfc; } } +@media print { + .rst-versions, footer, .wy-nav-side { + display: none; } + + .wy-nav-content-wrap { + margin-left: 0; } } +.rst-versions { + position: fixed; + bottom: 0; + left: 0; + width: 300px; + color: #fcfcfc; + background: #1f1d1d; + border-top: solid 10px #343131; + font-family: "Lato", "proxima-nova", "Helvetica Neue", Arial, sans-serif; + z-index: 400; } + .rst-versions a { + color: #2980B9; + text-decoration: none; } + .rst-versions .rst-badge-small { + display: none; } + .rst-versions .rst-current-version { + padding: 12px; + background-color: #272525; + display: block; + text-align: right; + font-size: 90%; + cursor: pointer; + color: #27AE60; + *zoom: 1; } + .rst-versions .rst-current-version:before, .rst-versions .rst-current-version:after { + display: table; + content: ""; } + .rst-versions .rst-current-version:after { + clear: both; } + .rst-versions .rst-current-version .fa, .rst-versions .rst-current-version .wy-menu-vertical li span.toctree-expand, .wy-menu-vertical li .rst-versions .rst-current-version span.toctree-expand, .rst-versions .rst-current-version .rst-content .admonition-title, .rst-content .rst-versions .rst-current-version .admonition-title, .rst-versions .rst-current-version .rst-content h1 .headerlink, .rst-content h1 .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content h2 .headerlink, .rst-content h2 .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content h3 .headerlink, .rst-content h3 .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content h4 .headerlink, .rst-content h4 .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content h5 .headerlink, .rst-content h5 .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content h6 .headerlink, .rst-content h6 .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content dl dt .headerlink, .rst-content dl dt .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content p.caption .headerlink, .rst-content p.caption .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content tt.download span:first-child, .rst-content tt.download .rst-versions .rst-current-version span:first-child, .rst-versions .rst-current-version .rst-content code.download span:first-child, .rst-content code.download .rst-versions .rst-current-version span:first-child, .rst-versions .rst-current-version .icon { + color: #fcfcfc; } + .rst-versions .rst-current-version .fa-book, .rst-versions .rst-current-version .icon-book { + float: left; } + .rst-versions .rst-current-version .icon-book { + float: left; } + .rst-versions .rst-current-version.rst-out-of-date { + background-color: #E74C3C; + color: #fff; } + .rst-versions .rst-current-version.rst-active-old-version { + background-color: #F1C40F; + color: #000; } + .rst-versions.shift-up .rst-other-versions { + display: block; } + .rst-versions .rst-other-versions { + font-size: 90%; + padding: 12px; + color: gray; + display: none; } + .rst-versions .rst-other-versions hr { + display: block; + height: 1px; + border: 0; + margin: 20px 0; + padding: 0; + border-top: solid 1px #413d3d; } + .rst-versions .rst-other-versions dd { + display: inline-block; + margin: 0; } + .rst-versions .rst-other-versions dd a { + display: inline-block; + padding: 6px; + color: #fcfcfc; } + .rst-versions.rst-badge { + width: auto; + bottom: 20px; + right: 20px; + left: auto; + border: none; + max-width: 300px; } + .rst-versions.rst-badge .icon-book { + float: none; } + .rst-versions.rst-badge .fa-book, .rst-versions.rst-badge .icon-book { + float: none; } + .rst-versions.rst-badge.shift-up .rst-current-version { + text-align: right; } + .rst-versions.rst-badge.shift-up .rst-current-version .fa-book, .rst-versions.rst-badge.shift-up .rst-current-version .icon-book { + float: left; } + .rst-versions.rst-badge.shift-up .rst-current-version .icon-book { + float: left; } + .rst-versions.rst-badge .rst-current-version { + width: auto; + height: 30px; + line-height: 30px; + padding: 0 6px; + display: block; + text-align: center; } + +@media screen and (max-width: 768px) { + .rst-versions { + width: 85%; + display: none; } + .rst-versions.shift { + display: block; } } +.rst-content img { + max-width: 100%; + height: auto !important; } +.rst-content .highlight > pre, .rst-content .linenodiv > pre { + line-height: normal; } +.rst-content div.figure { + margin-bottom: 24px; } + .rst-content div.figure p.caption { + font-style: italic; } +.rst-content div.figure.align-center { + text-align: center; } +.rst-content .section > img, .rst-content .section > a > img { + margin-bottom: 24px; } +.rst-content blockquote { + margin-left: 24px; + line-height: 24px; + margin-bottom: 24px; } +.rst-content .note .last, .rst-content .attention .last, .rst-content .caution .last, .rst-content .danger .last, .rst-content .error .last, .rst-content .hint .last, .rst-content .important .last, .rst-content .tip .last, .rst-content .warning .last, .rst-content .seealso .last, .rst-content .admonition-todo .last { + margin-bottom: 0; } +.rst-content .admonition-title:before { + margin-right: 4px; } +.rst-content .admonition table { + border-color: rgba(0, 0, 0, 0.1); } + .rst-content .admonition table td, .rst-content .admonition table th { + background: transparent !important; + border-color: rgba(0, 0, 0, 0.1) !important; } +.rst-content .section ol.loweralpha, .rst-content .section ol.loweralpha li { + list-style: lower-alpha; } +.rst-content .section ol.upperalpha, .rst-content .section ol.upperalpha li { + list-style: upper-alpha; } +.rst-content .section ol p, .rst-content .section ul p { + margin-bottom: 12px; } +.rst-content .line-block { + margin-left: 24px; } +.rst-content .topic-title { + font-weight: bold; + margin-bottom: 12px; } +.rst-content .toc-backref { + color: #404040; } +.rst-content .align-right { + float: right; + margin: 0px 0px 24px 24px; } +.rst-content .align-left { + float: left; + margin: 0px 24px 24px 0px; } +.rst-content .align-center { + margin: auto; + display: block; } +.rst-content h1 .headerlink, .rst-content h2 .headerlink, .rst-content .toctree-wrapper p.caption .headerlink, .rst-content h3 .headerlink, .rst-content h4 .headerlink, .rst-content h5 .headerlink, .rst-content h6 .headerlink, .rst-content dl dt .headerlink, .rst-content p.caption .headerlink { + display: none; + visibility: hidden; + font-size: 14px; } + .rst-content h1 .headerlink:after, .rst-content h2 .headerlink:after, .rst-content .toctree-wrapper p.caption .headerlink:after, .rst-content h3 .headerlink:after, .rst-content h4 .headerlink:after, .rst-content h5 .headerlink:after, .rst-content h6 .headerlink:after, .rst-content dl dt .headerlink:after, .rst-content p.caption .headerlink:after { + visibility: visible; + content: ""; + font-family: FontAwesome; + display: inline-block; } +.rst-content h1:hover .headerlink, .rst-content h2:hover .headerlink, .rst-content .toctree-wrapper p.caption:hover .headerlink, .rst-content h3:hover .headerlink, .rst-content h4:hover .headerlink, .rst-content h5:hover .headerlink, .rst-content h6:hover .headerlink, .rst-content dl dt:hover .headerlink, .rst-content p.caption:hover .headerlink { + display: inline-block; } +.rst-content .centered { + text-align: center; } +.rst-content .sidebar { + float: right; + width: 40%; + display: block; + margin: 0 0 24px 24px; + padding: 24px; + background: #f3f6f6; + border: solid 1px #e1e4e5; } + .rst-content .sidebar p, .rst-content .sidebar ul, .rst-content .sidebar dl { + font-size: 90%; } + .rst-content .sidebar .last { + margin-bottom: 0; } + .rst-content .sidebar .sidebar-title { + display: block; + font-family: "Roboto Slab", "ff-tisa-web-pro", "Georgia", Arial, sans-serif; + font-weight: bold; + background: #e1e4e5; + padding: 6px 12px; + margin: -24px; + margin-bottom: 24px; + font-size: 100%; } +.rst-content .highlighted { + background: #F1C40F; + display: inline-block; + font-weight: bold; + padding: 0 6px; } +.rst-content .footnote-reference, .rst-content .citation-reference { + vertical-align: super; + font-size: 90%; } +.rst-content table.docutils.citation, .rst-content table.docutils.footnote { + background: none; + border: none; + color: gray; } + .rst-content table.docutils.citation td, .rst-content table.docutils.citation tr, .rst-content table.docutils.footnote td, .rst-content table.docutils.footnote tr { + border: none; + background-color: transparent !important; + white-space: normal; } + .rst-content table.docutils.citation td.label, .rst-content table.docutils.footnote td.label { + padding-left: 0; + padding-right: 0; + vertical-align: top; } + .rst-content table.docutils.citation tt, .rst-content table.docutils.citation code, .rst-content table.docutils.footnote tt, .rst-content table.docutils.footnote code { + color: #555; } +.rst-content table.field-list { + border: none; } + .rst-content table.field-list td { + border: none; } + .rst-content table.field-list td > strong { + display: inline-block; } + .rst-content table.field-list .field-name { + padding-right: 10px; + text-align: left; + white-space: nowrap; } + .rst-content table.field-list .field-body { + text-align: left; } +.rst-content tt, .rst-content tt, .rst-content code { + color: #000; + padding: 2px 5px; } + .rst-content tt big, .rst-content tt em, .rst-content tt big, .rst-content code big, .rst-content tt em, .rst-content code em { + font-size: 100% !important; + line-height: normal; } + .rst-content tt.literal, .rst-content tt.literal, .rst-content code.literal { + color: #E74C3C; } + .rst-content tt.xref, a .rst-content tt, .rst-content tt.xref, .rst-content code.xref, a .rst-content tt, a .rst-content code { + font-weight: bold; + color: #404040; } +.rst-content a tt, .rst-content a tt, .rst-content a code { + color: #2980B9; } +.rst-content dl { + margin-bottom: 24px; } + .rst-content dl dt { + font-weight: bold; } + .rst-content dl p, .rst-content dl table, .rst-content dl ul, .rst-content dl ol { + margin-bottom: 12px !important; } + .rst-content dl dd { + margin: 0 0 12px 24px; } +.rst-content dl:not(.docutils) { + margin-bottom: 24px; } + .rst-content dl:not(.docutils) dt { + display: table; + margin: 6px 0; + font-size: 90%; + line-height: normal; + background: #e7f2fa; + color: #2980B9; + border-top: solid 3px #6ab0de; + padding: 6px; + position: relative; } + .rst-content dl:not(.docutils) dt:before { + color: #6ab0de; } + .rst-content dl:not(.docutils) dt .headerlink { + color: #404040; + font-size: 100% !important; } + .rst-content dl:not(.docutils) dl dt { + margin-bottom: 6px; + border: none; + border-left: solid 3px #cccccc; + background: #f0f0f0; + color: #555; } + .rst-content dl:not(.docutils) dl dt .headerlink { + color: #404040; + font-size: 100% !important; } + .rst-content dl:not(.docutils) dt:first-child { + margin-top: 0; } + .rst-content dl:not(.docutils) tt, .rst-content dl:not(.docutils) tt, .rst-content dl:not(.docutils) code { + font-weight: bold; } + .rst-content dl:not(.docutils) tt.descname, .rst-content dl:not(.docutils) tt.descclassname, .rst-content dl:not(.docutils) tt.descname, .rst-content dl:not(.docutils) code.descname, .rst-content dl:not(.docutils) tt.descclassname, .rst-content dl:not(.docutils) code.descclassname { + background-color: transparent; + border: none; + padding: 0; + font-size: 100% !important; } + .rst-content dl:not(.docutils) tt.descname, .rst-content dl:not(.docutils) tt.descname, .rst-content dl:not(.docutils) code.descname { + font-weight: bold; } + .rst-content dl:not(.docutils) .optional { + display: inline-block; + padding: 0 4px; + color: #000; + font-weight: bold; } + .rst-content dl:not(.docutils) .property { + display: inline-block; + padding-right: 8px; } +.rst-content .viewcode-link, .rst-content .viewcode-back { + display: inline-block; + color: #27AE60; + font-size: 80%; + padding-left: 24px; } +.rst-content .viewcode-back { + display: block; + float: right; } +.rst-content p.rubric { + margin-bottom: 12px; + font-weight: bold; } +.rst-content tt.download, .rst-content code.download { + background: inherit; + padding: inherit; + font-weight: normal; + font-family: inherit; + font-size: inherit; + color: inherit; + border: inherit; + white-space: inherit; } + .rst-content tt.download span:first-child, .rst-content code.download span:first-child { + -webkit-font-smoothing: subpixel-antialiased; } + .rst-content tt.download span:first-child:before, .rst-content code.download span:first-child:before { + margin-right: 4px; } +.rst-content .guilabel { + border: 1px solid #7fbbe3; + background: #e7f2fa; + font-size: 80%; + font-weight: 700; + border-radius: 4px; + padding: 2.4px 6px; + margin: auto 2px; } +.rst-content .versionmodified { + font-style: italic; } + +@media screen and (max-width: 480px) { + .rst-content .sidebar { + width: 100%; } } +span[id*='MathJax-Span'] { + color: #404040; } + +.math { + text-align: center; } + +@font-face { + font-family: "Inconsolata"; + font-style: normal; + font-weight: 400; + src: local("Inconsolata"), local("Inconsolata-Regular"), url(../fonts/Inconsolata-Regular.ttf) format("truetype"); } +@font-face { + font-family: "Inconsolata"; + font-style: normal; + font-weight: 700; + src: local("Inconsolata Bold"), local("Inconsolata-Bold"), url(../fonts/Inconsolata-Bold.ttf) format("truetype"); } +@font-face { + font-family: "Lato"; + font-style: normal; + font-weight: 400; + src: local("Lato Regular"), local("Lato-Regular"), url(../fonts/Lato-Regular.ttf) format("truetype"); } +@font-face { + font-family: "Lato"; + font-style: normal; + font-weight: 700; + src: local("Lato Bold"), local("Lato-Bold"), url(../fonts/Lato-Bold.ttf) format("truetype"); } +@font-face { + font-family: "Lato"; + font-style: italic; + font-weight: 400; + src: local("Lato Italic"), local("Lato-Italic"), url(../fonts/Lato-Italic.ttf) format("truetype"); } +@font-face { + font-family: "Lato"; + font-style: italic; + font-weight: 700; + src: local("Lato Bold Italic"), local("Lato-BoldItalic"), url(../fonts/Lato-BoldItalic.ttf) format("truetype"); } +@font-face { + font-family: "Roboto Slab"; + font-style: normal; + font-weight: 400; + src: local("Roboto Slab Regular"), local("RobotoSlab-Regular"), url(../fonts/RobotoSlab-Regular.ttf) format("truetype"); } +@font-face { + font-family: "Roboto Slab"; + font-style: normal; + font-weight: 700; + src: local("Roboto Slab Bold"), local("RobotoSlab-Bold"), url(../fonts/RobotoSlab-Bold.ttf) format("truetype"); } diff --git a/source/_static/deciso_ruit.png b/source/_static/deciso_ruit.png new file mode 100644 index 0000000000000000000000000000000000000000..3fdcc28bd9f59160c17c7c0e81213ec40d373818 GIT binary patch literal 37714 zcmXt9WmH>T)5Wd07I(KI#a&8pcXucj+}+(;G-#3H?(W3`h2q6agS+dOKJWT|WUZ`| zd+(WZXU?3x_e^5dROB$wNYG$lU@+tXG8!;2uy)XoJqi+Zq@kk`2m^!0Z!aya=B^

#`j{7p}V5b2Gz~}*_a2h>6ApM0G**ZK~s0t-Q+M4+>x! z{V;BwboWa(!+_gtYb?Pl?g$a$Nq6v$_4%LQjJt_~xV;IfX2e7gl=}|uUIxo>5BVsG zQI|gr!~rUNFidH`IsUq9S~;>?rZI7cvG4lAYyrki&*wPxre^Rau|~jC1{}C_3H$mGc(GN_>rj(nEZ*fJ6y}z#QJ30ZZI}8&-(bjPQ;Bg!pj1J0w0{%oqCym z1sgx-rrmjEm_!7h63bBD58dhpWn;k9msz*0JVra&6TlcB!K!t=L{FP>!o)T9dSV8; zQgjBGXbkVL*|Jvs{%xcPTj0RVxqtRpfEg@p8Ze{LyMDH3?sJtckmkW9ZNl$t<5wm# z`~$oLd_ezO5PeUH{OU8^ifUR%WtHiApJ>#qbAS3}Uual*D~O&OO%9YspGS zM(pZ6&TNJrTq!k)L=XiG6AKO%s=pQM>{;NuQ91aB>G+@7S$R)0VXuL@?Mkmd2M^i{W$F~SX=OLl1woOu4Y_YVfZPqGE_wP zAuWaPzl7D8F@8t#EX3gr=L5d?2({ee6+q?)ois!E4Xg11Ge3m+9BoPhJ0kK2Hi1U8 z2bJ^>vc^cg6w*KNh|)M}WM5F|rKJFH1QJJu8sEt(qYjH~_6_%$JV-iWFr?cG)$MQ} z3H*?0KcJQk7}Vo9A~u<+3ZNuK5Dko3y&g83RERToZ8<>3ou4B=Km1d0B&Awa_BjQ5?pITfK!NS1X!7wm+^vqHt1R zIPH!HuvNg+NJJ%uby$1L0LTc`1>&_6cjIngpCw?8T%Au|Sl@pNzzRYUPb#2h!b?D{ zjQ~ion6nq9&3+P4Y*+M=q{F?5Q5gmnhqOoO$&1K{sFKn5(yIe(==hjJ>8PEkPZ;xP z)@gdE(#JnpVY!LuD{V+QGZav7GWMw#vgolOFrDM;u>NB5U@=nnDT~qN)w!X|s!6cr!CWTwI<)vqHW?;)E*!GkFo| zPx$?VYwkz$N6$xLZFX%{?cPI%1-=E=%DRQW-+jMdEGYb1UHJ5Cqk`vG;IH{#Z57@X zoAVO(S@sbQe?A}o6sWrJz;sHQBs&GA2}VPHFGhTv=B4G;wL6_Bn*}Y-Endz~%vH__ zeY?@htvxBqtL%|}inuMo)E-loD{PX6lz=Ux(1y}e!QZW}xyn2~dcJtlciwb{ck=j+ z`l6{@Cjv#plYeZ!>4+HjQsN!L7`*?&P}&;J)Hd=dly@QKC#}2p;Oag+oPS6OP=$(UEo-h1)iOz z-Mr;hRZTYgQtRmLs?nv^SUj zGdeOZbw+QKY3p&;@HX~N@(+K4#|p&CmrEauD6g=sgh7|MtYq)bA^dRK=U{N5Z- z9s6frNT=C&SO#JpO%Kf^&6!NLjC`@*H-c|?#kt>1$9%@Vi~%fbEObXr;^t%UhCRnD zcfalC?vxWfvipoqUbdORauFt#|q5kL8P{ zy(;gN*9vZ#MHzZT;WJaST(tl=WvEZwEj(A;(M?lLaZM$Ypv)5^K6*6VkJi#F@r_+0 zyel)mLWX4;O}KM*Gc?n$82E+m0QqkDA6(2jRxXt%87~8``bQa|)SKaZ&^1M#DwywdQbDi1Qv|ryN80lM7Twqq9;1dPkC;r>u>Br6v z`EM1?2SY*IK?k8R@PX4w)6?uZ?AA5FsuIsjv%!JMO`qWT^-;$vm-4nu3b<&xXo}$6 z`;(g?$!P!N`lRMS+k0at(0#D|C zJg06SsV})~0NSa0#=9Q&bslRVZSKx9zxCaT0^9!N&-KJT<=l}5@xC+|A5w{m9f}H_ zn+=2uTmEif6t{l64(i^gelQ=20Lxs_uE~ut1Tu1po80?6%P*#9myd|Ez8O7D{aNwu z^Lgg}Kp_0_)#&{=@t0i_`K1)q)`SyNIi&WS|WT6iK220s8JRFh-yLePHpwNK3-NP{GK{NNV|j zj`NT~YcjWE5c$?N>-kV@TwK1cBZafPS$`L~=x+=~(jmfBMHJr6!tL;wNy7K;9&mEd zA02Sp)~)5?P>V`!t7;zlE)2$N+4WUhjlOL{c3YN6l0VJuSMi^SB11qcjoQwa4*`a- z=Pw}*YBNh#|h6V<`oNlg8+VynuX+0Z%!$TG2c+8%* zb)`MhMlU|b^Ssh5uDnG_6@6FVz*JQHJgGxL?~IT<=3b0&j2rMkyn!JF1E03AI~l$C z_+eU|qkK0hWb=u|cA_9`VBcSsskH{}>)J`J+r*{5NisyLI&7Et{j1FA(%*hF_v)tL ze!mB}qr^9J6-7n0Gi1I(r>~K-78`Sro8QTl{2w1QyPeET%`SU=q(v4;H5p{T{WQH) z|77Tp{2X-Wr4oHj`Mm#gt1+xDGNGxU{?>B`B6&{|U1$C>2hiihvQZfef-N{3Riksu zD`vX*mEb6`#^Os2nvrq1S9#u_U}qG-WzQ$?HaRQW2Hx{1qS-psX!ak8V$eNMJntXh zc@n`rxYAuE)YjJCt*xzP-o9b9zV;tE*$ozuB@tc|-)l>|rQ=bHO+!3g_&@*pPD{jY z(A@ZT_HP>dBF_uCh^w0nYZS+3^mCp5T|o~Oy2~=_hgAdC2%uQB{5jUBj<+2UEMPEa ztcxVQ`SSfvxH)OW%=BHavy|TE@r6&)sNW0GbFh*r+Oq9%%yu1Z$=xBAJ?U(#f({DA z-iK6a=F6uHYwN)X)EYbzMz-3D+C)yn)?WlkGK;3|W&_LU;-te?2fh*411Jal)$A=b z3IvOpFAW$iRyhhJs!$=_^(sU zf759M_1%4j$*OG&{PQC<9^AJzNLa8*+3#`s>!hcrXS3(#Z|)W4{Y+om$?0kB;*Vk^ zmsW@)V67O%T*x4;G+J*{qF`1d;>x5*ZU4&gYIw6&;yvZwmCvb+kg7^h59MnxL9Z&& z+j2;&wwsiIDJpvH&$XcIpJM^QW7jdKBuej}in|^{{HwN`f&8oPGoldHT(6r6wGaFA z00ycTN8C9t?`U@8qEc2i$o6=!rE4T54rVkS@b)P%`P+@K!QB{Wf$(MyB zG3u9c@ew?AVE)XJiE2VBT`$6|TmaRSM954ltW#CVmxwD*zctR@>$x`X->&7czn-n4 zEr*U=+8cIT4V@pJ!?89t6=>z1#1&VgnrnD{dp7c{P%%wk5N(%eL7N(HvH~u#E_fb1 zFgF;O-a>!up%Hi}STu`qXcN&qx4i7*_jR&`0ERT#RPg*oCt!08sktUC6$eyq;`Ok$ z=F}%j41Uq_-yR`CK3|V&W}i=^Yd3nCB6dKPqY0i!F+xYWE#SzU&_k6E4D3J3<6$HV z(s^mDsc|AUn1)bK;=Qcg_hx1pe1>1uk!MNXW3L*wEQZMFGIoN!t~A49|EoU=%lBSMz^rD%HS(1G7~`+xTzMV5En z=t4%m_;Xv$)t)XvJrP#54AilfUL}+a|AmEZJBfPWZG(FZ0u(&MSG}o^yy0QCJ!|tL zgEJ}*{>|}S0TEoO1#lnj%X%0~~Z z0tsvrX<&d3S%Kd@`p(ey?*Zx+gZf`F>$`Uf!&Bkm$*ScanV1W;!%>2kT`#@ zsqhoozRPY9nt~t|Fm8)IBK1(l7vhW6`M0sr&=@$Cm-H-3^Z!y!C z9|GU%onBs1cf$r;AnL)KB8$`|jMOEj%0YW(mn)anD&`kK(8Pgr)>350BuhJUsP=)&x={$5e8gRg#Bwo50=o zJc`>sbNw@chE~8-=%&$I0q4Ik!o^+3hwigYyI&?*_i)RCp=D)VkmlCboN>8rDjN8c z>BX$Er9@Kx(^%iDzwA2mg*O58uiC~rwN{P`;ZT$GIp9E>>p{`vUaV%RjT+*B;MkN6 zDcV?!gBA%c*^UKjMO$vJ*)hG3?t+wQboQAED(M;#I@d%fkG9xQqM#U>SY20zCpI%f z@b>s}Y8*1|z~&Bqr9cmS%Y`~DBM!w@Gn{=y3wLgCr4RZ{t=PRKu}zPN!|Cz5)*HX| zJK7ReT+BPcU4Gc;A`5BIm7w3l_2{lqc}1J-o~j2#S8-KpYr7#dD5$3<8A@2 z`5~lc_DL=K|H4&=3AbbV=;jzc;e`2h%r7WxW;d4BY(@g`7M~`^OY%av>3r~(x4DTA zlmA}Ai19(2)3(8Kp}*nZ(rF^D5Wk|>YRdq`iGW>qS$K&yCt71V_6qHYH&0^}lX@>t z_b!_Oc4myUCAqV3VmLL9mg3|u5oXBG>*KfrvLaHRf`SIS6T|~%lb>1tr85wHF?l%K zdSzSB@9pY1m;<4|DFt^A0lASjsDWg8Z1W`N=1GuZ-aGWWi)RJDq&N^s{g1mjr?6> z>)#BXFw5}wz24@EHdWYhpT3C~()aL?^r)ISEsH*QVuU?j97BbkYKN_bu3}Bxl)wRIMMa_AXr;U=7e?pSeg78EjcLAm@sGr>D~NM zcnNBn<}YZO*?2lFzDQTloYtN%OB6YX*v<6x@IaSeX=N7cm+|?A6|ermFfw)jvcK(W zERodvp-}SU6Kv-2P8It(Y7fqlVIb3Kvi7|J6-^ktEhTW@SM2>~hoV0&(BlL%>|1kh zp3n`qI9ubnF*&GYX1TI=SG;yvq1>2d3XG&CZu=@~;p zK9mFn_roHyGfTO~vB11Q+#*yx`u~-FQk%51G}R zu^Q*PG>o7jcpNUN)Opk5Jf|P$&t=rSHbTRO)irjZJbUJQPEL*_iK%Y)rv$Q!CfVZT zaP5*B-gvfh1 zW*P>;qb>90{BK8_Zw~}8*JXTK2^k#5k9#~kHg=*3JI11-$wb`}tt<-vjH=N~5dZ5@ zFTOo?^Ay}?HJ;{Ko9*QZd~8`-sP7eUCaB2YIBk6g7H$i@@-XGUpH66PZGDhs%BVs6 z&qP*|M6aiS-UHnF;4nN()MnS%q{7Wj^u{nVIM>R(ab1`23wS*%n_ z{I@qFOn;A#j_y`f85QjG*=tU-V9Z4UZJtlm==_|_6|Ji@tl?KPfZ5E6U1s zmD*LEy>G8ir8EGBo4ew=g)^58$}DM_W|fI^5R-S25-EYx(|8@|$gt7mfhNf)A=xNvn&RJ+w%^EM3pl4j zXCefG#eU6QdU1zE)P@aYaKby^iA_<*S6CAu+rxqSVp#(?1N7K=CMF?Q3yKNkQ!>A$ z%+_`v2*K;*Egu6lC*XrNEt-e>%*i(PW`$|rJLXxgr!KQFLMM->WBUl@T^UQe9q$J| zh&Ax(yN7ZQk}PNRn<+93`DO*xZk~0}lR0+~Nv>CAzJctn(-k6kalrmjL))f2d+Fyz z?30=D{a~x?AzF;FcRV+fCk};&#pqW{}=Fr z0RhE*_-XUvE`9bF62Hn5xuxM6|y9ZTGR1#gG(&=c*WVf z+)hU2gb0cp3aVRj$I5TpgcwnoA#3Y)^nO~V{Bl5TU*%>6-#NH<=g$exux@3Z!ND*P zm~|Fo_TibRM`jPxo^|WktE(!2VkZ6mg6ds7ADa1_7w+7dURGTV?iY-GG(xFsH?wob zaH}dGntEoeUC3U@hdp$W`(F5YWJa^z;L>>KEIdgh>MEf>yRuY`4bX(Y@~Qb{!dz zH3iqa5pV6Wr5+LcHUlL-yboMD4{`ij<0zr~Jz;yQ&l0UG=%Ud& znbW8psC~Hj^PAif1||0&z2=O%!Qe6by^x2^h$r(7smG|Jy4;&F);gBhP-)g}bmA?j zNPQ<@%P&Kd%HLeZ`}jgygVp_)Ok|vBr_VtB^I^z1=W0r=<4Q=a1n~gzHt?;{nic%C z9Ze~8Jx5m*_?E?GNkJ}D@_H7ttJyNA4|~8V_7;$?5#kZL^?L|ENK$~L2e|`uI!s$( zb}qb4efGI8c<`maGQWRj&5o{#+IYJW*4Ui886?=n_Z}_vMTU+#h~#e<%vFyDt1`Vr zrv&g+hK`aDEqdG;5DtZU+tO}3Db(R_(GRDksl!noh?7Vjh_Nt`19zz+hsJTzZGY{4 z2%am-$88gE3I{$&FrE?@P1cm(Q0yWFn!SEgha)YBI!ODSq(PmdF1B5b7R*Vgyyd*S zV6ZlcGlv-Ft~=-kh67jroz7jdhhCQsy-tmKs~YVpJL)N&rKsy$2vCd{A8n7!cqHn2 zm63GTx>gDbjrUKnu{mr3nWX<1gGm=OY7(^31*%w}L#+P|`9p`4w3VPka)3ef0+WX38GgDcTs59)d! zxj#IBnuvb;%onUhW0H49N~Z1%m;wLZESWSZdwYAgsN^(8{lnN_nW2lKf&W)ou|@ELBt|7e2RcfODEx zGpn+f5eqJ2(~rYDfh4-iu-R<3@@Yo$wolgZ|3E*h9ABZL)*kvl4v8EfhM2r-(<4HY z`lCE3csHrvXmIaunIKVIlN=P|-cQNK6W07vOpCbEq#6FAl9m?v-?Y@wX}>FkG_lYE zcBA^JO7s~3$l*@x7#J993p%={NeAUSx>|}IeZ3H+4&L{1BKgef^!-r6ba0u8v5%`s z4`p8jDbCRIXt3=7%6h%E1@qF0&+#szNr{hh+(*S=Bj2iY)n7>yKXviY*V6qL3mec_ zkgAk{eutZrs;Q|F-(BO4s0e9UVwPWXkM#{1>Lk-6_^>e`5Rhz#$pS-3r9`ALp&R=T zoOcFT!*|NypZm?gR&Yb{Fvu)ZZ>>zC%>X+`# z&2GaF%a_&z@9Y#cp|49qtiXj|K1|pXPYVWm1=Wjp^B*a@@gCjp+`c`htT+Z^`;Hv` z0#!5;ofOnBprxaAw)sJF!$|0Up>g>2T|N9$()(BJpf4Zsw6H|$#W-^qn83%dPqv<;2fA4OX-xPr;!WH?wneB+9M0&Yb! zM;oZr4e}FZ)R@RISMH|0x6{@KO0&QFUvbc7^TA6&in7J;P$|R4gvc))Gx*xbyj+}} zogMA%?O7GJ9qFNYAZDjOX%-H__M#%L_?oa=LKd6C7K^W(Q#$@+@0XLEEaku@g59<) z{D4Q{Xc+;ku+a5m39HJo)WhQ0-9{|L@ADyFxuzJ|=Bq}8#friNl1D03TAhd79H%^r z+E&xQPv|vC;3iN+iPgO@LQ$-7-6CAZnMsGIrfBjj$f~njTq<+fPM*pW_Ksb6Vs*Ot zJ)*ZzT0KK*CO%L*h2)_Q4JW{*j|hemEjJ4A)&eI^Q!7?*+HRyLM(6hfb1u?HKE9+e z@5$U1?*7pn>+Sl*yf?G+HDA~Q7t9^senCkChkV-q1&6%Gmj(+u25mIUrZ_cF@jHCJ z+|mL}hRMq)Hms0OPT%!0_f1%5#0`*qe%oW!U<}hx1cb22GN-eX&dTETQ{}Pu5j2yP z(oXLpy{64jUKZSCq|S zV6>xM=ql#3BeG{1J^QUen9m}j32oEEI8~?eTuaM7kTQAf%KgO-(gH zYI(r>bRjnmi~WO7#1(q5o3h_z2f8{tFL|*t+w5A*tN@_5naie`Ijzkv()Mf3R|EQr zt_oI)|DIsK(d`=#FJ}5~1Ml>8GrqJfF){I|rKROXtGbcEAn5JW5q#B(w54WyPfwt| z*zI`7HJ6>T6tWlGYtKi@CpK+C`UA7P_GC(;?hmaJ;RPJYlV1a;aBQK8W`-pCT;4yyDo1;hVq9U>^SC$;Hyq|FvVbc z9w9^x?iQ1lg)%WeM1^DWeV%18ebthwt&+0n?9kJ55q$W-gPrsfKIm*M=1(khE}7k`2sGn+#mdlZcT-BF{_*MxREZV|xA#x? z$4h=W3OMbnDu2Iv4$5y zrZz)@Qe5%+w1Sjg0zOGaAH2+YSIK@z7d?KgQE7*jV42YX*=6*-{T4Td87+C^HKBnU z-p{o7KL^-xWptp(wq_iX+^_9}bw9j`S65dv9$q#`B^=ZUmv3q1(1TH_dxGhuR?qIp zSVOO=6l=UuFA)1UOfK8Ph$eJ$93^a-5g-7Bg!Al%Y)K8|jpNKGk$ed#p;RB=DzEy; zNb-U}ec^2e%pY};8^`T7wof@lhTJr_T2Ag_ifn{Um7qj_3%>Ca9iu8~n_cd9rbNugH5!{pSnsFRp7<|}MU3E>I5!YEt!E@wAGUR=}? z4NnncBbaN*;$GNJX_ExlJuuWV0Z0dkFV4-`DEhk9_HZ_?b8>T&T?NS~V|C&`rNxDL z;DU=?Os_T|37fd+(FGsVZ3{bAX2_DRE}l>LJ$`J-oTC;j%^%!7iNQyTzmNMw+1RDn zn2uqWK7j_VLVWrxX~2eb4%K*m==H>WKVG^wmzBsd6Pz)x-`TReehTAA!nQN^uJ2!pGT6WsIIJkgNy^Bgr@mp^K`T^YSS-2?NOx@<;8t zMT4(UIR*tnd9i1)8d#+y(OFjJhctM2{#w->HgFc~;OO}KTj#_L!+i9$;kcTNHL`v3 z*siQVyybkPI~(C9`L@v)?SSH{amdvPE3ALyfrKBl3c{I0A?o)gHLTEV@Ci7|dj4VX z;g?mjhxARyq^EcoWpc?eMb;I3U!QNES^XZZTanXBNLd^VM8I}Ja2q(;ciwb-(^(D= zKmAZ@r+<6~{GnPdWx%Gw6>|N!hhh(F%e56tDQE9w3J=-mMC4e7fofJ*Jdy@_5kpZJ zffc{0ltbN_$V7>^$;$s^hBS>`F$IYX%5X)&q?<|t&K#t3I7nv^)VC782ns@x2k6;! zYO$Sr>*@wdwT+LE9p05pLIq={6bdnq@AV~EOvnHTA~-OkiCBOUF+5bz2HuL{#O@DSWh3Mmt)5{aCb+(JBFx6p|@Ki+#M z3?=&{wb~d|NvCIc^q*|Vd9bSAcJVI&aPU6CB`CToo8ybfm%5Q!ww^s zAWW|zf-(#Q#XoTN_QO-ZFlmhEDj z+Tt({6vCUJ8np+sl!sQ501PTo1M1LIk=r?MgbR}UX|g#1Y*R4y@gH8M4PgXSeyxB$ zg0#0?${E@1MFDR(HAznz$Y2HXxvyxp+NGG#m|zIaGEPMWGZNrJxkz&}0`z_;*ICWfn`;Syw7;^HT*25%2)vD<2~-tJ zkzgd`{p`BMT_%(lxU?1-cD)L9 zUn!D()i&E7_b$~TctI0>SlhN+O6(HoyF^{yy$@Mdx(9IO2Gc{KMrBB%@>5ciDQ)VH zK%Fxd@I!%Bh=&9ZfKyuhD_Ti9kmG5E#73J1S`xYfj9UoYjWB+xn^z72e%jr^ZL-#u z4QXE5y#R%s-Pv>{L#3yEk5XNm67r*550?W?<21iR-f!#fiQFaMm;cLxo@rWiAZ-HD zIaC37yvZ8&@TL^DNq?Rmha6fcR+KcbIJUBZ7lH!zgU5_gL7}h#v1Ewq{kBDwR~lKw zPxm;LI4ff|K-~${<7@!PJFpbW7%j>+#5c^wYId2I}(-h z70wS62a~^dOmBrM%cXK)6)%q9IrtQz?nacS9Vrl z>bnvgFlP9HqIm88ewI1IjFjYRR8uQT%EmMrfCvUGCDhw4d6r{a^T#n&UCD9|zdtVQ z5rI>CB}4^h(7AW>tOuuN-+>qJ56l4_h;mvaP`(2QMH6{8S781UCjncX(odKh|KAJH zOPv?dR0otd0apVj-&}W3d48 zt3vIAE>zug0BCt29A2Pk%_3H!0yMW0JYL;D;P-MrY23x`bV`JZlOj`k-GD-t@TJh>1>##jEp>*#mn4UAnuidJ%ZT{|355{eDD?O{Ln>0b0hP3XK7vvq-`$FQEraH z(>9QHL&&K+G0S@5^wlmeU-FQ`t$#O`%8mRGDH1Lp0{qOGGJN>zEzZkn}coh=VX}VG$SXr*Y345dVVMAI|fD! zjs1l&8!=_{X*U^VDFJx8e=Nr48S7oJ8=Mt)Hy3Il8g{QDGW9{cVP;IwV}lGm=M+vl?`eeBuIc0Y^1>U^o2qwj7)%*pZE;(%D9 zw6MEP)kgE|#R1#*ygpx_7)5Lag3$o)1S~s`Zti{|LvC+xIc`Y1H|gq@0`sIZBA$!| zPZ(3O>H?|jbLM}piqmEe+-T^Gz#8-u>-FeKRYDxajr&{cYTbI`QZ^Xn0IH*CJS+Ad zI`0r{wdJ!YD9`;0tZ-v+9#QqJ=11{^{X4M8G?ywfo&6SUMrz-VBH<{J7G zK5X0Pzh+EE9|Z1*bhh5iA572va+CWrhM0ZO{XeW%7^2=-#BN%lJ*hI0fDIE8b^# z>VNt<0lXav=)v2EeZ+1`AP>O<;4d=h&|EQlg(`qNq&fXO`q})!@}40lJUN*{w9|Qi zwrC9o$O+U-hOZmB!wh(fbw}Ye?!2DYK-txjS6Hkv9I2|Pus1HB?_ke=`}AyjtsWn} zhgQveb*@0|u-eP~HJS!-4(8anZ_`~;1RMnXaqf=4*z`-Tt>gHb}&ep~=Yv5P~ z;r~8ZWQJGLm5juVmS-WAs3!u(iO3E_N0}!`z~;{7le&*ZEISUSAhFbqTh%Cj53;HVZ0q4_+85kl88Beja~_pOT@)FlP{ zAR{I1?cK7@w~8pV>jHZJ*LjX0e8ZO#g4G1 z?$dexMSBgZSUcHRVxFwi5-OP_oV9|w2J2wY9I+(wFF3C&;zsa&TVBGN0V^F9`MD3K zWh32Vi9=%WK!LOXWjX<92nwj64KN&xlASK4b$hiM?@AjHnhBsP6+wy9ioqH$Bd#y= z?C)+2cY)X1?RotL+-{;e=^wA`D?3U|L;_WZ$OoBRlr<9Y7F2Jwe`p#TBRp1M{r*#! z65hX(G(nLN6j9PB>{xIc1B6W-?d+E4PiyO~9TFql=>u~2FMRmi0ducpS;+6}{-WAG zJ%8H_GJLc+EM}kqoqZBeHS8Pvt~P@%jN{!II+D{55EBf*abeHGM^zJZ8DRzFzfrrl7AnxX-9V zQ6Pro<7X}Hz`&m03k!SwyWZR09M8{H`8<_UOb5CTbeI!&dU6yzPyWr_hp``)v#O29|wH49NlVSeNkPj z3YK&*Le~aSIrjvb(A){}>%x z9TI}szMjjY-%Dr?Ec|4z0&NdDxtCm$ix}Ho>8EB4pk69*96Ulaq=mG3DO_4xjwW2} zt#Y3~<-(~%Yx;lHP*uBdb9*N{l26c5syV?PyR2x8Dd7YpeV9zWaMN2u&lmET$W ztV04eL6LKdZmL{>hG>)i=F5Vq^w0M=U=JysW7bU;P6XIR4Zes*Qx2LwW3e(AhNWUHNgZJEGGh`P-Mv+68s0BC69^*z8 zTl(xy=w2%RRR8_^w;}xSv*}3k#<5$-dgwwx+*m^!@X{qKNAc+JSKC;%R{={cduy2K zutVNrUMTyBXEw%uKup_?wKL#h?!W`!Z9XD8UioU|is#cqapL=vY&B-Z>fQdwK?af! zz6@cHbwz+bXp@iPq27d1Q}V7^1!u-F{gv7r7AaEHIanZB=Yx|oF#nFTTN9OqCUU3xy^&z$*_v#$b~%;x3w zmDY&+T$ZE1Fp0VEgOzL(q~t(6d&g=_-2AzLx0xtN30O@Ky;Go0OE3C48^w}Wc4xpj z7~P>oz9Go;@UClfG-IcW@T*+JQYValL%9xD=gvip_S1M9H0W7%y~NbSzpJ2Iq06tK z99u!<2*f#uEf8PY1|v9Vq%Z1<>8DW9wRkS>js=lpQtwCS-|eE%vR#`%dAGn3TOsT^ zspgmNDN)%f-`&-m&*q4>cp(xq9R$0$nVxJtu!Ci8Iw2I$%B7eMUniO^1X()usd2@$ zl5BZrxXr2NheJzC*!VM`*Km z{&U>pW`JX)6GCV<`1f^BkGPq<@DGf=v_O*#-bu0A2S*PLUdH68;)Zk^y2bA+z{wot)fT}f79zu<}TJO)bn8g+)K~a$Ve8}ySC?kBj zQY6Jt#_qy^+PzBC(;TkYucUOC>qXo@bk&-+(3a3QXw5y_VC~}dWccZh1BXJz(mjtL zg%D_i`y1@>crGyPGR=2p0X>Y^fAJ%N+ZwV+E3>KI0T`b^kz>Mv0z9uohnE+XEY2N> zH41ujJ^>cgL$dmifubt403H0G_=Rj5tE3bO!gV$M_AaX)5OXfD;mK~Pjwq-4#$rFkSsDdhOehJPrVCS*iKir=m@JF=2tt{Dm z4KWV+dLOK}vN6dW4flYzU03w+&UC7geam1FHWZU$cGS4hn*rrx@JPvmecU*_i6Y=xXrP`cIMFT1=&`LB#fTJ zs-sTIr^)BvNrz%k$K_)zt#{SM@rcsagCSeB8#e?4lf=-O~;U6 zW`u2T5B(PZ?inA=GdfS^Tj<^RZ8%U* zw`@y48?a84DdAzhk3^ItLvu0>?GQ0miH`Y`jym_GnUI123VlgD7Lx76oZnUuX;V|+KMMTkskmxn+@ZTB#b>PaI(r#6nn`D3-(RXQU` zSQH8DK_-#q9VC5tte8jNelE^TXDF-23Jx`Xal%iY5fbXcf|f!}Wu9T}VL}y4MgXX= z@4Jxq%LQyNcGIaF*l=2fhNX(8bn}`x&lv;-=!Luy>L5IJ$4Wz{s^5;^c{k?yP??E! zF7=g`mL|d+WF}B4M_j?~kr*~P!m@vfxTcHXosZ-V*ObLSeNAB)e9(!wqF?zE?=JVz zJcICvbuvdVdnXFLeSPdh^fNK71Y8y`LGoS^8^Z%$m%zPud?wr4vdkWM64!J49sIUP zxb=bvM72h5#Wn4HA_$3WheS@~TF(btYih(UdHlCN*EF9{>qiP$lAhvr$Oe=$J{}IIu>` zEYX?U-YakNIbu#vB2clE;Qa73sq-c&%fw!`K)s{xM4W&HOU0IPrp`9JM-SP9w%V{( z`wZ%y5=Rs~LHmQccAs)>Cgjd`U`)`y8o~u(WsE$3<_9~!lP%87$@?jNvIE2Mlg*A8 z%-!(hqFa01zAEDvMwXuKT0nYsaNsMh3CFhda1(xr*`GXw?u~kE*UibvYj6Vyxu$}( z5BPB+&WNjT+-tP`8xm|4MmaO><Kyxs?k)&OF?5 zj>v~=lRST(u0@3ufckl0!Mh@!tB?F&Ln`uA#ncumWb`*%Lo(FvsdwWCwY zHCxi50^`Hj5)WDyf{l~D(c=Ys$9@@~C245IFe=5W`@JXb(?{)eJwJGi2sy)!U6>ge6fWBBzX%nbk3(MpT>NHj>@a4 zU)D47096%(xiYFm!XVi-?^Mph`GP`RV^0*xllKaL1C$gp5T1b(2{c;?yyO~e zLW56d#@kHe0-CM-^r}$4V4Hyn`uTkgbAYYPCW$8x@_8U>iaIz<=b2JE^#{9-u=kwi z01WxLpK3pRcY*$#V-)St;b(qm5BXCpv+zsXb+`xCh7}~earami1tR{(q;`SEFdzCy zk{q$f-2_qAJ6TkIUN6}8`n3I!Bx$0=nUSW#ks-39NqL)~@V2QEH74)AEvk*lx)=g*BFKQ~?|lLO$WUtb0YD^FO9 zMC*(KU^jo?xtD$xN|()Oad{{_Cd%)lQ_$^d)F>iFk*zmhd#*!oE(2 ztT4VE+gL^>HGcayNcc}*NcQ6(9uM|ui`6ETO=;>EoY`1c!b0EALxdn^$Q^#i`YAhc z17a}~?tk+D`6%EsNLY3T#)nIlbF;5axsRr%R79Q~hp_mDCF0=v8nDU8r4y zW*6`91Aq5**4CX^T^GZFBv0Mlrwv%;(5rTgu|V%FYUCLgFMrTYIFdH&Mf>HNOP^=Z zUG&Rz)m?4iy^!pMER zj_e2kr^SIP-}g&yUu1dWj#fDi>#ki5vxdPOS=O(gokz8-Y{_4vP}%V*CdE+rE}MC~ z3ui2w<{JsIKX9aXBBH~vkL-#e5La{+xZhJY_*lu~vOi)e9Gsr!D^BzOS`{K?cjxLV zT5QL5Bz=Bz`Mgni-uv9z(BOJ>$O7^7DH};ByY`Q3GX43!lZz~ABNc4|da@o25}(1g zzF-Omcn#yoc_kAIdnL>t;D-uCa9tkF(JTJ#xdIDU*-ZI-o&+Z)Nv_gI?553oU!fgz z!>yu#|Bt4#3X7v@yEQIBgS&fh3GVI|JP_Q2yF0;QaCZoS?gZC!~5^&>)59{eIe7`ks3Y-to95VIY$T&4{sB;3SYxc%(Q6W{epqR zdV5usVwHq>n47O}N6;+xsE&Bp!)Q#t!1;AM zIw7tQm+n!)D5oj-r?D#{1=En zaCo|4W5VjIsq~F;WcjETvQ54f)qk<>;9f)|O)d$6CL*t;zNGY};oz6ep4-Otw4GXT zbB2o4{}=5%!Uz?bc659^c*Mu_Lr(nLv!b|Ic0taMRgjJtAeU9j)bzZ03Dt-ovc}O_R{osO*vCnIE6ej7}it?4&(kC^7$+@t)!Ox zXVsSm6NhaX%-0z)y-FqL=H#Y&7*Z+asu_r{)u*GTzD2b2&$K_u!_ zm60$F^8S+XJ;P6@a1;c`jks4D2I2yb4k=MY#75osOn4|a^2`kWc>={7b{QSiKP7xbH7l3cAv=-o zcYG?QIObuJhKv);t$wM*uX_7Dn2`cBlN79sq+3qMG4p?&drQ|wVf9Ir;OR%ID7Xp+ zuWYz2^*M64C@9F@q!gbEgVC-163uaW;0$!ef9BqTQdX2wHNu-J{lx#_6eK%!N2UUP zO6cAZ1BZ@WTte`?i1m>ezB{95|BP5Op*lOpjmn?8#OCzzd^#G} zv&?cG!0tdgX?OTex(wGrh~4m8BuWN=;t|P_f4Q=npC@|7|TrTOirScrK*TU5$72=a&3TUA}lj{?!t& zbL}%Afw?2MgxYfR%&RX-@G{lx7z^E&Vep#yOVka%AX!1Cy1$J1zySei$L`zD0i%QXzouC*OByPUN^Z}=%+@KH>K>J)AWsy1xg?t6w@Kxn-qBlw z*Z=1Qa8|Q~=#qdi>2e+}IN_SvRRP-_amKNF*bB`jPvqvaa7ov(oOTM4B~DksFQhkP zHyY=46VudBkA)_1kkIE%W*F!cz?7i}ZL{`48yRrESbDCy9DlENN<`4#5Sb0x@72+e z9lzWXtDnbOqw9L)Ezn!M+8ghg%78gAdLW3=JDWGs?8P-D=Z*^b5Sfn2ha-kUI^+V^ zOf}A9?h^HQv3xch1|J7W*~LwQfoMK$D*40UYPCt|W7EjG$5loS$PQ`p09{dL@bbgCO|e|Nc7+*t)mk1u(q>%X6)#~ z?BK&vwowqcD#9{JoeN6e5braZO2H1PsUg&f=O;mLOy`=SIG;QIvK6XXSld&uKS~&g zK%fT2lA}&O=>pXZvsr?N>bUon%x71dfc@2n(5d5hD#?{uwZwmBsKW$I@QSrKQPpac zNP_G{Z@a{+1CJc&jEvk|fW8n5AQlL~)rEl7j=gL}a6HwJMvU6c+K?pYUM;&iih+zf z$$_==pW}e(rRH-W{kV(iEk$>wxn4zh>zA0lDp_{aLCbTem%ord#y7&nou%d}?nV2V za@kcs7fBAP-hJ}L`|s#XyM5z{c^$ks@xFa7g3mFJqTSc?)$c#vurtldEz?Sfm`P+x zKjxUZMABw-(hg5t7r`z`0;j_Z<=sPQ)(+{!sGeYEJKym0XeJ+%QvrD$PVRimwPU*P zzN2X*?@MOToLJE2@n;SKNf>VZe;i}I#SCWLM5TgOy!2+O)>VTjh}M|6xvQO+i~lYJ zqMhS{Ht+`$0wnULp8n}`=z59%!h8+KkS|Bx5jig1Yb?3}Tg6y!U~6ej*@;8M4gaHP zp=^vB-4+3c#?SPH4%#|lnA-31tSEJPv^+=O*-5)p;%OU&^}%8N#hbX4KIj;5wBF7X zNylhsjcB6!&62zWkC+BK?E^jP5K<-q4fkBWjRMIMLE~#_efT4jY-Q`gEq&Qw1igPH zzLn}$R5?_ZGjhDeGK@ZSWYko8HH)=$+72DMky)o*AD^*S)+c4@n^Og#OG6*_tT~ql z-FS>F%pZMrIN1D?eDRtlfMx|oGvgOnGyny}8>;{0E zt(+ycuYaXYSN6Z(&wlH)`zK=zq0Dx0Ex0{#9|3=^Scya>Y}~DuPbSvOi+oZPZ)A3K zIz{6R@On!b6)gFlvWa7fKC`PJ4b;VceA@jxBj&auf3j^HCC&Tzk-eMjmya{Q5xZD+ z2I8cTkIx9kt~EE&hX=o=DA%67f0dPH8Ex(9nCUZbWg9KaumUol5yKGX6=yxquiNMR zQlMIJ%9VR$bZ^bARQIY+f3KJfUlM=6IbC(bA2myw><};~L|=H?DjC(Z+!|G&_YJr0 zZ!q)BU@vUAU2$B=()j#+VQHz=1fY`r6hr{cp0`0JXkifAxw$!NseGL?iZOt@ZrHoI zAZi?p9jz|>w8xA+cQT+Lu8DwZbWM+$*F4Ct(Kib67NgETM0o+c2B-!ebgL%lt!%3f zo?;Uj3d+rMQ-c2Lnwn;okAZFD&VS(XS=%>XuEBmwJIE`;!MsN*6}*+L?FJ6Nw2UN6 z)3c;_r=rSpZgy^}YE|I5UE99)k?vEc_=QPp8A$#p&cv*Vp+@gj&e)SeAv$N%k57{h zSj6Pd(PrKs^N^9mD>B3{ER>AQ`s%Ry47c#}_(#-l@kC|z<3FlQYE}6B;*o;n4-|R$19~hNYpGH9cu)d`BZ;4U!eTE{jrdNAr z#==XLx_KY}5wy?AJ69^#&ZAtNHjYvN^nX*j1rrZ(`I-pp z#VnSu_8w0>ne|MPYf!dw5X|haK$0-XVuDdY`(oKWBW=vH{$!Xs^cskf6R~sInEDD* z`IJ$d=D1vJ2APN3BQmC2ssLwzDGHMCm&Xz$+ZYK#!2Co!8q?JzqA^9f>k|dxa$ooV zC#l2yuh-X!P#?V85T!6%*Yi?j0axp^Y4~Jz^r6q18>AUD?4sqVy7;whZ6l{n8cRxS zM_J0~NZFwM6B&B5jmKkyHIz^8?%Amn+*Kdrh9QZ>2df0d0o_960Q<`{2BrU{22J%+;-+=7+H`_194ez!tWs&yCp08Y6nTL zogV*NWC&{+Xuj&m*nwmC8%#^j1yeft8Jv$OD0gQ{DX7}B|Tqp_StH zaeespM1~2Qrk#JC(o*$4V8pe(+j4)T97_LDEp0b%UWm+pcT4%>jH%j^(o${X!han1 z(;Gr~&(1;AV4gca>F*MUPRLnD3lLnB8!%M9+y2OAdii%@;R(8h#A9LUMvno9%G250 zx8D*=go1?52dAc`;2ONZYvHdKs6=Q{76Z$YUtPy5f|w_v=*g>~&pf&1HATnRC!VCP z4{ty+@By~X-6RPb&3=r2t5#akR7}lh zHl%s@DdRG@rKor(5Pd5{WOJCF-wbv$%+m9f<@frkz%6)uz%3)1Oz-sc^wr_%ua4cl zFXIa|mv~iJgI@iHRz(K&QA0-utww!Qf1PP zpq`JioOMI;^D)RdOsnQMv_dWj0y|E?is^672eLKrf*cFP@5v8|tmImn*X`_|8x7AY;EQZ5gYm4r?IcXOJFL$$hx*z z!?i9eZGh(PORzb;F3T2;_ZiR;w*Zf(c;BMhbCNA#4~%~(cDcMp&9 zNFXHipP$IadHve6(46(%7pxMrt=L;j3)$hI&A2bWT3UwujT(>9D__;W7p1EHDwxxD zIV>$XTgo}W=L~CwB5OlVu^6GLD{f;1;p*(w=TUJk9E0xv<~=>9 zu36K-yrU4D7U?lk}CJ)y4~&q z2}6F(2>CzA#{frXDX+pIZjM3-2$;b53LNE^B{mqbvosG??07Cvxdtjd= zHhF<3i_2Fy-&4eH}hSX?3Vhju@ zFM-{QIdK0fUR+O$)=7wEU)oWo5oRNBFKme4*fLtU;m7<|#*lcj4!cRtaLr11a*5zZ zoANW|BZ)6@m^oQNL7+~cF43bE{|A@T^V`%j_H(Sti8)j|yt3oE#_3|Gl5>nqv7)~b z#-aF-(nDN}+`QSoo{T?vfm7?PrVzdEF1zJr>2%-f(AQF>v^rGFjfaSshp&x z#R?5)pjxvsmW)uhLYOL5eU7>(qg{1T2hL)WZf~hFB<#A!KvYa#EP}iwDLR)Tg5e;% zx)oMaTFbISk0tI$w7I054KpJ>ma3uQB{kb|^gmBrJR1r@&B%OKH`iv?d#PL{*iJIz zkHh5nM~^r*=SOFmOA8B@v^n9Z={p~wIi8UF-0Gt^KG|9`Y)>HN@rvzm0O2D$@}*Al z@UYEMBG%*j_|Y(qBN|kqW5Qnm=d45AIr$+i)KFlVr>K}m09z0S{h6eVqvQLm(!w69 zP1Po|RMxkwux0{2Ke=PxQY0H}Cp!309@?$dNGz3TK;YL)LLBAu1VN$gR`@2W%1U1o zI42=MTwuGq(uW(X@fc!>k_H+hb@)i$csB0?f_*o#?ojlqU;e^#YuDzFqUZBXyI|tU z`R{v)G8a8y$^#_SKLtLNBz!1}5^_a-FfGPmQJ)@?_4*50$iA9# zXRz{yE**D57G@Cdeglb(U@>iTtNWiVv`#u2F|%VkgHW1?P?t);)`Go8S7@#z52EJb zmTK&t9zzCe_v?+!f2aWft=X+rdaQZAVs~fuxQFio`m2E;Um02zo06~mFN z9ZcU^GW4a}gD0yWxEM=Q1+?%TuavKK;#2&Cb+u$G+qLhfW7u^|2*q^A&|co+7BCQc z=1x|mQGB7j;~S+uLupslPT36U_)VE1;>hK@-suIKiV-1IG%dub*?#Z7*K zKH%kPO7exkIv1hOOa)dBX<{>dn9GIOX;)F6UJ9iioqS_Jws|*v@4S!M>W|p_r7E!D zgf}*-sLLqUKEIiR^Y@6mIrg#ylnt`3$bbe)`%|91+8=9tF!VKSbhMGgl0zT$MP+kB zulW66v0RV8BSrQYY+n2P9Pc`m5!2``jr(E9aEbd#8*XwxUtV60JQEtMl{_WDm8dF* z4>Kjf-{H(m2Mk*gPX!=a?gxT3``sX5x`p;f=XNYC=^Hy8$kzEZ;p-FcjlMKS_>T3Y zJw*6ny5Hf!bqP(oMI8LVvcNvhdx&2))MC~BXljpP|k{X~@8bqPK1Jn;_8$4FZp%fHoxo2=bd4up|Edm^=B{^)W27R(*1FXrXF=sm(2>%XoVrxS|! zvVB*t=yE|*Lh(V5QU@xSCe$)tS2;}wFiqmH>=FSnkN(aW3edsND&?*6_W*At5`X5^u{Y!jE3ygG**MOM#Bx}H-pqATah!=`Nd`p2D5(r* zOD`@;?@TAuHVZWgWN+-h>uXbGT{Vtjv24%|oQ1~5#0{JvABF0siKFrbC@8WJ)|h^| zHQ-yl;ZyfYR?tQ1WL%EJmitjzz$;cKC!avFvqRqtCu+ETZ z)Z+I@4^hgZDML=mS~1McO#)PQ&yoMOhrHWgnVj&nt#~<%J%)k-=9kWSE|Fx}X)|99 zObd4LW=IV6zv_h5H#vd7`XDfr(`%xBCA>`&vBkf+5b;+av9&^07D?&&p zAcXO+@GLCdan##l%dWKM{uh@hLWNy2Epj}e3{-aZ{R1iLxoD@SYHJVXW7sMU>y5?# zY%!<&HqMbr40!#e^E+4gI2&H)tM}iN2D2giVYh0V*=Dcf8eXe4-)UjNo4dQCNgsB2 zh`m{TCgx-aAg#}+=#}X+F@&R9Ls?`*4JocelSWC2+@)+F@ltBtgTz)I;+=8 zem3#xzP+TVg)*88y%}FTZ@>g>cs?}zVW38DPR;UKud=hNq}Kqu41Fsp8K>#gF(gYE zM#Ch>OX$CvnwmQ3^uBiMSc|0~jTt1-F?<}(AqAR@vb3q`p377pCoz|8i+}8StgEE|iN3zbJoeY3>ha=yYe2&J z`-rUf1$3DjnX#$3hR9t4VVz`-nLS@N{P8_R42rvq@^*5e{c8u;KdSQe)K7x><+~NM zVb#-ziElyoM}^F@i>zFcv8Tb}?uLLD&7!&P4F^4v=eYA@Nx0>7)*k=y1eY#A$y_Oa z-l+b*y5vl%Ql9+&ay?zk?`oM~)M^~8+mbu_K0f^z(WJKCzf3Hy5A4u47Q9~?WCzFX z?;@Orh~K?}o&@#UWn10r_0MAPoxWAWr6aDMVed;7f6HVEDhu*Ve!^@EATM$nIlK1y z8I%{dP?DJ_ZRy9hOFARrJVl-e{WA#f)`m#m6(d{7!S<|V0e5#i1OW_H7*uB>DnvGF zm9a4!cCrA39PUUK&aB2hr<5lDxX#~@QcOR}_6xem>l!#rd>?4`R*!oYRZ81bQ@T%A zqq#z?alpX^BR$eLr-fG?9UKt6Tuxy8e&E|e2(Kmwg1Z2*UBVl&S&h78?Njh*0@o9k z8MXhU9^~!&_oq;4fXrZmddW;o#~`0RH-Q&M`g9=J2B-u%torrhudcz9?XOOPqp~oc zX}^`Hu~dLyx%DNRW;mY+rdK=$@~bs9HT_|`Ra@GbclAhO4bTsO{2&bCFFG9`Iob+4 zwEZr+K4Bx0)bCL|r9qCqJKEan{~p^@ifON*txm>B^vI$LJ5$y@X9EneQ%|gt)Rs6z zT;+%2M88S5Zrjg$2O#E}d0)1=gd<%&)P9y))Z#u8R!{`teLyH?dw5k|f$FySJrJx@*I~ndkmR>BS{kk_0j#-)sjDf zfkfbuNE|8JQ$}ke{DCwz)4x56cGa+^?_gQ3vd}Z!*)dPOTXpsXb3#LSU_3Y_vJS-s z2=VN(TDCU^wHG%CIN0kVw!OaIGaGdK*@|e(990w2O(u_No3m2I1! zd9Z_XZH9tiZC@)A%>GfE!~K>MHZ)6}JJYzu`O8%wAYJmI?a9pSeMO4(}K{~_ai5RzM=QILx2(*db&du#2PtJQW%`ubv#dnwm9G8JjLCZ$A`cBG7W8;60NReXbrXJZ4K74!Ta zr{hl(X%4H4LdGw|4buSiP52hOdhF>Lj|yRq7j5?XY>7u z5fl*U2J(2$ux#^y&Lg8CFzU(GgckM1U8li2I_K248^vF##Jk z)ad^8fkSK+cNp6}fB9-FN;kn)T+qUsO$fs@h$kzK&2lz8l=oq%PmkZCOo@T0i@e5q zHsy1U_l#=)rBBz^{qx)M+S)bbEp#Z#VzfUpKXJk}WbxP=dE6~Scc~zq@Gm|hqFo1{ zxgM5lhs`~WRlXXc+{cXfs#+IhYob~e3G1k3jwK$;;?3Cizo;`n$pe2o z6Cjri8%6c5yoEf?p19l<9Fc4acYg)4J}Srw^=4;fkyx_4`&C&7oz?A*=H&ZX(0<6# zsr~ByLm*Nkws%|8jY^-{k;`AMYK_z}n+bJBxVPeCDv)%zkCf1}ExSzxMTdR_&rCcj z4yr7n7tCFV)`nhQW2yw+j#Pej{n<{e-P1cH1Ml0vNGR6fot?Iz(KMkJ`icEv^eMA9 zyTdRbg+`9oj1O-Gvu6X7p%6c&yyx->5_|=jA4(FKxp8|rxi=@gUb{cG1RDYri=?^8 z99^LM6ghXbE<~(nVS3F(BC_&e13_8ZP+Y(`iIjEZ3nZML-qKC08R(yfG=&q8uOm1w5ghwrn5__qM&a0pWqpjl3?dBDmo z-Zhns{@3R8s1d_Nm^gze7n{|`?f9&QaE1&eIYOqDfiE3u9kGmDCvg1 zN6~hFESAkVpBbf5ie4)=e`(Y`yq4;-H7{s)F6f`*f2o$!dYRWQ)o=I}U^L^ysD<*g z!1|X~6-cSET2A_-XdBCK3(sW!_xlq|H{MKnx>1_U%+Bcq+R>cRiBa?YOs-_tb>4IX z687Jv%u^K?4oXQsvRoNtmuy_oryQ_%a4hUUy%#QxO&|{iuxgA2rZkXvvmw4{X@NNg zUcyXxsyzRM?5{{+`Lq3*D@@xM7{P8^$3Hz-y3_SvQ(JGJG)V-x8;8C!R#&F!-|C(7 zb6v#}#i{Ui&}z$rJbo3l)0vv*pD)d39%2b&?_qII zt2%KD>0)u)LsW5Sy(pVI@o~yoLk@)<9^R_qPpp~?o>RNJ+%wJ}NqlgewqrduK*#M~ zi|l+xWD)L$S;xLj{UWQKZT%XeW}jT*%@dncO6C6j3em=S#1C)I(QII{kwzvVLmz%i zveAoe$Q`idE?Pa5w>I}-70tVo9ia?QTVq%7qUjf`o+3w=B@c#uGUkH{)DJtdpH#DC z*~6XefnVe8)AC_A5K3!y$GS7-TXkSO^JH4Pd@u~iA3(g*Rn)eQQ{6%Ks7_V;?KEKo zJ#7ESWnq?zmsm!L>WX1&h9fQh>{i zur53})oxAbLacu}n52r*UN@fQMW54Swf|(aiPGxQE|7443tm`g!K3lU@OytW@-O{M zU)WH*)jFD`Oje6Gq)BCA{n!+qWPQ^7)oh!FRv4Q`d4dM*d5v}yTA2;fXivYXAf7D3 zPwYWBrZXiVFHfE(4vrI1-%XEdnn+8ML&^p1IgO_sB7C0+%B?OizNJVV;(W{ugo%A+*jBf8_bH2|S;HWB08 z{kpZ`V|tN_MEU~BCb9u>1nwL~yY?XQnWCkpxv46-p%J17`|{8nS7HupI169Mj6tu; zCTG*9d~NCkpVqF1hRcKY_QHfKG5&C^(C?>b@;SLS=;K{{KX38es+iw(F%NPt$^@#; z38AQ)w#E)iJJ(k*0`?H;qnpHZg#r`toaD~BKxOB)pyx%Se#sVv-Ed_SRU(J7L+O^2 z0U19+g$Wxj+04d1-$~aql3y(Z=_42p?VBxYmjy}iF`P1C95E@#Np8>cFausjJ~s(^ z0QHh&p~hfQ?;CFz2KAo57oy~;m#%sM=7VuvirfYR-Vi}BYzc1;1iwDd!|N6L#JEnj zSp644et0q})4;m}q)wcQx{&Jm0}OKCINnbT40nEkWpE3YFD15tSTvV*rR`MGBxlk@ z)(fo26G(oWU(JfFr_a8bSXBHaZeT}8FKz>%(W!wM!6^ApAX^=1SZsh2B6}m@QanIcCNoK7LfpT+!Ke z91Y2rROq6o`8gXP-EM)j%Mym@4$Vrm$T-wMd+V#P{ymmI$eP=vIeO=VXv)2TxfiY2 zWW3nmE{5v;Km%&xQ8*Mxzr`v1#aaRuL2_YgGk$eXTEhN3cRSwL`yf{&q;YkZB{Aya zl^lNK{Z|Rw3evl{6Y+7Et?7G#^J%6Wa~j8_uKC}}dx<}r5hTz2uG=&1okAq)kiCcQ z9Qn@(Dq-jCg=Is5n0~*}VtGT5^yb#qUR(Yq1!o5BP}&P|Cgnlt{KT(`l{#Z}BNdqO z$wNQQca0s}lrpKn=uURZE%4<&<;kbGB4zk>=6fYF(V3k?3flkkytTPYT?`KJjtISZ z{fgnk3ql?0f45hrb>tnz-X;RcvLz|?j>aIOJ^3yWD$B`0I>?A{_@y8_zkhFA?RtKq z3cH3R=$Lnb$ z__w0RP0+%4gA2mmOKwE#Ys8Yb(Q#edR+#G`Yt##L=oTGZX#BOqiE6?E3kM@)Mi9RXUf=#`3be!ck^x zLqkJLt;3AxEvr4ZxXAMI+N)}-eKUy%&gJK=`X_q5v~M_!UC`zO=SkXJ5^0#A3`6T^ z9^PI@$v@66GOsg*)SK7jw(N>^C0nhQNpibJRpZKIkLsppjTi*W9-wdl*s$Tie(yuK<_AiOEXa1zUjS#B;%s<7ISq zboA(Ygb~}x_B@hAU5;K?_syKn#@cNS4Me9+12l{rM_O2E$Gd-dNfK-aKdDC;$J!tX z*4~>iID3LyilRel-e+8zo!~Ub2yR6219>TMl4@=hLw!_D6dE-k3WrF+iC;v9{2_i7 ziHa1uxWBCc`)aF)d-_(_UQI{r97Q|v2~g}{^z=AHmeh)O(J&*$+|7r6N+gjG1{M= zo{&>GGdbH4=es`hf4EQ_`q^$Vp5`gEOutAO3xvme=1=o}YzgG*+$~1)7AyQ7R{xG! zRP*KU9Y!?IgdjfiSmwQb(E!b71r4xJ#_XdEi0pIqo8vs638zw-D6INBvm%c$y;XcU z+$8WOwkH@P^uQ!j?NgdMT@$`!6rvCa{D_M1p2%q6#ZQZd_=9GgWo|Qw-}j;3CxCo* z(G&IN))h?tXzjyr9=tHF!FNLzKVYgVD30e)-qzMu`|n&7@$==ORseazmCRi3&^Hts z8pPkt5fam!MET#2lEMYjb|*&SRyBW$#a%xnx{0{FW%MBKzTEmUn_Du*lo(h%O7R_dCzf#FZS?K=qqc4n zczqM>eCM=Y5Z0Lx@WEZbhTe6vaZf#GG8GoL7fujXiE{g#!|=_7CZOSONr#8A`cyhF zJ>GCz=3ejz;(S2p*b=rPn#_|21F6lLvatl+4D|9`SL&(~f_+tndcus>DjMM7;F8Dh z$S9eGdfeW4Q(9Azw}A=q;S*23c7~L>PGeM0 z{q=|ANk5JM85S4Xx&HPcS0d`%P#W2&wDSA)3A$*Og2q(fr1(_VMHO@6c|!8&S62}C zMtN%q@Q*nd$nOCQ3Y=G#Ar07_OD+qS)dl<%hoz0os+e$3Vi8R)Fn5WOJI<%+uh*#h ziPuMGc@IHpu1qS4+&$CCE=J}AKj|>MP;qqgNRZ&-Z*8jvRlMGmwy$4Pu?$Q%OFJZFMZo+n^FuHEchermHY(v+?L3j^H*TAG(UOShU=8n!j0aB+>>tN&DE-i zp(PL%djGTbss~0@(t|a9oJ?f8isGFSSj;|&`lg?f7C2uBt7Ccd!Jz0kEkG~lV}oFS zQ8aR$rnv!&Mn);{sM?47zME$Y?-TJbq-RZ;V`Pkb1#I%4N0k;v_)YN;_?qOGB-&#P z79pfgiYTFzqKX_(cXw5QC7))p%5?-=$-hKOa>fK2AL(^v>xg>$&j=BvBGTAikU6>-wR%AbT0I5i*9F=)%(x*V_J>;U)gJ^e z!pIvtdw&DobId`euqUb9ev7V;T@G`EF2FWW1I#4`rU@-!(@5F$73x=v*SZs8I0zVV zK~c>$2eHxz@*e|_46e0A5QYpN(t(cR@)k0Ht(m+m#|cWg|6ZtO9VLc5y=OI_B_n^| zACj|SY`zkeBzFfTGU}HCe5j8t^i(vTfX?WbEZB(?{gLLNM9>rBQo}>-) zc?|;&ehq^!S(S^C30Uzj(Mik2E{|-o~6RYY2O(gm8IbLHueR z3ZlaUW)8dT7W+r>TC9-M9w?eFQkqu+Mo>xN?F6C@p#>GA+>`(wP1ke1iMx>YP5uYH zgherNjG%a~tgM+Od5@9*_Cx5cnp;5zNk;Idx{>y}X|8;{{KpsM2I69xYTzLp#VG-b z!*C&1_!F*oMbw0qJ{mM|j=gU0$S+_wC7aGY--NK>rJzr$dwz@hQQ6DWRc>aU5dcg7J1cSqdA-d)v)2)6Ar&C>|M;utxRDHE2$``Hz=q z598x&@E0*ii9%j)C_=Y8|2s$gj7eA)P~^PsNkG+jHI3Q~f_V&mZcGWw*rRUZSD*ZY z0H7z*fYh%B`;I{#l{xMwi8ogH{w>&dO=c#dzJx|9+!?g=@&-v<_P<3dXAjy2(esbA z)n@3HC=W??Uu4SK`3$E7j8dED_Nx17(XMbNk}K~NvdVJ>#+AT;kCC*#ht%+ANzE8P zR@{`FOr0dEn7CB|rhK~6RG43qF@Qw!u_ zXRn!Q&k2lmnL_;_fTB%1>C1KCTq?c<9USyUkjcb)e=uLc(O7)JSV@o_u9RlE!GgJfC)LNnHlj{NeS9BO(2U+&%3nl42|L^OLORvN0JoR zfP#YSFsn^6K@WSo)M-yc&IiS#;5BGLh-9q8vpZj!9-ok2IStwtV=3pTccZ~xHEhie zk|Ql}(@Z4uR9i|kU1{;+($dl_duT3C9ho3##Jr>^F6%~>0=S{}p#4l0bN+g=JR^q| zRMtb_BS+LnM-i*y$a|s)ALyFS!d?UMMjky#!a$-72QYFTA3OfrS?FkKX+3Ky$X*_% z42i1$z4NRoi-3#@Y;E$*lq_MpER53Gh)fXZgIzb5*%Z{ttvQ|w_a5Mc)+WvIRDp5Y zQF3Te)7WVWj8dx>RFQ2=vMCgVP*25~?FdL@?*@aHD@oSGsqxNWZmuDUcAZgIw^x1% zrZwOk>WgHW(rTck#1xbMaX~7AFM@bCSVJ`jpJp!OUZEu zfyyXs@{E}NLbGSSv=kPa*tASfIvV`xPnE7>2nk^o1odiuDE&sq*+^Myqq#|O0UYxr z@5A3olBB`>17>e!?}zC^;eSit_A$>m6H02w?@PPFz%VKy#|W1Q5%YD0Dmw{ut6Ph} z=po2k)rfDW+z1L`rH%%3=3$L8=vn1h{~H~}i?-SVX{YpZD@eWVSlh}R_HSYNkl4eH z6I!~I{yT@jMn@3g_@^14c-4*R(PKpkl`&iqC|LVMU@NfVz?syR*$7+wBm%*~8*0-O z-&}VJE_Q8M-`r{}mXU<@H(1m}zX-DTg;!XBC@xMuOJj4(jW|8q#pcvi9z_(@0In0; z6Cmk~4=wL3U86aY`8NrCLd=*N3k~vz_ELDN>b}3 z$=D>>Q={~`!`Wtte@H!Ui^9<eG)vQzqrCb(+PYY5V>f>LxG&;! zM@P2Zxo;NlA8h`OCM6rE{(kk&ca=u&LKECcg8jh2u__~X2po+(TC&0NcjQQ8aS)lk zvZhQXSC4?}IR7hV%IsRKN!xCE6Zs6mLxI8+-$Oi zAsF1e*?>3r+B>4=vy0zb-N4EtM5dFc^4l3suL+O(-EDn@H%uxGlTnZEVC%cReZHNT zUhg>n=1Z%9MoqsS%r({uaD*?c5$~~@LMTYs=VSF{_v`9l9`{;@7eP%;SX6vmT--*H zf6dYM5&MG<#w1IHx-Jp0V5hNUy$bl_V22Wh;Ci*vnpNu#0e=K_fXE8DeWuM}Sn}&^ zGg{EguWrG-$*(`I3{ZUDxV^rbE*DVpWFj$*&`sR>M_jwSDr>(v_n~3P&_&&M*Gke7 z)%Ct(>ucs*tps+qJvqB-=81`ZC_-}n#G}X)Fi|@DID;1AdliG@)rdB z>*_)2jQnQj9qG# zIoJobSa#6a&iJJz^4*FBt9tV;qA zyjjRVp)$=YIky!M^`PwO%-d?KZA zw)3E?K^_HI6^$;mB6~?0u-BDEYCOpxUox!{BW@S1Zrs^kNj+}X67UmT%eO&|75^0T z{658Ez2sIvEV!I({zQ3t*reRT?xbtw8(gR#N*(p%fNVL4`+#Oe{@M%2%bmkAMWLYv zBll<{YV)s?$;iV}IeAf_0Lgq?Y1DZB+S=NzSo$W*)v$fpvEcQ#)Xb%r^`+u4$^eVy zT4JG)Pl5~q{-*TdsL$eSSoaO7dzr7)KZLQhP z!O(dZ8(XY+?4LV#Z2Gs?W7Ukpr~c{?V}D8Wzv}$9BQa^2`ix7@XeU+YHz6jUIznn& z!bDN1$h%@w_gWLTmXB|(zdR1}A%oRuqEfw6q+y|{l>a=6&wLpOV873lg8}A@0CS(A zsBswXVA@%{Z8rV(@D9%waD4t}K2#G5faq+4-j@JKG!;am$Fd@aBARGeM(%FmF*ezn z8J0)CeFltEtL-$fpGqdBuqTiYn%Fh7MyLvk7DT4r9)6QHvq?W^I$WH)Ga8Ki(^m#| ziMKl{!eY(F)Lk8phxlQcyhv`!+5E}4GaYI=^Db!Uf+D(eo(hY1uGQJWS7X5S)_?E6 z0lS{4EG){x>fPlsADdwWWW5n}02Hmq7DwBs)(npICh|(kI0Yv0nw^hgD*Gi&N zEiu31{Sce~Kd_rn8t0rx94t4CKMAf>y*V9rpFx9fETKF<#QwZ@ionAon2oZrav{5I z^7@DyJ<#tRouyLE(L;F#7&+M8RPcFi+voL9I3d`z;Ds#Bxl2&&%}*k7uiu#J{O(`V z+ZB(LRd6LzsG>3`q@1iIMI!n(rkv1{4}9du(Jc^Pq)nI8E+iHlGVj|krc$(cWa?8< z=%QrW{P}`Vr|A|4?%Jkm?) zhng=phGZ(qrBNv@;=*IID|>72@fl+e{@n|17JHmG{y6gf$wLcrkot3g=5{fDguUG|n|MTK7xkiBa@5^M40d3imjXkA!4h=AXU+m+BZ&uD^-i`}Sj z(YeFbK)-$yCq0@MZp#?&1kU=91qK&y~z`^^5Du6I3egLn;J0kuz^K^4>6=S>MzYPOGG zltOs#?@g8a;qLD1+jeG}IAsyies^#7hKS(r>bVx&Nod{0Q)i}-Yy!bfnD;z11(*(m zzWcd+mo;5HpKnm2BrFiyEHzjF6ZDsrF>sb>KX*6!z(y&yaCojJ$CXJwd#H~S@bIBs zpObl~HJGtkh>zFR0!0aQX!-aX>!CJxa#1a zmURGYF?}xPox69YD?erO0e^$DM!(R2MMHGsv(T9M_{~2#l@4cC-vdxy=3et_BUXfK z%&wOEEao(T^f53rbR8aYIY2_Rl$X!^z*g8{H0?`z-#(~voR;P*@v-dr$j6^0!y~NN zli^hsemthyu_S@nGdMQmSH~Q#zW(QWYvnl=`HXk>l9OReP3#AfpJlF?`lZ99jcwOE~*J=f~yk~-|HS~#^3CH|4!_J zT7zNcqvSa;&>Qk@NS^KE*>Y`dXgTwMFPBR${5>7l55JDT^Du!E+oMH{5dgB5GtZ3w zGMk-#TDt}RQKUoDVIcGA?dYl4GkWm!IVl4nD`zV!wb=H6eOhR^=+&@q$2VJ|r^ln+ zak%E8R$8mYENQ@ELS@JZ#IHc5q;mSYLiHLC9!&@8E`O2~XV1pi` z54X#YU+Mc`96s_izOczT#%_z3w*J4aQN;-{~}+?$|wP8n-h#{TI<*dYyDCRq~8rDyzwoNwi`b z@5^oS-Z5<*Eq^-8@>u#tauZ!Ofa5!jESYpGW@iYg5k5Z)^1 zBumQ}_#bnF#=p&V*C~tnlpLhssbn|o{o}hJk@DO4kiDszEkD?+H!qS}Lm7`#LCia= zPyH0-%RhOShntUu`>u02!&nA#)Y3}LR;`#eKfztJR@Mw6AN?!{mJAzF4vybj0Xt8- zYyl2XyA5Pa=95E$xlP1@9Q2j6cN!x>V^jo{*7Ut7TBBDX0t&~|=1h>xmPnu0iwgh$ zL)*j>z>&^X@K!#<+JPfm(mjb_*NavF7{KoAZmPky#Z=y^ZaE$`|?d?UivAJvN9kQZ^?Xq<3xEKANqT8 z{uV*5yZaSifW`@}jk24=;#TP*fEcrEVh?VE^~n*P?~K-Oy$mf33~dxpU5Tldd+~P3>*AloWmY zN*`O$B-{XhykC=gm)Rbk;bUupZQKfba`q#z*>K;htK^_<#-73-1F&#nY0=Q?xhIg)- zJ9pj*TpRW7yYJNo@2+3}=HHJ!HYN+#9s@`7;MgONJZfLNcHJRd^8u*OG~9I4O|~^_ z*LGh1+;g8l`Q+@~aY9r zFTC*8?Add^hyHp3<8qs?uP^l%ICJK#Z=k<#puZj!D^}EwBM;O8A0q!8L|$h8Ih_xu zpj+mjgSh4+aLdatztRJFF_n1|*R=)h3*hdz-g>(-t~vh7E3Zbu2I^0qG9?|h^9Fd) zMOLLuotlX>Mllh%rUO_53TMYp&T5B3!{KkoXExi^sX6$hpzHv~_GdU|{=*@yoT-Pf zGhq3n{h{EI%Ng!R{91vi5~BW$nKN_ZqyG#0U500i65^v-Pd?ew908P*tEWEkgh0IP zh{LI3BoldEJTYzB{=~$jx<(veQ!k_Z6UoUFkKx&Y#mKNplO~@i^-=z`^(4+i1r*=_s>SqnuC2vqe;Nv|xCtL`6l5 z!9#{*z5L26uj9F?c!t2U{st3G&%YAeUBT+N-`*fze|?R3=GkZMkdugw?SCLLGHNHD z|5IVWb9ctX#QyR4xN&0fk|p-lt6vjuzWElPy&eRCtBmI}Y}2NV4f||3ryI)Q^)IYg zapu{jOU1nT^M9K$W9C@o*V@46zWavSa97!78_-V;A&j^(N z8LzHhz2S}Z>wA6p;U-(xuBa^K^SAo7*Q&2vwQ3-q|2dv7o_J!~dE9d=Y$P7%x1Cj67mWJeAhF$40Pif7zlJTI@X+FZf< z(=UDrslqQY?G(ZfeG}8$*`|m*b)S2$dBO+R1o$PUzKigrUqTw|O^1A*5V`f5+;jCG zIDRYWE)k9GO~4L#k4&%;pyqG=hhufXn;--58eY2Ay{I_N09m2;}G0$vdvsJjvcHQT~=9hG)sefYX8{jzdAmee=XOeIzZ{@gi8@6#B z>~C)W*#2{_os^zYWAqQgzx9xPmshK^0*4o(&9eyg_qJBoav$ukMLgtr?@sCQdGLqPgJN-LDZ~S zQ}pcFOQ257Hb9=`56Y%kmQ$gjp`z&>cZfUgxLtJX+C|(maI%Pu9pFm&)1XjI!Bc-yFd z;5s|sW5^SSQJ2_u#eiX&wG8}^~qzZWiC zw8nS_>~_r9v5(u)-o1df#~9ED1Q!E+U>ASUJ|B8$WN!T%`Ssdq)2Hvj^VkMt9N6wI zF0!Z3m?6+k&wW1SF!RY-jq%Jk_2(CVTlC3U4$s%(Fl$yVJU&Zr zx)gjC2$4G7X1m$gK3z4lYUULO>K?e_;(u9HPuESk;((8ttg4v~=VaoX({(eers((O zJ$Y|qdpq_Y0Q85_AvXl%`YGTcll>Gz2wPbIx;+SrKYv}?GwA7s{uPSTHmXDp{5C7nvjT_$=n>KA0_%?6?+e3}Gqi+8?>RO+I?IpwxJZF>f zeAMsyzwyTUf8gU1s8iC{2Jt(-x3F(F_Y4UM*AQH?UO^{;Soiy^CC_z-2?t8 zfoGmaT`&f++`+m(<7C8-p+)=~V*gBVmd6=?q*H>UFyr+mjJJQv76!tv$ zqO@ng7bTvYJv$4&MS*WWg7IgZKo(d4n#=JwbcJJ$z$-@l=^up-=&KZyCQYJk96&lY z;8`Cbe$;c3L0e=C?>S(=z~4~z+40Rwz%MNDy(uUD8?^Yp$#@&_%q#xJam2qJNZ*gM9a+ zT`bV#V%wbY-wVCRL z38Ucm-pw`>;;+eM(W1p->C$Dt;#v0=bdUVvk38MdoUfxIqqc>HhHbz%hwt&tRZv!h z{%^jo@ou62dul#+wkJ4wvZ(FRhXy3k`m?pv_B1D4*4SuX&|CSAH+qK;q7!