



  

<!DOCTYPE html>
<html
  lang="en"
  
  data-color-mode="auto" data-light-theme="light" data-dark-theme="dark"
  data-a11y-animated-images="system" data-a11y-link-underlines="true"
  
  >




  <head>
    <meta charset="utf-8">
  <link rel="dns-prefetch" href="https://github.githubassets.com">
  <link rel="dns-prefetch" href="https://avatars.githubusercontent.com">
  <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
  <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
  <link rel="preconnect" href="https://github.githubassets.com" crossorigin>
  <link rel="preconnect" href="https://avatars.githubusercontent.com">

<script type="importmap">{"imports":{"react":"https://github.githubassets.com/assets/react-e27d1b3e03961e68.js","react-dom":"https://github.githubassets.com/assets/react-dom-e5fd46a22d5c4058.js","react-dom/client":"https://github.githubassets.com/assets/react-dom-client-1b4a3ee065998cea.js","react-is":"https://github.githubassets.com/assets/react-is-e0b593954b4706d8.js","react-reconciler":"https://github.githubassets.com/assets/react-reconciler-8e99e505c4429605.js","react/compiler-runtime":"https://github.githubassets.com/assets/react-compiler-runtime-4610bd6d3de9c049.js","react/jsx-dev-runtime":"https://github.githubassets.com/assets/react-jsx-dev-runtime-ea55d68667d559e5.js","react/jsx-runtime":"https://github.githubassets.com/assets/react-jsx-runtime-4915cb0f5b3aff04.js","scheduler":"https://github.githubassets.com/assets/scheduler-58b860b049ca307c.js"}}</script>
<meta name="react-profiling" content="0" data-turbo-transient="true" />
<meta name="react-import-map" content="react,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@777f63f87cd0" data-turbo-track="reload" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-e27d1b3e03961e68.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-compiler-runtime-4610bd6d3de9c049.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/scheduler-58b860b049ca307c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-dom-e5fd46a22d5c4058.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-dom-client-1b4a3ee065998cea.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-is-e0b593954b4706d8.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-jsx-runtime-4915cb0f5b3aff04.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-reconciler-8e99e505c4429605.js" />

  


  <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-5c4e9fc574bf49f3.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light_high_contrast-fb37c309e0603a69.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-afff6c53aef9b9d1.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark_high_contrast-c409873d7987dffa.css" /><link data-color-theme="light" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light-5c4e9fc574bf49f3.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-fb37c309e0603a69.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-0f910d8806d5761b.css" /><link data-color-theme="light_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind_high_contrast-a7abd4d4c49ac593.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-5fc4c4a9cb41e596.css" /><link data-color-theme="light_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia_high_contrast-ed0cee9214dedabd.css" /><link data-color-theme="dark" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark-afff6c53aef9b9d1.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-c409873d7987dffa.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-78a2491d538dab5a.css" /><link data-color-theme="dark_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind_high_contrast-c26b63d7c532d0a2.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-a6f60cea68c08405.css" /><link data-color-theme="dark_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia_high_contrast-f66faf28b2ea18b6.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-6701f6218c53cf5b.css" /><link data-color-theme="dark_dimmed_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed_high_contrast-7037fa46ae124d97.css" />

  <style type="text/css">
    :root {
      --tab-size-preference: 4;
    }

    pre, code {
      tab-size: var(--tab-size-preference);
    }
  </style>

    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-97df7784617ce1ea.css" />
    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-9be9fe6313f476af.css" />
    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-62747e27e61258dc.css" />
    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-7a418ea859d1654d.css" />
  <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/repository-72bd7d974b5ac1cc.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/code-4c5c0895f723f870.css" />

  

  <script type="application/json" id="client-env">{"locale":"en","featureFlags":["actions_caches_react_shell","actions_enable_background_steps","actions_new_hosted_runner_image_select_sizes_and_versions","actions_runners_react_shell","activity_diff_file_tree","activity_repos_file_tree","activity_repos_overview_header","activity_repos_overview_sidebar","agent_author_search_expansion","agent_author_search_expansion_ui_pulls","alternate_user_config_repo","async_conversion_coverage_enabled","billing_billable_licenses_cost_center_bucket_fix","billing_budget_expiration","billing_cost_center_list_assigned_resources","billing_discount_threshold_notification","code_quality_enablement_banner_targeting","code_quality_remove_preview","code_view_raf_sticky_lines","codespaces_prebuild_region_target_update","coding_agent_third_party_model_ui","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_automation_repo_mcp_servers","copilot_automations_pagination","copilot_base_model_policy_row","copilot_chat_auto_mode_v2","copilot_chat_clear_model_selection_for_default_change","copilot_chat_early_task_provisioning","copilot_chat_persist_session_drafts","copilot_chat_vision_dotcom_chat_ga_gate","copilot_css_textarea_autosize","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_removal_on_marketplace","copilot_fix_failed_workflows_all_skus","copilot_hide_hovercard","copilot_immersive_task_hyperlinking","copilot_mc_cli_resume_any_users_task","copilot_mission_control_agent_merge_fix_ci","copilot_mission_control_agent_merge_resolve_conflicts","copilot_mission_control_awps_batching","copilot_mission_control_early_stop","copilot_mission_control_managed_sandbox_environments","copilot_mission_control_needs_attention","copilot_mission_control_reasoning_effort","copilot_mission_control_sandbox_remote_bypass","copilot_mission_control_task_alive_updates","copilot_mission_control_task_sharing","copilot_org_policy_page_focus_mode","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_swe_agent_authorization_status_ui","copilot_swe_agent_automation_resource_scoped_writes","copilot_swe_agent_discussion_comment_trigger","copilot_swe_agent_discussion_opened_trigger","copilot_swe_agent_discussion_updated_trigger","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_issue_assigned_trigger","copilot_swe_agent_issue_comment_trigger","copilot_swe_agent_issue_labeled_trigger","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_pull_request_assigned_trigger","copilot_swe_agent_pull_request_comment_trigger","copilot_swe_agent_pull_request_labeled_trigger","copilot_swe_agent_pull_request_merged_trigger","copilot_swe_agent_pull_request_opened_trigger","copilot_swe_agent_pull_request_ready_for_review_trigger","copilot_swe_agent_pull_request_review_requested_trigger","copilot_swe_agent_pull_request_review_submitted_trigger","copilot_swe_agent_pull_request_synchronize_trigger","copilot_swe_agent_sub_issue_added_trigger","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_task_scoped_alive_channel","copilot_token_based_billing","copilot_unconfigured_is_inherited","copilot_user_can_upgrade_plan_field","copilot_workbench_sunset_redirect","dashboard_agents_module_auth_token_check","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","fgpat_permissions_selector_redesign","glc_code_quality_repo_settings_workflow_config","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","in_product_messaging_datadog_monitoring","ipm_ubb_individual_budget_banner","issue_fields_multi_select","issue_inline_avatars","issue_pinned_views","issue_pinned_views_team_vs_personal","issue_relative_time_micro","issues_dashboard_sso_structured_errors","issues_expanded_file_types","issues_hide_closed_sub_issues","issues_index_data_router","issues_lazy_load_comment_box_suggestions","issues_react_chrome_container_query_fix","labels_archiving","labels_archiving_info","landing_pages_ninetailed","lifecycle_label_name_updates","marketing_cookie_consent_banner","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_queue_restricted_pushers_warning","merge_status_header_feedback","milestone_closed_issues_prioritization","milestone_show_data_router","octocaptcha_origin_optimization","primer_react_css_anchor_positioning","primer_react_merged_forwarded_refs","prs_copilot_app_open_action","prs_css_anchor_positioning","pull_request_copilot_attribution_header","pull_request_overview_merge_control","pull_request_overview_panel_edit_description","pull_request_persister","pull_request_stacks_navigation_shortcuts","pull_request_virtualization_image_estimate","pull_request_virtualization_loader_batching","pull_request_virtualization_scroll_compensation","pull_request_virtualization_scroll_intent","quick_search_lazy_suggestions","react_blob_isolate_code_lines","react_blob_ssr_content_visibility","react_data_router_tanstack_allowed","react_logged_out_repository_header","react_query_props_with_key","react_sandbox_future_tanstack","repo_app_turbo","repo_issues_sidebar_layout","repo_pulls_dashboard_declutter","repo_pulls_dashboard_ga","repo_pulls_dashboard_persistence","repo_pulls_dashboard_sidebar_links","repos_contributors_limited_default_range","review_involves_filter","rule_ignored_file_paths","rulesets_actor_list_editor","sample_network_conn_type","security_center_artifact_filters_popover","see_who_reacted","semantic_similarity_duplicate_issue_detection","session_logs_ungroup_reasoning_text","set_sha256_on_repo_creation_form","site_banner_desktop_copilot_app","site_ghca_pixel_mona","site_github_app_ga_page","site_github_app_ga_page_highlight","site_github_app_mobile_native_share","site_global_banner_dev_days_attendee","site_global_nav_spark_models_removed","speculation_rules_ui_service","suggest_custom_property_values_copilot","suppress_automated_browser_vitals","swp_forms_disable_octocaptcha","thread_resolution_reason","update_issue_suggestions","viewscreen_sandbox","warn_inaccessible_attachments","webp_support","workstream_plugin_bootstrap"],"githubDomain":"https://github.com","copilotApiOverrideUrl":"https://api.githubcopilot.com","cmcApiUrl":"https://api.github.com/cmc_internal/api"}</script>
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/high-contrast-cookie-b752d992928a526c.js"></script>
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wp-runtime-81e2b8334c3d06e9.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/app-foundation-2f08c823163591a8.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/app-runtime-633ad94fa06c334b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fetch-utilities-0fb4c544a797ec0d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ser-7c872b58ac9f1b39.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/tp-7e9817cf5c068979.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/environment-55602924fdf21863.js" defer="defer"></script>
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/app-runtime.bef03fb24bb03be8.module.css" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/catalyst-52ed81112a548e10.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/selector-observer-e8810f64c443fb9b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/relative-time-element-0417f617ad744a0d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/by-9da36843ba9d191d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ja9-9a1160b939f2cd52.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/3h-55903cf2303047ad.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hk-f1498fec45311acd.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/jz5-7aa1ff0a0e750f41.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hj-1d800d09e9a8720a.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j0-9697c1c8f5cbf523.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/github-elements-e067f5c4473bffff.js" defer="defer"></script>
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/element-registry-40ea91c5fde7f30c.js" defer="defer"></script>
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/runtime-helpers-5e0b3ae3c4036207.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/aria-live-524a06aa946df6fc.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hotkey-b1ee53c2200b172a.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-core-7bf7b9d689fe3d10.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/a9-ca3bc10b816bcc1f.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ur-21ec1e439ee2d87c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/4t-4c39f7195fc42cc8.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/pb-53cfff089eaac51b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/6n-afcf86ccabc4cad2.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/zj-4d9cf83cf08e1643.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wo-6991af5b3829ffe8.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/nfv-a6c14301d3ea6d67.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/b5-a2fde30ce0c692b9.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/sw-9d0489dbf9a9c942.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ttf-7d5abe1b447ced2c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/sj-c7a44023ee90d468.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/0pd-c46d8dfae89c2b64.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/behaviors-c8ee397a71bcb700.js" defer="defer"></script>
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/react-core.255cab819a92f7e1.module.css" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/code-menu-073e7d742fb703f1.js" defer="defer"></script>
  
  <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/primer-react-8503588299651923.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ncx-66e64888bc4615bb.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/qmp-c7cfba40cf5a93b0.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j6-148a74299e5a01ab.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/t7l-a9404625ec30bbc7.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/4u-8f9f1d6be01d6a22.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/s0-68d09e5e8a80cb94.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/y5-0cb3f75cec297941.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/n4u-cd9039ad946274ad.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j8s-00bd469c4017a543.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/la-27679061f16e1495.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/iu-2d03f5e6d4fdd54d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/gru-2b0fac8887ff8c57.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/a0-234e967e7c6d22ce.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/gz3-5bdfbfceac967bb6.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/15m-64f3034430471048.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/1e-c15441bdb94d54ae.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/gzu-6ad9a0527a5d7afd.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/bi-3a42b8714e06c4d0.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/tu1-37e16844272ddefa.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/b1-ac66ededed061993.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/gmn-1e5497c041b66231.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/0l5-d1b2a63015b5eb6d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/c2-e85522be441acf73.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/f9-baf0a4193779952e.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/sp-87dce99c82a27004.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/zkm-116b01b8485bbe3f.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/og-518d12c9e011601d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/b9-947db365ea875cfa.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/14-8c7b4ad3c845664c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/dsj-2e7d883cb843e9e6.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ec-38012819307fd539.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/du-6607da3b8b579202.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/20-f43eb09c2be69457.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ql0-107312645ac2b72d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wp-fa7cdc0f7656d876.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/p0l-fe491d943adf7508.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/v1e-d099d9fd21ad25e5.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fn-7b298a45c55fb6fb.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/7cw-6e493a20eaaa04b5.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ok-290e4b9465ba9c5b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/6d-ca6d584a0fd6368c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/y8-e2f18f5a24733f3b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/xc-3fd4a2e7dcbad8e2.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/vjg-2874f95f389c4d3f.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/code-view-16afdcf183d11968.js" defer="defer"></script>
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.e4334163c54cccf5.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/ql0.501e99879e15a48e.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/xc.de2b1dde0494f261.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/code-view.85de0b1d47e09052.module.css" />


  <title>gbe_fork/dll/steam_friends.cpp at controller-def-init · Detanup01/gbe_fork · GitHub</title>



  <meta name="route-pattern" content="/:user_id/:repository/blob/*name(/*path)" data-turbo-transient>
  <meta name="route-controller" content="blob" data-turbo-transient>
  <meta name="route-action" content="show" data-turbo-transient>
  <meta name="fetch-nonce" content="v2:d1a151cb-dd82-1ead-0136-cb2b2fb78777">

    
  <meta name="current-catalog-service-hash" content="f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb">


  <meta name="request-id" content="CCDA:2DA7AA:FECA90:F29362:6AC77C31" data-pjax-transient="true"/><meta name="html-safe-nonce" content="e51a9a6bca7352e8deafe9a195784fe840c9e601da57fa6a46cdae0c1445021a" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDQ0RBOjJEQTdBQTpGRUNBOTA6RjI5MzYyOjZBQzc3QzMxIiwidmlzaXRvcl9pZCI6Ijg2NTkwMDY1MTk4Mzg3MzU0MDkiLCJyZWdpb25fZWRnZSI6ImZyYSIsInJlZ2lvbl9yZW5kZXIiOiJmcmEifQ==" data-pjax-transient="true"/><meta name="visitor-hmac" content="a2ae4db1260674cf94855e5556f75b65ea1668aca9c9be1e841fd1b76351f219" data-pjax-transient="true"/>


    <meta name="hovercard-subject-tag" content="repository:830127839" data-turbo-transient>


  <meta name="github-keyboard-shortcuts" content="repository,source-code,file-tree,copilot" data-turbo-transient="true" />
  

  <meta name="selected-link" value="repo_source" data-turbo-transient>
  <link rel="assets" href="https://github.githubassets.com/">

    <meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I">

<meta name="octolytics-url" content="https://collector.github.com/github/collect" />





  <meta name="analytics-location" content="/&lt;user-name&gt;/&lt;repo-name&gt;/blob/show" data-turbo-transient="true" />

  




    <meta name="user-login" content="">

  

    <meta name="viewport" content="width=device-width">

    

      <meta name="description" content="Fork of https://gitlab.com/Mr_Goldberg/goldberg_emulator - gbe_fork/dll/steam_friends.cpp at controller-def-init · Detanup01/gbe_fork">

      <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">

    <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
    <meta property="fb:app_id" content="1401488693436528">
    <meta name="apple-itunes-app" content="app-id=1477376905, app-argument=https://github.com/Detanup01/gbe_fork/blob/controller-def-init/dll/steam_friends.cpp" />

      <meta name="twitter:image" content="https://opengraph.githubassets.com/5f3473153194ecc03838e18adeb7cfb49b8cce8ecd5c1770e9b5897875158a60/Detanup01/gbe_fork" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="gbe_fork/dll/steam_friends.cpp at controller-def-init · Detanup01/gbe_fork" /><meta name="twitter:description" content="Fork of https://gitlab.com/Mr_Goldberg/goldberg_emulator - Detanup01/gbe_fork" />
  <meta property="og:image" content="https://opengraph.githubassets.com/5f3473153194ecc03838e18adeb7cfb49b8cce8ecd5c1770e9b5897875158a60/Detanup01/gbe_fork" /><meta property="og:image:alt" content="Fork of https://gitlab.com/Mr_Goldberg/goldberg_emulator - Detanup01/gbe_fork" /><meta property="og:image:width" content="1200" /><meta property="og:image:height" content="600" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="gbe_fork/dll/steam_friends.cpp at controller-def-init · Detanup01/gbe_fork" /><meta property="og:url" content="https://github.com/Detanup01/gbe_fork/blob/controller-def-init/dll/steam_friends.cpp" /><meta property="og:description" content="Fork of https://gitlab.com/Mr_Goldberg/goldberg_emulator - Detanup01/gbe_fork" />
  




      <meta name="hostname" content="github.com">



        <meta name="expected-hostname" content="github.com">


  <meta http-equiv="x-pjax-version" content="f705e3cc2e7cb8ce0afdb7b21fc6ff6d7afede52aee40bf0eab14ca8b0d69dd6" data-turbo-track="reload">
  <meta http-equiv="x-pjax-csp-version" content="c4a65e47b0c850e1157ae8e66298070851d7e3b558038de5a3b4ff7a93e630ed" data-turbo-track="reload">
  <meta http-equiv="x-pjax-css-version" content="1ff3f1d4e1abd61f6f135b47d3b815e2f7169f8dd418f0118c6b1cf4de6cbc86" data-turbo-track="reload">
  <meta http-equiv="x-pjax-js-version" content="1246934c1e1d4eb010e1cfa4ca517994cfab78ea050086b069045122415a52dd" data-turbo-track="reload">

  <meta name="turbo-cache-control" content="no-preview" data-turbo-transient="">

      <meta name="turbo-cache-control" content="no-cache" data-turbo-transient>

    <meta data-hydrostats="publish">

  <meta name="go-import" content="github.com/Detanup01/gbe_fork git https://github.com/Detanup01/gbe_fork.git">

  <meta name="octolytics-dimension-user_id" content="91248446" /><meta name="octolytics-dimension-user_login" content="Detanup01" /><meta name="octolytics-dimension-repository_id" content="830127839" /><meta name="octolytics-dimension-repository_nwo" content="Detanup01/gbe_fork" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="830127839" /><meta name="octolytics-dimension-repository_network_root_nwo" content="Detanup01/gbe_fork" />
  



    

    <meta name="turbo-body-classes" content="logged-out env-production page-responsive">
  <meta name="disable-turbo" content="false">


  <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">


  <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">

  <meta name="release" content="3ea5e9da9090cfec2f1df3ba60c98d7d544d5137" data-turbo-track="reload">
  <meta name="ui-target" content="full">

  <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000">
  <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png">
  <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg" data-base-href="https://github.githubassets.com/favicons/favicon">

<meta name="theme-color" content="#1e2327">
<meta name="color-scheme" content="light dark" />


  <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">

  </head>

  <body class="logged-out env-production page-responsive" style="word-wrap: break-word;" >
    <div data-turbo-body class="logged-out env-production page-responsive" style="word-wrap: break-word;" >
      <div id="__primerPortalRoot__" style="z-index: 1000; position: absolute; width: 100%;" data-turbo-permanent></div>
      

    <div class="position-relative header-wrapper js-header-wrapper ">
      <a href="#start-of-content" data-skip-target-assigned="false" class="px-2 tmp-py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a>

      <span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full">
    <span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span>
</span>      
      <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/qc-1bbbe8787ea1cd4b.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-10dbdab24559c7cd.js" fetchpriority="low" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.e4334163c54cccf5.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog.4dd73a4e016c1ca2.module.css" />

<react-partial
  partial-name="keyboard-shortcuts-dialog"
  data-ssr="false"
  data-attempted-ssr="false"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script>
  <div data-target="react-partial.reactRoot"></div>
</react-partial>





      

          <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/app-install-banner-partial-0087e2c1d400f8c6.js" fetchpriority="low" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.e4334163c54cccf5.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/app-install-banner-partial.b50f287c48a7f94a.module.css" />

<react-partial
  partial-name="app-install-banner-partial"
  data-ssr="false"
  data-attempted-ssr="false"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-partial.embeddedData">{"props":{}}</script>
  <div data-target="react-partial.reactRoot"></div>
</react-partial>


          

                <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/2l-e468179ba7123a2e.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/rwd-069fc3d9814ff9fe.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fz-e662bc3745e171e7.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/jag-3559ee48016881a2.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/3d-7f22b36f29a9dd94.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/tua-4998592d21eb16f7.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/8i-756d611a52e5f265.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/marketing-header-3c37549fa4cc7814.js" fetchpriority="low" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.e4334163c54cccf5.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-brand-css.05b219cdb8e80c43.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/8i.779dd52a6bc5b0b6.module.css" />

<react-partial
  partial-name="marketing-header"
  data-ssr="true"
  data-attempted-ssr="true"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-partial.embeddedData">{"props":{"color_mode":"dark","logged_in":false,"marketing_page":false,"home_path":"/","login_path":"/login?return_to=https%3A%2F%2Fgithub.com%2FDetanup01%2Fgbe_fork%2Fblob%2Fcontroller-def-init%2Fdll%2Fsteam_friends.cpp","signup_path":"/signup?ref_cta=Sign+up\u0026ref_loc=header+logged+out\u0026ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fblob%2Fshow\u0026source=header-repo\u0026source_repo=Detanup01%2Fgbe_fork","signup_enabled":true,"is_signup_controller":false,"show_search_and_nav":true,"hide_search":false,"private_mode_enabled":false,"should_use_dotcom_links":true,"auth_hydro_click":"{\"event_type\":\"authentication.click\",\"payload\":{\"location_in_page\":\"site header menu\",\"repository_id\":null,\"auth_type\":\"SIGN_UP\",\"originating_url\":\"https://github.com/Detanup01/gbe_fork/blob/controller-def-init/dll/steam_friends.cpp\",\"user_id\":null}}","auth_hydro_click_hmac":"925e23c7032eb9682702a52ebee68e1ba41b257daef061a79db56067e73bb053","overlay":false,"fixed":false}}</script>
  <div data-target="react-partial.reactRoot"><div data-color-mode="dark" data-light-theme="light" data-dark-theme="dark"><header class="MarketingHeader-module__root__Tk7n3 HeaderMktg header-logged-out" role="banner" data-marketing-header="true" data-color-mode="dark" data-light-theme="light" data-dark-theme="dark" data-is-top="true"><h2 class="MarketingHeader-module__visuallyHidden__sqKsl">Navigation Menu</h2><button type="button" class="MarketingHeader-module__backdrop__sw4RU" aria-label="Close navigation menu"></button><div class="MarketingHeader-module__bar__mBSyE"><div class="MarketingHeader-module__topRow__yeury"><div class="MarketingHeader-module__toggleSlot__hDxbh"><button type="button" class="HeaderMenuToggle-module__toggle__i8EiC" aria-label="Toggle navigation" aria-expanded="false"><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span></button></div><a href="/" aria-label="Homepage" class="HeaderLogo-module__logo__UFyHI" data-analytics-event="{&quot;action&quot;:&quot;homepage&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;logo&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;homepage_link_logo_header&quot;}"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mark-github" viewBox="0 0 24 24" width="32" height="32" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.226 17.284c-2.965-.36-5.054-2.493-5.054-5.256 0-1.123.404-2.336 1.078-3.144-.292-.741-.247-2.314.09-2.965.898-.112 2.111.36 2.83 1.01.853-.269 1.752-.404 2.853-.404 1.1 0 1.999.135 2.807.382.696-.629 1.932-1.1 2.83-.988.315.606.36 2.179.067 2.942.72.854 1.101 2 1.101 3.167 0 2.763-2.089 4.852-5.098 5.234.763.494 1.28 1.572 1.28 2.807v2.336c0 .674.561 1.056 1.235.786 4.066-1.55 7.255-5.615 7.255-10.646C23.5 6.188 18.334 1 11.978 1 5.62 1 .5 6.188.5 12.545c0 4.986 3.167 9.12 7.435 10.669.606.225 1.19-.18 1.19-.786V20.63a2.9 2.9 0 0 1-1.078.224c-1.483 0-2.359-.808-2.987-2.313-.247-.607-.517-.966-1.034-1.033-.27-.023-.359-.135-.359-.27 0-.27.45-.471.898-.471.652 0 1.213.404 1.797 1.235.45.651.921.943 1.483.943.561 0 .92-.202 1.437-.719.382-.381.674-.718.944-.943"></path></svg></a><div class="AuthCTAs-module__mobileActions__NNzeV"><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq" href="/login?return_to=https%3A%2F%2Fgithub.com%2FDetanup01%2Fgbe_fork%2Fblob%2Fcontroller-def-init%2Fdll%2Fsteam_friends.cpp" data-analytics-event="{&quot;action&quot;:&quot;sign_in&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;auth_cta&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;sign_in_link_auth_cta_header&quot;}" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/Detanup01/gbe_fork/blob/controller-def-init/dll/steam_friends.cpp&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="925e23c7032eb9682702a52ebee68e1ba41b257daef061a79db56067e73bb053"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH">Sign in</span></span></a><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderAppearanceSettings-module__trigger__hUheK" type="button" aria-haspopup="dialog" aria-labelledby="_R_3dd_"><span class="Primer_Brand__Button-module__Button__leading-visual___jjtTe" data-testid="Button-leading-visual"><svg data-component="Octicon" focusable="false" aria-hidden="true" class="octicon octicon-sliders Primer_Brand__Button-module__Button__icon-visual____qybb" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z"></path></svg></span><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"></span></span></button><div class="Primer_Brand__Tooltip-module__Tooltip___0Eipx" data-direction="s" aria-hidden="true" id="_R_3dd_">Appearance settings</div></div></div><div class="MarketingHeader-module__menu__GIy3y"><div class="MarketingHeader-module__menuWrapper__owstH"><nav class="MarketingNavigation-module__nav__W0KYY" aria-label="Global"><ul class="MarketingNavigation-module__list__tFbMb"><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_nd_">Platform<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5knd_">AI CODE CREATION</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5knd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/copilot" data-analytics-event="{&quot;action&quot;:&quot;github_copilot&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_copilot_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copilot NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path></svg>GitHub Copilot</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Write better code with AI</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/ai/github-app" data-analytics-event="{&quot;action&quot;:&quot;github_copilot_app&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_copilot_app_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mark-github NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.766 11.328c-2.063-.25-3.516-1.734-3.516-3.656 0-.781.281-1.625.75-2.188-.203-.515-.172-1.609.063-2.062.625-.078 1.468.25 1.968.703.594-.187 1.219-.281 1.985-.281.765 0 1.39.094 1.953.265.484-.437 1.344-.765 1.969-.687.218.422.25 1.515.046 2.047.5.593.766 1.39.766 2.203 0 1.922-1.453 3.375-3.547 3.64.531.344.89 1.094.89 1.954v1.625c0 .468.391.734.86.547C13.781 14.359 16 11.53 16 8.03 16 3.61 12.406 0 7.984 0 3.563 0 0 3.61 0 8.031a7.88 7.88 0 0 0 5.172 7.422c.422.156.828-.125.828-.547v-1.25c-.219.094-.5.156-.75.156-1.031 0-1.64-.562-2.078-1.609-.172-.422-.36-.672-.719-.719-.187-.015-.25-.093-.25-.187 0-.188.313-.328.625-.328.453 0 .844.281 1.25.86.313.452.64.655 1.031.655s.641-.14 1-.5c.266-.265.47-.5.657-.656"></path></svg>GitHub Copilot app</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Direct agents from issue to merge</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/mcp" data-analytics-event="{&quot;action&quot;:&quot;mcp_registry&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;mcp_registry_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mcp NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M5.52 1.12a3.578 3.578 0 0 1 6.078 2.98 3.578 3.578 0 0 1 2.982 6.08l-3.292 3.293a.252.252 0 0 0 0 .354l.843.843a.749.749 0 1 1-1.06 1.06l-.844-.843a1.75 1.75 0 0 1 0-2.474L13.52 9.12a2.08 2.08 0 0 0 0-2.94 2.08 2.08 0 0 0-2.94 0L7.731 9.03A.75.75 0 0 1 6.67 7.97l2.85-2.85a2.08 2.08 0 0 0 0-2.94 2.08 2.08 0 0 0-2.94 0l-4.799 4.8A.75.75 0 0 1 .72 5.92Z"></path><path d="M7.52 3.12a.749.749 0 1 1 1.06 1.06L5.731 7.03A2.079 2.079 0 0 0 8.67 9.97l2.85-2.85a.749.749 0 1 1 1.06 1.06l-2.849 2.85A3.578 3.578 0 0 1 4.67 5.97Z"></path></svg>MCP Registry</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Integrate external tools</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9knd_">DEVELOPER WORKFLOWS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9knd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/actions" data-analytics-event="{&quot;action&quot;:&quot;actions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;actions_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-workflow NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z"></path></svg>Actions</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Automate any workflow</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/codespaces" data-analytics-event="{&quot;action&quot;:&quot;codespaces&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;codespaces_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-codespaces NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z"></path><path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path></svg>Codespaces</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Instant dev environments</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/issues" data-analytics-event="{&quot;action&quot;:&quot;issues&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;issues_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-issue-opened NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path></svg>Issues</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Plan and track work</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/code-review" data-analytics-event="{&quot;action&quot;:&quot;code_review&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_review_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-code NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg>Code Review</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Manage code changes</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/code-quality" data-analytics-event="{&quot;action&quot;:&quot;code_quality&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_quality_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-codescan-checkmark NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.28 6.28a.75.75 0 1 0-1.06-1.06L6.25 8.19l-.97-.97a.75.75 0 0 0-1.06 1.06l1.5 1.5a.75.75 0 0 0 1.06 0l3.5-3.5Z"></path><path d="M7.5 15a7.5 7.5 0 1 1 5.807-2.754l2.473 2.474a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2.474-2.473A7.472 7.472 0 0 1 7.5 15Zm0-13.5a6 6 0 1 0 4.094 10.386.748.748 0 0 1 .293-.292 6.002 6.002 0 0 0 1.117-6.486A6.002 6.002 0 0 0 7.5 1.5Z"></path></svg>Code Quality</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enforce quality at merge</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dknd_">APPLICATION SECURITY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dknd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security" data-analytics-event="{&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_advanced_security_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-shield-check NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>GitHub Advanced Security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Find and fix vulnerabilities</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security/code-security" data-analytics-event="{&quot;action&quot;:&quot;code_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_security_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-code-square NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>Code security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Secure your code as you build</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security/secret-protection" data-analytics-event="{&quot;action&quot;:&quot;secret_protection&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;secret_protection_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-lock NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M4 4a4 4 0 0 1 8 0v2h.25c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 12.25 15h-8.5A1.75 1.75 0 0 1 2 13.25v-5.5C2 6.784 2.784 6 3.75 6H4Zm8.25 3.5h-8.5a.25.25 0 0 0-.25.25v5.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25ZM10.5 6V4a2.5 2.5 0 1 0-5 0v2Z"></path></svg>Secret protection</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Stop leaks before they start</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ NavGroup-module__hasSeparator__FnMrN"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_hknd_">EXPLORE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_hknd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/why-github" data-analytics-event="{&quot;action&quot;:&quot;why_github&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;why_github_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Why GitHub</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://docs.github.com" data-analytics-event="{&quot;action&quot;:&quot;documentation&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;documentation_link_platform_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Documentation</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://github.blog" data-analytics-event="{&quot;action&quot;:&quot;blog&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;blog_link_platform_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Blog</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://github.blog/changelog" data-analytics-event="{&quot;action&quot;:&quot;changelog&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;changelog_link_platform_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Changelog</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/marketplace" data-analytics-event="{&quot;action&quot;:&quot;marketplace&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;marketplace_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Marketplace</span></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/features" data-analytics-event="{&quot;action&quot;:&quot;view_all_features&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_features_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all features</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_17d_">Solutions<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_17d_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5l7d_">BY COMPANY SIZE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5l7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/enterprise" data-analytics-event="{&quot;action&quot;:&quot;enterprises&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;enterprises_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Enterprises</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/team" data-analytics-event="{&quot;action&quot;:&quot;small_and_medium_teams&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;small_and_medium_teams_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Small and medium teams</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/enterprise/startups" data-analytics-event="{&quot;action&quot;:&quot;startups&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;startups_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Startups</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/nonprofits" data-analytics-event="{&quot;action&quot;:&quot;nonprofits&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;nonprofits_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Nonprofits</span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9l7d_">BY USE CASE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9l7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/app-modernization" data-analytics-event="{&quot;action&quot;:&quot;app_modernization&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;app_modernization_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">App Modernization</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/devsecops" data-analytics-event="{&quot;action&quot;:&quot;devsecops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devsecops_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevSecOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/devops" data-analytics-event="{&quot;action&quot;:&quot;devops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devops_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/ci-cd" data-analytics-event="{&quot;action&quot;:&quot;ci/cd&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ci/cd_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">CI/CD</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions/use-case" data-analytics-event="{&quot;action&quot;:&quot;view_all_use_cases&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_use_cases_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all use cases</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dl7d_">BY INDUSTRY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dl7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/healthcare" data-analytics-event="{&quot;action&quot;:&quot;healthcare&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;healthcare_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Healthcare</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/financial-services" data-analytics-event="{&quot;action&quot;:&quot;financial_services&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;financial_services_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Financial services</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/manufacturing" data-analytics-event="{&quot;action&quot;:&quot;manufacturing&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;manufacturing_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Manufacturing</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/government" data-analytics-event="{&quot;action&quot;:&quot;government&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;government_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Government</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions/industry" data-analytics-event="{&quot;action&quot;:&quot;view_all_industries&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_industries_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all industries</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions" data-analytics-event="{&quot;action&quot;:&quot;view_all_solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_solutions_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all solutions</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_1nd_">Resources<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_1nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5lnd_">EXPLORE BY TOPIC</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5lnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=ai" data-analytics-event="{&quot;action&quot;:&quot;ai&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ai_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">AI</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=software-development" data-analytics-event="{&quot;action&quot;:&quot;software_development&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;software_development_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Software Development</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=devops" data-analytics-event="{&quot;action&quot;:&quot;devops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devops_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=security" data-analytics-event="{&quot;action&quot;:&quot;security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;security_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Security</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/resources/articles" data-analytics-event="{&quot;action&quot;:&quot;view_all_topics&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_topics_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all topics</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9lnd_">EXPLORE BY TYPE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9lnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/customer-stories" data-analytics-event="{&quot;action&quot;:&quot;customer_stories&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;customer_stories_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Customer stories</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/events" data-analytics-event="{&quot;action&quot;:&quot;events__webinars&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;events__webinars_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Events &amp; webinars</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/whitepapers" data-analytics-event="{&quot;action&quot;:&quot;ebooks__reports&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ebooks__reports_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Ebooks &amp; reports</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/executive-insights" data-analytics-event="{&quot;action&quot;:&quot;business_insights&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;business_insights_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Business insights</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://skills.github.com" data-analytics-event="{&quot;action&quot;:&quot;github_skills&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_skills_link_resources_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">GitHub Skills</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dlnd_">SUPPORT &amp; SERVICES</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dlnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://docs.github.com" data-analytics-event="{&quot;action&quot;:&quot;documentation&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;documentation_link_resources_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Documentation</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://support.github.com" data-analytics-event="{&quot;action&quot;:&quot;customer_support&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;customer_support_link_resources_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Customer support</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/orgs/community/discussions" data-analytics-event="{&quot;action&quot;:&quot;community_forum&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;community_forum_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Community forum</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/trust-center" data-analytics-event="{&quot;action&quot;:&quot;trust_center&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;trust_center_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Trust center</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/partners" data-analytics-event="{&quot;action&quot;:&quot;partners&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;partners_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Partners</span></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/resources" data-analytics-event="{&quot;action&quot;:&quot;view_all_resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_resources_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all resources</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_27d_">Open Source<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_27d_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5m7d_">COMMUNITY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5m7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/open-source/sponsors" data-analytics-event="{&quot;action&quot;:&quot;github_sponsors&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_sponsors_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-sponsor-tiers NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.586 1C12.268 1 13.5 2.37 13.5 4.25c0 1.745-.996 3.359-2.622 4.831-.166.15-.336.297-.509.438l1.116 5.584a.75.75 0 0 1-.991.852l-2.409-.876a.25.25 0 0 0-.17 0l-2.409.876a.75.75 0 0 1-.991-.852L5.63 9.519a13.78 13.78 0 0 1-.51-.438C3.497 7.609 2.5 5.995 2.5 4.25 2.5 2.37 3.732 1 5.414 1c.963 0 1.843.403 2.474 1.073L8 2.198l.112-.125a3.385 3.385 0 0 1 2.283-1.068L10.586 1Zm-3.621 9.495-.718 3.594 1.155-.42a1.75 1.75 0 0 1 1.028-.051l.168.051 1.154.42-.718-3.592c-.199.13-.37.235-.505.314l-.169.097a.75.75 0 0 1-.72 0 9.54 9.54 0 0 1-.515-.308l-.16-.105ZM10.586 2.5c-.863 0-1.611.58-1.866 1.459-.209.721-1.231.721-1.44 0C7.025 3.08 6.277 2.5 5.414 2.5 4.598 2.5 4 3.165 4 4.25c0 1.23.786 2.504 2.128 3.719.49.443 1.018.846 1.546 1.198l.325.21.076-.047.251-.163a13.341 13.341 0 0 0 1.546-1.198C11.214 6.754 12 5.479 12 4.25c0-1.085-.598-1.75-1.414-1.75Z"></path></svg>GitHub Sponsors</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Fund open source developers</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9m7d_">PROGRAMS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9m7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://securitylab.github.com" data-analytics-event="{&quot;action&quot;:&quot;security_lab&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;security_lab_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Security Lab</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://maintainers.github.com" data-analytics-event="{&quot;action&quot;:&quot;maintainer_community&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;maintainer_community_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Maintainer Community</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://stars.github.com" data-analytics-event="{&quot;action&quot;:&quot;github_stars&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_stars_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">GitHub Stars</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://archiveprogram.github.com" data-analytics-event="{&quot;action&quot;:&quot;archive_program&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;archive_program_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Archive Program</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dm7d_">REPOSITORIES</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dm7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/topics" data-analytics-event="{&quot;action&quot;:&quot;topics&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;topics_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Topics</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/trending" data-analytics-event="{&quot;action&quot;:&quot;trending&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;trending_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Trending</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/collections" data-analytics-event="{&quot;action&quot;:&quot;collections&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;collections_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Collections</span></a></li></ul></div></li></ul></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_2nd_">Enterprise<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_2nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5mnd_">ENTERPRISE SOLUTIONS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5mnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/enterprise" data-analytics-event="{&quot;action&quot;:&quot;enterprise_platform&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;enterprise_platform_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-stack NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.122.392a1.75 1.75 0 0 1 1.756 0l5.003 2.902c.83.481.83 1.68 0 2.162L8.878 8.358a1.75 1.75 0 0 1-1.756 0L2.119 5.456a1.251 1.251 0 0 1 0-2.162ZM8.125 1.69a.248.248 0 0 0-.25 0l-4.63 2.685 4.63 2.685a.248.248 0 0 0 .25 0l4.63-2.685ZM1.601 7.789a.75.75 0 0 1 1.025-.273l5.249 3.044a.248.248 0 0 0 .25 0l5.249-3.044a.75.75 0 0 1 .752 1.298l-5.248 3.044a1.75 1.75 0 0 1-1.756 0L1.874 8.814A.75.75 0 0 1 1.6 7.789Zm0 3.5a.75.75 0 0 1 1.025-.273l5.249 3.044a.248.248 0 0 0 .25 0l5.249-3.044a.75.75 0 0 1 .752 1.298l-5.248 3.044a1.75 1.75 0 0 1-1.756 0l-5.248-3.044a.75.75 0 0 1-.273-1.025Z"></path></svg>Enterprise platform</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">AI-powered developer platform</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9mnd_">AVAILABLE ADD-ONS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9mnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security" data-analytics-event="{&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_advanced_security_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-shield-check NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>GitHub Advanced Security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade security features</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/copilot/copilot-business" data-analytics-event="{&quot;action&quot;:&quot;copilot_for_business&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;copilot_for_business_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copilot NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path></svg>Copilot for Business</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade AI features</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/enterprise/premium-support" data-analytics-event="{&quot;action&quot;:&quot;premium_support&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;premium_support_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-comment-discussion NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path></svg>Premium Support</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade 24/7 support</span></span></a></li></ul></div></li></ul></div></div></li><li><a href="https://github.com/pricing" data-analytics-event="{&quot;action&quot;:&quot;pricing&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;pricing&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;pricing_link_pricing_navbar&quot;}" class="MarketingNavigation-module__navLink__hUomM">Pricing</a></li></ul></nav><div class="MarketingHeader-module__ctaContainer__tBmPz"><div class="HeaderSearch-module__searchSlot__oVOUS"><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderSearch-module__trigger__zsF9q" type="button" aria-haspopup="dialog" aria-expanded="false" aria-label="Search or jump to, type / to search" data-analytics-event="{&quot;action&quot;:&quot;searchbar&quot;,&quot;tag&quot;:&quot;input&quot;,&quot;context&quot;:&quot;global&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;searchbar_input_global_navbar&quot;}"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"><span class="HeaderSearch-module__content__kMpxU"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-search HeaderSearch-module__icon__wcrHX" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path></svg><span class="HeaderSearch-module__label__d1iWG">Search</span><kbd class="HeaderSearch-module__kbd__HNG0o" aria-hidden="true">/</kbd></span></span></span></button><div class="d-none"></div></div><div class="AuthCTAs-module__signInWrap__q2P60"><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq AuthCTAs-module__desktopActionGap__UZuXT AuthCTAs-module__hiddenBelowLg__BfKBw" href="/login?return_to=https%3A%2F%2Fgithub.com%2FDetanup01%2Fgbe_fork%2Fblob%2Fcontroller-def-init%2Fdll%2Fsteam_friends.cpp" data-analytics-event="{&quot;action&quot;:&quot;sign_in&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;auth_cta&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;sign_in_link_auth_cta_header&quot;}" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/Detanup01/gbe_fork/blob/controller-def-init/dll/steam_friends.cpp&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="925e23c7032eb9682702a52ebee68e1ba41b257daef061a79db56067e73bb053"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH">Sign in</span></span></a></div><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--secondary___gHnw_ Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq" href="/signup?ref_cta=Sign+up&amp;ref_loc=header+logged+out&amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fblob%2Fshow&amp;source=header-repo&amp;source_repo=Detanup01%2Fgbe_fork" data-analytics-event="{&quot;action&quot;:&quot;sign_up&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;auth_cta&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;sign_up_link_auth_cta_header&quot;}" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/Detanup01/gbe_fork/blob/controller-def-init/dll/steam_friends.cpp&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="925e23c7032eb9682702a52ebee68e1ba41b257daef061a79db56067e73bb053"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-secondary___eJ0_a">Sign up</span></span></a><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderAppearanceSettings-module__trigger__hUheK" type="button" aria-haspopup="dialog" aria-labelledby="_R_fbd_"><span class="Primer_Brand__Button-module__Button__leading-visual___jjtTe" data-testid="Button-leading-visual"><svg data-component="Octicon" focusable="false" aria-hidden="true" class="octicon octicon-sliders Primer_Brand__Button-module__Button__icon-visual____qybb" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z"></path></svg></span><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"></span></span></button><div class="Primer_Brand__Tooltip-module__Tooltip___0Eipx" data-direction="s" aria-hidden="true" id="_R_fbd_">Appearance settings</div></div></div></div></div><div class="MarketingHeader-module__bottomBorder__uZT38" aria-hidden="true"></div></header></div></div>
</react-partial>



      <div hidden="hidden" data-view-component="true" class="js-stale-session-flash stale-session-flash flash flash-warn flash-full">
  
        <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg>
        <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>
        <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>
        <span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>

    <button id="icon-button-a9d51c7a-270f-4948-afd5-2c28e1ca556c" aria-labelledby="tooltip-b23675dd-f5af-44f9-b874-e290bd5b03b1" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close">  <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
</button><tool-tip id="tooltip-b23675dd-f5af-44f9-b874-e290bd5b03b1" for="icon-button-a9d51c7a-270f-4948-afd5-2c28e1ca556c" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip>


  
</div>
    </div>

  <div id="start-of-content" class="show-on-focus"></div>








    <div id="js-flash-container" class="flash-container" data-turbo-replace>






  <template class="js-flash-template">
    
<div class="flash flash-full   {{ className }}">
  <div >
    <button autofocus class="flash-close js-flash-close" type="button" aria-label="Dismiss this message">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
    </button>
    <div aria-atomic="true" role="alert" class="js-flash-alert">
      
      <div>{{ message }}</div>

    </div>
  </div>
</div>
  </template>
</div>


    






  <div
    class="application-main "
    data-commit-hovercards-enabled
    data-discussion-hovercards-enabled
    data-issue-and-pr-hovercards-enabled
    data-project-hovercards-enabled
  >
        <div itemscope itemtype="http://schema.org/SoftwareSourceCode" class="">
    <main id="js-repo-pjax-container" >
      
      








  

    <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ym-1a7ce813a378e1f7.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/mn-bb458474353a279e.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/t5-26d19272bbf73ca3.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/2d5-9abb2f6ba5c935d0.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/24-b11e1c4108322883.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/mrn-12afac2ecd2be980.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/dgq-bbf7670f9cdba2e0.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/7w-740b4e942974ccba.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/we-c9f93392098ad6c9.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/775-5adcc74216a7c5ae.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/bn-fcef0645a47703fc.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/xgw-6c6cb7b2ed77f52e.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ge-ca1c0ba8656f9680.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/9f-e543bc691db8262e.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/global-nav-bar-c7f96cdc425f375d.js" fetchpriority="low" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.e4334163c54cccf5.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/ql0.501e99879e15a48e.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-nav-bar.1943548049515ee8.module.css" />

<react-partial
  partial-name="global-nav-bar"
  data-ssr="true"
  data-attempted-ssr="true"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-partial.embeddedData">{"props":{"contextRegion":{"crumbs":[{"crumb_type":"user","label":"Detanup01","is_root":false,"href":"/Detanup01"},{"crumb_type":"repository","label":"gbe_fork","is_root":false,"href":"/Detanup01/gbe_fork"}],"localNavigation":[{"id":"code","icon":"code","label":"Code","href":"/Detanup01/gbe_fork","selectedLinks":["repo_source","repo_downloads","repo_commits","repo_releases","repo_tags","repo_branches","repo_packages","repo_deployments","repo_attestations"],"popoverTarget":false,"commandId":"repositories:go-to-code","reactNav":{"appTarget":"code-view","anchor":"code-view-repo-link"},"turboNav":{"frame":"repo-content-turbo-frame"}},{"id":"issues","icon":"issue-opened","label":"Issues","href":"/Detanup01/gbe_fork/issues","selectedLinks":["repo_issues","repo_labels","repo_milestones"],"count":88,"popoverTarget":false,"commandId":"repositories:go-to-issues","reactNav":{"appTarget":"repo","anchor":null},"turboNav":{"frame":"repo-content-turbo-frame"}},{"id":"pull-requests","icon":"git-pull-request","label":"Pull requests","href":"/Detanup01/gbe_fork/pulls","selectedLinks":["repo_pulls","checks"],"count":4,"popoverTarget":false,"commandId":"repositories:go-to-pull-requests","reactNav":{"appTarget":null,"anchor":null},"turboNav":{"frame":"repo-content-turbo-frame"}},{"id":"discussions","icon":"comment-discussion","label":"Discussions","href":"/Detanup01/gbe_fork/discussions","selectedLinks":["repo_discussions"],"popoverTarget":false,"commandId":"repositories:go-to-discussions","reactNav":{"appTarget":null,"anchor":null},"turboNav":{"frame":"repo-content-turbo-frame"}},{"id":"actions","icon":"play","label":"Actions","href":"/Detanup01/gbe_fork/actions","selectedLinks":["repo_actions"],"popoverTarget":false,"commandId":"repositories:go-to-actions","reactNav":{"appTarget":"actions-workflows","anchor":null},"turboNav":{"frame":"repo-content-turbo-frame"}},{"id":"security-and-quality","icon":"shield","label":"Security and quality","href":"/Detanup01/gbe_fork/security","selectedLinks":["security","overview","alerts","policy","token_scanning","code_scanning"],"count":0,"popoverTarget":false,"commandId":"repositories:go-to-security","reactNav":{"appTarget":null,"anchor":null},"turboNav":{"frame":"repo-content-turbo-frame"}},{"id":"insights","icon":"graph","label":"Insights","href":"/Detanup01/gbe_fork/pulse","selectedLinks":["repo_graphs","repo_contributors","dependency_graph","dependabot_updates","pulse","people","community"],"popoverTarget":false,"commandId":"repositories:go-to-insights","reactNav":{"appTarget":null,"anchor":null},"turboNav":{"frame":"repo-content-turbo-frame"}}],"localNavigationUpdateChannel":null,"selectedLink":"repo_source"},"owner":null,"headerLogo":{"href":"/","aria-label":"Homepage "},"notifications":{"indicatorMode":"disabled","websocketChannel":null,"fetchIndicatorSrc":"/notifications/indicator","fetchIndicatorEnabled":false},"issues":{"href":"/issues"},"pulls":{"href":"/pulls"},"contributedRepos":{"href":"/repos"},"copilot":{"show":false,"showAgentsButton":false,"showRelaunchAnnouncement":false,"copilotChatUrl":null,"copilotApiUrl":"https://api.githubcopilot.com"},"search":{"show":true,"showCommandPalette":false,"isSearchPage":false,"isJumpToSearch":false,"searchContext":{"scope":"repo:Detanup01/gbe_fork","current_repo_name":"gbe_fork","current_repo_nwo":"Detanup01/gbe_fork","user_id":"Detanup01"}},"commandPalette":null,"enterpriseBar":{"show":false},"globalTransactionalMessage":[],"payloadsUrl":"/_global-navigation/payloads.json?can_toggle_site_admin_and_employee_status=0\u0026is_admin_mode_on=0\u0026is_ui_opted_out=0\u0026show_ui_opt_out=0\u0026v=6","contextRegionUrl":"/_global-navigation/context-region.json"}}</script>
  <div data-target="react-partial.reactRoot"><header aria-label="Global navigation menu" data-component="Stack" class="GlobalNav styles-module__appHeader__YzYWk prc-Stack-Stack-UQ9k6" data-gap="none" data-direction="vertical" data-align="stretch" data-wrap="nowrap" data-justify="start" data-padding="none"><div data-component="Stack" class="prc-Stack-Stack-UQ9k6" data-direction="horizontal" data-align="center" data-wrap="nowrap" data-justify="center" data-padding="none"><div data-testid="top-nav-center" data-component="Stack" class="styles-module__center__R3QRv styles-module__withLocalNavigation__rjTJ_ GlobalNavBar-module__loggedOut__Jv1rk prc-Stack-Stack-UQ9k6" data-gap="condensed" data-direction="horizontal" data-align="stretch" data-wrap="nowrap" data-justify="start" data-padding="normal"><nav class="styles-module__contextRegion__VbSp2 prc-Breadcrumbs-BreadcrumbsBase-3Gb-B" aria-label="Breadcrumbs" data-overflow="menu" data-variant="normal" data-component="Breadcrumbs"><ol class="prc-Breadcrumbs-BreadcrumbsList-BKjpe"><li class="prc-Breadcrumbs-ItemWrapper-k0NLn"><a class="styles-module__contextCrumb__IzGIq prc-Breadcrumbs-Item-jcraJ" data-component="Breadcrumbs.Item" href="/Detanup01" data-discover="true"><span class="">Detanup01</span></a></li><li class="prc-Breadcrumbs-ItemWrapper-k0NLn"><a class="styles-module__contextCrumb__IzGIq prc-Breadcrumbs-Item-jcraJ" data-component="Breadcrumbs.Item" href="/Detanup01/gbe_fork" data-discover="true"><span class="styles-module__contextCrumbLast__tI2e3">gbe_fork</span></a></li></ol></nav></div><div data-testid="top-nav-right" data-component="Stack" class="styles-module__right__mlBQg styles-module__withLocalNavigation__rjTJ_ styles-module__rightWithResponsiveCreateButton__SKn2W prc-Stack-Stack-UQ9k6" data-gap="condensed" data-direction="horizontal" data-align="center" data-wrap="nowrap" data-justify="start" data-padding="normal"></div></div><h2 class="prc-src-InternalVisuallyHidden-2YaI6">Repository navigation</h2><nav class="prc-components-UnderlineWrapper-eT-Yj prc-UnderlineNav-UnderlineWrapper-GWONT LocalNavigation-module__LocalNavigation__b0Xc0" aria-label="Repository" data-variant="inset" data-overflow-mode="wrap" data-hide-icons-breakpoint="medium"><ul class="prc-UnderlineNav-ItemsList-oj8gN prc-components-UnderlineItemList-xKlKC" role="list"><li role="presentation" aria-hidden="true" class="prc-UnderlineNav-WrapSpacer--aLgz"></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a aria-current="page" data-tab-item="code" data-react-nav="code-view" data-react-nav-anchor="code-view-repo-link" data-turbo-frame="repo-content-turbo-frame" class="prc-components-UnderlineItem-7fP-n" href="/Detanup01/gbe_fork" data-discover="true"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-code" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></span><span data-component="text" data-content="Code">Code</span></a></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a data-tab-item="issues" data-react-nav="repo" data-turbo-frame="repo-content-turbo-frame" class="prc-components-UnderlineItem-7fP-n" href="/Detanup01/gbe_fork/issues" data-discover="true"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-issue-opened" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path></svg></span><span data-component="text" data-content="Issues">Issues</span><span data-component="counter"><span aria-hidden="true" data-variant="secondary" data-component="CounterLabel" class="prc-CounterLabel-CounterLabel-X-kRU">88</span><span class="prc-VisuallyHidden-VisuallyHidden-Q0qSB"> (<!-- -->88<!-- -->)</span></span></a></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a data-tab-item="pull-requests" data-turbo-frame="repo-content-turbo-frame" class="prc-components-UnderlineItem-7fP-n" href="/Detanup01/gbe_fork/pulls" data-discover="true"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-git-pull-request" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path></svg></span><span data-component="text" data-content="Pull requests">Pull requests</span><span data-component="counter"><span aria-hidden="true" data-variant="secondary" data-component="CounterLabel" class="prc-CounterLabel-CounterLabel-X-kRU">4</span><span class="prc-VisuallyHidden-VisuallyHidden-Q0qSB"> (<!-- -->4<!-- -->)</span></span></a></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a data-tab-item="discussions" data-turbo-frame="repo-content-turbo-frame" class="prc-components-UnderlineItem-7fP-n" href="/Detanup01/gbe_fork/discussions" data-discover="true"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-comment-discussion" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path></svg></span><span data-component="text" data-content="Discussions">Discussions</span></a></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a data-tab-item="actions" data-react-nav="actions-workflows" data-turbo-frame="repo-content-turbo-frame" class="prc-components-UnderlineItem-7fP-n" href="/Detanup01/gbe_fork/actions" data-discover="true"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-play" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path></svg></span><span data-component="text" data-content="Actions">Actions</span></a></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a data-tab-item="security-and-quality" data-turbo-frame="repo-content-turbo-frame" class="prc-components-UnderlineItem-7fP-n" href="/Detanup01/gbe_fork/security" data-discover="true"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-shield" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg></span><span data-component="text" data-content="Security and quality">Security and quality</span></a></li><li class="prc-UnderlineNav-UnderlineNavItem-syRjR"><a data-tab-item="insights" data-turbo-frame="repo-content-turbo-frame" class="prc-components-UnderlineItem-7fP-n" href="/Detanup01/gbe_fork/pulse" data-discover="true"><span data-component="icon"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-graph" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg></span><span data-component="text" data-content="Insights">Insights</span></a></li></ul><div class="prc-UnderlineNav-MoreButtonContainer-Dnrq6"><div class="prc-UnderlineNav-MoreButtonDivider-dN0a-"></div><button data-component="overflow-menu-button" type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk prc-UnderlineNav-MoreButton-Y8soj" data-loading="false" data-size="medium" data-variant="invisible" id="_R_2ktl_"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="text" class="prc-Button-Label-FWkx3"><span>More<span class="prc-src-InternalVisuallyHidden-2YaI6"> items</span></span></span></span><span data-component="trailingAction" class="prc-Button-Visual-YNt2F prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></button></div></nav><div class="d-none"></div></header></div>
</react-partial>


  



<turbo-frame id="repo-content-turbo-frame" target="_top" data-turbo-action="advance" class="">
    <div id="repo-content-pjax-container" class="repository-content " >
    



    
      
    








<react-app
  app-name="code-view"
  initial-path="/Detanup01/gbe_fork/blob/controller-def-init/dll/steam_friends.cpp"
  style="display: block; min-height: calc(100vh - 64px);"
  data-attempted-ssr="true"
  data-ssr="true"
  data-lazy="false"
  data-alternate="false"
  data-data-router-enabled="true"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-app.embeddedData">{"payload":{"codeViewBlobRoute":{"csv":null,"csvError":null,"headerInfo":{"toc":null},"issueTemplate":null,"discussionTemplate":null,"richText":null,"richTextTruncated":false,"renderedFileInfo":null,"symbols":{"timed_out":true,"not_analyzed":false,"symbols":[{"name":"persona_change","fully_qualified_name":"Steam_Friends::persona_change","kind":"method","ident_start":1135,"ident_end":1149,"extent_start":1115,"extent_end":1364,"ident_utf16":{"start":{"line_number":32,"utf16_col":20},"end":{"line_number":32,"utf16_col":34}},"extent_utf16":{"start":{"line_number":32,"utf16_col":0},"end":{"line_number":38,"utf16_col":1}}},{"name":"rich_presence_updated","fully_qualified_name":"Steam_Friends::rich_presence_updated","kind":"method","ident_start":1386,"ident_end":1407,"extent_start":1366,"extent_end":1601,"ident_utf16":{"start":{"line_number":40,"utf16_col":20},"end":{"line_number":40,"utf16_col":41}},"extent_utf16":{"start":{"line_number":40,"utf16_col":0},"end":{"line_number":46,"utf16_col":1}}},{"name":"is_appid_compatible","fully_qualified_name":"Steam_Friends::is_appid_compatible","kind":"method","ident_start":1623,"ident_end":1642,"extent_start":1603,"extent_end":1801,"ident_utf16":{"start":{"line_number":48,"utf16_col":20},"end":{"line_number":48,"utf16_col":39}},"extent_utf16":{"start":{"line_number":48,"utf16_col":0},"end":{"line_number":53,"utf16_col":1}}},{"name":"add_friend_avatars","fully_qualified_name":"Steam_Friends::add_friend_avatars","kind":"method","ident_start":1840,"ident_end":1858,"extent_start":1803,"extent_end":5143,"ident_utf16":{"start":{"line_number":55,"utf16_col":37},"end":{"line_number":55,"utf16_col":55}},"extent_utf16":{"start":{"line_number":55,"utf16_col":0},"end":{"line_number":133,"utf16_col":1}}},{"name":"steam_friends_callback","fully_qualified_name":"Steam_Friends::steam_friends_callback","kind":"method","ident_start":5165,"ident_end":5187,"extent_start":5145,"extent_end":5349,"ident_utf16":{"start":{"line_number":135,"utf16_col":20},"end":{"line_number":135,"utf16_col":42}},"extent_utf16":{"start":{"line_number":135,"utf16_col":0},"end":{"line_number":141,"utf16_col":1}}},{"name":"steam_friends_run_every_runcb","fully_qualified_name":"Steam_Friends::steam_friends_run_every_runcb","kind":"method","ident_start":5371,"ident_end":5400,"extent_start":5351,"extent_end":5542,"ident_utf16":{"start":{"line_number":143,"utf16_col":20},"end":{"line_number":143,"utf16_col":49}},"extent_utf16":{"start":{"line_number":143,"utf16_col":0},"end":{"line_number":149,"utf16_col":1}}},{"name":"resend_friend_data","fully_qualified_name":"Steam_Friends::resend_friend_data","kind":"method","ident_start":5564,"ident_end":5582,"extent_start":5544,"extent_end":5609,"ident_utf16":{"start":{"line_number":151,"utf16_col":20},"end":{"line_number":151,"utf16_col":38}},"extent_utf16":{"start":{"line_number":151,"utf16_col":0},"end":{"line_number":154,"utf16_col":1}}},{"name":"ok_friend_flags","fully_qualified_name":"Steam_Friends::ok_friend_flags","kind":"method","ident_start":5631,"ident_end":5646,"extent_start":5611,"extent_end":5747,"ident_utf16":{"start":{"line_number":156,"utf16_col":20},"end":{"line_number":156,"utf16_col":35}},"extent_utf16":{"start":{"line_number":156,"utf16_col":0},"end":{"line_number":161,"utf16_col":1}}},{"name":"Steam_Friends","fully_qualified_name":"Steam_Friends::Steam_Friends","kind":"method","ident_start":5765,"ident_end":5778,"extent_start":5750,"extent_end":6696,"ident_utf16":{"start":{"line_number":164,"utf16_col":15},"end":{"line_number":164,"utf16_col":28}},"extent_utf16":{"start":{"line_number":164,"utf16_col":0},"end":{"line_number":179,"utf16_col":1}}},{"name":"Local_Storage","fully_qualified_name":"Local_Storage","kind":"class","ident_start":5805,"ident_end":5818,"extent_start":5799,"extent_end":5818,"ident_utf16":{"start":{"line_number":164,"utf16_col":55},"end":{"line_number":164,"utf16_col":68}},"extent_utf16":{"start":{"line_number":164,"utf16_col":49},"end":{"line_number":164,"utf16_col":68}}},{"name":"SetPersonaName","fully_qualified_name":"Steam_Friends::SetPersonaName","kind":"method","ident_start":8360,"ident_end":8374,"extent_start":8330,"extent_end":8937,"ident_utf16":{"start":{"line_number":212,"utf16_col":30},"end":{"line_number":212,"utf16_col":44}},"extent_utf16":{"start":{"line_number":212,"utf16_col":0},"end":{"line_number":228,"utf16_col":1}}},{"name":"SetPersonaName_old","fully_qualified_name":"Steam_Friends::SetPersonaName_old","kind":"method","ident_start":8959,"ident_end":8977,"extent_start":8939,"extent_end":9127,"ident_utf16":{"start":{"line_number":230,"utf16_col":20},"end":{"line_number":230,"utf16_col":38}},"extent_utf16":{"start":{"line_number":230,"utf16_col":0},"end":{"line_number":235,"utf16_col":1}}},{"name":"GetPersonaState","fully_qualified_name":"Steam_Friends::GetPersonaState","kind":"method","ident_start":9197,"ident_end":9212,"extent_start":9168,"extent_end":9339,"ident_utf16":{"start":{"line_number":238,"utf16_col":29},"end":{"line_number":238,"utf16_col":44}},"extent_utf16":{"start":{"line_number":238,"utf16_col":0},"end":{"line_number":243,"utf16_col":1}}},{"name":"SetPersonaState","fully_qualified_name":"Steam_Friends::SetPersonaState","kind":"method","ident_start":9361,"ident_end":9376,"extent_start":9341,"extent_end":9433,"ident_utf16":{"start":{"line_number":245,"utf16_col":20},"end":{"line_number":245,"utf16_col":35}},"extent_utf16":{"start":{"line_number":245,"utf16_col":0},"end":{"line_number":248,"utf16_col":1}}},{"name":"AddFriend","fully_qualified_name":"Steam_Friends::AddFriend","kind":"method","ident_start":9455,"ident_end":9464,"extent_start":9435,"extent_end":9606,"ident_utf16":{"start":{"line_number":250,"utf16_col":20},"end":{"line_number":250,"utf16_col":29}},"extent_utf16":{"start":{"line_number":250,"utf16_col":0},"end":{"line_number":257,"utf16_col":1}}},{"name":"RemoveFriend","fully_qualified_name":"Steam_Friends::RemoveFriend","kind":"method","ident_start":9628,"ident_end":9640,"extent_start":9608,"extent_end":9782,"ident_utf16":{"start":{"line_number":259,"utf16_col":20},"end":{"line_number":259,"utf16_col":32}},"extent_utf16":{"start":{"line_number":259,"utf16_col":0},"end":{"line_number":266,"utf16_col":1}}},{"name":"HasFriend","fully_qualified_name":"Steam_Friends::HasFriend","kind":"method","ident_start":9804,"ident_end":9813,"extent_start":9784,"extent_end":9937,"ident_utf16":{"start":{"line_number":268,"utf16_col":20},"end":{"line_number":268,"utf16_col":29}},"extent_utf16":{"start":{"line_number":268,"utf16_col":0},"end":{"line_number":272,"utf16_col":1}}},{"name":"GetFriendCount","fully_qualified_name":"Steam_Friends::GetFriendCount","kind":"method","ident_start":10177,"ident_end":10191,"extent_start":10158,"extent_end":10468,"ident_utf16":{"start":{"line_number":278,"utf16_col":19},"end":{"line_number":278,"utf16_col":33}},"extent_utf16":{"start":{"line_number":278,"utf16_col":0},"end":{"line_number":286,"utf16_col":1}}},{"name":"GetFriendCount","fully_qualified_name":"Steam_Friends::GetFriendCount","kind":"method","ident_start":10489,"ident_end":10503,"extent_start":10470,"extent_end":10665,"ident_utf16":{"start":{"line_number":288,"utf16_col":19},"end":{"line_number":288,"utf16_col":33}},"extent_utf16":{"start":{"line_number":288,"utf16_col":0},"end":{"line_number":293,"utf16_col":1}}},{"name":"GetFriendByIndex","fully_qualified_name":"Steam_Friends::GetFriendByIndex","kind":"method","ident_start":10947,"ident_end":10963,"extent_start":10923,"extent_end":11331,"ident_utf16":{"start":{"line_number":299,"utf16_col":24},"end":{"line_number":299,"utf16_col":40}},"extent_utf16":{"start":{"line_number":299,"utf16_col":0},"end":{"line_number":311,"utf16_col":1}}},{"name":"GetFriendByIndex","fully_qualified_name":"Steam_Friends::GetFriendByIndex","kind":"method","ident_start":11353,"ident_end":11369,"extent_start":11333,"extent_end":11555,"ident_utf16":{"start":{"line_number":313,"utf16_col":20},"end":{"line_number":313,"utf16_col":36}},"extent_utf16":{"start":{"line_number":313,"utf16_col":0},"end":{"line_number":318,"utf16_col":1}}},{"name":"GetFriendByIndex","fully_qualified_name":"Steam_Friends::GetFriendByIndex","kind":"method","ident_start":11581,"ident_end":11597,"extent_start":11557,"extent_end":11781,"ident_utf16":{"start":{"line_number":320,"utf16_col":24},"end":{"line_number":320,"utf16_col":40}},"extent_utf16":{"start":{"line_number":320,"utf16_col":0},"end":{"line_number":325,"utf16_col":1}}},{"name":"GetFriendByIndex","fully_qualified_name":"Steam_Friends::GetFriendByIndex","kind":"method","ident_start":11804,"ident_end":11820,"extent_start":11784,"extent_end":12020,"ident_utf16":{"start":{"line_number":328,"utf16_col":20},"end":{"line_number":328,"utf16_col":36}},"extent_utf16":{"start":{"line_number":328,"utf16_col":0},"end":{"line_number":333,"utf16_col":1}}},{"name":"GetFriendRelationship","fully_qualified_name":"Steam_Friends::GetFriendRelationship","kind":"method","ident_start":12094,"ident_end":12115,"extent_start":12059,"extent_end":12489,"ident_utf16":{"start":{"line_number":337,"utf16_col":35},"end":{"line_number":337,"utf16_col":56}},"extent_utf16":{"start":{"line_number":337,"utf16_col":0},"end":{"line_number":345,"utf16_col":1}}},{"name":"GetFriendPersonaState","fully_qualified_name":"Steam_Friends::GetFriendPersonaState","kind":"method","ident_start":12751,"ident_end":12772,"extent_start":12722,"extent_end":13198,"ident_utf16":{"start":{"line_number":350,"utf16_col":29},"end":{"line_number":350,"utf16_col":50}},"extent_utf16":{"start":{"line_number":350,"utf16_col":0},"end":{"line_number":361,"utf16_col":1}}},{"name":"Deprecated_GetFriendGamePlayed","fully_qualified_name":"Steam_Friends::Deprecated_GetFriendGamePlayed","kind":"method","ident_start":13220,"ident_end":13250,"extent_start":13200,"extent_end":13512,"ident_utf16":{"start":{"line_number":363,"utf16_col":20},"end":{"line_number":363,"utf16_col":50}},"extent_utf16":{"start":{"line_number":363,"utf16_col":0},"end":{"line_number":368,"utf16_col":1}}},{"name":"AddFriendByName","fully_qualified_name":"Steam_Friends::AddFriendByName","kind":"method","ident_start":14399,"ident_end":14414,"extent_start":14378,"extent_end":14491,"ident_utf16":{"start":{"line_number":391,"utf16_col":21},"end":{"line_number":391,"utf16_col":36}},"extent_utf16":{"start":{"line_number":391,"utf16_col":0},"end":{"line_number":395,"utf16_col":1}}},{"name":"GetFriendCount","fully_qualified_name":"Steam_Friends::GetFriendCount","kind":"method","ident_start":14512,"ident_end":14526,"extent_start":14493,"extent_end":14618,"ident_utf16":{"start":{"line_number":397,"utf16_col":19},"end":{"line_number":397,"utf16_col":33}},"extent_utf16":{"start":{"line_number":397,"utf16_col":0},"end":{"line_number":401,"utf16_col":1}}},{"name":"GetFriendByIndex","fully_qualified_name":"Steam_Friends::GetFriendByIndex","kind":"method","ident_start":14644,"ident_end":14660,"extent_start":14620,"extent_end":14774,"ident_utf16":{"start":{"line_number":403,"utf16_col":24},"end":{"line_number":403,"utf16_col":40}},"extent_utf16":{"start":{"line_number":403,"utf16_col":0},"end":{"line_number":407,"utf16_col":1}}},{"name":"SendMsgToFriend","fully_qualified_name":"Steam_Friends::SendMsgToFriend","kind":"method","ident_start":14796,"ident_end":14811,"extent_start":14776,"extent_end":14918,"ident_utf16":{"start":{"line_number":409,"utf16_col":20},"end":{"line_number":409,"utf16_col":35}},"extent_utf16":{"start":{"line_number":409,"utf16_col":0},"end":{"line_number":412,"utf16_col":1}}},{"name":"SetFriendRegValue","fully_qualified_name":"Steam_Friends::SetFriendRegValue","kind":"method","ident_start":14940,"ident_end":14957,"extent_start":14920,"extent_end":15480,"ident_utf16":{"start":{"line_number":414,"utf16_col":20},"end":{"line_number":414,"utf16_col":37}},"extent_utf16":{"start":{"line_number":414,"utf16_col":0},"end":{"line_number":431,"utf16_col":1}}},{"name":"GetChatMessage","fully_qualified_name":"Steam_Friends::GetChatMessage","kind":"method","ident_start":16009,"ident_end":16023,"extent_start":15990,"extent_end":16239,"ident_utf16":{"start":{"line_number":453,"utf16_col":19},"end":{"line_number":453,"utf16_col":33}},"extent_utf16":{"start":{"line_number":453,"utf16_col":0},"end":{"line_number":459,"utf16_col":1}}},{"name":"SendMsgToFriend","fully_qualified_name":"Steam_Friends::SendMsgToFriend","kind":"method","ident_start":16261,"ident_end":16276,"extent_start":16241,"extent_end":16415,"ident_utf16":{"start":{"line_number":461,"utf16_col":20},"end":{"line_number":461,"utf16_col":35}},"extent_utf16":{"start":{"line_number":461,"utf16_col":0},"end":{"line_number":465,"utf16_col":1}}},{"name":"GetChatIDOfChatHistoryStart","fully_qualified_name":"Steam_Friends::GetChatIDOfChatHistoryStart","kind":"method","ident_start":16436,"ident_end":16463,"extent_start":16417,"extent_end":16529,"ident_utf16":{"start":{"line_number":467,"utf16_col":19},"end":{"line_number":467,"utf16_col":46}},"extent_utf16":{"start":{"line_number":467,"utf16_col":0},"end":{"line_number":471,"utf16_col":1}}},{"name":"SetChatHistoryStart","fully_qualified_name":"Steam_Friends::SetChatHistoryStart","kind":"method","ident_start":16551,"ident_end":16570,"extent_start":16531,"extent_end":16635,"ident_utf16":{"start":{"line_number":473,"utf16_col":20},"end":{"line_number":473,"utf16_col":39}},"extent_utf16":{"start":{"line_number":473,"utf16_col":0},"end":{"line_number":476,"utf16_col":1}}},{"name":"ClearChatHistory","fully_qualified_name":"Steam_Friends::ClearChatHistory","kind":"method","ident_start":16657,"ident_end":16673,"extent_start":16637,"extent_end":16725,"ident_utf16":{"start":{"line_number":478,"utf16_col":20},"end":{"line_number":478,"utf16_col":36}},"extent_utf16":{"start":{"line_number":478,"utf16_col":0},"end":{"line_number":481,"utf16_col":1}}},{"name":"InviteFriendByEmail","fully_qualified_name":"Steam_Friends::InviteFriendByEmail","kind":"method","ident_start":16747,"ident_end":16766,"extent_start":16727,"extent_end":16841,"ident_utf16":{"start":{"line_number":483,"utf16_col":20},"end":{"line_number":483,"utf16_col":39}},"extent_utf16":{"start":{"line_number":483,"utf16_col":0},"end":{"line_number":487,"utf16_col":1}}},{"name":"GetBlockedFriendCount","fully_qualified_name":"Steam_Friends::GetBlockedFriendCount","kind":"method","ident_start":16862,"ident_end":16883,"extent_start":16843,"extent_end":16968,"ident_utf16":{"start":{"line_number":489,"utf16_col":19},"end":{"line_number":489,"utf16_col":40}},"extent_utf16":{"start":{"line_number":489,"utf16_col":0},"end":{"line_number":493,"utf16_col":1}}},{"name":"GetFriendGamePlayed","fully_qualified_name":"Steam_Friends::GetFriendGamePlayed","kind":"method","ident_start":16990,"ident_end":17009,"extent_start":16970,"extent_end":17214,"ident_utf16":{"start":{"line_number":495,"utf16_col":20},"end":{"line_number":495,"utf16_col":39}},"extent_utf16":{"start":{"line_number":495,"utf16_col":0},"end":{"line_number":499,"utf16_col":1}}},{"name":"GetFriendGamePlayed2","fully_qualified_name":"Steam_Friends::GetFriendGamePlayed2","kind":"method","ident_start":17236,"ident_end":17256,"extent_start":17216,"extent_end":17486,"ident_utf16":{"start":{"line_number":501,"utf16_col":20},"end":{"line_number":501,"utf16_col":40}},"extent_utf16":{"start":{"line_number":501,"utf16_col":0},"end":{"line_number":505,"utf16_col":1}}},{"name":"GetFriendGamePlayed","fully_qualified_name":"Steam_Friends::GetFriendGamePlayed","kind":"method","ident_start":17614,"ident_end":17633,"extent_start":17594,"extent_end":18984,"ident_utf16":{"start":{"line_number":509,"utf16_col":20},"end":{"line_number":509,"utf16_col":39}},"extent_utf16":{"start":{"line_number":509,"utf16_col":0},"end":{"line_number":543,"utf16_col":1}}},{"name":"GetFriendGamePlayed","fully_qualified_name":"Steam_Friends::GetFriendGamePlayed","kind":"method","ident_start":19006,"ident_end":19025,"extent_start":18986,"extent_end":19539,"ident_utf16":{"start":{"line_number":545,"utf16_col":20},"end":{"line_number":545,"utf16_col":39}},"extent_utf16":{"start":{"line_number":545,"utf16_col":0},"end":{"line_number":559,"utf16_col":1}}},{"name":"GetFriendSteamLevel","fully_qualified_name":"Steam_Friends::GetFriendSteamLevel","kind":"method","ident_start":20046,"ident_end":20065,"extent_start":20027,"extent_end":20197,"ident_utf16":{"start":{"line_number":574,"utf16_col":19},"end":{"line_number":574,"utf16_col":38}},"extent_utf16":{"start":{"line_number":574,"utf16_col":0},"end":{"line_number":579,"utf16_col":1}}},{"name":"GetFriendsGroupCount","fully_qualified_name":"Steam_Friends::GetFriendsGroupCount","kind":"method","ident_start":20602,"ident_end":20622,"extent_start":20583,"extent_end":20728,"ident_utf16":{"start":{"line_number":593,"utf16_col":19},"end":{"line_number":593,"utf16_col":39}},"extent_utf16":{"start":{"line_number":593,"utf16_col":0},"end":{"line_number":598,"utf16_col":1}}},{"name":"GetFriendsGroupIDByIndex","fully_qualified_name":"Steam_Friends::GetFriendsGroupIDByIndex","kind":"method","ident_start":20864,"ident_end":20888,"extent_start":20832,"extent_end":21026,"ident_utf16":{"start":{"line_number":601,"utf16_col":32},"end":{"line_number":601,"utf16_col":56}},"extent_utf16":{"start":{"line_number":601,"utf16_col":0},"end":{"line_number":606,"utf16_col":1}}},{"name":"GetFriendsGroupMembersCount","fully_qualified_name":"Steam_Friends::GetFriendsGroupMembersCount","kind":"method","ident_start":21391,"ident_end":21418,"extent_start":21372,"extent_end":21557,"ident_utf16":{"start":{"line_number":617,"utf16_col":19},"end":{"line_number":617,"utf16_col":46}},"extent_utf16":{"start":{"line_number":617,"utf16_col":0},"end":{"line_number":622,"utf16_col":1}}},{"name":"GetFriendsGroupMembersList","fully_qualified_name":"Steam_Friends::GetFriendsGroupMembersList","kind":"method","ident_start":21715,"ident_end":21741,"extent_start":21695,"extent_end":21997,"ident_utf16":{"start":{"line_number":625,"utf16_col":20},"end":{"line_number":625,"utf16_col":46}},"extent_utf16":{"start":{"line_number":625,"utf16_col":0},"end":{"line_number":629,"utf16_col":1}}},{"name":"HasFriend","fully_qualified_name":"Steam_Friends::HasFriend","kind":"method","ident_start":22195,"ident_end":22204,"extent_start":22175,"extent_end":22465,"ident_utf16":{"start":{"line_number":634,"utf16_col":20},"end":{"line_number":634,"utf16_col":29}},"extent_utf16":{"start":{"line_number":634,"utf16_col":0},"end":{"line_number":642,"utf16_col":1}}},{"name":"HasFriend","fully_qualified_name":"Steam_Friends::HasFriend","kind":"method","ident_start":22487,"ident_end":22496,"extent_start":22467,"extent_end":22694,"ident_utf16":{"start":{"line_number":644,"utf16_col":20},"end":{"line_number":644,"utf16_col":29}},"extent_utf16":{"start":{"line_number":644,"utf16_col":0},"end":{"line_number":649,"utf16_col":1}}},{"name":"GetClanCount","fully_qualified_name":"Steam_Friends::GetClanCount","kind":"method","ident_start":22762,"ident_end":22774,"extent_start":22743,"extent_end":22973,"ident_utf16":{"start":{"line_number":652,"utf16_col":19},"end":{"line_number":652,"utf16_col":31}},"extent_utf16":{"start":{"line_number":652,"utf16_col":0},"end":{"line_number":659,"utf16_col":1}}},{"name":"GetClanByIndex","fully_qualified_name":"Steam_Friends::GetClanByIndex","kind":"method","ident_start":22999,"ident_end":23013,"extent_start":22975,"extent_end":23287,"ident_utf16":{"start":{"line_number":661,"utf16_col":24},"end":{"line_number":661,"utf16_col":38}},"extent_utf16":{"start":{"line_number":661,"utf16_col":0},"end":{"line_number":671,"utf16_col":1}}},{"name":"GetClanByIndex","fully_qualified_name":"Steam_Friends::GetClanByIndex","kind":"method","ident_start":23309,"ident_end":23323,"extent_start":23289,"extent_end":23483,"ident_utf16":{"start":{"line_number":673,"utf16_col":20},"end":{"line_number":673,"utf16_col":34}},"extent_utf16":{"start":{"line_number":673,"utf16_col":0},"end":{"line_number":678,"utf16_col":1}}},{"name":"InviteFriendToClan","fully_qualified_name":"Steam_Friends::InviteFriendToClan","kind":"method","ident_start":23829,"ident_end":23847,"extent_start":23809,"extent_end":23939,"ident_utf16":{"start":{"line_number":690,"utf16_col":20},"end":{"line_number":690,"utf16_col":38}},"extent_utf16":{"start":{"line_number":690,"utf16_col":0},"end":{"line_number":694,"utf16_col":1}}},{"name":"AcknowledgeInviteToClan","fully_qualified_name":"Steam_Friends::AcknowledgeInviteToClan","kind":"method","ident_start":23961,"ident_end":23984,"extent_start":23941,"extent_end":24082,"ident_utf16":{"start":{"line_number":696,"utf16_col":20},"end":{"line_number":696,"utf16_col":43}},"extent_utf16":{"start":{"line_number":696,"utf16_col":0},"end":{"line_number":700,"utf16_col":1}}},{"name":"GetClanActivityCounts","fully_qualified_name":"Steam_Friends::GetClanActivityCounts","kind":"method","ident_start":24506,"ident_end":24527,"extent_start":24486,"extent_end":24743,"ident_utf16":{"start":{"line_number":713,"utf16_col":20},"end":{"line_number":713,"utf16_col":41}},"extent_utf16":{"start":{"line_number":713,"utf16_col":0},"end":{"line_number":718,"utf16_col":1}}},{"name":"DownloadClanActivityCounts","fully_qualified_name":"Steam_Friends::DownloadClanActivityCounts","kind":"method","ident_start":24928,"ident_end":24954,"extent_start":24898,"extent_end":25141,"ident_utf16":{"start":{"line_number":721,"utf16_col":30},"end":{"line_number":721,"utf16_col":56}},"extent_utf16":{"start":{"line_number":721,"utf16_col":0},"end":{"line_number":726,"utf16_col":1}}},{"name":"GetFriendCountFromSource","fully_qualified_name":"Steam_Friends::GetFriendCountFromSource","kind":"method","ident_start":25484,"ident_end":25508,"extent_start":25465,"extent_end":25688,"ident_utf16":{"start":{"line_number":733,"utf16_col":19},"end":{"line_number":733,"utf16_col":43}},"extent_utf16":{"start":{"line_number":733,"utf16_col":0},"end":{"line_number":739,"utf16_col":1}}},{"name":"GetFriendFromSourceByIndex","fully_qualified_name":"Steam_Friends::GetFriendFromSourceByIndex","kind":"method","ident_start":25714,"ident_end":25740,"extent_start":25690,"extent_end":25894,"ident_utf16":{"start":{"line_number":741,"utf16_col":24},"end":{"line_number":741,"utf16_col":50}},"extent_utf16":{"start":{"line_number":741,"utf16_col":0},"end":{"line_number":746,"utf16_col":1}}},{"name":"GetFriendFromSourceByIndex","fully_qualified_name":"Steam_Friends::GetFriendFromSourceByIndex","kind":"method","ident_start":25916,"ident_end":25942,"extent_start":25896,"extent_end":26153,"ident_utf16":{"start":{"line_number":748,"utf16_col":20},"end":{"line_number":748,"utf16_col":46}},"extent_utf16":{"start":{"line_number":748,"utf16_col":0},"end":{"line_number":753,"utf16_col":1}}},{"name":"IsUserInSource","fully_qualified_name":"Steam_Friends::IsUserInSource","kind":"method","ident_start":26267,"ident_end":26281,"extent_start":26247,"extent_end":26988,"ident_utf16":{"start":{"line_number":757,"utf16_col":20},"end":{"line_number":757,"utf16_col":34}},"extent_utf16":{"start":{"line_number":757,"utf16_col":0},"end":{"line_number":776,"utf16_col":1}}},{"name":"SetInGameVoiceSpeaking","fully_qualified_name":"Steam_Friends::SetInGameVoiceSpeaking","kind":"method","ident_start":27134,"ident_end":27156,"extent_start":27114,"extent_end":27286,"ident_utf16":{"start":{"line_number":780,"utf16_col":20},"end":{"line_number":780,"utf16_col":42}},"extent_utf16":{"start":{"line_number":780,"utf16_col":0},"end":{"line_number":784,"utf16_col":1}}},{"name":"ActivateGameOverlay","fully_qualified_name":"Steam_Friends::ActivateGameOverlay","kind":"method","ident_start":27501,"ident_end":27520,"extent_start":27481,"extent_end":28147,"ident_utf16":{"start":{"line_number":789,"utf16_col":20},"end":{"line_number":789,"utf16_col":39}},"extent_utf16":{"start":{"line_number":789,"utf16_col":0},"end":{"line_number":805,"utf16_col":1}}},{"name":"ActivateGameOverlayToUser","fully_qualified_name":"Steam_Friends::ActivateGameOverlayToUser","kind":"method","ident_start":29127,"ident_end":29152,"extent_start":29107,"extent_end":29332,"ident_utf16":{"start":{"line_number":819,"utf16_col":20},"end":{"line_number":819,"utf16_col":45}},"extent_utf16":{"start":{"line_number":819,"utf16_col":0},"end":{"line_number":823,"utf16_col":1}}},{"name":"ActivateGameOverlayToWebPage","fully_qualified_name":"Steam_Friends::ActivateGameOverlayToWebPage","kind":"method","ident_start":29503,"ident_end":29531,"extent_start":29483,"extent_end":29747,"ident_utf16":{"start":{"line_number":828,"utf16_col":20},"end":{"line_number":828,"utf16_col":48}},"extent_utf16":{"start":{"line_number":828,"utf16_col":0},"end":{"line_number":833,"utf16_col":1}}},{"name":"ActivateGameOverlayToWebPage","fully_qualified_name":"Steam_Friends::ActivateGameOverlayToWebPage","kind":"method","ident_start":29769,"ident_end":29797,"extent_start":29749,"extent_end":29998,"ident_utf16":{"start":{"line_number":835,"utf16_col":20},"end":{"line_number":835,"utf16_col":48}},"extent_utf16":{"start":{"line_number":835,"utf16_col":0},"end":{"line_number":840,"utf16_col":1}}},{"name":"ActivateGameOverlayToStore","fully_qualified_name":"Steam_Friends::ActivateGameOverlayToStore","kind":"method","ident_start":30068,"ident_end":30094,"extent_start":30048,"extent_end":30229,"ident_utf16":{"start":{"line_number":843,"utf16_col":20},"end":{"line_number":843,"utf16_col":46}},"extent_utf16":{"start":{"line_number":843,"utf16_col":0},"end":{"line_number":847,"utf16_col":1}}},{"name":"ActivateGameOverlayToStore","fully_qualified_name":"Steam_Friends::ActivateGameOverlayToStore","kind":"method","ident_start":30251,"ident_end":30277,"extent_start":30231,"extent_end":30384,"ident_utf16":{"start":{"line_number":849,"utf16_col":20},"end":{"line_number":849,"utf16_col":46}},"extent_utf16":{"start":{"line_number":849,"utf16_col":0},"end":{"line_number":853,"utf16_col":1}}},{"name":"SetPlayedWith","fully_qualified_name":"Steam_Friends::SetPlayedWith","kind":"method","ident_start":30533,"ident_end":30546,"extent_start":30513,"extent_end":30670,"ident_utf16":{"start":{"line_number":857,"utf16_col":20},"end":{"line_number":857,"utf16_col":33}},"extent_utf16":{"start":{"line_number":857,"utf16_col":0},"end":{"line_number":861,"utf16_col":1}}},{"name":"ActivateGameOverlayInviteDialog","fully_qualified_name":"Steam_Friends::ActivateGameOverlayInviteDialog","kind":"method","ident_start":30795,"ident_end":30826,"extent_start":30775,"extent_end":31558,"ident_utf16":{"start":{"line_number":865,"utf16_col":20},"end":{"line_number":865,"utf16_col":51}},"extent_utf16":{"start":{"line_number":865,"utf16_col":0},"end":{"line_number":882,"utf16_col":1}}},{"name":"GetSmallFriendAvatar","fully_qualified_name":"Steam_Friends::GetSmallFriendAvatar","kind":"method","ident_start":31712,"ident_end":31732,"extent_start":31693,"extent_end":32071,"ident_utf16":{"start":{"line_number":885,"utf16_col":19},"end":{"line_number":885,"utf16_col":39}},"extent_utf16":{"start":{"line_number":885,"utf16_col":0},"end":{"line_number":892,"utf16_col":1}}},{"name":"GetMediumFriendAvatar","fully_qualified_name":"Steam_Friends::GetMediumFriendAvatar","kind":"method","ident_start":32227,"ident_end":32248,"extent_start":32208,"extent_end":32463,"ident_utf16":{"start":{"line_number":896,"utf16_col":19},"end":{"line_number":896,"utf16_col":40}},"extent_utf16":{"start":{"line_number":896,"utf16_col":0},"end":{"line_number":902,"utf16_col":1}}},{"name":"GetLargeFriendAvatar","fully_qualified_name":"Steam_Friends::GetLargeFriendAvatar","kind":"method","ident_start":32748,"ident_end":32768,"extent_start":32729,"extent_end":32982,"ident_utf16":{"start":{"line_number":907,"utf16_col":19},"end":{"line_number":907,"utf16_col":39}},"extent_utf16":{"start":{"line_number":907,"utf16_col":0},"end":{"line_number":913,"utf16_col":1}}},{"name":"GetFriendAvatar","fully_qualified_name":"Steam_Friends::GetFriendAvatar","kind":"method","ident_start":33003,"ident_end":33018,"extent_start":32984,"extent_end":33458,"ident_utf16":{"start":{"line_number":915,"utf16_col":19},"end":{"line_number":915,"utf16_col":34}},"extent_utf16":{"start":{"line_number":915,"utf16_col":0},"end":{"line_number":928,"utf16_col":1}}},{"name":"GetFriendAvatar","fully_qualified_name":"Steam_Friends::GetFriendAvatar","kind":"method","ident_start":33479,"ident_end":33494,"extent_start":33460,"extent_end":33671,"ident_utf16":{"start":{"line_number":930,"utf16_col":19},"end":{"line_number":930,"utf16_col":34}},"extent_utf16":{"start":{"line_number":930,"utf16_col":0},"end":{"line_number":935,"utf16_col":1}}},{"name":"RequestUserInformation","fully_qualified_name":"Steam_Friends::RequestUserInformation","kind":"method","ident_start":34204,"ident_end":34226,"extent_start":34184,"extent_end":34471,"ident_utf16":{"start":{"line_number":942,"utf16_col":20},"end":{"line_number":942,"utf16_col":42}},"extent_utf16":{"start":{"line_number":942,"utf16_col":0},"end":{"line_number":949,"utf16_col":1}}},{"name":"RequestClanOfficerList","fully_qualified_name":"Steam_Friends::RequestClanOfficerList","kind":"method","ident_start":34961,"ident_end":34983,"extent_start":34931,"extent_end":35111,"ident_utf16":{"start":{"line_number":959,"utf16_col":30},"end":{"line_number":959,"utf16_col":52}},"extent_utf16":{"start":{"line_number":959,"utf16_col":0},"end":{"line_number":964,"utf16_col":1}}},{"name":"GetClanOwner","fully_qualified_name":"Steam_Friends::GetClanOwner","kind":"method","ident_start":35280,"ident_end":35292,"extent_start":35256,"extent_end":35431,"ident_utf16":{"start":{"line_number":970,"utf16_col":24},"end":{"line_number":970,"utf16_col":36}},"extent_utf16":{"start":{"line_number":970,"utf16_col":0},"end":{"line_number":975,"utf16_col":1}}},{"name":"GetClanOwner","fully_qualified_name":"Steam_Friends::GetClanOwner","kind":"method","ident_start":35453,"ident_end":35465,"extent_start":35433,"extent_end":35635,"ident_utf16":{"start":{"line_number":977,"utf16_col":20},"end":{"line_number":977,"utf16_col":32}},"extent_utf16":{"start":{"line_number":977,"utf16_col":0},"end":{"line_number":982,"utf16_col":1}}},{"name":"GetClanOfficerCount","fully_qualified_name":"Steam_Friends::GetClanOfficerCount","kind":"method","ident_start":35722,"ident_end":35741,"extent_start":35703,"extent_end":35869,"ident_utf16":{"start":{"line_number":985,"utf16_col":19},"end":{"line_number":985,"utf16_col":38}},"extent_utf16":{"start":{"line_number":985,"utf16_col":0},"end":{"line_number":990,"utf16_col":1}}},{"name":"GetClanOfficerByIndex","fully_qualified_name":"Steam_Friends::GetClanOfficerByIndex","kind":"method","ident_start":35980,"ident_end":36001,"extent_start":35956,"extent_end":36154,"ident_utf16":{"start":{"line_number":993,"utf16_col":24},"end":{"line_number":993,"utf16_col":45}},"extent_utf16":{"start":{"line_number":993,"utf16_col":0},"end":{"line_number":998,"utf16_col":1}}},{"name":"GetClanOfficerByIndex","fully_qualified_name":"Steam_Friends::GetClanOfficerByIndex","kind":"method","ident_start":36176,"ident_end":36197,"extent_start":36156,"extent_end":36400,"ident_utf16":{"start":{"line_number":1000,"utf16_col":20},"end":{"line_number":1000,"utf16_col":41}},"extent_utf16":{"start":{"line_number":1000,"utf16_col":0},"end":{"line_number":1005,"utf16_col":1}}},{"name":"GetUserRestrictions","fully_qualified_name":"Steam_Friends::GetUserRestrictions","kind":"method","ident_start":36675,"ident_end":36694,"extent_start":36653,"extent_end":36821,"ident_utf16":{"start":{"line_number":1010,"utf16_col":22},"end":{"line_number":1010,"utf16_col":41}},"extent_utf16":{"start":{"line_number":1010,"utf16_col":0},"end":{"line_number":1015,"utf16_col":1}}},{"name":"GetUserRestrictions_old","fully_qualified_name":"Steam_Friends::GetUserRestrictions_old","kind":"method","ident_start":36855,"ident_end":36878,"extent_start":36823,"extent_end":37005,"ident_utf16":{"start":{"line_number":1017,"utf16_col":32},"end":{"line_number":1017,"utf16_col":55}},"extent_utf16":{"start":{"line_number":1017,"utf16_col":0},"end":{"line_number":1022,"utf16_col":1}}},{"name":"SetRichPresence","fully_qualified_name":"Steam_Friends::SetRichPresence","kind":"method","ident_start":37820,"ident_end":37835,"extent_start":37800,"extent_end":38572,"ident_utf16":{"start":{"line_number":1034,"utf16_col":20},"end":{"line_number":1034,"utf16_col":35}},"extent_utf16":{"start":{"line_number":1034,"utf16_col":0},"end":{"line_number":1053,"utf16_col":1}}},{"name":"ClearRichPresence","fully_qualified_name":"Steam_Friends::ClearRichPresence","kind":"method","ident_start":38594,"ident_end":38611,"extent_start":38574,"extent_end":38776,"ident_utf16":{"start":{"line_number":1055,"utf16_col":20},"end":{"line_number":1055,"utf16_col":37}},"extent_utf16":{"start":{"line_number":1055,"utf16_col":0},"end":{"line_number":1062,"utf16_col":1}}},{"name":"GetFriendRichPresenceKeyCount","fully_qualified_name":"Steam_Friends::GetFriendRichPresenceKeyCount","kind":"method","ident_start":39834,"ident_end":39863,"extent_start":39815,"extent_end":40265,"ident_utf16":{"start":{"line_number":1096,"utf16_col":19},"end":{"line_number":1096,"utf16_col":48}},"extent_utf16":{"start":{"line_number":1096,"utf16_col":0},"end":{"line_number":1112,"utf16_col":1}}},{"name":"RequestFriendRichPresence","fully_qualified_name":"Steam_Friends::RequestFriendRichPresence","kind":"method","ident_start":40994,"ident_end":41019,"extent_start":40974,"extent_end":41273,"ident_utf16":{"start":{"line_number":1138,"utf16_col":20},"end":{"line_number":1138,"utf16_col":45}},"extent_utf16":{"start":{"line_number":1138,"utf16_col":0},"end":{"line_number":1145,"utf16_col":1}}},{"name":"InviteUserToGame","fully_qualified_name":"Steam_Friends::InviteUserToGame","kind":"method","ident_start":41588,"ident_end":41604,"extent_start":41568,"extent_end":42248,"ident_utf16":{"start":{"line_number":1152,"utf16_col":20},"end":{"line_number":1152,"utf16_col":36}},"extent_utf16":{"start":{"line_number":1152,"utf16_col":0},"end":{"line_number":1167,"utf16_col":1}}},{"name":"GetCoplayFriendCount","fully_qualified_name":"Steam_Friends::GetCoplayFriendCount","kind":"method","ident_start":42437,"ident_end":42457,"extent_start":42418,"extent_end":42563,"ident_utf16":{"start":{"line_number":1173,"utf16_col":19},"end":{"line_number":1173,"utf16_col":39}},"extent_utf16":{"start":{"line_number":1173,"utf16_col":0},"end":{"line_number":1178,"utf16_col":1}}},{"name":"GetCoplayFriend","fully_qualified_name":"Steam_Friends::GetCoplayFriend","kind":"method","ident_start":42589,"ident_end":42604,"extent_start":42565,"extent_end":42740,"ident_utf16":{"start":{"line_number":1180,"utf16_col":24},"end":{"line_number":1180,"utf16_col":39}},"extent_utf16":{"start":{"line_number":1180,"utf16_col":0},"end":{"line_number":1185,"utf16_col":1}}},{"name":"GetCoplayFriend","fully_qualified_name":"Steam_Friends::GetCoplayFriend","kind":"method","ident_start":42762,"ident_end":42777,"extent_start":42742,"extent_end":42950,"ident_utf16":{"start":{"line_number":1187,"utf16_col":20},"end":{"line_number":1187,"utf16_col":35}},"extent_utf16":{"start":{"line_number":1187,"utf16_col":0},"end":{"line_number":1192,"utf16_col":1}}},{"name":"GetFriendCoplayTime","fully_qualified_name":"Steam_Friends::GetFriendCoplayTime","kind":"method","ident_start":42971,"ident_end":42990,"extent_start":42952,"extent_end":43120,"ident_utf16":{"start":{"line_number":1194,"utf16_col":19},"end":{"line_number":1194,"utf16_col":38}},"extent_utf16":{"start":{"line_number":1194,"utf16_col":0},"end":{"line_number":1199,"utf16_col":1}}},{"name":"GetFriendCoplayGame","fully_qualified_name":"Steam_Friends::GetFriendCoplayGame","kind":"method","ident_start":43145,"ident_end":43164,"extent_start":43122,"extent_end":43294,"ident_utf16":{"start":{"line_number":1201,"utf16_col":23},"end":{"line_number":1201,"utf16_col":42}},"extent_utf16":{"start":{"line_number":1201,"utf16_col":0},"end":{"line_number":1206,"utf16_col":1}}},{"name":"JoinClanChatRoom","fully_qualified_name":"Steam_Friends::JoinClanChatRoom","kind":"method","ident_start":43728,"ident_end":43744,"extent_start":43698,"extent_end":44258,"ident_utf16":{"start":{"line_number":1214,"utf16_col":30},"end":{"line_number":1214,"utf16_col":46}},"extent_utf16":{"start":{"line_number":1214,"utf16_col":0},"end":{"line_number":1226,"utf16_col":1}}},{"name":"LeaveClanChatRoom","fully_qualified_name":"Steam_Friends::LeaveClanChatRoom","kind":"method","ident_start":44280,"ident_end":44297,"extent_start":44260,"extent_end":44429,"ident_utf16":{"start":{"line_number":1228,"utf16_col":20},"end":{"line_number":1228,"utf16_col":37}},"extent_utf16":{"start":{"line_number":1228,"utf16_col":0},"end":{"line_number":1233,"utf16_col":1}}},{"name":"GetClanChatMemberCount","fully_qualified_name":"Steam_Friends::GetClanChatMemberCount","kind":"method","ident_start":44450,"ident_end":44472,"extent_start":44431,"extent_end":44600,"ident_utf16":{"start":{"line_number":1235,"utf16_col":19},"end":{"line_number":1235,"utf16_col":41}},"extent_utf16":{"start":{"line_number":1235,"utf16_col":0},"end":{"line_number":1240,"utf16_col":1}}},{"name":"GetChatMemberByIndex","fully_qualified_name":"Steam_Friends::GetChatMemberByIndex","kind":"method","ident_start":44626,"ident_end":44646,"extent_start":44602,"extent_end":44796,"ident_utf16":{"start":{"line_number":1242,"utf16_col":24},"end":{"line_number":1242,"utf16_col":44}},"extent_utf16":{"start":{"line_number":1242,"utf16_col":0},"end":{"line_number":1247,"utf16_col":1}}},{"name":"GetChatMemberByIndex","fully_qualified_name":"Steam_Friends::GetChatMemberByIndex","kind":"method","ident_start":44818,"ident_end":44838,"extent_start":44798,"extent_end":45034,"ident_utf16":{"start":{"line_number":1249,"utf16_col":20},"end":{"line_number":1249,"utf16_col":40}},"extent_utf16":{"start":{"line_number":1249,"utf16_col":0},"end":{"line_number":1254,"utf16_col":1}}},{"name":"SendClanChatMessage","fully_qualified_name":"Steam_Friends::SendClanChatMessage","kind":"method","ident_start":45056,"ident_end":45075,"extent_start":45036,"extent_end":45232,"ident_utf16":{"start":{"line_number":1256,"utf16_col":20},"end":{"line_number":1256,"utf16_col":39}},"extent_utf16":{"start":{"line_number":1256,"utf16_col":0},"end":{"line_number":1261,"utf16_col":1}}},{"name":"GetClanChatMessage","fully_qualified_name":"Steam_Friends::GetClanChatMessage","kind":"method","ident_start":45253,"ident_end":45271,"extent_start":45234,"extent_end":45529,"ident_utf16":{"start":{"line_number":1263,"utf16_col":19},"end":{"line_number":1263,"utf16_col":37}},"extent_utf16":{"start":{"line_number":1263,"utf16_col":0},"end":{"line_number":1268,"utf16_col":1}}},{"name":"IsClanChatAdmin","fully_qualified_name":"Steam_Friends::IsClanChatAdmin","kind":"method","ident_start":45551,"ident_end":45566,"extent_start":45531,"extent_end":45724,"ident_utf16":{"start":{"line_number":1270,"utf16_col":20},"end":{"line_number":1270,"utf16_col":35}},"extent_utf16":{"start":{"line_number":1270,"utf16_col":0},"end":{"line_number":1275,"utf16_col":1}}},{"name":"IsClanChatWindowOpenInSteam","fully_qualified_name":"Steam_Friends::IsClanChatWindowOpenInSteam","kind":"method","ident_start":45799,"ident_end":45826,"extent_start":45779,"extent_end":45962,"ident_utf16":{"start":{"line_number":1279,"utf16_col":20},"end":{"line_number":1279,"utf16_col":47}},"extent_utf16":{"start":{"line_number":1279,"utf16_col":0},"end":{"line_number":1284,"utf16_col":1}}},{"name":"OpenClanChatWindowInSteam","fully_qualified_name":"Steam_Friends::OpenClanChatWindowInSteam","kind":"method","ident_start":45984,"ident_end":46009,"extent_start":45964,"extent_end":46144,"ident_utf16":{"start":{"line_number":1286,"utf16_col":20},"end":{"line_number":1286,"utf16_col":45}},"extent_utf16":{"start":{"line_number":1286,"utf16_col":0},"end":{"line_number":1291,"utf16_col":1}}},{"name":"CloseClanChatWindowInSteam","fully_qualified_name":"Steam_Friends::CloseClanChatWindowInSteam","kind":"method","ident_start":46166,"ident_end":46192,"extent_start":46146,"extent_end":46327,"ident_utf16":{"start":{"line_number":1293,"utf16_col":20},"end":{"line_number":1293,"utf16_col":46}},"extent_utf16":{"start":{"line_number":1293,"utf16_col":0},"end":{"line_number":1298,"utf16_col":1}}},{"name":"SetListenForFriendsMessages","fully_qualified_name":"Steam_Friends::SetListenForFriendsMessages","kind":"method","ident_start":46440,"ident_end":46467,"extent_start":46420,"extent_end":46600,"ident_utf16":{"start":{"line_number":1303,"utf16_col":20},"end":{"line_number":1303,"utf16_col":47}},"extent_utf16":{"start":{"line_number":1303,"utf16_col":0},"end":{"line_number":1308,"utf16_col":1}}},{"name":"ReplyToFriendMessage","fully_qualified_name":"Steam_Friends::ReplyToFriendMessage","kind":"method","ident_start":46622,"ident_end":46642,"extent_start":46602,"extent_end":46802,"ident_utf16":{"start":{"line_number":1310,"utf16_col":20},"end":{"line_number":1310,"utf16_col":40}},"extent_utf16":{"start":{"line_number":1310,"utf16_col":0},"end":{"line_number":1315,"utf16_col":1}}},{"name":"GetFriendMessage","fully_qualified_name":"Steam_Friends::GetFriendMessage","kind":"method","ident_start":46823,"ident_end":46839,"extent_start":46804,"extent_end":47045,"ident_utf16":{"start":{"line_number":1317,"utf16_col":19},"end":{"line_number":1317,"utf16_col":35}},"extent_utf16":{"start":{"line_number":1317,"utf16_col":0},"end":{"line_number":1322,"utf16_col":1}}},{"name":"GetFollowerCount","fully_qualified_name":"Steam_Friends::GetFollowerCount","kind":"method","ident_start":47143,"ident_end":47159,"extent_start":47113,"extent_end":47283,"ident_utf16":{"start":{"line_number":1327,"utf16_col":30},"end":{"line_number":1327,"utf16_col":46}},"extent_utf16":{"start":{"line_number":1327,"utf16_col":0},"end":{"line_number":1332,"utf16_col":1}}},{"name":"IsFollowing","fully_qualified_name":"Steam_Friends::IsFollowing","kind":"method","ident_start":47357,"ident_end":47368,"extent_start":47327,"extent_end":47492,"ident_utf16":{"start":{"line_number":1335,"utf16_col":30},"end":{"line_number":1335,"utf16_col":41}},"extent_utf16":{"start":{"line_number":1335,"utf16_col":0},"end":{"line_number":1340,"utf16_col":1}}},{"name":"EnumerateFollowingList","fully_qualified_name":"Steam_Friends::EnumerateFollowingList","kind":"method","ident_start":47577,"ident_end":47599,"extent_start":47547,"extent_end":47726,"ident_utf16":{"start":{"line_number":1343,"utf16_col":30},"end":{"line_number":1343,"utf16_col":52}},"extent_utf16":{"start":{"line_number":1343,"utf16_col":0},"end":{"line_number":1348,"utf16_col":1}}},{"name":"IsClanPublic","fully_qualified_name":"Steam_Friends::IsClanPublic","kind":"method","ident_start":47749,"ident_end":47761,"extent_start":47729,"extent_end":47893,"ident_utf16":{"start":{"line_number":1351,"utf16_col":20},"end":{"line_number":1351,"utf16_col":32}},"extent_utf16":{"start":{"line_number":1351,"utf16_col":0},"end":{"line_number":1356,"utf16_col":1}}},{"name":"IsClanOfficialGameGroup","fully_qualified_name":"Steam_Friends::IsClanOfficialGameGroup","kind":"method","ident_start":47915,"ident_end":47938,"extent_start":47895,"extent_end":48070,"ident_utf16":{"start":{"line_number":1358,"utf16_col":20},"end":{"line_number":1358,"utf16_col":43}},"extent_utf16":{"start":{"line_number":1358,"utf16_col":0},"end":{"line_number":1363,"utf16_col":1}}},{"name":"GetNumChatsWithUnreadPriorityMessages","fully_qualified_name":"Steam_Friends::GetNumChatsWithUnreadPriorityMessages","kind":"method","ident_start":48091,"ident_end":48128,"extent_start":48072,"extent_end":48234,"ident_utf16":{"start":{"line_number":1365,"utf16_col":19},"end":{"line_number":1365,"utf16_col":56}},"extent_utf16":{"start":{"line_number":1365,"utf16_col":0},"end":{"line_number":1370,"utf16_col":1}}},{"name":"ActivateGameOverlayRemotePlayTogetherInviteDialog","fully_qualified_name":"Steam_Friends::ActivateGameOverlayRemotePlayTogetherInviteDialog","kind":"method","ident_start":48256,"ident_end":48305,"extent_start":48236,"extent_end":48359,"ident_utf16":{"start":{"line_number":1372,"utf16_col":20},"end":{"line_number":1372,"utf16_col":69}},"extent_utf16":{"start":{"line_number":1372,"utf16_col":0},"end":{"line_number":1375,"utf16_col":1}}},{"name":"RegisterProtocolInOverlayBrowser","fully_qualified_name":"Steam_Friends::RegisterProtocolInOverlayBrowser","kind":"method","ident_start":48720,"ident_end":48752,"extent_start":48700,"extent_end":48887,"ident_utf16":{"start":{"line_number":1380,"utf16_col":20},"end":{"line_number":1380,"utf16_col":52}},"extent_utf16":{"start":{"line_number":1380,"utf16_col":0},"end":{"line_number":1385,"utf16_col":1}}},{"name":"ActivateGameOverlayInviteDialogConnectString","fully_qualified_name":"Steam_Friends::ActivateGameOverlayInviteDialogConnectString","kind":"method","ident_start":49041,"ident_end":49085,"extent_start":49021,"extent_end":49684,"ident_utf16":{"start":{"line_number":1388,"utf16_col":20},"end":{"line_number":1388,"utf16_col":64}},"extent_utf16":{"start":{"line_number":1388,"utf16_col":0},"end":{"line_number":1404,"utf16_col":1}}},{"name":"RequestEquippedProfileItems","fully_qualified_name":"Steam_Friends::RequestEquippedProfileItems","kind":"method","ident_start":49938,"ident_end":49965,"extent_start":49908,"extent_end":50089,"ident_utf16":{"start":{"line_number":1409,"utf16_col":30},"end":{"line_number":1409,"utf16_col":57}},"extent_utf16":{"start":{"line_number":1409,"utf16_col":0},"end":{"line_number":1414,"utf16_col":1}}},{"name":"BHasEquippedProfileItem","fully_qualified_name":"Steam_Friends::BHasEquippedProfileItem","kind":"method","ident_start":50111,"ident_end":50134,"extent_start":50091,"extent_end":50298,"ident_utf16":{"start":{"line_number":1416,"utf16_col":20},"end":{"line_number":1416,"utf16_col":43}},"extent_utf16":{"start":{"line_number":1416,"utf16_col":0},"end":{"line_number":1421,"utf16_col":1}}},{"name":"GetProfileItemPropertyUint","fully_qualified_name":"Steam_Friends::GetProfileItemPropertyUint","kind":"method","ident_start":50576,"ident_end":50602,"extent_start":50554,"extent_end":50798,"ident_utf16":{"start":{"line_number":1430,"utf16_col":22},"end":{"line_number":1430,"utf16_col":48}},"extent_utf16":{"start":{"line_number":1430,"utf16_col":0},"end":{"line_number":1435,"utf16_col":1}}},{"name":"RunCallbacks","fully_qualified_name":"Steam_Friends::RunCallbacks","kind":"method","ident_start":50822,"ident_end":50834,"extent_start":50802,"extent_end":51630,"ident_utf16":{"start":{"line_number":1439,"utf16_col":20},"end":{"line_number":1439,"utf16_col":32}},"extent_utf16":{"start":{"line_number":1439,"utf16_col":0},"end":{"line_number":1461,"utf16_col":1}}},{"name":"Callback","fully_qualified_name":"Steam_Friends::Callback","kind":"method","ident_start":51652,"ident_end":51660,"extent_start":51632,"extent_end":56842,"ident_utf16":{"start":{"line_number":1463,"utf16_col":20},"end":{"line_number":1463,"utf16_col":28}},"extent_utf16":{"start":{"line_number":1463,"utf16_col":0},"end":{"line_number":1571,"utf16_col":1}}}]}},"codeViewLayoutRoute":{"repo":{"id":830127839,"defaultBranch":"dev","name":"gbe_fork","ownerLogin":"Detanup01","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2024-07-17T16:39:25.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/91248446?v=4","public":true,"private":false,"isOrgOwned":false,"isArchived":false},"currentUser":null,"uploadToken":"DccYqFelyY0o0qmb5aZzXls10122XUBGYS9oyyabT_Yjtq7qECt3CvFONfWLxFn55VMlSAuXEfdnA3jkWzhKNQ","allShortcutsEnabled":false,"treeExpanded":true,"path":"dll/steam_friends.cpp","symbolsExpanded":false,"refInfo":{"name":"controller-def-init","listCacheKey":"v0:1790523705.0","canEdit":false,"currentOid":"3e62bdd9f28509dfb5aa9ba8732cbff53c0a808d"},"helpUrl":"https://docs.github.com","githubDevUrl":null},"codeViewFileTreeLayoutRoute":{"fileTree":{"dll":{"items":[{"name":"dll","path":"dll/dll","contentType":"directory"},{"name":"gc_steam","path":"dll/gc_steam","contentType":"directory"},{"name":"gc_tf2","path":"dll/gc_tf2","contentType":"directory"},{"name":"appticket.cpp","path":"dll/appticket.cpp","contentType":"file"},{"name":"auth.cpp","path":"dll/auth.cpp","contentType":"file"},{"name":"base.cpp","path":"dll/base.cpp","contentType":"file"},{"name":"base64.cpp","path":"dll/base64.cpp","contentType":"file"},{"name":"callsystem.cpp","path":"dll/callsystem.cpp","contentType":"file"},{"name":"client_known_interfaces.cpp","path":"dll/client_known_interfaces.cpp","contentType":"file"},{"name":"dll.cpp","path":"dll/dll.cpp","contentType":"file"},{"name":"flat.cpp","path":"dll/flat.cpp","contentType":"file"},{"name":"local_storage.cpp","path":"dll/local_storage.cpp","contentType":"file"},{"name":"net.proto","path":"dll/net.proto","contentType":"file"},{"name":"network.cpp","path":"dll/network.cpp","contentType":"file"},{"name":"playtime.cpp","path":"dll/playtime.cpp","contentType":"file"},{"name":"screenshot_format.cpp","path":"dll/screenshot_format.cpp","contentType":"file"},{"name":"settings.cpp","path":"dll/settings.cpp","contentType":"file"},{"name":"settings_parser.cpp","path":"dll/settings_parser.cpp","contentType":"file"},{"name":"settings_parser_ufs.cpp","path":"dll/settings_parser_ufs.cpp","contentType":"file"},{"name":"source_query.cpp","path":"dll/source_query.cpp","contentType":"file"},{"name":"steam_HTMLsurface.cpp","path":"dll/steam_HTMLsurface.cpp","contentType":"file"},{"name":"steam_app_disable_update.cpp","path":"dll/steam_app_disable_update.cpp","contentType":"file"},{"name":"steam_app_ids.cpp","path":"dll/steam_app_ids.cpp","contentType":"file"},{"name":"steam_applist.cpp","path":"dll/steam_applist.cpp","contentType":"file"},{"name":"steam_apps.cpp","path":"dll/steam_apps.cpp","contentType":"file"},{"name":"steam_billing.cpp","path":"dll/steam_billing.cpp","contentType":"file"},{"name":"steam_client.cpp","path":"dll/steam_client.cpp","contentType":"file"},{"name":"steam_client_interface_getter.cpp","path":"dll/steam_client_interface_getter.cpp","contentType":"file"},{"name":"steam_controller.cpp","path":"dll/steam_controller.cpp","contentType":"file"},{"name":"steam_friends.cpp","path":"dll/steam_friends.cpp","contentType":"file"},{"name":"steam_game_coordinator.cpp","path":"dll/steam_game_coordinator.cpp","contentType":"file"},{"name":"steam_gamesearch.cpp","path":"dll/steam_gamesearch.cpp","contentType":"file"},{"name":"steam_gameserver.cpp","path":"dll/steam_gameserver.cpp","contentType":"file"},{"name":"steam_gameserver_items.cpp","path":"dll/steam_gameserver_items.cpp","contentType":"file"},{"name":"steam_gameserverstats.cpp","path":"dll/steam_gameserverstats.cpp","contentType":"file"},{"name":"steam_gamestats.cpp","path":"dll/steam_gamestats.cpp","contentType":"file"},{"name":"steam_http.cpp","path":"dll/steam_http.cpp","contentType":"file"},{"name":"steam_inventory.cpp","path":"dll/steam_inventory.cpp","contentType":"file"},{"name":"steam_masterserver_updater.cpp","path":"dll/steam_masterserver_updater.cpp","contentType":"file"},{"name":"steam_matchmaking.cpp","path":"dll/steam_matchmaking.cpp","contentType":"file"},{"name":"steam_matchmaking_servers.cpp","path":"dll/steam_matchmaking_servers.cpp","contentType":"file"},{"name":"steam_music.cpp","path":"dll/steam_music.cpp","contentType":"file"},{"name":"steam_musicremote.cpp","path":"dll/steam_musicremote.cpp","contentType":"file"},{"name":"steam_networking.cpp","path":"dll/steam_networking.cpp","contentType":"file"},{"name":"steam_networking_messages.cpp","path":"dll/steam_networking_messages.cpp","contentType":"file"},{"name":"steam_networking_sockets.cpp","path":"dll/steam_networking_sockets.cpp","contentType":"file"},{"name":"steam_networking_socketsserialized.cpp","path":"dll/steam_networking_socketsserialized.cpp","contentType":"file"},{"name":"steam_networking_utils.cpp","path":"dll/steam_networking_utils.cpp","contentType":"file"},{"name":"steam_parental.cpp","path":"dll/steam_parental.cpp","contentType":"file"},{"name":"steam_parties.cpp","path":"dll/steam_parties.cpp","contentType":"file"},{"name":"steam_remote_storage.cpp","path":"dll/steam_remote_storage.cpp","contentType":"file"},{"name":"steam_remoteplay.cpp","path":"dll/steam_remoteplay.cpp","contentType":"file"},{"name":"steam_screenshots.cpp","path":"dll/steam_screenshots.cpp","contentType":"file"},{"name":"steam_timeline.cpp","path":"dll/steam_timeline.cpp","contentType":"file"},{"name":"steam_tv.cpp","path":"dll/steam_tv.cpp","contentType":"file"},{"name":"steam_ugc.cpp","path":"dll/steam_ugc.cpp","contentType":"file"},{"name":"steam_unified_messages.cpp","path":"dll/steam_unified_messages.cpp","contentType":"file"},{"name":"steam_user.cpp","path":"dll/steam_user.cpp","contentType":"file"},{"name":"steam_user_items.cpp","path":"dll/steam_user_items.cpp","contentType":"file"},{"name":"steam_user_stats.cpp","path":"dll/steam_user_stats.cpp","contentType":"file"},{"name":"steam_user_stats_achievements.cpp","path":"dll/steam_user_stats_achievements.cpp","contentType":"file"},{"name":"steam_user_stats_leaderboard.cpp","path":"dll/steam_user_stats_leaderboard.cpp","contentType":"file"},{"name":"steam_user_stats_stats.cpp","path":"dll/steam_user_stats_stats.cpp","contentType":"file"},{"name":"steam_utils.cpp","path":"dll/steam_utils.cpp","contentType":"file"},{"name":"steam_video.cpp","path":"dll/steam_video.cpp","contentType":"file"},{"name":"ugc_remote_storage_bridge.cpp","path":"dll/ugc_remote_storage_bridge.cpp","contentType":"file"},{"name":"voicechat.cpp","path":"dll/voicechat.cpp","contentType":"file"},{"name":"wrap.cpp","path":"dll/wrap.cpp","contentType":"file"}],"totalCount":68},"":{"items":[{"name":".github","path":".github","contentType":"directory"},{"name":"crash_printer","path":"crash_printer","contentType":"directory"},{"name":"dev.notes","path":"dev.notes","contentType":"directory"},{"name":"dll","path":"dll","contentType":"directory"},{"name":"game_overlay_renderer_lib","path":"game_overlay_renderer_lib","contentType":"directory"},{"name":"helpers","path":"helpers","contentType":"directory"},{"name":"libs","path":"libs","contentType":"directory"},{"name":"networking_sockets_lib","path":"networking_sockets_lib","contentType":"directory"},{"name":"overlay_experimental","path":"overlay_experimental","contentType":"directory"},{"name":"post_build","path":"post_build","contentType":"directory"},{"name":"resources","path":"resources","contentType":"directory"},{"name":"sdk","path":"sdk","contentType":"directory"},{"name":"steam_old_lib","path":"steam_old_lib","contentType":"directory"},{"name":"steamclient","path":"steamclient","contentType":"directory"},{"name":"tests","path":"tests","contentType":"directory"},{"name":"third-party","path":"third-party","contentType":"directory"},{"name":"tools","path":"tools","contentType":"directory"},{"name":"z_original_repo_files","path":"z_original_repo_files","contentType":"directory"},{"name":".editorconfig","path":".editorconfig","contentType":"file"},{"name":".gitattributes","path":".gitattributes","contentType":"file"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".gitmodules","path":".gitmodules","contentType":"file"},{"name":"CHANGELOG.md","path":"CHANGELOG.md","contentType":"file"},{"name":"CREDITS.md","path":"CREDITS.md","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"build_linux_premake.sh","path":"build_linux_premake.sh","contentType":"file"},{"name":"build_win_premake.bat","path":"build_win_premake.bat","contentType":"file"},{"name":"build_win_premake_deps.bat","path":"build_win_premake_deps.bat","contentType":"file"},{"name":"generate_credits.bat","path":"generate_credits.bat","contentType":"file"},{"name":"package_linux.sh","path":"package_linux.sh","contentType":"file"},{"name":"package_win.bat","path":"package_win.bat","contentType":"file"},{"name":"package_win_debug.bat","path":"package_win_debug.bat","contentType":"file"},{"name":"package_win_release.bat","path":"package_win_release.bat","contentType":"file"},{"name":"premake5-deps.lua","path":"premake5-deps.lua","contentType":"file"},{"name":"premake5.lua","path":"premake5.lua","contentType":"file"}],"totalCount":36}},"fileTreeProcessingTime":74.87576299999999,"foldersToFetch":[]},"codeViewBlobLayoutRoute":{"codeLineWrapEnabled":false,"refInfo":{"name":"controller-def-init","listCacheKey":"v0:1790523705.0","canEdit":false,"refType":"branch","currentOid":"3e62bdd9f28509dfb5aa9ba8732cbff53c0a808d","canEditOnDefaultBranch":false,"fileExistsOnDefault":true},"path":"dll/steam_friends.cpp","blob":{"copilotSWEAgentEnabled":false,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/Detanup01/gbe_fork/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null},"displayName":"steam_friends.cpp","displayUrl":"https://github.com/Detanup01/gbe_fork/blob/controller-def-init/dll/steam_friends.cpp?raw=true","headerInfo":{"blobSize":"55.5 KB","deleteTooltip":"You must be signed in to make or propose changes","editTooltip":"You must be signed in to make or propose changes","ghDesktopPath":"https://desktop.github.com","isGitLfs":false,"onBranch":true,"shortPath":"27f640f","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2FDetanup01%2Fgbe_fork%2Fblob%2Fcontroller-def-init%2Fdll%2Fsteam_friends.cpp","isCSV":false,"isRichtext":false,"lineInfo":{"truncatedLoc":"1572","truncatedSloc":"1333"},"mode":"file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"isIssueTemplate":false,"isDiscussionTemplate":false,"language":"C++","languageID":43,"large":false,"planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/Detanup01/gbe_fork/blob/controller-def-init/dll/steam_friends.cpp","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","releasePath":"/Detanup01/gbe_fork/releases/new?marketplace=true","showPublishActionBanner":false},"rawBlobUrl":"https://github.com/Detanup01/gbe_fork/raw/refs/heads/controller-def-init/dll/steam_friends.cpp","renderImageOrRaw":false,"shortPath":null,"symbolsEnabled":true,"tabSize":4,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":null,"showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","actionsOnboardingTip":null},"truncated":false,"viewable":true,"workflowRedirectUrl":null},"copilotInfo":null,"copilotAccessAllowed":false,"copilotSpacesEnabled":false,"modelsAccessAllowed":false,"modelsRepoIntegrationEnabled":false,"isMarketplaceEnabled":true},"codeViewBlobLayoutRoute.StyledBlob":{"rawLines":["/* Copyright (C) 2019 Mr Goldberg","   This file is part of the Goldberg Emulator","","   The Goldberg Emulator is free software; you can redistribute it and/or","   modify it under the terms of the GNU Lesser General Public","   License as published by the Free Software Foundation; either","   version 3 of the License, or (at your option) any later version.","","   The Goldberg Emulator is distributed in the hope that it will be useful,","   but WITHOUT ANY WARRANTY; without even the implied warranty of","   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU","   Lesser General Public License for more details.","","   You should have received a copy of the GNU Lesser General Public","   License along with the Goldberg Emulator; if not, see","   \u003chttp://www.gnu.org/licenses/\u003e.  */","","#include \"dll/steam_friends.h\"","#include \"dll/dll.h\"","","#define SEND_FRIEND_RATE 4.0","","","Friend* Steam_Friends::find_friend(CSteamID id)","{","    auto f = std::find_if(friends.begin(), friends.end(), [\u0026id](Friend const\u0026 item) { return item.id() == id.ConvertToUint64(); });","    if (friends.end() == f)","        return NULL;","","    return \u0026(*f);","}","","void Steam_Friends::persona_change(CSteamID id, EPersonaChange flags)","{","    PersonaStateChange_t data;","    data.m_ulSteamID = id.ConvertToUint64();","    data.m_nChangeFlags = flags;","    callbacks-\u003eaddCBResult(data.k_iCallback, \u0026data, sizeof(data));","}","","void Steam_Friends::rich_presence_updated(CSteamID id, AppId_t appid)","{","    FriendRichPresenceUpdate_t data;","    data.m_steamIDFriend = id;","    data.m_nAppID = appid;","    callbacks-\u003eaddCBResult(data.k_iCallback, \u0026data, sizeof(data));","}","","bool Steam_Friends::is_appid_compatible(Friend *f)","{","    if (settings-\u003eis_lobby_connect) return true;","    if (f == \u0026us) return true;","    return settings-\u003eget_local_game_id().AppID() == f-\u003eappid();","}","","struct Avatar_Numbers Steam_Friends::add_friend_avatars(CSteamID id)","{","    uint64 steam_id = id.ConvertToUint64();","    auto avatar_ids = avatars.find(steam_id);","    if (avatar_ids != avatars.end()) {","        return avatar_ids-\u003esecond;","    }","","    struct Avatar_Numbers avatar_numbers{};","    std::string small_avatar(32 * 32 * 4, 0);","    std::string medium_avatar(64 * 64 * 4, 0);","    std::string large_avatar(184 * 184 * 4, 0);","","    static const std::initializer_list\u003cstd::string\u003e avatar_icons = {","        \"account_avatar.png\",","        \"account_avatar.jpg\",","        \"account_avatar.jpeg\",","    };","    static const std::initializer_list\u003cstd::string\u003e avatar_icons_default = {","        \"account_avatar_default.png\",","        \"account_avatar_default.jpg\",","        \"account_avatar_default.jpeg\",","    };","","    if (!settings-\u003edisable_account_avatar \u0026\u0026 (id == settings-\u003eget_local_steam_id())) {","        std::string file_path{};","        unsigned long long file_size{};","","        // try local location first, then try global location","        for (const auto \u0026settings_path : { Local_Storage::get_game_settings_path(), local_storage-\u003eget_global_settings_path() }) {","            for (const auto \u0026file_name : avatar_icons) {","                file_path = settings_path + file_name;","                file_size = file_size_(file_path);","                if (file_size) break;","            }","            if (file_size) break;","        }","","        // no else statement here for default otherwise this breaks default images for friends","        if (file_size) {","            small_avatar = Local_Storage::load_image_resized(file_path, \"\", 32);","            medium_avatar = Local_Storage::load_image_resized(file_path, \"\", 64);","            large_avatar = Local_Storage::load_image_resized(file_path, \"\", 184);","        }","    } else if (!settings-\u003edisable_account_avatar) {","        Friend *f = find_friend(id);","        if (f \u0026\u0026 (large_avatar.compare(f-\u003eavatar()) != 0)) {","            large_avatar = f-\u003eavatar();","            medium_avatar = Local_Storage::load_image_resized(\"\", f-\u003eavatar(), 64);","            small_avatar = Local_Storage::load_image_resized(\"\", f-\u003eavatar(), 32);","        } else {","            std::string file_path{};","            unsigned long long file_size{};","","            // try local location first, then try global location","            for (const auto \u0026settings_path : { Local_Storage::get_game_settings_path(), local_storage-\u003eget_global_settings_path() }) {","                for (const auto \u0026file_name : avatar_icons_default) {","                    file_path = settings_path + file_name;","                    file_size = file_size_(file_path);","                    if (file_size) break;","                }","                if (file_size) break;","            }","","            if (file_size) {","                small_avatar = Local_Storage::load_image_resized(file_path, \"\", 32);","                medium_avatar = Local_Storage::load_image_resized(file_path, \"\", 64);","                large_avatar = Local_Storage::load_image_resized(file_path, \"\", 184);","            }","        }","    }","","    avatar_numbers.smallest = settings-\u003eadd_image(small_avatar, 32, 32);","    avatar_numbers.medium = settings-\u003eadd_image(medium_avatar, 64, 64);","    avatar_numbers.large = settings-\u003eadd_image(large_avatar, 184, 184);","","    avatars[steam_id] = avatar_numbers;","    return avatar_numbers;","}","","void Steam_Friends::steam_friends_callback(void *object, Common_Message *msg)","{","    // PRINT_DEBUG_ENTRY();","","    Steam_Friends *steam_friends = (Steam_Friends *)object;","    steam_friends-\u003eCallback(msg);","}","","void Steam_Friends::steam_friends_run_every_runcb(void *object)","{","    // PRINT_DEBUG_ENTRY();","","    Steam_Friends *steam_friends = (Steam_Friends *)object;","    steam_friends-\u003eRunCallbacks();","}","","void Steam_Friends::resend_friend_data()","{","    modified = true;","}","","bool Steam_Friends::ok_friend_flags(int iFriendFlags)","{","    if (iFriendFlags \u0026 k_EFriendFlagImmediate) return true;","","    return false;","}","","","Steam_Friends::Steam_Friends(Settings* settings, class Local_Storage* local_storage, Networking* network, SteamCallResults* callback_results, SteamCallBacks* callbacks, RunEveryRunCB* run_every_runcb, Steam_Overlay* overlay):","    settings(settings),","    local_storage(local_storage),","    network(network),","    callbacks(callbacks),","    callback_results(callback_results),","    run_every_runcb(run_every_runcb),","    overlay(overlay)","{","    modified = false;","","    this-\u003enetwork-\u003esetCallback(CALLBACK_ID_FRIEND, settings-\u003eget_local_steam_id(), \u0026Steam_Friends::steam_friends_callback, this);","    this-\u003enetwork-\u003esetCallback(CALLBACK_ID_FRIEND_MESSAGES, settings-\u003eget_local_steam_id(), \u0026Steam_Friends::steam_friends_callback, this);","    this-\u003enetwork-\u003esetCallback(CALLBACK_ID_USER_STATUS, settings-\u003eget_local_steam_id(), \u0026Steam_Friends::steam_friends_callback, this);","    this-\u003erun_every_runcb-\u003eadd(\u0026Steam_Friends::steam_friends_run_every_runcb, this);","}","","Steam_Friends::~Steam_Friends()","{","    this-\u003enetwork-\u003ermCallback(CALLBACK_ID_FRIEND, settings-\u003eget_local_steam_id(), \u0026Steam_Friends::steam_friends_callback, this);","    this-\u003enetwork-\u003ermCallback(CALLBACK_ID_FRIEND_MESSAGES, settings-\u003eget_local_steam_id(), \u0026Steam_Friends::steam_friends_callback, this);","    this-\u003enetwork-\u003ermCallback(CALLBACK_ID_USER_STATUS, settings-\u003eget_local_steam_id(), \u0026Steam_Friends::steam_friends_callback, this);","\tthis-\u003erun_every_runcb-\u003eremove(\u0026Steam_Friends::steam_friends_run_every_runcb, this);","}","","","// returns the local players name - guaranteed to not be NULL.","// this is the same name as on the users community profile page","// this is stored in UTF-8 format","// like all the other interface functions that return a char *, it's important that this pointer is not saved","// off; it will eventually be free'd or re-allocated","const char* Steam_Friends::GetPersonaName()","{","    PRINT_DEBUG_ENTRY();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    const char *local_name = settings-\u003eget_local_name();","    ","    return local_name;","}","","// Sets the player name, stores it on the server and publishes the changes to all friends who are online.","// Changes take place locally immediately, and a PersonaStateChange_t is posted, presuming success.","//","// The final results are available through the return value SteamAPICall_t, using SetPersonaNameResponse_t.","//","// If the name change fails to happen on the server, then an additional global PersonaStateChange_t will be posted","// to change the name back, in addition to the SetPersonaNameResponse_t callback.","STEAM_CALL_RESULT( SetPersonaNameResponse_t )","SteamAPICall_t Steam_Friends::SetPersonaName( const char *pchPersonaName )","{","    PRINT_DEBUG_ENTRY();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    ","    // send PersonaStateChange_t callbacks","    persona_change(settings-\u003eget_local_steam_id(), EPersonaChange::k_EPersonaChangeName);","","    SetPersonaNameResponse_t data{};","    data.m_bSuccess = true;","    data.m_bLocalSuccess = false;","    data.m_result = k_EResultOK;","","    auto ret = callback_results-\u003eaddCallResult(data.k_iCallback, \u0026data, sizeof(data));","    callbacks-\u003eaddCBResult(data.k_iCallback, \u0026data, sizeof(data));","    return ret;","}","","void Steam_Friends::SetPersonaName_old( const char *pchPersonaName )","{","\tPRINT_DEBUG(\"old\");","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","\tSetPersonaName(pchPersonaName);","}","","// gets the status of the current user","EPersonaState Steam_Friends::GetPersonaState()","{","    PRINT_DEBUG_ENTRY();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return k_EPersonaStateOnline;","}","","void Steam_Friends::SetPersonaState(EPersonaState ePersonaState)","{","    PRINT_DEBUG_TODO();","}","","bool Steam_Friends::AddFriend(CSteamID steamIDFriend)","{","    PRINT_DEBUG_TODO();","    if (steamIDFriend == k_steamIDNil)","        return false;","    // TODO","    return true;","}","","bool Steam_Friends::RemoveFriend(CSteamID steamIDFriend)","{","    PRINT_DEBUG_TODO();","    if (steamIDFriend == k_steamIDNil)","        return false;","    // TODO","    return true;","}","","bool Steam_Friends::HasFriend(CSteamID steamIDFriend)","{","    PRINT_DEBUG(\"sdk 0.99u\");","    return HasFriend(steamIDFriend, (int)k_EFriendFlagImmediate);","}","","","// friend iteration","// takes a set of k_EFriendFlags, and returns the number of users the client knows about who meet that criteria","// then GetFriendByIndex() can then be used to return the id's of each of those users","int Steam_Friends::GetFriendCount( int iFriendFlags )","{","    PRINT_DEBUG(\"%i\", iFriendFlags);","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    int count = 0;","    if (ok_friend_flags(iFriendFlags)) count = static_cast\u003cint\u003e(friends.size());","    PRINT_DEBUG(\"count %i\", count);","    return count;","}","","int Steam_Friends::GetFriendCount( EFriendFlags eFriendFlags )","{","    PRINT_DEBUG(\"old\");","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","\treturn GetFriendCount((int)eFriendFlags);","}","","// returns the steamID of a user","// iFriend is a index of range [0, GetFriendCount())","// iFriendsFlags must be the same value as used in GetFriendCount()","// the returned CSteamID can then be used by all the functions below to access details about the user","CSteamID Steam_Friends::GetFriendByIndex( int iFriend, int iFriendFlags )","{","    PRINT_DEBUG_ENTRY();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    CSteamID id = k_steamIDNil;","    if (ok_friend_flags(iFriendFlags)) {","        if (iFriend \u003e= 0 \u0026\u0026 static_cast\u003csize_t\u003e(iFriend) \u003c friends.size()) {","            id = CSteamID((uint64)friends[iFriend].id());","        }","    }","    ","    return id;","}","","void Steam_Friends::GetFriendByIndex(CSteamID\u0026 res, int iFriend, int iFriendFlags )","{","\tPRINT_DEBUG_GNU_WIN();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","\tres = GetFriendByIndex(iFriend, iFriendFlags );","}","","CSteamID Steam_Friends::GetFriendByIndex( int iFriend, EFriendFlags eFriendFlags )","{","\tPRINT_DEBUG(\"old\");","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","\treturn GetFriendByIndex(iFriend, (int)eFriendFlags );","}","","","void Steam_Friends::GetFriendByIndex(CSteamID\u0026 result, int iFriend, EFriendFlags eFriendFlags)","{","\tPRINT_DEBUG_GNU_WIN();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","\tresult = GetFriendByIndex(iFriend, eFriendFlags );","}","","","// returns a relationship to a user","EFriendRelationship Steam_Friends::GetFriendRelationship( CSteamID steamIDFriend )","{","    PRINT_DEBUG(\"%llu\", steamIDFriend.ConvertToUint64());","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    if (steamIDFriend == settings-\u003eget_local_steam_id()) return k_EFriendRelationshipNone; //Real steam behavior","    if (find_friend(steamIDFriend)) return k_EFriendRelationshipFriend;","","    return k_EFriendRelationshipNone;","}","","","// returns the current status of the specified user","// this will only be known by the local user if steamIDFriend is in their friends list; on the same game server; in a chat room or lobby; or in a small group with the local user","EPersonaState Steam_Friends::GetFriendPersonaState( CSteamID steamIDFriend )","{","    PRINT_DEBUG(\"%llu\", steamIDFriend.ConvertToUint64());","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    EPersonaState state = k_EPersonaStateOffline;","    if (steamIDFriend == settings-\u003eget_local_steam_id() || find_friend(steamIDFriend)) {","        state = k_EPersonaStateOnline;","    }","","    //works because all of those who could be in a lobby are our friends","    return state;","}","","bool Steam_Friends::Deprecated_GetFriendGamePlayed(CSteamID steamIDFriend, int32 *pnGameID, uint32 *punGameIP, uint16 *pusGamePort)","{","    PRINT_DEBUG_ENTRY();","    // TODO: real steam seems not to fill memory pointed by pnGameID","    return GetFriendGamePlayed(steamIDFriend, NULL, punGameIP, pusGamePort, NULL);","}","","","// returns the name another user - guaranteed to not be NULL.","// same rules as GetFriendPersonaState() apply as to whether or not the user knowns the name of the other user","// note that on first joining a lobby, chat room or game server the local user will not known the name of the other users automatically; that information will arrive asyncronously","// ","const char* Steam_Friends::GetFriendPersonaName( CSteamID steamIDFriend )","{","    PRINT_DEBUG(\"%llu\", steamIDFriend.ConvertToUint64());","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    const char *name = \"Unknown User\";","    if (steamIDFriend == settings-\u003eget_local_steam_id()) {","        name = settings-\u003eget_local_name();","    } else {","        Friend *f = find_friend(steamIDFriend);","        if (f) name = f-\u003ename().c_str();","    }","","    PRINT_DEBUG(\"returned '%s'\", name);","    return name;","}","","int32 Steam_Friends::AddFriendByName(const char *pchEmailOrAccountName)","{","    PRINT_DEBUG_TODO();","    return 0;","}","","int Steam_Friends::GetFriendCount()","{","    PRINT_DEBUG(\"sdk 0.99u\");","    return GetFriendCount((int)k_EFriendFlagImmediate);","}","","CSteamID Steam_Friends::GetFriendByIndex(int iFriend)","{","    PRINT_DEBUG(\"sdk 0.99u\");","    return GetFriendByIndex(iFriend, (int)k_EFriendFlagImmediate);","}","","void Steam_Friends::SendMsgToFriend(CSteamID steamIDFriend, EChatEntryType eChatEntryType, const char *pchMsgBody)","{","    PRINT_DEBUG_TODO();","}","","void Steam_Friends::SetFriendRegValue(CSteamID steamIDFriend, const char *pchKey, const char *pchValue)","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    if (!pchValue)","        return; // real steam crashes though","","    if (!pchKey || !pchKey[0]) // tested on real steam","    {","        reg.clear();","        reg_nullptr = std::string(pchValue);","    }","    else","    {","        reg[std::string(pchKey)] = std::string(pchValue);","        // TODO: save it to disk, because real steam can get the string when app restarts","    }","}","","const char *Steam_Friends::GetFriendRegValue(CSteamID steamIDFriend, const char *pchKey)","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    // TODO: load data from disk, because real steam can get the string when app restarts","","    if (!pchKey || !pchKey[0])","    {","        return reg_nullptr.c_str();","    }","    else","    {","        auto it = reg.find(std::string(pchKey));","        if (it == reg.end())","            return \"\";","","        return it-\u003esecond.c_str();","    }","}","","int Steam_Friends::GetChatMessage(CSteamID steamIDFriend, int iChatID, void *pvData, int cubData, EChatEntryType *peChatEntryType)","{","    PRINT_DEBUG_TODO();","    if (peChatEntryType)","        *peChatEntryType = k_EChatEntryTypeInvalid;","    return 0;","}","","bool Steam_Friends::SendMsgToFriend(CSteamID steamIDFriend, EChatEntryType eChatEntryType, const void *pvMsgBody, int cubMsgBody)","{","    PRINT_DEBUG_TODO();","    return true;","}","","int Steam_Friends::GetChatIDOfChatHistoryStart(CSteamID steamIDFriend)","{","    PRINT_DEBUG_TODO();","    return 0;","}","","void Steam_Friends::SetChatHistoryStart(CSteamID steamIDFriend, int iChatID)","{","    PRINT_DEBUG_TODO();","}","","void Steam_Friends::ClearChatHistory(CSteamID steamIDFriend)","{","    PRINT_DEBUG_TODO();","}","","bool Steam_Friends::InviteFriendByEmail(const char *pchEmailAccount)","{","    PRINT_DEBUG_TODO();","    return false;","}","","int Steam_Friends::GetBlockedFriendCount()","{","    PRINT_DEBUG_ENTRY();","    return GetFriendCount((int)k_EFriendFlagBlocked);","}","","bool Steam_Friends::GetFriendGamePlayed(CSteamID steamIDFriend, uint64 *pulGameID, uint32 *punGameIP, uint16 *pusGamePort)","{","    PRINT_DEBUG(\"sdk 0.99u\");","    return GetFriendGamePlayed(steamIDFriend, pulGameID, punGameIP, pusGamePort, NULL);","}","","bool Steam_Friends::GetFriendGamePlayed2(CSteamID steamIDFriend, uint64 *pulGameID, uint32 *punGameIP, uint16 *pusGamePort, uint16 *pusQueryPort)","{","    PRINT_DEBUG_ENTRY();","    return GetFriendGamePlayed(steamIDFriend, pulGameID, punGameIP, pusGamePort, pusQueryPort);","}","","","// returns true if the friend is actually in a game, and fills in pFriendGameInfo with an extra details ","bool Steam_Friends::GetFriendGamePlayed( CSteamID steamIDFriend, STEAM_OUT_STRUCT() FriendGameInfo_t *pFriendGameInfo )","{","    PRINT_DEBUG(\"%llu %p\", steamIDFriend.ConvertToUint64(), pFriendGameInfo);","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    bool ret = false;","","    if (steamIDFriend == settings-\u003eget_local_steam_id()) {","        PRINT_DEBUG(\"found myself! %llu %llu\", settings-\u003eget_local_game_id().ToUint64(), settings-\u003eget_lobby().ConvertToUint64());","        if (pFriendGameInfo) {","            pFriendGameInfo-\u003em_gameID = settings-\u003eget_local_game_id();","            pFriendGameInfo-\u003em_unGameIP = 0;","            pFriendGameInfo-\u003em_usGamePort = 0;","            pFriendGameInfo-\u003em_usQueryPort = 0;","            pFriendGameInfo-\u003em_steamIDLobby = settings-\u003eget_lobby();","        }","","        ret = true;","    } else {","        Friend *f = find_friend(steamIDFriend);","        if (f) {","            PRINT_DEBUG(\"found someone %u \" \"%\" PRIu64 \"\", f-\u003eappid(), f-\u003elobby_id());","            if (pFriendGameInfo) {","                pFriendGameInfo-\u003em_gameID = CGameID(f-\u003eappid());","                pFriendGameInfo-\u003em_unGameIP = 0;","                pFriendGameInfo-\u003em_usGamePort = 0;","                pFriendGameInfo-\u003em_usQueryPort = 0;","                pFriendGameInfo-\u003em_steamIDLobby = CSteamID((uint64)f-\u003elobby_id());","            }","","            ret = true;","        }","    }","","    return ret;","}","","bool Steam_Friends::GetFriendGamePlayed( CSteamID steamIDFriend, uint64 *pulGameID, uint32 *punGameIP, uint16 *pusGamePort, uint16 *pusQueryPort )","{","\tPRINT_DEBUG(\"old\");","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","\tFriendGameInfo_t info;","\tbool ret = GetFriendGamePlayed(steamIDFriend, \u0026info);","\tif (ret) {","\t\tif (pulGameID) *pulGameID = info.m_gameID.ToUint64();","\t\tif (punGameIP) *punGameIP = info.m_unGameIP;","\t\tif (pusGamePort) *pusGamePort = info.m_usGamePort;","\t\tif (pusQueryPort) *pusQueryPort = info.m_usQueryPort;","\t}","","\treturn ret;","}","","// accesses old friends names - returns an empty string when their are no more items in the history","const char* Steam_Friends::GetFriendPersonaNameHistory( CSteamID steamIDFriend, int iPersonaName )","{","    PRINT_DEBUG_ENTRY();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    const char *ret = \"\";","    if (iPersonaName == 0) ret = GetFriendPersonaName(steamIDFriend);","    else if (iPersonaName == 1) ret = \"Some Old Name\";","    ","    return ret;","}","","// friends steam level","int Steam_Friends::GetFriendSteamLevel( CSteamID steamIDFriend )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return 100;","}","","","// Returns nickname the current user has set for the specified player. Returns NULL if the no nickname has been set for that player.","const char* Steam_Friends::GetPlayerNickname( CSteamID steamIDPlayer )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return NULL;","}","","","// friend grouping (tag) apis","// returns the number of friends groups","int Steam_Friends::GetFriendsGroupCount()","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return 0;","}","","// returns the friends group ID for the given index (invalid indices return k_FriendsGroupID_Invalid)","FriendsGroupID_t Steam_Friends::GetFriendsGroupIDByIndex( int iFG )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return k_FriendsGroupID_Invalid;","}","","// returns the name for the given friends group (NULL in the case of invalid friends group IDs)","const char* Steam_Friends::GetFriendsGroupName( FriendsGroupID_t friendsGroupID )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return NULL;","}","","// returns the number of members in a given friends group","int Steam_Friends::GetFriendsGroupMembersCount( FriendsGroupID_t friendsGroupID )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return 0;","}","","// gets up to nMembersCount members of the given friends group, if fewer exist than requested those positions' SteamIDs will be invalid","void Steam_Friends::GetFriendsGroupMembersList( FriendsGroupID_t friendsGroupID, STEAM_OUT_ARRAY_CALL(nMembersCount, GetFriendsGroupMembersCount, friendsGroupID ) CSteamID *pOutSteamIDMembers, int nMembersCount )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","}","","","// returns true if the specified user meets any of the criteria specified in iFriendFlags","// iFriendFlags can be the union (binary or, |) of one or more k_EFriendFlags values","bool Steam_Friends::HasFriend( CSteamID steamIDFriend, int iFriendFlags )","{","    PRINT_DEBUG_ENTRY();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    bool ret = false;","    if (ok_friend_flags(iFriendFlags)) if (find_friend(steamIDFriend)) ret = true;","    ","    return ret;","}","","bool Steam_Friends::HasFriend( CSteamID steamIDFriend, EFriendFlags eFriendFlags ) ","{","    PRINT_DEBUG(\"old\");","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","\treturn HasFriend(steamIDFriend, (int)eFriendFlags );","}","","// clan (group) iteration and access functions","int Steam_Friends::GetClanCount()","{","    PRINT_DEBUG_ENTRY();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    int counter = 0;","    for (auto \u0026c : settings-\u003esubscribed_groups_clans) counter++;","    return counter;","}","","CSteamID Steam_Friends::GetClanByIndex( int iClan )","{","    PRINT_DEBUG_ENTRY();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    int counter = 0;","    for (auto \u0026c : settings-\u003esubscribed_groups_clans) {","        if (counter == iClan) return c.id;","        counter++;","    }","    return k_steamIDNil;","}","","void Steam_Friends::GetClanByIndex( CSteamID\u0026 result, int iClan )","{","    PRINT_DEBUG_GNU_WIN();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    result = GetClanByIndex(iClan);","}","","const char* Steam_Friends::GetClanName( CSteamID steamIDClan )","{","    PRINT_DEBUG_ENTRY();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    for (auto \u0026c : settings-\u003esubscribed_groups_clans) {","        if (c.id.ConvertToUint64() == steamIDClan.ConvertToUint64()) return c.name.c_str();","    }","    return \"\";","}","","bool Steam_Friends::InviteFriendToClan(CSteamID steamIDFriend, CSteamID steamIDClan)","{","    PRINT_DEBUG_TODO();","    return false;","}","","bool Steam_Friends::AcknowledgeInviteToClan(CSteamID steamIDClan, bool bAcceptOrDenyClanInvite)","{","    PRINT_DEBUG_TODO();","    return false;","}","","const char* Steam_Friends::GetClanTag( CSteamID steamIDClan )","{","    PRINT_DEBUG_ENTRY();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    for (auto \u0026c : settings-\u003esubscribed_groups_clans) {","        if (c.id.ConvertToUint64() == steamIDClan.ConvertToUint64()) return c.tag.c_str();","    }","    return \"\";","}","","// returns the most recent information we have about what's happening in a clan","bool Steam_Friends::GetClanActivityCounts( CSteamID steamIDClan, int *pnOnline, int *pnInGame, int *pnChatting )","{","    PRINT_DEBUG(\"TODO %llu\", steamIDClan.ConvertToUint64());","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return false;","}","","// for clans a user is a member of, they will have reasonably up-to-date information, but for others you'll have to download the info to have the latest","SteamAPICall_t Steam_Friends::DownloadClanActivityCounts( STEAM_ARRAY_COUNT(cClansToRequest) CSteamID *psteamIDClans, int cClansToRequest )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return 0;","}","","","// iterators for getting users in a chat room, lobby, game server or clan","// note that large clans that cannot be iterated by the local user","// note that the current user must be in a lobby to retrieve CSteamIDs of other users in that lobby","// steamIDSource can be the steamID of a group, game server, lobby or chat room","int Steam_Friends::GetFriendCountFromSource( CSteamID steamIDSource )","{","    PRINT_DEBUG(\"TODO %llu\", steamIDSource.ConvertToUint64());","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    //TODO","    return 0;","}","","CSteamID Steam_Friends::GetFriendFromSourceByIndex( CSteamID steamIDSource, int iFriend )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return k_steamIDNil;","}","","void Steam_Friends::GetFriendFromSourceByIndex( CSteamID\u0026 res, CSteamID steamIDSource, int iFriend )","{","    PRINT_DEBUG_GNU_WIN();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    res = GetFriendFromSourceByIndex( steamIDSource, iFriend );","}","","","// returns true if the local user can see that steamIDUser is a member or in steamIDSource","bool Steam_Friends::IsUserInSource( CSteamID steamIDUser, CSteamID steamIDSource )","{","    PRINT_DEBUG(\"%llu %llu\", steamIDUser.ConvertToUint64(), steamIDSource.ConvertToUint64());","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    if (steamIDUser == settings-\u003eget_local_steam_id()) {","        if (settings-\u003eget_lobby() == steamIDSource) {","            return true;","        }","","        if (settings-\u003esubscribed_groups.find(steamIDSource.ConvertToUint64()) != settings-\u003esubscribed_groups.end()) {","            return true;","        }","    } else {","        Friend *f = find_friend(steamIDUser);","        if (!f) return false;","        if (f-\u003elobby_id() == steamIDSource.ConvertToUint64()) return true;","    }","    //TODO","    return false;","}","","","// User is in a game pressing the talk button (will suppress the microphone for all voice comms from the Steam friends UI)","void Steam_Friends::SetInGameVoiceSpeaking( CSteamID steamIDUser, bool bSpeaking )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","}","","","// activates the game overlay, with an optional dialog to open ","// valid options are \"Friends\", \"Community\", \"Players\", \"Settings\", \"OfficialGameGroup\", \"Stats\", \"Achievements\", \"LobbyInvite\"","void Steam_Friends::ActivateGameOverlay( const char *pchDialog )","{","    PRINT_DEBUG(\"%s\", pchDialog);","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","","    if ((strncmp(pchDialog, \"LobbyInvite\", sizeof(\"LobbyInvite\") - 1) == 0)) {","        std::string connect_str = get_friend_rich_presence_silent(settings-\u003eget_local_steam_id(), \"connect\");","","        if (connect_str.length() \u003e 0) {","            ActivateGameOverlayInviteDialogConnectString(connect_str.c_str());","        } else if (settings-\u003eget_lobby().IsValid()) {","            ActivateGameOverlayInviteDialog(settings-\u003eget_lobby());","        }","    } else {","        overlay-\u003eOpenOverlay(pchDialog);","    }","}","","","// activates game overlay to a specific place","// valid options are","//\t\t\"steamid\" - opens the overlay web browser to the specified user or groups profile","//\t\t\"chat\" - opens a chat window to the specified user, or joins the group chat ","//\t\t\"jointrade\" - opens a window to a Steam Trading session that was started with the ISteamEconomy/StartTrade Web API","//\t\t\"stats\" - opens the overlay web browser to the specified user's stats","//\t\t\"achievements\" - opens the overlay web browser to the specified user's achievements","//\t\t\"friendadd\" - opens the overlay in minimal mode prompting the user to add the target user as a friend","//\t\t\"friendremove\" - opens the overlay in minimal mode prompting the user to remove the target friend","//\t\t\"friendrequestaccept\" - opens the overlay in minimal mode prompting the user to accept an incoming friend invite","//\t\t\"friendrequestignore\" - opens the overlay in minimal mode prompting the user to ignore an incoming friend invite","void Steam_Friends::ActivateGameOverlayToUser( const char *pchDialog, CSteamID steamID )","{","    PRINT_DEBUG(\"TODO %s %llu\", pchDialog, steamID.ConvertToUint64());","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","}","","","// activates game overlay web browser directly to the specified URL","// full address with protocol type is required, e.g. http://www.steamgames.com/","void Steam_Friends::ActivateGameOverlayToWebPage( const char *pchURL, EActivateGameOverlayToWebPageMode eMode )","{","    PRINT_DEBUG(\"TODO %s %u\", pchURL, eMode);","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    overlay-\u003eOpenOverlayWebpage(pchURL);","}","","void Steam_Friends::ActivateGameOverlayToWebPage( const char *pchURL )","{","    PRINT_DEBUG(\"old\");","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    ActivateGameOverlayToWebPage( pchURL, k_EActivateGameOverlayToWebPageMode_Default );","}","","// activates game overlay to store page for app","void Steam_Friends::ActivateGameOverlayToStore( AppId_t nAppID, EOverlayToStoreFlag eFlag )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","}","","void Steam_Friends::ActivateGameOverlayToStore( AppId_t nAppID)","{","    PRINT_DEBUG(\"old\");","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","}","","// Mark a target user as 'played with'. This is a client-side only feature that requires that the calling user is ","// in game ","void Steam_Friends::SetPlayedWith( CSteamID steamIDUserPlayedWith )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","}","","","// activates game overlay to open the invite dialog. Invitations will be sent for the provided lobby.","void Steam_Friends::ActivateGameOverlayInviteDialog( CSteamID steamIDLobby )","{","    PRINT_DEBUG_ENTRY();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","","    // Invite all friends playing the same game","    for (auto \u0026fr : friends) {","        if (settings-\u003ehasOverlayAutoSendToFriend(fr.id()) \u0026\u0026 is_appid_compatible(\u0026fr) \u0026\u0026 steamIDLobby.IsValid() \u0026\u0026 fr.lobby_id() != settings-\u003eget_lobby().ConvertToUint64()) {","            uint64 friend_id = (uint64)fr.id();","","            Steam_Matchmaking* steamMatchmaking = get_steam_client()-\u003esteam_matchmaking;","            steamMatchmaking-\u003eInviteUserToLobby(steamIDLobby, friend_id);","            PRINT_DEBUG(\"sent lobby invitation to friend with id = %llu\", friend_id);","        }","    }","","    overlay-\u003eOpenOverlayInvite(steamIDLobby);","}","","// gets the small (32x32) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set","int Steam_Friends::GetSmallFriendAvatar( CSteamID steamIDFriend )","{","    PRINT_DEBUG_ENTRY();","    //IMPORTANT NOTE: don't change friend avatar numbers for the same friend or else some games endlessly allocate stuff.","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    struct Avatar_Numbers numbers = add_friend_avatars(steamIDFriend);","    return numbers.smallest;","}","","","// gets the medium (64x64) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set","int Steam_Friends::GetMediumFriendAvatar( CSteamID steamIDFriend )","{","    PRINT_DEBUG_ENTRY();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    struct Avatar_Numbers numbers = add_friend_avatars(steamIDFriend);","    return numbers.medium;","}","","","// gets the large (184x184) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set","// returns -1 if this image has yet to be loaded, in this case wait for a AvatarImageLoaded_t callback and then call this again","int Steam_Friends::GetLargeFriendAvatar( CSteamID steamIDFriend )","{","    PRINT_DEBUG_ENTRY();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    struct Avatar_Numbers numbers = add_friend_avatars(steamIDFriend);","    return numbers.large;","}","","int Steam_Friends::GetFriendAvatar( CSteamID steamIDFriend, int eAvatarSize )","{","    PRINT_DEBUG_ENTRY();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","\tif (eAvatarSize == k_EAvatarSize32x32) {","\t\treturn GetSmallFriendAvatar(steamIDFriend);","\t} else if (eAvatarSize == k_EAvatarSize64x64) {","\t\treturn GetMediumFriendAvatar(steamIDFriend);","\t} else if (eAvatarSize == k_EAvatarSize184x184) {","\t\treturn GetLargeFriendAvatar(steamIDFriend);","\t} else {","\t\treturn 0;","\t}","}","","int Steam_Friends::GetFriendAvatar(CSteamID steamIDFriend)","{","    PRINT_DEBUG(\"old\");","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return GetFriendAvatar(steamIDFriend, k_EAvatarSize32x32);","}","","// requests information about a user - persona name \u0026 avatar","// if bRequireNameOnly is set, then the avatar of a user isn't downloaded ","// - it's a lot slower to download avatars and churns the local cache, so if you don't need avatars, don't request them","// if returns true, it means that data is being requested, and a PersonaStateChanged_t callback will be posted when it's retrieved","// if returns false, it means that we already have all the details about that user, and functions can be called immediately","bool Steam_Friends::RequestUserInformation( CSteamID steamIDUser, bool bRequireNameOnly )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    //persona_change(steamIDUser, k_EPersonaChangeName);","    //We already know everything","    return false;","}","","","// requests information about a clan officer list","// when complete, data is returned in ClanOfficerListResponse_t call result","// this makes available the calls below","// you can only ask about clans that a user is a member of","// note that this won't download avatars automatically; if you get an officer,","// and no avatar image is available, call RequestUserInformation( steamID, false ) to download the avatar","STEAM_CALL_RESULT( ClanOfficerListResponse_t )","SteamAPICall_t Steam_Friends::RequestClanOfficerList( CSteamID steamIDClan )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return 0;","}","","","// iteration of clan officers - can only be done when a RequestClanOfficerList() call has completed","","// returns the steamID of the clan owner","CSteamID Steam_Friends::GetClanOwner( CSteamID steamIDClan )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return k_steamIDNil;","}","","void Steam_Friends::GetClanOwner(CSteamID\u0026 res, CSteamID steamIDClan )","{","    PRINT_DEBUG_GNU_WIN();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    res = GetClanOwner( steamIDClan );","}","","// returns the number of officers in a clan (including the owner)","int Steam_Friends::GetClanOfficerCount( CSteamID steamIDClan )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return 0;","}","","// returns the steamID of a clan officer, by index, of range [0,GetClanOfficerCount)","CSteamID Steam_Friends::GetClanOfficerByIndex( CSteamID steamIDClan, int iOfficer )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return k_steamIDNil;","}","","void Steam_Friends::GetClanOfficerByIndex(CSteamID\u0026 res, CSteamID steamIDClan, int iOfficer )","{","    PRINT_DEBUG_GNU_WIN();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    res = GetClanOfficerByIndex( steamIDClan, iOfficer );","}","","// if current user is chat restricted, he can't send or receive any text/voice chat messages.","// the user can't see custom avatars. But the user can be online and send/recv game invites.","// a chat restricted user can't add friends or join any groups.","uint32 Steam_Friends::GetUserRestrictions()","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return k_nUserRestrictionNone;","}","","EUserRestriction Steam_Friends::GetUserRestrictions_old()","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return k_nUserRestrictionNone;","}","","// Rich Presence data is automatically shared between friends who are in the same game","// Each user has a set of Key/Value pairs","// Note the following limits: k_cchMaxRichPresenceKeys, k_cchMaxRichPresenceKeyLength, k_cchMaxRichPresenceValueLength","// There are two magic keys:","//\t\t\"status\"  - a UTF-8 string that will show up in the 'view game info' dialog in the Steam friends list","//\t\t\"connect\" - a UTF-8 string that contains the command-line for how a friend can connect to a game","// GetFriendRichPresence() returns an empty string \"\" if no value is set","// SetRichPresence() to a NULL or an empty string deletes the key","// You can iterate the current set of keys for a friend with GetFriendRichPresenceKeyCount()","// and GetFriendRichPresenceKeyByIndex() (typically only used for debugging)","bool Steam_Friends::SetRichPresence( const char *pchKey, const char *pchValue )","{","    PRINT_DEBUG(\"%s %s\", pchKey, pchValue ? pchValue : \"NULL\");","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    if (pchValue) {","        auto prev_value = (*us.mutable_rich_presence()).find(pchKey);","        if (prev_value == (*us.mutable_rich_presence()).end() || prev_value-\u003esecond != pchValue) {","            (*us.mutable_rich_presence())[pchKey] = pchValue;","            resend_friend_data();","        }","    } else {","        auto to_remove = us.mutable_rich_presence()-\u003efind(pchKey);","        if (to_remove != us.mutable_rich_presence()-\u003eend()) {","            us.mutable_rich_presence()-\u003eerase(to_remove);","            resend_friend_data();","        }","    }","","    return true;","}","","void Steam_Friends::ClearRichPresence()","{","    PRINT_DEBUG_ENTRY();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    us.mutable_rich_presence()-\u003eclear();","    resend_friend_data();","    ","}","","// the overlay will keep calling GetFriendRichPresence() and spam the debug log, hence this function","const char* Steam_Friends::get_friend_rich_presence_silent( CSteamID steamIDFriend, const char *pchKey )","{","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    const char *value = \"\";","","    Friend *f = NULL;","    if (settings-\u003eget_local_steam_id() == steamIDFriend) {","        f = \u0026us;","    } else {","        f = find_friend(steamIDFriend);","    }","","    if (f \u0026\u0026 is_appid_compatible(f)) {","        auto result = f-\u003erich_presence().find(pchKey);","        if (result != f-\u003erich_presence().end()) value = result-\u003esecond.c_str();","    }","","    return value;","}","","const char* Steam_Friends::GetFriendRichPresence( CSteamID steamIDFriend, const char *pchKey )","{","    PRINT_DEBUG(\"%llu '%s'\", steamIDFriend.ConvertToUint64(), pchKey);","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    ","    const char *value = get_friend_rich_presence_silent(steamIDFriend, pchKey);","","    PRINT_DEBUG(\"returned '%s'\", value);","    return value;","}","","int Steam_Friends::GetFriendRichPresenceKeyCount( CSteamID steamIDFriend )","{","    PRINT_DEBUG_ENTRY();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    int num = 0;","","    Friend *f = NULL;","    if (settings-\u003eget_local_steam_id() == steamIDFriend) {","        f = \u0026us;","    } else {","        f = find_friend(steamIDFriend);","    }","","    if (f \u0026\u0026 is_appid_compatible(f)) num = static_cast\u003cint\u003e(f-\u003erich_presence().size());","    ","    return num;","}","","const char* Steam_Friends::GetFriendRichPresenceKeyByIndex( CSteamID steamIDFriend, int iKey )","{","    PRINT_DEBUG_ENTRY();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    const char *key = \"\";","","    Friend *f = NULL;","    if (settings-\u003eget_local_steam_id() == steamIDFriend) {","        f = \u0026us;","    } else {","        f = find_friend(steamIDFriend);","    }","","    if (iKey \u003e= 0 \u0026\u0026 f \u0026\u0026 is_appid_compatible(f) \u0026\u0026 f-\u003erich_presence().size() \u003e static_cast\u003csize_t\u003e(iKey)) {","        auto friend_data = f-\u003erich_presence().begin();","        for (int i = 0; i \u003c iKey; ++i) ++friend_data;","        key = friend_data-\u003efirst.c_str();","    }","","    ","    return key;","}","","// Requests rich presence for a specific user.","void Steam_Friends::RequestFriendRichPresence( CSteamID steamIDFriend )","{","    PRINT_DEBUG_ENTRY();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    Friend *f = find_friend(steamIDFriend);","    if (f) rich_presence_updated(steamIDFriend, settings-\u003eget_local_game_id().AppID());","    ","}","","","// rich invite support","// if the target accepts the invite, the pchConnectString gets added to the command-line for launching the game","// if the game is already running, a GameRichPresenceJoinRequested_t callback is posted containing the connect string","// invites can only be sent to friends","bool Steam_Friends::InviteUserToGame( CSteamID steamIDFriend, const char *pchConnectString )","{","    PRINT_DEBUG_ENTRY();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    Friend *f = find_friend(steamIDFriend);","    if (!f) return false;","","    Common_Message msg;","    Friend_Messages *friend_messages = new Friend_Messages();","    friend_messages-\u003eset_type(Friend_Messages::GAME_INVITE);","    friend_messages-\u003eset_connect_str(pchConnectString);","    msg.set_allocated_friend_messages(friend_messages);","    msg.set_source_id(settings-\u003eget_local_steam_id().ConvertToUint64());","    msg.set_dest_id(steamIDFriend.ConvertToUint64());","    return network-\u003esendTo(\u0026msg, true);","}","","","// recently-played-with friends iteration","// this iterates the entire list of users recently played with, across games","// GetFriendCoplayTime() returns as a unix time","int Steam_Friends::GetCoplayFriendCount()","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return 0;","}","","CSteamID Steam_Friends::GetCoplayFriend( int iCoplayFriend )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return k_steamIDNil;","}","","void Steam_Friends::GetCoplayFriend( CSteamID\u0026 res, int iCoplayFriend )","{","    PRINT_DEBUG_GNU_WIN();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    res = GetCoplayFriend( iCoplayFriend );","}","","int Steam_Friends::GetFriendCoplayTime( CSteamID steamIDFriend )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return 0;","}","","AppId_t Steam_Friends::GetFriendCoplayGame( CSteamID steamIDFriend )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return 0;","}","","","// chat interface for games","// this allows in-game access to group (clan) chats from in the game","// the behavior is somewhat sophisticated, because the user may or may not be already in the group chat from outside the game or in the overlay","// use ActivateGameOverlayToUser( \"chat\", steamIDClan ) to open the in-game overlay version of the chat","STEAM_CALL_RESULT( JoinClanChatRoomCompletionResult_t )","SteamAPICall_t Steam_Friends::JoinClanChatRoom( CSteamID steamIDClan )","{","    PRINT_DEBUG(\"TODO %llu\", steamIDClan.ConvertToUint64());","    //TODO actually join a room","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    JoinClanChatRoomCompletionResult_t data;","    data.m_steamIDClanChat = steamIDClan;","    data.m_eChatRoomEnterResponse = k_EChatRoomEnterResponseSuccess;","    ","    auto ret = callback_results-\u003eaddCallResult(data.k_iCallback, \u0026data, sizeof(data));","    callbacks-\u003eaddCBResult(data.k_iCallback, \u0026data, sizeof(data));","    return ret;","}","","bool Steam_Friends::LeaveClanChatRoom( CSteamID steamIDClan )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return false;","}","","int Steam_Friends::GetClanChatMemberCount( CSteamID steamIDClan )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return 0;","}","","CSteamID Steam_Friends::GetChatMemberByIndex( CSteamID steamIDClan, int iUser )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return k_steamIDNil;","}","","void Steam_Friends::GetChatMemberByIndex(CSteamID\u0026 res, CSteamID steamIDClan, int iUser )","{","    PRINT_DEBUG_GNU_WIN();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    res = GetChatMemberByIndex( steamIDClan, iUser );","}","","bool Steam_Friends::SendClanChatMessage( CSteamID steamIDClanChat, const char *pchText )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return false;","}","","int Steam_Friends::GetClanChatMessage( CSteamID steamIDClanChat, int iMessage, void *prgchText, int cchTextMax, EChatEntryType *peChatEntryType, STEAM_OUT_STRUCT() CSteamID *psteamidChatter )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return 0;","}","","bool Steam_Friends::IsClanChatAdmin( CSteamID steamIDClanChat, CSteamID steamIDUser )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return false;","}","","","// interact with the Steam (game overlay / desktop)","bool Steam_Friends::IsClanChatWindowOpenInSteam( CSteamID steamIDClanChat )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return false;","}","","bool Steam_Friends::OpenClanChatWindowInSteam( CSteamID steamIDClanChat )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return true;","}","","bool Steam_Friends::CloseClanChatWindowInSteam( CSteamID steamIDClanChat )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return true;","}","","","// peer-to-peer chat interception","// this is so you can show P2P chats inline in the game","bool Steam_Friends::SetListenForFriendsMessages( bool bInterceptEnabled )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return true;","}","","bool Steam_Friends::ReplyToFriendMessage( CSteamID steamIDFriend, const char *pchMsgToSend )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return false;","}","","int Steam_Friends::GetFriendMessage( CSteamID steamIDFriend, int iMessageID, void *pvData, int cubData, EChatEntryType *peChatEntryType )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return 0;","}","","","// following apis","STEAM_CALL_RESULT( FriendsGetFollowerCount_t )","SteamAPICall_t Steam_Friends::GetFollowerCount( CSteamID steamID )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return 0;","}","","STEAM_CALL_RESULT( FriendsIsFollowing_t )","SteamAPICall_t Steam_Friends::IsFollowing( CSteamID steamID )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return 0;","}","","STEAM_CALL_RESULT( FriendsEnumerateFollowingList_t )","SteamAPICall_t Steam_Friends::EnumerateFollowingList( uint32 unStartIndex )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return 0;","}","","","bool Steam_Friends::IsClanPublic( CSteamID steamIDClan )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return false;","}","","bool Steam_Friends::IsClanOfficialGameGroup( CSteamID steamIDClan )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return false;","}","","int Steam_Friends::GetNumChatsWithUnreadPriorityMessages()","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return 0;","}","","void Steam_Friends::ActivateGameOverlayRemotePlayTogetherInviteDialog( CSteamID steamIDLobby )","{","    PRINT_DEBUG_ENTRY();","}","","// Call this before calling ActivateGameOverlayToWebPage() to have the Steam Overlay Browser block navigations","// to your specified protocol (scheme) uris and instead dispatch a OverlayBrowserProtocolNavigation_t callback to your game.","// ActivateGameOverlayToWebPage() must have been called with k_EActivateGameOverlayToWebPageMode_Modal","bool Steam_Friends::RegisterProtocolInOverlayBrowser( const char *pchProtocol )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return false;","}","","// Activates the game overlay to open an invite dialog that will send the provided Rich Presence connect string to selected friends","void Steam_Friends::ActivateGameOverlayInviteDialogConnectString( const char *pchConnectString )","{","    PRINT_DEBUG_ENTRY();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","","    // Invite all friends playing the same game","    for (auto \u0026fr : friends) {","        if (settings-\u003ehasOverlayAutoSendToFriend(fr.id()) \u0026\u0026 is_appid_compatible(\u0026fr) \u0026\u0026 fr.lobby_id() != settings-\u003eget_lobby().ConvertToUint64()) {","            uint64 friend_id = (uint64)fr.id();","","            InviteUserToGame(friend_id, pchConnectString);","            PRINT_DEBUG(\"sent game invitation to friend with id = %llu\", friend_id);","        }","    }","","    overlay-\u003eOpenOverlay(\"Friends\");","}","","// Steam Community items equipped by a user on their profile","// You can register for EquippedProfileItemsChanged_t to know when a friend has changed their equipped profile items","STEAM_CALL_RESULT( EquippedProfileItems_t )","SteamAPICall_t Steam_Friends::RequestEquippedProfileItems( CSteamID steamID )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return 0;","}","","bool Steam_Friends::BHasEquippedProfileItem( CSteamID steamID, ECommunityProfileItemType itemType )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return false;","}","","const char* Steam_Friends::GetProfileItemPropertyString( CSteamID steamID, ECommunityProfileItemType itemType, ECommunityProfileItemProperty prop )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return \"\";","}","","uint32 Steam_Friends::GetProfileItemPropertyUint( CSteamID steamID, ECommunityProfileItemType itemType, ECommunityProfileItemProperty prop )","{","    PRINT_DEBUG_TODO();","    std::lock_guard\u003cstd::recursive_mutex\u003e lock(global_mutex);","    return 0;","}","","","","void Steam_Friends::RunCallbacks()","{","\t// PRINT_DEBUG_ENTRY();","    if (settings-\u003eget_lobby() != lobby_id) {","        lobby_id = settings-\u003eget_lobby();","        resend_friend_data();","    }","","    if (modified) {","\t    PRINT_DEBUG(\"sending modified data\");","        Common_Message msg;","        msg.set_source_id(settings-\u003eget_local_steam_id().ConvertToUint64());","        Friend *f = new Friend(us);","        f-\u003eset_id(settings-\u003eget_local_steam_id().ConvertToUint64());","        f-\u003eset_name(settings-\u003eget_local_name());","        f-\u003eset_appid(settings-\u003eget_local_game_id().AppID());","        f-\u003eset_lobby_id(settings-\u003eget_lobby().ConvertToUint64());","        msg.set_allocated_friend_(f);","        network-\u003esendToAllIndividuals(\u0026msg, true);","        modified = false;","        last_sent_friends = std::chrono::high_resolution_clock::now();","    }","}","","void Steam_Friends::Callback(Common_Message *msg)","{","    if (msg-\u003ehas_low_level()) {","        if (msg-\u003elow_level().type() == Low_Level::DISCONNECT) {","            PRINT_DEBUG(\"Disconnect\");","            uint64 id = msg-\u003esource_id();","            auto f = std::find_if(friends.begin(), friends.end(), [\u0026id](Friend const\u0026 item) { return item.id() == id; });","            if (friends.end() != f) {","                persona_change((uint64)f-\u003eid(), k_EPersonaChangeStatus);","                overlay-\u003eFriendDisconnect(*f);","                friends.erase(f);","            }","        }","","        if (msg-\u003elow_level().type() == Low_Level::CONNECT) {","            PRINT_DEBUG(\"Connect %llu\", (uint64)msg-\u003esource_id());","            Common_Message msg_;","            msg_.set_source_id(settings-\u003eget_local_steam_id().ConvertToUint64());","            msg_.set_dest_id(msg-\u003esource_id());","            Friend *f = new Friend(us);","            f-\u003eset_id(settings-\u003eget_local_steam_id().ConvertToUint64());","            f-\u003eset_name(settings-\u003eget_local_name());","            f-\u003eset_appid(settings-\u003eget_local_game_id().AppID());","            f-\u003eset_lobby_id(settings-\u003eget_lobby().ConvertToUint64());","            ","            int avatar_number = GetLargeFriendAvatar(settings-\u003eget_local_steam_id());","            auto avatar_info = settings-\u003eget_image(avatar_number);","            if (avatar_info \u0026\u0026 avatar_info-\u003edata.size()) {","                f-\u003eset_avatar(avatar_info-\u003edata);","            } else {","                f-\u003eset_avatar(\"\");","            }","","            msg_.set_allocated_friend_(f);","            network-\u003esendTo(\u0026msg_, true);","        }","    }","","    if (msg-\u003ehas_friend_()) {","        PRINT_DEBUG(\"Friend \" \"%\" PRIu64 \" \" \"%\" PRIu64 \"\", msg-\u003efriend_().id(), msg-\u003efriend_().lobby_id());","        Friend *f = find_friend((uint64)msg-\u003efriend_().id());","        if (!f) {","            if (msg-\u003efriend_().id() != settings-\u003eget_local_steam_id().ConvertToUint64()) {","                friends.push_back(msg-\u003efriend_());","                overlay-\u003eFriendConnect(msg-\u003efriend_());","                persona_change((uint64)msg-\u003efriend_().id(), k_EPersonaChangeName);","                GetLargeFriendAvatar((uint64)msg-\u003efriend_().id());","            }","        } else {","            std::map\u003cstd::string, std::string\u003e map1(f-\u003erich_presence().begin(), f-\u003erich_presence().end());","            std::map\u003cstd::string, std::string\u003e map2(msg-\u003efriend_().rich_presence().begin(), msg-\u003efriend_().rich_presence().end());","","            if (map1 != map2) {","                //The App ID of the game. This should always be the current game.","                if (is_appid_compatible(f)) {","                    rich_presence_updated((uint64)msg-\u003efriend_().id(), (uint64)msg-\u003efriend_().appid());","                }","            }","            //TODO: callbacks?","            *f = msg-\u003efriend_();","        }","    }","","    if (msg-\u003ehas_friend_messages()) {","        if (msg-\u003efriend_messages().type() == Friend_Messages::LOBBY_INVITE) {","            PRINT_DEBUG(\"Got Lobby Invite\");","            Friend *f = find_friend((uint64)msg-\u003esource_id());","            if (f) {","                LobbyInvite_t data;","                data.m_ulSteamIDUser = msg-\u003esource_id();","                data.m_ulSteamIDLobby = msg-\u003efriend_messages().lobby_id();","                data.m_ulGameID = f-\u003eappid();","                callbacks-\u003eaddCBResult(data.k_iCallback, \u0026data, sizeof(data));","","                if (overlay-\u003eReady() \u0026\u0026 !settings-\u003ehasOverlayAutoAcceptInviteFromFriend(msg-\u003esource_id()))","                {","                    //TODO: the user should accept the invite first but we auto accept it because there's no gui yet","                    // Then we will handle it !","                    overlay-\u003eSetLobbyInvite(*find_friend(static_cast\u003cuint64\u003e(msg-\u003esource_id())), msg-\u003efriend_messages().lobby_id());","                }","                else","                {","                    GameLobbyJoinRequested_t data;","                    data.m_steamIDLobby = CSteamID((uint64)msg-\u003efriend_messages().lobby_id());","                    data.m_steamIDFriend = CSteamID((uint64)msg-\u003esource_id());","                    callbacks-\u003eaddCBResult(data.k_iCallback, \u0026data, sizeof(data));","                }","            }","        }","","        if (msg-\u003efriend_messages().type() == Friend_Messages::GAME_INVITE) {","            PRINT_DEBUG(\"Got Game Invite\");","            //TODO: I'm pretty sure that the user should accept the invite before this is posted but we do like above","            if (overlay-\u003eReady() \u0026\u0026 !settings-\u003ehasOverlayAutoAcceptInviteFromFriend(msg-\u003esource_id()))","            {","                // Then we will handle it !","                overlay-\u003eSetRichInvite(*find_friend(static_cast\u003cuint64\u003e(msg-\u003esource_id())), msg-\u003efriend_messages().connect_str().c_str());","            }","            else","            {","                std::string const\u0026 connect_str = msg-\u003efriend_messages().connect_str();","                GameRichPresenceJoinRequested_t data = {};","                data.m_steamIDFriend = CSteamID((uint64)msg-\u003esource_id());","                strncpy(data.m_rgchConnect, connect_str.c_str(), k_cchMaxRichPresenceValueLength - 1);","                callbacks-\u003eaddCBResult(data.k_iCallback, \u0026data, sizeof(data));","            }","        }","    }","}"],"stylingDirectives":[[[0,33,"pl-c"],[0,2,"pl-c"]],[[0,45,"pl-c"]],[[0,0,"pl-c"]],[[0,73,"pl-c"]],[[0,61,"pl-c"]],[[0,63,"pl-c"]],[[0,67,"pl-c"]],[[0,0,"pl-c"]],[[0,75,"pl-c"]],[[0,65,"pl-c"]],[[0,68,"pl-c"]],[[0,50,"pl-c"]],[[0,0,"pl-c"]],[[0,67,"pl-c"]],[[0,56,"pl-c"]],[[0,38,"pl-c"],[36,38,"pl-c"]],[],[[1,8,"pl-k"],[9,30,"pl-s"],[9,10,"pl-pds"],[29,30,"pl-pds"]],[[1,8,"pl-k"],[9,20,"pl-s"],[9,10,"pl-pds"],[19,20,"pl-pds"]],[],[[1,7,"pl-k"],[8,24,"pl-en"],[25,28,"pl-c1"]],[],[],[[8,34,"pl-en"]],[],[[4,8,"pl-k"],[13,25,"pl-c1"],[34,39,"pl-c1"],[51,54,"pl-c1"],[71,76,"pl-k"],[86,92,"pl-k"],[98,100,"pl-c1"],[109,124,"pl-c1"]],[[4,6,"pl-k"],[16,19,"pl-c1"]],[[8,14,"pl-k"],[15,19,"pl-c1"]],[],[[4,10,"pl-k"]],[],[],[[0,4,"pl-k"],[5,34,"pl-en"]],[],[],[[9,20,"pl-smi"],[26,41,"pl-c1"]],[[9,23,"pl-smi"]],[[15,26,"pl-c1"],[32,43,"pl-smi"],[52,58,"pl-k"]],[],[],[[0,4,"pl-k"],[5,41,"pl-en"]],[],[],[[9,24,"pl-smi"]],[[9,17,"pl-smi"]],[[15,26,"pl-c1"],[32,43,"pl-smi"],[52,58,"pl-k"]],[],[],[[0,4,"pl-k"],[5,39,"pl-en"]],[],[[4,6,"pl-k"],[18,34,"pl-smi"],[36,42,"pl-k"],[43,47,"pl-c1"]],[[4,6,"pl-k"],[18,24,"pl-k"],[25,29,"pl-c1"]],[[4,10,"pl-k"],[21,38,"pl-c1"],[41,46,"pl-c1"],[55,60,"pl-c1"]],[],[],[[0,6,"pl-k"],[7,21,"pl-en"],[22,55,"pl-en"]],[],[[25,40,"pl-c1"]],[[4,8,"pl-k"],[30,34,"pl-c1"]],[[4,6,"pl-k"],[30,33,"pl-c1"]],[[8,14,"pl-k"],[27,33,"pl-smi"]],[],[],[[4,10,"pl-k"],[11,25,"pl-en"]],[[16,28,"pl-smi"],[29,31,"pl-c1"],[34,36,"pl-c1"],[39,40,"pl-c1"],[42,43,"pl-c1"]],[[16,29,"pl-smi"],[30,32,"pl-c1"],[35,37,"pl-c1"],[40,41,"pl-c1"],[43,44,"pl-c1"]],[[16,28,"pl-smi"],[29,32,"pl-c1"],[35,38,"pl-c1"],[41,42,"pl-c1"],[44,45,"pl-c1"]],[],[[4,10,"pl-k"],[11,16,"pl-k"]],[[8,28,"pl-s"],[8,9,"pl-pds"],[27,28,"pl-pds"]],[[8,28,"pl-s"],[8,9,"pl-pds"],[27,28,"pl-pds"]],[[8,29,"pl-s"],[8,9,"pl-pds"],[28,29,"pl-pds"]],[],[[4,10,"pl-k"],[11,16,"pl-k"]],[[8,36,"pl-s"],[8,9,"pl-pds"],[35,36,"pl-pds"]],[[8,36,"pl-s"],[8,9,"pl-pds"],[35,36,"pl-pds"]],[[8,37,"pl-s"],[8,9,"pl-pds"],[36,37,"pl-pds"]],[],[],[[4,6,"pl-k"],[19,41,"pl-smi"],[62,80,"pl-c1"]],[],[[8,16,"pl-k"],[17,21,"pl-k"],[22,26,"pl-k"]],[],[[8,61,"pl-c"],[8,10,"pl-c"]],[[8,11,"pl-k"],[13,18,"pl-k"],[19,23,"pl-k"],[43,80,"pl-c1"],[99,123,"pl-c1"]],[[12,15,"pl-k"],[17,22,"pl-k"],[23,27,"pl-k"]],[],[[28,38,"pl-c1"]],[[16,18,"pl-k"],[31,36,"pl-k"]],[],[[12,14,"pl-k"],[27,32,"pl-k"]],[],[],[[8,94,"pl-c"],[8,10,"pl-c"]],[[8,10,"pl-k"]],[[27,60,"pl-c1"],[72,74,"pl-s"],[72,73,"pl-pds"],[73,74,"pl-pds"],[76,78,"pl-c1"]],[[28,61,"pl-c1"],[73,75,"pl-s"],[73,74,"pl-pds"],[74,75,"pl-pds"],[77,79,"pl-c1"]],[[27,60,"pl-c1"],[72,74,"pl-s"],[72,73,"pl-pds"],[73,74,"pl-pds"],[76,79,"pl-c1"]],[],[[6,10,"pl-k"],[11,13,"pl-k"],[26,48,"pl-smi"]],[[20,31,"pl-c1"]],[[8,10,"pl-k"],[31,38,"pl-c1"],[42,48,"pl-c1"],[55,56,"pl-c1"]],[[30,36,"pl-c1"]],[[28,61,"pl-c1"],[62,64,"pl-s"],[62,63,"pl-pds"],[63,64,"pl-pds"],[69,75,"pl-c1"],[79,81,"pl-c1"]],[[27,60,"pl-c1"],[61,63,"pl-s"],[61,62,"pl-pds"],[62,63,"pl-pds"],[68,74,"pl-c1"],[78,80,"pl-c1"]],[[10,14,"pl-k"]],[],[[12,20,"pl-k"],[21,25,"pl-k"],[26,30,"pl-k"]],[],[[12,65,"pl-c"],[12,14,"pl-c"]],[[12,15,"pl-k"],[17,22,"pl-k"],[23,27,"pl-k"],[47,84,"pl-c1"],[103,127,"pl-c1"]],[[16,19,"pl-k"],[21,26,"pl-k"],[27,31,"pl-k"]],[],[[32,42,"pl-c1"]],[[20,22,"pl-k"],[35,40,"pl-k"]],[],[[16,18,"pl-k"],[31,36,"pl-k"]],[],[],[[12,14,"pl-k"]],[[31,64,"pl-c1"],[76,78,"pl-s"],[76,77,"pl-pds"],[77,78,"pl-pds"],[80,82,"pl-c1"]],[[32,65,"pl-c1"],[77,79,"pl-s"],[77,78,"pl-pds"],[78,79,"pl-pds"],[81,83,"pl-c1"]],[[31,64,"pl-c1"],[76,78,"pl-s"],[76,77,"pl-pds"],[77,78,"pl-pds"],[80,83,"pl-c1"]],[],[],[],[],[[19,27,"pl-smi"],[40,49,"pl-c1"],[64,66,"pl-c1"],[68,70,"pl-c1"]],[[19,25,"pl-smi"],[38,47,"pl-c1"],[63,65,"pl-c1"],[67,69,"pl-c1"]],[[19,24,"pl-smi"],[37,46,"pl-c1"],[61,64,"pl-c1"],[66,69,"pl-c1"]],[],[],[[4,10,"pl-k"]],[],[],[[0,4,"pl-k"],[5,42,"pl-en"],[43,47,"pl-k"]],[],[[4,27,"pl-c"],[4,6,"pl-c"]],[],[],[[19,27,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,49,"pl-en"],[50,54,"pl-k"]],[],[[4,27,"pl-c"],[4,6,"pl-c"]],[],[],[[19,31,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,38,"pl-en"]],[],[[15,19,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,35,"pl-en"],[36,39,"pl-k"]],[],[[4,6,"pl-k"],[47,53,"pl-k"],[54,58,"pl-c1"]],[],[[4,10,"pl-k"],[11,16,"pl-c1"]],[],[],[],[[0,28,"pl-en"],[49,54,"pl-k"],[55,68,"pl-en"]],[],[],[],[],[],[],[],[],[[15,20,"pl-c1"]],[],[[4,8,"pl-c1"],[10,17,"pl-smi"],[19,30,"pl-c1"],[31,49,"pl-c1"],[61,79,"pl-c1"],[123,127,"pl-c1"]],[[4,8,"pl-c1"],[10,17,"pl-smi"],[19,30,"pl-c1"],[31,58,"pl-c1"],[70,88,"pl-c1"],[132,136,"pl-c1"]],[[4,8,"pl-c1"],[10,17,"pl-smi"],[19,30,"pl-c1"],[31,54,"pl-c1"],[66,84,"pl-c1"],[128,132,"pl-c1"]],[[4,8,"pl-c1"],[10,25,"pl-smi"],[27,30,"pl-c1"],[78,82,"pl-c1"]],[],[],[[0,29,"pl-en"]],[],[[4,8,"pl-c1"],[10,17,"pl-smi"],[19,29,"pl-c1"],[30,48,"pl-c1"],[60,78,"pl-c1"],[122,126,"pl-c1"]],[[4,8,"pl-c1"],[10,17,"pl-smi"],[19,29,"pl-c1"],[30,57,"pl-c1"],[69,87,"pl-c1"],[131,135,"pl-c1"]],[[4,8,"pl-c1"],[10,17,"pl-smi"],[19,29,"pl-c1"],[30,53,"pl-c1"],[65,83,"pl-c1"],[127,131,"pl-c1"]],[[1,5,"pl-c1"],[7,22,"pl-smi"],[24,30,"pl-c1"],[78,82,"pl-c1"]],[],[],[],[[0,62,"pl-c"],[0,2,"pl-c"]],[[0,63,"pl-c"],[0,2,"pl-c"]],[[0,33,"pl-c"],[0,2,"pl-c"]],[[0,109,"pl-c"],[0,2,"pl-c"]],[[0,52,"pl-c"],[0,2,"pl-c"]],[[0,5,"pl-k"],[6,10,"pl-k"],[12,41,"pl-en"]],[],[[4,21,"pl-c1"]],[[42,46,"pl-c1"]],[[4,9,"pl-k"],[10,14,"pl-k"],[39,53,"pl-c1"]],[],[[4,10,"pl-k"]],[],[],[[0,105,"pl-c"],[0,2,"pl-c"]],[[0,99,"pl-c"],[0,2,"pl-c"]],[[0,2,"pl-c"],[0,2,"pl-c"]],[[0,107,"pl-c"],[0,2,"pl-c"]],[[0,2,"pl-c"],[0,2,"pl-c"]],[[0,114,"pl-c"],[0,2,"pl-c"]],[[0,81,"pl-c"],[0,2,"pl-c"]],[[0,17,"pl-c1"]],[[15,44,"pl-en"],[46,51,"pl-k"],[52,56,"pl-k"]],[],[[4,21,"pl-c1"]],[[42,46,"pl-c1"]],[],[[4,42,"pl-c"],[4,6,"pl-c"]],[[4,18,"pl-c1"],[29,47,"pl-c1"]],[],[],[[9,19,"pl-smi"],[22,26,"pl-c1"]],[[9,24,"pl-smi"],[27,32,"pl-c1"]],[[9,17,"pl-smi"]],[],[[4,8,"pl-k"],[33,46,"pl-c1"],[52,63,"pl-smi"],[72,78,"pl-k"]],[[15,26,"pl-c1"],[32,43,"pl-smi"],[52,58,"pl-k"]],[[4,10,"pl-k"]],[],[],[[0,4,"pl-k"],[5,38,"pl-en"],[40,45,"pl-k"],[46,50,"pl-k"]],[],[[1,12,"pl-c1"],[13,18,"pl-s"],[13,14,"pl-pds"],[17,18,"pl-pds"]],[[42,46,"pl-c1"]],[[1,15,"pl-c1"]],[],[],[[0,38,"pl-c"],[0,2,"pl-c"]],[[14,44,"pl-en"]],[],[[4,21,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"]],[],[],[[0,4,"pl-k"],[5,35,"pl-en"]],[],[[4,20,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,29,"pl-en"]],[],[[4,20,"pl-c1"]],[[4,6,"pl-k"]],[[8,14,"pl-k"],[15,20,"pl-c1"]],[[4,11,"pl-c"],[4,6,"pl-c"]],[[4,10,"pl-k"],[11,15,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,32,"pl-en"]],[],[[4,20,"pl-c1"]],[[4,6,"pl-k"]],[[8,14,"pl-k"],[15,20,"pl-c1"]],[[4,11,"pl-c"],[4,6,"pl-c"]],[[4,10,"pl-k"],[11,15,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,29,"pl-en"]],[],[[4,15,"pl-c1"],[16,27,"pl-s"],[16,17,"pl-pds"],[26,27,"pl-pds"]],[[4,10,"pl-k"],[11,20,"pl-c1"],[37,40,"pl-k"]],[],[],[],[[0,19,"pl-c"],[0,2,"pl-c"]],[[0,111,"pl-c"],[0,2,"pl-c"]],[[0,85,"pl-c"],[0,2,"pl-c"]],[[0,3,"pl-k"],[4,33,"pl-en"],[35,38,"pl-k"]],[],[[4,15,"pl-c1"],[16,20,"pl-s"],[16,17,"pl-pds"],[19,20,"pl-pds"]],[[42,46,"pl-c1"]],[[4,7,"pl-k"],[16,17,"pl-c1"]],[[4,6,"pl-k"],[8,23,"pl-c1"],[47,58,"pl-k"],[59,62,"pl-k"],[72,76,"pl-c1"]],[[4,15,"pl-c1"],[16,26,"pl-s"],[16,17,"pl-pds"],[25,26,"pl-pds"]],[[4,10,"pl-k"]],[],[],[[0,3,"pl-k"],[4,33,"pl-en"]],[],[[4,15,"pl-c1"],[16,21,"pl-s"],[16,17,"pl-pds"],[20,21,"pl-pds"]],[[42,46,"pl-c1"]],[[1,7,"pl-k"],[8,22,"pl-c1"],[24,27,"pl-k"]],[],[],[[0,32,"pl-c"],[0,2,"pl-c"]],[[0,52,"pl-c"],[0,2,"pl-c"]],[[0,67,"pl-c"],[0,2,"pl-c"]],[[0,101,"pl-c"],[0,2,"pl-c"]],[[9,40,"pl-en"],[42,45,"pl-k"],[55,58,"pl-k"]],[],[[4,21,"pl-c1"]],[[42,46,"pl-c1"]],[],[[4,6,"pl-k"],[8,23,"pl-c1"]],[[8,10,"pl-k"],[23,24,"pl-c1"],[28,39,"pl-k"],[40,46,"pl-c1"],[67,71,"pl-c1"]],[[17,25,"pl-c1"],[51,53,"pl-c1"]],[],[],[],[[4,10,"pl-k"]],[],[],[[0,4,"pl-k"],[5,36,"pl-en"],[52,55,"pl-k"],[65,68,"pl-k"]],[],[[1,20,"pl-c1"]],[[42,46,"pl-c1"]],[[7,23,"pl-c1"]],[],[],[[9,40,"pl-en"],[42,45,"pl-k"]],[],[[1,12,"pl-c1"],[13,18,"pl-s"],[13,14,"pl-pds"],[17,18,"pl-pds"]],[[42,46,"pl-c1"]],[[1,7,"pl-k"],[8,24,"pl-c1"],[35,38,"pl-k"]],[],[],[],[[0,4,"pl-k"],[5,36,"pl-en"],[55,58,"pl-k"]],[],[[1,20,"pl-c1"]],[[42,46,"pl-c1"]],[[10,26,"pl-c1"]],[],[],[],[[0,35,"pl-c"],[0,2,"pl-c"]],[[20,56,"pl-en"]],[],[[4,15,"pl-c1"],[16,22,"pl-s"],[16,17,"pl-pds"],[21,22,"pl-pds"],[38,53,"pl-c1"]],[[42,46,"pl-c1"]],[[4,6,"pl-k"],[35,53,"pl-c1"],[57,63,"pl-k"],[91,112,"pl-c"],[91,93,"pl-c"]],[[4,6,"pl-k"],[8,19,"pl-c1"],[36,42,"pl-k"]],[],[[4,10,"pl-k"]],[],[],[],[[0,51,"pl-c"],[0,2,"pl-c"]],[[0,177,"pl-c"],[0,2,"pl-c"]],[[14,50,"pl-en"]],[],[[4,15,"pl-c1"],[16,22,"pl-s"],[16,17,"pl-pds"],[21,22,"pl-pds"],[38,53,"pl-c1"]],[[42,46,"pl-c1"]],[],[[4,6,"pl-k"],[35,53,"pl-c1"],[59,70,"pl-c1"]],[],[],[],[[4,72,"pl-c"],[4,6,"pl-c"]],[[4,10,"pl-k"]],[],[],[[0,4,"pl-k"],[5,50,"pl-en"]],[],[[4,21,"pl-c1"]],[[4,68,"pl-c"],[4,6,"pl-c"]],[[4,10,"pl-k"],[11,30,"pl-c1"],[46,50,"pl-c1"],[76,80,"pl-c1"]],[],[],[],[[0,61,"pl-c"],[0,2,"pl-c"]],[[0,110,"pl-c"],[0,2,"pl-c"]],[[0,179,"pl-c"],[0,2,"pl-c"]],[[0,3,"pl-c"],[0,2,"pl-c"]],[[0,5,"pl-k"],[6,10,"pl-k"],[12,47,"pl-en"]],[],[[4,15,"pl-c1"],[16,22,"pl-s"],[16,17,"pl-pds"],[21,22,"pl-pds"],[38,53,"pl-c1"]],[[42,46,"pl-c1"]],[[4,9,"pl-k"],[10,14,"pl-k"],[23,37,"pl-s"],[23,24,"pl-pds"],[36,37,"pl-pds"]],[[4,6,"pl-k"],[35,53,"pl-c1"]],[[25,39,"pl-c1"]],[[6,10,"pl-k"]],[[20,31,"pl-c1"]],[[8,10,"pl-k"],[25,29,"pl-c1"],[32,37,"pl-c1"]],[],[],[[4,15,"pl-c1"],[16,31,"pl-s"],[16,17,"pl-pds"],[30,31,"pl-pds"]],[[4,10,"pl-k"]],[],[],[[6,36,"pl-en"],[37,42,"pl-k"],[43,47,"pl-k"]],[],[[4,20,"pl-c1"]],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[[0,3,"pl-k"],[4,33,"pl-en"]],[],[[4,15,"pl-c1"],[16,27,"pl-s"],[16,17,"pl-pds"],[26,27,"pl-pds"]],[[4,10,"pl-k"],[11,25,"pl-c1"],[27,30,"pl-k"]],[],[],[[9,40,"pl-en"],[41,44,"pl-k"]],[],[[4,15,"pl-c1"],[16,27,"pl-s"],[16,17,"pl-pds"],[26,27,"pl-pds"]],[[4,10,"pl-k"],[11,27,"pl-c1"],[38,41,"pl-k"]],[],[],[[0,4,"pl-k"],[5,35,"pl-en"],[91,96,"pl-k"],[97,101,"pl-k"]],[],[[4,20,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,37,"pl-en"],[62,67,"pl-k"],[68,72,"pl-k"],[82,87,"pl-k"],[88,92,"pl-k"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,6,"pl-k"]],[[8,14,"pl-k"],[16,44,"pl-c"],[16,18,"pl-c"]],[],[[4,6,"pl-k"],[27,28,"pl-c1"],[31,54,"pl-c"],[31,33,"pl-c"]],[],[[12,17,"pl-c1"]],[[22,33,"pl-c1"]],[],[[4,8,"pl-k"]],[],[[12,23,"pl-c1"],[35,46,"pl-c1"]],[[8,89,"pl-c"],[8,10,"pl-c"]],[],[],[],[[0,5,"pl-k"],[6,10,"pl-k"],[12,44,"pl-en"],[69,74,"pl-k"],[75,79,"pl-k"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,89,"pl-c"],[4,6,"pl-c"]],[],[[4,6,"pl-k"],[27,28,"pl-c1"]],[],[[8,14,"pl-k"],[27,32,"pl-c1"]],[],[[4,8,"pl-k"]],[],[[8,12,"pl-k"],[22,26,"pl-c1"],[27,38,"pl-c1"]],[[8,10,"pl-k"],[22,25,"pl-c1"]],[[12,18,"pl-k"],[19,21,"pl-s"],[19,20,"pl-pds"],[20,21,"pl-pds"]],[],[[8,14,"pl-k"],[19,25,"pl-smi"],[26,31,"pl-c1"]],[],[],[],[[0,3,"pl-k"],[4,33,"pl-en"],[58,61,"pl-k"],[71,75,"pl-k"],[85,88,"pl-k"]],[],[[4,20,"pl-c1"]],[[4,6,"pl-k"]],[],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,35,"pl-en"],[91,96,"pl-k"],[97,101,"pl-k"],[114,117,"pl-k"]],[],[[4,20,"pl-c1"]],[[4,10,"pl-k"],[11,15,"pl-c1"]],[],[],[[0,3,"pl-k"],[4,46,"pl-en"]],[],[[4,20,"pl-c1"]],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,39,"pl-en"],[64,67,"pl-k"]],[],[[4,20,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,36,"pl-en"]],[],[[4,20,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,39,"pl-en"],[40,45,"pl-k"],[46,50,"pl-k"]],[],[[4,20,"pl-c1"]],[[4,10,"pl-k"],[11,16,"pl-c1"]],[],[],[[0,3,"pl-k"],[4,40,"pl-en"]],[],[[4,21,"pl-c1"]],[[4,10,"pl-k"],[11,25,"pl-c1"],[27,30,"pl-k"]],[],[],[[0,4,"pl-k"],[5,39,"pl-en"]],[],[[4,15,"pl-c1"],[16,27,"pl-s"],[16,17,"pl-pds"],[26,27,"pl-pds"]],[[4,10,"pl-k"],[11,30,"pl-c1"],[81,85,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,40,"pl-en"]],[],[[4,21,"pl-c1"]],[[4,10,"pl-k"],[11,30,"pl-c1"]],[],[],[],[[0,104,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,39,"pl-en"],[65,81,"pl-c1"]],[],[[4,15,"pl-c1"],[16,25,"pl-s"],[16,17,"pl-pds"],[24,25,"pl-pds"],[41,56,"pl-c1"]],[[42,46,"pl-c1"]],[[4,8,"pl-k"],[15,20,"pl-c1"]],[],[[4,6,"pl-k"],[35,53,"pl-c1"]],[[8,19,"pl-c1"],[20,45,"pl-s"],[20,21,"pl-pds"],[44,45,"pl-pds"],[57,74,"pl-c1"],[77,85,"pl-c1"],[99,108,"pl-c1"],[111,126,"pl-c1"]],[[8,10,"pl-k"]],[[29,37,"pl-smi"],[50,67,"pl-c1"]],[[29,39,"pl-smi"],[42,43,"pl-c1"]],[[29,41,"pl-smi"],[44,45,"pl-c1"]],[[29,42,"pl-smi"],[45,46,"pl-c1"]],[[29,43,"pl-smi"],[56,65,"pl-c1"]],[],[],[[14,18,"pl-c1"]],[[6,10,"pl-k"]],[[20,31,"pl-c1"]],[[8,10,"pl-k"]],[[12,23,"pl-c1"],[24,43,"pl-s"],[24,25,"pl-pds"],[42,43,"pl-pds"],[44,47,"pl-s"],[44,45,"pl-pds"],[46,47,"pl-pds"],[55,57,"pl-s"],[55,56,"pl-pds"],[56,57,"pl-pds"],[62,67,"pl-c1"],[74,82,"pl-c1"]],[[12,14,"pl-k"]],[[33,41,"pl-smi"],[44,51,"pl-c1"],[55,60,"pl-c1"]],[[33,43,"pl-smi"],[46,47,"pl-c1"]],[[33,45,"pl-smi"],[48,49,"pl-c1"]],[[33,46,"pl-smi"],[49,50,"pl-c1"]],[[33,47,"pl-smi"],[50,58,"pl-c1"],[70,78,"pl-c1"]],[],[],[[18,22,"pl-c1"]],[],[],[],[[4,10,"pl-k"]],[],[],[[0,4,"pl-k"],[5,39,"pl-en"]],[],[[1,12,"pl-c1"],[13,18,"pl-s"],[13,14,"pl-pds"],[17,18,"pl-pds"]],[[42,46,"pl-c1"]],[],[[1,5,"pl-k"],[12,31,"pl-c1"]],[[1,3,"pl-k"]],[[2,4,"pl-k"],[35,43,"pl-smi"],[44,52,"pl-c1"]],[[2,4,"pl-k"],[35,45,"pl-smi"]],[[2,4,"pl-k"],[39,51,"pl-smi"]],[[2,4,"pl-k"],[41,54,"pl-smi"]],[],[],[[1,7,"pl-k"]],[],[],[[0,99,"pl-c"],[0,2,"pl-c"]],[[0,5,"pl-k"],[6,10,"pl-k"],[12,54,"pl-en"],[80,83,"pl-k"]],[],[[4,21,"pl-c1"]],[[42,46,"pl-c1"]],[[4,9,"pl-k"],[10,14,"pl-k"],[22,24,"pl-s"],[22,23,"pl-pds"],[23,24,"pl-pds"]],[[4,6,"pl-k"],[24,25,"pl-c1"],[33,53,"pl-c1"]],[[4,8,"pl-k"],[9,11,"pl-k"],[29,30,"pl-c1"],[38,53,"pl-s"],[38,39,"pl-pds"],[52,53,"pl-pds"]],[],[[4,10,"pl-k"]],[],[],[[0,22,"pl-c"],[0,2,"pl-c"]],[[0,3,"pl-k"],[4,38,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,14,"pl-c1"]],[],[],[],[[0,132,"pl-c"],[0,2,"pl-c"]],[[0,5,"pl-k"],[6,10,"pl-k"],[12,44,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,15,"pl-c1"]],[],[],[],[[0,29,"pl-c"],[0,2,"pl-c"]],[[0,39,"pl-c"],[0,2,"pl-c"]],[[0,3,"pl-k"],[4,39,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[[0,101,"pl-c"],[0,2,"pl-c"]],[[17,56,"pl-en"],[58,61,"pl-k"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"]],[],[],[[0,95,"pl-c"],[0,2,"pl-c"]],[[0,5,"pl-k"],[6,10,"pl-k"],[12,46,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,15,"pl-c1"]],[],[],[[0,57,"pl-c"],[0,2,"pl-c"]],[[0,3,"pl-k"],[4,46,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[[0,135,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,46,"pl-en"],[81,101,"pl-c1"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[],[],[],[[0,89,"pl-c"],[0,2,"pl-c"]],[[0,84,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,29,"pl-en"],[55,58,"pl-k"]],[],[[4,21,"pl-c1"]],[[42,46,"pl-c1"]],[[4,8,"pl-k"],[15,20,"pl-c1"]],[[4,6,"pl-k"],[8,23,"pl-c1"],[39,41,"pl-k"],[43,54,"pl-c1"],[77,81,"pl-c1"]],[],[[4,10,"pl-k"]],[],[],[[0,4,"pl-k"],[5,29,"pl-en"]],[],[[4,15,"pl-c1"],[16,21,"pl-s"],[16,17,"pl-pds"],[20,21,"pl-pds"]],[[42,46,"pl-c1"]],[[1,7,"pl-k"],[8,17,"pl-c1"],[34,37,"pl-k"]],[],[],[[0,46,"pl-c"],[0,2,"pl-c"]],[[0,3,"pl-k"],[4,31,"pl-en"]],[],[[4,21,"pl-c1"]],[[42,46,"pl-c1"]],[[4,7,"pl-k"],[18,19,"pl-c1"]],[[4,7,"pl-k"],[9,13,"pl-k"],[29,52,"pl-smi"]],[[4,10,"pl-k"]],[],[],[[9,38,"pl-en"],[40,43,"pl-k"]],[],[[4,21,"pl-c1"]],[[42,46,"pl-c1"]],[[4,7,"pl-k"],[18,19,"pl-c1"]],[[4,7,"pl-k"],[9,13,"pl-k"],[29,52,"pl-smi"]],[[8,10,"pl-k"],[30,36,"pl-k"],[39,41,"pl-smi"]],[],[],[[4,10,"pl-k"]],[],[],[[0,4,"pl-k"],[5,34,"pl-en"],[54,57,"pl-k"]],[],[[4,23,"pl-c1"]],[[42,46,"pl-c1"]],[[13,27,"pl-c1"]],[],[],[[0,5,"pl-k"],[6,10,"pl-k"],[12,38,"pl-en"]],[],[[4,21,"pl-c1"]],[[42,46,"pl-c1"]],[[4,7,"pl-k"],[9,13,"pl-k"],[29,52,"pl-smi"]],[[8,10,"pl-k"],[14,16,"pl-smi"],[17,32,"pl-c1"],[50,65,"pl-c1"],[69,75,"pl-k"],[78,82,"pl-smi"],[83,88,"pl-c1"]],[],[[4,10,"pl-k"],[11,13,"pl-s"],[11,12,"pl-pds"],[12,13,"pl-pds"]],[],[],[[0,4,"pl-k"],[5,38,"pl-en"]],[],[[4,20,"pl-c1"]],[[4,10,"pl-k"],[11,16,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,43,"pl-en"],[66,70,"pl-k"]],[],[[4,20,"pl-c1"]],[[4,10,"pl-k"],[11,16,"pl-c1"]],[],[],[[0,5,"pl-k"],[6,10,"pl-k"],[12,37,"pl-en"]],[],[[4,21,"pl-c1"]],[[42,46,"pl-c1"]],[[4,7,"pl-k"],[9,13,"pl-k"],[29,52,"pl-smi"]],[[8,10,"pl-k"],[14,16,"pl-smi"],[17,32,"pl-c1"],[50,65,"pl-c1"],[69,75,"pl-k"],[78,81,"pl-smi"],[82,87,"pl-c1"]],[],[[4,10,"pl-k"],[11,13,"pl-s"],[11,12,"pl-pds"],[12,13,"pl-pds"]],[],[],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,41,"pl-en"],[65,68,"pl-k"],[80,83,"pl-k"],[95,98,"pl-k"]],[],[[4,15,"pl-c1"],[16,27,"pl-s"],[16,17,"pl-pds"],[26,27,"pl-pds"],[41,56,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,16,"pl-c1"]],[],[],[[0,152,"pl-c"],[0,2,"pl-c"]],[[15,56,"pl-en"],[58,75,"pl-c1"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[],[[0,73,"pl-c"],[0,2,"pl-c"]],[[0,66,"pl-c"],[0,2,"pl-c"]],[[0,99,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,3,"pl-k"],[4,43,"pl-en"]],[],[[4,15,"pl-c1"],[16,27,"pl-s"],[16,17,"pl-pds"],[26,27,"pl-pds"],[43,58,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-c"],[4,6,"pl-c"]],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[[9,50,"pl-en"],[76,79,"pl-k"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"]],[],[],[[0,4,"pl-k"],[5,46,"pl-en"],[87,90,"pl-k"]],[],[[4,23,"pl-c1"]],[[42,46,"pl-c1"]],[[10,36,"pl-c1"]],[],[],[],[[0,90,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,34,"pl-en"]],[],[[4,15,"pl-c1"],[16,27,"pl-s"],[16,17,"pl-pds"],[26,27,"pl-pds"],[41,56,"pl-c1"],[74,89,"pl-c1"]],[[42,46,"pl-c1"]],[[4,6,"pl-k"],[33,51,"pl-c1"]],[[8,10,"pl-k"],[22,31,"pl-c1"]],[[12,18,"pl-k"],[19,23,"pl-c1"]],[],[],[[8,10,"pl-k"],[22,39,"pl-smi"],[40,44,"pl-c1"],[59,74,"pl-c1"],[91,108,"pl-smi"],[109,112,"pl-c1"]],[[12,18,"pl-k"],[19,23,"pl-c1"]],[],[[6,10,"pl-k"]],[[20,31,"pl-c1"]],[[8,10,"pl-k"],[16,22,"pl-k"],[23,28,"pl-c1"]],[[8,10,"pl-k"],[15,23,"pl-c1"],[43,58,"pl-c1"],[62,68,"pl-k"],[69,73,"pl-c1"]],[],[[4,10,"pl-c"],[4,6,"pl-c"]],[[4,10,"pl-k"],[11,16,"pl-c1"]],[],[],[],[[0,122,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,42,"pl-en"],[66,70,"pl-k"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[],[],[],[[0,63,"pl-c"],[0,2,"pl-c"]],[[0,127,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,39,"pl-en"],[41,46,"pl-k"],[47,51,"pl-k"]],[],[[4,15,"pl-c1"],[16,20,"pl-s"],[16,17,"pl-pds"],[19,20,"pl-pds"]],[[42,46,"pl-c1"]],[],[[4,6,"pl-k"],[9,16,"pl-c1"],[28,41,"pl-s"],[28,29,"pl-pds"],[40,41,"pl-pds"],[43,49,"pl-k"],[50,63,"pl-s"],[50,51,"pl-pds"],[62,63,"pl-pds"],[67,68,"pl-c1"],[73,74,"pl-c1"]],[[34,65,"pl-c1"],[76,94,"pl-c1"],[98,107,"pl-s"],[98,99,"pl-pds"],[106,107,"pl-pds"]],[],[[8,10,"pl-k"],[24,30,"pl-c1"],[35,36,"pl-c1"]],[[12,56,"pl-c1"],[69,74,"pl-c1"]],[[10,14,"pl-k"],[15,17,"pl-k"],[29,38,"pl-c1"],[41,48,"pl-c1"]],[[12,43,"pl-c1"],[54,63,"pl-c1"]],[],[[6,10,"pl-k"]],[[17,28,"pl-c1"]],[],[],[],[],[[0,45,"pl-c"],[0,2,"pl-c"]],[[0,20,"pl-c"],[0,2,"pl-c"]],[[0,85,"pl-c"],[0,2,"pl-c"]],[[0,80,"pl-c"],[0,2,"pl-c"]],[[0,118,"pl-c"],[0,2,"pl-c"]],[[0,73,"pl-c"],[0,2,"pl-c"]],[[0,87,"pl-c"],[0,2,"pl-c"]],[[0,105,"pl-c"],[0,2,"pl-c"]],[[0,101,"pl-c"],[0,2,"pl-c"]],[[0,116,"pl-c"],[0,2,"pl-c"]],[[0,116,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,45,"pl-en"],[47,52,"pl-k"],[53,57,"pl-k"]],[],[[4,15,"pl-c1"],[16,30,"pl-s"],[16,17,"pl-pds"],[29,30,"pl-pds"],[51,66,"pl-c1"]],[[42,46,"pl-c1"]],[],[],[],[[0,67,"pl-c"],[0,2,"pl-c"]],[[0,79,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,48,"pl-en"],[50,55,"pl-k"],[56,60,"pl-k"]],[],[[4,15,"pl-c1"],[16,28,"pl-s"],[16,17,"pl-pds"],[27,28,"pl-pds"]],[[42,46,"pl-c1"]],[[13,31,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,48,"pl-en"],[50,55,"pl-k"],[56,60,"pl-k"]],[],[[4,15,"pl-c1"],[16,21,"pl-s"],[16,17,"pl-pds"],[20,21,"pl-pds"]],[[42,46,"pl-c1"]],[[4,32,"pl-c1"]],[],[],[[0,47,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,46,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,46,"pl-en"]],[],[[4,15,"pl-c1"],[16,21,"pl-s"],[16,17,"pl-pds"],[20,21,"pl-pds"]],[[42,46,"pl-c1"]],[],[],[[0,114,"pl-c"],[0,2,"pl-c"]],[[0,11,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,33,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[],[],[],[[0,101,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,51,"pl-en"]],[],[[4,21,"pl-c1"]],[[42,46,"pl-c1"]],[],[[4,47,"pl-c"],[4,6,"pl-c"]],[[4,7,"pl-k"],[9,13,"pl-k"]],[[8,10,"pl-k"],[22,48,"pl-c1"],[52,54,"pl-c1"],[61,80,"pl-c1"],[102,109,"pl-c1"],[118,126,"pl-c1"],[142,151,"pl-c1"],[154,169,"pl-c1"]],[[42,44,"pl-c1"]],[],[[50,66,"pl-c1"],[70,87,"pl-smi"]],[[30,47,"pl-c1"]],[[12,23,"pl-c1"],[24,72,"pl-s"],[24,25,"pl-pds"],[71,72,"pl-pds"]],[],[],[],[[13,30,"pl-c1"]],[],[],[[0,132,"pl-c"],[0,2,"pl-c"]],[[0,3,"pl-k"],[4,39,"pl-en"]],[],[[4,21,"pl-c1"]],[[4,121,"pl-c"],[4,6,"pl-c"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,25,"pl-en"],[36,54,"pl-c1"]],[[4,10,"pl-k"],[19,27,"pl-smi"]],[],[],[],[[0,133,"pl-c"],[0,2,"pl-c"]],[[0,3,"pl-k"],[4,40,"pl-en"]],[],[[4,21,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,25,"pl-en"],[36,54,"pl-c1"]],[[4,10,"pl-k"],[19,25,"pl-smi"]],[],[],[],[[0,134,"pl-c"],[0,2,"pl-c"]],[[0,127,"pl-c"],[0,2,"pl-c"]],[[0,3,"pl-k"],[4,39,"pl-en"]],[],[[4,21,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,25,"pl-en"],[36,54,"pl-c1"]],[[4,10,"pl-k"],[19,24,"pl-smi"]],[],[],[[0,3,"pl-k"],[4,34,"pl-en"],[60,63,"pl-k"]],[],[[4,21,"pl-c1"]],[[42,46,"pl-c1"]],[[1,3,"pl-k"]],[[2,8,"pl-k"],[9,29,"pl-c1"]],[[3,7,"pl-k"],[8,10,"pl-k"]],[[2,8,"pl-k"],[9,30,"pl-c1"]],[[3,7,"pl-k"],[8,10,"pl-k"]],[[2,8,"pl-k"],[9,29,"pl-c1"]],[[3,7,"pl-k"]],[[2,8,"pl-k"],[9,10,"pl-c1"]],[],[],[],[[0,3,"pl-k"],[4,34,"pl-en"]],[],[[4,15,"pl-c1"],[16,21,"pl-s"],[16,17,"pl-pds"],[20,21,"pl-pds"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,26,"pl-c1"]],[],[],[[0,60,"pl-c"],[0,2,"pl-c"]],[[0,74,"pl-c"],[0,2,"pl-c"]],[[0,119,"pl-c"],[0,2,"pl-c"]],[[0,130,"pl-c"],[0,2,"pl-c"]],[[0,123,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,42,"pl-en"],[66,70,"pl-k"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,56,"pl-c"],[4,6,"pl-c"]],[[4,32,"pl-c"],[4,6,"pl-c"]],[[4,10,"pl-k"],[11,16,"pl-c1"]],[],[],[],[[0,49,"pl-c"],[0,2,"pl-c"]],[[0,75,"pl-c"],[0,2,"pl-c"]],[[0,39,"pl-c"],[0,2,"pl-c"]],[[0,58,"pl-c"],[0,2,"pl-c"]],[[0,78,"pl-c"],[0,2,"pl-c"]],[[0,105,"pl-c"],[0,2,"pl-c"]],[[0,17,"pl-c1"]],[[15,52,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[],[[0,99,"pl-c"],[0,2,"pl-c"]],[],[[0,40,"pl-c"],[0,2,"pl-c"]],[[9,36,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"]],[],[],[[0,4,"pl-k"],[5,32,"pl-en"]],[],[[4,23,"pl-c1"]],[[42,46,"pl-c1"]],[[10,22,"pl-c1"]],[],[],[[0,65,"pl-c"],[0,2,"pl-c"]],[[0,3,"pl-k"],[4,38,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[[0,84,"pl-c"],[0,2,"pl-c"]],[[9,45,"pl-en"],[69,72,"pl-k"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"]],[],[],[[0,4,"pl-k"],[5,41,"pl-en"],[79,82,"pl-k"]],[],[[4,23,"pl-c1"]],[[42,46,"pl-c1"]],[[10,31,"pl-c1"]],[],[],[[0,93,"pl-c"],[0,2,"pl-c"]],[[0,92,"pl-c"],[0,2,"pl-c"]],[[0,63,"pl-c"],[0,2,"pl-c"]],[[7,41,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"]],[],[],[[17,55,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"]],[],[],[[0,86,"pl-c"],[0,2,"pl-c"]],[[0,41,"pl-c"],[0,2,"pl-c"]],[[0,118,"pl-c"],[0,2,"pl-c"]],[[0,28,"pl-c"],[0,2,"pl-c"]],[[0,105,"pl-c"],[0,2,"pl-c"]],[[0,100,"pl-c"],[0,2,"pl-c"]],[[0,72,"pl-c"],[0,2,"pl-c"]],[[0,65,"pl-c"],[0,2,"pl-c"]],[[0,92,"pl-c"],[0,2,"pl-c"]],[[0,76,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,35,"pl-en"],[37,42,"pl-k"],[43,47,"pl-k"],[57,62,"pl-k"],[63,67,"pl-k"]],[],[[4,15,"pl-c1"],[16,23,"pl-s"],[16,17,"pl-pds"],[22,23,"pl-pds"],[55,61,"pl-s"],[55,56,"pl-pds"],[60,61,"pl-pds"]],[[42,46,"pl-c1"]],[[4,6,"pl-k"]],[[8,12,"pl-k"],[31,52,"pl-c1"],[56,60,"pl-c1"]],[[8,10,"pl-k"],[31,52,"pl-c1"],[56,59,"pl-c1"],[77,83,"pl-smi"]],[[17,38,"pl-c1"]],[[12,30,"pl-c1"]],[],[[6,10,"pl-k"]],[[8,12,"pl-k"],[28,49,"pl-c1"],[53,57,"pl-c1"]],[[8,10,"pl-k"],[28,49,"pl-c1"],[53,56,"pl-c1"]],[[15,36,"pl-c1"],[40,45,"pl-c1"]],[[12,30,"pl-c1"]],[],[],[],[[4,10,"pl-k"],[11,15,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,37,"pl-en"]],[],[[4,21,"pl-c1"]],[[42,46,"pl-c1"]],[[7,28,"pl-c1"],[32,37,"pl-c1"]],[[4,22,"pl-c1"]],[],[],[],[[0,100,"pl-c"],[0,2,"pl-c"]],[[0,5,"pl-k"],[6,10,"pl-k"],[12,58,"pl-en"],[84,89,"pl-k"],[90,94,"pl-k"]],[],[[42,46,"pl-c1"]],[[4,9,"pl-k"],[10,14,"pl-k"],[24,26,"pl-s"],[24,25,"pl-pds"],[25,26,"pl-pds"]],[],[[16,20,"pl-c1"]],[[4,6,"pl-k"],[18,36,"pl-c1"]],[],[[6,10,"pl-k"]],[[12,23,"pl-c1"]],[],[],[[4,6,"pl-k"],[13,32,"pl-c1"]],[[8,12,"pl-k"],[25,38,"pl-c1"],[41,45,"pl-c1"]],[[8,10,"pl-k"],[25,38,"pl-c1"],[41,44,"pl-c1"],[64,70,"pl-smi"],[71,76,"pl-c1"]],[],[],[[4,10,"pl-k"]],[],[],[[0,5,"pl-k"],[6,10,"pl-k"],[12,48,"pl-en"],[74,79,"pl-k"],[80,84,"pl-k"]],[],[[4,15,"pl-c1"],[16,27,"pl-s"],[16,17,"pl-pds"],[26,27,"pl-pds"],[43,58,"pl-c1"]],[[42,46,"pl-c1"]],[],[[4,9,"pl-k"],[10,14,"pl-k"],[24,55,"pl-c1"]],[],[[4,15,"pl-c1"],[16,31,"pl-s"],[16,17,"pl-pds"],[30,31,"pl-pds"]],[[4,10,"pl-k"]],[],[],[[0,3,"pl-k"],[4,48,"pl-en"]],[],[[4,21,"pl-c1"]],[[42,46,"pl-c1"]],[[4,7,"pl-k"],[14,15,"pl-c1"]],[],[[16,20,"pl-c1"]],[[4,6,"pl-k"],[18,36,"pl-c1"]],[],[[6,10,"pl-k"]],[[12,23,"pl-c1"]],[],[],[[4,6,"pl-k"],[13,32,"pl-c1"],[43,54,"pl-k"],[55,58,"pl-k"],[63,76,"pl-c1"],[79,83,"pl-c1"]],[],[[4,10,"pl-k"]],[],[],[[0,5,"pl-k"],[6,10,"pl-k"],[12,58,"pl-en"],[84,87,"pl-k"]],[],[[4,21,"pl-c1"]],[[42,46,"pl-c1"]],[[4,9,"pl-k"],[10,14,"pl-k"],[22,24,"pl-s"],[22,23,"pl-pds"],[23,24,"pl-pds"]],[],[[16,20,"pl-c1"]],[[4,6,"pl-k"],[18,36,"pl-c1"]],[],[[6,10,"pl-k"]],[[12,23,"pl-c1"]],[],[],[[4,6,"pl-k"],[16,17,"pl-c1"],[26,45,"pl-c1"],[55,68,"pl-c1"],[71,75,"pl-c1"],[80,91,"pl-k"],[92,98,"pl-c1"]],[[8,12,"pl-k"],[30,43,"pl-c1"],[46,51,"pl-c1"]],[[8,11,"pl-k"],[13,16,"pl-k"],[21,22,"pl-c1"]],[[27,32,"pl-smi"],[33,38,"pl-c1"]],[],[],[],[[4,10,"pl-k"]],[],[],[[0,46,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,45,"pl-en"]],[],[[4,21,"pl-c1"]],[[42,46,"pl-c1"]],[[16,27,"pl-c1"]],[[4,6,"pl-k"],[11,32,"pl-c1"],[58,75,"pl-c1"],[78,83,"pl-c1"]],[],[],[],[],[[0,22,"pl-c"],[0,2,"pl-c"]],[[0,111,"pl-c"],[0,2,"pl-c"]],[[0,117,"pl-c"],[0,2,"pl-c"]],[[0,38,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,36,"pl-en"],[62,67,"pl-k"],[68,72,"pl-k"]],[],[[4,21,"pl-c1"]],[[42,46,"pl-c1"]],[[16,27,"pl-c1"]],[[4,6,"pl-k"],[12,18,"pl-k"],[19,24,"pl-c1"]],[],[],[[39,42,"pl-k"],[43,58,"pl-c1"]],[[21,29,"pl-c1"],[47,58,"pl-c1"]],[[21,36,"pl-c1"]],[[8,37,"pl-c1"]],[[8,21,"pl-c1"],[32,50,"pl-c1"],[53,68,"pl-c1"]],[[8,19,"pl-c1"],[34,49,"pl-c1"]],[[4,10,"pl-k"],[20,26,"pl-c1"],[33,37,"pl-c1"]],[],[],[],[[0,41,"pl-c"],[0,2,"pl-c"]],[[0,76,"pl-c"],[0,2,"pl-c"]],[[0,47,"pl-c"],[0,2,"pl-c"]],[[0,3,"pl-k"],[4,39,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[[9,39,"pl-en"],[41,44,"pl-k"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"]],[],[],[[0,4,"pl-k"],[5,35,"pl-en"],[52,55,"pl-k"]],[],[[4,23,"pl-c1"]],[[42,46,"pl-c1"]],[[10,25,"pl-c1"]],[],[],[[0,3,"pl-k"],[4,38,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[[8,42,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[],[[0,27,"pl-c"],[0,2,"pl-c"]],[[0,68,"pl-c"],[0,2,"pl-c"]],[[0,143,"pl-c"],[0,2,"pl-c"]],[[0,103,"pl-c"],[0,2,"pl-c"]],[[0,17,"pl-c1"]],[[15,46,"pl-en"]],[],[[4,15,"pl-c1"],[16,27,"pl-s"],[16,17,"pl-pds"],[26,27,"pl-pds"],[41,56,"pl-c1"]],[[4,31,"pl-c"],[4,6,"pl-c"]],[[42,46,"pl-c1"]],[],[[9,26,"pl-smi"]],[[9,33,"pl-smi"]],[],[[4,8,"pl-k"],[33,46,"pl-c1"],[52,63,"pl-smi"],[72,78,"pl-k"]],[[15,26,"pl-c1"],[32,43,"pl-smi"],[52,58,"pl-k"]],[[4,10,"pl-k"]],[],[],[[0,4,"pl-k"],[5,37,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,16,"pl-c1"]],[],[],[[0,3,"pl-k"],[4,41,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[[9,44,"pl-en"],[68,71,"pl-k"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"]],[],[],[[0,4,"pl-k"],[5,40,"pl-en"],[78,81,"pl-k"]],[],[[4,23,"pl-c1"]],[[42,46,"pl-c1"]],[[10,30,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,39,"pl-en"],[67,72,"pl-k"],[73,77,"pl-k"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,16,"pl-c1"]],[],[],[[0,3,"pl-k"],[4,37,"pl-en"],[65,68,"pl-k"],[79,83,"pl-k"],[96,99,"pl-k"],[145,161,"pl-c1"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,35,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,16,"pl-c1"]],[],[],[],[[0,51,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,47,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,16,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,45,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,15,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,46,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,15,"pl-c1"]],[],[],[],[[0,33,"pl-c"],[0,2,"pl-c"]],[[0,55,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,47,"pl-en"],[49,53,"pl-k"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,15,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,40,"pl-en"],[66,71,"pl-k"],[72,76,"pl-k"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,16,"pl-c1"]],[],[],[[0,3,"pl-k"],[4,35,"pl-en"],[61,64,"pl-k"],[77,81,"pl-k"],[91,94,"pl-k"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[],[[0,17,"pl-c"],[0,2,"pl-c"]],[[0,17,"pl-c1"]],[[15,46,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[[0,17,"pl-c1"]],[[15,41,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[[0,17,"pl-c1"]],[[15,52,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[],[[0,4,"pl-k"],[5,32,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,16,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,43,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,16,"pl-c1"]],[],[],[[0,3,"pl-k"],[4,56,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,69,"pl-en"]],[],[[4,21,"pl-c1"]],[],[],[[0,110,"pl-c"],[0,2,"pl-c"]],[[0,124,"pl-c"],[0,2,"pl-c"]],[[0,102,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,52,"pl-en"],[54,59,"pl-k"],[60,64,"pl-k"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,16,"pl-c1"]],[],[],[[0,131,"pl-c"],[0,2,"pl-c"]],[[0,4,"pl-k"],[5,64,"pl-en"],[66,71,"pl-k"],[72,76,"pl-k"]],[],[[4,21,"pl-c1"]],[[42,46,"pl-c1"]],[],[[4,47,"pl-c"],[4,6,"pl-c"]],[[4,7,"pl-k"],[9,13,"pl-k"]],[[8,10,"pl-k"],[22,48,"pl-c1"],[52,54,"pl-c1"],[61,80,"pl-c1"],[92,100,"pl-c1"],[116,125,"pl-c1"],[128,143,"pl-c1"]],[[42,44,"pl-c1"]],[],[[12,28,"pl-c1"]],[[12,23,"pl-c1"],[24,71,"pl-s"],[24,25,"pl-pds"],[70,71,"pl-pds"]],[],[],[],[[13,24,"pl-c1"],[25,34,"pl-s"],[25,26,"pl-pds"],[33,34,"pl-pds"]],[],[],[[0,60,"pl-c"],[0,2,"pl-c"]],[[0,116,"pl-c"],[0,2,"pl-c"]],[[0,17,"pl-c1"]],[[15,57,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[[0,4,"pl-k"],[5,43,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,16,"pl-c1"]],[],[],[[0,5,"pl-k"],[6,10,"pl-k"],[12,55,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,13,"pl-s"],[11,12,"pl-pds"],[12,13,"pl-pds"]],[],[],[[7,48,"pl-en"]],[],[[4,20,"pl-c1"]],[[42,46,"pl-c1"]],[[4,10,"pl-k"],[11,12,"pl-c1"]],[],[],[],[],[[0,4,"pl-k"],[5,32,"pl-en"]],[],[[1,24,"pl-c"],[1,3,"pl-c"]],[[4,6,"pl-k"],[18,27,"pl-c1"]],[[29,38,"pl-c1"]],[[8,26,"pl-c1"]],[],[],[[4,6,"pl-k"]],[[5,16,"pl-c1"],[17,40,"pl-s"],[17,18,"pl-pds"],[39,40,"pl-pds"]],[],[[12,25,"pl-c1"],[36,54,"pl-c1"],[57,72,"pl-c1"]],[[20,23,"pl-k"],[24,30,"pl-c1"]],[[11,17,"pl-c1"],[28,46,"pl-c1"],[49,64,"pl-c1"]],[[11,19,"pl-c1"],[30,44,"pl-c1"]],[[11,20,"pl-c1"],[31,48,"pl-c1"],[51,56,"pl-c1"]],[[11,23,"pl-c1"],[34,43,"pl-c1"],[46,61,"pl-c1"]],[[12,33,"pl-c1"]],[[17,37,"pl-c1"],[44,48,"pl-c1"]],[[19,24,"pl-c1"]],[[28,67,"pl-c1"]],[],[],[],[[0,4,"pl-k"],[5,28,"pl-en"]],[],[[4,6,"pl-k"],[13,26,"pl-c1"]],[[8,10,"pl-k"],[17,26,"pl-c1"],[29,33,"pl-c1"],[50,60,"pl-c1"]],[[12,23,"pl-c1"],[24,36,"pl-s"],[24,25,"pl-pds"],[35,36,"pl-pds"]],[[29,38,"pl-c1"]],[[12,16,"pl-k"],[21,33,"pl-c1"],[42,47,"pl-c1"],[59,62,"pl-c1"],[79,84,"pl-k"],[94,100,"pl-k"],[106,108,"pl-c1"]],[[12,14,"pl-k"],[24,27,"pl-c1"]],[[16,30,"pl-c1"],[42,44,"pl-c1"]],[[25,41,"pl-c1"]],[[24,29,"pl-c1"]],[],[],[],[[8,10,"pl-k"],[17,26,"pl-c1"],[29,33,"pl-c1"],[50,57,"pl-c1"]],[[12,23,"pl-c1"],[24,38,"pl-s"],[24,25,"pl-pds"],[37,38,"pl-pds"],[53,62,"pl-c1"]],[],[[17,30,"pl-c1"],[41,59,"pl-c1"],[62,77,"pl-c1"]],[[17,28,"pl-c1"],[34,43,"pl-c1"]],[[24,27,"pl-k"],[28,34,"pl-c1"]],[[15,21,"pl-c1"],[32,50,"pl-c1"],[53,68,"pl-c1"]],[[15,23,"pl-c1"],[34,48,"pl-c1"]],[[15,24,"pl-c1"],[35,52,"pl-c1"],[55,60,"pl-c1"]],[[15,27,"pl-c1"],[38,47,"pl-c1"],[50,65,"pl-c1"]],[],[[12,15,"pl-k"],[32,52,"pl-c1"],[63,81,"pl-c1"]],[[12,16,"pl-k"],[41,50,"pl-c1"]],[[12,14,"pl-k"],[44,48,"pl-smi"],[49,53,"pl-c1"]],[[19,29,"pl-c1"],[43,47,"pl-smi"]],[[14,18,"pl-k"]],[[19,29,"pl-c1"],[30,32,"pl-s"],[30,31,"pl-pds"],[31,32,"pl-pds"]],[],[],[[17,38,"pl-c1"]],[[21,27,"pl-c1"],[35,39,"pl-c1"]],[],[],[],[[4,6,"pl-k"],[13,24,"pl-c1"]],[[8,19,"pl-c1"],[20,29,"pl-s"],[20,21,"pl-pds"],[28,29,"pl-pds"],[30,33,"pl-s"],[30,31,"pl-pds"],[32,33,"pl-pds"],[41,44,"pl-s"],[41,42,"pl-pds"],[43,44,"pl-pds"],[45,48,"pl-s"],[45,46,"pl-pds"],[47,48,"pl-pds"],[56,58,"pl-s"],[56,57,"pl-pds"],[57,58,"pl-pds"],[65,72,"pl-c1"],[75,77,"pl-c1"],[86,93,"pl-c1"],[96,104,"pl-c1"]],[[20,31,"pl-c1"],[45,52,"pl-c1"],[55,57,"pl-c1"]],[[8,10,"pl-k"]],[[12,14,"pl-k"],[21,28,"pl-c1"],[31,33,"pl-c1"],[49,67,"pl-c1"],[70,85,"pl-c1"]],[[24,33,"pl-c1"],[39,46,"pl-c1"]],[[25,38,"pl-c1"],[44,51,"pl-c1"]],[[16,30,"pl-c1"],[44,51,"pl-c1"],[54,56,"pl-c1"]],[[16,36,"pl-c1"],[50,57,"pl-c1"],[60,62,"pl-c1"]],[],[[10,14,"pl-k"]],[[47,51,"pl-c1"],[55,68,"pl-c1"],[71,76,"pl-c1"],[83,96,"pl-c1"],[99,102,"pl-c1"]],[[47,51,"pl-c1"],[57,64,"pl-c1"],[67,80,"pl-c1"],[83,88,"pl-c1"],[97,104,"pl-c1"],[107,120,"pl-c1"],[123,126,"pl-c1"]],[],[[12,14,"pl-k"]],[[16,81,"pl-c"],[16,18,"pl-c"]],[[16,18,"pl-k"],[20,39,"pl-c1"]],[[20,41,"pl-c1"],[55,62,"pl-c1"],[65,67,"pl-c1"],[84,91,"pl-c1"],[94,99,"pl-c1"]],[],[],[[12,30,"pl-c"],[12,14,"pl-c"]],[[22,29,"pl-c1"]],[],[],[],[[4,6,"pl-k"],[13,32,"pl-c1"]],[[8,10,"pl-k"],[17,32,"pl-c1"],[35,39,"pl-c1"],[62,74,"pl-c1"]],[[12,23,"pl-c1"],[24,42,"pl-s"],[24,25,"pl-pds"],[41,42,"pl-pds"]],[[24,35,"pl-c1"],[49,58,"pl-c1"]],[[12,14,"pl-k"]],[],[[21,36,"pl-smi"],[44,53,"pl-c1"]],[[21,37,"pl-smi"],[45,60,"pl-c1"],[63,71,"pl-c1"]],[[21,31,"pl-smi"],[37,42,"pl-c1"]],[[27,38,"pl-c1"],[44,55,"pl-smi"],[64,70,"pl-k"]],[],[[16,18,"pl-k"],[29,34,"pl-c1"],[51,87,"pl-c1"],[93,102,"pl-c1"]],[],[[20,116,"pl-c"],[20,22,"pl-c"]],[[20,47,"pl-c"],[20,22,"pl-c"]],[[29,43,"pl-c1"],[45,56,"pl-c1"],[57,68,"pl-k"],[82,91,"pl-c1"],[102,117,"pl-c1"],[120,128,"pl-c1"]],[],[[16,20,"pl-k"]],[],[],[[25,39,"pl-smi"],[42,50,"pl-c1"],[64,79,"pl-c1"],[82,90,"pl-c1"]],[[25,40,"pl-smi"],[43,51,"pl-c1"],[65,74,"pl-c1"]],[[31,42,"pl-c1"],[48,59,"pl-smi"],[68,74,"pl-k"]],[],[],[],[],[[8,10,"pl-k"],[17,32,"pl-c1"],[35,39,"pl-c1"],[62,73,"pl-c1"]],[[12,23,"pl-c1"],[24,41,"pl-s"],[24,25,"pl-pds"],[40,41,"pl-pds"]],[[12,117,"pl-c"],[12,14,"pl-c"]],[[12,14,"pl-k"],[25,30,"pl-c1"],[47,83,"pl-c1"],[89,98,"pl-c1"]],[],[[16,43,"pl-c"],[16,18,"pl-c"]],[[25,38,"pl-c1"],[40,51,"pl-c1"],[52,63,"pl-k"],[77,86,"pl-c1"],[97,112,"pl-c1"],[115,126,"pl-c1"],[129,134,"pl-c1"]],[],[[12,16,"pl-k"]],[],[[28,33,"pl-k"],[54,69,"pl-c1"],[72,83,"pl-c1"]],[],[[21,36,"pl-smi"],[39,47,"pl-c1"],[61,70,"pl-c1"]],[[16,23,"pl-c1"],[29,42,"pl-smi"],[56,61,"pl-c1"],[99,100,"pl-c1"]],[[27,38,"pl-c1"],[44,55,"pl-smi"],[64,70,"pl-k"]],[],[],[],[]],"colorizedLines":null}},"title":"gbe_fork/dll/steam_friends.cpp at controller-def-init · Detanup01/gbe_fork","appPayload":{},"meta":{"title":"gbe_fork/dll/steam_friends.cpp at controller-def-init · Detanup01/gbe_fork"}}</script>
  <div data-target="react-app.reactRoot"><meta name="github-code-view-meta-stats" id="github-code-view-meta-stats" data-hydrostats="publish"/> <!-- --> <a hidden="" id="code-view-repo-link" href="/Detanup01/gbe_fork" data-discover="true"></a> <div class="d-none"></div><div><div style="--spacing:var(--spacing-none)" class="prc-PageLayout-PageLayoutRoot--KH-d" data-component="SplitPageLayout" data-has-sidebar="true"><div class="prc-PageLayout-SidebarWrapper-kLG4B CopilotSidePanelSidebar-module__SidePanel__L3O0C CopilotSidePanelSidebar-module__HiddenSidePanel__TBRGn" style="--spacing-column:var(--spacing-none)" data-is-hidden="false" data-position="end" data-sticky="true" data-responsive-variant="fullscreen"><div class="prc-PageLayout-VerticalDivider-9QRmK prc-PageLayout-SidebarVerticalDivider-0Rl0V" data-component="PageLayout.VerticalDivider" data-variant="line" data-position="end" style="--spacing:var(--spacing-none)"><div class="prc-PageLayout-DraggableHandle-9s6B4" data-component="PageLayout.DragHandle" role="slider" aria-label="Draggable pane splitter" aria-valuemin="450" aria-valuemax="768" aria-valuenow="544" aria-valuetext="Pane width 544 pixels" tabindex="0"></div></div><div class="prc-PageLayout-Sidebar-iciWg" data-component="SplitPageLayout.Sidebar" data-resizable="true" style="--spacing:var(--spacing-normal);--pane-min-width:450px;--pane-max-width:768px;--pane-width-custom:544px;--pane-width-size:var(--pane-width-custom);--pane-width:544px"><div class="height-full" data-testid="copilot-code-view-side-panel"><div id="copilot-side-panel-content" class="height-full"></div></div></div></div><div class="prc-PageLayout-PageLayoutWrapper-2BhU2" data-width="full"><div class="prc-PageLayout-PageLayoutContent-BneH9"><div id="repos-file-tree-sidebar" class="CodeViewFileTreeLayout-module__sidebar__n_Aau" tabindex="0"><div class="prc-PageLayout-PaneWrapper-pHPop ReposFileTreePane-module__Pane__rBZpI ReposFileTreePane-module__HideTree__AYZnm ReposFileTreePane-module__HidePane__VHAVt" style="--offset-header:0px;--spacing-row:var(--spacing-none);--spacing-column:var(--spacing-none)" data-is-hidden="false" data-position="start" data-sticky="true"><div class="prc-PageLayout-HorizontalDivider-JLVqp prc-PageLayout-PaneHorizontalDivider-9tbnE" data-component="PageLayout.HorizontalDivider" data-variant-regular="none" data-variant-narrow="none" data-position="start" style="--spacing-divider:var(--spacing-none);--spacing:var(--spacing-none)"></div><div class="prc-PageLayout-Pane-AyzHK" data-component="SplitPageLayout.Pane" data-resizable="true" style="--spacing:var(--spacing-none);--pane-min-width:256px;--pane-max-width:calc(100vw - var(--pane-max-width-diff));--pane-width-size:var(--pane-width-large);--pane-width:320px"></div><div class="prc-PageLayout-VerticalDivider-9QRmK prc-PageLayout-PaneVerticalDivider-le57g" data-component="PageLayout.VerticalDivider" data-variant-narrow="none" data-variant-regular="line" data-variant-wide="line" data-position="start" style="--spacing:var(--spacing-none)"><div class="prc-PageLayout-DraggableHandle-9s6B4" data-component="PageLayout.DragHandle" role="slider" aria-label="Draggable pane splitter" aria-valuemin="256" aria-valuemax="600" aria-valuenow="320" aria-valuetext="Pane width 320 pixels" tabindex="0"></div></div></div></div><div data-component="SplitPageLayout.Content" class="prc-PageLayout-ContentWrapper-gR9eG"><div class="prc-PageLayout-Content-xWL-A" data-width="full" style="--spacing:var(--spacing-none)"><div class="SharedPageLayout-module__content__IwGAp" data-selector="repos-split-pane-content" id="repos-split-pane-content" tabindex="0"> <!-- --> <div class="container CodeViewHeader-module__Box__JkPOb"><div class="CodeViewHeader-module__StickyHeader__Qn7UN" id="StickyHeader"><div class="CodeViewHeader-module__Box_1__SbNDV"><div class="CodeViewHeader-module__Box_2__TB46f"><div class="react-code-view-header-wrap--narrow CodeViewHeader-module__Box_3__q1zUL"><div class="CodeViewHeader-module__treeToggleWrapper__RQ__9"><h2 class="use-tree-pane-module__Heading__s4QbZ prc-Heading-Heading-MtWFE" data-component="Heading"><button data-component="Button" type="button" aria-label="Expand file tree" data-testid="expand-file-tree-button-mobile" class="prc-Button-ButtonBase-9n-Xk ExpandFileTreeButton-module__Button_1__Svs95" data-loading="false" data-size="medium" data-variant="invisible"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-arrow-left" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.78 12.53a.75.75 0 0 1-1.06 0L2.47 8.28a.75.75 0 0 1 0-1.06l4.25-4.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L4.81 7h7.44a.75.75 0 0 1 0 1.5H4.81l2.97 2.97a.75.75 0 0 1 0 1.06Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3">Files</span></span></button><button data-component="IconButton" type="button" data-testid="expand-file-tree-button" aria-controls="repos-file-tree" class="prc-Button-ButtonBase-9n-Xk position-relative ExpandFileTreeButton-module__expandButton__hDOcv ExpandFileTreeButton-module__filesButtonBreakpoint__zEvz3 fgColor-muted prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="invisible" aria-labelledby="_R_4lla9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-sidebar-collapse" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.823 7.823a.25.25 0 0 1 0 .354l-2.396 2.396A.25.25 0 0 1 4 10.396V5.604a.25.25 0 0 1 .427-.177Z"></path><path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25H9.5v-13H1.75a.25.25 0 0 0-.25.25ZM11 14.5h3.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H11Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="se" data-component="Tooltip" aria-hidden="true" id="_R_4lla9lik5_">Expand file tree</span><div class="d-none"></div></h2></div><div class="react-code-view-header-mb--narrow mr-2"><button data-component="Button" type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-label="controller-def-init branch" data-testid="anchor-button" data-icv-name="Switch branches/tags" class="prc-Button-ButtonBase-9n-Xk ref-selector-class RefSelectorAnchoredOverlay-module__RefSelectorOverlayBtn__a3WK3" data-loading="false" data-size="medium" data-variant="default" id="ref-picker-repos-header-ref-selector-wide"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3"><div class="RefSelectorAnchoredOverlay-module__RefSelectorOverlayContainer__yaf4p"><div style="max-width:125px" class="ref-selector-button-text-container RefSelectorAnchoredOverlay-module__RefSelectorBtnTextContainer__Di3rk"><span class="RefSelectorAnchoredOverlay-module__RefSelectorText__w_fmP">controller-def-init</span></div></div></span><span data-component="trailingVisual" class="prc-Button-Visual-YNt2F prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><div class="d-none"></div></div><div class="react-code-view-header-mb--narrow CodeViewHeader-module__Box_5__MQ0hL"><div class="Breadcrumb-module__container__Vxvev Breadcrumb-module__lg__Rjz0A"><nav data-testid="breadcrumbs" aria-labelledby="repos-header-breadcrumb-heading" id="repos-header-breadcrumb" class="Breadcrumb-module__nav__rQFDj"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading" id="repos-header-breadcrumb-heading">Breadcrumbs</h2><ol class="Breadcrumb-module__list__ZH6zr"><li class="Breadcrumb-module__listItem__Ib0x_"><a class="Breadcrumb-module__repoLink__O2Nbs prc-Link-Link-9ZwDx" data-component="Link" data-testid="breadcrumbs-repo-link" href="/Detanup01/gbe_fork/tree/controller-def-init" data-discover="true">gbe_fork</a></li><li class="Breadcrumb-module__listItem__Ib0x_"><span class="Breadcrumb-module__separator__eNwsI Breadcrumb-module__lg__Rjz0A" aria-hidden="true">/</span><a class="Breadcrumb-module__directoryLink__kQy_t prc-Link-Link-9ZwDx" data-component="Link" href="/Detanup01/gbe_fork/tree/controller-def-init/dll" data-discover="true">dll</a></li></ol></nav><div data-testid="breadcrumbs-filename" class="Breadcrumb-module__filename__equZR"><span class="Breadcrumb-module__separator__eNwsI Breadcrumb-module__lg__Rjz0A" aria-hidden="true">/</span><h1 class="Breadcrumb-module__filenameHeading__MNMtw Breadcrumb-module__lg__Rjz0A prc-Heading-Heading-MtWFE" data-component="Heading" tabindex="-1" id="file-name-id">steam_friends.cpp</h1></div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-9n-Xk ml-2 prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-labelledby="_R_7lla9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="CopyToClipboardIconButton-module__tooltip__WyiwL prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-label="Copy path" aria-hidden="true" id="_R_7lla9lik5_">Copy path</span></div></div></div><div class="react-code-view-header-element--wide"><div class="CodeViewHeader-module__Box_7___0R6c"><div class="d-flex gap-2"><div><div class="CodeViewHeader-module__FileResultsList__JDzUy"><span class="d-flex FileResultsList-module__FilesSearchBox__ivVkc TextInput-wrapper prc-components-TextInputWrapper-Hpdqi prc-components-TextInputBaseWrapper-wY-n0" data-no-trailing-action="true" data-component="TextInput" data-leading-visual="true" data-trailing-visual="true" aria-busy="false"><span class="TextInput-icon" id="_R_1cpla9lik5_" aria-hidden="true" data-component="TextInput.LeadingVisual"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-search" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path></svg></span><input type="text" aria-label="Go to file" role="combobox" aria-controls="file-results-list" aria-expanded="false" aria-haspopup="dialog" autoCorrect="off" spellCheck="false" placeholder="Go to file" aria-describedby="_R_1cpla9lik5_ _R_1cpla9lik5H1_" data-component="input" class="prc-components-Input-IwWrt" value=""/><span class="TextInput-icon" id="_R_1cpla9lik5H1_" aria-hidden="true" data-component="TextInput.TrailingVisual"></span></span></div><div class="d-none"></div></div><div class="d-none"></div><button data-component="Button" type="button" style="display:none" class="prc-Button-ButtonBase-9n-Xk NavigationMenu-module__Button__LpKgm" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="text" class="prc-Button-Label-FWkx3">Blame</span></span></button><div class="d-none"></div><button data-component="IconButton" type="button" data-testid="more-file-actions-button-nav-menu-wide" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk js-blob-dropdown-click NavigationMenu-module__IconButton__HpX3G prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-labelledby="_R_7p9la9lik5_" id="_R_99la9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-hidden="true" id="_R_7p9la9lik5_">More file actions</span></div></div></div><div class="react-code-view-header-element--narrow"><div class="CodeViewHeader-module__Box_7___0R6c"><div class="d-flex gap-2"><div class="d-none"></div><button data-component="Button" type="button" style="display:none" class="prc-Button-ButtonBase-9n-Xk NavigationMenu-module__Button__LpKgm" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="text" class="prc-Button-Label-FWkx3">Blame</span></span></button><div class="d-none"></div><button data-component="IconButton" type="button" data-testid="more-file-actions-button-nav-menu-narrow" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk js-blob-dropdown-click NavigationMenu-module__IconButton__HpX3G prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-labelledby="_R_7pdla9lik5_" id="_R_9dla9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-hidden="true" id="_R_7pdla9lik5_">More file actions</span></div></div></div></div></div></div></div><div class="CodeView-module__contentWrapper__cG2JH"><div class="react-code-view-bottom-padding"><div class="BlobTopBanners-module__Box__v_nvx"></div></div> <div class="d-none"></div><div class="d-flex flex-column border rounded-2 tmp-mb-3 pl-1"><div class="LatestCommit-module__Box__B25ZT"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading">Latest commit</h2><div style="width:120px" class="Skeleton Skeleton--text" data-testid="loading"> </div><div class="d-flex flex-shrink-0 gap-2"><div data-testid="latest-commit-details" class="d-none d-sm-flex flex-items-center"></div><div class="d-flex gap-2"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading">History</h2><a data-component="LinkButton" href="/Detanup01/gbe_fork/commits/controller-def-init/dll/steam_friends.cpp" class="prc-Button-ButtonBase-9n-Xk d-none d-lg-flex LinkButton-module__linkButton__nFnov flex-items-center fgColor-default" data-loading="false" data-size="small" data-variant="invisible"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3"><span class="fgColor-default">History</span></span></span></a><div class="d-sm-none"></div><div class="d-flex d-lg-none"><a data-component="LinkButton" aria-label="View commit history for this file." href="/Detanup01/gbe_fork/commits/controller-def-init/dll/steam_friends.cpp" class="prc-Button-ButtonBase-9n-Xk LinkButton-module__linkButton__nFnov flex-items-center fgColor-default" data-loading="false" data-size="small" data-variant="invisible" aria-describedby="_R_4mlala9lik5_"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg></span></span></a><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="s" data-component="Tooltip" role="tooltip" aria-hidden="true" id="_R_4mlala9lik5_">History</span></div></div></div></div></div><div class="d-flex flex-row"><div class="container BlobViewContent-module__blobContainer__DtH2d"><div class="react-code-size-details-banner BlobViewContent-module__codeSizeDetails__e5sUw"><div class="react-code-size-details-banner CodeSizeDetails-module__Box__VcD6l"><div class="text-mono CodeSizeDetails-module__Box_1__GVxQL"><div data-testid="blob-size" class="CodeSizeDetails-module__Truncate_1__lE93V prc-Truncate-Truncate-2G1eo" data-inline="true" title="55.5 KB" style="--truncate-max-width:100%"><span>1572 lines (1333 loc) · 55.5 KB</span></div></div></div></div><div class="react-blob-view-header-sticky BlobViewContent-module__stickyHeader__VwxB5" id="repos-sticky-header"><div class="BlobViewHeader-module__Box__yhm9u"><div class="react-blob-sticky-header"><div class="FileNameStickyHeader-module__outerWrapper__ZL4Xc FileNameStickyHeader-module__outerWrapperHidden__Zpynk"><div class="FileNameStickyHeader-module__Box_1__Hazu5"><div class="FileNameStickyHeader-module__Box_2__hoolP"><div class="FileNameStickyHeader-module__Box_3__MVKsk"><button data-component="Button" type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-label="controller-def-init branch" data-testid="anchor-button" data-icv-name="Switch branches/tags" class="prc-Button-ButtonBase-9n-Xk ref-selector-class RefSelectorAnchoredOverlay-module__RefSelectorOverlayBtn__a3WK3" data-loading="false" data-size="medium" data-variant="default" id="ref-picker-repos-header-ref-selector"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3"><div class="RefSelectorAnchoredOverlay-module__RefSelectorOverlayContainer__yaf4p"><div style="max-width:125px" class="ref-selector-button-text-container RefSelectorAnchoredOverlay-module__RefSelectorBtnTextContainer__Di3rk"><span class="RefSelectorAnchoredOverlay-module__RefSelectorText__w_fmP">controller-def-init</span></div></div></span><span data-component="trailingVisual" class="prc-Button-Visual-YNt2F prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><div class="d-none"></div></div><div class="FileNameStickyHeader-module__Box_4__FLhtt"><div class="Breadcrumb-module__container__Vxvev Breadcrumb-module__md__Wb1Gs"><nav data-testid="breadcrumbs" aria-labelledby="sticky-breadcrumb-heading" id="sticky-breadcrumb" class="Breadcrumb-module__nav__rQFDj"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading" id="sticky-breadcrumb-heading">Breadcrumbs</h2><ol class="Breadcrumb-module__list__ZH6zr"><li class="Breadcrumb-module__listItem__Ib0x_"><a class="Breadcrumb-module__repoLink__O2Nbs prc-Link-Link-9ZwDx" data-component="Link" data-testid="breadcrumbs-repo-link" href="/Detanup01/gbe_fork/tree/controller-def-init" data-discover="true">gbe_fork</a></li><li class="Breadcrumb-module__listItem__Ib0x_"><span class="Breadcrumb-module__separator__eNwsI Breadcrumb-module__md__Wb1Gs" aria-hidden="true">/</span><a class="Breadcrumb-module__directoryLink__kQy_t prc-Link-Link-9ZwDx" data-component="Link" href="/Detanup01/gbe_fork/tree/controller-def-init/dll" data-discover="true">dll</a></li></ol></nav><div data-testid="breadcrumbs-filename" class="Breadcrumb-module__filename__equZR"><span class="Breadcrumb-module__separator__eNwsI Breadcrumb-module__md__Wb1Gs" aria-hidden="true">/</span><h1 class="Breadcrumb-module__filenameHeading__MNMtw Breadcrumb-module__md__Wb1Gs prc-Heading-Heading-MtWFE" data-component="Heading" tabindex="-1" id="sticky-file-name-id">steam_friends.cpp</h1></div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-9n-Xk ml-2 prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-labelledby="_R_7lcpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="CopyToClipboardIconButton-module__tooltip__WyiwL prc-TooltipV2-Tooltip-tLeuB" data-direction="s" data-component="Tooltip" aria-label="Copy path" aria-hidden="true" id="_R_7lcpala9lik5_">Copy path</span></div></div></div><button data-component="Button" type="button" class="prc-Button-ButtonBase-9n-Xk FileNameStickyHeader-module__Button__LSEU_ FileNameStickyHeader-module__GoToTopButton__nxAFn" data-loading="false" data-size="small" data-variant="invisible"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-arrow-up" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.47 7.78a.75.75 0 0 1 0-1.06l4.25-4.25a.75.75 0 0 1 1.06 0l4.25 4.25a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018L9 4.81v7.44a.75.75 0 0 1-1.5 0V4.81L4.53 7.78a.75.75 0 0 1-1.06 0Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3">Top</span></span></button></div></div></div><div class="BlobViewHeader-module__Box_1__VEmuQ"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading">File metadata and controls</h2><div class="BlobViewHeader-module__Box_2__icUs2"><ul aria-label="File view" class="prc-SegmentedControl-SegmentedControl-lqIXp BlobTabButtons-module__SegmentedControl__jen2u" data-variant="default" data-size="small" data-component="SegmentedControl"><li class="prc-SegmentedControl-Item-tSCQh" data-selected="" data-component="SegmentedControl.Button"><button aria-pressed="true" class="prc-SegmentedControl-Button-E48xz" type="button" style="--separator-color:transparent"><span class="prc-SegmentedControl-Content-1COlk segmentedControl-content"><div class="prc-SegmentedControl-Text-7S2y2 segmentedControl-text" data-text="Code">Code</div></span></button></li><li class="prc-SegmentedControl-Item-tSCQh" data-component="SegmentedControl.Button"><button aria-pressed="false" class="prc-SegmentedControl-Button-E48xz" type="button" style="--separator-color:var(--borderColor-default)"><span class="prc-SegmentedControl-Content-1COlk segmentedControl-content"><div class="prc-SegmentedControl-Text-7S2y2 segmentedControl-text" data-text="Blame">Blame</div></span></button></li></ul><div class="d-none"></div><div class="react-code-size-details-in-header CodeSizeDetails-module__Box__VcD6l"><div class="text-mono CodeSizeDetails-module__Box_1__GVxQL"><div data-testid="blob-size" class="CodeSizeDetails-module__Truncate_1__lE93V prc-Truncate-Truncate-2G1eo" data-inline="true" title="55.5 KB" style="--truncate-max-width:100%"><span>1572 lines (1333 loc) · 55.5 KB</span></div></div></div></div><div class="BlobViewHeader-module__Box_3__ng6v2"><div class="d-none"></div><div class="react-blob-header-edit-and-raw-actions BlobViewHeader-module__Box_4__J4Y4W"><div class="d-none"></div><div class="prc-ButtonGroup-ButtonGroup-vFUrY" data-component="ButtonGroup"><div class="prc-ButtonGroup-Item-PqvDl"><a data-component="LinkButton" href="https://github.com/Detanup01/gbe_fork/raw/refs/heads/controller-def-init/dll/steam_friends.cpp" data-testid="raw-button" class="prc-Button-ButtonBase-9n-Xk LinkButton-module__linkButton__nFnov BlobViewHeader-module__LinkButton__X9kx2" data-loading="false" data-no-visuals="true" data-size="small" data-variant="default"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="text" class="prc-Button-Label-FWkx3">Raw</span></span></a></div><div class="prc-ButtonGroup-Item-PqvDl"><button data-component="IconButton" type="button" data-testid="copy-raw-button" class="prc-Button-ButtonBase-9n-Xk prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="default" aria-labelledby="_R_qaucpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="n" data-component="Tooltip" aria-hidden="true" id="_R_qaucpala9lik5_">Copy raw file</span></div><div class="prc-ButtonGroup-Item-PqvDl"><button data-component="IconButton" type="button" data-testid="download-raw-button" class="prc-Button-ButtonBase-9n-Xk BlobViewHeader-module__downloadButton__ef459 prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="default" aria-labelledby="_R_eaucpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-download" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2.75 14A1.75 1.75 0 0 1 1 12.25v-2.5a.75.75 0 0 1 1.5 0v2.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25v-2.5a.75.75 0 0 1 1.5 0v2.5A1.75 1.75 0 0 1 13.25 14Z"></path><path d="M7.25 7.689V2a.75.75 0 0 1 1.5 0v5.689l1.97-1.969a.749.749 0 1 1 1.06 1.06l-3.25 3.25a.749.749 0 0 1-1.06 0L4.22 6.78a.749.749 0 1 1 1.06-1.06l1.97 1.969Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="n" data-component="Tooltip" aria-hidden="true" id="_R_eaucpala9lik5_">Download raw file</span></div></div></div><div class="d-none"></div><button data-component="IconButton" type="button" aria-pressed="false" aria-expanded="false" aria-controls="symbols-pane" data-testid="symbols-button" class="prc-Button-ButtonBase-9n-Xk BlobViewHeader-module__IconButton_2__RyjZg prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-labelledby="_R_jecpala9lik5_" id="symbols-button"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-code-square" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-hidden="true" id="_R_jecpala9lik5_">Open symbols panel</span><div class="react-blob-header-edit-and-raw-actions-combined"><button data-component="IconButton" type="button" title="More file actions" data-testid="more-file-actions-button" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk js-blob-dropdown-click BlobViewHeader-module__IconButton__XrMQY prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-labelledby="_R_fkecpala9lik5_" id="_R_kecpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-hidden="true" id="_R_fkecpala9lik5_">Edit and raw actions</span></div></div></div></div><div></div></div><div class="BlobViewContent-module__blobContentWrapper__JS0W6"><section aria-labelledby="file-name-id-wide file-name-id-mobile" class="BlobContent-module__blobContentSection__VOgZq" style="margin-top:46px"><!--$--><div class="CodeBlob-module__codeBlobWrapper__RS6In" style="padding-top:8px;padding-bottom:8px"><div id="highlighted-line-menu-positioner" class="position-relative"><div id="copilot-button-positioner" class="position-relative"><div class="CodeBlob-module__codeBlobInner__tfjuQ"><div class="react-code-file-contents CodeLinesSSR-module__codeFileContents__ARmAN" role="presentation" aria-hidden="true" data-tab-size="4" data-paste-markdown-skip="true" style="tab-size:4;max-width:unset" data-hpc="true" containertiming="hpc"><div class="react-line-numbers" style="pointer-events:auto"><div data-line-number="1" class="react-line-number react-code-text" style="padding-right:16px">1</div><div data-line-number="2" class="react-line-number react-code-text" style="padding-right:16px">2</div><div data-line-number="3" class="react-line-number react-code-text" style="padding-right:16px">3</div><div data-line-number="4" class="react-line-number react-code-text" style="padding-right:16px">4</div><div data-line-number="5" class="react-line-number react-code-text" style="padding-right:16px">5</div><div data-line-number="6" class="react-line-number react-code-text" style="padding-right:16px">6</div><div data-line-number="7" class="react-line-number react-code-text" style="padding-right:16px">7</div><div data-line-number="8" class="react-line-number react-code-text" style="padding-right:16px">8</div><div data-line-number="9" class="react-line-number react-code-text" style="padding-right:16px">9</div><div data-line-number="10" class="react-line-number react-code-text" style="padding-right:16px">10</div><div data-line-number="11" class="react-line-number react-code-text" style="padding-right:16px">11</div><div data-line-number="12" class="react-line-number react-code-text" style="padding-right:16px">12</div><div data-line-number="13" class="react-line-number react-code-text" style="padding-right:16px">13</div><div data-line-number="14" class="react-line-number react-code-text" style="padding-right:16px">14</div><div data-line-number="15" class="react-line-number react-code-text" style="padding-right:16px">15</div><div data-line-number="16" class="react-line-number react-code-text" style="padding-right:16px">16</div><div data-line-number="17" class="react-line-number react-code-text" style="padding-right:16px">17</div><div data-line-number="18" class="react-line-number react-code-text" style="padding-right:16px">18</div><div data-line-number="19" class="react-line-number react-code-text" style="padding-right:16px">19</div><div data-line-number="20" class="react-line-number react-code-text" style="padding-right:16px">20</div><div data-line-number="21" class="react-line-number react-code-text" style="padding-right:16px">21</div><div data-line-number="22" class="react-line-number react-code-text" style="padding-right:16px">22</div><div data-line-number="23" class="react-line-number react-code-text" style="padding-right:16px">23</div><div data-line-number="24" class="react-line-number react-code-text" style="padding-right:16px">24</div><div data-line-number="25" class="react-line-number react-code-text" style="padding-right:16px">25</div><div data-line-number="26" class="react-line-number react-code-text" style="padding-right:16px">26</div><div data-line-number="27" class="react-line-number react-code-text" style="padding-right:16px">27</div><div data-line-number="28" class="react-line-number react-code-text" style="padding-right:16px">28</div><div data-line-number="29" class="react-line-number react-code-text" style="padding-right:16px">29</div><div data-line-number="30" class="react-line-number react-code-text" style="padding-right:16px">30</div><div data-line-number="31" class="react-line-number react-code-text" style="padding-right:16px">31</div><div data-line-number="32" class="react-line-number react-code-text" style="padding-right:16px">32</div><div data-line-number="33" class="react-line-number react-code-text" style="padding-right:16px">33<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="34" class="child-of-line-32  react-line-number react-code-text" style="padding-right:16px">34</div><div data-line-number="35" class="child-of-line-32  react-line-number react-code-text" style="padding-right:16px">35</div><div data-line-number="36" class="child-of-line-32  react-line-number react-code-text" style="padding-right:16px">36</div><div data-line-number="37" class="child-of-line-32  react-line-number react-code-text" style="padding-right:16px">37</div><div data-line-number="38" class="child-of-line-32  react-line-number react-code-text" style="padding-right:16px">38</div><div data-line-number="39" class="react-line-number react-code-text" style="padding-right:16px">39</div><div data-line-number="40" class="react-line-number react-code-text" style="padding-right:16px">40</div><div data-line-number="41" class="react-line-number react-code-text" style="padding-right:16px">41<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="42" class="child-of-line-40  react-line-number react-code-text" style="padding-right:16px">42</div><div data-line-number="43" class="child-of-line-40  react-line-number react-code-text" style="padding-right:16px">43</div><div data-line-number="44" class="child-of-line-40  react-line-number react-code-text" style="padding-right:16px">44</div><div data-line-number="45" class="child-of-line-40  react-line-number react-code-text" style="padding-right:16px">45</div><div data-line-number="46" class="child-of-line-40  react-line-number react-code-text" style="padding-right:16px">46</div><div data-line-number="47" class="react-line-number react-code-text" style="padding-right:16px">47</div><div data-line-number="48" class="react-line-number react-code-text" style="padding-right:16px">48</div><div data-line-number="49" class="react-line-number react-code-text" style="padding-right:16px">49<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="50" class="child-of-line-48  react-line-number react-code-text" style="padding-right:16px">50</div><div data-line-number="51" class="child-of-line-48  react-line-number react-code-text" style="padding-right:16px">51</div><div data-line-number="52" class="child-of-line-48  react-line-number react-code-text" style="padding-right:16px">52</div><div data-line-number="53" class="child-of-line-48  react-line-number react-code-text" style="padding-right:16px">53</div><div data-line-number="54" class="react-line-number react-code-text" style="padding-right:16px">54</div><div data-line-number="55" class="react-line-number react-code-text" style="padding-right:16px">55</div><div data-line-number="56" class="react-line-number react-code-text" style="padding-right:16px">56<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="57" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">57</div><div data-line-number="58" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">58</div><div data-line-number="59" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">59</div><div data-line-number="60" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">60</div><div data-line-number="61" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">61</div><div data-line-number="62" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">62</div><div data-line-number="63" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">63</div><div data-line-number="64" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">64</div><div data-line-number="65" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">65</div><div data-line-number="66" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">66</div><div data-line-number="67" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">67</div><div data-line-number="68" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">68</div><div data-line-number="69" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">69</div><div data-line-number="70" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">70</div><div data-line-number="71" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">71</div><div data-line-number="72" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">72</div><div data-line-number="73" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">73</div><div data-line-number="74" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">74</div><div data-line-number="75" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">75</div><div data-line-number="76" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">76</div><div data-line-number="77" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">77</div><div data-line-number="78" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">78</div><div data-line-number="79" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">79</div><div data-line-number="80" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">80</div><div data-line-number="81" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">81</div><div data-line-number="82" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">82</div><div data-line-number="83" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">83</div><div data-line-number="84" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">84</div><div data-line-number="85" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">85</div><div data-line-number="86" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">86</div><div data-line-number="87" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">87</div><div data-line-number="88" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">88</div><div data-line-number="89" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">89</div><div data-line-number="90" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">90</div><div data-line-number="91" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">91</div><div data-line-number="92" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">92</div><div data-line-number="93" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">93</div><div data-line-number="94" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">94</div><div data-line-number="95" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">95</div><div data-line-number="96" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">96</div><div data-line-number="97" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">97</div><div data-line-number="98" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">98</div><div data-line-number="99" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">99</div><div data-line-number="100" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">100</div><div data-line-number="101" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">101</div><div data-line-number="102" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">102</div><div data-line-number="103" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">103</div><div data-line-number="104" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">104</div><div data-line-number="105" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">105</div><div data-line-number="106" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">106</div><div data-line-number="107" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">107</div><div data-line-number="108" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">108</div><div data-line-number="109" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">109</div><div data-line-number="110" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">110</div><div data-line-number="111" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">111</div><div data-line-number="112" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">112</div><div data-line-number="113" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">113</div><div data-line-number="114" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">114</div><div data-line-number="115" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">115</div><div data-line-number="116" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">116</div><div data-line-number="117" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">117</div><div data-line-number="118" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">118</div><div data-line-number="119" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">119</div><div data-line-number="120" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">120</div><div data-line-number="121" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">121</div><div data-line-number="122" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">122</div><div data-line-number="123" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">123</div><div data-line-number="124" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">124</div><div data-line-number="125" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">125</div><div data-line-number="126" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">126</div><div data-line-number="127" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">127</div><div data-line-number="128" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">128</div><div data-line-number="129" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">129</div><div data-line-number="130" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">130</div><div data-line-number="131" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">131</div><div data-line-number="132" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">132</div><div data-line-number="133" class="child-of-line-55  react-line-number react-code-text" style="padding-right:16px">133</div><div data-line-number="134" class="react-line-number react-code-text" style="padding-right:16px">134</div><div data-line-number="135" class="react-line-number react-code-text" style="padding-right:16px">135</div><div data-line-number="136" class="react-line-number react-code-text" style="padding-right:16px">136<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="137" class="child-of-line-135  react-line-number react-code-text" style="padding-right:16px">137</div><div data-line-number="138" class="child-of-line-135  react-line-number react-code-text" style="padding-right:16px">138</div><div data-line-number="139" class="child-of-line-135  react-line-number react-code-text" style="padding-right:16px">139</div><div data-line-number="140" class="child-of-line-135  react-line-number react-code-text" style="padding-right:16px">140</div><div data-line-number="141" class="child-of-line-135  react-line-number react-code-text" style="padding-right:16px">141</div><div data-line-number="142" class="react-line-number react-code-text" style="padding-right:16px">142</div><div data-line-number="143" class="react-line-number react-code-text" style="padding-right:16px">143</div><div data-line-number="144" class="react-line-number react-code-text" style="padding-right:16px">144<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="145" class="child-of-line-143  react-line-number react-code-text" style="padding-right:16px">145</div><div data-line-number="146" class="child-of-line-143  react-line-number react-code-text" style="padding-right:16px">146</div><div data-line-number="147" class="child-of-line-143  react-line-number react-code-text" style="padding-right:16px">147</div><div data-line-number="148" class="child-of-line-143  react-line-number react-code-text" style="padding-right:16px">148</div><div data-line-number="149" class="child-of-line-143  react-line-number react-code-text" style="padding-right:16px">149</div><div data-line-number="150" class="react-line-number react-code-text" style="padding-right:16px">150</div><div data-line-number="151" class="react-line-number react-code-text" style="padding-right:16px">151</div><div data-line-number="152" class="react-line-number react-code-text" style="padding-right:16px">152</div><div data-line-number="153" class="react-line-number react-code-text" style="padding-right:16px">153</div><div data-line-number="154" class="react-line-number react-code-text" style="padding-right:16px">154</div><div data-line-number="155" class="react-line-number react-code-text" style="padding-right:16px">155</div><div data-line-number="156" class="react-line-number react-code-text" style="padding-right:16px">156</div><div data-line-number="157" class="react-line-number react-code-text" style="padding-right:16px">157<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="158" class="child-of-line-156  react-line-number react-code-text" style="padding-right:16px">158</div><div data-line-number="159" class="child-of-line-156  react-line-number react-code-text" style="padding-right:16px">159</div><div data-line-number="160" class="child-of-line-156  react-line-number react-code-text" style="padding-right:16px">160</div><div data-line-number="161" class="child-of-line-156  react-line-number react-code-text" style="padding-right:16px">161</div><div data-line-number="162" class="react-line-number react-code-text" style="padding-right:16px">162</div><div data-line-number="163" class="react-line-number react-code-text" style="padding-right:16px">163</div><div data-line-number="164" class="react-line-number react-code-text" style="padding-right:16px">164</div><div data-line-number="165" class="react-line-number react-code-text" style="padding-right:16px">165<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="166" class="child-of-line-164  react-line-number react-code-text" style="padding-right:16px">166</div><div data-line-number="167" class="child-of-line-164  react-line-number react-code-text" style="padding-right:16px">167</div><div data-line-number="168" class="child-of-line-164  react-line-number react-code-text" style="padding-right:16px">168</div><div data-line-number="169" class="child-of-line-164  react-line-number react-code-text" style="padding-right:16px">169</div><div data-line-number="170" class="child-of-line-164  react-line-number react-code-text" style="padding-right:16px">170</div><div data-line-number="171" class="child-of-line-164  react-line-number react-code-text" style="padding-right:16px">171</div><div data-line-number="172" class="child-of-line-164  react-line-number react-code-text" style="padding-right:16px">172</div><div data-line-number="173" class="child-of-line-164  react-line-number react-code-text" style="padding-right:16px">173</div><div data-line-number="174" class="child-of-line-164  react-line-number react-code-text" style="padding-right:16px">174</div><div data-line-number="175" class="child-of-line-164  react-line-number react-code-text" style="padding-right:16px">175</div><div data-line-number="176" class="child-of-line-164  react-line-number react-code-text" style="padding-right:16px">176</div><div data-line-number="177" class="child-of-line-164  react-line-number react-code-text" style="padding-right:16px">177</div><div data-line-number="178" class="child-of-line-164  react-line-number react-code-text" style="padding-right:16px">178</div><div data-line-number="179" class="child-of-line-164  react-line-number react-code-text" style="padding-right:16px">179</div><div data-line-number="180" class="react-line-number react-code-text" style="padding-right:16px">180</div><div data-line-number="181" class="react-line-number react-code-text" style="padding-right:16px">181</div><div data-line-number="182" class="react-line-number react-code-text" style="padding-right:16px">182</div><div data-line-number="183" class="react-line-number react-code-text" style="padding-right:16px">183</div><div data-line-number="184" class="react-line-number react-code-text" style="padding-right:16px">184</div><div data-line-number="185" class="react-line-number react-code-text" style="padding-right:16px">185</div><div data-line-number="186" class="react-line-number react-code-text" style="padding-right:16px">186</div><div data-line-number="187" class="react-line-number react-code-text" style="padding-right:16px">187</div><div data-line-number="188" class="react-line-number react-code-text" style="padding-right:16px">188</div><div data-line-number="189" class="react-line-number react-code-text" style="padding-right:16px">189</div><div data-line-number="190" class="react-line-number react-code-text" style="padding-right:16px">190</div><div data-line-number="191" class="react-line-number react-code-text" style="padding-right:16px">191</div><div data-line-number="192" class="react-line-number react-code-text" style="padding-right:16px">192</div><div data-line-number="193" class="react-line-number react-code-text" style="padding-right:16px">193</div><div data-line-number="194" class="react-line-number react-code-text" style="padding-right:16px">194</div><div data-line-number="195" class="react-line-number react-code-text" style="padding-right:16px">195</div><div data-line-number="196" class="react-line-number react-code-text" style="padding-right:16px">196</div><div data-line-number="197" class="react-line-number react-code-text" style="padding-right:16px">197</div><div data-line-number="198" class="react-line-number react-code-text" style="padding-right:16px">198</div><div data-line-number="199" class="react-line-number react-code-text" style="padding-right:16px">199</div><div data-line-number="200" class="react-line-number react-code-text" style="padding-right:16px">200</div><div data-line-number="201" class="react-line-number react-code-text" style="padding-right:16px">201</div><div data-line-number="202" class="react-line-number react-code-text" style="padding-right:16px">202</div><div data-line-number="203" class="react-line-number react-code-text" style="padding-right:16px">203</div><div data-line-number="204" class="react-line-number react-code-text" style="padding-right:16px">204</div><div data-line-number="205" class="react-line-number react-code-text" style="padding-right:16px">205</div><div data-line-number="206" class="react-line-number react-code-text" style="padding-right:16px">206</div><div data-line-number="207" class="react-line-number react-code-text" style="padding-right:16px">207</div><div data-line-number="208" class="react-line-number react-code-text" style="padding-right:16px">208</div><div data-line-number="209" class="react-line-number react-code-text" style="padding-right:16px">209</div><div data-line-number="210" class="react-line-number react-code-text" style="padding-right:16px">210</div><div data-line-number="211" class="react-line-number react-code-text" style="padding-right:16px">211</div><div data-line-number="212" class="react-line-number react-code-text" style="padding-right:16px">212</div><div data-line-number="213" class="react-line-number react-code-text" style="padding-right:16px">213<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="214" class="child-of-line-212  react-line-number react-code-text" style="padding-right:16px">214</div><div data-line-number="215" class="child-of-line-212  react-line-number react-code-text" style="padding-right:16px">215</div><div data-line-number="216" class="child-of-line-212  react-line-number react-code-text" style="padding-right:16px">216</div><div data-line-number="217" class="child-of-line-212  react-line-number react-code-text" style="padding-right:16px">217</div><div data-line-number="218" class="child-of-line-212  react-line-number react-code-text" style="padding-right:16px">218</div><div data-line-number="219" class="child-of-line-212  react-line-number react-code-text" style="padding-right:16px">219</div><div data-line-number="220" class="child-of-line-212  react-line-number react-code-text" style="padding-right:16px">220</div><div data-line-number="221" class="child-of-line-212  react-line-number react-code-text" style="padding-right:16px">221</div><div data-line-number="222" class="child-of-line-212  react-line-number react-code-text" style="padding-right:16px">222</div><div data-line-number="223" class="child-of-line-212  react-line-number react-code-text" style="padding-right:16px">223</div><div data-line-number="224" class="child-of-line-212  react-line-number react-code-text" style="padding-right:16px">224</div><div data-line-number="225" class="child-of-line-212  react-line-number react-code-text" style="padding-right:16px">225</div><div data-line-number="226" class="child-of-line-212  react-line-number react-code-text" style="padding-right:16px">226</div><div data-line-number="227" class="child-of-line-212  react-line-number react-code-text" style="padding-right:16px">227</div><div data-line-number="228" class="child-of-line-212  react-line-number react-code-text" style="padding-right:16px">228</div><div data-line-number="229" class="react-line-number react-code-text" style="padding-right:16px">229</div><div data-line-number="230" class="react-line-number react-code-text" style="padding-right:16px">230</div><div data-line-number="231" class="react-line-number react-code-text" style="padding-right:16px">231<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="232" class="child-of-line-230  react-line-number react-code-text" style="padding-right:16px">232</div><div data-line-number="233" class="child-of-line-230  react-line-number react-code-text" style="padding-right:16px">233</div><div data-line-number="234" class="child-of-line-230  react-line-number react-code-text" style="padding-right:16px">234</div><div data-line-number="235" class="child-of-line-230  react-line-number react-code-text" style="padding-right:16px">235</div><div data-line-number="236" class="react-line-number react-code-text" style="padding-right:16px">236</div><div data-line-number="237" class="react-line-number react-code-text" style="padding-right:16px">237</div><div data-line-number="238" class="react-line-number react-code-text" style="padding-right:16px">238</div><div data-line-number="239" class="react-line-number react-code-text" style="padding-right:16px">239<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="240" class="child-of-line-238  react-line-number react-code-text" style="padding-right:16px">240</div><div data-line-number="241" class="child-of-line-238  react-line-number react-code-text" style="padding-right:16px">241</div><div data-line-number="242" class="child-of-line-238  react-line-number react-code-text" style="padding-right:16px">242</div><div data-line-number="243" class="child-of-line-238  react-line-number react-code-text" style="padding-right:16px">243</div><div data-line-number="244" class="react-line-number react-code-text" style="padding-right:16px">244</div><div data-line-number="245" class="react-line-number react-code-text" style="padding-right:16px">245</div><div data-line-number="246" class="react-line-number react-code-text" style="padding-right:16px">246</div><div data-line-number="247" class="react-line-number react-code-text" style="padding-right:16px">247</div><div data-line-number="248" class="react-line-number react-code-text" style="padding-right:16px">248</div><div data-line-number="249" class="react-line-number react-code-text" style="padding-right:16px">249</div><div data-line-number="250" class="react-line-number react-code-text" style="padding-right:16px">250</div><div data-line-number="251" class="react-line-number react-code-text" style="padding-right:16px">251<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="252" class="child-of-line-250  react-line-number react-code-text" style="padding-right:16px">252</div><div data-line-number="253" class="child-of-line-250  react-line-number react-code-text" style="padding-right:16px">253</div><div data-line-number="254" class="child-of-line-250  react-line-number react-code-text" style="padding-right:16px">254</div><div data-line-number="255" class="child-of-line-250  react-line-number react-code-text" style="padding-right:16px">255</div><div data-line-number="256" class="child-of-line-250  react-line-number react-code-text" style="padding-right:16px">256</div><div data-line-number="257" class="child-of-line-250  react-line-number react-code-text" style="padding-right:16px">257</div><div data-line-number="258" class="react-line-number react-code-text" style="padding-right:16px">258</div><div data-line-number="259" class="react-line-number react-code-text" style="padding-right:16px">259</div><div data-line-number="260" class="react-line-number react-code-text" style="padding-right:16px">260<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="261" class="child-of-line-259  react-line-number react-code-text" style="padding-right:16px">261</div><div data-line-number="262" class="child-of-line-259  react-line-number react-code-text" style="padding-right:16px">262</div><div data-line-number="263" class="child-of-line-259  react-line-number react-code-text" style="padding-right:16px">263</div><div data-line-number="264" class="child-of-line-259  react-line-number react-code-text" style="padding-right:16px">264</div><div data-line-number="265" class="child-of-line-259  react-line-number react-code-text" style="padding-right:16px">265</div><div data-line-number="266" class="child-of-line-259  react-line-number react-code-text" style="padding-right:16px">266</div><div data-line-number="267" class="react-line-number react-code-text" style="padding-right:16px">267</div><div data-line-number="268" class="react-line-number react-code-text" style="padding-right:16px">268</div><div data-line-number="269" class="react-line-number react-code-text" style="padding-right:16px">269<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="270" class="child-of-line-268  react-line-number react-code-text" style="padding-right:16px">270</div><div data-line-number="271" class="child-of-line-268  react-line-number react-code-text" style="padding-right:16px">271</div><div data-line-number="272" class="child-of-line-268  react-line-number react-code-text" style="padding-right:16px">272</div><div data-line-number="273" class="react-line-number react-code-text" style="padding-right:16px">273</div><div data-line-number="274" class="react-line-number react-code-text" style="padding-right:16px">274</div><div data-line-number="275" class="react-line-number react-code-text" style="padding-right:16px">275</div><div data-line-number="276" class="react-line-number react-code-text" style="padding-right:16px">276</div><div data-line-number="277" class="react-line-number react-code-text" style="padding-right:16px">277</div><div data-line-number="278" class="react-line-number react-code-text" style="padding-right:16px">278</div><div data-line-number="279" class="react-line-number react-code-text" style="padding-right:16px">279<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="280" class="child-of-line-278  react-line-number react-code-text" style="padding-right:16px">280</div><div data-line-number="281" class="child-of-line-278  react-line-number react-code-text" style="padding-right:16px">281</div><div data-line-number="282" class="child-of-line-278  react-line-number react-code-text" style="padding-right:16px">282</div><div data-line-number="283" class="child-of-line-278  react-line-number react-code-text" style="padding-right:16px">283</div><div data-line-number="284" class="child-of-line-278  react-line-number react-code-text" style="padding-right:16px">284</div><div data-line-number="285" class="child-of-line-278  react-line-number react-code-text" style="padding-right:16px">285</div><div data-line-number="286" class="child-of-line-278  react-line-number react-code-text" style="padding-right:16px">286</div><div data-line-number="287" class="react-line-number react-code-text" style="padding-right:16px">287</div><div data-line-number="288" class="react-line-number react-code-text" style="padding-right:16px">288</div><div data-line-number="289" class="react-line-number react-code-text" style="padding-right:16px">289<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="290" class="child-of-line-288  react-line-number react-code-text" style="padding-right:16px">290</div><div data-line-number="291" class="child-of-line-288  react-line-number react-code-text" style="padding-right:16px">291</div><div data-line-number="292" class="child-of-line-288  react-line-number react-code-text" style="padding-right:16px">292</div><div data-line-number="293" class="child-of-line-288  react-line-number react-code-text" style="padding-right:16px">293</div><div data-line-number="294" class="react-line-number react-code-text" style="padding-right:16px">294</div><div data-line-number="295" class="react-line-number react-code-text" style="padding-right:16px">295</div><div data-line-number="296" class="react-line-number react-code-text" style="padding-right:16px">296</div><div data-line-number="297" class="react-line-number react-code-text" style="padding-right:16px">297</div><div data-line-number="298" class="react-line-number react-code-text" style="padding-right:16px">298</div><div data-line-number="299" class="react-line-number react-code-text" style="padding-right:16px">299</div><div data-line-number="300" class="react-line-number react-code-text" style="padding-right:16px">300<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="301" class="child-of-line-299  react-line-number react-code-text" style="padding-right:16px">301</div><div data-line-number="302" class="child-of-line-299  react-line-number react-code-text" style="padding-right:16px">302</div><div data-line-number="303" class="child-of-line-299  react-line-number react-code-text" style="padding-right:16px">303</div><div data-line-number="304" class="child-of-line-299  react-line-number react-code-text" style="padding-right:16px">304</div><div data-line-number="305" class="child-of-line-299  react-line-number react-code-text" style="padding-right:16px">305</div><div data-line-number="306" class="child-of-line-299  react-line-number react-code-text" style="padding-right:16px">306</div><div data-line-number="307" class="child-of-line-299  react-line-number react-code-text" style="padding-right:16px">307</div><div data-line-number="308" class="child-of-line-299  react-line-number react-code-text" style="padding-right:16px">308</div><div data-line-number="309" class="child-of-line-299  react-line-number react-code-text" style="padding-right:16px">309</div><div data-line-number="310" class="child-of-line-299  react-line-number react-code-text" style="padding-right:16px">310</div><div data-line-number="311" class="child-of-line-299  react-line-number react-code-text" style="padding-right:16px">311</div><div data-line-number="312" class="react-line-number react-code-text" style="padding-right:16px">312</div><div data-line-number="313" class="react-line-number react-code-text" style="padding-right:16px">313</div><div data-line-number="314" class="react-line-number react-code-text" style="padding-right:16px">314<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="315" class="child-of-line-313  react-line-number react-code-text" style="padding-right:16px">315</div><div data-line-number="316" class="child-of-line-313  react-line-number react-code-text" style="padding-right:16px">316</div><div data-line-number="317" class="child-of-line-313  react-line-number react-code-text" style="padding-right:16px">317</div><div data-line-number="318" class="child-of-line-313  react-line-number react-code-text" style="padding-right:16px">318</div><div data-line-number="319" class="react-line-number react-code-text" style="padding-right:16px">319</div><div data-line-number="320" class="react-line-number react-code-text" style="padding-right:16px">320</div><div data-line-number="321" class="react-line-number react-code-text" style="padding-right:16px">321<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="322" class="child-of-line-320  react-line-number react-code-text" style="padding-right:16px">322</div><div data-line-number="323" class="child-of-line-320  react-line-number react-code-text" style="padding-right:16px">323</div><div data-line-number="324" class="child-of-line-320  react-line-number react-code-text" style="padding-right:16px">324</div><div data-line-number="325" class="child-of-line-320  react-line-number react-code-text" style="padding-right:16px">325</div><div data-line-number="326" class="react-line-number react-code-text" style="padding-right:16px">326</div><div data-line-number="327" class="react-line-number react-code-text" style="padding-right:16px">327</div><div data-line-number="328" class="react-line-number react-code-text" style="padding-right:16px">328</div><div data-line-number="329" class="react-line-number react-code-text" style="padding-right:16px">329<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="330" class="child-of-line-328  react-line-number react-code-text" style="padding-right:16px">330</div><div data-line-number="331" class="child-of-line-328  react-line-number react-code-text" style="padding-right:16px">331</div><div data-line-number="332" class="child-of-line-328  react-line-number react-code-text" style="padding-right:16px">332</div><div data-line-number="333" class="child-of-line-328  react-line-number react-code-text" style="padding-right:16px">333</div><div data-line-number="334" class="react-line-number react-code-text" style="padding-right:16px">334</div><div data-line-number="335" class="react-line-number react-code-text" style="padding-right:16px">335</div><div data-line-number="336" class="react-line-number react-code-text" style="padding-right:16px">336</div><div data-line-number="337" class="react-line-number react-code-text" style="padding-right:16px">337</div><div data-line-number="338" class="react-line-number react-code-text" style="padding-right:16px">338<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="339" class="child-of-line-337  react-line-number react-code-text" style="padding-right:16px">339</div><div data-line-number="340" class="child-of-line-337  react-line-number react-code-text" style="padding-right:16px">340</div><div data-line-number="341" class="child-of-line-337  react-line-number react-code-text" style="padding-right:16px">341</div><div data-line-number="342" class="child-of-line-337  react-line-number react-code-text" style="padding-right:16px">342</div><div data-line-number="343" class="child-of-line-337  react-line-number react-code-text" style="padding-right:16px">343</div><div data-line-number="344" class="child-of-line-337  react-line-number react-code-text" style="padding-right:16px">344</div><div data-line-number="345" class="child-of-line-337  react-line-number react-code-text" style="padding-right:16px">345</div><div data-line-number="346" class="react-line-number react-code-text" style="padding-right:16px">346</div><div data-line-number="347" class="react-line-number react-code-text" style="padding-right:16px">347</div><div data-line-number="348" class="react-line-number react-code-text" style="padding-right:16px">348</div><div data-line-number="349" class="react-line-number react-code-text" style="padding-right:16px">349</div><div data-line-number="350" class="react-line-number react-code-text" style="padding-right:16px">350</div><div data-line-number="351" class="react-line-number react-code-text" style="padding-right:16px">351<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="352" class="child-of-line-350  react-line-number react-code-text" style="padding-right:16px">352</div><div data-line-number="353" class="child-of-line-350  react-line-number react-code-text" style="padding-right:16px">353</div><div data-line-number="354" class="child-of-line-350  react-line-number react-code-text" style="padding-right:16px">354</div><div data-line-number="355" class="child-of-line-350  react-line-number react-code-text" style="padding-right:16px">355</div><div data-line-number="356" class="child-of-line-350  react-line-number react-code-text" style="padding-right:16px">356</div><div data-line-number="357" class="child-of-line-350  react-line-number react-code-text" style="padding-right:16px">357</div><div data-line-number="358" class="child-of-line-350  react-line-number react-code-text" style="padding-right:16px">358</div><div data-line-number="359" class="child-of-line-350  react-line-number react-code-text" style="padding-right:16px">359</div><div data-line-number="360" class="child-of-line-350  react-line-number react-code-text" style="padding-right:16px">360</div><div data-line-number="361" class="child-of-line-350  react-line-number react-code-text" style="padding-right:16px">361</div><div data-line-number="362" class="react-line-number react-code-text" style="padding-right:16px">362</div><div data-line-number="363" class="react-line-number react-code-text" style="padding-right:16px">363</div><div data-line-number="364" class="react-line-number react-code-text" style="padding-right:16px">364<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="365" class="child-of-line-363  react-line-number react-code-text" style="padding-right:16px">365</div><div data-line-number="366" class="child-of-line-363  react-line-number react-code-text" style="padding-right:16px">366</div><div data-line-number="367" class="child-of-line-363  react-line-number react-code-text" style="padding-right:16px">367</div><div data-line-number="368" class="child-of-line-363  react-line-number react-code-text" style="padding-right:16px">368</div><div data-line-number="369" class="react-line-number react-code-text" style="padding-right:16px">369</div><div data-line-number="370" class="react-line-number react-code-text" style="padding-right:16px">370</div><div data-line-number="371" class="react-line-number react-code-text" style="padding-right:16px">371</div><div data-line-number="372" class="react-line-number react-code-text" style="padding-right:16px">372</div><div data-line-number="373" class="react-line-number react-code-text" style="padding-right:16px">373</div><div data-line-number="374" class="react-line-number react-code-text" style="padding-right:16px">374</div><div data-line-number="375" class="react-line-number react-code-text" style="padding-right:16px">375</div><div data-line-number="376" class="react-line-number react-code-text" style="padding-right:16px">376</div><div data-line-number="377" class="react-line-number react-code-text" style="padding-right:16px">377</div><div data-line-number="378" class="react-line-number react-code-text" style="padding-right:16px">378</div><div data-line-number="379" class="react-line-number react-code-text" style="padding-right:16px">379</div><div data-line-number="380" class="react-line-number react-code-text" style="padding-right:16px">380</div><div data-line-number="381" class="react-line-number react-code-text" style="padding-right:16px">381</div><div data-line-number="382" class="react-line-number react-code-text" style="padding-right:16px">382</div><div data-line-number="383" class="react-line-number react-code-text" style="padding-right:16px">383</div><div data-line-number="384" class="react-line-number react-code-text" style="padding-right:16px">384</div><div data-line-number="385" class="react-line-number react-code-text" style="padding-right:16px">385</div><div data-line-number="386" class="react-line-number react-code-text" style="padding-right:16px">386</div><div data-line-number="387" class="react-line-number react-code-text" style="padding-right:16px">387</div><div data-line-number="388" class="react-line-number react-code-text" style="padding-right:16px">388</div><div data-line-number="389" class="react-line-number react-code-text" style="padding-right:16px">389</div><div data-line-number="390" class="react-line-number react-code-text" style="padding-right:16px">390</div><div data-line-number="391" class="react-line-number react-code-text" style="padding-right:16px">391</div><div data-line-number="392" class="react-line-number react-code-text" style="padding-right:16px">392<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="393" class="child-of-line-391  react-line-number react-code-text" style="padding-right:16px">393</div><div data-line-number="394" class="child-of-line-391  react-line-number react-code-text" style="padding-right:16px">394</div><div data-line-number="395" class="child-of-line-391  react-line-number react-code-text" style="padding-right:16px">395</div><div data-line-number="396" class="react-line-number react-code-text" style="padding-right:16px">396</div><div data-line-number="397" class="react-line-number react-code-text" style="padding-right:16px">397</div><div data-line-number="398" class="react-line-number react-code-text" style="padding-right:16px">398<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="399" class="child-of-line-397  react-line-number react-code-text" style="padding-right:16px">399</div><div data-line-number="400" class="child-of-line-397  react-line-number react-code-text" style="padding-right:16px">400</div><div data-line-number="401" class="child-of-line-397  react-line-number react-code-text" style="padding-right:16px">401</div><div data-line-number="402" class="react-line-number react-code-text" style="padding-right:16px">402</div><div data-line-number="403" class="react-line-number react-code-text" style="padding-right:16px">403</div><div data-line-number="404" class="react-line-number react-code-text" style="padding-right:16px">404<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="405" class="child-of-line-403  react-line-number react-code-text" style="padding-right:16px">405</div><div data-line-number="406" class="child-of-line-403  react-line-number react-code-text" style="padding-right:16px">406</div><div data-line-number="407" class="child-of-line-403  react-line-number react-code-text" style="padding-right:16px">407</div><div data-line-number="408" class="react-line-number react-code-text" style="padding-right:16px">408</div><div data-line-number="409" class="react-line-number react-code-text" style="padding-right:16px">409</div><div data-line-number="410" class="react-line-number react-code-text" style="padding-right:16px">410</div><div data-line-number="411" class="react-line-number react-code-text" style="padding-right:16px">411</div><div data-line-number="412" class="react-line-number react-code-text" style="padding-right:16px">412</div><div data-line-number="413" class="react-line-number react-code-text" style="padding-right:16px">413</div><div data-line-number="414" class="react-line-number react-code-text" style="padding-right:16px">414</div><div data-line-number="415" class="react-line-number react-code-text" style="padding-right:16px">415<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="416" class="child-of-line-414  react-line-number react-code-text" style="padding-right:16px">416</div><div data-line-number="417" class="child-of-line-414  react-line-number react-code-text" style="padding-right:16px">417</div><div data-line-number="418" class="child-of-line-414  react-line-number react-code-text" style="padding-right:16px">418</div><div data-line-number="419" class="child-of-line-414  react-line-number react-code-text" style="padding-right:16px">419</div><div data-line-number="420" class="child-of-line-414  react-line-number react-code-text" style="padding-right:16px">420</div><div data-line-number="421" class="child-of-line-414  react-line-number react-code-text" style="padding-right:16px">421</div><div data-line-number="422" class="child-of-line-414  react-line-number react-code-text" style="padding-right:16px">422</div><div data-line-number="423" class="child-of-line-414  react-line-number react-code-text" style="padding-right:16px">423</div><div data-line-number="424" class="child-of-line-414  react-line-number react-code-text" style="padding-right:16px">424</div><div data-line-number="425" class="child-of-line-414  react-line-number react-code-text" style="padding-right:16px">425</div><div data-line-number="426" class="child-of-line-414  react-line-number react-code-text" style="padding-right:16px">426</div><div data-line-number="427" class="child-of-line-414  react-line-number react-code-text" style="padding-right:16px">427</div><div data-line-number="428" class="child-of-line-414  react-line-number react-code-text" style="padding-right:16px">428</div><div data-line-number="429" class="child-of-line-414  react-line-number react-code-text" style="padding-right:16px">429</div><div data-line-number="430" class="child-of-line-414  react-line-number react-code-text" style="padding-right:16px">430</div><div data-line-number="431" class="child-of-line-414  react-line-number react-code-text" style="padding-right:16px">431</div><div data-line-number="432" class="react-line-number react-code-text" style="padding-right:16px">432</div><div data-line-number="433" class="react-line-number react-code-text" style="padding-right:16px">433</div><div data-line-number="434" class="react-line-number react-code-text" style="padding-right:16px">434</div><div data-line-number="435" class="react-line-number react-code-text" style="padding-right:16px">435</div><div data-line-number="436" class="react-line-number react-code-text" style="padding-right:16px">436</div><div data-line-number="437" class="react-line-number react-code-text" style="padding-right:16px">437</div><div data-line-number="438" class="react-line-number react-code-text" style="padding-right:16px">438</div><div data-line-number="439" class="react-line-number react-code-text" style="padding-right:16px">439</div><div data-line-number="440" class="react-line-number react-code-text" style="padding-right:16px">440</div><div data-line-number="441" class="react-line-number react-code-text" style="padding-right:16px">441</div><div data-line-number="442" class="react-line-number react-code-text" style="padding-right:16px">442</div><div data-line-number="443" class="react-line-number react-code-text" style="padding-right:16px">443</div><div data-line-number="444" class="react-line-number react-code-text" style="padding-right:16px">444</div><div data-line-number="445" class="react-line-number react-code-text" style="padding-right:16px">445</div><div data-line-number="446" class="react-line-number react-code-text" style="padding-right:16px">446</div><div data-line-number="447" class="react-line-number react-code-text" style="padding-right:16px">447</div><div data-line-number="448" class="react-line-number react-code-text" style="padding-right:16px">448</div><div data-line-number="449" class="react-line-number react-code-text" style="padding-right:16px">449</div><div data-line-number="450" class="react-line-number react-code-text" style="padding-right:16px">450</div><div data-line-number="451" class="react-line-number react-code-text" style="padding-right:16px">451</div><div data-line-number="452" class="react-line-number react-code-text" style="padding-right:16px">452</div><div data-line-number="453" class="react-line-number react-code-text" style="padding-right:16px">453</div><div data-line-number="454" class="react-line-number react-code-text" style="padding-right:16px">454<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="455" class="child-of-line-453  react-line-number react-code-text" style="padding-right:16px">455</div><div data-line-number="456" class="child-of-line-453  react-line-number react-code-text" style="padding-right:16px">456</div><div data-line-number="457" class="child-of-line-453  react-line-number react-code-text" style="padding-right:16px">457</div><div data-line-number="458" class="child-of-line-453  react-line-number react-code-text" style="padding-right:16px">458</div><div data-line-number="459" class="child-of-line-453  react-line-number react-code-text" style="padding-right:16px">459</div><div data-line-number="460" class="react-line-number react-code-text" style="padding-right:16px">460</div><div data-line-number="461" class="react-line-number react-code-text" style="padding-right:16px">461</div><div data-line-number="462" class="react-line-number react-code-text" style="padding-right:16px">462<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="463" class="child-of-line-461  react-line-number react-code-text" style="padding-right:16px">463</div><div data-line-number="464" class="child-of-line-461  react-line-number react-code-text" style="padding-right:16px">464</div><div data-line-number="465" class="child-of-line-461  react-line-number react-code-text" style="padding-right:16px">465</div><div data-line-number="466" class="react-line-number react-code-text" style="padding-right:16px">466</div><div data-line-number="467" class="react-line-number react-code-text" style="padding-right:16px">467</div><div data-line-number="468" class="react-line-number react-code-text" style="padding-right:16px">468<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="469" class="child-of-line-467  react-line-number react-code-text" style="padding-right:16px">469</div><div data-line-number="470" class="child-of-line-467  react-line-number react-code-text" style="padding-right:16px">470</div><div data-line-number="471" class="child-of-line-467  react-line-number react-code-text" style="padding-right:16px">471</div><div data-line-number="472" class="react-line-number react-code-text" style="padding-right:16px">472</div><div data-line-number="473" class="react-line-number react-code-text" style="padding-right:16px">473</div><div data-line-number="474" class="react-line-number react-code-text" style="padding-right:16px">474</div><div data-line-number="475" class="react-line-number react-code-text" style="padding-right:16px">475</div><div data-line-number="476" class="react-line-number react-code-text" style="padding-right:16px">476</div><div data-line-number="477" class="react-line-number react-code-text" style="padding-right:16px">477</div><div data-line-number="478" class="react-line-number react-code-text" style="padding-right:16px">478</div><div data-line-number="479" class="react-line-number react-code-text" style="padding-right:16px">479</div><div data-line-number="480" class="react-line-number react-code-text" style="padding-right:16px">480</div><div data-line-number="481" class="react-line-number react-code-text" style="padding-right:16px">481</div><div data-line-number="482" class="react-line-number react-code-text" style="padding-right:16px">482</div><div data-line-number="483" class="react-line-number react-code-text" style="padding-right:16px">483</div><div data-line-number="484" class="react-line-number react-code-text" style="padding-right:16px">484<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="485" class="child-of-line-483  react-line-number react-code-text" style="padding-right:16px">485</div><div data-line-number="486" class="child-of-line-483  react-line-number react-code-text" style="padding-right:16px">486</div><div data-line-number="487" class="child-of-line-483  react-line-number react-code-text" style="padding-right:16px">487</div><div data-line-number="488" class="react-line-number react-code-text" style="padding-right:16px">488</div><div data-line-number="489" class="react-line-number react-code-text" style="padding-right:16px">489</div><div data-line-number="490" class="react-line-number react-code-text" style="padding-right:16px">490<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="491" class="child-of-line-489  react-line-number react-code-text" style="padding-right:16px">491</div><div data-line-number="492" class="child-of-line-489  react-line-number react-code-text" style="padding-right:16px">492</div><div data-line-number="493" class="child-of-line-489  react-line-number react-code-text" style="padding-right:16px">493</div><div data-line-number="494" class="react-line-number react-code-text" style="padding-right:16px">494</div><div data-line-number="495" class="react-line-number react-code-text" style="padding-right:16px">495</div><div data-line-number="496" class="react-line-number react-code-text" style="padding-right:16px">496<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="497" class="child-of-line-495  react-line-number react-code-text" style="padding-right:16px">497</div><div data-line-number="498" class="child-of-line-495  react-line-number react-code-text" style="padding-right:16px">498</div><div data-line-number="499" class="child-of-line-495  react-line-number react-code-text" style="padding-right:16px">499</div><div data-line-number="500" class="react-line-number react-code-text" style="padding-right:16px">500</div><div data-line-number="501" class="react-line-number react-code-text" style="padding-right:16px">501</div><div data-line-number="502" class="react-line-number react-code-text" style="padding-right:16px">502<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="503" class="child-of-line-501  react-line-number react-code-text" style="padding-right:16px">503</div><div data-line-number="504" class="child-of-line-501  react-line-number react-code-text" style="padding-right:16px">504</div><div data-line-number="505" class="child-of-line-501  react-line-number react-code-text" style="padding-right:16px">505</div><div data-line-number="506" class="react-line-number react-code-text" style="padding-right:16px">506</div><div data-line-number="507" class="react-line-number react-code-text" style="padding-right:16px">507</div><div data-line-number="508" class="react-line-number react-code-text" style="padding-right:16px">508</div><div data-line-number="509" class="react-line-number react-code-text" style="padding-right:16px">509</div><div data-line-number="510" class="react-line-number react-code-text" style="padding-right:16px">510<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="511" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">511</div><div data-line-number="512" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">512</div><div data-line-number="513" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">513</div><div data-line-number="514" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">514</div><div data-line-number="515" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">515</div><div data-line-number="516" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">516</div><div data-line-number="517" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">517</div><div data-line-number="518" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">518</div><div data-line-number="519" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">519</div><div data-line-number="520" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">520</div><div data-line-number="521" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">521</div><div data-line-number="522" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">522</div><div data-line-number="523" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">523</div><div data-line-number="524" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">524</div><div data-line-number="525" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">525</div><div data-line-number="526" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">526</div><div data-line-number="527" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">527</div><div data-line-number="528" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">528</div><div data-line-number="529" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">529</div><div data-line-number="530" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">530</div><div data-line-number="531" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">531</div><div data-line-number="532" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">532</div><div data-line-number="533" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">533</div><div data-line-number="534" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">534</div><div data-line-number="535" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">535</div><div data-line-number="536" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">536</div><div data-line-number="537" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">537</div><div data-line-number="538" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">538</div><div data-line-number="539" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">539</div><div data-line-number="540" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">540</div><div data-line-number="541" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">541</div><div data-line-number="542" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">542</div><div data-line-number="543" class="child-of-line-509  react-line-number react-code-text" style="padding-right:16px">543</div><div data-line-number="544" class="react-line-number react-code-text" style="padding-right:16px">544</div><div data-line-number="545" class="react-line-number react-code-text" style="padding-right:16px">545</div><div data-line-number="546" class="react-line-number react-code-text" style="padding-right:16px">546<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="547" class="child-of-line-545  react-line-number react-code-text" style="padding-right:16px">547</div><div data-line-number="548" class="child-of-line-545  react-line-number react-code-text" style="padding-right:16px">548</div><div data-line-number="549" class="child-of-line-545  react-line-number react-code-text" style="padding-right:16px">549</div><div data-line-number="550" class="child-of-line-545  react-line-number react-code-text" style="padding-right:16px">550</div><div data-line-number="551" class="child-of-line-545  react-line-number react-code-text" style="padding-right:16px">551</div><div data-line-number="552" class="child-of-line-545  react-line-number react-code-text" style="padding-right:16px">552</div><div data-line-number="553" class="child-of-line-545  react-line-number react-code-text" style="padding-right:16px">553</div><div data-line-number="554" class="child-of-line-545  react-line-number react-code-text" style="padding-right:16px">554</div><div data-line-number="555" class="child-of-line-545  react-line-number react-code-text" style="padding-right:16px">555</div><div data-line-number="556" class="child-of-line-545  react-line-number react-code-text" style="padding-right:16px">556</div><div data-line-number="557" class="child-of-line-545  react-line-number react-code-text" style="padding-right:16px">557</div><div data-line-number="558" class="child-of-line-545  react-line-number react-code-text" style="padding-right:16px">558</div><div data-line-number="559" class="child-of-line-545  react-line-number react-code-text" style="padding-right:16px">559</div><div data-line-number="560" class="react-line-number react-code-text" style="padding-right:16px">560</div><div data-line-number="561" class="react-line-number react-code-text" style="padding-right:16px">561</div><div data-line-number="562" class="react-line-number react-code-text" style="padding-right:16px">562</div><div data-line-number="563" class="react-line-number react-code-text" style="padding-right:16px">563</div><div data-line-number="564" class="react-line-number react-code-text" style="padding-right:16px">564</div><div data-line-number="565" class="react-line-number react-code-text" style="padding-right:16px">565</div><div data-line-number="566" class="react-line-number react-code-text" style="padding-right:16px">566</div><div data-line-number="567" class="react-line-number react-code-text" style="padding-right:16px">567</div><div data-line-number="568" class="react-line-number react-code-text" style="padding-right:16px">568</div><div data-line-number="569" class="react-line-number react-code-text" style="padding-right:16px">569</div><div data-line-number="570" class="react-line-number react-code-text" style="padding-right:16px">570</div><div data-line-number="571" class="react-line-number react-code-text" style="padding-right:16px">571</div><div data-line-number="572" class="react-line-number react-code-text" style="padding-right:16px">572</div><div data-line-number="573" class="react-line-number react-code-text" style="padding-right:16px">573</div><div data-line-number="574" class="react-line-number react-code-text" style="padding-right:16px">574</div><div data-line-number="575" class="react-line-number react-code-text" style="padding-right:16px">575<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="576" class="child-of-line-574  react-line-number react-code-text" style="padding-right:16px">576</div><div data-line-number="577" class="child-of-line-574  react-line-number react-code-text" style="padding-right:16px">577</div><div data-line-number="578" class="child-of-line-574  react-line-number react-code-text" style="padding-right:16px">578</div><div data-line-number="579" class="child-of-line-574  react-line-number react-code-text" style="padding-right:16px">579</div><div data-line-number="580" class="react-line-number react-code-text" style="padding-right:16px">580</div><div data-line-number="581" class="react-line-number react-code-text" style="padding-right:16px">581</div><div data-line-number="582" class="react-line-number react-code-text" style="padding-right:16px">582</div><div data-line-number="583" class="react-line-number react-code-text" style="padding-right:16px">583</div><div data-line-number="584" class="react-line-number react-code-text" style="padding-right:16px">584</div><div data-line-number="585" class="react-line-number react-code-text" style="padding-right:16px">585</div><div data-line-number="586" class="react-line-number react-code-text" style="padding-right:16px">586</div><div data-line-number="587" class="react-line-number react-code-text" style="padding-right:16px">587</div><div data-line-number="588" class="react-line-number react-code-text" style="padding-right:16px">588</div><div data-line-number="589" class="react-line-number react-code-text" style="padding-right:16px">589</div><div data-line-number="590" class="react-line-number react-code-text" style="padding-right:16px">590</div><div data-line-number="591" class="react-line-number react-code-text" style="padding-right:16px">591</div><div data-line-number="592" class="react-line-number react-code-text" style="padding-right:16px">592</div><div data-line-number="593" class="react-line-number react-code-text" style="padding-right:16px">593</div><div data-line-number="594" class="react-line-number react-code-text" style="padding-right:16px">594<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="595" class="child-of-line-593  react-line-number react-code-text" style="padding-right:16px">595</div><div data-line-number="596" class="child-of-line-593  react-line-number react-code-text" style="padding-right:16px">596</div><div data-line-number="597" class="child-of-line-593  react-line-number react-code-text" style="padding-right:16px">597</div><div data-line-number="598" class="child-of-line-593  react-line-number react-code-text" style="padding-right:16px">598</div><div data-line-number="599" class="react-line-number react-code-text" style="padding-right:16px">599</div><div data-line-number="600" class="react-line-number react-code-text" style="padding-right:16px">600</div><div data-line-number="601" class="react-line-number react-code-text" style="padding-right:16px">601</div><div data-line-number="602" class="react-line-number react-code-text" style="padding-right:16px">602<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="603" class="child-of-line-601  react-line-number react-code-text" style="padding-right:16px">603</div><div data-line-number="604" class="child-of-line-601  react-line-number react-code-text" style="padding-right:16px">604</div><div data-line-number="605" class="child-of-line-601  react-line-number react-code-text" style="padding-right:16px">605</div><div data-line-number="606" class="child-of-line-601  react-line-number react-code-text" style="padding-right:16px">606</div><div data-line-number="607" class="react-line-number react-code-text" style="padding-right:16px">607</div><div data-line-number="608" class="react-line-number react-code-text" style="padding-right:16px">608</div><div data-line-number="609" class="react-line-number react-code-text" style="padding-right:16px">609</div><div data-line-number="610" class="react-line-number react-code-text" style="padding-right:16px">610</div><div data-line-number="611" class="react-line-number react-code-text" style="padding-right:16px">611</div><div data-line-number="612" class="react-line-number react-code-text" style="padding-right:16px">612</div><div data-line-number="613" class="react-line-number react-code-text" style="padding-right:16px">613</div><div data-line-number="614" class="react-line-number react-code-text" style="padding-right:16px">614</div><div data-line-number="615" class="react-line-number react-code-text" style="padding-right:16px">615</div><div data-line-number="616" class="react-line-number react-code-text" style="padding-right:16px">616</div><div data-line-number="617" class="react-line-number react-code-text" style="padding-right:16px">617</div><div data-line-number="618" class="react-line-number react-code-text" style="padding-right:16px">618<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="619" class="child-of-line-617  react-line-number react-code-text" style="padding-right:16px">619</div><div data-line-number="620" class="child-of-line-617  react-line-number react-code-text" style="padding-right:16px">620</div><div data-line-number="621" class="child-of-line-617  react-line-number react-code-text" style="padding-right:16px">621</div><div data-line-number="622" class="child-of-line-617  react-line-number react-code-text" style="padding-right:16px">622</div><div data-line-number="623" class="react-line-number react-code-text" style="padding-right:16px">623</div><div data-line-number="624" class="react-line-number react-code-text" style="padding-right:16px">624</div><div data-line-number="625" class="react-line-number react-code-text" style="padding-right:16px">625</div><div data-line-number="626" class="react-line-number react-code-text" style="padding-right:16px">626<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="627" class="child-of-line-625  react-line-number react-code-text" style="padding-right:16px">627</div><div data-line-number="628" class="child-of-line-625  react-line-number react-code-text" style="padding-right:16px">628</div><div data-line-number="629" class="child-of-line-625  react-line-number react-code-text" style="padding-right:16px">629</div><div data-line-number="630" class="react-line-number react-code-text" style="padding-right:16px">630</div><div data-line-number="631" class="react-line-number react-code-text" style="padding-right:16px">631</div><div data-line-number="632" class="react-line-number react-code-text" style="padding-right:16px">632</div><div data-line-number="633" class="react-line-number react-code-text" style="padding-right:16px">633</div><div data-line-number="634" class="react-line-number react-code-text" style="padding-right:16px">634</div><div data-line-number="635" class="react-line-number react-code-text" style="padding-right:16px">635<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="636" class="child-of-line-634  react-line-number react-code-text" style="padding-right:16px">636</div><div data-line-number="637" class="child-of-line-634  react-line-number react-code-text" style="padding-right:16px">637</div><div data-line-number="638" class="child-of-line-634  react-line-number react-code-text" style="padding-right:16px">638</div><div data-line-number="639" class="child-of-line-634  react-line-number react-code-text" style="padding-right:16px">639</div><div data-line-number="640" class="child-of-line-634  react-line-number react-code-text" style="padding-right:16px">640</div><div data-line-number="641" class="child-of-line-634  react-line-number react-code-text" style="padding-right:16px">641</div><div data-line-number="642" class="child-of-line-634  react-line-number react-code-text" style="padding-right:16px">642</div><div data-line-number="643" class="react-line-number react-code-text" style="padding-right:16px">643</div><div data-line-number="644" class="react-line-number react-code-text" style="padding-right:16px">644</div><div data-line-number="645" class="react-line-number react-code-text" style="padding-right:16px">645<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="646" class="child-of-line-644  react-line-number react-code-text" style="padding-right:16px">646</div><div data-line-number="647" class="child-of-line-644  react-line-number react-code-text" style="padding-right:16px">647</div><div data-line-number="648" class="child-of-line-644  react-line-number react-code-text" style="padding-right:16px">648</div><div data-line-number="649" class="child-of-line-644  react-line-number react-code-text" style="padding-right:16px">649</div><div data-line-number="650" class="react-line-number react-code-text" style="padding-right:16px">650</div><div data-line-number="651" class="react-line-number react-code-text" style="padding-right:16px">651</div><div data-line-number="652" class="react-line-number react-code-text" style="padding-right:16px">652</div><div data-line-number="653" class="react-line-number react-code-text" style="padding-right:16px">653<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="654" class="child-of-line-652  react-line-number react-code-text" style="padding-right:16px">654</div><div data-line-number="655" class="child-of-line-652  react-line-number react-code-text" style="padding-right:16px">655</div><div data-line-number="656" class="child-of-line-652  react-line-number react-code-text" style="padding-right:16px">656</div><div data-line-number="657" class="child-of-line-652  react-line-number react-code-text" style="padding-right:16px">657</div><div data-line-number="658" class="child-of-line-652  react-line-number react-code-text" style="padding-right:16px">658</div><div data-line-number="659" class="child-of-line-652  react-line-number react-code-text" style="padding-right:16px">659</div><div data-line-number="660" class="react-line-number react-code-text" style="padding-right:16px">660</div><div data-line-number="661" class="react-line-number react-code-text" style="padding-right:16px">661</div><div data-line-number="662" class="react-line-number react-code-text" style="padding-right:16px">662<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="663" class="child-of-line-661  react-line-number react-code-text" style="padding-right:16px">663</div><div data-line-number="664" class="child-of-line-661  react-line-number react-code-text" style="padding-right:16px">664</div><div data-line-number="665" class="child-of-line-661  react-line-number react-code-text" style="padding-right:16px">665</div><div data-line-number="666" class="child-of-line-661  react-line-number react-code-text" style="padding-right:16px">666</div><div data-line-number="667" class="child-of-line-661  react-line-number react-code-text" style="padding-right:16px">667</div><div data-line-number="668" class="child-of-line-661  react-line-number react-code-text" style="padding-right:16px">668</div><div data-line-number="669" class="child-of-line-661  react-line-number react-code-text" style="padding-right:16px">669</div><div data-line-number="670" class="child-of-line-661  react-line-number react-code-text" style="padding-right:16px">670</div><div data-line-number="671" class="child-of-line-661  react-line-number react-code-text" style="padding-right:16px">671</div><div data-line-number="672" class="react-line-number react-code-text" style="padding-right:16px">672</div><div data-line-number="673" class="react-line-number react-code-text" style="padding-right:16px">673</div><div data-line-number="674" class="react-line-number react-code-text" style="padding-right:16px">674<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="675" class="child-of-line-673  react-line-number react-code-text" style="padding-right:16px">675</div><div data-line-number="676" class="child-of-line-673  react-line-number react-code-text" style="padding-right:16px">676</div><div data-line-number="677" class="child-of-line-673  react-line-number react-code-text" style="padding-right:16px">677</div><div data-line-number="678" class="child-of-line-673  react-line-number react-code-text" style="padding-right:16px">678</div><div data-line-number="679" class="react-line-number react-code-text" style="padding-right:16px">679</div><div data-line-number="680" class="react-line-number react-code-text" style="padding-right:16px">680</div><div data-line-number="681" class="react-line-number react-code-text" style="padding-right:16px">681</div><div data-line-number="682" class="react-line-number react-code-text" style="padding-right:16px">682</div><div data-line-number="683" class="react-line-number react-code-text" style="padding-right:16px">683</div><div data-line-number="684" class="react-line-number react-code-text" style="padding-right:16px">684</div><div data-line-number="685" class="react-line-number react-code-text" style="padding-right:16px">685</div><div data-line-number="686" class="react-line-number react-code-text" style="padding-right:16px">686</div><div data-line-number="687" class="react-line-number react-code-text" style="padding-right:16px">687</div><div data-line-number="688" class="react-line-number react-code-text" style="padding-right:16px">688</div><div data-line-number="689" class="react-line-number react-code-text" style="padding-right:16px">689</div><div data-line-number="690" class="react-line-number react-code-text" style="padding-right:16px">690</div><div data-line-number="691" class="react-line-number react-code-text" style="padding-right:16px">691<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="692" class="child-of-line-690  react-line-number react-code-text" style="padding-right:16px">692</div><div data-line-number="693" class="child-of-line-690  react-line-number react-code-text" style="padding-right:16px">693</div><div data-line-number="694" class="child-of-line-690  react-line-number react-code-text" style="padding-right:16px">694</div><div data-line-number="695" class="react-line-number react-code-text" style="padding-right:16px">695</div><div data-line-number="696" class="react-line-number react-code-text" style="padding-right:16px">696</div><div data-line-number="697" class="react-line-number react-code-text" style="padding-right:16px">697<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="698" class="child-of-line-696  react-line-number react-code-text" style="padding-right:16px">698</div><div data-line-number="699" class="child-of-line-696  react-line-number react-code-text" style="padding-right:16px">699</div><div data-line-number="700" class="child-of-line-696  react-line-number react-code-text" style="padding-right:16px">700</div><div data-line-number="701" class="react-line-number react-code-text" style="padding-right:16px">701</div><div data-line-number="702" class="react-line-number react-code-text" style="padding-right:16px">702</div><div data-line-number="703" class="react-line-number react-code-text" style="padding-right:16px">703</div><div data-line-number="704" class="react-line-number react-code-text" style="padding-right:16px">704</div><div data-line-number="705" class="react-line-number react-code-text" style="padding-right:16px">705</div><div data-line-number="706" class="react-line-number react-code-text" style="padding-right:16px">706</div><div data-line-number="707" class="react-line-number react-code-text" style="padding-right:16px">707</div><div data-line-number="708" class="react-line-number react-code-text" style="padding-right:16px">708</div><div data-line-number="709" class="react-line-number react-code-text" style="padding-right:16px">709</div><div data-line-number="710" class="react-line-number react-code-text" style="padding-right:16px">710</div><div data-line-number="711" class="react-line-number react-code-text" style="padding-right:16px">711</div><div data-line-number="712" class="react-line-number react-code-text" style="padding-right:16px">712</div><div data-line-number="713" class="react-line-number react-code-text" style="padding-right:16px">713</div><div data-line-number="714" class="react-line-number react-code-text" style="padding-right:16px">714<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="715" class="child-of-line-713  react-line-number react-code-text" style="padding-right:16px">715</div><div data-line-number="716" class="child-of-line-713  react-line-number react-code-text" style="padding-right:16px">716</div><div data-line-number="717" class="child-of-line-713  react-line-number react-code-text" style="padding-right:16px">717</div><div data-line-number="718" class="child-of-line-713  react-line-number react-code-text" style="padding-right:16px">718</div><div data-line-number="719" class="react-line-number react-code-text" style="padding-right:16px">719</div><div data-line-number="720" class="react-line-number react-code-text" style="padding-right:16px">720</div><div data-line-number="721" class="react-line-number react-code-text" style="padding-right:16px">721</div><div data-line-number="722" class="react-line-number react-code-text" style="padding-right:16px">722<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="723" class="child-of-line-721  react-line-number react-code-text" style="padding-right:16px">723</div><div data-line-number="724" class="child-of-line-721  react-line-number react-code-text" style="padding-right:16px">724</div><div data-line-number="725" class="child-of-line-721  react-line-number react-code-text" style="padding-right:16px">725</div><div data-line-number="726" class="child-of-line-721  react-line-number react-code-text" style="padding-right:16px">726</div><div data-line-number="727" class="react-line-number react-code-text" style="padding-right:16px">727</div><div data-line-number="728" class="react-line-number react-code-text" style="padding-right:16px">728</div><div data-line-number="729" class="react-line-number react-code-text" style="padding-right:16px">729</div><div data-line-number="730" class="react-line-number react-code-text" style="padding-right:16px">730</div><div data-line-number="731" class="react-line-number react-code-text" style="padding-right:16px">731</div><div data-line-number="732" class="react-line-number react-code-text" style="padding-right:16px">732</div><div data-line-number="733" class="react-line-number react-code-text" style="padding-right:16px">733</div><div data-line-number="734" class="react-line-number react-code-text" style="padding-right:16px">734<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="735" class="child-of-line-733  react-line-number react-code-text" style="padding-right:16px">735</div><div data-line-number="736" class="child-of-line-733  react-line-number react-code-text" style="padding-right:16px">736</div><div data-line-number="737" class="child-of-line-733  react-line-number react-code-text" style="padding-right:16px">737</div><div data-line-number="738" class="child-of-line-733  react-line-number react-code-text" style="padding-right:16px">738</div><div data-line-number="739" class="child-of-line-733  react-line-number react-code-text" style="padding-right:16px">739</div><div data-line-number="740" class="react-line-number react-code-text" style="padding-right:16px">740</div><div data-line-number="741" class="react-line-number react-code-text" style="padding-right:16px">741</div><div data-line-number="742" class="react-line-number react-code-text" style="padding-right:16px">742<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="743" class="child-of-line-741  react-line-number react-code-text" style="padding-right:16px">743</div><div data-line-number="744" class="child-of-line-741  react-line-number react-code-text" style="padding-right:16px">744</div><div data-line-number="745" class="child-of-line-741  react-line-number react-code-text" style="padding-right:16px">745</div><div data-line-number="746" class="child-of-line-741  react-line-number react-code-text" style="padding-right:16px">746</div><div data-line-number="747" class="react-line-number react-code-text" style="padding-right:16px">747</div><div data-line-number="748" class="react-line-number react-code-text" style="padding-right:16px">748</div><div data-line-number="749" class="react-line-number react-code-text" style="padding-right:16px">749<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="750" class="child-of-line-748  react-line-number react-code-text" style="padding-right:16px">750</div><div data-line-number="751" class="child-of-line-748  react-line-number react-code-text" style="padding-right:16px">751</div><div data-line-number="752" class="child-of-line-748  react-line-number react-code-text" style="padding-right:16px">752</div><div data-line-number="753" class="child-of-line-748  react-line-number react-code-text" style="padding-right:16px">753</div><div data-line-number="754" class="react-line-number react-code-text" style="padding-right:16px">754</div><div data-line-number="755" class="react-line-number react-code-text" style="padding-right:16px">755</div><div data-line-number="756" class="react-line-number react-code-text" style="padding-right:16px">756</div><div data-line-number="757" class="react-line-number react-code-text" style="padding-right:16px">757</div><div data-line-number="758" class="react-line-number react-code-text" style="padding-right:16px">758<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="759" class="child-of-line-757  react-line-number react-code-text" style="padding-right:16px">759</div><div data-line-number="760" class="child-of-line-757  react-line-number react-code-text" style="padding-right:16px">760</div><div data-line-number="761" class="child-of-line-757  react-line-number react-code-text" style="padding-right:16px">761</div><div data-line-number="762" class="child-of-line-757  react-line-number react-code-text" style="padding-right:16px">762</div><div data-line-number="763" class="child-of-line-757  react-line-number react-code-text" style="padding-right:16px">763</div><div data-line-number="764" class="child-of-line-757  react-line-number react-code-text" style="padding-right:16px">764</div><div data-line-number="765" class="child-of-line-757  react-line-number react-code-text" style="padding-right:16px">765</div><div data-line-number="766" class="child-of-line-757  react-line-number react-code-text" style="padding-right:16px">766</div><div data-line-number="767" class="child-of-line-757  react-line-number react-code-text" style="padding-right:16px">767</div><div data-line-number="768" class="child-of-line-757  react-line-number react-code-text" style="padding-right:16px">768</div><div data-line-number="769" class="child-of-line-757  react-line-number react-code-text" style="padding-right:16px">769</div><div data-line-number="770" class="child-of-line-757  react-line-number react-code-text" style="padding-right:16px">770</div><div data-line-number="771" class="child-of-line-757  react-line-number react-code-text" style="padding-right:16px">771</div><div data-line-number="772" class="child-of-line-757  react-line-number react-code-text" style="padding-right:16px">772</div><div data-line-number="773" class="child-of-line-757  react-line-number react-code-text" style="padding-right:16px">773</div><div data-line-number="774" class="child-of-line-757  react-line-number react-code-text" style="padding-right:16px">774</div><div data-line-number="775" class="child-of-line-757  react-line-number react-code-text" style="padding-right:16px">775</div><div data-line-number="776" class="child-of-line-757  react-line-number react-code-text" style="padding-right:16px">776</div><div data-line-number="777" class="react-line-number react-code-text" style="padding-right:16px">777</div><div data-line-number="778" class="react-line-number react-code-text" style="padding-right:16px">778</div><div data-line-number="779" class="react-line-number react-code-text" style="padding-right:16px">779</div><div data-line-number="780" class="react-line-number react-code-text" style="padding-right:16px">780</div><div data-line-number="781" class="react-line-number react-code-text" style="padding-right:16px">781<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="782" class="child-of-line-780  react-line-number react-code-text" style="padding-right:16px">782</div><div data-line-number="783" class="child-of-line-780  react-line-number react-code-text" style="padding-right:16px">783</div><div data-line-number="784" class="child-of-line-780  react-line-number react-code-text" style="padding-right:16px">784</div><div data-line-number="785" class="react-line-number react-code-text" style="padding-right:16px">785</div><div data-line-number="786" class="react-line-number react-code-text" style="padding-right:16px">786</div><div data-line-number="787" class="react-line-number react-code-text" style="padding-right:16px">787</div><div data-line-number="788" class="react-line-number react-code-text" style="padding-right:16px">788</div><div data-line-number="789" class="react-line-number react-code-text" style="padding-right:16px">789</div><div data-line-number="790" class="react-line-number react-code-text" style="padding-right:16px">790<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="791" class="child-of-line-789  react-line-number react-code-text" style="padding-right:16px">791</div><div data-line-number="792" class="child-of-line-789  react-line-number react-code-text" style="padding-right:16px">792</div><div data-line-number="793" class="child-of-line-789  react-line-number react-code-text" style="padding-right:16px">793</div><div data-line-number="794" class="child-of-line-789  react-line-number react-code-text" style="padding-right:16px">794</div><div data-line-number="795" class="child-of-line-789  react-line-number react-code-text" style="padding-right:16px">795</div><div data-line-number="796" class="child-of-line-789  react-line-number react-code-text" style="padding-right:16px">796</div><div data-line-number="797" class="child-of-line-789  react-line-number react-code-text" style="padding-right:16px">797</div><div data-line-number="798" class="child-of-line-789  react-line-number react-code-text" style="padding-right:16px">798</div><div data-line-number="799" class="child-of-line-789  react-line-number react-code-text" style="padding-right:16px">799</div><div data-line-number="800" class="child-of-line-789  react-line-number react-code-text" style="padding-right:16px">800</div><div data-line-number="801" class="child-of-line-789  react-line-number react-code-text" style="padding-right:16px">801</div><div data-line-number="802" class="child-of-line-789  react-line-number react-code-text" style="padding-right:16px">802</div><div data-line-number="803" class="child-of-line-789  react-line-number react-code-text" style="padding-right:16px">803</div><div data-line-number="804" class="child-of-line-789  react-line-number react-code-text" style="padding-right:16px">804</div><div data-line-number="805" class="child-of-line-789  react-line-number react-code-text" style="padding-right:16px">805</div><div data-line-number="806" class="react-line-number react-code-text" style="padding-right:16px">806</div><div data-line-number="807" class="react-line-number react-code-text" style="padding-right:16px">807</div><div data-line-number="808" class="react-line-number react-code-text" style="padding-right:16px">808</div><div data-line-number="809" class="react-line-number react-code-text" style="padding-right:16px">809</div><div data-line-number="810" class="react-line-number react-code-text" style="padding-right:16px">810</div><div data-line-number="811" class="react-line-number react-code-text" style="padding-right:16px">811</div><div data-line-number="812" class="react-line-number react-code-text" style="padding-right:16px">812</div><div data-line-number="813" class="react-line-number react-code-text" style="padding-right:16px">813</div><div data-line-number="814" class="react-line-number react-code-text" style="padding-right:16px">814</div><div data-line-number="815" class="react-line-number react-code-text" style="padding-right:16px">815</div><div data-line-number="816" class="react-line-number react-code-text" style="padding-right:16px">816</div><div data-line-number="817" class="react-line-number react-code-text" style="padding-right:16px">817</div><div data-line-number="818" class="react-line-number react-code-text" style="padding-right:16px">818</div><div data-line-number="819" class="react-line-number react-code-text" style="padding-right:16px">819</div><div data-line-number="820" class="react-line-number react-code-text" style="padding-right:16px">820<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="821" class="child-of-line-819  react-line-number react-code-text" style="padding-right:16px">821</div><div data-line-number="822" class="child-of-line-819  react-line-number react-code-text" style="padding-right:16px">822</div><div data-line-number="823" class="child-of-line-819  react-line-number react-code-text" style="padding-right:16px">823</div><div data-line-number="824" class="react-line-number react-code-text" style="padding-right:16px">824</div><div data-line-number="825" class="react-line-number react-code-text" style="padding-right:16px">825</div><div data-line-number="826" class="react-line-number react-code-text" style="padding-right:16px">826</div><div data-line-number="827" class="react-line-number react-code-text" style="padding-right:16px">827</div><div data-line-number="828" class="react-line-number react-code-text" style="padding-right:16px">828</div><div data-line-number="829" class="react-line-number react-code-text" style="padding-right:16px">829<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="830" class="child-of-line-828  react-line-number react-code-text" style="padding-right:16px">830</div><div data-line-number="831" class="child-of-line-828  react-line-number react-code-text" style="padding-right:16px">831</div><div data-line-number="832" class="child-of-line-828  react-line-number react-code-text" style="padding-right:16px">832</div><div data-line-number="833" class="child-of-line-828  react-line-number react-code-text" style="padding-right:16px">833</div><div data-line-number="834" class="react-line-number react-code-text" style="padding-right:16px">834</div><div data-line-number="835" class="react-line-number react-code-text" style="padding-right:16px">835</div><div data-line-number="836" class="react-line-number react-code-text" style="padding-right:16px">836<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="837" class="child-of-line-835  react-line-number react-code-text" style="padding-right:16px">837</div><div data-line-number="838" class="child-of-line-835  react-line-number react-code-text" style="padding-right:16px">838</div><div data-line-number="839" class="child-of-line-835  react-line-number react-code-text" style="padding-right:16px">839</div><div data-line-number="840" class="child-of-line-835  react-line-number react-code-text" style="padding-right:16px">840</div><div data-line-number="841" class="react-line-number react-code-text" style="padding-right:16px">841</div><div data-line-number="842" class="react-line-number react-code-text" style="padding-right:16px">842</div><div data-line-number="843" class="react-line-number react-code-text" style="padding-right:16px">843</div><div data-line-number="844" class="react-line-number react-code-text" style="padding-right:16px">844<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="845" class="child-of-line-843  react-line-number react-code-text" style="padding-right:16px">845</div><div data-line-number="846" class="child-of-line-843  react-line-number react-code-text" style="padding-right:16px">846</div><div data-line-number="847" class="child-of-line-843  react-line-number react-code-text" style="padding-right:16px">847</div><div data-line-number="848" class="react-line-number react-code-text" style="padding-right:16px">848</div><div data-line-number="849" class="react-line-number react-code-text" style="padding-right:16px">849</div><div data-line-number="850" class="react-line-number react-code-text" style="padding-right:16px">850<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="851" class="child-of-line-849  react-line-number react-code-text" style="padding-right:16px">851</div><div data-line-number="852" class="child-of-line-849  react-line-number react-code-text" style="padding-right:16px">852</div><div data-line-number="853" class="child-of-line-849  react-line-number react-code-text" style="padding-right:16px">853</div><div data-line-number="854" class="react-line-number react-code-text" style="padding-right:16px">854</div><div data-line-number="855" class="react-line-number react-code-text" style="padding-right:16px">855</div><div data-line-number="856" class="react-line-number react-code-text" style="padding-right:16px">856</div><div data-line-number="857" class="react-line-number react-code-text" style="padding-right:16px">857</div><div data-line-number="858" class="react-line-number react-code-text" style="padding-right:16px">858<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="859" class="child-of-line-857  react-line-number react-code-text" style="padding-right:16px">859</div><div data-line-number="860" class="child-of-line-857  react-line-number react-code-text" style="padding-right:16px">860</div><div data-line-number="861" class="child-of-line-857  react-line-number react-code-text" style="padding-right:16px">861</div><div data-line-number="862" class="react-line-number react-code-text" style="padding-right:16px">862</div><div data-line-number="863" class="react-line-number react-code-text" style="padding-right:16px">863</div><div data-line-number="864" class="react-line-number react-code-text" style="padding-right:16px">864</div><div data-line-number="865" class="react-line-number react-code-text" style="padding-right:16px">865</div><div data-line-number="866" class="react-line-number react-code-text" style="padding-right:16px">866<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="867" class="child-of-line-865  react-line-number react-code-text" style="padding-right:16px">867</div><div data-line-number="868" class="child-of-line-865  react-line-number react-code-text" style="padding-right:16px">868</div><div data-line-number="869" class="child-of-line-865  react-line-number react-code-text" style="padding-right:16px">869</div><div data-line-number="870" class="child-of-line-865  react-line-number react-code-text" style="padding-right:16px">870</div><div data-line-number="871" class="child-of-line-865  react-line-number react-code-text" style="padding-right:16px">871</div><div data-line-number="872" class="child-of-line-865  react-line-number react-code-text" style="padding-right:16px">872</div><div data-line-number="873" class="child-of-line-865  react-line-number react-code-text" style="padding-right:16px">873</div><div data-line-number="874" class="child-of-line-865  react-line-number react-code-text" style="padding-right:16px">874</div><div data-line-number="875" class="child-of-line-865  react-line-number react-code-text" style="padding-right:16px">875</div><div data-line-number="876" class="child-of-line-865  react-line-number react-code-text" style="padding-right:16px">876</div><div data-line-number="877" class="child-of-line-865  react-line-number react-code-text" style="padding-right:16px">877</div><div data-line-number="878" class="child-of-line-865  react-line-number react-code-text" style="padding-right:16px">878</div><div data-line-number="879" class="child-of-line-865  react-line-number react-code-text" style="padding-right:16px">879</div><div data-line-number="880" class="child-of-line-865  react-line-number react-code-text" style="padding-right:16px">880</div><div data-line-number="881" class="child-of-line-865  react-line-number react-code-text" style="padding-right:16px">881</div><div data-line-number="882" class="child-of-line-865  react-line-number react-code-text" style="padding-right:16px">882</div><div data-line-number="883" class="react-line-number react-code-text" style="padding-right:16px">883</div><div data-line-number="884" class="react-line-number react-code-text" style="padding-right:16px">884</div><div data-line-number="885" class="react-line-number react-code-text" style="padding-right:16px">885</div><div data-line-number="886" class="react-line-number react-code-text" style="padding-right:16px">886<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="887" class="child-of-line-885  react-line-number react-code-text" style="padding-right:16px">887</div><div data-line-number="888" class="child-of-line-885  react-line-number react-code-text" style="padding-right:16px">888</div><div data-line-number="889" class="child-of-line-885  react-line-number react-code-text" style="padding-right:16px">889</div><div data-line-number="890" class="child-of-line-885  react-line-number react-code-text" style="padding-right:16px">890</div><div data-line-number="891" class="child-of-line-885  react-line-number react-code-text" style="padding-right:16px">891</div><div data-line-number="892" class="child-of-line-885  react-line-number react-code-text" style="padding-right:16px">892</div><div data-line-number="893" class="react-line-number react-code-text" style="padding-right:16px">893</div><div data-line-number="894" class="react-line-number react-code-text" style="padding-right:16px">894</div><div data-line-number="895" class="react-line-number react-code-text" style="padding-right:16px">895</div><div data-line-number="896" class="react-line-number react-code-text" style="padding-right:16px">896</div><div data-line-number="897" class="react-line-number react-code-text" style="padding-right:16px">897<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="898" class="child-of-line-896  react-line-number react-code-text" style="padding-right:16px">898</div><div data-line-number="899" class="child-of-line-896  react-line-number react-code-text" style="padding-right:16px">899</div><div data-line-number="900" class="child-of-line-896  react-line-number react-code-text" style="padding-right:16px">900</div><div data-line-number="901" class="child-of-line-896  react-line-number react-code-text" style="padding-right:16px">901</div><div data-line-number="902" class="child-of-line-896  react-line-number react-code-text" style="padding-right:16px">902</div><div data-line-number="903" class="react-line-number react-code-text" style="padding-right:16px">903</div><div data-line-number="904" class="react-line-number react-code-text" style="padding-right:16px">904</div><div data-line-number="905" class="react-line-number react-code-text" style="padding-right:16px">905</div><div data-line-number="906" class="react-line-number react-code-text" style="padding-right:16px">906</div><div data-line-number="907" class="react-line-number react-code-text" style="padding-right:16px">907</div><div data-line-number="908" class="react-line-number react-code-text" style="padding-right:16px">908<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="909" class="child-of-line-907  react-line-number react-code-text" style="padding-right:16px">909</div><div data-line-number="910" class="child-of-line-907  react-line-number react-code-text" style="padding-right:16px">910</div><div data-line-number="911" class="child-of-line-907  react-line-number react-code-text" style="padding-right:16px">911</div><div data-line-number="912" class="child-of-line-907  react-line-number react-code-text" style="padding-right:16px">912</div><div data-line-number="913" class="child-of-line-907  react-line-number react-code-text" style="padding-right:16px">913</div><div data-line-number="914" class="react-line-number react-code-text" style="padding-right:16px">914</div><div data-line-number="915" class="react-line-number react-code-text" style="padding-right:16px">915</div><div data-line-number="916" class="react-line-number react-code-text" style="padding-right:16px">916<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="917" class="child-of-line-915  react-line-number react-code-text" style="padding-right:16px">917</div><div data-line-number="918" class="child-of-line-915  react-line-number react-code-text" style="padding-right:16px">918</div><div data-line-number="919" class="child-of-line-915  react-line-number react-code-text" style="padding-right:16px">919</div><div data-line-number="920" class="child-of-line-915  react-line-number react-code-text" style="padding-right:16px">920</div><div data-line-number="921" class="child-of-line-915  react-line-number react-code-text" style="padding-right:16px">921</div><div data-line-number="922" class="child-of-line-915  react-line-number react-code-text" style="padding-right:16px">922</div><div data-line-number="923" class="child-of-line-915  react-line-number react-code-text" style="padding-right:16px">923</div><div data-line-number="924" class="child-of-line-915  react-line-number react-code-text" style="padding-right:16px">924</div><div data-line-number="925" class="child-of-line-915  react-line-number react-code-text" style="padding-right:16px">925</div><div data-line-number="926" class="child-of-line-915  react-line-number react-code-text" style="padding-right:16px">926</div><div data-line-number="927" class="child-of-line-915  react-line-number react-code-text" style="padding-right:16px">927</div><div data-line-number="928" class="child-of-line-915  react-line-number react-code-text" style="padding-right:16px">928</div><div data-line-number="929" class="react-line-number react-code-text" style="padding-right:16px">929</div><div data-line-number="930" class="react-line-number react-code-text" style="padding-right:16px">930</div><div data-line-number="931" class="react-line-number react-code-text" style="padding-right:16px">931<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="932" class="child-of-line-930  react-line-number react-code-text" style="padding-right:16px">932</div><div data-line-number="933" class="child-of-line-930  react-line-number react-code-text" style="padding-right:16px">933</div><div data-line-number="934" class="child-of-line-930  react-line-number react-code-text" style="padding-right:16px">934</div><div data-line-number="935" class="child-of-line-930  react-line-number react-code-text" style="padding-right:16px">935</div><div data-line-number="936" class="react-line-number react-code-text" style="padding-right:16px">936</div><div data-line-number="937" class="react-line-number react-code-text" style="padding-right:16px">937</div><div data-line-number="938" class="react-line-number react-code-text" style="padding-right:16px">938</div><div data-line-number="939" class="react-line-number react-code-text" style="padding-right:16px">939</div><div data-line-number="940" class="react-line-number react-code-text" style="padding-right:16px">940</div><div data-line-number="941" class="react-line-number react-code-text" style="padding-right:16px">941</div><div data-line-number="942" class="react-line-number react-code-text" style="padding-right:16px">942</div><div data-line-number="943" class="react-line-number react-code-text" style="padding-right:16px">943<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="944" class="child-of-line-942  react-line-number react-code-text" style="padding-right:16px">944</div><div data-line-number="945" class="child-of-line-942  react-line-number react-code-text" style="padding-right:16px">945</div><div data-line-number="946" class="child-of-line-942  react-line-number react-code-text" style="padding-right:16px">946</div><div data-line-number="947" class="child-of-line-942  react-line-number react-code-text" style="padding-right:16px">947</div><div data-line-number="948" class="child-of-line-942  react-line-number react-code-text" style="padding-right:16px">948</div><div data-line-number="949" class="child-of-line-942  react-line-number react-code-text" style="padding-right:16px">949</div><div data-line-number="950" class="react-line-number react-code-text" style="padding-right:16px">950</div><div data-line-number="951" class="react-line-number react-code-text" style="padding-right:16px">951</div><div data-line-number="952" class="react-line-number react-code-text" style="padding-right:16px">952</div><div data-line-number="953" class="react-line-number react-code-text" style="padding-right:16px">953</div><div data-line-number="954" class="react-line-number react-code-text" style="padding-right:16px">954</div><div data-line-number="955" class="react-line-number react-code-text" style="padding-right:16px">955</div><div data-line-number="956" class="react-line-number react-code-text" style="padding-right:16px">956</div><div data-line-number="957" class="react-line-number react-code-text" style="padding-right:16px">957</div><div data-line-number="958" class="react-line-number react-code-text" style="padding-right:16px">958</div><div data-line-number="959" class="react-line-number react-code-text" style="padding-right:16px">959</div><div data-line-number="960" class="react-line-number react-code-text" style="padding-right:16px">960<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="961" class="child-of-line-959  react-line-number react-code-text" style="padding-right:16px">961</div><div data-line-number="962" class="child-of-line-959  react-line-number react-code-text" style="padding-right:16px">962</div><div data-line-number="963" class="child-of-line-959  react-line-number react-code-text" style="padding-right:16px">963</div><div data-line-number="964" class="child-of-line-959  react-line-number react-code-text" style="padding-right:16px">964</div><div data-line-number="965" class="react-line-number react-code-text" style="padding-right:16px">965</div><div data-line-number="966" class="react-line-number react-code-text" style="padding-right:16px">966</div><div data-line-number="967" class="react-line-number react-code-text" style="padding-right:16px">967</div><div data-line-number="968" class="react-line-number react-code-text" style="padding-right:16px">968</div><div data-line-number="969" class="react-line-number react-code-text" style="padding-right:16px">969</div><div data-line-number="970" class="react-line-number react-code-text" style="padding-right:16px">970</div><div data-line-number="971" class="react-line-number react-code-text" style="padding-right:16px">971<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="972" class="child-of-line-970  react-line-number react-code-text" style="padding-right:16px">972</div><div data-line-number="973" class="child-of-line-970  react-line-number react-code-text" style="padding-right:16px">973</div><div data-line-number="974" class="child-of-line-970  react-line-number react-code-text" style="padding-right:16px">974</div><div data-line-number="975" class="child-of-line-970  react-line-number react-code-text" style="padding-right:16px">975</div><div data-line-number="976" class="react-line-number react-code-text" style="padding-right:16px">976</div><div data-line-number="977" class="react-line-number react-code-text" style="padding-right:16px">977</div><div data-line-number="978" class="react-line-number react-code-text" style="padding-right:16px">978<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="979" class="child-of-line-977  react-line-number react-code-text" style="padding-right:16px">979</div><div data-line-number="980" class="child-of-line-977  react-line-number react-code-text" style="padding-right:16px">980</div><div data-line-number="981" class="child-of-line-977  react-line-number react-code-text" style="padding-right:16px">981</div><div data-line-number="982" class="child-of-line-977  react-line-number react-code-text" style="padding-right:16px">982</div><div data-line-number="983" class="react-line-number react-code-text" style="padding-right:16px">983</div><div data-line-number="984" class="react-line-number react-code-text" style="padding-right:16px">984</div><div data-line-number="985" class="react-line-number react-code-text" style="padding-right:16px">985</div><div data-line-number="986" class="react-line-number react-code-text" style="padding-right:16px">986<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="987" class="child-of-line-985  react-line-number react-code-text" style="padding-right:16px">987</div><div data-line-number="988" class="child-of-line-985  react-line-number react-code-text" style="padding-right:16px">988</div><div data-line-number="989" class="child-of-line-985  react-line-number react-code-text" style="padding-right:16px">989</div><div data-line-number="990" class="child-of-line-985  react-line-number react-code-text" style="padding-right:16px">990</div><div data-line-number="991" class="react-line-number react-code-text" style="padding-right:16px">991</div><div data-line-number="992" class="react-line-number react-code-text" style="padding-right:16px">992</div><div data-line-number="993" class="react-line-number react-code-text" style="padding-right:16px">993</div><div data-line-number="994" class="react-line-number react-code-text" style="padding-right:16px">994<span class="LineNumber-module__codeAlert__WexRo LineNumber-module__codeAlertRight__hdWmf"><button data-code-folding-chevron="true" type="button" aria-expanded="true" aria-label="Collapse code section" class="LineNumber-module__codeFoldingChevron__sY2Yt"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-chevron-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></button></span></div><div data-line-number="995" class="child-of-line-993  react-line-number react-code-text" style="padding-right:16px">995</div><div data-line-number="996" class="child-of-line-993  react-line-number react-code-text" style="padding-right:16px">996</div><div data-line-number="997" class="child-of-line-993  react-line-number react-code-text" style="padding-right:16px">997</div><div data-line-number="998" class="child-of-line-993  react-line-number react-code-text" style="padding-right:16px">998</div><div data-line-number="999" class="react-line-number react-code-text" style="padding-right:16px">999</div><div data-line-number="1000" class="react-line-number react-code-text" style="padding-right:16px">1000</div></div><div class="react-code-lines"><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC1" class="react-file-line html-div" data-testid="code-cell" data-line-number="1" style="position:relative"><span class="pl-c"><span class="pl-c">/*</span> Copyright (C) 2019 Mr Goldberg</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC2" class="react-file-line html-div" data-testid="code-cell" data-line-number="2" style="position:relative"><span class="pl-c">   This file is part of the Goldberg Emulator</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC3" class="react-file-line html-div" data-testid="code-cell" data-line-number="3" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC4" class="react-file-line html-div" data-testid="code-cell" data-line-number="4" style="position:relative"><span class="pl-c">   The Goldberg Emulator is free software; you can redistribute it and/or</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC5" class="react-file-line html-div" data-testid="code-cell" data-line-number="5" style="position:relative"><span class="pl-c">   modify it under the terms of the GNU Lesser General Public</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC6" class="react-file-line html-div" data-testid="code-cell" data-line-number="6" style="position:relative"><span class="pl-c">   License as published by the Free Software Foundation; either</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC7" class="react-file-line html-div" data-testid="code-cell" data-line-number="7" style="position:relative"><span class="pl-c">   version 3 of the License, or (at your option) any later version.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC8" class="react-file-line html-div" data-testid="code-cell" data-line-number="8" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC9" class="react-file-line html-div" data-testid="code-cell" data-line-number="9" style="position:relative"><span class="pl-c">   The Goldberg Emulator is distributed in the hope that it will be useful,</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC10" class="react-file-line html-div" data-testid="code-cell" data-line-number="10" style="position:relative"><span class="pl-c">   but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC11" class="react-file-line html-div" data-testid="code-cell" data-line-number="11" style="position:relative"><span class="pl-c">   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC12" class="react-file-line html-div" data-testid="code-cell" data-line-number="12" style="position:relative"><span class="pl-c">   Lesser General Public License for more details.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC13" class="react-file-line html-div" data-testid="code-cell" data-line-number="13" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC14" class="react-file-line html-div" data-testid="code-cell" data-line-number="14" style="position:relative"><span class="pl-c">   You should have received a copy of the GNU Lesser General Public</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC15" class="react-file-line html-div" data-testid="code-cell" data-line-number="15" style="position:relative"><span class="pl-c">   License along with the Goldberg Emulator; if not, see</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC16" class="react-file-line html-div" data-testid="code-cell" data-line-number="16" style="position:relative"><span class="pl-c">   &lt;http://www.gnu.org/licenses/&gt;.  <span class="pl-c">*/</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC17" class="react-file-line html-div" data-testid="code-cell" data-line-number="17" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC18" class="react-file-line html-div" data-testid="code-cell" data-line-number="18" style="position:relative">#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds">&quot;</span>dll/steam_friends.h<span class="pl-pds">&quot;</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC19" class="react-file-line html-div" data-testid="code-cell" data-line-number="19" style="position:relative">#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds">&quot;</span>dll/dll.h<span class="pl-pds">&quot;</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC20" class="react-file-line html-div" data-testid="code-cell" data-line-number="20" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC21" class="react-file-line html-div" data-testid="code-cell" data-line-number="21" style="position:relative">#<span class="pl-k">define</span> <span class="pl-en">SEND_FRIEND_RATE</span> <span class="pl-c1">4.0</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC22" class="react-file-line html-div" data-testid="code-cell" data-line-number="22" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC23" class="react-file-line html-div" data-testid="code-cell" data-line-number="23" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC24" class="react-file-line html-div" data-testid="code-cell" data-line-number="24" style="position:relative">Friend* <span class="pl-en">Steam_Friends::find_friend</span>(CSteamID id)</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC25" class="react-file-line html-div" data-testid="code-cell" data-line-number="25" style="position:relative">{</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC26" class="react-file-line html-div" data-testid="code-cell" data-line-number="26" style="position:relative">    <span class="pl-k">auto</span> f = <span class="pl-c1">std::find_if</span>(friends.<span class="pl-c1">begin</span>(), friends.<span class="pl-c1">end</span>(), [&amp;id](Friend <span class="pl-k">const</span>&amp; item) { <span class="pl-k">return</span> item.<span class="pl-c1">id</span>() == id.<span class="pl-c1">ConvertToUint64</span>(); });</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC27" class="react-file-line html-div" data-testid="code-cell" data-line-number="27" style="position:relative">    <span class="pl-k">if</span> (friends.<span class="pl-c1">end</span>() == f)</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC28" class="react-file-line html-div" data-testid="code-cell" data-line-number="28" style="position:relative">        <span class="pl-k">return</span> <span class="pl-c1">NULL</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC29" class="react-file-line html-div" data-testid="code-cell" data-line-number="29" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC30" class="react-file-line html-div" data-testid="code-cell" data-line-number="30" style="position:relative">    <span class="pl-k">return</span> &amp;(*f);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC31" class="react-file-line html-div" data-testid="code-cell" data-line-number="31" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC32" class="react-file-line html-div" data-testid="code-cell" data-line-number="32" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC33" class="react-file-line html-div" data-testid="code-cell" data-line-number="33" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::persona_change</span>(CSteamID id, EPersonaChange flags)</div></div></div><div class="child-of-line-32  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC34" class="react-file-line html-div" data-testid="code-cell" data-line-number="34" style="position:relative">{</div></div></div><div class="child-of-line-32  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC35" class="react-file-line html-div" data-testid="code-cell" data-line-number="35" style="position:relative">    PersonaStateChange_t data;</div></div></div><div class="child-of-line-32  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC36" class="react-file-line html-div" data-testid="code-cell" data-line-number="36" style="position:relative">    data.<span class="pl-smi">m_ulSteamID</span> = id.<span class="pl-c1">ConvertToUint64</span>();</div></div></div><div class="child-of-line-32  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC37" class="react-file-line html-div" data-testid="code-cell" data-line-number="37" style="position:relative">    data.<span class="pl-smi">m_nChangeFlags</span> = flags;</div></div></div><div class="child-of-line-32  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC38" class="react-file-line html-div" data-testid="code-cell" data-line-number="38" style="position:relative">    callbacks-&gt;<span class="pl-c1">addCBResult</span>(data.<span class="pl-smi">k_iCallback</span>, &amp;data, <span class="pl-k">sizeof</span>(data));</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC39" class="react-file-line html-div" data-testid="code-cell" data-line-number="39" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC40" class="react-file-line html-div" data-testid="code-cell" data-line-number="40" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC41" class="react-file-line html-div" data-testid="code-cell" data-line-number="41" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::rich_presence_updated</span>(CSteamID id, AppId_t appid)</div></div></div><div class="child-of-line-40  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC42" class="react-file-line html-div" data-testid="code-cell" data-line-number="42" style="position:relative">{</div></div></div><div class="child-of-line-40  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC43" class="react-file-line html-div" data-testid="code-cell" data-line-number="43" style="position:relative">    FriendRichPresenceUpdate_t data;</div></div></div><div class="child-of-line-40  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC44" class="react-file-line html-div" data-testid="code-cell" data-line-number="44" style="position:relative">    data.<span class="pl-smi">m_steamIDFriend</span> = id;</div></div></div><div class="child-of-line-40  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC45" class="react-file-line html-div" data-testid="code-cell" data-line-number="45" style="position:relative">    data.<span class="pl-smi">m_nAppID</span> = appid;</div></div></div><div class="child-of-line-40  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC46" class="react-file-line html-div" data-testid="code-cell" data-line-number="46" style="position:relative">    callbacks-&gt;<span class="pl-c1">addCBResult</span>(data.<span class="pl-smi">k_iCallback</span>, &amp;data, <span class="pl-k">sizeof</span>(data));</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC47" class="react-file-line html-div" data-testid="code-cell" data-line-number="47" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC48" class="react-file-line html-div" data-testid="code-cell" data-line-number="48" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC49" class="react-file-line html-div" data-testid="code-cell" data-line-number="49" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">Steam_Friends::is_appid_compatible</span>(Friend *f)</div></div></div><div class="child-of-line-48  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC50" class="react-file-line html-div" data-testid="code-cell" data-line-number="50" style="position:relative">{</div></div></div><div class="child-of-line-48  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC51" class="react-file-line html-div" data-testid="code-cell" data-line-number="51" style="position:relative">    <span class="pl-k">if</span> (settings-&gt;<span class="pl-smi">is_lobby_connect</span>) <span class="pl-k">return</span> <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-48  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC52" class="react-file-line html-div" data-testid="code-cell" data-line-number="52" style="position:relative">    <span class="pl-k">if</span> (f == &amp;us) <span class="pl-k">return</span> <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-48  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC53" class="react-file-line html-div" data-testid="code-cell" data-line-number="53" style="position:relative">    <span class="pl-k">return</span> settings-&gt;<span class="pl-c1">get_local_game_id</span>().<span class="pl-c1">AppID</span>() == f-&gt;<span class="pl-c1">appid</span>();</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC54" class="react-file-line html-div" data-testid="code-cell" data-line-number="54" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC55" class="react-file-line html-div" data-testid="code-cell" data-line-number="55" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC56" class="react-file-line html-div" data-testid="code-cell" data-line-number="56" style="position:relative"><span class="pl-k">struct</span> <span class="pl-en">Avatar_Numbers</span> <span class="pl-en">Steam_Friends::add_friend_avatars</span>(CSteamID id)</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC57" class="react-file-line html-div" data-testid="code-cell" data-line-number="57" style="position:relative">{</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC58" class="react-file-line html-div" data-testid="code-cell" data-line-number="58" style="position:relative">    uint64 steam_id = id.<span class="pl-c1">ConvertToUint64</span>();</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC59" class="react-file-line html-div" data-testid="code-cell" data-line-number="59" style="position:relative">    <span class="pl-k">auto</span> avatar_ids = avatars.<span class="pl-c1">find</span>(steam_id);</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC60" class="react-file-line html-div" data-testid="code-cell" data-line-number="60" style="position:relative">    <span class="pl-k">if</span> (avatar_ids != avatars.<span class="pl-c1">end</span>()) {</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC61" class="react-file-line html-div" data-testid="code-cell" data-line-number="61" style="position:relative">        <span class="pl-k">return</span> avatar_ids-&gt;<span class="pl-smi">second</span>;</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC62" class="react-file-line html-div" data-testid="code-cell" data-line-number="62" style="position:relative">    }</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC63" class="react-file-line html-div" data-testid="code-cell" data-line-number="63" style="position:relative">
</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC64" class="react-file-line html-div" data-testid="code-cell" data-line-number="64" style="position:relative">    <span class="pl-k">struct</span> <span class="pl-en">Avatar_Numbers</span> avatar_numbers{};</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC65" class="react-file-line html-div" data-testid="code-cell" data-line-number="65" style="position:relative">    std::string <span class="pl-smi">small_avatar</span>(<span class="pl-c1">32</span> * <span class="pl-c1">32</span> * <span class="pl-c1">4</span>, <span class="pl-c1">0</span>);</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC66" class="react-file-line html-div" data-testid="code-cell" data-line-number="66" style="position:relative">    std::string <span class="pl-smi">medium_avatar</span>(<span class="pl-c1">64</span> * <span class="pl-c1">64</span> * <span class="pl-c1">4</span>, <span class="pl-c1">0</span>);</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC67" class="react-file-line html-div" data-testid="code-cell" data-line-number="67" style="position:relative">    std::string <span class="pl-smi">large_avatar</span>(<span class="pl-c1">184</span> * <span class="pl-c1">184</span> * <span class="pl-c1">4</span>, <span class="pl-c1">0</span>);</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC68" class="react-file-line html-div" data-testid="code-cell" data-line-number="68" style="position:relative">
</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC69" class="react-file-line html-div" data-testid="code-cell" data-line-number="69" style="position:relative">    <span class="pl-k">static</span> <span class="pl-k">const</span> std::initializer_list&lt;std::string&gt; avatar_icons = {</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC70" class="react-file-line html-div" data-testid="code-cell" data-line-number="70" style="position:relative">        <span class="pl-s"><span class="pl-pds">&quot;</span>account_avatar.png<span class="pl-pds">&quot;</span></span>,</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC71" class="react-file-line html-div" data-testid="code-cell" data-line-number="71" style="position:relative">        <span class="pl-s"><span class="pl-pds">&quot;</span>account_avatar.jpg<span class="pl-pds">&quot;</span></span>,</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC72" class="react-file-line html-div" data-testid="code-cell" data-line-number="72" style="position:relative">        <span class="pl-s"><span class="pl-pds">&quot;</span>account_avatar.jpeg<span class="pl-pds">&quot;</span></span>,</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC73" class="react-file-line html-div" data-testid="code-cell" data-line-number="73" style="position:relative">    };</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC74" class="react-file-line html-div" data-testid="code-cell" data-line-number="74" style="position:relative">    <span class="pl-k">static</span> <span class="pl-k">const</span> std::initializer_list&lt;std::string&gt; avatar_icons_default = {</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC75" class="react-file-line html-div" data-testid="code-cell" data-line-number="75" style="position:relative">        <span class="pl-s"><span class="pl-pds">&quot;</span>account_avatar_default.png<span class="pl-pds">&quot;</span></span>,</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC76" class="react-file-line html-div" data-testid="code-cell" data-line-number="76" style="position:relative">        <span class="pl-s"><span class="pl-pds">&quot;</span>account_avatar_default.jpg<span class="pl-pds">&quot;</span></span>,</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC77" class="react-file-line html-div" data-testid="code-cell" data-line-number="77" style="position:relative">        <span class="pl-s"><span class="pl-pds">&quot;</span>account_avatar_default.jpeg<span class="pl-pds">&quot;</span></span>,</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC78" class="react-file-line html-div" data-testid="code-cell" data-line-number="78" style="position:relative">    };</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC79" class="react-file-line html-div" data-testid="code-cell" data-line-number="79" style="position:relative">
</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC80" class="react-file-line html-div" data-testid="code-cell" data-line-number="80" style="position:relative">    <span class="pl-k">if</span> (!settings-&gt;<span class="pl-smi">disable_account_avatar</span> &amp;&amp; (id == settings-&gt;<span class="pl-c1">get_local_steam_id</span>())) {</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC81" class="react-file-line html-div" data-testid="code-cell" data-line-number="81" style="position:relative">        std::string file_path{};</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC82" class="react-file-line html-div" data-testid="code-cell" data-line-number="82" style="position:relative">        <span class="pl-k">unsigned</span> <span class="pl-k">long</span> <span class="pl-k">long</span> file_size{};</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC83" class="react-file-line html-div" data-testid="code-cell" data-line-number="83" style="position:relative">
</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC84" class="react-file-line html-div" data-testid="code-cell" data-line-number="84" style="position:relative">        <span class="pl-c"><span class="pl-c">//</span> try local location first, then try global location</span></div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC85" class="react-file-line html-div" data-testid="code-cell" data-line-number="85" style="position:relative">        <span class="pl-k">for</span> (<span class="pl-k">const</span> <span class="pl-k">auto</span> &amp;settings_path : { <span class="pl-c1">Local_Storage::get_game_settings_path</span>(), local_storage-&gt;<span class="pl-c1">get_global_settings_path</span>() }) {</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC86" class="react-file-line html-div" data-testid="code-cell" data-line-number="86" style="position:relative">            <span class="pl-k">for</span> (<span class="pl-k">const</span> <span class="pl-k">auto</span> &amp;file_name : avatar_icons) {</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC87" class="react-file-line html-div" data-testid="code-cell" data-line-number="87" style="position:relative">                file_path = settings_path + file_name;</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC88" class="react-file-line html-div" data-testid="code-cell" data-line-number="88" style="position:relative">                file_size = <span class="pl-c1">file_size_</span>(file_path);</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC89" class="react-file-line html-div" data-testid="code-cell" data-line-number="89" style="position:relative">                <span class="pl-k">if</span> (file_size) <span class="pl-k">break</span>;</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC90" class="react-file-line html-div" data-testid="code-cell" data-line-number="90" style="position:relative">            }</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC91" class="react-file-line html-div" data-testid="code-cell" data-line-number="91" style="position:relative">            <span class="pl-k">if</span> (file_size) <span class="pl-k">break</span>;</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC92" class="react-file-line html-div" data-testid="code-cell" data-line-number="92" style="position:relative">        }</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC93" class="react-file-line html-div" data-testid="code-cell" data-line-number="93" style="position:relative">
</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC94" class="react-file-line html-div" data-testid="code-cell" data-line-number="94" style="position:relative">        <span class="pl-c"><span class="pl-c">//</span> no else statement here for default otherwise this breaks default images for friends</span></div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC95" class="react-file-line html-div" data-testid="code-cell" data-line-number="95" style="position:relative">        <span class="pl-k">if</span> (file_size) {</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC96" class="react-file-line html-div" data-testid="code-cell" data-line-number="96" style="position:relative">            small_avatar = <span class="pl-c1">Local_Storage::load_image_resized</span>(file_path, <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span>, <span class="pl-c1">32</span>);</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC97" class="react-file-line html-div" data-testid="code-cell" data-line-number="97" style="position:relative">            medium_avatar = <span class="pl-c1">Local_Storage::load_image_resized</span>(file_path, <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span>, <span class="pl-c1">64</span>);</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC98" class="react-file-line html-div" data-testid="code-cell" data-line-number="98" style="position:relative">            large_avatar = <span class="pl-c1">Local_Storage::load_image_resized</span>(file_path, <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span>, <span class="pl-c1">184</span>);</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC99" class="react-file-line html-div" data-testid="code-cell" data-line-number="99" style="position:relative">        }</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC100" class="react-file-line html-div" data-testid="code-cell" data-line-number="100" style="position:relative">    } <span class="pl-k">else</span> <span class="pl-k">if</span> (!settings-&gt;<span class="pl-smi">disable_account_avatar</span>) {</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC101" class="react-file-line html-div" data-testid="code-cell" data-line-number="101" style="position:relative">        Friend *f = <span class="pl-c1">find_friend</span>(id);</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC102" class="react-file-line html-div" data-testid="code-cell" data-line-number="102" style="position:relative">        <span class="pl-k">if</span> (f &amp;&amp; (large_avatar.<span class="pl-c1">compare</span>(f-&gt;<span class="pl-c1">avatar</span>()) != <span class="pl-c1">0</span>)) {</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC103" class="react-file-line html-div" data-testid="code-cell" data-line-number="103" style="position:relative">            large_avatar = f-&gt;<span class="pl-c1">avatar</span>();</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC104" class="react-file-line html-div" data-testid="code-cell" data-line-number="104" style="position:relative">            medium_avatar = <span class="pl-c1">Local_Storage::load_image_resized</span>(<span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span>, f-&gt;<span class="pl-c1">avatar</span>(), <span class="pl-c1">64</span>);</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC105" class="react-file-line html-div" data-testid="code-cell" data-line-number="105" style="position:relative">            small_avatar = <span class="pl-c1">Local_Storage::load_image_resized</span>(<span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span>, f-&gt;<span class="pl-c1">avatar</span>(), <span class="pl-c1">32</span>);</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC106" class="react-file-line html-div" data-testid="code-cell" data-line-number="106" style="position:relative">        } <span class="pl-k">else</span> {</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC107" class="react-file-line html-div" data-testid="code-cell" data-line-number="107" style="position:relative">            std::string file_path{};</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC108" class="react-file-line html-div" data-testid="code-cell" data-line-number="108" style="position:relative">            <span class="pl-k">unsigned</span> <span class="pl-k">long</span> <span class="pl-k">long</span> file_size{};</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC109" class="react-file-line html-div" data-testid="code-cell" data-line-number="109" style="position:relative">
</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC110" class="react-file-line html-div" data-testid="code-cell" data-line-number="110" style="position:relative">            <span class="pl-c"><span class="pl-c">//</span> try local location first, then try global location</span></div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC111" class="react-file-line html-div" data-testid="code-cell" data-line-number="111" style="position:relative">            <span class="pl-k">for</span> (<span class="pl-k">const</span> <span class="pl-k">auto</span> &amp;settings_path : { <span class="pl-c1">Local_Storage::get_game_settings_path</span>(), local_storage-&gt;<span class="pl-c1">get_global_settings_path</span>() }) {</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC112" class="react-file-line html-div" data-testid="code-cell" data-line-number="112" style="position:relative">                <span class="pl-k">for</span> (<span class="pl-k">const</span> <span class="pl-k">auto</span> &amp;file_name : avatar_icons_default) {</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC113" class="react-file-line html-div" data-testid="code-cell" data-line-number="113" style="position:relative">                    file_path = settings_path + file_name;</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC114" class="react-file-line html-div" data-testid="code-cell" data-line-number="114" style="position:relative">                    file_size = <span class="pl-c1">file_size_</span>(file_path);</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC115" class="react-file-line html-div" data-testid="code-cell" data-line-number="115" style="position:relative">                    <span class="pl-k">if</span> (file_size) <span class="pl-k">break</span>;</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC116" class="react-file-line html-div" data-testid="code-cell" data-line-number="116" style="position:relative">                }</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC117" class="react-file-line html-div" data-testid="code-cell" data-line-number="117" style="position:relative">                <span class="pl-k">if</span> (file_size) <span class="pl-k">break</span>;</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC118" class="react-file-line html-div" data-testid="code-cell" data-line-number="118" style="position:relative">            }</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC119" class="react-file-line html-div" data-testid="code-cell" data-line-number="119" style="position:relative">
</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC120" class="react-file-line html-div" data-testid="code-cell" data-line-number="120" style="position:relative">            <span class="pl-k">if</span> (file_size) {</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC121" class="react-file-line html-div" data-testid="code-cell" data-line-number="121" style="position:relative">                small_avatar = <span class="pl-c1">Local_Storage::load_image_resized</span>(file_path, <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span>, <span class="pl-c1">32</span>);</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC122" class="react-file-line html-div" data-testid="code-cell" data-line-number="122" style="position:relative">                medium_avatar = <span class="pl-c1">Local_Storage::load_image_resized</span>(file_path, <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span>, <span class="pl-c1">64</span>);</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC123" class="react-file-line html-div" data-testid="code-cell" data-line-number="123" style="position:relative">                large_avatar = <span class="pl-c1">Local_Storage::load_image_resized</span>(file_path, <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span>, <span class="pl-c1">184</span>);</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC124" class="react-file-line html-div" data-testid="code-cell" data-line-number="124" style="position:relative">            }</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC125" class="react-file-line html-div" data-testid="code-cell" data-line-number="125" style="position:relative">        }</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC126" class="react-file-line html-div" data-testid="code-cell" data-line-number="126" style="position:relative">    }</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC127" class="react-file-line html-div" data-testid="code-cell" data-line-number="127" style="position:relative">
</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC128" class="react-file-line html-div" data-testid="code-cell" data-line-number="128" style="position:relative">    avatar_numbers.<span class="pl-smi">smallest</span> = settings-&gt;<span class="pl-c1">add_image</span>(small_avatar, <span class="pl-c1">32</span>, <span class="pl-c1">32</span>);</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC129" class="react-file-line html-div" data-testid="code-cell" data-line-number="129" style="position:relative">    avatar_numbers.<span class="pl-smi">medium</span> = settings-&gt;<span class="pl-c1">add_image</span>(medium_avatar, <span class="pl-c1">64</span>, <span class="pl-c1">64</span>);</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC130" class="react-file-line html-div" data-testid="code-cell" data-line-number="130" style="position:relative">    avatar_numbers.<span class="pl-smi">large</span> = settings-&gt;<span class="pl-c1">add_image</span>(large_avatar, <span class="pl-c1">184</span>, <span class="pl-c1">184</span>);</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC131" class="react-file-line html-div" data-testid="code-cell" data-line-number="131" style="position:relative">
</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC132" class="react-file-line html-div" data-testid="code-cell" data-line-number="132" style="position:relative">    avatars[steam_id] = avatar_numbers;</div></div></div><div class="child-of-line-55  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC133" class="react-file-line html-div" data-testid="code-cell" data-line-number="133" style="position:relative">    <span class="pl-k">return</span> avatar_numbers;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC134" class="react-file-line html-div" data-testid="code-cell" data-line-number="134" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC135" class="react-file-line html-div" data-testid="code-cell" data-line-number="135" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC136" class="react-file-line html-div" data-testid="code-cell" data-line-number="136" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::steam_friends_callback</span>(<span class="pl-k">void</span> *object, Common_Message *msg)</div></div></div><div class="child-of-line-135  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC137" class="react-file-line html-div" data-testid="code-cell" data-line-number="137" style="position:relative">{</div></div></div><div class="child-of-line-135  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC138" class="react-file-line html-div" data-testid="code-cell" data-line-number="138" style="position:relative">    <span class="pl-c"><span class="pl-c">//</span> PRINT_DEBUG_ENTRY();</span></div></div></div><div class="child-of-line-135  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC139" class="react-file-line html-div" data-testid="code-cell" data-line-number="139" style="position:relative">
</div></div></div><div class="child-of-line-135  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC140" class="react-file-line html-div" data-testid="code-cell" data-line-number="140" style="position:relative">    Steam_Friends *steam_friends = (Steam_Friends *)object;</div></div></div><div class="child-of-line-135  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC141" class="react-file-line html-div" data-testid="code-cell" data-line-number="141" style="position:relative">    steam_friends-&gt;<span class="pl-c1">Callback</span>(msg);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC142" class="react-file-line html-div" data-testid="code-cell" data-line-number="142" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC143" class="react-file-line html-div" data-testid="code-cell" data-line-number="143" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC144" class="react-file-line html-div" data-testid="code-cell" data-line-number="144" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::steam_friends_run_every_runcb</span>(<span class="pl-k">void</span> *object)</div></div></div><div class="child-of-line-143  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC145" class="react-file-line html-div" data-testid="code-cell" data-line-number="145" style="position:relative">{</div></div></div><div class="child-of-line-143  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC146" class="react-file-line html-div" data-testid="code-cell" data-line-number="146" style="position:relative">    <span class="pl-c"><span class="pl-c">//</span> PRINT_DEBUG_ENTRY();</span></div></div></div><div class="child-of-line-143  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC147" class="react-file-line html-div" data-testid="code-cell" data-line-number="147" style="position:relative">
</div></div></div><div class="child-of-line-143  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC148" class="react-file-line html-div" data-testid="code-cell" data-line-number="148" style="position:relative">    Steam_Friends *steam_friends = (Steam_Friends *)object;</div></div></div><div class="child-of-line-143  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC149" class="react-file-line html-div" data-testid="code-cell" data-line-number="149" style="position:relative">    steam_friends-&gt;<span class="pl-c1">RunCallbacks</span>();</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC150" class="react-file-line html-div" data-testid="code-cell" data-line-number="150" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC151" class="react-file-line html-div" data-testid="code-cell" data-line-number="151" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC152" class="react-file-line html-div" data-testid="code-cell" data-line-number="152" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::resend_friend_data</span>()</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC153" class="react-file-line html-div" data-testid="code-cell" data-line-number="153" style="position:relative">{</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC154" class="react-file-line html-div" data-testid="code-cell" data-line-number="154" style="position:relative">    modified = <span class="pl-c1">true</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC155" class="react-file-line html-div" data-testid="code-cell" data-line-number="155" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC156" class="react-file-line html-div" data-testid="code-cell" data-line-number="156" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC157" class="react-file-line html-div" data-testid="code-cell" data-line-number="157" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">Steam_Friends::ok_friend_flags</span>(<span class="pl-k">int</span> iFriendFlags)</div></div></div><div class="child-of-line-156  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC158" class="react-file-line html-div" data-testid="code-cell" data-line-number="158" style="position:relative">{</div></div></div><div class="child-of-line-156  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC159" class="react-file-line html-div" data-testid="code-cell" data-line-number="159" style="position:relative">    <span class="pl-k">if</span> (iFriendFlags &amp; k_EFriendFlagImmediate) <span class="pl-k">return</span> <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-156  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC160" class="react-file-line html-div" data-testid="code-cell" data-line-number="160" style="position:relative">
</div></div></div><div class="child-of-line-156  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC161" class="react-file-line html-div" data-testid="code-cell" data-line-number="161" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">false</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC162" class="react-file-line html-div" data-testid="code-cell" data-line-number="162" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC163" class="react-file-line html-div" data-testid="code-cell" data-line-number="163" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC164" class="react-file-line html-div" data-testid="code-cell" data-line-number="164" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC165" class="react-file-line html-div" data-testid="code-cell" data-line-number="165" style="position:relative"><span class="pl-en">Steam_Friends::Steam_Friends</span>(Settings* settings, <span class="pl-k">class</span> <span class="pl-en">Local_Storage</span>* local_storage, Networking* network, SteamCallResults* callback_results, SteamCallBacks* callbacks, RunEveryRunCB* run_every_runcb, Steam_Overlay* overlay):</div></div></div><div class="child-of-line-164  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC166" class="react-file-line html-div" data-testid="code-cell" data-line-number="166" style="position:relative">    settings(settings),</div></div></div><div class="child-of-line-164  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC167" class="react-file-line html-div" data-testid="code-cell" data-line-number="167" style="position:relative">    local_storage(local_storage),</div></div></div><div class="child-of-line-164  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC168" class="react-file-line html-div" data-testid="code-cell" data-line-number="168" style="position:relative">    network(network),</div></div></div><div class="child-of-line-164  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC169" class="react-file-line html-div" data-testid="code-cell" data-line-number="169" style="position:relative">    callbacks(callbacks),</div></div></div><div class="child-of-line-164  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC170" class="react-file-line html-div" data-testid="code-cell" data-line-number="170" style="position:relative">    callback_results(callback_results),</div></div></div><div class="child-of-line-164  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC171" class="react-file-line html-div" data-testid="code-cell" data-line-number="171" style="position:relative">    run_every_runcb(run_every_runcb),</div></div></div><div class="child-of-line-164  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC172" class="react-file-line html-div" data-testid="code-cell" data-line-number="172" style="position:relative">    overlay(overlay)</div></div></div><div class="child-of-line-164  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC173" class="react-file-line html-div" data-testid="code-cell" data-line-number="173" style="position:relative">{</div></div></div><div class="child-of-line-164  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC174" class="react-file-line html-div" data-testid="code-cell" data-line-number="174" style="position:relative">    modified = <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-164  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC175" class="react-file-line html-div" data-testid="code-cell" data-line-number="175" style="position:relative">
</div></div></div><div class="child-of-line-164  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC176" class="react-file-line html-div" data-testid="code-cell" data-line-number="176" style="position:relative">    <span class="pl-c1">this</span>-&gt;<span class="pl-smi">network</span>-&gt;<span class="pl-c1">setCallback</span>(<span class="pl-c1">CALLBACK_ID_FRIEND</span>, settings-&gt;<span class="pl-c1">get_local_steam_id</span>(), &amp;Steam_Friends::steam_friends_callback, <span class="pl-c1">this</span>);</div></div></div><div class="child-of-line-164  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC177" class="react-file-line html-div" data-testid="code-cell" data-line-number="177" style="position:relative">    <span class="pl-c1">this</span>-&gt;<span class="pl-smi">network</span>-&gt;<span class="pl-c1">setCallback</span>(<span class="pl-c1">CALLBACK_ID_FRIEND_MESSAGES</span>, settings-&gt;<span class="pl-c1">get_local_steam_id</span>(), &amp;Steam_Friends::steam_friends_callback, <span class="pl-c1">this</span>);</div></div></div><div class="child-of-line-164  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC178" class="react-file-line html-div" data-testid="code-cell" data-line-number="178" style="position:relative">    <span class="pl-c1">this</span>-&gt;<span class="pl-smi">network</span>-&gt;<span class="pl-c1">setCallback</span>(<span class="pl-c1">CALLBACK_ID_USER_STATUS</span>, settings-&gt;<span class="pl-c1">get_local_steam_id</span>(), &amp;Steam_Friends::steam_friends_callback, <span class="pl-c1">this</span>);</div></div></div><div class="child-of-line-164  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC179" class="react-file-line html-div" data-testid="code-cell" data-line-number="179" style="position:relative">    <span class="pl-c1">this</span>-&gt;<span class="pl-smi">run_every_runcb</span>-&gt;<span class="pl-c1">add</span>(&amp;Steam_Friends::steam_friends_run_every_runcb, <span class="pl-c1">this</span>);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC180" class="react-file-line html-div" data-testid="code-cell" data-line-number="180" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC181" class="react-file-line html-div" data-testid="code-cell" data-line-number="181" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC182" class="react-file-line html-div" data-testid="code-cell" data-line-number="182" style="position:relative"><span class="pl-en">Steam_Friends::~Steam_Friends</span>()</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC183" class="react-file-line html-div" data-testid="code-cell" data-line-number="183" style="position:relative">{</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC184" class="react-file-line html-div" data-testid="code-cell" data-line-number="184" style="position:relative">    <span class="pl-c1">this</span>-&gt;<span class="pl-smi">network</span>-&gt;<span class="pl-c1">rmCallback</span>(<span class="pl-c1">CALLBACK_ID_FRIEND</span>, settings-&gt;<span class="pl-c1">get_local_steam_id</span>(), &amp;Steam_Friends::steam_friends_callback, <span class="pl-c1">this</span>);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC185" class="react-file-line html-div" data-testid="code-cell" data-line-number="185" style="position:relative">    <span class="pl-c1">this</span>-&gt;<span class="pl-smi">network</span>-&gt;<span class="pl-c1">rmCallback</span>(<span class="pl-c1">CALLBACK_ID_FRIEND_MESSAGES</span>, settings-&gt;<span class="pl-c1">get_local_steam_id</span>(), &amp;Steam_Friends::steam_friends_callback, <span class="pl-c1">this</span>);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC186" class="react-file-line html-div" data-testid="code-cell" data-line-number="186" style="position:relative">    <span class="pl-c1">this</span>-&gt;<span class="pl-smi">network</span>-&gt;<span class="pl-c1">rmCallback</span>(<span class="pl-c1">CALLBACK_ID_USER_STATUS</span>, settings-&gt;<span class="pl-c1">get_local_steam_id</span>(), &amp;Steam_Friends::steam_friends_callback, <span class="pl-c1">this</span>);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC187" class="react-file-line html-div" data-testid="code-cell" data-line-number="187" style="position:relative">	<span class="pl-c1">this</span>-&gt;<span class="pl-smi">run_every_runcb</span>-&gt;<span class="pl-c1">remove</span>(&amp;Steam_Friends::steam_friends_run_every_runcb, <span class="pl-c1">this</span>);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC188" class="react-file-line html-div" data-testid="code-cell" data-line-number="188" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC189" class="react-file-line html-div" data-testid="code-cell" data-line-number="189" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC190" class="react-file-line html-div" data-testid="code-cell" data-line-number="190" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC191" class="react-file-line html-div" data-testid="code-cell" data-line-number="191" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> returns the local players name - guaranteed to not be NULL.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC192" class="react-file-line html-div" data-testid="code-cell" data-line-number="192" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> this is the same name as on the users community profile page</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC193" class="react-file-line html-div" data-testid="code-cell" data-line-number="193" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> this is stored in UTF-8 format</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC194" class="react-file-line html-div" data-testid="code-cell" data-line-number="194" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> like all the other interface functions that return a char *, it&#039;s important that this pointer is not saved</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC195" class="react-file-line html-div" data-testid="code-cell" data-line-number="195" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> off; it will eventually be free&#039;d or re-allocated</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC196" class="react-file-line html-div" data-testid="code-cell" data-line-number="196" style="position:relative"><span class="pl-k">const</span> <span class="pl-k">char</span>* <span class="pl-en">Steam_Friends::GetPersonaName</span>()</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC197" class="react-file-line html-div" data-testid="code-cell" data-line-number="197" style="position:relative">{</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC198" class="react-file-line html-div" data-testid="code-cell" data-line-number="198" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_ENTRY</span>();</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC199" class="react-file-line html-div" data-testid="code-cell" data-line-number="199" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC200" class="react-file-line html-div" data-testid="code-cell" data-line-number="200" style="position:relative">    <span class="pl-k">const</span> <span class="pl-k">char</span> *local_name = settings-&gt;<span class="pl-c1">get_local_name</span>();</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC201" class="react-file-line html-div" data-testid="code-cell" data-line-number="201" style="position:relative">    </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC202" class="react-file-line html-div" data-testid="code-cell" data-line-number="202" style="position:relative">    <span class="pl-k">return</span> local_name;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC203" class="react-file-line html-div" data-testid="code-cell" data-line-number="203" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC204" class="react-file-line html-div" data-testid="code-cell" data-line-number="204" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC205" class="react-file-line html-div" data-testid="code-cell" data-line-number="205" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Sets the player name, stores it on the server and publishes the changes to all friends who are online.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC206" class="react-file-line html-div" data-testid="code-cell" data-line-number="206" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Changes take place locally immediately, and a PersonaStateChange_t is posted, presuming success.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC207" class="react-file-line html-div" data-testid="code-cell" data-line-number="207" style="position:relative"><span class="pl-c"><span class="pl-c">//</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC208" class="react-file-line html-div" data-testid="code-cell" data-line-number="208" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> The final results are available through the return value SteamAPICall_t, using SetPersonaNameResponse_t.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC209" class="react-file-line html-div" data-testid="code-cell" data-line-number="209" style="position:relative"><span class="pl-c"><span class="pl-c">//</span></span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC210" class="react-file-line html-div" data-testid="code-cell" data-line-number="210" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> If the name change fails to happen on the server, then an additional global PersonaStateChange_t will be posted</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC211" class="react-file-line html-div" data-testid="code-cell" data-line-number="211" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> to change the name back, in addition to the SetPersonaNameResponse_t callback.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC212" class="react-file-line html-div" data-testid="code-cell" data-line-number="212" style="position:relative"><span class="pl-c1">STEAM_CALL_RESULT</span>( SetPersonaNameResponse_t )</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC213" class="react-file-line html-div" data-testid="code-cell" data-line-number="213" style="position:relative">SteamAPICall_t <span class="pl-en">Steam_Friends::SetPersonaName</span>( <span class="pl-k">const</span> <span class="pl-k">char</span> *pchPersonaName )</div></div></div><div class="child-of-line-212  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC214" class="react-file-line html-div" data-testid="code-cell" data-line-number="214" style="position:relative">{</div></div></div><div class="child-of-line-212  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC215" class="react-file-line html-div" data-testid="code-cell" data-line-number="215" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_ENTRY</span>();</div></div></div><div class="child-of-line-212  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC216" class="react-file-line html-div" data-testid="code-cell" data-line-number="216" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-212  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC217" class="react-file-line html-div" data-testid="code-cell" data-line-number="217" style="position:relative">    </div></div></div><div class="child-of-line-212  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC218" class="react-file-line html-div" data-testid="code-cell" data-line-number="218" style="position:relative">    <span class="pl-c"><span class="pl-c">//</span> send PersonaStateChange_t callbacks</span></div></div></div><div class="child-of-line-212  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC219" class="react-file-line html-div" data-testid="code-cell" data-line-number="219" style="position:relative">    <span class="pl-c1">persona_change</span>(settings-&gt;<span class="pl-c1">get_local_steam_id</span>(), EPersonaChange::k_EPersonaChangeName);</div></div></div><div class="child-of-line-212  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC220" class="react-file-line html-div" data-testid="code-cell" data-line-number="220" style="position:relative">
</div></div></div><div class="child-of-line-212  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC221" class="react-file-line html-div" data-testid="code-cell" data-line-number="221" style="position:relative">    SetPersonaNameResponse_t data{};</div></div></div><div class="child-of-line-212  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC222" class="react-file-line html-div" data-testid="code-cell" data-line-number="222" style="position:relative">    data.<span class="pl-smi">m_bSuccess</span> = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-212  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC223" class="react-file-line html-div" data-testid="code-cell" data-line-number="223" style="position:relative">    data.<span class="pl-smi">m_bLocalSuccess</span> = <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-212  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC224" class="react-file-line html-div" data-testid="code-cell" data-line-number="224" style="position:relative">    data.<span class="pl-smi">m_result</span> = k_EResultOK;</div></div></div><div class="child-of-line-212  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC225" class="react-file-line html-div" data-testid="code-cell" data-line-number="225" style="position:relative">
</div></div></div><div class="child-of-line-212  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC226" class="react-file-line html-div" data-testid="code-cell" data-line-number="226" style="position:relative">    <span class="pl-k">auto</span> ret = callback_results-&gt;<span class="pl-c1">addCallResult</span>(data.<span class="pl-smi">k_iCallback</span>, &amp;data, <span class="pl-k">sizeof</span>(data));</div></div></div><div class="child-of-line-212  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC227" class="react-file-line html-div" data-testid="code-cell" data-line-number="227" style="position:relative">    callbacks-&gt;<span class="pl-c1">addCBResult</span>(data.<span class="pl-smi">k_iCallback</span>, &amp;data, <span class="pl-k">sizeof</span>(data));</div></div></div><div class="child-of-line-212  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC228" class="react-file-line html-div" data-testid="code-cell" data-line-number="228" style="position:relative">    <span class="pl-k">return</span> ret;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC229" class="react-file-line html-div" data-testid="code-cell" data-line-number="229" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC230" class="react-file-line html-div" data-testid="code-cell" data-line-number="230" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC231" class="react-file-line html-div" data-testid="code-cell" data-line-number="231" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::SetPersonaName_old</span>( <span class="pl-k">const</span> <span class="pl-k">char</span> *pchPersonaName )</div></div></div><div class="child-of-line-230  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC232" class="react-file-line html-div" data-testid="code-cell" data-line-number="232" style="position:relative">{</div></div></div><div class="child-of-line-230  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC233" class="react-file-line html-div" data-testid="code-cell" data-line-number="233" style="position:relative">	<span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>old<span class="pl-pds">&quot;</span></span>);</div></div></div><div class="child-of-line-230  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC234" class="react-file-line html-div" data-testid="code-cell" data-line-number="234" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-230  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC235" class="react-file-line html-div" data-testid="code-cell" data-line-number="235" style="position:relative">	<span class="pl-c1">SetPersonaName</span>(pchPersonaName);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC236" class="react-file-line html-div" data-testid="code-cell" data-line-number="236" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC237" class="react-file-line html-div" data-testid="code-cell" data-line-number="237" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC238" class="react-file-line html-div" data-testid="code-cell" data-line-number="238" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> gets the status of the current user</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC239" class="react-file-line html-div" data-testid="code-cell" data-line-number="239" style="position:relative">EPersonaState <span class="pl-en">Steam_Friends::GetPersonaState</span>()</div></div></div><div class="child-of-line-238  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC240" class="react-file-line html-div" data-testid="code-cell" data-line-number="240" style="position:relative">{</div></div></div><div class="child-of-line-238  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC241" class="react-file-line html-div" data-testid="code-cell" data-line-number="241" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_ENTRY</span>();</div></div></div><div class="child-of-line-238  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC242" class="react-file-line html-div" data-testid="code-cell" data-line-number="242" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-238  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC243" class="react-file-line html-div" data-testid="code-cell" data-line-number="243" style="position:relative">    <span class="pl-k">return</span> k_EPersonaStateOnline;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC244" class="react-file-line html-div" data-testid="code-cell" data-line-number="244" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC245" class="react-file-line html-div" data-testid="code-cell" data-line-number="245" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC246" class="react-file-line html-div" data-testid="code-cell" data-line-number="246" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::SetPersonaState</span>(EPersonaState ePersonaState)</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC247" class="react-file-line html-div" data-testid="code-cell" data-line-number="247" style="position:relative">{</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC248" class="react-file-line html-div" data-testid="code-cell" data-line-number="248" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC249" class="react-file-line html-div" data-testid="code-cell" data-line-number="249" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC250" class="react-file-line html-div" data-testid="code-cell" data-line-number="250" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC251" class="react-file-line html-div" data-testid="code-cell" data-line-number="251" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">Steam_Friends::AddFriend</span>(CSteamID steamIDFriend)</div></div></div><div class="child-of-line-250  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC252" class="react-file-line html-div" data-testid="code-cell" data-line-number="252" style="position:relative">{</div></div></div><div class="child-of-line-250  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC253" class="react-file-line html-div" data-testid="code-cell" data-line-number="253" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-250  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC254" class="react-file-line html-div" data-testid="code-cell" data-line-number="254" style="position:relative">    <span class="pl-k">if</span> (steamIDFriend == k_steamIDNil)</div></div></div><div class="child-of-line-250  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC255" class="react-file-line html-div" data-testid="code-cell" data-line-number="255" style="position:relative">        <span class="pl-k">return</span> <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-250  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC256" class="react-file-line html-div" data-testid="code-cell" data-line-number="256" style="position:relative">    <span class="pl-c"><span class="pl-c">//</span> TODO</span></div></div></div><div class="child-of-line-250  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC257" class="react-file-line html-div" data-testid="code-cell" data-line-number="257" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">true</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC258" class="react-file-line html-div" data-testid="code-cell" data-line-number="258" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC259" class="react-file-line html-div" data-testid="code-cell" data-line-number="259" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC260" class="react-file-line html-div" data-testid="code-cell" data-line-number="260" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">Steam_Friends::RemoveFriend</span>(CSteamID steamIDFriend)</div></div></div><div class="child-of-line-259  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC261" class="react-file-line html-div" data-testid="code-cell" data-line-number="261" style="position:relative">{</div></div></div><div class="child-of-line-259  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC262" class="react-file-line html-div" data-testid="code-cell" data-line-number="262" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-259  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC263" class="react-file-line html-div" data-testid="code-cell" data-line-number="263" style="position:relative">    <span class="pl-k">if</span> (steamIDFriend == k_steamIDNil)</div></div></div><div class="child-of-line-259  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC264" class="react-file-line html-div" data-testid="code-cell" data-line-number="264" style="position:relative">        <span class="pl-k">return</span> <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-259  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC265" class="react-file-line html-div" data-testid="code-cell" data-line-number="265" style="position:relative">    <span class="pl-c"><span class="pl-c">//</span> TODO</span></div></div></div><div class="child-of-line-259  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC266" class="react-file-line html-div" data-testid="code-cell" data-line-number="266" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">true</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC267" class="react-file-line html-div" data-testid="code-cell" data-line-number="267" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC268" class="react-file-line html-div" data-testid="code-cell" data-line-number="268" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC269" class="react-file-line html-div" data-testid="code-cell" data-line-number="269" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">Steam_Friends::HasFriend</span>(CSteamID steamIDFriend)</div></div></div><div class="child-of-line-268  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC270" class="react-file-line html-div" data-testid="code-cell" data-line-number="270" style="position:relative">{</div></div></div><div class="child-of-line-268  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC271" class="react-file-line html-div" data-testid="code-cell" data-line-number="271" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>sdk 0.99u<span class="pl-pds">&quot;</span></span>);</div></div></div><div class="child-of-line-268  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC272" class="react-file-line html-div" data-testid="code-cell" data-line-number="272" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">HasFriend</span>(steamIDFriend, (<span class="pl-k">int</span>)k_EFriendFlagImmediate);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC273" class="react-file-line html-div" data-testid="code-cell" data-line-number="273" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC274" class="react-file-line html-div" data-testid="code-cell" data-line-number="274" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC275" class="react-file-line html-div" data-testid="code-cell" data-line-number="275" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC276" class="react-file-line html-div" data-testid="code-cell" data-line-number="276" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> friend iteration</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC277" class="react-file-line html-div" data-testid="code-cell" data-line-number="277" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> takes a set of k_EFriendFlags, and returns the number of users the client knows about who meet that criteria</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC278" class="react-file-line html-div" data-testid="code-cell" data-line-number="278" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> then GetFriendByIndex() can then be used to return the id&#039;s of each of those users</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC279" class="react-file-line html-div" data-testid="code-cell" data-line-number="279" style="position:relative"><span class="pl-k">int</span> <span class="pl-en">Steam_Friends::GetFriendCount</span>( <span class="pl-k">int</span> iFriendFlags )</div></div></div><div class="child-of-line-278  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC280" class="react-file-line html-div" data-testid="code-cell" data-line-number="280" style="position:relative">{</div></div></div><div class="child-of-line-278  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC281" class="react-file-line html-div" data-testid="code-cell" data-line-number="281" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>%i<span class="pl-pds">&quot;</span></span>, iFriendFlags);</div></div></div><div class="child-of-line-278  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC282" class="react-file-line html-div" data-testid="code-cell" data-line-number="282" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-278  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC283" class="react-file-line html-div" data-testid="code-cell" data-line-number="283" style="position:relative">    <span class="pl-k">int</span> count = <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-278  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC284" class="react-file-line html-div" data-testid="code-cell" data-line-number="284" style="position:relative">    <span class="pl-k">if</span> (<span class="pl-c1">ok_friend_flags</span>(iFriendFlags)) count = <span class="pl-k">static_cast</span>&lt;<span class="pl-k">int</span>&gt;(friends.<span class="pl-c1">size</span>());</div></div></div><div class="child-of-line-278  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC285" class="react-file-line html-div" data-testid="code-cell" data-line-number="285" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>count %i<span class="pl-pds">&quot;</span></span>, count);</div></div></div><div class="child-of-line-278  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC286" class="react-file-line html-div" data-testid="code-cell" data-line-number="286" style="position:relative">    <span class="pl-k">return</span> count;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC287" class="react-file-line html-div" data-testid="code-cell" data-line-number="287" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC288" class="react-file-line html-div" data-testid="code-cell" data-line-number="288" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC289" class="react-file-line html-div" data-testid="code-cell" data-line-number="289" style="position:relative"><span class="pl-k">int</span> <span class="pl-en">Steam_Friends::GetFriendCount</span>( EFriendFlags eFriendFlags )</div></div></div><div class="child-of-line-288  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC290" class="react-file-line html-div" data-testid="code-cell" data-line-number="290" style="position:relative">{</div></div></div><div class="child-of-line-288  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC291" class="react-file-line html-div" data-testid="code-cell" data-line-number="291" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>old<span class="pl-pds">&quot;</span></span>);</div></div></div><div class="child-of-line-288  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC292" class="react-file-line html-div" data-testid="code-cell" data-line-number="292" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-288  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC293" class="react-file-line html-div" data-testid="code-cell" data-line-number="293" style="position:relative">	<span class="pl-k">return</span> <span class="pl-c1">GetFriendCount</span>((<span class="pl-k">int</span>)eFriendFlags);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC294" class="react-file-line html-div" data-testid="code-cell" data-line-number="294" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC295" class="react-file-line html-div" data-testid="code-cell" data-line-number="295" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC296" class="react-file-line html-div" data-testid="code-cell" data-line-number="296" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> returns the steamID of a user</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC297" class="react-file-line html-div" data-testid="code-cell" data-line-number="297" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> iFriend is a index of range [0, GetFriendCount())</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC298" class="react-file-line html-div" data-testid="code-cell" data-line-number="298" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> iFriendsFlags must be the same value as used in GetFriendCount()</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC299" class="react-file-line html-div" data-testid="code-cell" data-line-number="299" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> the returned CSteamID can then be used by all the functions below to access details about the user</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC300" class="react-file-line html-div" data-testid="code-cell" data-line-number="300" style="position:relative">CSteamID <span class="pl-en">Steam_Friends::GetFriendByIndex</span>( <span class="pl-k">int</span> iFriend, <span class="pl-k">int</span> iFriendFlags )</div></div></div><div class="child-of-line-299  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC301" class="react-file-line html-div" data-testid="code-cell" data-line-number="301" style="position:relative">{</div></div></div><div class="child-of-line-299  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC302" class="react-file-line html-div" data-testid="code-cell" data-line-number="302" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_ENTRY</span>();</div></div></div><div class="child-of-line-299  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC303" class="react-file-line html-div" data-testid="code-cell" data-line-number="303" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-299  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC304" class="react-file-line html-div" data-testid="code-cell" data-line-number="304" style="position:relative">    CSteamID id = k_steamIDNil;</div></div></div><div class="child-of-line-299  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC305" class="react-file-line html-div" data-testid="code-cell" data-line-number="305" style="position:relative">    <span class="pl-k">if</span> (<span class="pl-c1">ok_friend_flags</span>(iFriendFlags)) {</div></div></div><div class="child-of-line-299  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC306" class="react-file-line html-div" data-testid="code-cell" data-line-number="306" style="position:relative">        <span class="pl-k">if</span> (iFriend &gt;= <span class="pl-c1">0</span> &amp;&amp; <span class="pl-k">static_cast</span>&lt;<span class="pl-c1">size_t</span>&gt;(iFriend) &lt; friends.<span class="pl-c1">size</span>()) {</div></div></div><div class="child-of-line-299  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC307" class="react-file-line html-div" data-testid="code-cell" data-line-number="307" style="position:relative">            id = <span class="pl-c1">CSteamID</span>((uint64)friends[iFriend].<span class="pl-c1">id</span>());</div></div></div><div class="child-of-line-299  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC308" class="react-file-line html-div" data-testid="code-cell" data-line-number="308" style="position:relative">        }</div></div></div><div class="child-of-line-299  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC309" class="react-file-line html-div" data-testid="code-cell" data-line-number="309" style="position:relative">    }</div></div></div><div class="child-of-line-299  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC310" class="react-file-line html-div" data-testid="code-cell" data-line-number="310" style="position:relative">    </div></div></div><div class="child-of-line-299  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC311" class="react-file-line html-div" data-testid="code-cell" data-line-number="311" style="position:relative">    <span class="pl-k">return</span> id;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC312" class="react-file-line html-div" data-testid="code-cell" data-line-number="312" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC313" class="react-file-line html-div" data-testid="code-cell" data-line-number="313" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC314" class="react-file-line html-div" data-testid="code-cell" data-line-number="314" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::GetFriendByIndex</span>(CSteamID&amp; res, <span class="pl-k">int</span> iFriend, <span class="pl-k">int</span> iFriendFlags )</div></div></div><div class="child-of-line-313  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC315" class="react-file-line html-div" data-testid="code-cell" data-line-number="315" style="position:relative">{</div></div></div><div class="child-of-line-313  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC316" class="react-file-line html-div" data-testid="code-cell" data-line-number="316" style="position:relative">	<span class="pl-c1">PRINT_DEBUG_GNU_WIN</span>();</div></div></div><div class="child-of-line-313  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC317" class="react-file-line html-div" data-testid="code-cell" data-line-number="317" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-313  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC318" class="react-file-line html-div" data-testid="code-cell" data-line-number="318" style="position:relative">	res = <span class="pl-c1">GetFriendByIndex</span>(iFriend, iFriendFlags );</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC319" class="react-file-line html-div" data-testid="code-cell" data-line-number="319" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC320" class="react-file-line html-div" data-testid="code-cell" data-line-number="320" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC321" class="react-file-line html-div" data-testid="code-cell" data-line-number="321" style="position:relative">CSteamID <span class="pl-en">Steam_Friends::GetFriendByIndex</span>( <span class="pl-k">int</span> iFriend, EFriendFlags eFriendFlags )</div></div></div><div class="child-of-line-320  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC322" class="react-file-line html-div" data-testid="code-cell" data-line-number="322" style="position:relative">{</div></div></div><div class="child-of-line-320  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC323" class="react-file-line html-div" data-testid="code-cell" data-line-number="323" style="position:relative">	<span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>old<span class="pl-pds">&quot;</span></span>);</div></div></div><div class="child-of-line-320  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC324" class="react-file-line html-div" data-testid="code-cell" data-line-number="324" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-320  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC325" class="react-file-line html-div" data-testid="code-cell" data-line-number="325" style="position:relative">	<span class="pl-k">return</span> <span class="pl-c1">GetFriendByIndex</span>(iFriend, (<span class="pl-k">int</span>)eFriendFlags );</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC326" class="react-file-line html-div" data-testid="code-cell" data-line-number="326" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC327" class="react-file-line html-div" data-testid="code-cell" data-line-number="327" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC328" class="react-file-line html-div" data-testid="code-cell" data-line-number="328" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC329" class="react-file-line html-div" data-testid="code-cell" data-line-number="329" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::GetFriendByIndex</span>(CSteamID&amp; result, <span class="pl-k">int</span> iFriend, EFriendFlags eFriendFlags)</div></div></div><div class="child-of-line-328  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC330" class="react-file-line html-div" data-testid="code-cell" data-line-number="330" style="position:relative">{</div></div></div><div class="child-of-line-328  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC331" class="react-file-line html-div" data-testid="code-cell" data-line-number="331" style="position:relative">	<span class="pl-c1">PRINT_DEBUG_GNU_WIN</span>();</div></div></div><div class="child-of-line-328  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC332" class="react-file-line html-div" data-testid="code-cell" data-line-number="332" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-328  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC333" class="react-file-line html-div" data-testid="code-cell" data-line-number="333" style="position:relative">	result = <span class="pl-c1">GetFriendByIndex</span>(iFriend, eFriendFlags );</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC334" class="react-file-line html-div" data-testid="code-cell" data-line-number="334" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC335" class="react-file-line html-div" data-testid="code-cell" data-line-number="335" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC336" class="react-file-line html-div" data-testid="code-cell" data-line-number="336" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC337" class="react-file-line html-div" data-testid="code-cell" data-line-number="337" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> returns a relationship to a user</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC338" class="react-file-line html-div" data-testid="code-cell" data-line-number="338" style="position:relative">EFriendRelationship <span class="pl-en">Steam_Friends::GetFriendRelationship</span>( CSteamID steamIDFriend )</div></div></div><div class="child-of-line-337  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC339" class="react-file-line html-div" data-testid="code-cell" data-line-number="339" style="position:relative">{</div></div></div><div class="child-of-line-337  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC340" class="react-file-line html-div" data-testid="code-cell" data-line-number="340" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>%llu<span class="pl-pds">&quot;</span></span>, steamIDFriend.<span class="pl-c1">ConvertToUint64</span>());</div></div></div><div class="child-of-line-337  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC341" class="react-file-line html-div" data-testid="code-cell" data-line-number="341" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-337  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC342" class="react-file-line html-div" data-testid="code-cell" data-line-number="342" style="position:relative">    <span class="pl-k">if</span> (steamIDFriend == settings-&gt;<span class="pl-c1">get_local_steam_id</span>()) <span class="pl-k">return</span> k_EFriendRelationshipNone; <span class="pl-c"><span class="pl-c">//</span>Real steam behavior</span></div></div></div><div class="child-of-line-337  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC343" class="react-file-line html-div" data-testid="code-cell" data-line-number="343" style="position:relative">    <span class="pl-k">if</span> (<span class="pl-c1">find_friend</span>(steamIDFriend)) <span class="pl-k">return</span> k_EFriendRelationshipFriend;</div></div></div><div class="child-of-line-337  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC344" class="react-file-line html-div" data-testid="code-cell" data-line-number="344" style="position:relative">
</div></div></div><div class="child-of-line-337  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC345" class="react-file-line html-div" data-testid="code-cell" data-line-number="345" style="position:relative">    <span class="pl-k">return</span> k_EFriendRelationshipNone;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC346" class="react-file-line html-div" data-testid="code-cell" data-line-number="346" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC347" class="react-file-line html-div" data-testid="code-cell" data-line-number="347" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC348" class="react-file-line html-div" data-testid="code-cell" data-line-number="348" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC349" class="react-file-line html-div" data-testid="code-cell" data-line-number="349" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> returns the current status of the specified user</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC350" class="react-file-line html-div" data-testid="code-cell" data-line-number="350" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> this will only be known by the local user if steamIDFriend is in their friends list; on the same game server; in a chat room or lobby; or in a small group with the local user</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC351" class="react-file-line html-div" data-testid="code-cell" data-line-number="351" style="position:relative">EPersonaState <span class="pl-en">Steam_Friends::GetFriendPersonaState</span>( CSteamID steamIDFriend )</div></div></div><div class="child-of-line-350  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC352" class="react-file-line html-div" data-testid="code-cell" data-line-number="352" style="position:relative">{</div></div></div><div class="child-of-line-350  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC353" class="react-file-line html-div" data-testid="code-cell" data-line-number="353" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>%llu<span class="pl-pds">&quot;</span></span>, steamIDFriend.<span class="pl-c1">ConvertToUint64</span>());</div></div></div><div class="child-of-line-350  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC354" class="react-file-line html-div" data-testid="code-cell" data-line-number="354" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-350  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC355" class="react-file-line html-div" data-testid="code-cell" data-line-number="355" style="position:relative">    EPersonaState state = k_EPersonaStateOffline;</div></div></div><div class="child-of-line-350  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC356" class="react-file-line html-div" data-testid="code-cell" data-line-number="356" style="position:relative">    <span class="pl-k">if</span> (steamIDFriend == settings-&gt;<span class="pl-c1">get_local_steam_id</span>() || <span class="pl-c1">find_friend</span>(steamIDFriend)) {</div></div></div><div class="child-of-line-350  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC357" class="react-file-line html-div" data-testid="code-cell" data-line-number="357" style="position:relative">        state = k_EPersonaStateOnline;</div></div></div><div class="child-of-line-350  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC358" class="react-file-line html-div" data-testid="code-cell" data-line-number="358" style="position:relative">    }</div></div></div><div class="child-of-line-350  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC359" class="react-file-line html-div" data-testid="code-cell" data-line-number="359" style="position:relative">
</div></div></div><div class="child-of-line-350  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC360" class="react-file-line html-div" data-testid="code-cell" data-line-number="360" style="position:relative">    <span class="pl-c"><span class="pl-c">//</span>works because all of those who could be in a lobby are our friends</span></div></div></div><div class="child-of-line-350  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC361" class="react-file-line html-div" data-testid="code-cell" data-line-number="361" style="position:relative">    <span class="pl-k">return</span> state;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC362" class="react-file-line html-div" data-testid="code-cell" data-line-number="362" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC363" class="react-file-line html-div" data-testid="code-cell" data-line-number="363" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC364" class="react-file-line html-div" data-testid="code-cell" data-line-number="364" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">Steam_Friends::Deprecated_GetFriendGamePlayed</span>(CSteamID steamIDFriend, int32 *pnGameID, uint32 *punGameIP, uint16 *pusGamePort)</div></div></div><div class="child-of-line-363  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC365" class="react-file-line html-div" data-testid="code-cell" data-line-number="365" style="position:relative">{</div></div></div><div class="child-of-line-363  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC366" class="react-file-line html-div" data-testid="code-cell" data-line-number="366" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_ENTRY</span>();</div></div></div><div class="child-of-line-363  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC367" class="react-file-line html-div" data-testid="code-cell" data-line-number="367" style="position:relative">    <span class="pl-c"><span class="pl-c">//</span> TODO: real steam seems not to fill memory pointed by pnGameID</span></div></div></div><div class="child-of-line-363  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC368" class="react-file-line html-div" data-testid="code-cell" data-line-number="368" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">GetFriendGamePlayed</span>(steamIDFriend, <span class="pl-c1">NULL</span>, punGameIP, pusGamePort, <span class="pl-c1">NULL</span>);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC369" class="react-file-line html-div" data-testid="code-cell" data-line-number="369" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC370" class="react-file-line html-div" data-testid="code-cell" data-line-number="370" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC371" class="react-file-line html-div" data-testid="code-cell" data-line-number="371" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC372" class="react-file-line html-div" data-testid="code-cell" data-line-number="372" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> returns the name another user - guaranteed to not be NULL.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC373" class="react-file-line html-div" data-testid="code-cell" data-line-number="373" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> same rules as GetFriendPersonaState() apply as to whether or not the user knowns the name of the other user</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC374" class="react-file-line html-div" data-testid="code-cell" data-line-number="374" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> note that on first joining a lobby, chat room or game server the local user will not known the name of the other users automatically; that information will arrive asyncronously</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC375" class="react-file-line html-div" data-testid="code-cell" data-line-number="375" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> </span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC376" class="react-file-line html-div" data-testid="code-cell" data-line-number="376" style="position:relative"><span class="pl-k">const</span> <span class="pl-k">char</span>* <span class="pl-en">Steam_Friends::GetFriendPersonaName</span>( CSteamID steamIDFriend )</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC377" class="react-file-line html-div" data-testid="code-cell" data-line-number="377" style="position:relative">{</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC378" class="react-file-line html-div" data-testid="code-cell" data-line-number="378" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>%llu<span class="pl-pds">&quot;</span></span>, steamIDFriend.<span class="pl-c1">ConvertToUint64</span>());</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC379" class="react-file-line html-div" data-testid="code-cell" data-line-number="379" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC380" class="react-file-line html-div" data-testid="code-cell" data-line-number="380" style="position:relative">    <span class="pl-k">const</span> <span class="pl-k">char</span> *name = <span class="pl-s"><span class="pl-pds">&quot;</span>Unknown User<span class="pl-pds">&quot;</span></span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC381" class="react-file-line html-div" data-testid="code-cell" data-line-number="381" style="position:relative">    <span class="pl-k">if</span> (steamIDFriend == settings-&gt;<span class="pl-c1">get_local_steam_id</span>()) {</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC382" class="react-file-line html-div" data-testid="code-cell" data-line-number="382" style="position:relative">        name = settings-&gt;<span class="pl-c1">get_local_name</span>();</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC383" class="react-file-line html-div" data-testid="code-cell" data-line-number="383" style="position:relative">    } <span class="pl-k">else</span> {</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC384" class="react-file-line html-div" data-testid="code-cell" data-line-number="384" style="position:relative">        Friend *f = <span class="pl-c1">find_friend</span>(steamIDFriend);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC385" class="react-file-line html-div" data-testid="code-cell" data-line-number="385" style="position:relative">        <span class="pl-k">if</span> (f) name = f-&gt;<span class="pl-c1">name</span>().<span class="pl-c1">c_str</span>();</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC386" class="react-file-line html-div" data-testid="code-cell" data-line-number="386" style="position:relative">    }</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC387" class="react-file-line html-div" data-testid="code-cell" data-line-number="387" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC388" class="react-file-line html-div" data-testid="code-cell" data-line-number="388" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>returned &#039;%s&#039;<span class="pl-pds">&quot;</span></span>, name);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC389" class="react-file-line html-div" data-testid="code-cell" data-line-number="389" style="position:relative">    <span class="pl-k">return</span> name;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC390" class="react-file-line html-div" data-testid="code-cell" data-line-number="390" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC391" class="react-file-line html-div" data-testid="code-cell" data-line-number="391" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC392" class="react-file-line html-div" data-testid="code-cell" data-line-number="392" style="position:relative">int32 <span class="pl-en">Steam_Friends::AddFriendByName</span>(<span class="pl-k">const</span> <span class="pl-k">char</span> *pchEmailOrAccountName)</div></div></div><div class="child-of-line-391  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC393" class="react-file-line html-div" data-testid="code-cell" data-line-number="393" style="position:relative">{</div></div></div><div class="child-of-line-391  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC394" class="react-file-line html-div" data-testid="code-cell" data-line-number="394" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-391  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC395" class="react-file-line html-div" data-testid="code-cell" data-line-number="395" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">0</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC396" class="react-file-line html-div" data-testid="code-cell" data-line-number="396" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC397" class="react-file-line html-div" data-testid="code-cell" data-line-number="397" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC398" class="react-file-line html-div" data-testid="code-cell" data-line-number="398" style="position:relative"><span class="pl-k">int</span> <span class="pl-en">Steam_Friends::GetFriendCount</span>()</div></div></div><div class="child-of-line-397  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC399" class="react-file-line html-div" data-testid="code-cell" data-line-number="399" style="position:relative">{</div></div></div><div class="child-of-line-397  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC400" class="react-file-line html-div" data-testid="code-cell" data-line-number="400" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>sdk 0.99u<span class="pl-pds">&quot;</span></span>);</div></div></div><div class="child-of-line-397  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC401" class="react-file-line html-div" data-testid="code-cell" data-line-number="401" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">GetFriendCount</span>((<span class="pl-k">int</span>)k_EFriendFlagImmediate);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC402" class="react-file-line html-div" data-testid="code-cell" data-line-number="402" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC403" class="react-file-line html-div" data-testid="code-cell" data-line-number="403" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC404" class="react-file-line html-div" data-testid="code-cell" data-line-number="404" style="position:relative">CSteamID <span class="pl-en">Steam_Friends::GetFriendByIndex</span>(<span class="pl-k">int</span> iFriend)</div></div></div><div class="child-of-line-403  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC405" class="react-file-line html-div" data-testid="code-cell" data-line-number="405" style="position:relative">{</div></div></div><div class="child-of-line-403  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC406" class="react-file-line html-div" data-testid="code-cell" data-line-number="406" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>sdk 0.99u<span class="pl-pds">&quot;</span></span>);</div></div></div><div class="child-of-line-403  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC407" class="react-file-line html-div" data-testid="code-cell" data-line-number="407" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">GetFriendByIndex</span>(iFriend, (<span class="pl-k">int</span>)k_EFriendFlagImmediate);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC408" class="react-file-line html-div" data-testid="code-cell" data-line-number="408" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC409" class="react-file-line html-div" data-testid="code-cell" data-line-number="409" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC410" class="react-file-line html-div" data-testid="code-cell" data-line-number="410" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::SendMsgToFriend</span>(CSteamID steamIDFriend, EChatEntryType eChatEntryType, <span class="pl-k">const</span> <span class="pl-k">char</span> *pchMsgBody)</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC411" class="react-file-line html-div" data-testid="code-cell" data-line-number="411" style="position:relative">{</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC412" class="react-file-line html-div" data-testid="code-cell" data-line-number="412" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC413" class="react-file-line html-div" data-testid="code-cell" data-line-number="413" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC414" class="react-file-line html-div" data-testid="code-cell" data-line-number="414" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC415" class="react-file-line html-div" data-testid="code-cell" data-line-number="415" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::SetFriendRegValue</span>(CSteamID steamIDFriend, <span class="pl-k">const</span> <span class="pl-k">char</span> *pchKey, <span class="pl-k">const</span> <span class="pl-k">char</span> *pchValue)</div></div></div><div class="child-of-line-414  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC416" class="react-file-line html-div" data-testid="code-cell" data-line-number="416" style="position:relative">{</div></div></div><div class="child-of-line-414  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC417" class="react-file-line html-div" data-testid="code-cell" data-line-number="417" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-414  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC418" class="react-file-line html-div" data-testid="code-cell" data-line-number="418" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-414  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC419" class="react-file-line html-div" data-testid="code-cell" data-line-number="419" style="position:relative">    <span class="pl-k">if</span> (!pchValue)</div></div></div><div class="child-of-line-414  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC420" class="react-file-line html-div" data-testid="code-cell" data-line-number="420" style="position:relative">        <span class="pl-k">return</span>; <span class="pl-c"><span class="pl-c">//</span> real steam crashes though</span></div></div></div><div class="child-of-line-414  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC421" class="react-file-line html-div" data-testid="code-cell" data-line-number="421" style="position:relative">
</div></div></div><div class="child-of-line-414  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC422" class="react-file-line html-div" data-testid="code-cell" data-line-number="422" style="position:relative">    <span class="pl-k">if</span> (!pchKey || !pchKey[<span class="pl-c1">0</span>]) <span class="pl-c"><span class="pl-c">//</span> tested on real steam</span></div></div></div><div class="child-of-line-414  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC423" class="react-file-line html-div" data-testid="code-cell" data-line-number="423" style="position:relative">    {</div></div></div><div class="child-of-line-414  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC424" class="react-file-line html-div" data-testid="code-cell" data-line-number="424" style="position:relative">        reg.<span class="pl-c1">clear</span>();</div></div></div><div class="child-of-line-414  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC425" class="react-file-line html-div" data-testid="code-cell" data-line-number="425" style="position:relative">        reg_nullptr = <span class="pl-c1">std::string</span>(pchValue);</div></div></div><div class="child-of-line-414  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC426" class="react-file-line html-div" data-testid="code-cell" data-line-number="426" style="position:relative">    }</div></div></div><div class="child-of-line-414  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC427" class="react-file-line html-div" data-testid="code-cell" data-line-number="427" style="position:relative">    <span class="pl-k">else</span></div></div></div><div class="child-of-line-414  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC428" class="react-file-line html-div" data-testid="code-cell" data-line-number="428" style="position:relative">    {</div></div></div><div class="child-of-line-414  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC429" class="react-file-line html-div" data-testid="code-cell" data-line-number="429" style="position:relative">        reg[<span class="pl-c1">std::string</span>(pchKey)] = <span class="pl-c1">std::string</span>(pchValue);</div></div></div><div class="child-of-line-414  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC430" class="react-file-line html-div" data-testid="code-cell" data-line-number="430" style="position:relative">        <span class="pl-c"><span class="pl-c">//</span> TODO: save it to disk, because real steam can get the string when app restarts</span></div></div></div><div class="child-of-line-414  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC431" class="react-file-line html-div" data-testid="code-cell" data-line-number="431" style="position:relative">    }</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC432" class="react-file-line html-div" data-testid="code-cell" data-line-number="432" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC433" class="react-file-line html-div" data-testid="code-cell" data-line-number="433" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC434" class="react-file-line html-div" data-testid="code-cell" data-line-number="434" style="position:relative"><span class="pl-k">const</span> <span class="pl-k">char</span> *<span class="pl-en">Steam_Friends::GetFriendRegValue</span>(CSteamID steamIDFriend, <span class="pl-k">const</span> <span class="pl-k">char</span> *pchKey)</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC435" class="react-file-line html-div" data-testid="code-cell" data-line-number="435" style="position:relative">{</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC436" class="react-file-line html-div" data-testid="code-cell" data-line-number="436" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC437" class="react-file-line html-div" data-testid="code-cell" data-line-number="437" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC438" class="react-file-line html-div" data-testid="code-cell" data-line-number="438" style="position:relative">    <span class="pl-c"><span class="pl-c">//</span> TODO: load data from disk, because real steam can get the string when app restarts</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC439" class="react-file-line html-div" data-testid="code-cell" data-line-number="439" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC440" class="react-file-line html-div" data-testid="code-cell" data-line-number="440" style="position:relative">    <span class="pl-k">if</span> (!pchKey || !pchKey[<span class="pl-c1">0</span>])</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC441" class="react-file-line html-div" data-testid="code-cell" data-line-number="441" style="position:relative">    {</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC442" class="react-file-line html-div" data-testid="code-cell" data-line-number="442" style="position:relative">        <span class="pl-k">return</span> reg_nullptr.<span class="pl-c1">c_str</span>();</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC443" class="react-file-line html-div" data-testid="code-cell" data-line-number="443" style="position:relative">    }</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC444" class="react-file-line html-div" data-testid="code-cell" data-line-number="444" style="position:relative">    <span class="pl-k">else</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC445" class="react-file-line html-div" data-testid="code-cell" data-line-number="445" style="position:relative">    {</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC446" class="react-file-line html-div" data-testid="code-cell" data-line-number="446" style="position:relative">        <span class="pl-k">auto</span> it = reg.<span class="pl-c1">find</span>(<span class="pl-c1">std::string</span>(pchKey));</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC447" class="react-file-line html-div" data-testid="code-cell" data-line-number="447" style="position:relative">        <span class="pl-k">if</span> (it == reg.<span class="pl-c1">end</span>())</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC448" class="react-file-line html-div" data-testid="code-cell" data-line-number="448" style="position:relative">            <span class="pl-k">return</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC449" class="react-file-line html-div" data-testid="code-cell" data-line-number="449" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC450" class="react-file-line html-div" data-testid="code-cell" data-line-number="450" style="position:relative">        <span class="pl-k">return</span> it-&gt;<span class="pl-smi">second</span>.<span class="pl-c1">c_str</span>();</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC451" class="react-file-line html-div" data-testid="code-cell" data-line-number="451" style="position:relative">    }</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC452" class="react-file-line html-div" data-testid="code-cell" data-line-number="452" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC453" class="react-file-line html-div" data-testid="code-cell" data-line-number="453" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC454" class="react-file-line html-div" data-testid="code-cell" data-line-number="454" style="position:relative"><span class="pl-k">int</span> <span class="pl-en">Steam_Friends::GetChatMessage</span>(CSteamID steamIDFriend, <span class="pl-k">int</span> iChatID, <span class="pl-k">void</span> *pvData, <span class="pl-k">int</span> cubData, EChatEntryType *peChatEntryType)</div></div></div><div class="child-of-line-453  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC455" class="react-file-line html-div" data-testid="code-cell" data-line-number="455" style="position:relative">{</div></div></div><div class="child-of-line-453  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC456" class="react-file-line html-div" data-testid="code-cell" data-line-number="456" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-453  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC457" class="react-file-line html-div" data-testid="code-cell" data-line-number="457" style="position:relative">    <span class="pl-k">if</span> (peChatEntryType)</div></div></div><div class="child-of-line-453  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC458" class="react-file-line html-div" data-testid="code-cell" data-line-number="458" style="position:relative">        *peChatEntryType = k_EChatEntryTypeInvalid;</div></div></div><div class="child-of-line-453  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC459" class="react-file-line html-div" data-testid="code-cell" data-line-number="459" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">0</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC460" class="react-file-line html-div" data-testid="code-cell" data-line-number="460" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC461" class="react-file-line html-div" data-testid="code-cell" data-line-number="461" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC462" class="react-file-line html-div" data-testid="code-cell" data-line-number="462" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">Steam_Friends::SendMsgToFriend</span>(CSteamID steamIDFriend, EChatEntryType eChatEntryType, <span class="pl-k">const</span> <span class="pl-k">void</span> *pvMsgBody, <span class="pl-k">int</span> cubMsgBody)</div></div></div><div class="child-of-line-461  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC463" class="react-file-line html-div" data-testid="code-cell" data-line-number="463" style="position:relative">{</div></div></div><div class="child-of-line-461  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC464" class="react-file-line html-div" data-testid="code-cell" data-line-number="464" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-461  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC465" class="react-file-line html-div" data-testid="code-cell" data-line-number="465" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">true</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC466" class="react-file-line html-div" data-testid="code-cell" data-line-number="466" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC467" class="react-file-line html-div" data-testid="code-cell" data-line-number="467" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC468" class="react-file-line html-div" data-testid="code-cell" data-line-number="468" style="position:relative"><span class="pl-k">int</span> <span class="pl-en">Steam_Friends::GetChatIDOfChatHistoryStart</span>(CSteamID steamIDFriend)</div></div></div><div class="child-of-line-467  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC469" class="react-file-line html-div" data-testid="code-cell" data-line-number="469" style="position:relative">{</div></div></div><div class="child-of-line-467  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC470" class="react-file-line html-div" data-testid="code-cell" data-line-number="470" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-467  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC471" class="react-file-line html-div" data-testid="code-cell" data-line-number="471" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">0</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC472" class="react-file-line html-div" data-testid="code-cell" data-line-number="472" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC473" class="react-file-line html-div" data-testid="code-cell" data-line-number="473" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC474" class="react-file-line html-div" data-testid="code-cell" data-line-number="474" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::SetChatHistoryStart</span>(CSteamID steamIDFriend, <span class="pl-k">int</span> iChatID)</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC475" class="react-file-line html-div" data-testid="code-cell" data-line-number="475" style="position:relative">{</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC476" class="react-file-line html-div" data-testid="code-cell" data-line-number="476" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC477" class="react-file-line html-div" data-testid="code-cell" data-line-number="477" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC478" class="react-file-line html-div" data-testid="code-cell" data-line-number="478" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC479" class="react-file-line html-div" data-testid="code-cell" data-line-number="479" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::ClearChatHistory</span>(CSteamID steamIDFriend)</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC480" class="react-file-line html-div" data-testid="code-cell" data-line-number="480" style="position:relative">{</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC481" class="react-file-line html-div" data-testid="code-cell" data-line-number="481" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC482" class="react-file-line html-div" data-testid="code-cell" data-line-number="482" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC483" class="react-file-line html-div" data-testid="code-cell" data-line-number="483" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC484" class="react-file-line html-div" data-testid="code-cell" data-line-number="484" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">Steam_Friends::InviteFriendByEmail</span>(<span class="pl-k">const</span> <span class="pl-k">char</span> *pchEmailAccount)</div></div></div><div class="child-of-line-483  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC485" class="react-file-line html-div" data-testid="code-cell" data-line-number="485" style="position:relative">{</div></div></div><div class="child-of-line-483  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC486" class="react-file-line html-div" data-testid="code-cell" data-line-number="486" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-483  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC487" class="react-file-line html-div" data-testid="code-cell" data-line-number="487" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">false</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC488" class="react-file-line html-div" data-testid="code-cell" data-line-number="488" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC489" class="react-file-line html-div" data-testid="code-cell" data-line-number="489" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC490" class="react-file-line html-div" data-testid="code-cell" data-line-number="490" style="position:relative"><span class="pl-k">int</span> <span class="pl-en">Steam_Friends::GetBlockedFriendCount</span>()</div></div></div><div class="child-of-line-489  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC491" class="react-file-line html-div" data-testid="code-cell" data-line-number="491" style="position:relative">{</div></div></div><div class="child-of-line-489  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC492" class="react-file-line html-div" data-testid="code-cell" data-line-number="492" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_ENTRY</span>();</div></div></div><div class="child-of-line-489  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC493" class="react-file-line html-div" data-testid="code-cell" data-line-number="493" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">GetFriendCount</span>((<span class="pl-k">int</span>)k_EFriendFlagBlocked);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC494" class="react-file-line html-div" data-testid="code-cell" data-line-number="494" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC495" class="react-file-line html-div" data-testid="code-cell" data-line-number="495" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC496" class="react-file-line html-div" data-testid="code-cell" data-line-number="496" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">Steam_Friends::GetFriendGamePlayed</span>(CSteamID steamIDFriend, uint64 *pulGameID, uint32 *punGameIP, uint16 *pusGamePort)</div></div></div><div class="child-of-line-495  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC497" class="react-file-line html-div" data-testid="code-cell" data-line-number="497" style="position:relative">{</div></div></div><div class="child-of-line-495  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC498" class="react-file-line html-div" data-testid="code-cell" data-line-number="498" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>sdk 0.99u<span class="pl-pds">&quot;</span></span>);</div></div></div><div class="child-of-line-495  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC499" class="react-file-line html-div" data-testid="code-cell" data-line-number="499" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">GetFriendGamePlayed</span>(steamIDFriend, pulGameID, punGameIP, pusGamePort, <span class="pl-c1">NULL</span>);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC500" class="react-file-line html-div" data-testid="code-cell" data-line-number="500" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC501" class="react-file-line html-div" data-testid="code-cell" data-line-number="501" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC502" class="react-file-line html-div" data-testid="code-cell" data-line-number="502" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">Steam_Friends::GetFriendGamePlayed2</span>(CSteamID steamIDFriend, uint64 *pulGameID, uint32 *punGameIP, uint16 *pusGamePort, uint16 *pusQueryPort)</div></div></div><div class="child-of-line-501  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC503" class="react-file-line html-div" data-testid="code-cell" data-line-number="503" style="position:relative">{</div></div></div><div class="child-of-line-501  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC504" class="react-file-line html-div" data-testid="code-cell" data-line-number="504" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_ENTRY</span>();</div></div></div><div class="child-of-line-501  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC505" class="react-file-line html-div" data-testid="code-cell" data-line-number="505" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">GetFriendGamePlayed</span>(steamIDFriend, pulGameID, punGameIP, pusGamePort, pusQueryPort);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC506" class="react-file-line html-div" data-testid="code-cell" data-line-number="506" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC507" class="react-file-line html-div" data-testid="code-cell" data-line-number="507" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC508" class="react-file-line html-div" data-testid="code-cell" data-line-number="508" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC509" class="react-file-line html-div" data-testid="code-cell" data-line-number="509" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> returns true if the friend is actually in a game, and fills in pFriendGameInfo with an extra details </span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC510" class="react-file-line html-div" data-testid="code-cell" data-line-number="510" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">Steam_Friends::GetFriendGamePlayed</span>( CSteamID steamIDFriend, <span class="pl-c1">STEAM_OUT_STRUCT</span>() FriendGameInfo_t *pFriendGameInfo )</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC511" class="react-file-line html-div" data-testid="code-cell" data-line-number="511" style="position:relative">{</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC512" class="react-file-line html-div" data-testid="code-cell" data-line-number="512" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>%llu %p<span class="pl-pds">&quot;</span></span>, steamIDFriend.<span class="pl-c1">ConvertToUint64</span>(), pFriendGameInfo);</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC513" class="react-file-line html-div" data-testid="code-cell" data-line-number="513" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC514" class="react-file-line html-div" data-testid="code-cell" data-line-number="514" style="position:relative">    <span class="pl-k">bool</span> ret = <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC515" class="react-file-line html-div" data-testid="code-cell" data-line-number="515" style="position:relative">
</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC516" class="react-file-line html-div" data-testid="code-cell" data-line-number="516" style="position:relative">    <span class="pl-k">if</span> (steamIDFriend == settings-&gt;<span class="pl-c1">get_local_steam_id</span>()) {</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC517" class="react-file-line html-div" data-testid="code-cell" data-line-number="517" style="position:relative">        <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>found myself! %llu %llu<span class="pl-pds">&quot;</span></span>, settings-&gt;<span class="pl-c1">get_local_game_id</span>().<span class="pl-c1">ToUint64</span>(), settings-&gt;<span class="pl-c1">get_lobby</span>().<span class="pl-c1">ConvertToUint64</span>());</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC518" class="react-file-line html-div" data-testid="code-cell" data-line-number="518" style="position:relative">        <span class="pl-k">if</span> (pFriendGameInfo) {</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC519" class="react-file-line html-div" data-testid="code-cell" data-line-number="519" style="position:relative">            pFriendGameInfo-&gt;<span class="pl-smi">m_gameID</span> = settings-&gt;<span class="pl-c1">get_local_game_id</span>();</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC520" class="react-file-line html-div" data-testid="code-cell" data-line-number="520" style="position:relative">            pFriendGameInfo-&gt;<span class="pl-smi">m_unGameIP</span> = <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC521" class="react-file-line html-div" data-testid="code-cell" data-line-number="521" style="position:relative">            pFriendGameInfo-&gt;<span class="pl-smi">m_usGamePort</span> = <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC522" class="react-file-line html-div" data-testid="code-cell" data-line-number="522" style="position:relative">            pFriendGameInfo-&gt;<span class="pl-smi">m_usQueryPort</span> = <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC523" class="react-file-line html-div" data-testid="code-cell" data-line-number="523" style="position:relative">            pFriendGameInfo-&gt;<span class="pl-smi">m_steamIDLobby</span> = settings-&gt;<span class="pl-c1">get_lobby</span>();</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC524" class="react-file-line html-div" data-testid="code-cell" data-line-number="524" style="position:relative">        }</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC525" class="react-file-line html-div" data-testid="code-cell" data-line-number="525" style="position:relative">
</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC526" class="react-file-line html-div" data-testid="code-cell" data-line-number="526" style="position:relative">        ret = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC527" class="react-file-line html-div" data-testid="code-cell" data-line-number="527" style="position:relative">    } <span class="pl-k">else</span> {</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC528" class="react-file-line html-div" data-testid="code-cell" data-line-number="528" style="position:relative">        Friend *f = <span class="pl-c1">find_friend</span>(steamIDFriend);</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC529" class="react-file-line html-div" data-testid="code-cell" data-line-number="529" style="position:relative">        <span class="pl-k">if</span> (f) {</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC530" class="react-file-line html-div" data-testid="code-cell" data-line-number="530" style="position:relative">            <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>found someone %u <span class="pl-pds">&quot;</span></span> <span class="pl-s"><span class="pl-pds">&quot;</span>%<span class="pl-pds">&quot;</span></span> PRIu64 <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span>, f-&gt;<span class="pl-c1">appid</span>(), f-&gt;<span class="pl-c1">lobby_id</span>());</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC531" class="react-file-line html-div" data-testid="code-cell" data-line-number="531" style="position:relative">            <span class="pl-k">if</span> (pFriendGameInfo) {</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC532" class="react-file-line html-div" data-testid="code-cell" data-line-number="532" style="position:relative">                pFriendGameInfo-&gt;<span class="pl-smi">m_gameID</span> = <span class="pl-c1">CGameID</span>(f-&gt;<span class="pl-c1">appid</span>());</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC533" class="react-file-line html-div" data-testid="code-cell" data-line-number="533" style="position:relative">                pFriendGameInfo-&gt;<span class="pl-smi">m_unGameIP</span> = <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC534" class="react-file-line html-div" data-testid="code-cell" data-line-number="534" style="position:relative">                pFriendGameInfo-&gt;<span class="pl-smi">m_usGamePort</span> = <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC535" class="react-file-line html-div" data-testid="code-cell" data-line-number="535" style="position:relative">                pFriendGameInfo-&gt;<span class="pl-smi">m_usQueryPort</span> = <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC536" class="react-file-line html-div" data-testid="code-cell" data-line-number="536" style="position:relative">                pFriendGameInfo-&gt;<span class="pl-smi">m_steamIDLobby</span> = <span class="pl-c1">CSteamID</span>((uint64)f-&gt;<span class="pl-c1">lobby_id</span>());</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC537" class="react-file-line html-div" data-testid="code-cell" data-line-number="537" style="position:relative">            }</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC538" class="react-file-line html-div" data-testid="code-cell" data-line-number="538" style="position:relative">
</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC539" class="react-file-line html-div" data-testid="code-cell" data-line-number="539" style="position:relative">            ret = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC540" class="react-file-line html-div" data-testid="code-cell" data-line-number="540" style="position:relative">        }</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC541" class="react-file-line html-div" data-testid="code-cell" data-line-number="541" style="position:relative">    }</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC542" class="react-file-line html-div" data-testid="code-cell" data-line-number="542" style="position:relative">
</div></div></div><div class="child-of-line-509  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC543" class="react-file-line html-div" data-testid="code-cell" data-line-number="543" style="position:relative">    <span class="pl-k">return</span> ret;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC544" class="react-file-line html-div" data-testid="code-cell" data-line-number="544" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC545" class="react-file-line html-div" data-testid="code-cell" data-line-number="545" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC546" class="react-file-line html-div" data-testid="code-cell" data-line-number="546" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">Steam_Friends::GetFriendGamePlayed</span>( CSteamID steamIDFriend, uint64 *pulGameID, uint32 *punGameIP, uint16 *pusGamePort, uint16 *pusQueryPort )</div></div></div><div class="child-of-line-545  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC547" class="react-file-line html-div" data-testid="code-cell" data-line-number="547" style="position:relative">{</div></div></div><div class="child-of-line-545  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC548" class="react-file-line html-div" data-testid="code-cell" data-line-number="548" style="position:relative">	<span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>old<span class="pl-pds">&quot;</span></span>);</div></div></div><div class="child-of-line-545  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC549" class="react-file-line html-div" data-testid="code-cell" data-line-number="549" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-545  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC550" class="react-file-line html-div" data-testid="code-cell" data-line-number="550" style="position:relative">	FriendGameInfo_t info;</div></div></div><div class="child-of-line-545  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC551" class="react-file-line html-div" data-testid="code-cell" data-line-number="551" style="position:relative">	<span class="pl-k">bool</span> ret = <span class="pl-c1">GetFriendGamePlayed</span>(steamIDFriend, &amp;info);</div></div></div><div class="child-of-line-545  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC552" class="react-file-line html-div" data-testid="code-cell" data-line-number="552" style="position:relative">	<span class="pl-k">if</span> (ret) {</div></div></div><div class="child-of-line-545  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC553" class="react-file-line html-div" data-testid="code-cell" data-line-number="553" style="position:relative">		<span class="pl-k">if</span> (pulGameID) *pulGameID = info.<span class="pl-smi">m_gameID</span>.<span class="pl-c1">ToUint64</span>();</div></div></div><div class="child-of-line-545  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC554" class="react-file-line html-div" data-testid="code-cell" data-line-number="554" style="position:relative">		<span class="pl-k">if</span> (punGameIP) *punGameIP = info.<span class="pl-smi">m_unGameIP</span>;</div></div></div><div class="child-of-line-545  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC555" class="react-file-line html-div" data-testid="code-cell" data-line-number="555" style="position:relative">		<span class="pl-k">if</span> (pusGamePort) *pusGamePort = info.<span class="pl-smi">m_usGamePort</span>;</div></div></div><div class="child-of-line-545  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC556" class="react-file-line html-div" data-testid="code-cell" data-line-number="556" style="position:relative">		<span class="pl-k">if</span> (pusQueryPort) *pusQueryPort = info.<span class="pl-smi">m_usQueryPort</span>;</div></div></div><div class="child-of-line-545  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC557" class="react-file-line html-div" data-testid="code-cell" data-line-number="557" style="position:relative">	}</div></div></div><div class="child-of-line-545  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC558" class="react-file-line html-div" data-testid="code-cell" data-line-number="558" style="position:relative">
</div></div></div><div class="child-of-line-545  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC559" class="react-file-line html-div" data-testid="code-cell" data-line-number="559" style="position:relative">	<span class="pl-k">return</span> ret;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC560" class="react-file-line html-div" data-testid="code-cell" data-line-number="560" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC561" class="react-file-line html-div" data-testid="code-cell" data-line-number="561" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC562" class="react-file-line html-div" data-testid="code-cell" data-line-number="562" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> accesses old friends names - returns an empty string when their are no more items in the history</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC563" class="react-file-line html-div" data-testid="code-cell" data-line-number="563" style="position:relative"><span class="pl-k">const</span> <span class="pl-k">char</span>* <span class="pl-en">Steam_Friends::GetFriendPersonaNameHistory</span>( CSteamID steamIDFriend, <span class="pl-k">int</span> iPersonaName )</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC564" class="react-file-line html-div" data-testid="code-cell" data-line-number="564" style="position:relative">{</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC565" class="react-file-line html-div" data-testid="code-cell" data-line-number="565" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_ENTRY</span>();</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC566" class="react-file-line html-div" data-testid="code-cell" data-line-number="566" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC567" class="react-file-line html-div" data-testid="code-cell" data-line-number="567" style="position:relative">    <span class="pl-k">const</span> <span class="pl-k">char</span> *ret = <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC568" class="react-file-line html-div" data-testid="code-cell" data-line-number="568" style="position:relative">    <span class="pl-k">if</span> (iPersonaName == <span class="pl-c1">0</span>) ret = <span class="pl-c1">GetFriendPersonaName</span>(steamIDFriend);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC569" class="react-file-line html-div" data-testid="code-cell" data-line-number="569" style="position:relative">    <span class="pl-k">else</span> <span class="pl-k">if</span> (iPersonaName == <span class="pl-c1">1</span>) ret = <span class="pl-s"><span class="pl-pds">&quot;</span>Some Old Name<span class="pl-pds">&quot;</span></span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC570" class="react-file-line html-div" data-testid="code-cell" data-line-number="570" style="position:relative">    </div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC571" class="react-file-line html-div" data-testid="code-cell" data-line-number="571" style="position:relative">    <span class="pl-k">return</span> ret;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC572" class="react-file-line html-div" data-testid="code-cell" data-line-number="572" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC573" class="react-file-line html-div" data-testid="code-cell" data-line-number="573" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC574" class="react-file-line html-div" data-testid="code-cell" data-line-number="574" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> friends steam level</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC575" class="react-file-line html-div" data-testid="code-cell" data-line-number="575" style="position:relative"><span class="pl-k">int</span> <span class="pl-en">Steam_Friends::GetFriendSteamLevel</span>( CSteamID steamIDFriend )</div></div></div><div class="child-of-line-574  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC576" class="react-file-line html-div" data-testid="code-cell" data-line-number="576" style="position:relative">{</div></div></div><div class="child-of-line-574  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC577" class="react-file-line html-div" data-testid="code-cell" data-line-number="577" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-574  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC578" class="react-file-line html-div" data-testid="code-cell" data-line-number="578" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-574  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC579" class="react-file-line html-div" data-testid="code-cell" data-line-number="579" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">100</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC580" class="react-file-line html-div" data-testid="code-cell" data-line-number="580" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC581" class="react-file-line html-div" data-testid="code-cell" data-line-number="581" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC582" class="react-file-line html-div" data-testid="code-cell" data-line-number="582" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC583" class="react-file-line html-div" data-testid="code-cell" data-line-number="583" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Returns nickname the current user has set for the specified player. Returns NULL if the no nickname has been set for that player.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC584" class="react-file-line html-div" data-testid="code-cell" data-line-number="584" style="position:relative"><span class="pl-k">const</span> <span class="pl-k">char</span>* <span class="pl-en">Steam_Friends::GetPlayerNickname</span>( CSteamID steamIDPlayer )</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC585" class="react-file-line html-div" data-testid="code-cell" data-line-number="585" style="position:relative">{</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC586" class="react-file-line html-div" data-testid="code-cell" data-line-number="586" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC587" class="react-file-line html-div" data-testid="code-cell" data-line-number="587" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC588" class="react-file-line html-div" data-testid="code-cell" data-line-number="588" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">NULL</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC589" class="react-file-line html-div" data-testid="code-cell" data-line-number="589" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC590" class="react-file-line html-div" data-testid="code-cell" data-line-number="590" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC591" class="react-file-line html-div" data-testid="code-cell" data-line-number="591" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC592" class="react-file-line html-div" data-testid="code-cell" data-line-number="592" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> friend grouping (tag) apis</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC593" class="react-file-line html-div" data-testid="code-cell" data-line-number="593" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> returns the number of friends groups</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC594" class="react-file-line html-div" data-testid="code-cell" data-line-number="594" style="position:relative"><span class="pl-k">int</span> <span class="pl-en">Steam_Friends::GetFriendsGroupCount</span>()</div></div></div><div class="child-of-line-593  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC595" class="react-file-line html-div" data-testid="code-cell" data-line-number="595" style="position:relative">{</div></div></div><div class="child-of-line-593  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC596" class="react-file-line html-div" data-testid="code-cell" data-line-number="596" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-593  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC597" class="react-file-line html-div" data-testid="code-cell" data-line-number="597" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-593  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC598" class="react-file-line html-div" data-testid="code-cell" data-line-number="598" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">0</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC599" class="react-file-line html-div" data-testid="code-cell" data-line-number="599" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC600" class="react-file-line html-div" data-testid="code-cell" data-line-number="600" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC601" class="react-file-line html-div" data-testid="code-cell" data-line-number="601" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> returns the friends group ID for the given index (invalid indices return k_FriendsGroupID_Invalid)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC602" class="react-file-line html-div" data-testid="code-cell" data-line-number="602" style="position:relative">FriendsGroupID_t <span class="pl-en">Steam_Friends::GetFriendsGroupIDByIndex</span>( <span class="pl-k">int</span> iFG )</div></div></div><div class="child-of-line-601  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC603" class="react-file-line html-div" data-testid="code-cell" data-line-number="603" style="position:relative">{</div></div></div><div class="child-of-line-601  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC604" class="react-file-line html-div" data-testid="code-cell" data-line-number="604" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-601  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC605" class="react-file-line html-div" data-testid="code-cell" data-line-number="605" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-601  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC606" class="react-file-line html-div" data-testid="code-cell" data-line-number="606" style="position:relative">    <span class="pl-k">return</span> k_FriendsGroupID_Invalid;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC607" class="react-file-line html-div" data-testid="code-cell" data-line-number="607" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC608" class="react-file-line html-div" data-testid="code-cell" data-line-number="608" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC609" class="react-file-line html-div" data-testid="code-cell" data-line-number="609" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> returns the name for the given friends group (NULL in the case of invalid friends group IDs)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC610" class="react-file-line html-div" data-testid="code-cell" data-line-number="610" style="position:relative"><span class="pl-k">const</span> <span class="pl-k">char</span>* <span class="pl-en">Steam_Friends::GetFriendsGroupName</span>( FriendsGroupID_t friendsGroupID )</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC611" class="react-file-line html-div" data-testid="code-cell" data-line-number="611" style="position:relative">{</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC612" class="react-file-line html-div" data-testid="code-cell" data-line-number="612" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC613" class="react-file-line html-div" data-testid="code-cell" data-line-number="613" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC614" class="react-file-line html-div" data-testid="code-cell" data-line-number="614" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">NULL</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC615" class="react-file-line html-div" data-testid="code-cell" data-line-number="615" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC616" class="react-file-line html-div" data-testid="code-cell" data-line-number="616" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC617" class="react-file-line html-div" data-testid="code-cell" data-line-number="617" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> returns the number of members in a given friends group</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC618" class="react-file-line html-div" data-testid="code-cell" data-line-number="618" style="position:relative"><span class="pl-k">int</span> <span class="pl-en">Steam_Friends::GetFriendsGroupMembersCount</span>( FriendsGroupID_t friendsGroupID )</div></div></div><div class="child-of-line-617  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC619" class="react-file-line html-div" data-testid="code-cell" data-line-number="619" style="position:relative">{</div></div></div><div class="child-of-line-617  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC620" class="react-file-line html-div" data-testid="code-cell" data-line-number="620" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-617  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC621" class="react-file-line html-div" data-testid="code-cell" data-line-number="621" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-617  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC622" class="react-file-line html-div" data-testid="code-cell" data-line-number="622" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">0</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC623" class="react-file-line html-div" data-testid="code-cell" data-line-number="623" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC624" class="react-file-line html-div" data-testid="code-cell" data-line-number="624" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC625" class="react-file-line html-div" data-testid="code-cell" data-line-number="625" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> gets up to nMembersCount members of the given friends group, if fewer exist than requested those positions&#039; SteamIDs will be invalid</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC626" class="react-file-line html-div" data-testid="code-cell" data-line-number="626" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::GetFriendsGroupMembersList</span>( FriendsGroupID_t friendsGroupID, <span class="pl-c1">STEAM_OUT_ARRAY_CALL</span>(nMembersCount, GetFriendsGroupMembersCount, friendsGroupID ) CSteamID *pOutSteamIDMembers, int nMembersCount )</div></div></div><div class="child-of-line-625  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC627" class="react-file-line html-div" data-testid="code-cell" data-line-number="627" style="position:relative">{</div></div></div><div class="child-of-line-625  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC628" class="react-file-line html-div" data-testid="code-cell" data-line-number="628" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-625  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC629" class="react-file-line html-div" data-testid="code-cell" data-line-number="629" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC630" class="react-file-line html-div" data-testid="code-cell" data-line-number="630" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC631" class="react-file-line html-div" data-testid="code-cell" data-line-number="631" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC632" class="react-file-line html-div" data-testid="code-cell" data-line-number="632" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC633" class="react-file-line html-div" data-testid="code-cell" data-line-number="633" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> returns true if the specified user meets any of the criteria specified in iFriendFlags</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC634" class="react-file-line html-div" data-testid="code-cell" data-line-number="634" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> iFriendFlags can be the union (binary or, |) of one or more k_EFriendFlags values</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC635" class="react-file-line html-div" data-testid="code-cell" data-line-number="635" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">Steam_Friends::HasFriend</span>( CSteamID steamIDFriend, <span class="pl-k">int</span> iFriendFlags )</div></div></div><div class="child-of-line-634  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC636" class="react-file-line html-div" data-testid="code-cell" data-line-number="636" style="position:relative">{</div></div></div><div class="child-of-line-634  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC637" class="react-file-line html-div" data-testid="code-cell" data-line-number="637" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_ENTRY</span>();</div></div></div><div class="child-of-line-634  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC638" class="react-file-line html-div" data-testid="code-cell" data-line-number="638" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-634  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC639" class="react-file-line html-div" data-testid="code-cell" data-line-number="639" style="position:relative">    <span class="pl-k">bool</span> ret = <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-634  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC640" class="react-file-line html-div" data-testid="code-cell" data-line-number="640" style="position:relative">    <span class="pl-k">if</span> (<span class="pl-c1">ok_friend_flags</span>(iFriendFlags)) <span class="pl-k">if</span> (<span class="pl-c1">find_friend</span>(steamIDFriend)) ret = <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-634  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC641" class="react-file-line html-div" data-testid="code-cell" data-line-number="641" style="position:relative">    </div></div></div><div class="child-of-line-634  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC642" class="react-file-line html-div" data-testid="code-cell" data-line-number="642" style="position:relative">    <span class="pl-k">return</span> ret;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC643" class="react-file-line html-div" data-testid="code-cell" data-line-number="643" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC644" class="react-file-line html-div" data-testid="code-cell" data-line-number="644" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC645" class="react-file-line html-div" data-testid="code-cell" data-line-number="645" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">Steam_Friends::HasFriend</span>( CSteamID steamIDFriend, EFriendFlags eFriendFlags ) </div></div></div><div class="child-of-line-644  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC646" class="react-file-line html-div" data-testid="code-cell" data-line-number="646" style="position:relative">{</div></div></div><div class="child-of-line-644  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC647" class="react-file-line html-div" data-testid="code-cell" data-line-number="647" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>old<span class="pl-pds">&quot;</span></span>);</div></div></div><div class="child-of-line-644  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC648" class="react-file-line html-div" data-testid="code-cell" data-line-number="648" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-644  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC649" class="react-file-line html-div" data-testid="code-cell" data-line-number="649" style="position:relative">	<span class="pl-k">return</span> <span class="pl-c1">HasFriend</span>(steamIDFriend, (<span class="pl-k">int</span>)eFriendFlags );</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC650" class="react-file-line html-div" data-testid="code-cell" data-line-number="650" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC651" class="react-file-line html-div" data-testid="code-cell" data-line-number="651" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC652" class="react-file-line html-div" data-testid="code-cell" data-line-number="652" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> clan (group) iteration and access functions</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC653" class="react-file-line html-div" data-testid="code-cell" data-line-number="653" style="position:relative"><span class="pl-k">int</span> <span class="pl-en">Steam_Friends::GetClanCount</span>()</div></div></div><div class="child-of-line-652  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC654" class="react-file-line html-div" data-testid="code-cell" data-line-number="654" style="position:relative">{</div></div></div><div class="child-of-line-652  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC655" class="react-file-line html-div" data-testid="code-cell" data-line-number="655" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_ENTRY</span>();</div></div></div><div class="child-of-line-652  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC656" class="react-file-line html-div" data-testid="code-cell" data-line-number="656" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-652  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC657" class="react-file-line html-div" data-testid="code-cell" data-line-number="657" style="position:relative">    <span class="pl-k">int</span> counter = <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-652  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC658" class="react-file-line html-div" data-testid="code-cell" data-line-number="658" style="position:relative">    <span class="pl-k">for</span> (<span class="pl-k">auto</span> &amp;c : settings-&gt;<span class="pl-smi">subscribed_groups_clans</span>) counter++;</div></div></div><div class="child-of-line-652  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC659" class="react-file-line html-div" data-testid="code-cell" data-line-number="659" style="position:relative">    <span class="pl-k">return</span> counter;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC660" class="react-file-line html-div" data-testid="code-cell" data-line-number="660" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC661" class="react-file-line html-div" data-testid="code-cell" data-line-number="661" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC662" class="react-file-line html-div" data-testid="code-cell" data-line-number="662" style="position:relative">CSteamID <span class="pl-en">Steam_Friends::GetClanByIndex</span>( <span class="pl-k">int</span> iClan )</div></div></div><div class="child-of-line-661  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC663" class="react-file-line html-div" data-testid="code-cell" data-line-number="663" style="position:relative">{</div></div></div><div class="child-of-line-661  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC664" class="react-file-line html-div" data-testid="code-cell" data-line-number="664" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_ENTRY</span>();</div></div></div><div class="child-of-line-661  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC665" class="react-file-line html-div" data-testid="code-cell" data-line-number="665" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-661  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC666" class="react-file-line html-div" data-testid="code-cell" data-line-number="666" style="position:relative">    <span class="pl-k">int</span> counter = <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-661  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC667" class="react-file-line html-div" data-testid="code-cell" data-line-number="667" style="position:relative">    <span class="pl-k">for</span> (<span class="pl-k">auto</span> &amp;c : settings-&gt;<span class="pl-smi">subscribed_groups_clans</span>) {</div></div></div><div class="child-of-line-661  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC668" class="react-file-line html-div" data-testid="code-cell" data-line-number="668" style="position:relative">        <span class="pl-k">if</span> (counter == iClan) <span class="pl-k">return</span> c.<span class="pl-smi">id</span>;</div></div></div><div class="child-of-line-661  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC669" class="react-file-line html-div" data-testid="code-cell" data-line-number="669" style="position:relative">        counter++;</div></div></div><div class="child-of-line-661  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC670" class="react-file-line html-div" data-testid="code-cell" data-line-number="670" style="position:relative">    }</div></div></div><div class="child-of-line-661  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC671" class="react-file-line html-div" data-testid="code-cell" data-line-number="671" style="position:relative">    <span class="pl-k">return</span> k_steamIDNil;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC672" class="react-file-line html-div" data-testid="code-cell" data-line-number="672" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC673" class="react-file-line html-div" data-testid="code-cell" data-line-number="673" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC674" class="react-file-line html-div" data-testid="code-cell" data-line-number="674" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::GetClanByIndex</span>( CSteamID&amp; result, <span class="pl-k">int</span> iClan )</div></div></div><div class="child-of-line-673  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC675" class="react-file-line html-div" data-testid="code-cell" data-line-number="675" style="position:relative">{</div></div></div><div class="child-of-line-673  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC676" class="react-file-line html-div" data-testid="code-cell" data-line-number="676" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_GNU_WIN</span>();</div></div></div><div class="child-of-line-673  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC677" class="react-file-line html-div" data-testid="code-cell" data-line-number="677" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-673  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC678" class="react-file-line html-div" data-testid="code-cell" data-line-number="678" style="position:relative">    result = <span class="pl-c1">GetClanByIndex</span>(iClan);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC679" class="react-file-line html-div" data-testid="code-cell" data-line-number="679" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC680" class="react-file-line html-div" data-testid="code-cell" data-line-number="680" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC681" class="react-file-line html-div" data-testid="code-cell" data-line-number="681" style="position:relative"><span class="pl-k">const</span> <span class="pl-k">char</span>* <span class="pl-en">Steam_Friends::GetClanName</span>( CSteamID steamIDClan )</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC682" class="react-file-line html-div" data-testid="code-cell" data-line-number="682" style="position:relative">{</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC683" class="react-file-line html-div" data-testid="code-cell" data-line-number="683" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_ENTRY</span>();</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC684" class="react-file-line html-div" data-testid="code-cell" data-line-number="684" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC685" class="react-file-line html-div" data-testid="code-cell" data-line-number="685" style="position:relative">    <span class="pl-k">for</span> (<span class="pl-k">auto</span> &amp;c : settings-&gt;<span class="pl-smi">subscribed_groups_clans</span>) {</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC686" class="react-file-line html-div" data-testid="code-cell" data-line-number="686" style="position:relative">        <span class="pl-k">if</span> (c.<span class="pl-smi">id</span>.<span class="pl-c1">ConvertToUint64</span>() == steamIDClan.<span class="pl-c1">ConvertToUint64</span>()) <span class="pl-k">return</span> c.<span class="pl-smi">name</span>.<span class="pl-c1">c_str</span>();</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC687" class="react-file-line html-div" data-testid="code-cell" data-line-number="687" style="position:relative">    }</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC688" class="react-file-line html-div" data-testid="code-cell" data-line-number="688" style="position:relative">    <span class="pl-k">return</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC689" class="react-file-line html-div" data-testid="code-cell" data-line-number="689" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC690" class="react-file-line html-div" data-testid="code-cell" data-line-number="690" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC691" class="react-file-line html-div" data-testid="code-cell" data-line-number="691" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">Steam_Friends::InviteFriendToClan</span>(CSteamID steamIDFriend, CSteamID steamIDClan)</div></div></div><div class="child-of-line-690  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC692" class="react-file-line html-div" data-testid="code-cell" data-line-number="692" style="position:relative">{</div></div></div><div class="child-of-line-690  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC693" class="react-file-line html-div" data-testid="code-cell" data-line-number="693" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-690  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC694" class="react-file-line html-div" data-testid="code-cell" data-line-number="694" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">false</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC695" class="react-file-line html-div" data-testid="code-cell" data-line-number="695" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC696" class="react-file-line html-div" data-testid="code-cell" data-line-number="696" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC697" class="react-file-line html-div" data-testid="code-cell" data-line-number="697" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">Steam_Friends::AcknowledgeInviteToClan</span>(CSteamID steamIDClan, <span class="pl-k">bool</span> bAcceptOrDenyClanInvite)</div></div></div><div class="child-of-line-696  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC698" class="react-file-line html-div" data-testid="code-cell" data-line-number="698" style="position:relative">{</div></div></div><div class="child-of-line-696  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC699" class="react-file-line html-div" data-testid="code-cell" data-line-number="699" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-696  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC700" class="react-file-line html-div" data-testid="code-cell" data-line-number="700" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">false</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC701" class="react-file-line html-div" data-testid="code-cell" data-line-number="701" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC702" class="react-file-line html-div" data-testid="code-cell" data-line-number="702" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC703" class="react-file-line html-div" data-testid="code-cell" data-line-number="703" style="position:relative"><span class="pl-k">const</span> <span class="pl-k">char</span>* <span class="pl-en">Steam_Friends::GetClanTag</span>( CSteamID steamIDClan )</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC704" class="react-file-line html-div" data-testid="code-cell" data-line-number="704" style="position:relative">{</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC705" class="react-file-line html-div" data-testid="code-cell" data-line-number="705" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_ENTRY</span>();</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC706" class="react-file-line html-div" data-testid="code-cell" data-line-number="706" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC707" class="react-file-line html-div" data-testid="code-cell" data-line-number="707" style="position:relative">    <span class="pl-k">for</span> (<span class="pl-k">auto</span> &amp;c : settings-&gt;<span class="pl-smi">subscribed_groups_clans</span>) {</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC708" class="react-file-line html-div" data-testid="code-cell" data-line-number="708" style="position:relative">        <span class="pl-k">if</span> (c.<span class="pl-smi">id</span>.<span class="pl-c1">ConvertToUint64</span>() == steamIDClan.<span class="pl-c1">ConvertToUint64</span>()) <span class="pl-k">return</span> c.<span class="pl-smi">tag</span>.<span class="pl-c1">c_str</span>();</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC709" class="react-file-line html-div" data-testid="code-cell" data-line-number="709" style="position:relative">    }</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC710" class="react-file-line html-div" data-testid="code-cell" data-line-number="710" style="position:relative">    <span class="pl-k">return</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC711" class="react-file-line html-div" data-testid="code-cell" data-line-number="711" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC712" class="react-file-line html-div" data-testid="code-cell" data-line-number="712" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC713" class="react-file-line html-div" data-testid="code-cell" data-line-number="713" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> returns the most recent information we have about what&#039;s happening in a clan</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC714" class="react-file-line html-div" data-testid="code-cell" data-line-number="714" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">Steam_Friends::GetClanActivityCounts</span>( CSteamID steamIDClan, <span class="pl-k">int</span> *pnOnline, <span class="pl-k">int</span> *pnInGame, <span class="pl-k">int</span> *pnChatting )</div></div></div><div class="child-of-line-713  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC715" class="react-file-line html-div" data-testid="code-cell" data-line-number="715" style="position:relative">{</div></div></div><div class="child-of-line-713  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC716" class="react-file-line html-div" data-testid="code-cell" data-line-number="716" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>TODO %llu<span class="pl-pds">&quot;</span></span>, steamIDClan.<span class="pl-c1">ConvertToUint64</span>());</div></div></div><div class="child-of-line-713  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC717" class="react-file-line html-div" data-testid="code-cell" data-line-number="717" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-713  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC718" class="react-file-line html-div" data-testid="code-cell" data-line-number="718" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">false</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC719" class="react-file-line html-div" data-testid="code-cell" data-line-number="719" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC720" class="react-file-line html-div" data-testid="code-cell" data-line-number="720" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC721" class="react-file-line html-div" data-testid="code-cell" data-line-number="721" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> for clans a user is a member of, they will have reasonably up-to-date information, but for others you&#039;ll have to download the info to have the latest</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC722" class="react-file-line html-div" data-testid="code-cell" data-line-number="722" style="position:relative">SteamAPICall_t <span class="pl-en">Steam_Friends::DownloadClanActivityCounts</span>( <span class="pl-c1">STEAM_ARRAY_COUNT</span>(cClansToRequest) CSteamID *psteamIDClans, int cClansToRequest )</div></div></div><div class="child-of-line-721  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC723" class="react-file-line html-div" data-testid="code-cell" data-line-number="723" style="position:relative">{</div></div></div><div class="child-of-line-721  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC724" class="react-file-line html-div" data-testid="code-cell" data-line-number="724" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-721  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC725" class="react-file-line html-div" data-testid="code-cell" data-line-number="725" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-721  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC726" class="react-file-line html-div" data-testid="code-cell" data-line-number="726" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">0</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC727" class="react-file-line html-div" data-testid="code-cell" data-line-number="727" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC728" class="react-file-line html-div" data-testid="code-cell" data-line-number="728" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC729" class="react-file-line html-div" data-testid="code-cell" data-line-number="729" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC730" class="react-file-line html-div" data-testid="code-cell" data-line-number="730" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> iterators for getting users in a chat room, lobby, game server or clan</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC731" class="react-file-line html-div" data-testid="code-cell" data-line-number="731" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> note that large clans that cannot be iterated by the local user</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC732" class="react-file-line html-div" data-testid="code-cell" data-line-number="732" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> note that the current user must be in a lobby to retrieve CSteamIDs of other users in that lobby</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC733" class="react-file-line html-div" data-testid="code-cell" data-line-number="733" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> steamIDSource can be the steamID of a group, game server, lobby or chat room</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC734" class="react-file-line html-div" data-testid="code-cell" data-line-number="734" style="position:relative"><span class="pl-k">int</span> <span class="pl-en">Steam_Friends::GetFriendCountFromSource</span>( CSteamID steamIDSource )</div></div></div><div class="child-of-line-733  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC735" class="react-file-line html-div" data-testid="code-cell" data-line-number="735" style="position:relative">{</div></div></div><div class="child-of-line-733  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC736" class="react-file-line html-div" data-testid="code-cell" data-line-number="736" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>TODO %llu<span class="pl-pds">&quot;</span></span>, steamIDSource.<span class="pl-c1">ConvertToUint64</span>());</div></div></div><div class="child-of-line-733  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC737" class="react-file-line html-div" data-testid="code-cell" data-line-number="737" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-733  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC738" class="react-file-line html-div" data-testid="code-cell" data-line-number="738" style="position:relative">    <span class="pl-c"><span class="pl-c">//</span>TODO</span></div></div></div><div class="child-of-line-733  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC739" class="react-file-line html-div" data-testid="code-cell" data-line-number="739" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">0</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC740" class="react-file-line html-div" data-testid="code-cell" data-line-number="740" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC741" class="react-file-line html-div" data-testid="code-cell" data-line-number="741" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC742" class="react-file-line html-div" data-testid="code-cell" data-line-number="742" style="position:relative">CSteamID <span class="pl-en">Steam_Friends::GetFriendFromSourceByIndex</span>( CSteamID steamIDSource, <span class="pl-k">int</span> iFriend )</div></div></div><div class="child-of-line-741  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC743" class="react-file-line html-div" data-testid="code-cell" data-line-number="743" style="position:relative">{</div></div></div><div class="child-of-line-741  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC744" class="react-file-line html-div" data-testid="code-cell" data-line-number="744" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-741  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC745" class="react-file-line html-div" data-testid="code-cell" data-line-number="745" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-741  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC746" class="react-file-line html-div" data-testid="code-cell" data-line-number="746" style="position:relative">    <span class="pl-k">return</span> k_steamIDNil;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC747" class="react-file-line html-div" data-testid="code-cell" data-line-number="747" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC748" class="react-file-line html-div" data-testid="code-cell" data-line-number="748" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC749" class="react-file-line html-div" data-testid="code-cell" data-line-number="749" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::GetFriendFromSourceByIndex</span>( CSteamID&amp; res, CSteamID steamIDSource, <span class="pl-k">int</span> iFriend )</div></div></div><div class="child-of-line-748  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC750" class="react-file-line html-div" data-testid="code-cell" data-line-number="750" style="position:relative">{</div></div></div><div class="child-of-line-748  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC751" class="react-file-line html-div" data-testid="code-cell" data-line-number="751" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_GNU_WIN</span>();</div></div></div><div class="child-of-line-748  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC752" class="react-file-line html-div" data-testid="code-cell" data-line-number="752" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-748  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC753" class="react-file-line html-div" data-testid="code-cell" data-line-number="753" style="position:relative">    res = <span class="pl-c1">GetFriendFromSourceByIndex</span>( steamIDSource, iFriend );</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC754" class="react-file-line html-div" data-testid="code-cell" data-line-number="754" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC755" class="react-file-line html-div" data-testid="code-cell" data-line-number="755" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC756" class="react-file-line html-div" data-testid="code-cell" data-line-number="756" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC757" class="react-file-line html-div" data-testid="code-cell" data-line-number="757" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> returns true if the local user can see that steamIDUser is a member or in steamIDSource</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC758" class="react-file-line html-div" data-testid="code-cell" data-line-number="758" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">Steam_Friends::IsUserInSource</span>( CSteamID steamIDUser, CSteamID steamIDSource )</div></div></div><div class="child-of-line-757  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC759" class="react-file-line html-div" data-testid="code-cell" data-line-number="759" style="position:relative">{</div></div></div><div class="child-of-line-757  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC760" class="react-file-line html-div" data-testid="code-cell" data-line-number="760" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>%llu %llu<span class="pl-pds">&quot;</span></span>, steamIDUser.<span class="pl-c1">ConvertToUint64</span>(), steamIDSource.<span class="pl-c1">ConvertToUint64</span>());</div></div></div><div class="child-of-line-757  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC761" class="react-file-line html-div" data-testid="code-cell" data-line-number="761" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-757  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC762" class="react-file-line html-div" data-testid="code-cell" data-line-number="762" style="position:relative">    <span class="pl-k">if</span> (steamIDUser == settings-&gt;<span class="pl-c1">get_local_steam_id</span>()) {</div></div></div><div class="child-of-line-757  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC763" class="react-file-line html-div" data-testid="code-cell" data-line-number="763" style="position:relative">        <span class="pl-k">if</span> (settings-&gt;<span class="pl-c1">get_lobby</span>() == steamIDSource) {</div></div></div><div class="child-of-line-757  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC764" class="react-file-line html-div" data-testid="code-cell" data-line-number="764" style="position:relative">            <span class="pl-k">return</span> <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-757  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC765" class="react-file-line html-div" data-testid="code-cell" data-line-number="765" style="position:relative">        }</div></div></div><div class="child-of-line-757  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC766" class="react-file-line html-div" data-testid="code-cell" data-line-number="766" style="position:relative">
</div></div></div><div class="child-of-line-757  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC767" class="react-file-line html-div" data-testid="code-cell" data-line-number="767" style="position:relative">        <span class="pl-k">if</span> (settings-&gt;<span class="pl-smi">subscribed_groups</span>.<span class="pl-c1">find</span>(steamIDSource.<span class="pl-c1">ConvertToUint64</span>()) != settings-&gt;<span class="pl-smi">subscribed_groups</span>.<span class="pl-c1">end</span>()) {</div></div></div><div class="child-of-line-757  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC768" class="react-file-line html-div" data-testid="code-cell" data-line-number="768" style="position:relative">            <span class="pl-k">return</span> <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-757  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC769" class="react-file-line html-div" data-testid="code-cell" data-line-number="769" style="position:relative">        }</div></div></div><div class="child-of-line-757  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC770" class="react-file-line html-div" data-testid="code-cell" data-line-number="770" style="position:relative">    } <span class="pl-k">else</span> {</div></div></div><div class="child-of-line-757  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC771" class="react-file-line html-div" data-testid="code-cell" data-line-number="771" style="position:relative">        Friend *f = <span class="pl-c1">find_friend</span>(steamIDUser);</div></div></div><div class="child-of-line-757  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC772" class="react-file-line html-div" data-testid="code-cell" data-line-number="772" style="position:relative">        <span class="pl-k">if</span> (!f) <span class="pl-k">return</span> <span class="pl-c1">false</span>;</div></div></div><div class="child-of-line-757  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC773" class="react-file-line html-div" data-testid="code-cell" data-line-number="773" style="position:relative">        <span class="pl-k">if</span> (f-&gt;<span class="pl-c1">lobby_id</span>() == steamIDSource.<span class="pl-c1">ConvertToUint64</span>()) <span class="pl-k">return</span> <span class="pl-c1">true</span>;</div></div></div><div class="child-of-line-757  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC774" class="react-file-line html-div" data-testid="code-cell" data-line-number="774" style="position:relative">    }</div></div></div><div class="child-of-line-757  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC775" class="react-file-line html-div" data-testid="code-cell" data-line-number="775" style="position:relative">    <span class="pl-c"><span class="pl-c">//</span>TODO</span></div></div></div><div class="child-of-line-757  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC776" class="react-file-line html-div" data-testid="code-cell" data-line-number="776" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">false</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC777" class="react-file-line html-div" data-testid="code-cell" data-line-number="777" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC778" class="react-file-line html-div" data-testid="code-cell" data-line-number="778" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC779" class="react-file-line html-div" data-testid="code-cell" data-line-number="779" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC780" class="react-file-line html-div" data-testid="code-cell" data-line-number="780" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> User is in a game pressing the talk button (will suppress the microphone for all voice comms from the Steam friends UI)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC781" class="react-file-line html-div" data-testid="code-cell" data-line-number="781" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::SetInGameVoiceSpeaking</span>( CSteamID steamIDUser, <span class="pl-k">bool</span> bSpeaking )</div></div></div><div class="child-of-line-780  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC782" class="react-file-line html-div" data-testid="code-cell" data-line-number="782" style="position:relative">{</div></div></div><div class="child-of-line-780  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC783" class="react-file-line html-div" data-testid="code-cell" data-line-number="783" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-780  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC784" class="react-file-line html-div" data-testid="code-cell" data-line-number="784" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC785" class="react-file-line html-div" data-testid="code-cell" data-line-number="785" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC786" class="react-file-line html-div" data-testid="code-cell" data-line-number="786" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC787" class="react-file-line html-div" data-testid="code-cell" data-line-number="787" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC788" class="react-file-line html-div" data-testid="code-cell" data-line-number="788" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> activates the game overlay, with an optional dialog to open </span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC789" class="react-file-line html-div" data-testid="code-cell" data-line-number="789" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> valid options are &quot;Friends&quot;, &quot;Community&quot;, &quot;Players&quot;, &quot;Settings&quot;, &quot;OfficialGameGroup&quot;, &quot;Stats&quot;, &quot;Achievements&quot;, &quot;LobbyInvite&quot;</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC790" class="react-file-line html-div" data-testid="code-cell" data-line-number="790" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::ActivateGameOverlay</span>( <span class="pl-k">const</span> <span class="pl-k">char</span> *pchDialog )</div></div></div><div class="child-of-line-789  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC791" class="react-file-line html-div" data-testid="code-cell" data-line-number="791" style="position:relative">{</div></div></div><div class="child-of-line-789  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC792" class="react-file-line html-div" data-testid="code-cell" data-line-number="792" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>%s<span class="pl-pds">&quot;</span></span>, pchDialog);</div></div></div><div class="child-of-line-789  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC793" class="react-file-line html-div" data-testid="code-cell" data-line-number="793" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-789  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC794" class="react-file-line html-div" data-testid="code-cell" data-line-number="794" style="position:relative">
</div></div></div><div class="child-of-line-789  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC795" class="react-file-line html-div" data-testid="code-cell" data-line-number="795" style="position:relative">    <span class="pl-k">if</span> ((<span class="pl-c1">strncmp</span>(pchDialog, <span class="pl-s"><span class="pl-pds">&quot;</span>LobbyInvite<span class="pl-pds">&quot;</span></span>, <span class="pl-k">sizeof</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>LobbyInvite<span class="pl-pds">&quot;</span></span>) - <span class="pl-c1">1</span>) == <span class="pl-c1">0</span>)) {</div></div></div><div class="child-of-line-789  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC796" class="react-file-line html-div" data-testid="code-cell" data-line-number="796" style="position:relative">        std::string connect_str = <span class="pl-c1">get_friend_rich_presence_silent</span>(settings-&gt;<span class="pl-c1">get_local_steam_id</span>(), <span class="pl-s"><span class="pl-pds">&quot;</span>connect<span class="pl-pds">&quot;</span></span>);</div></div></div><div class="child-of-line-789  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC797" class="react-file-line html-div" data-testid="code-cell" data-line-number="797" style="position:relative">
</div></div></div><div class="child-of-line-789  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC798" class="react-file-line html-div" data-testid="code-cell" data-line-number="798" style="position:relative">        <span class="pl-k">if</span> (connect_str.<span class="pl-c1">length</span>() &gt; <span class="pl-c1">0</span>) {</div></div></div><div class="child-of-line-789  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC799" class="react-file-line html-div" data-testid="code-cell" data-line-number="799" style="position:relative">            <span class="pl-c1">ActivateGameOverlayInviteDialogConnectString</span>(connect_str.<span class="pl-c1">c_str</span>());</div></div></div><div class="child-of-line-789  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC800" class="react-file-line html-div" data-testid="code-cell" data-line-number="800" style="position:relative">        } <span class="pl-k">else</span> <span class="pl-k">if</span> (settings-&gt;<span class="pl-c1">get_lobby</span>().<span class="pl-c1">IsValid</span>()) {</div></div></div><div class="child-of-line-789  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC801" class="react-file-line html-div" data-testid="code-cell" data-line-number="801" style="position:relative">            <span class="pl-c1">ActivateGameOverlayInviteDialog</span>(settings-&gt;<span class="pl-c1">get_lobby</span>());</div></div></div><div class="child-of-line-789  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC802" class="react-file-line html-div" data-testid="code-cell" data-line-number="802" style="position:relative">        }</div></div></div><div class="child-of-line-789  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC803" class="react-file-line html-div" data-testid="code-cell" data-line-number="803" style="position:relative">    } <span class="pl-k">else</span> {</div></div></div><div class="child-of-line-789  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC804" class="react-file-line html-div" data-testid="code-cell" data-line-number="804" style="position:relative">        overlay-&gt;<span class="pl-c1">OpenOverlay</span>(pchDialog);</div></div></div><div class="child-of-line-789  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC805" class="react-file-line html-div" data-testid="code-cell" data-line-number="805" style="position:relative">    }</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC806" class="react-file-line html-div" data-testid="code-cell" data-line-number="806" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC807" class="react-file-line html-div" data-testid="code-cell" data-line-number="807" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC808" class="react-file-line html-div" data-testid="code-cell" data-line-number="808" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC809" class="react-file-line html-div" data-testid="code-cell" data-line-number="809" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> activates game overlay to a specific place</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC810" class="react-file-line html-div" data-testid="code-cell" data-line-number="810" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> valid options are</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC811" class="react-file-line html-div" data-testid="code-cell" data-line-number="811" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>		&quot;steamid&quot; - opens the overlay web browser to the specified user or groups profile</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC812" class="react-file-line html-div" data-testid="code-cell" data-line-number="812" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>		&quot;chat&quot; - opens a chat window to the specified user, or joins the group chat </span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC813" class="react-file-line html-div" data-testid="code-cell" data-line-number="813" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>		&quot;jointrade&quot; - opens a window to a Steam Trading session that was started with the ISteamEconomy/StartTrade Web API</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC814" class="react-file-line html-div" data-testid="code-cell" data-line-number="814" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>		&quot;stats&quot; - opens the overlay web browser to the specified user&#039;s stats</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC815" class="react-file-line html-div" data-testid="code-cell" data-line-number="815" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>		&quot;achievements&quot; - opens the overlay web browser to the specified user&#039;s achievements</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC816" class="react-file-line html-div" data-testid="code-cell" data-line-number="816" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>		&quot;friendadd&quot; - opens the overlay in minimal mode prompting the user to add the target user as a friend</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC817" class="react-file-line html-div" data-testid="code-cell" data-line-number="817" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>		&quot;friendremove&quot; - opens the overlay in minimal mode prompting the user to remove the target friend</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC818" class="react-file-line html-div" data-testid="code-cell" data-line-number="818" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>		&quot;friendrequestaccept&quot; - opens the overlay in minimal mode prompting the user to accept an incoming friend invite</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC819" class="react-file-line html-div" data-testid="code-cell" data-line-number="819" style="position:relative"><span class="pl-c"><span class="pl-c">//</span>		&quot;friendrequestignore&quot; - opens the overlay in minimal mode prompting the user to ignore an incoming friend invite</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC820" class="react-file-line html-div" data-testid="code-cell" data-line-number="820" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::ActivateGameOverlayToUser</span>( <span class="pl-k">const</span> <span class="pl-k">char</span> *pchDialog, CSteamID steamID )</div></div></div><div class="child-of-line-819  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC821" class="react-file-line html-div" data-testid="code-cell" data-line-number="821" style="position:relative">{</div></div></div><div class="child-of-line-819  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC822" class="react-file-line html-div" data-testid="code-cell" data-line-number="822" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>TODO %s %llu<span class="pl-pds">&quot;</span></span>, pchDialog, steamID.<span class="pl-c1">ConvertToUint64</span>());</div></div></div><div class="child-of-line-819  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC823" class="react-file-line html-div" data-testid="code-cell" data-line-number="823" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC824" class="react-file-line html-div" data-testid="code-cell" data-line-number="824" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC825" class="react-file-line html-div" data-testid="code-cell" data-line-number="825" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC826" class="react-file-line html-div" data-testid="code-cell" data-line-number="826" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC827" class="react-file-line html-div" data-testid="code-cell" data-line-number="827" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> activates game overlay web browser directly to the specified URL</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC828" class="react-file-line html-div" data-testid="code-cell" data-line-number="828" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> full address with protocol type is required, e.g. http://www.steamgames.com/</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC829" class="react-file-line html-div" data-testid="code-cell" data-line-number="829" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::ActivateGameOverlayToWebPage</span>( <span class="pl-k">const</span> <span class="pl-k">char</span> *pchURL, EActivateGameOverlayToWebPageMode eMode )</div></div></div><div class="child-of-line-828  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC830" class="react-file-line html-div" data-testid="code-cell" data-line-number="830" style="position:relative">{</div></div></div><div class="child-of-line-828  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC831" class="react-file-line html-div" data-testid="code-cell" data-line-number="831" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>TODO %s %u<span class="pl-pds">&quot;</span></span>, pchURL, eMode);</div></div></div><div class="child-of-line-828  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC832" class="react-file-line html-div" data-testid="code-cell" data-line-number="832" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-828  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC833" class="react-file-line html-div" data-testid="code-cell" data-line-number="833" style="position:relative">    overlay-&gt;<span class="pl-c1">OpenOverlayWebpage</span>(pchURL);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC834" class="react-file-line html-div" data-testid="code-cell" data-line-number="834" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC835" class="react-file-line html-div" data-testid="code-cell" data-line-number="835" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC836" class="react-file-line html-div" data-testid="code-cell" data-line-number="836" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::ActivateGameOverlayToWebPage</span>( <span class="pl-k">const</span> <span class="pl-k">char</span> *pchURL )</div></div></div><div class="child-of-line-835  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC837" class="react-file-line html-div" data-testid="code-cell" data-line-number="837" style="position:relative">{</div></div></div><div class="child-of-line-835  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC838" class="react-file-line html-div" data-testid="code-cell" data-line-number="838" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>old<span class="pl-pds">&quot;</span></span>);</div></div></div><div class="child-of-line-835  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC839" class="react-file-line html-div" data-testid="code-cell" data-line-number="839" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-835  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC840" class="react-file-line html-div" data-testid="code-cell" data-line-number="840" style="position:relative">    <span class="pl-c1">ActivateGameOverlayToWebPage</span>( pchURL, k_EActivateGameOverlayToWebPageMode_Default );</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC841" class="react-file-line html-div" data-testid="code-cell" data-line-number="841" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC842" class="react-file-line html-div" data-testid="code-cell" data-line-number="842" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC843" class="react-file-line html-div" data-testid="code-cell" data-line-number="843" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> activates game overlay to store page for app</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC844" class="react-file-line html-div" data-testid="code-cell" data-line-number="844" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::ActivateGameOverlayToStore</span>( AppId_t nAppID, EOverlayToStoreFlag eFlag )</div></div></div><div class="child-of-line-843  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC845" class="react-file-line html-div" data-testid="code-cell" data-line-number="845" style="position:relative">{</div></div></div><div class="child-of-line-843  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC846" class="react-file-line html-div" data-testid="code-cell" data-line-number="846" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-843  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC847" class="react-file-line html-div" data-testid="code-cell" data-line-number="847" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC848" class="react-file-line html-div" data-testid="code-cell" data-line-number="848" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC849" class="react-file-line html-div" data-testid="code-cell" data-line-number="849" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC850" class="react-file-line html-div" data-testid="code-cell" data-line-number="850" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::ActivateGameOverlayToStore</span>( AppId_t nAppID)</div></div></div><div class="child-of-line-849  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC851" class="react-file-line html-div" data-testid="code-cell" data-line-number="851" style="position:relative">{</div></div></div><div class="child-of-line-849  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC852" class="react-file-line html-div" data-testid="code-cell" data-line-number="852" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>old<span class="pl-pds">&quot;</span></span>);</div></div></div><div class="child-of-line-849  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC853" class="react-file-line html-div" data-testid="code-cell" data-line-number="853" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC854" class="react-file-line html-div" data-testid="code-cell" data-line-number="854" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC855" class="react-file-line html-div" data-testid="code-cell" data-line-number="855" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC856" class="react-file-line html-div" data-testid="code-cell" data-line-number="856" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> Mark a target user as &#039;played with&#039;. This is a client-side only feature that requires that the calling user is </span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC857" class="react-file-line html-div" data-testid="code-cell" data-line-number="857" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> in game </span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC858" class="react-file-line html-div" data-testid="code-cell" data-line-number="858" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::SetPlayedWith</span>( CSteamID steamIDUserPlayedWith )</div></div></div><div class="child-of-line-857  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC859" class="react-file-line html-div" data-testid="code-cell" data-line-number="859" style="position:relative">{</div></div></div><div class="child-of-line-857  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC860" class="react-file-line html-div" data-testid="code-cell" data-line-number="860" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-857  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC861" class="react-file-line html-div" data-testid="code-cell" data-line-number="861" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC862" class="react-file-line html-div" data-testid="code-cell" data-line-number="862" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC863" class="react-file-line html-div" data-testid="code-cell" data-line-number="863" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC864" class="react-file-line html-div" data-testid="code-cell" data-line-number="864" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC865" class="react-file-line html-div" data-testid="code-cell" data-line-number="865" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> activates game overlay to open the invite dialog. Invitations will be sent for the provided lobby.</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC866" class="react-file-line html-div" data-testid="code-cell" data-line-number="866" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::ActivateGameOverlayInviteDialog</span>( CSteamID steamIDLobby )</div></div></div><div class="child-of-line-865  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC867" class="react-file-line html-div" data-testid="code-cell" data-line-number="867" style="position:relative">{</div></div></div><div class="child-of-line-865  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC868" class="react-file-line html-div" data-testid="code-cell" data-line-number="868" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_ENTRY</span>();</div></div></div><div class="child-of-line-865  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC869" class="react-file-line html-div" data-testid="code-cell" data-line-number="869" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-865  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC870" class="react-file-line html-div" data-testid="code-cell" data-line-number="870" style="position:relative">
</div></div></div><div class="child-of-line-865  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC871" class="react-file-line html-div" data-testid="code-cell" data-line-number="871" style="position:relative">    <span class="pl-c"><span class="pl-c">//</span> Invite all friends playing the same game</span></div></div></div><div class="child-of-line-865  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC872" class="react-file-line html-div" data-testid="code-cell" data-line-number="872" style="position:relative">    <span class="pl-k">for</span> (<span class="pl-k">auto</span> &amp;fr : friends) {</div></div></div><div class="child-of-line-865  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC873" class="react-file-line html-div" data-testid="code-cell" data-line-number="873" style="position:relative">        <span class="pl-k">if</span> (settings-&gt;<span class="pl-c1">hasOverlayAutoSendToFriend</span>(fr.<span class="pl-c1">id</span>()) &amp;&amp; <span class="pl-c1">is_appid_compatible</span>(&amp;fr) &amp;&amp; steamIDLobby.<span class="pl-c1">IsValid</span>() &amp;&amp; fr.<span class="pl-c1">lobby_id</span>() != settings-&gt;<span class="pl-c1">get_lobby</span>().<span class="pl-c1">ConvertToUint64</span>()) {</div></div></div><div class="child-of-line-865  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC874" class="react-file-line html-div" data-testid="code-cell" data-line-number="874" style="position:relative">            uint64 friend_id = (uint64)fr.<span class="pl-c1">id</span>();</div></div></div><div class="child-of-line-865  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC875" class="react-file-line html-div" data-testid="code-cell" data-line-number="875" style="position:relative">
</div></div></div><div class="child-of-line-865  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC876" class="react-file-line html-div" data-testid="code-cell" data-line-number="876" style="position:relative">            Steam_Matchmaking* steamMatchmaking = <span class="pl-c1">get_steam_client</span>()-&gt;<span class="pl-smi">steam_matchmaking</span>;</div></div></div><div class="child-of-line-865  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC877" class="react-file-line html-div" data-testid="code-cell" data-line-number="877" style="position:relative">            steamMatchmaking-&gt;<span class="pl-c1">InviteUserToLobby</span>(steamIDLobby, friend_id);</div></div></div><div class="child-of-line-865  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC878" class="react-file-line html-div" data-testid="code-cell" data-line-number="878" style="position:relative">            <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>sent lobby invitation to friend with id = %llu<span class="pl-pds">&quot;</span></span>, friend_id);</div></div></div><div class="child-of-line-865  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC879" class="react-file-line html-div" data-testid="code-cell" data-line-number="879" style="position:relative">        }</div></div></div><div class="child-of-line-865  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC880" class="react-file-line html-div" data-testid="code-cell" data-line-number="880" style="position:relative">    }</div></div></div><div class="child-of-line-865  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC881" class="react-file-line html-div" data-testid="code-cell" data-line-number="881" style="position:relative">
</div></div></div><div class="child-of-line-865  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC882" class="react-file-line html-div" data-testid="code-cell" data-line-number="882" style="position:relative">    overlay-&gt;<span class="pl-c1">OpenOverlayInvite</span>(steamIDLobby);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC883" class="react-file-line html-div" data-testid="code-cell" data-line-number="883" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC884" class="react-file-line html-div" data-testid="code-cell" data-line-number="884" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC885" class="react-file-line html-div" data-testid="code-cell" data-line-number="885" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> gets the small (32x32) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC886" class="react-file-line html-div" data-testid="code-cell" data-line-number="886" style="position:relative"><span class="pl-k">int</span> <span class="pl-en">Steam_Friends::GetSmallFriendAvatar</span>( CSteamID steamIDFriend )</div></div></div><div class="child-of-line-885  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC887" class="react-file-line html-div" data-testid="code-cell" data-line-number="887" style="position:relative">{</div></div></div><div class="child-of-line-885  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC888" class="react-file-line html-div" data-testid="code-cell" data-line-number="888" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_ENTRY</span>();</div></div></div><div class="child-of-line-885  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC889" class="react-file-line html-div" data-testid="code-cell" data-line-number="889" style="position:relative">    <span class="pl-c"><span class="pl-c">//</span>IMPORTANT NOTE: don&#039;t change friend avatar numbers for the same friend or else some games endlessly allocate stuff.</span></div></div></div><div class="child-of-line-885  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC890" class="react-file-line html-div" data-testid="code-cell" data-line-number="890" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-885  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC891" class="react-file-line html-div" data-testid="code-cell" data-line-number="891" style="position:relative">    <span class="pl-k">struct</span> <span class="pl-en">Avatar_Numbers</span> numbers = <span class="pl-c1">add_friend_avatars</span>(steamIDFriend);</div></div></div><div class="child-of-line-885  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC892" class="react-file-line html-div" data-testid="code-cell" data-line-number="892" style="position:relative">    <span class="pl-k">return</span> numbers.<span class="pl-smi">smallest</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC893" class="react-file-line html-div" data-testid="code-cell" data-line-number="893" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC894" class="react-file-line html-div" data-testid="code-cell" data-line-number="894" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC895" class="react-file-line html-div" data-testid="code-cell" data-line-number="895" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC896" class="react-file-line html-div" data-testid="code-cell" data-line-number="896" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> gets the medium (64x64) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC897" class="react-file-line html-div" data-testid="code-cell" data-line-number="897" style="position:relative"><span class="pl-k">int</span> <span class="pl-en">Steam_Friends::GetMediumFriendAvatar</span>( CSteamID steamIDFriend )</div></div></div><div class="child-of-line-896  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC898" class="react-file-line html-div" data-testid="code-cell" data-line-number="898" style="position:relative">{</div></div></div><div class="child-of-line-896  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC899" class="react-file-line html-div" data-testid="code-cell" data-line-number="899" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_ENTRY</span>();</div></div></div><div class="child-of-line-896  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC900" class="react-file-line html-div" data-testid="code-cell" data-line-number="900" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-896  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC901" class="react-file-line html-div" data-testid="code-cell" data-line-number="901" style="position:relative">    <span class="pl-k">struct</span> <span class="pl-en">Avatar_Numbers</span> numbers = <span class="pl-c1">add_friend_avatars</span>(steamIDFriend);</div></div></div><div class="child-of-line-896  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC902" class="react-file-line html-div" data-testid="code-cell" data-line-number="902" style="position:relative">    <span class="pl-k">return</span> numbers.<span class="pl-smi">medium</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC903" class="react-file-line html-div" data-testid="code-cell" data-line-number="903" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC904" class="react-file-line html-div" data-testid="code-cell" data-line-number="904" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC905" class="react-file-line html-div" data-testid="code-cell" data-line-number="905" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC906" class="react-file-line html-div" data-testid="code-cell" data-line-number="906" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> gets the large (184x184) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC907" class="react-file-line html-div" data-testid="code-cell" data-line-number="907" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> returns -1 if this image has yet to be loaded, in this case wait for a AvatarImageLoaded_t callback and then call this again</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC908" class="react-file-line html-div" data-testid="code-cell" data-line-number="908" style="position:relative"><span class="pl-k">int</span> <span class="pl-en">Steam_Friends::GetLargeFriendAvatar</span>( CSteamID steamIDFriend )</div></div></div><div class="child-of-line-907  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC909" class="react-file-line html-div" data-testid="code-cell" data-line-number="909" style="position:relative">{</div></div></div><div class="child-of-line-907  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC910" class="react-file-line html-div" data-testid="code-cell" data-line-number="910" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_ENTRY</span>();</div></div></div><div class="child-of-line-907  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC911" class="react-file-line html-div" data-testid="code-cell" data-line-number="911" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-907  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC912" class="react-file-line html-div" data-testid="code-cell" data-line-number="912" style="position:relative">    <span class="pl-k">struct</span> <span class="pl-en">Avatar_Numbers</span> numbers = <span class="pl-c1">add_friend_avatars</span>(steamIDFriend);</div></div></div><div class="child-of-line-907  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC913" class="react-file-line html-div" data-testid="code-cell" data-line-number="913" style="position:relative">    <span class="pl-k">return</span> numbers.<span class="pl-smi">large</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC914" class="react-file-line html-div" data-testid="code-cell" data-line-number="914" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC915" class="react-file-line html-div" data-testid="code-cell" data-line-number="915" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC916" class="react-file-line html-div" data-testid="code-cell" data-line-number="916" style="position:relative"><span class="pl-k">int</span> <span class="pl-en">Steam_Friends::GetFriendAvatar</span>( CSteamID steamIDFriend, <span class="pl-k">int</span> eAvatarSize )</div></div></div><div class="child-of-line-915  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC917" class="react-file-line html-div" data-testid="code-cell" data-line-number="917" style="position:relative">{</div></div></div><div class="child-of-line-915  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC918" class="react-file-line html-div" data-testid="code-cell" data-line-number="918" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_ENTRY</span>();</div></div></div><div class="child-of-line-915  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC919" class="react-file-line html-div" data-testid="code-cell" data-line-number="919" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-915  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC920" class="react-file-line html-div" data-testid="code-cell" data-line-number="920" style="position:relative">	<span class="pl-k">if</span> (eAvatarSize == k_EAvatarSize32x32) {</div></div></div><div class="child-of-line-915  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC921" class="react-file-line html-div" data-testid="code-cell" data-line-number="921" style="position:relative">		<span class="pl-k">return</span> <span class="pl-c1">GetSmallFriendAvatar</span>(steamIDFriend);</div></div></div><div class="child-of-line-915  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC922" class="react-file-line html-div" data-testid="code-cell" data-line-number="922" style="position:relative">	} <span class="pl-k">else</span> <span class="pl-k">if</span> (eAvatarSize == k_EAvatarSize64x64) {</div></div></div><div class="child-of-line-915  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC923" class="react-file-line html-div" data-testid="code-cell" data-line-number="923" style="position:relative">		<span class="pl-k">return</span> <span class="pl-c1">GetMediumFriendAvatar</span>(steamIDFriend);</div></div></div><div class="child-of-line-915  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC924" class="react-file-line html-div" data-testid="code-cell" data-line-number="924" style="position:relative">	} <span class="pl-k">else</span> <span class="pl-k">if</span> (eAvatarSize == k_EAvatarSize184x184) {</div></div></div><div class="child-of-line-915  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC925" class="react-file-line html-div" data-testid="code-cell" data-line-number="925" style="position:relative">		<span class="pl-k">return</span> <span class="pl-c1">GetLargeFriendAvatar</span>(steamIDFriend);</div></div></div><div class="child-of-line-915  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC926" class="react-file-line html-div" data-testid="code-cell" data-line-number="926" style="position:relative">	} <span class="pl-k">else</span> {</div></div></div><div class="child-of-line-915  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC927" class="react-file-line html-div" data-testid="code-cell" data-line-number="927" style="position:relative">		<span class="pl-k">return</span> <span class="pl-c1">0</span>;</div></div></div><div class="child-of-line-915  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC928" class="react-file-line html-div" data-testid="code-cell" data-line-number="928" style="position:relative">	}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC929" class="react-file-line html-div" data-testid="code-cell" data-line-number="929" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC930" class="react-file-line html-div" data-testid="code-cell" data-line-number="930" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC931" class="react-file-line html-div" data-testid="code-cell" data-line-number="931" style="position:relative"><span class="pl-k">int</span> <span class="pl-en">Steam_Friends::GetFriendAvatar</span>(CSteamID steamIDFriend)</div></div></div><div class="child-of-line-930  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC932" class="react-file-line html-div" data-testid="code-cell" data-line-number="932" style="position:relative">{</div></div></div><div class="child-of-line-930  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC933" class="react-file-line html-div" data-testid="code-cell" data-line-number="933" style="position:relative">    <span class="pl-c1">PRINT_DEBUG</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>old<span class="pl-pds">&quot;</span></span>);</div></div></div><div class="child-of-line-930  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC934" class="react-file-line html-div" data-testid="code-cell" data-line-number="934" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-930  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC935" class="react-file-line html-div" data-testid="code-cell" data-line-number="935" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">GetFriendAvatar</span>(steamIDFriend, k_EAvatarSize32x32);</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC936" class="react-file-line html-div" data-testid="code-cell" data-line-number="936" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC937" class="react-file-line html-div" data-testid="code-cell" data-line-number="937" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC938" class="react-file-line html-div" data-testid="code-cell" data-line-number="938" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> requests information about a user - persona name &amp; avatar</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC939" class="react-file-line html-div" data-testid="code-cell" data-line-number="939" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> if bRequireNameOnly is set, then the avatar of a user isn&#039;t downloaded </span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC940" class="react-file-line html-div" data-testid="code-cell" data-line-number="940" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> - it&#039;s a lot slower to download avatars and churns the local cache, so if you don&#039;t need avatars, don&#039;t request them</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC941" class="react-file-line html-div" data-testid="code-cell" data-line-number="941" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> if returns true, it means that data is being requested, and a PersonaStateChanged_t callback will be posted when it&#039;s retrieved</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC942" class="react-file-line html-div" data-testid="code-cell" data-line-number="942" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> if returns false, it means that we already have all the details about that user, and functions can be called immediately</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC943" class="react-file-line html-div" data-testid="code-cell" data-line-number="943" style="position:relative"><span class="pl-k">bool</span> <span class="pl-en">Steam_Friends::RequestUserInformation</span>( CSteamID steamIDUser, <span class="pl-k">bool</span> bRequireNameOnly )</div></div></div><div class="child-of-line-942  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC944" class="react-file-line html-div" data-testid="code-cell" data-line-number="944" style="position:relative">{</div></div></div><div class="child-of-line-942  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC945" class="react-file-line html-div" data-testid="code-cell" data-line-number="945" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-942  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC946" class="react-file-line html-div" data-testid="code-cell" data-line-number="946" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-942  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC947" class="react-file-line html-div" data-testid="code-cell" data-line-number="947" style="position:relative">    <span class="pl-c"><span class="pl-c">//</span>persona_change(steamIDUser, k_EPersonaChangeName);</span></div></div></div><div class="child-of-line-942  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC948" class="react-file-line html-div" data-testid="code-cell" data-line-number="948" style="position:relative">    <span class="pl-c"><span class="pl-c">//</span>We already know everything</span></div></div></div><div class="child-of-line-942  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC949" class="react-file-line html-div" data-testid="code-cell" data-line-number="949" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">false</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC950" class="react-file-line html-div" data-testid="code-cell" data-line-number="950" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC951" class="react-file-line html-div" data-testid="code-cell" data-line-number="951" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC952" class="react-file-line html-div" data-testid="code-cell" data-line-number="952" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC953" class="react-file-line html-div" data-testid="code-cell" data-line-number="953" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> requests information about a clan officer list</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC954" class="react-file-line html-div" data-testid="code-cell" data-line-number="954" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> when complete, data is returned in ClanOfficerListResponse_t call result</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC955" class="react-file-line html-div" data-testid="code-cell" data-line-number="955" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> this makes available the calls below</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC956" class="react-file-line html-div" data-testid="code-cell" data-line-number="956" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> you can only ask about clans that a user is a member of</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC957" class="react-file-line html-div" data-testid="code-cell" data-line-number="957" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> note that this won&#039;t download avatars automatically; if you get an officer,</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC958" class="react-file-line html-div" data-testid="code-cell" data-line-number="958" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> and no avatar image is available, call RequestUserInformation( steamID, false ) to download the avatar</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC959" class="react-file-line html-div" data-testid="code-cell" data-line-number="959" style="position:relative"><span class="pl-c1">STEAM_CALL_RESULT</span>( ClanOfficerListResponse_t )</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC960" class="react-file-line html-div" data-testid="code-cell" data-line-number="960" style="position:relative">SteamAPICall_t <span class="pl-en">Steam_Friends::RequestClanOfficerList</span>( CSteamID steamIDClan )</div></div></div><div class="child-of-line-959  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC961" class="react-file-line html-div" data-testid="code-cell" data-line-number="961" style="position:relative">{</div></div></div><div class="child-of-line-959  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC962" class="react-file-line html-div" data-testid="code-cell" data-line-number="962" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-959  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC963" class="react-file-line html-div" data-testid="code-cell" data-line-number="963" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-959  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC964" class="react-file-line html-div" data-testid="code-cell" data-line-number="964" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">0</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC965" class="react-file-line html-div" data-testid="code-cell" data-line-number="965" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC966" class="react-file-line html-div" data-testid="code-cell" data-line-number="966" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC967" class="react-file-line html-div" data-testid="code-cell" data-line-number="967" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC968" class="react-file-line html-div" data-testid="code-cell" data-line-number="968" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> iteration of clan officers - can only be done when a RequestClanOfficerList() call has completed</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC969" class="react-file-line html-div" data-testid="code-cell" data-line-number="969" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC970" class="react-file-line html-div" data-testid="code-cell" data-line-number="970" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> returns the steamID of the clan owner</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC971" class="react-file-line html-div" data-testid="code-cell" data-line-number="971" style="position:relative">CSteamID <span class="pl-en">Steam_Friends::GetClanOwner</span>( CSteamID steamIDClan )</div></div></div><div class="child-of-line-970  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC972" class="react-file-line html-div" data-testid="code-cell" data-line-number="972" style="position:relative">{</div></div></div><div class="child-of-line-970  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC973" class="react-file-line html-div" data-testid="code-cell" data-line-number="973" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-970  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC974" class="react-file-line html-div" data-testid="code-cell" data-line-number="974" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-970  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC975" class="react-file-line html-div" data-testid="code-cell" data-line-number="975" style="position:relative">    <span class="pl-k">return</span> k_steamIDNil;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC976" class="react-file-line html-div" data-testid="code-cell" data-line-number="976" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC977" class="react-file-line html-div" data-testid="code-cell" data-line-number="977" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC978" class="react-file-line html-div" data-testid="code-cell" data-line-number="978" style="position:relative"><span class="pl-k">void</span> <span class="pl-en">Steam_Friends::GetClanOwner</span>(CSteamID&amp; res, CSteamID steamIDClan )</div></div></div><div class="child-of-line-977  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC979" class="react-file-line html-div" data-testid="code-cell" data-line-number="979" style="position:relative">{</div></div></div><div class="child-of-line-977  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC980" class="react-file-line html-div" data-testid="code-cell" data-line-number="980" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_GNU_WIN</span>();</div></div></div><div class="child-of-line-977  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC981" class="react-file-line html-div" data-testid="code-cell" data-line-number="981" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-977  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC982" class="react-file-line html-div" data-testid="code-cell" data-line-number="982" style="position:relative">    res = <span class="pl-c1">GetClanOwner</span>( steamIDClan );</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC983" class="react-file-line html-div" data-testid="code-cell" data-line-number="983" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC984" class="react-file-line html-div" data-testid="code-cell" data-line-number="984" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC985" class="react-file-line html-div" data-testid="code-cell" data-line-number="985" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> returns the number of officers in a clan (including the owner)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC986" class="react-file-line html-div" data-testid="code-cell" data-line-number="986" style="position:relative"><span class="pl-k">int</span> <span class="pl-en">Steam_Friends::GetClanOfficerCount</span>( CSteamID steamIDClan )</div></div></div><div class="child-of-line-985  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC987" class="react-file-line html-div" data-testid="code-cell" data-line-number="987" style="position:relative">{</div></div></div><div class="child-of-line-985  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC988" class="react-file-line html-div" data-testid="code-cell" data-line-number="988" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-985  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC989" class="react-file-line html-div" data-testid="code-cell" data-line-number="989" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-985  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC990" class="react-file-line html-div" data-testid="code-cell" data-line-number="990" style="position:relative">    <span class="pl-k">return</span> <span class="pl-c1">0</span>;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC991" class="react-file-line html-div" data-testid="code-cell" data-line-number="991" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC992" class="react-file-line html-div" data-testid="code-cell" data-line-number="992" style="position:relative">
</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC993" class="react-file-line html-div" data-testid="code-cell" data-line-number="993" style="position:relative"><span class="pl-c"><span class="pl-c">//</span> returns the steamID of a clan officer, by index, of range [0,GetClanOfficerCount)</span></div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC994" class="react-file-line html-div" data-testid="code-cell" data-line-number="994" style="position:relative">CSteamID <span class="pl-en">Steam_Friends::GetClanOfficerByIndex</span>( CSteamID steamIDClan, <span class="pl-k">int</span> iOfficer )</div></div></div><div class="child-of-line-993  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC995" class="react-file-line html-div" data-testid="code-cell" data-line-number="995" style="position:relative">{</div></div></div><div class="child-of-line-993  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC996" class="react-file-line html-div" data-testid="code-cell" data-line-number="996" style="position:relative">    <span class="pl-c1">PRINT_DEBUG_TODO</span>();</div></div></div><div class="child-of-line-993  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC997" class="react-file-line html-div" data-testid="code-cell" data-line-number="997" style="position:relative">    std::lock_guard&lt;std::recursive_mutex&gt; <span class="pl-c1">lock</span>(global_mutex);</div></div></div><div class="child-of-line-993  react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC998" class="react-file-line html-div" data-testid="code-cell" data-line-number="998" style="position:relative">    <span class="pl-k">return</span> k_steamIDNil;</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC999" class="react-file-line html-div" data-testid="code-cell" data-line-number="999" style="position:relative">}</div></div></div><div class="react-code-text react-code-line-contents" style="min-height:auto"><div><div id="LC1000" class="react-file-line html-div" data-testid="code-cell" data-line-number="1000" style="position:relative">
</div></div></div></div></div><div class="CodeLinesSSR-module__viewRemainderLink__pd3EU"><a class="prc-Link-Link-9ZwDx" data-component="Link" href="https://github.com/Detanup01/gbe_fork/raw/refs/heads/controller-def-init/dll/steam_friends.cpp">View remainder of file in raw view</a></div></div><div id="copilot-button-container"></div></div><div id="highlighted-line-menu-container"></div><div class="HighlightedLineMenu-module__overlayPortalRoot__QDpCt"></div></div></div><!--/$--><div class="d-none"></div></section></div></div></div> </div> <!-- --> </div></div></div></div></div></div><div class="ScrollMarksContainer-module__scrollMarksContainer__Eu7uU" id="find-result-marks-container"></div><div class="d-none"></div><div class="d-none"></div></div> <!-- --> <!-- --> </div>
</react-app>




  </div>

</turbo-frame>

    </main>
  </div>

  </div>

          <footer class="footer f6 color-fg-muted color-border-subtle tmp-pt-7 tmp-pb-6 p-responsive" role="contentinfo"  >
  <h2 class='sr-only'>Footer</h2>

  


  <div class="d-flex flex-justify-center flex-items-center flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap">
    <div class="d-flex flex-items-center flex-shrink-0 mx-2">
      <a aria-label="GitHub Homepage" class="footer-octicon mr-2" href="https://github.com">
        <svg aria-hidden="true" data-component="Octicon" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-mark-github">
    <path d="M10.226 17.284c-2.965-.36-5.054-2.493-5.054-5.256 0-1.123.404-2.336 1.078-3.144-.292-.741-.247-2.314.09-2.965.898-.112 2.111.36 2.83 1.01.853-.269 1.752-.404 2.853-.404 1.1 0 1.999.135 2.807.382.696-.629 1.932-1.1 2.83-.988.315.606.36 2.179.067 2.942.72.854 1.101 2 1.101 3.167 0 2.763-2.089 4.852-5.098 5.234.763.494 1.28 1.572 1.28 2.807v2.336c0 .674.561 1.056 1.235.786 4.066-1.55 7.255-5.615 7.255-10.646C23.5 6.188 18.334 1 11.978 1 5.62 1 .5 6.188.5 12.545c0 4.986 3.167 9.12 7.435 10.669.606.225 1.19-.18 1.19-.786V20.63a2.9 2.9 0 0 1-1.078.224c-1.483 0-2.359-.808-2.987-2.313-.247-.607-.517-.966-1.034-1.033-.27-.023-.359-.135-.359-.27 0-.27.45-.471.898-.471.652 0 1.213.404 1.797 1.235.45.651.921.943 1.483.943.561 0 .92-.202 1.437-.719.382-.381.674-.718.944-.943"></path>
</svg>
</a>
      <span>
        &copy; 2026 GitHub,&nbsp;Inc.
      </span>
    </div>

    <nav aria-label="Footer">
      <h3 class="sr-only" id="sr-footer-heading">Footer navigation</h3>

      <ul class="list-style-none d-flex flex-justify-center flex-wrap mb-2 mb-lg-0" aria-labelledby="sr-footer-heading">


          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Terms&quot;,&quot;label&quot;:&quot;text:terms&quot;}" href="https://docs.github.com/site-policy/github-terms/github-terms-of-service" data-view-component="true" class="Link--secondary Link">Terms</a>
          </li>

          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to privacy&quot;,&quot;label&quot;:&quot;text:privacy&quot;}" href="https://docs.github.com/site-policy/privacy-policies/github-privacy-statement" data-view-component="true" class="Link--secondary Link">Privacy</a>
          </li>


            <li class="mx-2">
              <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to security&quot;,&quot;label&quot;:&quot;text:security&quot;}" href="https://github.com/security" data-view-component="true" class="Link--secondary Link">Security</a>
            </li>

            <li class="mx-2">
              <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to status&quot;,&quot;label&quot;:&quot;text:status&quot;}" href="https://www.githubstatus.com/" data-view-component="true" class="Link--secondary Link">Status</a>
            </li>

          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to community&quot;,&quot;label&quot;:&quot;text:community&quot;}" href="https://github.community/" data-view-component="true" class="Link--secondary Link">Community</a>
          </li>

          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to docs&quot;,&quot;label&quot;:&quot;text:docs&quot;}" href="https://docs.github.com/" data-view-component="true" class="Link--secondary Link">Docs</a>
          </li>

          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to contact&quot;,&quot;label&quot;:&quot;text:contact&quot;}" href="https://support.github.com?tags=dotcom-footer" data-view-component="true" class="Link--secondary Link">Contact</a>
          </li>

          
<li class="mx-2" >
  <cookie-consent-link>
    <button
      type="button"
      class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent"
      data-action="click:cookie-consent-link#showConsentManagement"
      data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;cookies&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;cookies_link_subfooter_footer&quot;}"
    >
      Manage cookies
    </button>
  </cookie-consent-link>
</li>

  <li class="mx-2">
    <cookie-consent-link>
      <button
        type="button"
        class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent text-left"
        data-action="click:cookie-consent-link#showConsentManagement"
        data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;dont_share_info&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;dont_share_info_link_subfooter_footer&quot;}"
      >
        Do not share my personal information
      </button>
    </cookie-consent-link>
  </li>

      </ul>
    </nav>
  </div>
</footer>



    <ghcc-consent id="ghcc" class="position-fixed bottom-0 left-0" style="z-index: 999999"
      data-locale="en"
      data-initial-cookie-consent-allowed=""
      data-cookie-consent-required="true"
    ></ghcc-consent>




  <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden>
    <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg>
    <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
    </button>
    You can’t perform that action at this time.
  </div>

    <template id="site-details-dialog">
  <details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open>
    <summary role="button" aria-label="Close dialog"></summary>
    <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal">
      <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog>
        <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
      </button>
      <div class="octocat-spinner tmp-my-6 js-details-dialog-spinner"></div>
    </details-dialog>
  </details>
</template>

    <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;">
  <div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;">
  </div>
</div>

    <template id="snippet-clipboard-copy-button">
  <div class="zeroclipboard-container position-absolute right-0 top-0">
    <clipboard-copy aria-label="Copy code to clipboard" class="ClipboardButton btn js-clipboard-copy m-2 p-0" data-copy-feedback="Copied!" data-tooltip-direction="w">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2 tmp-m-2">
    <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path>
</svg>
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2 tmp-m-2">
    <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path>
</svg>
    </clipboard-copy>
  </div>
</template>
<template id="snippet-clipboard-copy-button-unpositioned">
  <div class="zeroclipboard-container">
    <clipboard-copy aria-label="Copy code to clipboard" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon">
    <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path>
</svg>
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none">
    <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path>
</svg>
    </clipboard-copy>
  </div>
</template>




    </div>
    <div id="js-global-screen-reader-notice" class="sr-only mt-n1" aria-live="polite" aria-atomic="true" ></div>
    <div id="js-global-screen-reader-notice-assertive" class="sr-only mt-n1" aria-live="assertive" aria-atomic="true"></div>
  </body>
</html>

