You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

2637 lines
232 KiB

<!DOCTYPE html>
<html data-color-mode="light" data-light-theme="light" data-dark-theme="dark" lang="en"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<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 crossorigin="anonymous" media="all" integrity="sha512-k9NM/a2xYY6wCRcWG7f3ROm4X5CJNikViGX0N8YIxs6sUYAe/j08/RSHXr3fA9wLIy87AMFCgXm6jbvhZhIXWw==" rel="stylesheet" href="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/frameworks-93d34cfdadb1618eb00917161bb7f744.css">
<link crossorigin="anonymous" media="all" integrity="sha512-FSQAq0EMs4fztkVYnaG6tYMYSthrQSMf9Yowkvapk08OAxsW4QUZZT9h9jSMmO7GB6rO1uRQdGRn8FwXE9lyyg==" rel="stylesheet" href="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/behaviors-152400ab410cb387f3b645589da1bab5.css">
<link crossorigin="anonymous" media="all" integrity="sha512-ADxBGP+/Ejuf3hdfXt1DPBnGrlQ47QqWJG2/uzyeofvKQGbkHG8l5dAmbOThfWzViBmMF+vy43i5TLs2M+J+4g==" rel="stylesheet" href="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/github-003c4118ffbf123b9fde175f5edd433c.css">
<script crossorigin="anonymous" defer="defer" integrity="sha512-8K2vvwbW+6H27Nad5ydg8PA2/aMD/LKq+EiK9s0U0hhVZxCI2tWBsYk9beAtisRw2j+Or5k2/F+6dk02nmj/PA==" type="application/javascript" src="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/environment-f0adafbf.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-Of+WG2CISim899I88sYG7d/75B6gHRWbUDvUOJDh52ZKHoHClE8JQ4nZbvOrvIVTGKCUe68JogcDBUMVtQ7F8w==" type="application/javascript" src="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/chunk-frameworks-39ff961b.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-7GvK4gfpB9Ztz8H6JMSvF2zkjlAfbaRjfl7n1VtRpOc7huXjL3iGa8FuQiFTvdPX1fd8IYbNtXZoEDZa3RVOrQ==" type="application/javascript" src="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/chunk-vendor-ec6bcae2.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-CAFqUXjN32LIAgTsmlP6y/WpzDOFJvbkJpWm45xhNQyUmVa8hurwRVOEEV3fhYZbLpxPbml9zdrVssNIdav8hA==" type="application/javascript" src="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/behaviors-08016a51.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-xDmMfbDOi7C1qDeTcUUIjKfOAG5qhfSNSHRf7wT0crqnTCqtHlO1jBZmRSpjbpn4RyitzX75K0wQ/dpHqO/gAg==" type="application/javascript" data-module-id="./chunk-contributions-spider-graph.js" data-src="https://github.githubassets.com/assets/chunk-contributions-spider-graph-c4398c7d.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-obMR8mPKx8OvqRe34LgnUcxeJ1qujiA4ND3H6UX13ExMlA/WfHLjEzXRmgGRcRvN/8J1nzc+Z+jgz/PLTFy6zg==" type="application/javascript" data-module-id="./chunk-drag-drop.js" data-src="https://github.githubassets.com/assets/chunk-drag-drop-a1b311f2.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-TGnbT/6B5dxVwEk7iOlwSY9mfqhfq8m05ec+KjdlfEwoieq73iBeyidClQUSmFa2snukwzF9peY8c7FJf9FARA==" type="application/javascript" data-module-id="./chunk-emoji-picker-element.js" data-src="https://github.githubassets.com/assets/chunk-emoji-picker-element-4c69db4f.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-NwYkwzxETzKUYRXumHDsBIuggkh86KmJ1WrwWZW5wTvVPf047+wOmOHI5b4D65bfdtd3WbXJ7k+3ZWoxpIaqcA==" type="application/javascript" data-module-id="./chunk-insights-graph.js" data-src="https://github.githubassets.com/assets/chunk-insights-graph-370624c3.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-o7Wgi+lb9ce+9dvjWvB30ar51Bw0wcGhFZfQIzNGZfJ/7GZwYxVCsqgA4Q2o8yRq1QDUL1G1NxR0/3o9FoQ9JQ==" type="application/javascript" data-module-id="./chunk-jump-to.js" data-src="https://github.githubassets.com/assets/chunk-jump-to-a3b5a08b.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-tcH4xCRuMBAh1PruDaiwGnRIbHlF6bGLhxyCQ16uqok1cV5QFMguVPWJtN9KI0jGQOgN+Pha3+uOUXhXdfK/qw==" type="application/javascript" data-module-id="./chunk-profile-pins-element.js" data-src="https://github.githubassets.com/assets/chunk-profile-pins-element-b5c1f8c4.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-E+H+wAtjiqutBvn2cnXzDIvmasIhYiS7i7JzOfFUwo+Ej8zT54OrJtP//RhwixnypgOpCF4JvqzYy6zOtORDmg==" type="application/javascript" data-module-id="./chunk-runner-groups.js" data-src="https://github.githubassets.com/assets/chunk-runner-groups-13e1fec0.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-U+Pp1bYuA3fRqhike5Go//O/vsExaZLz00lrIby+rZ88yf03nQHz3wLZR9paWkakpD7TH5nS6AUpabCc7OFWpg==" type="application/javascript" data-module-id="./chunk-sortable-behavior.js" data-src="https://github.githubassets.com/assets/chunk-sortable-behavior-53e3e9d5.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-QBwrFY4kzAVN0nZmTYJLeEhi5bQ+42rE8h1g384XeZb7n62BykcUICACtaDQ473aIrRf38RSR7WDfNEIVuSlTA==" type="application/javascript" data-module-id="./chunk-tweetsodium.js" data-src="https://github.githubassets.com/assets/chunk-tweetsodium-401c2b15.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-su8FOuJFv0H16y8vmT+N3HiFpDQnHKiLz/UEdGxlCfgwnKBy202gaBmkcBpqXigRg+A8pMDXcSPIWSEW+IIKvQ==" type="application/javascript" data-module-id="./chunk-user-status-submit.js" data-src="https://github.githubassets.com/assets/chunk-user-status-submit-b2ef053a.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-Ahh1vGV9jX7qzPdC1tA1y6PaLV9AbDPSlt2q8C7SUVVKTgoB5vDsUrKvaGh7Gj2Tv594XRcr0LjJdKA8HmL8iQ==" type="application/javascript" src="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/diffs-021875bc.js"></script>
<meta name="viewport" content="width=device-width">
<title>Stop CVE-2019-14899 by dropping packets to tunnel IP · mullvad/mullvadvpn-app@ef58862</title>
<meta name="description" content="The Mullvad VPN client app for desktop and mobile. Contribute to mullvad/mullvadvpn-app development by creating an account on GitHub.">
<link rel="search" type="application/opensearchdescription+xml" href="https://github.com/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">
<meta name="twitter:image:src" content="https://avatars.githubusercontent.com/u/10848549?s=400&amp;v=4"><meta name="twitter:site" content="@github"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Stop CVE-2019-14899 by dropping packets to tunnel IP · mullvad/mullvadvpn-app@ef58862"><meta name="twitter:description" content="Stops an attacker on the same network from discovering the tunnel IP of
the device running this app">
<meta property="og:image" content="https://avatars.githubusercontent.com/u/10848549?s=400&amp;v=4"><meta property="og:site_name" content="GitHub"><meta property="og:type" content="object"><meta property="og:title" content="Stop CVE-2019-14899 by dropping packets to tunnel IP · mullvad/mullvadvpn-app@ef58862"><meta property="og:url" content="/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1"><meta property="og:description" content="Stops an attacker on the same network from discovering the tunnel IP of
the device running this app"><meta property="og:updated_time" content="1575642613">
<link rel="assets" href="https://github.githubassets.com/">
<link rel="shared-web-socket" href="wss://alive.github.com/_sockets/u/15262083/ws?session=eyJ2IjoiVjMiLCJ1IjoxNTI2MjA4MywicyI6NjQwMDI5MzcwLCJjIjozODMxNDcyMDI4LCJ0IjoxNjExNzE3MjM1fQ==--9cb77c1c0e4dfda9668f1d699fcde8085614ded5347b40590910e8a856c9c646" data-refresh-url="/_alive">
<link rel="shared-web-socket-src" href="https://github.com/socket-worker-5029ae85.js">
<link rel="sudo-modal" href="https://github.com/sessions/sudo_modal">
<meta name="request-id" content="D8B6:23F8:2DF96FB:3FA0884:6010DA60" data-pjax-transient="true"><meta name="html-safe-nonce" content="65f359bcd49984b78c8056aaabcb67d5f3b653dd9445821f567dfdeb3f4a7432" data-pjax-transient="true"><meta name="visitor-payload" content="eyJyZWZlcnJlciI6Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/cD0yJnE9Y3ZlLTIwMTktMTQ4OTkmdHlwZT1Db21taXRzIiwicmVxdWVzdF9pZCI6IkQ4QjY6MjNGODoyREY5NkZCOjNGQTA4ODQ6NjAxMERBNjAiLCJ2aXNpdG9yX2lkIjoiMjMxMDkyMTU0MzM2NDkyMDE2MyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9" data-pjax-transient="true"><meta name="visitor-hmac" content="586d18ea2698a416df42c84dff2c312f869fc09170dda3cd18a529c35954892c" data-pjax-transient="true">
<meta name="hovercard-subject-tag" content="repository:114742422" data-pjax-transient="">
<meta name="github-keyboard-shortcuts" content="repository,commits" data-pjax-transient="true">
<meta name="selected-link" value="repo_commits" data-pjax-transient="">
<meta name="google-site-verification" content="c1kuD-K2HIVF635lypcsWPoD4kilo5-jA_wBFyT4uMY">
<meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU">
<meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA">
<meta name="google-site-verification" content="GXs5KoUUkNCoaAZn7wPN-t01Pywp9M3sEjnt_3_ZWPc">
<meta name="octolytics-host" content="collector.githubapp.com"><meta name="octolytics-app-id" content="github"><meta name="octolytics-event-url" content="https://collector.githubapp.com/github-external/browser_event"><meta name="octolytics-actor-id" content="15262083"><meta name="octolytics-actor-login" content="wtolley"><meta name="octolytics-actor-hash" content="b5e813f81e93e6e7e0b419fb08704ba6d54fd4ebb62c842e6ac04149692f5a9d">
<meta name="analytics-location" content="/&lt;user-name&gt;/&lt;repo-name&gt;/commit/show" data-pjax-transient="true">
<meta name="hostname" content="github.com">
<meta name="user-login" content="wtolley">
<meta name="expected-hostname" content="github.com">
<meta name="js-proxy-site-detection-payload" content="M2RmOWU5MTI0ZmM1NzE3ZTkzZGNjNDViMGZjYmJhMThjYTRkYjU4OGRjZjMzYzliOThmODVlOWQyZDliNmE3MHx7InJlbW90ZV9hZGRyZXNzIjoiMTc0Ljc0LjE0My43MyIsInJlcXVlc3RfaWQiOiJEOEI2OjIzRjg6MkRGOTZGQjozRkEwODg0OjYwMTBEQTYwIiwidGltZXN0YW1wIjoxNjExNzE3MjM1LCJob3N0IjoiZ2l0aHViLmNvbSJ9">
<meta name="enabled-features" content="MARKETPLACE_PENDING_INSTALLATIONS,JS_HTTP_CACHE_HEADERS,ACTIONS_SHORT_SHA_WARNING,TASK_LIST_AUTOCOMPLETE,MULTI_WORD_SUGGESTER">
<meta http-equiv="x-pjax-version" content="8133e064b1f142106c24ac3a9bd0c1ee4fb7901fa51550163e32af91b6a70802">
<link href="https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1.diff" rel="alternate" type="text/plain+diff" data-pjax-transient="true">
<link href="https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1.patch" rel="alternate" type="text/plain+patch" data-pjax-transient="true">
<meta name="diff-view" content="unified" data-pjax-transient="">
<link href="https://github.com/mullvad/mullvadvpn-app/commits/ef5886281dd84b450ae25a9ffca036cffd16abd1.atom" rel="alternate" title="Recent Commits to mullvadvpn-app:ef5886281dd84b450ae25a9ffca036cffd16abd1" type="application/atom+xml">
<meta name="go-import" content="github.com/mullvad/mullvadvpn-app git https://github.com/mullvad/mullvadvpn-app.git">
<meta name="octolytics-dimension-user_id" content="10848549"><meta name="octolytics-dimension-user_login" content="mullvad"><meta name="octolytics-dimension-repository_id" content="114742422"><meta name="octolytics-dimension-repository_nwo" content="mullvad/mullvadvpn-app"><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="114742422"><meta name="octolytics-dimension-repository_network_root_nwo" content="mullvad/mullvadvpn-app"><meta name="octolytics-dimension-repository_explore_github_marketplace_ci_cta_shown" 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="browser-optimizely-client-errors-url" content="https://api.github.com/_private/browser/optimizely_client/errors">
<link rel="mask-icon" href="https://github.githubassets.com/pinned-octocat.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">
<meta name="theme-color" content="#1e2327">
<meta name="color-scheme" content="light dark">
<link rel="manifest" href="https://github.com/manifest.json" crossorigin="use-credentials">
</head>
<body class="logged-in env-production page-responsive" data-new-gr-c-s-loaded="8.869.0">
<div class="position-relative js-header-wrapper ">
<a href="#start-of-content" class="p-3 bg-blue text-white show-on-focus js-skip-to-content">Skip to content</a>
<span class="progress-pjax-loader width-full js-pjax-loader-bar Progress position-fixed">
<span style="background-color: #79b8ff;width: 0%;" class="Progress-item progress-pjax-loader-bar "></span>
</span>
<header class="Header js-details-container Details px-3 px-md-4 px-lg-5 flex-wrap flex-md-nowrap" role="banner">
<div class="Header-item mt-n1 mb-n1 d-none d-md-flex">
<a class="Header-link " href="https://github.com/" data-hotkey="g d" aria-label="Homepage " data-ga-click="Header, go to dashboard, icon:logo">
<svg class="octicon octicon-mark-github v-align-middle" height="32" viewBox="0 0 16 16" version="1.1" width="32" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg>
</a>
</div>
<div class="Header-item d-md-none">
<button class="Header-link btn-link js-details-target" type="button" aria-label="Toggle navigation" aria-expanded="false">
<svg height="24" class="octicon octicon-three-bars" viewBox="0 0 16 16" version="1.1" width="24" aria-hidden="true"><path fill-rule="evenodd" d="M1 2.75A.75.75 0 011.75 2h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 2.75zm0 5A.75.75 0 011.75 7h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 7.75zM1.75 12a.75.75 0 100 1.5h12.5a.75.75 0 100-1.5H1.75z"></path></svg>
</button>
</div>
<div class="Header-item Header-item--full flex-column flex-md-row width-full flex-order-2 flex-md-order-none mr-0 mr-md-3 mt-3 mt-md-0 Details-content--hidden-not-important d-md-flex">
<div class="header-search flex-auto js-site-search position-relative flex-self-stretch flex-md-self-auto mb-3 mb-md-0 mr-0 mr-md-3 scoped-search site-scoped-search js-jump-to" role="combobox" aria-owns="jump-to-results" aria-label="Search or jump to" aria-haspopup="listbox" aria-expanded="false">
<div class="position-relative">
<!-- '"` --><!-- </textarea></xmp> --><form class="js-site-search-form" role="search" aria-label="Site" data-scope-type="Repository" data-scope-id="114742422" data-scoped-search-url="/mullvad/mullvadvpn-app/search" data-owner-scoped-search-url="/orgs/mullvad/search" data-unscoped-search-url="/search" action="/mullvad/mullvadvpn-app/search" accept-charset="UTF-8" method="get">
<label class="form-control input-sm header-search-wrapper p-0 js-chromeless-input-container header-search-wrapper-jump-to position-relative d-flex flex-justify-between flex-items-center">
<input type="text" class="form-control input-sm header-search-input jump-to-field js-jump-to-field js-site-search-focus js-site-search-field is-clearable" data-hotkey="s,/" name="q" placeholder="Search or jump to…" data-unscoped-placeholder="Search or jump to…" data-scoped-placeholder="Search or jump to…" autocapitalize="none" aria-autocomplete="list" aria-controls="jump-to-results" aria-label="Search or jump to…" data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" spellcheck="false" autocomplete="off">
<input type="hidden" value="/4txQe974RvF6oBOXQzrlC5+aRW+B4Ii1vyV3Uia7Uw+ftGeK/J4vK+foK86mgm7dMKgAoEmsAqbxOXqdFfX9g==" data-csrf="true" class="js-data-jump-to-suggestions-path-csrf">
<input type="hidden" class="js-site-search-type-field" name="type">
<img src="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/search-key-slash.svg" alt="" class="mr-2 header-search-key-slash">
<div class="Box position-absolute overflow-hidden d-none jump-to-suggestions js-jump-to-suggestions-container">
<ul class="d-none js-jump-to-suggestions-template-container">
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-suggestion" role="option">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="suggestion">
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
<svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path></svg>
<svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path></svg>
<svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg>
</div>
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
</div>
<div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
In this repository
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle"></span>
</div>
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle"></span>
</div>
</a>
</li>
</ul>
<ul class="d-none js-jump-to-no-results-template-container">
<li class="d-flex flex-justify-center flex-items-center f5 d-none js-jump-to-suggestion p-2">
<span class="text-gray">No suggested jump to results</span>
</li>
</ul>
<ul id="jump-to-results" role="listbox" class="p-0 m-0 js-navigation-container jump-to-suggestions-results-container js-jump-to-suggestions-results-container">
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-scoped-search d-none" role="option">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="scoped_search">
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
<svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path></svg>
<svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path></svg>
<svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg>
</div>
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
</div>
<div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
In this repository
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle"></span>
</div>
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle"></span>
</div>
</a>
</li>
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-owner-scoped-search d-none" role="option">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="owner_scoped_search">
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
<svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path></svg>
<svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path></svg>
<svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg>
</div>
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
</div>
<div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this organization">
In this organization
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle"></span>
</div>
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle"></span>
</div>
</a>
</li>
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-global-search d-none" role="option">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="global_search">
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
<svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path></svg>
<svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path></svg>
<svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg>
</div>
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
</div>
<div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
In this repository
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle"></span>
</div>
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle"></span>
</div>
</a>
</li>
<li class="d-flex flex-justify-center flex-items-center p-0 f5 js-jump-to-suggestion">
<svg viewBox="0 0 16 16" fill="none" style="box-sizing: content-box; color: var(--color-icon-primary);" class="m-3" width="32" height="32">
<circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke"></circle>
<path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke">
<animateTransform attributeName="transform" type="rotate" from="0 8 8" to="360 8 8" dur="1s" repeatCount="indefinite"></animateTransform>
</path>
</svg>
</li>
</ul>
</div>
</label>
</form> </div>
</div>
<nav class="d-flex flex-column flex-md-row flex-self-stretch flex-md-self-auto" aria-label="Global">
<a class="Header-link py-md-3 d-block d-md-none py-2 border-top border-md-top-0 border-white-fade-15" data-ga-click="Header, click, Nav menu - item:dashboard:user" aria-label="Dashboard" href="https://github.com/dashboard">
Dashboard
</a>
<a class="js-selected-navigation-item Header-link mt-md-n3 mb-md-n3 py-2 py-md-3 mr-0 mr-md-3 border-top border-md-top-0 border-white-fade-15" data-hotkey="g p" data-ga-click="Header, click, Nav menu - item:pulls context:user" aria-label="Pull requests you created" data-selected-links="/pulls /pulls/assigned /pulls/mentioned /pulls" href="https://github.com/pulls">
Pull<span class="d-inline d-md-none d-lg-inline"> request</span>s
</a>
<a class="js-selected-navigation-item Header-link mt-md-n3 mb-md-n3 py-2 py-md-3 mr-0 mr-md-3 border-top border-md-top-0 border-white-fade-15" data-hotkey="g i" data-ga-click="Header, click, Nav menu - item:issues context:user" aria-label="Issues you created" data-selected-links="/issues /issues/assigned /issues/mentioned /issues" href="https://github.com/issues">
Issues
</a>
<div class="d-flex position-relative">
<a class="js-selected-navigation-item Header-link flex-auto mt-md-n3 mb-md-n3 py-2 py-md-3 mr-0 mr-md-3 border-top border-md-top-0 border-white-fade-15" data-ga-click="Header, click, Nav menu - item:marketplace context:user" data-octo-click="marketplace_click" data-octo-dimensions="location:nav_bar" data-selected-links=" /marketplace" href="https://github.com/marketplace">
Marketplace
</a> </div>
<a class="js-selected-navigation-item Header-link mt-md-n3 mb-md-n3 py-2 py-md-3 mr-0 mr-md-3 border-top border-md-top-0 border-white-fade-15" data-ga-click="Header, click, Nav menu - item:explore" data-selected-links="/explore /trending /trending/developers /integrations /integrations/feature/code /integrations/feature/collaborate /integrations/feature/ship showcases showcases_search showcases_landing /explore" href="https://github.com/explore">
Explore
</a>
<a class="Header-link d-block d-md-none mr-0 mr-md-3 py-2 py-md-3 border-top border-md-top-0 border-white-fade-15" href="https://github.com/settings/profile">
Settings
</a>
<a class="Header-link d-block d-md-none mr-0 mr-md-3 py-2 py-md-3 border-top border-md-top-0 border-white-fade-15" href="https://github.com/wtolley">
<img class="avatar avatar-user" src="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/15262083.png" alt="@wtolley" width="20" height="20">
wtolley
</a>
<!-- '"` --><!-- </textarea></xmp> --><form action="/logout" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="a8gmUX5mHS5C0mkY27QrcUCtb8a7BLEkqWdE2PinxBvV+MmUh1BCpUqGY9jBNYrTkctM//txJrEgKfjX5KzPfg==">
<button type="submit" class="Header-link mr-0 mr-md-3 py-2 py-md-3 border-top border-md-top-0 border-white-fade-15 d-md-none btn-link d-block width-full text-left" data-ga-click="Header, sign out, icon:logout" style="padding-left: 2px;">
<svg class="octicon octicon-sign-out v-align-middle" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 2.75C2 1.784 2.784 1 3.75 1h2.5a.75.75 0 010 1.5h-2.5a.25.25 0 00-.25.25v10.5c0 .138.112.25.25.25h2.5a.75.75 0 010 1.5h-2.5A1.75 1.75 0 012 13.25V2.75zm10.44 4.5H6.75a.75.75 0 000 1.5h5.69l-1.97 1.97a.75.75 0 101.06 1.06l3.25-3.25a.75.75 0 000-1.06l-3.25-3.25a.75.75 0 10-1.06 1.06l1.97 1.97z"></path></svg>
Sign out
</button>
</form></nav>
</div>
<div class="Header-item Header-item--full flex-justify-center d-md-none position-relative">
<a class="Header-link " href="https://github.com/" data-hotkey="g d" aria-label="Homepage " data-ga-click="Header, go to dashboard, icon:logo">
<svg class="octicon octicon-mark-github v-align-middle" height="32" viewBox="0 0 16 16" version="1.1" width="32" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg>
</a>
</div>
<div class="Header-item mr-0 mr-md-3 flex-order-1 flex-md-order-none">
<notification-indicator class="js-socket-channel" data-channel="eyJjIjoibm90aWZpY2F0aW9uLWNoYW5nZWQ6MTUyNjIwODMiLCJ0IjoxNjExNzE3MjM1fQ==--a507848e13e7cf24764186b3098ecbeccde5788ffaa0c8764dc8dcb6495ddcf7" data-catalyst="">
<a href="https://github.com/notifications" class="Header-link notification-indicator position-relative tooltipped tooltipped-sw" aria-label="You have no unread notifications" data-hotkey="g n" data-ga-click="Header, go to notifications, icon:read" data-target="notification-indicator.link">
<span class="mail-status " data-target="notification-indicator.modifier"></span>
<svg class="octicon octicon-bell" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M8 16a2 2 0 001.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 008 16z"></path><path fill-rule="evenodd" d="M8 1.5A3.5 3.5 0 004.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.018.018 0 00-.003.01l.001.006c0 .002.002.004.004.006a.017.017 0 00.006.004l.007.001h10.964l.007-.001a.016.016 0 00.006-.004.016.016 0 00.004-.006l.001-.007a.017.017 0 00-.003-.01l-1.703-2.554a1.75 1.75 0 01-.294-.97V5A3.5 3.5 0 008 1.5zM3 5a5 5 0 0110 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.518 1.518 0 0113.482 13H2.518a1.518 1.518 0 01-1.263-2.36l1.703-2.554A.25.25 0 003 7.947V5z"></path></svg>
</a>
</notification-indicator>
</div>
<div class="Header-item position-relative d-none d-md-flex">
<details class="details-overlay details-reset">
<summary class="Header-link" aria-label="Create new…" data-ga-click="Header, create new, icon:add" aria-haspopup="menu" role="button">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg> <span class="dropdown-caret"></span>
</summary>
<details-menu class="dropdown-menu dropdown-menu-sw" role="menu">
<a role="menuitem" class="dropdown-item" href="https://github.com/new" data-ga-click="Header, create new repository">
New repository
</a>
<a role="menuitem" class="dropdown-item" href="https://github.com/new/import" data-ga-click="Header, import a repository">
Import repository
</a>
<a role="menuitem" class="dropdown-item" href="https://gist.github.com/" data-ga-click="Header, create new gist">
New gist
</a>
<a role="menuitem" class="dropdown-item" href="https://github.com/organizations/new" data-ga-click="Header, create new organization">
New organization
</a>
<div role="none" class="dropdown-divider"></div>
<div class="dropdown-header">
<span title="mullvad/mullvadvpn-app">This repository</span>
</div>
<a role="menuitem" class="dropdown-item" href="https://github.com/mullvad/mullvadvpn-app/issues/new/choose" data-ga-click="Header, create new issue" data-skip-pjax="">
New issue
</a>
</details-menu>
</details>
</div>
<div class="Header-item position-relative mr-0 d-none d-md-flex">
<details class="details-overlay details-reset js-feature-preview-indicator-container" data-feature-preview-indicator-src="/users/wtolley/feature_preview/indicator_check">
<summary class="Header-link" aria-label="View profile and more" data-ga-click="Header, show menu, icon:avatar" aria-haspopup="menu" role="button">
<img alt="@wtolley" src="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/15262083_003.png" class="avatar avatar-user " width="20" height="20">
<span class="feature-preview-indicator js-feature-preview-indicator" style="top: 1px;" hidden=""></span>
<span class="dropdown-caret"></span>
</summary>
<details-menu class="dropdown-menu dropdown-menu-sw" style="width: 180px" src="/users/15262083/menu" preload="" role="menu">
<include-fragment>
<p class="text-center mt-3" data-hide-on-error="">
<svg viewBox="0 0 16 16" fill="none" style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32">
<circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke"></circle>
<path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke">
<animateTransform attributeName="transform" type="rotate" from="0 8 8" to="360 8 8" dur="1s" repeatCount="indefinite"></animateTransform>
</path>
</svg>
</p>
<p class="ml-1 mb-2 mt-2 text-gray-dark" data-show-on-error="">
<svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path></svg>
Sorry, something went wrong.
</p>
</include-fragment>
</details-menu>
</details>
</div>
</header>
</div>
<div id="start-of-content" class="show-on-focus"></div>
<div data-pjax-replace="" id="js-flash-container">
<template class="js-flash-template">
<div class="flash flash-full {{ className }}">
<div class=" px-2">
<button class="flash-close js-flash-close" type="button" aria-label="Dismiss this message">
<svg class="octicon octicon-x" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path></svg>
</button>
<div>{{ message }}</div>
</div>
</div>
</template>
</div>
<include-fragment class="js-notification-shelf-include-fragment" data-base-src="https://github.com/notifications/beta/shelf"></include-fragment>
<div class="application-main " data-commit-hovercards-enabled="" data-discussion-hovercards-enabled="" data-issue-and-pr-hovercards-enabled="">
<div itemscope="" itemtype="http://schema.org/SoftwareSourceCode" class="">
<main id="js-repo-pjax-container" data-pjax-container="">
<div class="bg-gray-light pt-3 hide-full-screen mb-5">
<div class="d-flex mb-3 px-3 px-md-4 px-lg-5">
<div class="flex-auto min-width-0 width-fit mr-3">
<h1 class=" d-flex flex-wrap flex-items-center break-word f3 text-normal">
<svg class="octicon octicon-repo text-gray mr-2" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path></svg>
<span class="author flex-self-stretch" itemprop="author">
<a class="url fn" rel="author" data-hovercard-type="organization" data-hovercard-url="/orgs/mullvad/hovercard" href="https://github.com/mullvad">mullvad</a>
</span>
<span class="mx-1 flex-self-stretch color-text-secondary">/</span>
<strong itemprop="name" class="mr-2 flex-self-stretch">
<a data-pjax="#js-repo-pjax-container" class="" href="https://github.com/mullvad/mullvadvpn-app">mullvadvpn-app</a>
</strong>
</h1>
</div>
<ul class="pagehead-actions flex-shrink-0 d-none d-md-inline" style="padding: 2px 0;">
<li>
<notifications-list-subscription-form class="f5 position-relative d-flex" data-catalyst="">
<details class="details-reset details-overlay f5 position-relative" data-target="notifications-list-subscription-form.details" data-action="toggle:notifications-list-subscription-form#detailsToggled">
<summary class="btn btn-sm rounded-right-0" data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;WATCH_BUTTON&quot;,&quot;repository_id&quot;:114742422,&quot;originating_url&quot;:&quot;https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1&quot;,&quot;user_id&quot;:15262083}}" data-hydro-click-hmac="fc3483b0c71d31e65d6c7f1fd8e927a16ba9f8be224f0c214691a119fe5bc206" data-ga-click="Repository, click Watch settings, action:commit#show" aria-label="Notifications settings" role="button" aria-haspopup="menu">
<span data-menu-button="">
<span data-target="notifications-list-subscription-form.unwatchButtonCopy" hidden="">
<svg class="octicon octicon-eye" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z"></path></svg>
Unwatch
</span>
<span data-target="notifications-list-subscription-form.stopIgnoringButtonCopy" hidden="">
<svg class="octicon octicon-bell-slash" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 1.5c-.997 0-1.895.416-2.534 1.086A.75.75 0 014.38 1.55 5 5 0 0113 5v2.373a.75.75 0 01-1.5 0V5A3.5 3.5 0 008 1.5zM4.182 4.31L1.19 2.143a.75.75 0 10-.88 1.214L3 5.305v2.642a.25.25 0 01-.042.139L1.255 10.64A1.518 1.518 0 002.518 13h11.108l1.184.857a.75.75 0 10.88-1.214l-1.375-.996a1.196 1.196 0 00-.013-.01L4.198 4.321a.733.733 0 00-.016-.011zm7.373 7.19L4.5 6.391v1.556c0 .346-.102.683-.294.97l-1.703 2.556a.018.018 0 00-.003.01.015.015 0 00.005.012.017.017 0 00.006.004l.007.001h9.037zM8 16a2 2 0 001.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 008 16z"></path></svg>
Stop ignoring
</span>
<span data-target="notifications-list-subscription-form.watchButtonCopy">
<svg class="octicon octicon-eye" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z"></path></svg>
Watch
</span>
</span>
<span class="dropdown-caret"></span>
</summary>
<details-menu class="SelectMenu " role="menu" data-target="notifications-list-subscription-form.menu">
<div class="SelectMenu-modal notifications-component-menu-modal">
<header class="SelectMenu-header">
<h3 class="SelectMenu-title">Notifications</h3>
<button class="SelectMenu-closeButton" type="button" aria-label="Close menu" data-action="click:notifications-list-subscription-form#closeMenu">
<svg class="octicon octicon-x" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path></svg>
</button>
</header>
<div class="SelectMenu-list">
<form data-target="notifications-list-subscription-form.form" data-action="submit:notifications-list-subscription-form#submitForm" action="/notifications/subscribe" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="hgy2qZ84+v40/BHV5N2Y7rgTlS92hF7U4qPfma9LBzCWVBXfW6G2bdPIdsSQ6CxwciSxKZQTEHbgGIi8Y59pFQ==">
<input type="hidden" name="repository_id" value="114742422">
<button type="submit" name="do" value="included" class="SelectMenu-item flex-items-start" role="menuitemradio" aria-checked="true" data-targets="notifications-list-subscription-form.subscriptionButtons">
<span class="f5">
<svg class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>
</span>
<div>
<div class="f5 text-bold">
Participating and @mentions
</div>
<div class="text-small text-gray text-normal pb-1">
Only receive notifications from this repository when participating or @mentioned.
</div>
</div>
</button>
<button type="submit" name="do" value="subscribed" class="SelectMenu-item flex-items-start" role="menuitemradio" aria-checked="false" data-targets="notifications-list-subscription-form.subscriptionButtons">
<span class="f5">
<svg class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>
</span>
<div>
<div class="f5 text-bold">
All Activity
</div>
<div class="text-small text-gray text-normal pb-1">
Notified of all notifications on this repository.
</div>
</div>
</button>
<button type="submit" name="do" value="ignore" class="SelectMenu-item flex-items-start" role="menuitemradio" aria-checked="false" data-targets="notifications-list-subscription-form.subscriptionButtons">
<span class="f5">
<svg class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>
</span>
<div>
<div class="f5 text-bold">
Ignore
</div>
<div class="text-small text-gray text-normal pb-1">
Never be notified.
</div>
</div>
</button>
</form>
<button class="SelectMenu-item flex-items-start pr-3" type="button" role="menuitemradio" data-target="notifications-list-subscription-form.customButton" data-action="click:notifications-list-subscription-form#openCustomDialog" aria-haspopup="true" aria-checked="false">
<span class="f5">
<svg class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>
</span>
<div>
<div class="d-flex flex-items-start flex-justify-between">
<div class="f5 text-bold">Custom</div>
<div class="f5 pr-1">
<svg class="octicon octicon-arrow-right" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.22 2.97a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06l2.97-2.97H3.75a.75.75 0 010-1.5h7.44L8.22 4.03a.75.75 0 010-1.06z"></path></svg>
</div>
</div>
<div class="text-small text-gray text-normal pb-1">
Select events you want to be notified of in addition to participating and @mentions.
</div>
</div>
</button>
</div>
</div>
</details-menu>
<details-dialog class="notifications-component-dialog " data-target="notifications-list-subscription-form.customDialog" role="dialog" aria-modal="true" hidden="">
<div class="SelectMenu-modal notifications-component-dialog-modal overflow-visible">
<form data-target="notifications-list-subscription-form.customform" data-action="submit:notifications-list-subscription-form#submitCustomForm" action="/notifications/subscribe" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="LiM9jTpPqU9wciDdPJXSEE5KVcL7iVrachpkaNUZR/I+e577/tbl3JdGR8xIoGaOhH1xxBkeFHhwoTNNGc0p1w==">
<input type="hidden" name="repository_id" value="114742422">
<header class="d-sm-none SelectMenu-header pb-0 border-bottom-0 px-2 px-sm-3">
<h1 class="f3 SelectMenu-title d-inline-flex">
<button class="bg-white border-0 px-2 py-0 m-0 link-gray f5" aria-label="Return to menu" type="button" data-action="click:notifications-list-subscription-form#closeCustomDialog">
<svg style="" class="octicon octicon-arrow-left" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.78 12.53a.75.75 0 01-1.06 0L2.47 8.28a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 1.06L4.81 7h7.44a.75.75 0 010 1.5H4.81l2.97 2.97a.75.75 0 010 1.06z"></path></svg>
</button>
Custom
</h1>
</header>
<header class="d-none d-sm-flex flex-items-start pt-1">
<button class="border-0 px-2 pt-1 m-0 link-gray f5" style="background-color: transparent;" aria-label="Return to menu" type="button" data-action="click:notifications-list-subscription-form#closeCustomDialog">
<svg style="position: relative; left: 2px; top: 1px" class="octicon octicon-arrow-left" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.78 12.53a.75.75 0 01-1.06 0L2.47 8.28a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 1.06L4.81 7h7.44a.75.75 0 010 1.5H4.81l2.97 2.97a.75.75 0 010 1.06z"></path></svg>
</button>
<h1 class="pt-1 pr-4 pb-0 pl-0 f5 text-bold">
Custom
</h1>
</header>
<fieldset>
<legend>
<div class="text-small text-gray pt-0 pr-3 pb-3 pl-6 pl-sm-5 border-bottom mb-3">
Select events you want to be notified of in addition to participating and @mentions.
</div>
</legend>
<div class="form-checkbox mr-3 ml-6 ml-sm-5 mb-2 mt-0">
<label class="f5 text-normal">
<input type="checkbox" name="thread_types[]" value="Issue" data-targets="notifications-list-subscription-form.threadTypeCheckboxes" data-action="change:notifications-list-subscription-form#threadTypeCheckboxesUpdated">
Issues
</label>
</div>
<div class="form-checkbox mr-3 ml-6 ml-sm-5 mb-2 mt-0">
<label class="f5 text-normal">
<input type="checkbox" name="thread_types[]" value="PullRequest" data-targets="notifications-list-subscription-form.threadTypeCheckboxes" data-action="change:notifications-list-subscription-form#threadTypeCheckboxesUpdated">
Pull requests
</label>
</div>
<div class="form-checkbox mr-3 ml-6 ml-sm-5 mb-2 mt-0">
<label class="f5 text-normal">
<input type="checkbox" name="thread_types[]" value="Release" data-targets="notifications-list-subscription-form.threadTypeCheckboxes" data-action="change:notifications-list-subscription-form#threadTypeCheckboxesUpdated">
Releases
</label>
</div>
<div class="form-checkbox mr-3 ml-6 ml-sm-5 mb-2 mt-0">
<label class="f5 text-normal">
<input type="checkbox" name="thread_types[]" value="Discussion" data-targets="notifications-list-subscription-form.threadTypeCheckboxes" data-action="change:notifications-list-subscription-form#threadTypeCheckboxesUpdated">
Discussions
</label>
<span class="tooltipped tooltipped-nw mr-2 p-1 float-right" aria-label="Discussions are not enabled for this repo">
<svg style="fill: var(--color-icon-tertiary)" class="octicon octicon-info" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm6.5-.25A.75.75 0 017.25 7h1a.75.75 0 01.75.75v2.75h.25a.75.75 0 010 1.5h-2a.75.75 0 010-1.5h.25v-2h-.25a.75.75 0 01-.75-.75zM8 6a1 1 0 100-2 1 1 0 000 2z"></path></svg>
</span>
</div>
</fieldset>
<div class="pt-2 pb-3 px-3 d-flex flex-justify-start flex-row-reverse">
<button type="submit" name="do" value="custom" class="btn btn-sm btn-primary ml-2" data-target="notifications-list-subscription-form.customSubmit" disabled="disabled">Apply</button>
<button class="btn btn-sm" type="button" data-action="click:notifications-list-subscription-form#resetForm" data-close-dialog="">Cancel</button>
</div>
</form> </div>
</details-dialog>
<div class="notifications-component-dialog-overlay"></div>
</details>
<a class="social-count" href="https://github.com/mullvad/mullvadvpn-app/watchers" aria-label="47 users are watching this repository" data-target="notifications-list-subscription-form.socialCount">
47
</a>
<div class="Popover js-notice" style="top: 26px;left: -44%;">
<div class="Popover-message Popover-message--large p-4 mt-2 Box box-shadow-large">
<h4 class="mb-2 d-flex flex-items-center">
<span>🔖 Custom notification settings</span>
</h4>
<p class="text-gray">
Looking for a little more control? Now you can choose
which types of activity you’d like to be notified about per repository.
</p>
<form class="js-notice-dismiss" action="/settings/dismiss-notice/custom_notification_controls_subscription_notice" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="e+NRFmGT47ikWrUNCGuVrgkWa+v7sjEy4/8hnpSgTsDWZ6HIeF2DothSyrUSRpqOxY4oVEVnqHgGNdhtlv18Gg==">
<button type="submit" class="btn btn-outline mt-2 text-bold"><strong>Got it</strong></button>
</form> </div>
</div>
</notifications-list-subscription-form>
</li>
<li>
<div class="d-block js-toggler-container js-social-container starring-container ">
<form class="starred js-social-form" action="/mullvad/mullvadvpn-app/unstar" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="mr4PDFueiFM+naggqieFMhdIeASIM4iGNtqvw8vbnglwlHF8P0fBSmRh7YD/1w4Zq5MeCdisGO4rcsObO4zRCg==">
<input type="hidden" name="context" value="repository">
<button type="submit" class="btn btn-sm btn-with-count js-toggler-target" aria-label="Unstar this repository" title="Unstar mullvad/mullvadvpn-app" data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;UNSTAR_BUTTON&quot;,&quot;repository_id&quot;:114742422,&quot;originating_url&quot;:&quot;https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1&quot;,&quot;user_id&quot;:15262083}}" data-hydro-click-hmac="bd8a2f6051cd5da3e3c4bfb9caaa35e626486186e04a9ed2cec54b6a9209383e" data-ga-click="Repository, click unstar button, action:commit#show; text:Unstar"> <svg class="octicon octicon-star-fill mr-1" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25z"></path></svg>
<span>
Unstar
</span></button> <a class="social-count js-social-count" href="https://github.com/mullvad/mullvadvpn-app/stargazers" aria-label="1313 users starred this repository">
1.3k
</a>
</form>
<form class="unstarred js-social-form" action="/mullvad/mullvadvpn-app/star" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="Isl3ls+BT+NJjvzoxYDSNTA9jud+OBPIgDNcHB5ssdCsoG+f6dOZV+TO+3LIcPQyrRKMTrx+Zdp7bDD07uhacw==">
<input type="hidden" name="context" value="repository">
<button type="submit" class="btn btn-sm btn-with-count js-toggler-target" aria-label="Unstar this repository" title="Star mullvad/mullvadvpn-app" data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;STAR_BUTTON&quot;,&quot;repository_id&quot;:114742422,&quot;originating_url&quot;:&quot;https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1&quot;,&quot;user_id&quot;:15262083}}" data-hydro-click-hmac="786d60879f428afddddb6adbe9bbf9f6a928a85f49c31e68ccb629527035f6cf" data-ga-click="Repository, click star button, action:commit#show; text:Star"> <svg class="octicon octicon-star mr-1" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"></path></svg>
<span>
Star
</span></button> <a class="social-count js-social-count" href="https://github.com/mullvad/mullvadvpn-app/stargazers" aria-label="1313 users starred this repository">
1.3k
</a>
</form> </div>
</li>
<li>
<div class="float-left">
<details class="details-reset details-overlay details-overlay-dark ">
<summary class="btn btn-sm btn-with-count" title="Fork your own copy of mullvad/mullvadvpn-app to your account" data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;FORK_BUTTON&quot;,&quot;repository_id&quot;:114742422,&quot;originating_url&quot;:&quot;https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1&quot;,&quot;user_id&quot;:15262083}}" data-hydro-click-hmac="d056cd78f296698ed7eda1bce6dc942dfd6511b4c8c9b8f614379ce862467e4d" data-ga-click="Repository, show fork modal, action:commit#show; text:Fork" role="button">
<svg class="octicon octicon-repo-forked" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z"></path></svg>
Fork
</summary>
<details-dialog class="Box d-flex flex-column anim-fade-in fast Box--overlay " aria-label="Fork mullvadvpn-app" src="/mullvad/mullvadvpn-app/fork?fragment=1" preload="" role="dialog" aria-modal="true">
<div class="Box-header">
<button class="Box-btn-octicon btn-octicon float-right" type="button" aria-label="Close dialog" data-close-dialog="">
<svg class="octicon octicon-x" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path></svg>
</button>
<h1 class="Box-title">Fork mullvadvpn-app</h1>
</div>
<div class="text-center overflow-auto">
<include-fragment>
<div class="octocat-spinner my-5" aria-label="Loading..."></div>
<p class="f5 text-gray">If this dialog fails to load, you can visit <a href="https://github.com/mullvad/mullvadvpn-app/fork">the fork page</a> directly.</p>
</include-fragment>
</div>
</details-dialog>
</details>
</div>
<a href="https://github.com/mullvad/mullvadvpn-app/network/members" class="social-count" aria-label="120 users forked this repository">
120
</a>
</li>
</ul>
</div>
<nav aria-label="Repository" data-pjax="#js-repo-pjax-container" class="js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 px-md-4 px-lg-5 bg-gray-light">
<ul class="UnderlineNav-body list-style-none ">
<li class="d-flex">
<a class="js-selected-navigation-item selected UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="i0code-tab" data-hotkey="g c" data-ga-click="Repository, Navigation click, Code tab" aria-current="page" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments /mullvad/mullvadvpn-app" href="https://github.com/mullvad/mullvadvpn-app">
<svg class="octicon octicon-code UnderlineNav-octicon d-none d-sm-inline" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M4.72 3.22a.75.75 0 011.06 1.06L2.06 8l3.72 3.72a.75.75 0 11-1.06 1.06L.47 8.53a.75.75 0 010-1.06l4.25-4.25zm6.56 0a.75.75 0 10-1.06 1.06L13.94 8l-3.72 3.72a.75.75 0 101.06 1.06l4.25-4.25a.75.75 0 000-1.06l-4.25-4.25z"></path></svg>
<span data-content="Code">Code</span>
<span title="Not available" class="Counter "></span>
</a>
</li>
<li class="d-flex">
<a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="i1issues-tab" data-hotkey="g i" data-ga-click="Repository, Navigation click, Issues tab" data-selected-links="repo_issues repo_labels repo_milestones /mullvad/mullvadvpn-app/issues" href="https://github.com/mullvad/mullvadvpn-app/issues">
<svg class="octicon octicon-issue-opened UnderlineNav-octicon d-none d-sm-inline" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm9 3a1 1 0 11-2 0 1 1 0 012 0zm-.25-6.25a.75.75 0 00-1.5 0v3.5a.75.75 0 001.5 0v-3.5z"></path></svg>
<span data-content="Issues">Issues</span>
<span title="88" class="Counter ">88</span>
</a>
</li>
<li class="d-flex">
<a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="i2pull-requests-tab" data-hotkey="g p" data-ga-click="Repository, Navigation click, Pull requests tab" data-selected-links="repo_pulls checks /mullvad/mullvadvpn-app/pulls" href="https://github.com/mullvad/mullvadvpn-app/pulls">
<svg class="octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.177 3.073L9.573.677A.25.25 0 0110 .854v4.792a.25.25 0 01-.427.177L7.177 3.427a.25.25 0 010-.354zM3.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122v5.256a2.251 2.251 0 11-1.5 0V5.372A2.25 2.25 0 011.5 3.25zM11 2.5h-1V4h1a1 1 0 011 1v5.628a2.251 2.251 0 101.5 0V5A2.5 2.5 0 0011 2.5zm1 10.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0zM3.75 12a.75.75 0 100 1.5.75.75 0 000-1.5z"></path></svg>
<span data-content="Pull requests">Pull requests</span>
<span title="4" class="Counter ">4</span>
</a>
</li>
<li class="d-flex">
<a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="i3actions-tab" data-hotkey="g a" data-ga-click="Repository, Navigation click, Actions tab" data-selected-links="repo_actions /mullvad/mullvadvpn-app/actions" href="https://github.com/mullvad/mullvadvpn-app/actions">
<svg class="octicon octicon-play UnderlineNav-octicon d-none d-sm-inline" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zM6.379 5.227A.25.25 0 006 5.442v5.117a.25.25 0 00.379.214l4.264-2.559a.25.25 0 000-.428L6.379 5.227z"></path></svg>
<span data-content="Actions">Actions</span>
<span title="Not available" class="Counter "></span>
</a>
</li>
<li class="d-flex">
<a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="i4security-tab" data-hotkey="g s" data-ga-click="Repository, Navigation click, Security tab" data-selected-links="security overview alerts policy token_scanning code_scanning /mullvad/mullvadvpn-app/security" href="https://github.com/mullvad/mullvadvpn-app/security">
<svg class="octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.467.133a1.75 1.75 0 011.066 0l5.25 1.68A1.75 1.75 0 0115 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.7 1.7 0 01-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 011.217-1.667l5.25-1.68zm.61 1.429a.25.25 0 00-.153 0l-5.25 1.68a.25.25 0 00-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.2.2 0 00.154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.25.25 0 00-.174-.237l-5.25-1.68zM9 10.5a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.75a.75.75 0 10-1.5 0v3a.75.75 0 001.5 0v-3z"></path></svg>
<span data-content="Security">Security</span>
</a>
</li>
<li class="d-flex">
<a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="i5insights-tab" data-ga-click="Repository, Navigation click, Insights tab" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people /mullvad/mullvadvpn-app/pulse" href="https://github.com/mullvad/mullvadvpn-app/pulse">
<svg class="octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.5 1.75a.75.75 0 00-1.5 0v12.5c0 .414.336.75.75.75h14.5a.75.75 0 000-1.5H1.5V1.75zm14.28 2.53a.75.75 0 00-1.06-1.06L10 7.94 7.53 5.47a.75.75 0 00-1.06 0L3.22 8.72a.75.75 0 001.06 1.06L7 7.06l2.47 2.47a.75.75 0 001.06 0l5.25-5.25z"></path></svg>
<span data-content="Insights">Insights</span>
<span title="Not available" class="Counter "></span>
</a>
</li>
</ul> <div class="position-absolute right-0 pr-3 pr-md-4 pr-lg-5 js-responsive-underlinenav-overflow" style="visibility:hidden;">
<details class="details-overlay details-reset position-relative">
<summary role="button">
<div class="UnderlineNav-item mr-0 border-0">
<svg class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path></svg>
<span class="sr-only">More</span>
</div>
</summary> <div>
<details-menu role="menu" class="dropdown-menu dropdown-menu-sw ">
<ul>
<li data-menu-item="i0code-tab" hidden="">
<a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /mullvad/mullvadvpn-app" href="https://github.com/mullvad/mullvadvpn-app">
Code
</a> </li>
<li data-menu-item="i1issues-tab" hidden="">
<a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /mullvad/mullvadvpn-app/issues" href="https://github.com/mullvad/mullvadvpn-app/issues">
Issues
</a> </li>
<li data-menu-item="i2pull-requests-tab" hidden="">
<a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /mullvad/mullvadvpn-app/pulls" href="https://github.com/mullvad/mullvadvpn-app/pulls">
Pull requests
</a> </li>
<li data-menu-item="i3actions-tab" hidden="">
<a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /mullvad/mullvadvpn-app/actions" href="https://github.com/mullvad/mullvadvpn-app/actions">
Actions
</a> </li>
<li data-menu-item="i4security-tab" hidden="">
<a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /mullvad/mullvadvpn-app/security" href="https://github.com/mullvad/mullvadvpn-app/security">
Security
</a> </li>
<li data-menu-item="i5insights-tab" hidden="">
<a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /mullvad/mullvadvpn-app/pulse" href="https://github.com/mullvad/mullvadvpn-app/pulse">
Insights
</a> </li>
</ul>
</details-menu>
</div></details> </div>
</nav>
</div>
<div class="container-xl clearfix new-discussion-timeline px-3 px-md-4 px-lg-5">
<div class="repository-content ">
<a href="https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1" class="d-none js-permalink-shortcut" data-hotkey="y">Permalink</a>
<div id="spoof-warning" class="mt-0 pb-3" aria-hidden="" hidden="">
<div class="flash mt-0 flash-warn clearfix">
<svg class="octicon octicon-alert float-left mt-1" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path></svg>
<div class="overflow-hidden">This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.</div>
</div>
</div>
<div class="commit full-commit mt-0 px-2 pt-2 ">
<a href="https://github.com/mullvad/mullvadvpn-app/tree/ef5886281dd84b450ae25a9ffca036cffd16abd1" class="btn btn-outline float-right" title="Browse the repository at this point in the history" rel="nofollow">Browse files</a>
<span class="mr-1 mt-1 float-left">
<details class="commit-build-statuses details-overlay details-reset js-dropdown-details hx_dropdown-fullscreen" data-deferred-details-content-url="/_render_node/MDE3OlN0YXR1c0NoZWNrUm9sbHVwMTE0NzQyNDIyOmVmNTg4NjI4MWRkODRiNDUwYWUyNWE5ZmZjYTAzNmNmZmQxNmFiZDE=/statuses/combined_branch_status">
<summary class="text-green">
<svg aria-label="2 / 2 checks OK" class="octicon octicon-check" viewBox="0 0 16 16" version="1.1" width="16" height="16" role="img"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>
</summary>
<div class="dropdown-menu dropdown-menu-se overflow-hidden">
<include-fragment class="m-4 d-flex flex-column flex-items-center">
<div class="anim-pulse"><svg height="32" class="octicon octicon-octoface" viewBox="0 0 24 24" version="1.1" width="32" aria-hidden="true"><path d="M7.75 11c-.69 0-1.25.56-1.25 1.25v1.5a1.25 1.25 0 102.5 0v-1.5C9 11.56 8.44 11 7.75 11zm1.27 4.5a.469.469 0 01.48-.5h5a.47.47 0 01.48.5c-.116 1.316-.759 2.5-2.98 2.5s-2.864-1.184-2.98-2.5zm7.23-4.5c-.69 0-1.25.56-1.25 1.25v1.5a1.25 1.25 0 102.5 0v-1.5c0-.69-.56-1.25-1.25-1.25z"></path><path fill-rule="evenodd" d="M21.255 3.82a1.725 1.725 0 00-2.141-1.195c-.557.16-1.406.44-2.264.866-.78.386-1.647.93-2.293 1.677A18.442 18.442 0 0012 5c-.93 0-1.784.059-2.569.17-.645-.74-1.505-1.28-2.28-1.664a13.876 13.876 0 00-2.265-.866 1.725 1.725 0 00-2.141 1.196 23.645 23.645 0 00-.69 3.292c-.125.97-.191 2.07-.066 3.112C1.254 11.882 1 13.734 1 15.527 1 19.915 3.13 23 12 23c8.87 0 11-3.053 11-7.473 0-1.794-.255-3.647-.99-5.29.127-1.046.06-2.15-.066-3.125a23.652 23.652 0 00-.689-3.292zM20.5 14c.5 3.5-1.5 6.5-8.5 6.5s-9-3-8.5-6.5c.583-4 3-6 8.5-6s7.928 2 8.5 6z"></path></svg></div>
<div class="text-gray no-wrap">Loading status checks…</div>
</include-fragment>
</div>
</details>
</span>
<p class="commit-title">
Stop CVE-2019-14899 by dropping packets to tunnel IP
</p>
<div class="commit-desc"><pre>Stops an attacker on the same network from discovering the tunnel IP of
the device running this app</pre></div>
<div class="commit-branches">
<svg class="octicon octicon-git-branch" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M11.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122V6A2.5 2.5 0 0110 8.5H6a1 1 0 00-1 1v1.128a2.251 2.251 0 11-1.5 0V5.372a2.25 2.25 0 111.5 0v1.836A2.492 2.492 0 016 7h4a1 1 0 001-1v-.628A2.25 2.25 0 019.5 3.25zM4.25 12a.75.75 0 100 1.5.75.75 0 000-1.5zM3.5 3.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0z"></path></svg>
<ul class="branches-list">
<li class="branch"><a href="https://github.com/mullvad/mullvadvpn-app">master</a></li>
<li class="pull-request">(<a title="Merged Pull Request: Stop CVE-2019-14899 by dropping packets to tunnel IP" href="https://github.com/mullvad/mullvadvpn-app/pull/1315">#1315</a>)</li>
</ul>
<svg class="octicon octicon-tag" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.5 7.775V2.75a.25.25 0 01.25-.25h5.025a.25.25 0 01.177.073l6.25 6.25a.25.25 0 010 .354l-5.025 5.025a.25.25 0 01-.354 0l-6.25-6.25a.25.25 0 01-.073-.177zm-1.5 0V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 010 2.474l-5.026 5.026a1.75 1.75 0 01-2.474 0l-6.25-6.25A1.75 1.75 0 011 7.775zM6 5a1 1 0 100 2 1 1 0 000-2z"></path></svg>
<ul class="branches-tag-list js-details-container">
<li><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/trace-service-lifecycle">trace-service-lifecycle</a></li>
<li class="abbrev-tags"><span class="hidden-text-expander"><button type="button" class="ellipsis-expander js-details-target" aria-expanded="false"></button></span></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/test-scaled-down-ui2">test-scaled-down-ui2</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/test-scaled-down-ui">test-scaled-down-ui</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/test-non-blurry-icons">test-non-blurry-icons</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/test-linux-electron-sandbox">test-linux-electron-sandbox</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/split-tunnel-win-testbuild-tag">split-tunnel-win-testbuild-tag</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/ios%2F2020.4">ios/2020.4</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/ios%2F2020.3">ios/2020.3</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/ios%2F2020.2">ios/2020.2</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/ios%2F2020.1">ios/2020.1</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/android%2F2020.8-beta1">android/2020.8-beta1</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2021.1-beta1">2021.1-beta1</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.8-beta2">2020.8-beta2</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.7">2020.7</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.7-beta2">2020.7-beta2</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.7-beta1">2020.7-beta1</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.6">2020.6</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.6-beta3">2020.6-beta3</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.6-beta2">2020.6-beta2</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.6-beta1">2020.6-beta1</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.5">2020.5</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.5-beta2">2020.5-beta2</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.5-beta1">2020.5-beta1</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.4">2020.4</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.4-beta4">2020.4-beta4</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.4-beta3">2020.4-beta3</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.4-beta2">2020.4-beta2</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.4-beta1">2020.4-beta1</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.3">2020.3</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.3-beta1">2020.3-beta1</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.2">2020.2</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.2-beta1">2020.2-beta1</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.1">2020.1</a></li>
<li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.1-beta1">2020.1-beta1</a></li>
<li><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2019.10">2019.10</a></li>
</ul>
</div>
<div class="commit-meta p-2 d-flex flex-wrap">
<div class="AvatarStack flex-self-start ">
<div class="AvatarStack-body" aria-label="faern">
<a class="avatar avatar-user" data-skip-pjax="true" data-hovercard-type="user" data-hovercard-url="/users/faern/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" style="width:20px;height:20px;" href="https://github.com/faern">
<img alt="@faern" src="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/332294.jpg" class=" avatar-user" width="20" height="20">
</a> </div>
</div>
<div class="flex-self-start no-wrap mr-md-4 mr-0">
<a href="https://github.com/mullvad/mullvadvpn-app/commits?author=faern" class="commit-author user-mention" title="View all commits by faern">faern</a>
committed
<relative-time datetime="2019-12-06T14:30:13Z" class="no-wrap" title="Dec 6, 2019, 7:30 AM MST">on Dec 6, 2019</relative-time>
<div class="d-none d-md-inline-block">
</div>
</div>
<div class="flex-auto no-wrap text-lg-right text-left overflow-x-auto">
<span class="sha-block ml-0" data-pjax="">
1 parent
<a class="sha" data-hotkey="p" href="https://github.com/mullvad/mullvadvpn-app/commit/b94cdac690cbb51cbee07d5bd2f011e80a7f2ef0">b94cdac</a>
</span>
<span class="sha-block">commit <span class="sha user-select-contain">ef5886281dd84b450ae25a9ffca036cffd16abd1</span></span>
</div>
</div>
</div>
<table style="display: none">
<tbody id="js-inline-comments-single-container-template">
<tr class="inline-comments js-inline-comments-container">
<td class="line-comments js-line-comments js-quote-selection-container p-0 p-sm-2" data-quote-markdown=".js-comment-body" colspan="3">
<div class="js-line-comments">
<div class="comment-holder js-comments-holder">
</div>
<div class="inline-comment-form-container js-inline-comment-form-container review-comment-form-container">
<div class="f6 pb-2 d-flex flex-justify-between js-multi-line-preview" hidden="">
<div class="f6 text-gray">
Commenting on lines
<span class="js-multi-line-preview-start ">
</span> to <span class="js-multi-line-preview-end ">
</span>
</div>
</div>
<div class="inline-comment-form border-md border-0 p-md-0 p-2 ">
<!-- '"` --><!-- </textarea></xmp> --><form class="js-inline-comment-form" action="/mullvad/mullvadvpn-app/commit_comment/create" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="rs6b38KWFlqvH1DXN1oV4OAiNrEGXVDy8SWIp+HkIZWInIXWKxCbmpAKV0p20bEZ2vJu45GJEfAGz0Py30OPig==">
<input type="text" name="required_field_c321" class="form-control" hidden="hidden"><input type="hidden" name="timestamp" value="1611717235721" class="form-control"><input type="hidden" name="timestamp_secret" value="14e2fd57a7548be2f074cd95c04849c0144ccdb4a41c3ef536cdc995833334fc" class="form-control">
<input type="hidden" name="comment_context" value="diff">
<input type="hidden" name="commit_id" value="ef5886281dd84b450ae25a9ffca036cffd16abd1">
<input type="hidden" name="position" value="">
<tab-container class="js-previewable-comment-form previewable-comment-form write-selected" data-preview-url="/preview?markdown_unsupported=false&amp;repository=114742422&amp;subject=ef5886281dd84b450ae25a9ffca036cffd16abd1&amp;subject_type=Commit">
<input type="hidden" value="AYzEDQkZk/dEbhS9McJDecCO2FgljeHvL3DIvoBylCodpPqaENF/40THsziA+PZo5wm5y/DGYkgTy844vPhb2Q==" data-csrf="true" class="js-data-preview-url-csrf">
<div class="comment-form-head tabnav d-flex flex-justify-between mb-2 p-0 tabnav--responsive flex-column border-bottom-0 mb-0 mb-lg-2 flex-items-stretch border-lg-bottom color-border-primary flex-lg-items-center flex-lg-row">
<div class="tabnav-tabs mx-0 mx-md-2 mt-0 mt-md-2 no-wrap d-flex flex-auto d-md-block" role="tablist">
<button type="button" class="btn-link tabnav-tab write-tab js-write-tab px-3 px-sm-6 px-md-3 flex-1 flex-md-auto" role="tab" aria-selected="true" tabindex="0">
Write
</button>
<button type="button" class="btn-link tabnav-tab preview-tab js-preview-tab flex-1 flex-md-auto" role="tab" aria-selected="false" tabindex="-1">
Preview
</button>
</div>
<markdown-toolbar role="toolbar" aria-label="Composition" for="r448261 new_inline_comment_diff_${anchor}_${position}" class="js-details-container Details toolbar-commenting d-flex no-wrap flex-items-start flex-wrap px-2 pt-2 pt-lg-0 border-md-top border-lg-top-0" tabindex="0">
<div class="d-block d-md-none flex-auto">
<button data-md-button="" tabindex="-1" type="button" aria-label="Toggle text tools" aria-expanded="false" class="js-details-target btn-link toolbar-item no-underline py-2 mr-1">
<svg class="octicon octicon-typography" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6.21 8.5L4.574 3.594 2.857 8.5H6.21zm.5 1.5l.829 2.487a.75.75 0 001.423-.474L5.735 2.332a1.216 1.216 0 00-2.302-.018l-3.39 9.688a.75.75 0 001.415.496L2.332 10H6.71zm3.13-4.358C10.53 4.374 11.87 4 13 4c1.5 0 3 .939 3 2.601v5.649a.75.75 0 01-1.448.275C13.995 12.82 13.3 13 12.5 13c-.77 0-1.514-.231-2.078-.709-.577-.488-.922-1.199-.922-2.041 0-.694.265-1.411.887-1.944C11 7.78 11.88 7.5 13 7.5h1.5v-.899c0-.54-.5-1.101-1.5-1.101-.869 0-1.528.282-1.84.858a.75.75 0 11-1.32-.716zM14.5 9H13c-.881 0-1.375.22-1.637.444-.253.217-.363.5-.363.806 0 .408.155.697.39.896.249.21.63.354 1.11.354.732 0 1.26-.209 1.588-.449.35-.257.412-.495.412-.551V9z"></path></svg>
<svg class="octicon octicon-chevron-up Details-content--shown" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.22 9.78a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 0l4.25 4.25a.75.75 0 01-1.06 1.06L8 6.06 4.28 9.78a.75.75 0 01-1.06 0z"></path></svg>
<svg class="octicon octicon-chevron-down Details-content--hidden" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z"></path></svg>
</button>
</div>
<div class="flex-nowrap d-none d-md-inline-block mr-3">
<md-header tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1" aria-label="Add header text" data-ga-click="Markdown Toolbar, click, header" role="button">
<svg class="octicon octicon-heading" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.75 2a.75.75 0 01.75.75V7h7V2.75a.75.75 0 011.5 0v10.5a.75.75 0 01-1.5 0V8.5h-7v4.75a.75.75 0 01-1.5 0V2.75A.75.75 0 013.75 2z"></path></svg>
</md-header>
<md-bold tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1 js-modifier-label-key" aria-label="Add bold text &lt;ctrl+b&gt;" data-ga-click="Markdown Toolbar, click, bold" role="button" hotkey="b">
<svg class="octicon octicon-bold" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 2a1 1 0 00-1 1v10a1 1 0 001 1h5.5a3.5 3.5 0 001.852-6.47A3.5 3.5 0 008.5 2H4zm4.5 5a1.5 1.5 0 100-3H5v3h3.5zM5 9v3h4.5a1.5 1.5 0 000-3H5z"></path></svg>
</md-bold>
<md-italic tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1 js-modifier-label-key" aria-label="Add italic text &lt;ctrl+i&gt;" data-ga-click="Markdown Toolbar, click, italic" role="button" hotkey="i">
<svg class="octicon octicon-italic" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6 2.75A.75.75 0 016.75 2h6.5a.75.75 0 010 1.5h-2.505l-3.858 9H9.25a.75.75 0 010 1.5h-6.5a.75.75 0 010-1.5h2.505l3.858-9H6.75A.75.75 0 016 2.75z"></path></svg>
</md-italic>
</div>
<div class="d-flex d-md-inline-block mr-0 mr-md-3">
<md-quote tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 p-md-1 mx-1" aria-label="Insert a quote" data-ga-click="Markdown Toolbar, click, quote" role="button">
<svg class="octicon octicon-quote" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.75 2.5a.75.75 0 000 1.5h10.5a.75.75 0 000-1.5H1.75zm4 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM2.5 7.75a.75.75 0 00-1.5 0v6a.75.75 0 001.5 0v-6z"></path></svg>
</md-quote>
<md-code tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 p-md-1 mx-1" aria-label="Insert code" data-ga-click="Markdown Toolbar, click, code" role="button">
<svg class="octicon octicon-code" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4.72 3.22a.75.75 0 011.06 1.06L2.06 8l3.72 3.72a.75.75 0 11-1.06 1.06L.47 8.53a.75.75 0 010-1.06l4.25-4.25zm6.56 0a.75.75 0 10-1.06 1.06L13.94 8l-3.72 3.72a.75.75 0 101.06 1.06l4.25-4.25a.75.75 0 000-1.06l-4.25-4.25z"></path></svg>
</md-code>
<button type="button" data-md-button="" tabindex="-1" class="toolbar-item text-center menu-target p-2 mx-1 d-md-none js-markdown-link-button" aria-label="Add a link" data-ga-click="Markdown Toolbar, click, saved reply">
<svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg>
</button>
<template class="js-markdown-link-dialog">
<div class="Box-header">
<h3 class="Box-title">Insert Link</h3>
</div>
<div class="Box-body overflow-auto">
<div>
<label class="d-block mb-1" for="js-dialog-link-text">Link Text</label>
<input type="text" class="mb-3 form-control input-block" id="js-dialog-link-text" autofocus="">
</div>
<div>
<label class="d-block mb-1" for="js-dialog-link-href">URL</label>
<input type="url" class="mb-3 form-control input-block" id="js-dialog-link-href">
</div>
<div class="pt-3 border-top">
<button type="button" class="btn btn-primary btn-block js-markdown-link-insert" data-close-dialog="" data-for-textarea="r448261 new_inline_comment_diff_${anchor}_${position}">
Add
</button>
</div>
</div>
</template>
<md-link tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 p-md-1 d-none d-md-block mx-1 js-modifier-label-key" aria-label="Add a link &lt;ctrl+k&gt;" data-ga-click="Markdown Toolbar, click, link" role="button" hotkey="k">
<svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg>
</md-link>
</div>
<div class="d-none d-md-inline-block mr-3">
<md-unordered-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1" aria-label="Add a bulleted list" data-ga-click="Markdown Toolbar, click, unordered list" role="button">
<svg class="octicon octicon-list-unordered" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 4a1 1 0 100-2 1 1 0 000 2zm3.75-1.5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM3 8a1 1 0 11-2 0 1 1 0 012 0zm-1 6a1 1 0 100-2 1 1 0 000 2z"></path></svg>
</md-unordered-list>
<md-ordered-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1" aria-label="Add a numbered list" data-ga-click="Markdown Toolbar, click, ordered list" role="button">
<svg class="octicon octicon-list-ordered" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.003 2.5a.5.5 0 00-.723-.447l-1.003.5a.5.5 0 00.446.895l.28-.14V6H.5a.5.5 0 000 1h2.006a.5.5 0 100-1h-.503V2.5zM5 3.25a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5A.75.75 0 015 3.25zm0 5a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5A.75.75 0 015 8.25zm0 5a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5a.75.75 0 01-.75-.75zM.924 10.32l.003-.004a.851.851 0 01.144-.153A.66.66 0 011.5 10c.195 0 .306.068.374.146a.57.57 0 01.128.376c0 .453-.269.682-.8 1.078l-.035.025C.692 11.98 0 12.495 0 13.5a.5.5 0 00.5.5h2.003a.5.5 0 000-1H1.146c.132-.197.351-.372.654-.597l.047-.035c.47-.35 1.156-.858 1.156-1.845 0-.365-.118-.744-.377-1.038-.268-.303-.658-.484-1.126-.484-.48 0-.84.202-1.068.392a1.858 1.858 0 00-.348.384l-.007.011-.002.004-.001.002-.001.001a.5.5 0 00.851.525zM.5 10.055l-.427-.26.427.26z"></path></svg>
</md-ordered-list>
<md-task-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1" aria-label="Add a task list" data-ga-click="Markdown Toolbar, click, task list" role="button" hotkey="L">
<svg class="octicon octicon-tasklist" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.5 2.75a.25.25 0 01.25-.25h10.5a.25.25 0 01.25.25v10.5a.25.25 0 01-.25.25H2.75a.25.25 0 01-.25-.25V2.75zM2.75 1A1.75 1.75 0 001 2.75v10.5c0 .966.784 1.75 1.75 1.75h10.5A1.75 1.75 0 0015 13.25V2.75A1.75 1.75 0 0013.25 1H2.75zm9.03 5.28a.75.75 0 00-1.06-1.06L6.75 9.19 5.28 7.72a.75.75 0 00-1.06 1.06l2 2a.75.75 0 001.06 0l4.5-4.5z"></path></svg>
</md-task-list>
</div>
<div class="d-flex d-xs-inline-block">
<md-mention tabindex="-1" class="flex-auto text-center toolbar-item tooltipped tooltipped-sw p-2 p-md-1 mx-1" aria-label="Directly mention a user or team" data-ga-click="Markdown Toolbar, click, mention" role="button">
<svg class="octicon octicon-mention" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4.75 2.37a6.5 6.5 0 006.5 11.26.75.75 0 01.75 1.298 8 8 0 113.994-7.273.754.754 0 01.006.095v1.5a2.75 2.75 0 01-5.072 1.475A4 4 0 1112 8v1.25a1.25 1.25 0 002.5 0V7.867a6.5 6.5 0 00-9.75-5.496V2.37zM10.5 8a2.5 2.5 0 10-5 0 2.5 2.5 0 005 0z"></path></svg>
</md-mention>
<label for="fc-r448261 new_inline_comment_diff_${anchor}_${position}" data-md-button="" tabindex="-1" class="d-block d-md-none btn-link flex-auto text-center toolbar-item tooltipped tooltipped-sw p-2 mx-1" aria-label="Attach an image or video">
<svg class="octicon octicon-image" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.75 2.5a.25.25 0 00-.25.25v10.5c0 .138.112.25.25.25h.94a.76.76 0 01.03-.03l6.077-6.078a1.75 1.75 0 012.412-.06L14.5 10.31V2.75a.25.25 0 00-.25-.25H1.75zm12.5 11H4.81l5.048-5.047a.25.25 0 01.344-.009l4.298 3.889v.917a.25.25 0 01-.25.25zm1.75-.25V2.75A1.75 1.75 0 0014.25 1H1.75A1.75 1.75 0 000 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0016 13.25zM5.5 6a.5.5 0 11-1 0 .5.5 0 011 0zM7 6a2 2 0 11-4 0 2 2 0 014 0z"></path></svg>
</label>
<md-ref tabindex="-1" class="flex-auto text-center toolbar-item tooltipped tooltipped-sw p-2 p-md-1 mx-1" aria-label="Reference an issue, pull request, or discussion" data-ga-click="Markdown Toolbar, click, reference" role="button">
<svg class="octicon octicon-cross-reference" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M16 1.25v4.146a.25.25 0 01-.427.177L14.03 4.03l-3.75 3.75a.75.75 0 11-1.06-1.06l3.75-3.75-1.543-1.543A.25.25 0 0111.604 1h4.146a.25.25 0 01.25.25zM2.75 3.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 01.75.75v2.19l2.72-2.72a.75.75 0 01.53-.22h4.5a.25.25 0 00.25-.25v-2.5a.75.75 0 111.5 0v2.5A1.75 1.75 0 0113.25 13H9.06l-2.573 2.573A1.457 1.457 0 014 14.543V13H2.75A1.75 1.75 0 011 11.25v-7.5C1 2.784 1.784 2 2.75 2h5.5a.75.75 0 010 1.5h-5.5z"></path></svg>
</md-ref>
<details class="details-reset details-overlay flex-auto toolbar-item select-menu select-menu-modal-right js-saved-reply-container hx_rsm" tabindex="-1">
<summary data-md-button="" tabindex="-1" class="text-center menu-target py-2 p-md-1 hx_rsm-trigger ml-1" aria-label="Insert a reply" data-ga-click="Markdown Toolbar, click, saved reply" aria-haspopup="menu" role="button">
<svg class="octicon octicon-reply" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6.78 1.97a.75.75 0 010 1.06L3.81 6h6.44A4.75 4.75 0 0115 10.75v2.5a.75.75 0 01-1.5 0v-2.5a3.25 3.25 0 00-3.25-3.25H3.81l2.97 2.97a.75.75 0 11-1.06 1.06L1.47 7.28a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 0z"></path></svg>
<span class="dropdown-caret hide-sm"></span>
</summary>
<details-menu style="z-index: 99;" class="select-menu-modal position-absolute right-0 js-saved-reply-menu hx_rsm-modal" data-menu-input="r448261 new_inline_comment_diff_${anchor}_${position}_saved_reply_id" src="/settings/replies?context=none" preload="" role="menu">
<div class="select-menu-header d-flex">
<span class="select-menu-title flex-auto">Select a reply</span>
<code><span class="border rounded-1 p-1 mr-2">ctrl .</span></code>
</div>
<include-fragment role="menuitem" aria-label="Loading">
<svg viewBox="0 0 16 16" fill="none" style="box-sizing: content-box; color: var(--color-icon-primary);" class="my-6 mx-auto d-block" width="32" height="32">
<circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke"></circle>
<path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke">
<animateTransform attributeName="transform" type="rotate" from="0 8 8" to="360 8 8" dur="1s" repeatCount="indefinite"></animateTransform>
</path>
</svg>
</include-fragment>
</details-menu>
</details>
</div>
<div class="Details-content--hidden d-block d-md-none width-full">
<md-header tabindex="-1" class="toolbar-item tooltipped tooltipped-sw py-2 pr-2 pl-1 mr-1" aria-label="Add header text" data-ga-click="Markdown Toolbar, click, header" role="button">
<svg class="octicon octicon-heading" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.75 2a.75.75 0 01.75.75V7h7V2.75a.75.75 0 011.5 0v10.5a.75.75 0 01-1.5 0V8.5h-7v4.75a.75.75 0 01-1.5 0V2.75A.75.75 0 013.75 2z"></path></svg>
</md-header>
<md-bold tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 mx-1 js-modifier-label-key" aria-label="Add bold text &lt;ctrl+b&gt;" data-ga-click="Markdown Toolbar, click, bold" role="button" hotkey="b">
<svg class="octicon octicon-bold" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 2a1 1 0 00-1 1v10a1 1 0 001 1h5.5a3.5 3.5 0 001.852-6.47A3.5 3.5 0 008.5 2H4zm4.5 5a1.5 1.5 0 100-3H5v3h3.5zM5 9v3h4.5a1.5 1.5 0 000-3H5z"></path></svg>
</md-bold>
<md-italic tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 mx-1 js-modifier-label-key" aria-label="Add italic text &lt;ctrl+i&gt;" data-ga-click="Markdown Toolbar, click, italic" role="button" hotkey="i">
<svg class="octicon octicon-italic" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6 2.75A.75.75 0 016.75 2h6.5a.75.75 0 010 1.5h-2.505l-3.858 9H9.25a.75.75 0 010 1.5h-6.5a.75.75 0 010-1.5h2.505l3.858-9H6.75A.75.75 0 016 2.75z"></path></svg>
</md-italic>
<md-unordered-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 mx-1" aria-label="Add a bulleted list" data-ga-click="Markdown Toolbar, click, unordered list" role="button">
<svg class="octicon octicon-list-unordered" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 4a1 1 0 100-2 1 1 0 000 2zm3.75-1.5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM3 8a1 1 0 11-2 0 1 1 0 012 0zm-1 6a1 1 0 100-2 1 1 0 000 2z"></path></svg>
</md-unordered-list>
<md-ordered-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 mx-1" aria-label="Add a numbered list" data-ga-click="Markdown Toolbar, click, ordered list" role="button">
<svg class="octicon octicon-list-ordered" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.003 2.5a.5.5 0 00-.723-.447l-1.003.5a.5.5 0 00.446.895l.28-.14V6H.5a.5.5 0 000 1h2.006a.5.5 0 100-1h-.503V2.5zM5 3.25a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5A.75.75 0 015 3.25zm0 5a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5A.75.75 0 015 8.25zm0 5a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5a.75.75 0 01-.75-.75zM.924 10.32l.003-.004a.851.851 0 01.144-.153A.66.66 0 011.5 10c.195 0 .306.068.374.146a.57.57 0 01.128.376c0 .453-.269.682-.8 1.078l-.035.025C.692 11.98 0 12.495 0 13.5a.5.5 0 00.5.5h2.003a.5.5 0 000-1H1.146c.132-.197.351-.372.654-.597l.047-.035c.47-.35 1.156-.858 1.156-1.845 0-.365-.118-.744-.377-1.038-.268-.303-.658-.484-1.126-.484-.48 0-.84.202-1.068.392a1.858 1.858 0 00-.348.384l-.007.011-.002.004-.001.002-.001.001a.5.5 0 00.851.525zM.5 10.055l-.427-.26.427.26z"></path></svg>
</md-ordered-list>
<md-task-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 mx-1" aria-label="Add a task list" data-ga-click="Markdown Toolbar, click, task list" role="button" hotkey="L">
<svg class="octicon octicon-tasklist" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.5 2.75a.25.25 0 01.25-.25h10.5a.25.25 0 01.25.25v10.5a.25.25 0 01-.25.25H2.75a.25.25 0 01-.25-.25V2.75zM2.75 1A1.75 1.75 0 001 2.75v10.5c0 .966.784 1.75 1.75 1.75h10.5A1.75 1.75 0 0015 13.25V2.75A1.75 1.75 0 0013.25 1H2.75zm9.03 5.28a.75.75 0 00-1.06-1.06L6.75 9.19 5.28 7.72a.75.75 0 00-1.06 1.06l2 2a.75.75 0 001.06 0l4.5-4.5z"></path></svg>
</md-task-list>
</div>
</markdown-toolbar>
</div>
<div class="comment-form-error js-comment-form-error" role="alert" hidden="">
There was an error creating your Commit.
</div>
<file-attachment class="js-upload-markdown-image is-default" input="fc-r448261 new_inline_comment_diff_${anchor}_${position}" role="tabpanel" data-tab-container-no-tabstop="true" data-upload-repository-id="114742422" data-upload-policy-url="/upload/policies/assets"><input type="hidden" value="Rf36JMcRW6vhLtMdWGGCz9ZVYGsI7mZrYNgy4XIxOU5P0KHkl+kJEu4Yhst8Nm4EDYyATMF6xrFwmyVr4SepmQ==" data-csrf="true" class="js-data-upload-policy-url-csrf">
<div class="write-content js-write-bucket tooltipped tooltipped-ne tooltipped-no-delay tooltipped-align-left-1 hide-reaction-suggestion upload-enabled mx-0 mt-2 mb-2 mx-md-2 hx_sm-hide-drag-drop js-reaction-suggestion" data-reaction-markup="Would you like to leave a reaction instead?">
<input type="hidden" name="saved_reply_id" id="r448261 new_inline_comment_diff_${anchor}_${position}_saved_reply_id" class="js-resettable-field" value="" data-reset-value="">
<text-expander keys=": @ #" data-issue-url="/suggestions/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1?issue_suggester=1&amp;repository=mullvadvpn-app&amp;user_id=mullvad" data-mention-url="/suggestions/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1?mention_suggester=1&amp;repository=mullvadvpn-app&amp;user_id=mullvad" multiword="#" data-emoji-url="/autocomplete/emoji">
<textarea name="comment[body]" id="r448261 new_inline_comment_diff_${anchor}_${position}" placeholder="Leave a comment" aria-label="Comment body" data-required-trimmed="Text field is empty" class="form-control input-contrast comment-form-textarea js-comment-field js-paste-markdown js-task-list-field js-quick-submit js-session-resumable js-saved-reply-shortcut-comment-field" required=""></textarea>
</text-expander>
<label class="text-normal drag-and-drop hx_drag-and-drop position-relative d-flex flex-justify-between">
<input accept=".gif,.jpeg,.jpg,.mov,.mp4,.png,.docx,.gz,.log,.pdf,.pptx,.txt,.xlsx,.zip" type="file" multiple="" class="manual-file-chooser manual-file-chooser-transparent top-0 right-0 bottom-0 left-0 width-full ml-0 form-control" id="fc-r448261 new_inline_comment_diff_${anchor}_${position}">
<span class="bg-gray-light position-absolute top-0 left-0 width-full height-full rounded-1" style="pointer-events: none;"></span>
<span class="position-relative pr-2" style="pointer-events: none;">
<span class="default">
Attach files by dragging &amp; dropping, selecting or pasting them.
</span>
<span class="loading">
<svg viewBox="0 0 16 16" fill="none" style="box-sizing: content-box; color: var(--color-icon-primary);" class="v-align-text-bottom mr-1" width="16" height="16">
<circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke"></circle>
<path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke">
<animateTransform attributeName="transform" type="rotate" from="0 8 8" to="360 8 8" dur="1s" repeatCount="indefinite"></animateTransform>
</path>
</svg> Uploading your files…
</span>
<span class="error bad-file">
We don’t support that file type.
<span class="drag-and-drop-error-info">
<span class="btn-link">Try again</span> with a
GIF, JPEG, JPG, MOV, MP4, PNG, DOCX, GZ, LOG, PDF, PPTX, TXT, XLSX or ZIP.
</span>
</span>
<span class="error bad-permissions">
Attaching documents requires write permission to this repository.
<span class="drag-and-drop-error-info">
<span class="btn-link">Try again</span> with a GIF, JPEG, JPG, MOV, MP4, PNG, DOCX, GZ, LOG, PDF, PPTX, TXT, XLSX or ZIP.
</span>
</span>
<span class="error repository-required">
We don’t support that file type.
<span class="drag-and-drop-error-info">
<span class="btn-link">Try again</span> with a GIF, JPEG, JPG, MOV, MP4, PNG, DOCX, GZ, LOG, PDF, PPTX, TXT, XLSX or ZIP.
</span>
</span>
<span class="error too-big">
Yowza, that’s a big file
<span class="drag-and-drop-error-info">
<span class="btn-link">Try again</span> with a file smaller than 10MB.
</span>
</span>
<span class="error empty">
This file is empty.
<span class="drag-and-drop-error-info">
<span class="btn-link">Try again</span> with a file that’s not empty.
</span>
</span>
<span class="error hidden-file">
This file is hidden.
<span class="drag-and-drop-error-info">
<span class="btn-link">Try again</span> with another file.
</span>
</span>
<span class="error failed-request">
Something went really wrong, and we can’t process that file.
<span class="drag-and-drop-error-info">
<span class="btn-link">Try again.</span>
</span>
</span>
</span>
<span class="tooltipped tooltipped-nw" aria-label="Styling with Markdown is supported">
<a class="muted-link position-relative d-inline" href="https://guides.github.com/features/mastering-markdown/" target="_blank" data-ga-click="Markdown Toolbar, click, help" aria-label="Learn about styling with Markdown">
<svg class="octicon octicon-markdown v-align-bottom" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M14.85 3H1.15C.52 3 0 3.52 0 4.15v7.69C0 12.48.52 13 1.15 13h13.69c.64 0 1.15-.52 1.15-1.15v-7.7C16 3.52 15.48 3 14.85 3zM9 11H7V8L5.5 9.92 4 8v3H2V5h2l1.5 2L7 5h2v6zm2.99.5L9.5 8H11V5h2v3h1.5l-2.51 3.5z"></path></svg>
</a>
</span>
</label>
<span class="js-sparkles-remaining-container" hidden=""></span>
</div>
</file-attachment>
<div role="tabpanel" class="js-preview-panel overflow-auto border-bottom mx-0 my-3 mx-md-2 mb-md-2" hidden="">
<input type="hidden" name="path" value="" class="js-path">
<input type="hidden" name="line" value="" class="js-line-number">
<input type="hidden" name="start_line" value="" class="js-start-line-number">
<input type="hidden" name="preview_side" value="" class="js-side">
<input type="hidden" name="preview_start_side" value="" class="js-start-side">
<input type="hidden" name="start_commit_oid" value="false" class="js-start-commit-oid">
<input type="hidden" name="end_commit_oid" value="false" class="js-end-commit-oid">
<input type="hidden" name="base_commit_oid" value="false" class="js-base-commit-oid">
<input type="hidden" name="comment_id" value="" class="js-comment-id">
<div class="comment js-suggested-changes-container" data-thread-side="">
<div class="comment-body markdown-body js-preview-body" data-skip-sizing="" style="max-height:50vh;">
<p>Nothing to preview</p>
</div>
</div>
</div>
<div class="comment-form-error mb-2 js-comment-update-error" hidden=""></div>
</tab-container>
<div class="form-actions float-md-right float-none px-md-2 px-0">
<div class="position-relative float-md-right float-none ml-md-1 ml-0">
<button name="single_comment" type="submit" value="1" class="btn review-simple-reply-button js-quick-submit-alternative mr-md-1 mr-0 width-full width-md-auto mb-md-0 mb-2 " data-disable-invalid="" data-disable-with="" disabled="disabled">
Add single comment
</button>
</div>
<button class="btn js-hide-inline-comment-form float-md-right float-none width-full width-md-auto" data-confirm-cancel-text="Are you sure you want to discard your unsaved changes?" type="button">Cancel</button>
</div>
</form> </div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<a name="diff-stat"></a>
<div id="toc" class="details-collapse table-of-contents js-details-container Details">
<div class="BtnGroup float-right ml-2" data-ga-load="Diff, view, Viewed Unified Diff">
<a class="btn btn-sm BtnGroup-item selected" aria-current="true" href="https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1?branch=ef5886281dd84b450ae25a9ffca036cffd16abd1&amp;diff=unified">
Unified
</a>
<a class="btn btn-sm BtnGroup-item" href="https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1?branch=ef5886281dd84b450ae25a9ffca036cffd16abd1&amp;diff=split">
Split
</a>
</div>
<div class="toc-diff-stats">
<svg class="octicon octicon-file-diff" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.75 1.5a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25h10.5a.25.25 0 00.25-.25V4.664a.25.25 0 00-.073-.177l-2.914-2.914a.25.25 0 00-.177-.073H2.75zM1 1.75C1 .784 1.784 0 2.75 0h7.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0113.25 16H2.75A1.75 1.75 0 011 14.25V1.75zm7 1.5a.75.75 0 01.75.75v1.5h1.5a.75.75 0 010 1.5h-1.5v1.5a.75.75 0 01-1.5 0V7h-1.5a.75.75 0 010-1.5h1.5V4A.75.75 0 018 3.25zm-3 8a.75.75 0 01.75-.75h4.5a.75.75 0 010 1.5h-4.5a.75.75 0 01-.75-.75z"></path></svg>
Showing
<button type="button" class="btn-link js-details-target" aria-expanded="false">
2 changed files
</button>
with
<strong>22 additions</strong>
and <strong>0 deletions</strong>.
</div>
<ol class="content collapse js-transitionable">
<li>
<span class="diffstat float-right">
<span class="text-green">
+5
</span>
<span class="text-red">
−0
</span>
<a href="#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" class="tooltipped tooltipped-s" aria-label="5 lines changed">
<span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span>
</a>
</span>
<svg title="modified" class="octicon octicon-diff-modified" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.75 2.5h10.5a.25.25 0 01.25.25v10.5a.25.25 0 01-.25.25H2.75a.25.25 0 01-.25-.25V2.75a.25.25 0 01.25-.25zM13.25 1H2.75A1.75 1.75 0 001 2.75v10.5c0 .966.784 1.75 1.75 1.75h10.5A1.75 1.75 0 0015 13.25V2.75A1.75 1.75 0 0013.25 1zM8 10a2 2 0 100-4 2 2 0 000 4z"></path></svg>
<a href="#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed">CHANGELOG.md</a>
</li>
<li>
<span class="diffstat float-right">
<span class="text-green">
+17
</span>
<span class="text-red">
−0
</span>
<a href="#diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" class="tooltipped tooltipped-s" aria-label="17 lines changed">
<span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span>
</a>
</span>
<svg title="modified" class="octicon octicon-diff-modified" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.75 2.5h10.5a.25.25 0 01.25.25v10.5a.25.25 0 01-.25.25H2.75a.25.25 0 01-.25-.25V2.75a.25.25 0 01.25-.25zM13.25 1H2.75A1.75 1.75 0 001 2.75v10.5c0 .966.784 1.75 1.75 1.75h10.5A1.75 1.75 0 0015 13.25V2.75A1.75 1.75 0 0013.25 1zM8 10a2 2 0 100-4 2 2 0 000 4z"></path></svg>
<a href="#diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144">talpid-core/src/firewall/linux.rs</a>
</li>
</ol>
</div>
<div id="files" class="diff-view commentable">
<div class="js-diff-progressive-container">
<div id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-details-container-group="file" class="file js-file js-details-container js-targetable-element Details
Details--on open
soft-wrap
file-type-prose
show-inline-notes
" data-file-type=".md" data-file-deleted="false">
<div class="file-header d-flex flex-md-row flex-column flex-md-items-center file-header--expandable js-file-header " data-path="CHANGELOG.md" data-short-path="06572a9" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-file-type=".md" data-file-deleted="false">
<div class="file-info flex-auto min-width-0 mb-md-0 mb-2">
<button type="button" class="btn-octicon js-details-target" aria-label="Toggle diff contents" aria-expanded="true" style="width: 22px;">
<svg class="octicon octicon-chevron-down Details-content--hidden" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z"></path></svg>
<svg class="octicon octicon-chevron-right Details-content--shown" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6.22 3.22a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06L9.94 8 6.22 4.28a.75.75 0 010-1.06z"></path></svg>
</button>
<span class="diffstat tooltipped tooltipped-e" aria-label="5 changes: 5 additions &amp; 0 deletions">5 <span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span></span>
<a title="CHANGELOG.md" class="link-gray-dark" href="#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed">CHANGELOG.md</a>
<clipboard-copy value="CHANGELOG.md" data-copy-feedback="Copied!" aria-label="Copy" class="js-clipboard-copy zeroclipboard-link text-gray link-hover-blue" tabindex="0" role="button">
<svg class="octicon octicon-clippy d-inline-block mx-1 js-clipboard-clippy-icon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M5.75 1a.75.75 0 00-.75.75v3c0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75v-3a.75.75 0 00-.75-.75h-4.5zm.75 3V2.5h3V4h-3zm-2.874-.467a.75.75 0 00-.752-1.298A1.75 1.75 0 002 3.75v9.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 13.25v-9.5a1.75 1.75 0 00-.874-1.515.75.75 0 10-.752 1.298.25.25 0 01.126.217v9.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-9.5a.25.25 0 01.126-.217z"></path></svg>
<svg class="octicon octicon-check js-clipboard-check-icon mx-1 d-inline-block d-none text-green" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>
</clipboard-copy>
</div>
<div class="file-actions pt-0 mb-md-0 mb-2 ml-md-2 flex-shrink-0 flex-md-justify-end">
<div class="d-flex flex-justify-end">
<span class="BtnGroup flex-auto min-width-0">
<!-- '"` --><!-- </textarea></xmp> --><form class="BtnGroup-parent js-prose-diff-toggle-form" action="/mullvad/mullvadvpn-app/diffs/0?commentable=true&amp;commit=ef5886281dd84b450ae25a9ffca036cffd16abd1&amp;sha1=b94cdac690cbb51cbee07d5bd2f011e80a7f2ef0&amp;sha2=ef5886281dd84b450ae25a9ffca036cffd16abd1" accept-charset="UTF-8" method="get"> <button class="btn btn-sm BtnGroup-item tooltipped tooltipped-w source js-source selected" aria-current="true" aria-label="Display the source diff" type="submit" data-disable-with="">
<svg class="octicon octicon-code" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4.72 3.22a.75.75 0 011.06 1.06L2.06 8l3.72 3.72a.75.75 0 11-1.06 1.06L.47 8.53a.75.75 0 010-1.06l4.25-4.25zm6.56 0a.75.75 0 10-1.06 1.06L13.94 8l-3.72 3.72a.75.75 0 101.06 1.06l4.25-4.25a.75.75 0 000-1.06l-4.25-4.25z"></path></svg>
</button>
</form> <!-- '"` --><!-- </textarea></xmp> --><form class="BtnGroup-parent js-prose-diff-toggle-form" action="/mullvad/mullvadvpn-app/diffs/0?commentable=true&amp;commit=ef5886281dd84b450ae25a9ffca036cffd16abd1&amp;sha1=b94cdac690cbb51cbee07d5bd2f011e80a7f2ef0&amp;sha2=ef5886281dd84b450ae25a9ffca036cffd16abd1&amp;short_path=06572a9" accept-charset="UTF-8" method="get"> <button class="btn btn-sm BtnGroup-item tooltipped tooltipped-w rendered js-rendered" aria-label="Display the rich diff" type="submit" data-disable-with="">
<svg class="octicon octicon-file" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z"></path></svg>
</button>
</form> </span>
<details class="js-file-header-dropdown dropdown details-overlay details-reset pr-2 pl-2">
<summary class="height-full" aria-haspopup="menu" role="button">
<div class="height-full d-flex flex-items-center link-gray">
<svg aria-label="Show options" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" version="1.1" width="16" height="16" role="img"><path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path></svg>
</div>
</summary>
<details-menu class="dropdown-menu dropdown-menu-sw show-more-popover text-gray-dark position-absolute f5" style="width:185px; z-index:99; right: -4px;" role="menu">
<label role="menuitemradio" class="dropdown-item btn-link text-normal d-block pl-5" tabindex="0" aria-checked="true">
<span class="position-absolute" style="margin-left: -20px;"><svg class="octicon octicon-check" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg></span>
<input type="checkbox" checked="checked" class="d-none js-toggle-file-notes">
Show comments
</label>
<div role="none" class="dropdown-divider"></div>
<a href="https://github.com/mullvad/mullvadvpn-app/blob/ef5886281dd84b450ae25a9ffca036cffd16abd1/CHANGELOG.md" class="pl-5 dropdown-item btn-link" rel="nofollow" role="menuitem" data-ga-click="View file, click, location:files_changed_dropdown">
View file
</a>
<button type="button" disabled="disabled" role="menuitem" class="pl-5 dropdown-item btn-link" aria-label="You must be signed in and have push access to make changes.">
Edit file
</button>
<button type="button" disabled="disabled" role="menuitem" class="pl-5 dropdown-item btn-link" aria-label="You must be signed in and have push access to delete this file.">
Delete file
</button>
<div role="none" class="dropdown-divider"></div>
</details-menu>
</details>
</div>
</div>
</div>
<div class="js-file-content Details-content--hidden" data-hydro-view="{&quot;event_type&quot;:&quot;pull_request.select_diff_range&quot;,&quot;payload&quot;:{&quot;actor_id&quot;:15262083,&quot;pull_request_id&quot;:null,&quot;repository_id&quot;:null,&quot;diff_type&quot;:&quot;UNIFIED&quot;,&quot;whitespace_ignored&quot;:false,&quot;originating_url&quot;:&quot;https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1&quot;,&quot;user_id&quot;:15262083}}" data-hydro-view-hmac="a61db3c6d5b7f2d69d089a0d3e0173d5861c4b240a5674105b596500325f89ab">
<div class="data highlight js-blob-wrapper " style="overflow-x: auto">
<table class="diff-table js-diff-table tab-size " data-tab-size="8" data-diff-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-paste-markdown-skip="">
<colgroup>
<col width="40">
<col width="40">
<col>
</colgroup>
<tbody><tr class="js-expandable-line" data-position="0">
<td class="blob-num blob-num-expandable" colspan="2">
<a href="#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" class="js-expand directional-expander single-expander" title="Expand Up" aria-label="Expand Up" data-url="/mullvad/mullvadvpn-app/blob_excerpt/bf615a4d2473c78c24b54da7384243fe13c47ff3?diff=unified&amp;direction=up&amp;in_wiki_context=&amp;last_left=&amp;last_right=&amp;left=26&amp;left_hunk_size=6&amp;mode=100644&amp;path=CHANGELOG.md&amp;right=26&amp;right_hunk_size=11" data-left-range="1-25" data-right-range="1-25">
<svg class="octicon octicon-fold-up" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.823 1.677L4.927 4.573A.25.25 0 005.104 5H7.25v3.236a.75.75 0 101.5 0V5h2.146a.25.25 0 00.177-.427L8.177 1.677a.25.25 0 00-.354 0zM13.75 11a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zm-3.75.75a.75.75 0 01.75-.75h.5a.75.75 0 010 1.5h-.5a.75.75 0 01-.75-.75zM7.75 11a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zM4 11.75a.75.75 0 01.75-.75h.5a.75.75 0 010 1.5h-.5a.75.75 0 01-.75-.75zM1.75 11a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5z"></path></svg>
</a>
</td>
<td class="blob-code blob-code-inner blob-code-hunk">@@ -26,6 +26,11 @@ Line wrap the file at 100 chars. Th</td>
</tr>
<tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
<td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edL26" data-line-number="26" class="blob-num blob-num-context js-linkable-line-number"></td>
<td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR26" data-line-number="26" class="blob-num blob-num-context js-linkable-line-number"></td>
<td class="blob-code blob-code-context">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="1" data-side="right" data-line="26" data-original-line=" ### Fixed" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker=" "><span class="pl-mh"><span class="pl-mh">###</span><span class="pl-mh"> </span>Fixed</span></span></td>
</tr>
<tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
<td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edL27" data-line-number="27" class="blob-num blob-num-context js-linkable-line-number"></td>
<td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR27" data-line-number="27" class="blob-num blob-num-context js-linkable-line-number"></td>
<td class="blob-code blob-code-context">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="2" data-side="right" data-line="27" data-original-line=" - Fix improved WireGuard port selection" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker=" "><span class="pl-v">-</span> Fix improved WireGuard port selection</span></td>
</tr>
<tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
<td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edL28" data-line-number="28" class="blob-num blob-num-context js-linkable-line-number"></td>
<td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR28" data-line-number="28" class="blob-num blob-num-context js-linkable-line-number"></td>
<td class="blob-code blob-code-context">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="3" data-side="right" data-line="28" data-original-line=" " type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker=" "><br></span></td>
</tr>
<tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR29" data-line-number="29" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="4" data-side="right" data-line="29" data-original-line="+### Security" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"><span class="pl-mh"><span class="pl-mh">###</span><span class="pl-mh"> </span>Security</span></span></td>
</tr>
<tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR30" data-line-number="30" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="5" data-side="right" data-line="30" data-original-line="+#### Linux" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"><span class="pl-mh"><span class="pl-mh">####</span><span class="pl-mh"> </span>Linux</span></span></td>
</tr>
<tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR31" data-line-number="31" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="6" data-side="right" data-line="31" data-original-line="+- Stop [CVE-2019-14899](https://seclists.org/oss-sec/2019/q4/122) by dropping all packets destined" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"><span class="pl-v">-</span> Stop [<span class="pl-e">CVE-2019-14899</span>](https://seclists.org/oss-sec/2019/q4/122) by dropping all packets destined</span></td>
</tr>
<tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR32" data-line-number="32" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="7" data-side="right" data-line="32" data-original-line="+ for the tunnel IP coming in on some other interface than the tunnel." type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"> for the tunnel IP coming in on some other interface than the tunnel.</span></td>
</tr>
<tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR33" data-line-number="33" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="8" data-side="right" data-line="33" data-original-line="+" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"><br></span></td>
</tr>
<tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
<td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edL29" data-line-number="29" class="blob-num blob-num-context js-linkable-line-number"></td>
<td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR34" data-line-number="34" class="blob-num blob-num-context js-linkable-line-number"></td>
<td class="blob-code blob-code-context">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="9" data-side="right" data-line="34" data-original-line=" " type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker=" "><br></span></td>
</tr>
<tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
<td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edL30" data-line-number="30" class="blob-num blob-num-context js-linkable-line-number"></td>
<td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR35" data-line-number="35" class="blob-num blob-num-context js-linkable-line-number"></td>
<td class="blob-code blob-code-context">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="10" data-side="right" data-line="35" data-original-line=" ## [2019.10-beta2] - 2019-12-05" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker=" "><span class="pl-mh"><span class="pl-mh">##</span><span class="pl-mh"> </span>[2019.10-beta2] - 2019-12-05</span></span></td>
</tr>
<tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
<td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edL31" data-line-number="31" class="blob-num blob-num-context js-linkable-line-number"></td>
<td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR36" data-line-number="36" class="blob-num blob-num-context js-linkable-line-number"></td>
<td class="blob-code blob-code-context">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="11" data-side="right" data-line="36" data-original-line=" ### Added" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker=" "><span class="pl-mh"><span class="pl-mh">###</span><span class="pl-mh"> </span>Added</span></span></td>
</tr>
<tr class="js-expandable-line" data-position="">
<td class="blob-num blob-num-expandable" colspan="2">
<a href="#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" class="js-expand directional-expander single-expander" title="Expand Down" aria-label="Expand Down" data-url="/mullvad/mullvadvpn-app/blob_excerpt/bf615a4d2473c78c24b54da7384243fe13c47ff3?diff=unified&amp;direction=down&amp;in_wiki_context=&amp;last_left=31&amp;last_right=36&amp;left=968&amp;left_hunk_size=&amp;mode=100644&amp;path=CHANGELOG.md&amp;right=968&amp;right_hunk_size=" data-left-range="32-967" data-right-range="37-967">
<svg class="octicon octicon-fold-down" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.177 14.323l2.896-2.896a.25.25 0 00-.177-.427H8.75V7.764a.75.75 0 10-1.5 0V11H5.104a.25.25 0 00-.177.427l2.896 2.896a.25.25 0 00.354 0zM2.25 5a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM6 4.25a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5a.75.75 0 01.75.75zM8.25 5a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM12 4.25a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5a.75.75 0 01.75.75zm2.25.75a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5z"></path></svg>
</a>
</td>
<td class="blob-code blob-code-inner blob-code-hunk"></td>
</tr>
</tbody></table>
</div>
</div>
</div>
<div id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-details-container-group="file" class="file js-file js-details-container js-targetable-element Details
Details--on open
show-inline-notes
" data-file-type=".rs" data-file-deleted="false">
<div class="file-header d-flex flex-md-row flex-column flex-md-items-center file-header--expandable js-file-header " data-path="talpid-core/src/firewall/linux.rs" data-short-path="9b97aa4" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-file-type=".rs" data-file-deleted="false">
<div class="file-info flex-auto min-width-0 mb-md-0 mb-2">
<button type="button" class="btn-octicon js-details-target" aria-label="Toggle diff contents" aria-expanded="true" style="width: 22px;">
<svg class="octicon octicon-chevron-down Details-content--hidden" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z"></path></svg>
<svg class="octicon octicon-chevron-right Details-content--shown" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6.22 3.22a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06L9.94 8 6.22 4.28a.75.75 0 010-1.06z"></path></svg>
</button>
<span class="diffstat tooltipped tooltipped-e" aria-label="17 changes: 17 additions &amp; 0 deletions">17 <span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span></span>
<a title="talpid-core/src/firewall/linux.rs" class="link-gray-dark" href="#diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144">talpid-core/src/firewall/linux.rs</a>
<clipboard-copy value="talpid-core/src/firewall/linux.rs" data-copy-feedback="Copied!" aria-label="Copy" class="js-clipboard-copy zeroclipboard-link text-gray link-hover-blue" tabindex="0" role="button">
<svg class="octicon octicon-clippy d-inline-block mx-1 js-clipboard-clippy-icon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M5.75 1a.75.75 0 00-.75.75v3c0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75v-3a.75.75 0 00-.75-.75h-4.5zm.75 3V2.5h3V4h-3zm-2.874-.467a.75.75 0 00-.752-1.298A1.75 1.75 0 002 3.75v9.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 13.25v-9.5a1.75 1.75 0 00-.874-1.515.75.75 0 10-.752 1.298.25.25 0 01.126.217v9.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-9.5a.25.25 0 01.126-.217z"></path></svg>
<svg class="octicon octicon-check js-clipboard-check-icon mx-1 d-inline-block d-none text-green" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>
</clipboard-copy>
</div>
<div class="file-actions pt-0 mb-md-0 mb-2 ml-md-2 flex-shrink-0 flex-md-justify-end">
<div class="d-flex flex-justify-end">
<details class="js-file-header-dropdown dropdown details-overlay details-reset pr-2 pl-2">
<summary class="height-full" aria-haspopup="menu" role="button">
<div class="height-full d-flex flex-items-center link-gray">
<svg aria-label="Show options" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" version="1.1" width="16" height="16" role="img"><path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path></svg>
</div>
</summary>
<details-menu class="dropdown-menu dropdown-menu-sw show-more-popover text-gray-dark position-absolute f5" style="width:185px; z-index:99; right: -4px;" role="menu">
<label role="menuitemradio" class="dropdown-item btn-link text-normal d-block pl-5" tabindex="0" aria-checked="true">
<span class="position-absolute" style="margin-left: -20px;"><svg class="octicon octicon-check" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg></span>
<input type="checkbox" checked="checked" class="d-none js-toggle-file-notes">
Show comments
</label>
<div role="none" class="dropdown-divider"></div>
<a href="https://github.com/mullvad/mullvadvpn-app/blob/ef5886281dd84b450ae25a9ffca036cffd16abd1/talpid-core/src/firewall/linux.rs" class="pl-5 dropdown-item btn-link" rel="nofollow" role="menuitem" data-ga-click="View file, click, location:files_changed_dropdown">
View file
</a>
<button type="button" disabled="disabled" role="menuitem" class="pl-5 dropdown-item btn-link" aria-label="You must be signed in and have push access to make changes.">
Edit file
</button>
<button type="button" disabled="disabled" role="menuitem" class="pl-5 dropdown-item btn-link" aria-label="You must be signed in and have push access to delete this file.">
Delete file
</button>
<div role="none" class="dropdown-divider"></div>
</details-menu>
</details>
</div>
</div>
</div>
<div class="js-file-content Details-content--hidden" data-hydro-view="{&quot;event_type&quot;:&quot;pull_request.select_diff_range&quot;,&quot;payload&quot;:{&quot;actor_id&quot;:15262083,&quot;pull_request_id&quot;:null,&quot;repository_id&quot;:null,&quot;diff_type&quot;:&quot;UNIFIED&quot;,&quot;whitespace_ignored&quot;:false,&quot;originating_url&quot;:&quot;https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1&quot;,&quot;user_id&quot;:15262083}}" data-hydro-view-hmac="a61db3c6d5b7f2d69d089a0d3e0173d5861c4b240a5674105b596500325f89ab">
<div class="data highlight js-blob-wrapper " style="overflow-x: auto">
<table class="diff-table js-diff-table tab-size " data-tab-size="4" data-diff-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-paste-markdown-skip="">
<tbody><tr class="js-expandable-line" data-position="0">
<td class="blob-num blob-num-expandable" colspan="2">
<a href="#diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" class="js-expand directional-expander single-expander" title="Expand Up" aria-label="Expand Up" data-url="/mullvad/mullvadvpn-app/blob_excerpt/e2f6f4f73694de2429b2fb889b97b82f4c89cc89?diff=unified&amp;direction=up&amp;in_wiki_context=&amp;last_left=&amp;last_right=&amp;left=362&amp;left_hunk_size=6&amp;mode=100644&amp;path=talpid-core%2Fsrc%2Ffirewall%2Flinux.rs&amp;right=362&amp;right_hunk_size=9" data-left-range="1-361" data-right-range="1-361">
<svg class="octicon octicon-fold-up" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.823 1.677L4.927 4.573A.25.25 0 005.104 5H7.25v3.236a.75.75 0 101.5 0V5h2.146a.25.25 0 00.177-.427L8.177 1.677a.25.25 0 00-.354 0zM13.75 11a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zm-3.75.75a.75.75 0 01.75-.75h.5a.75.75 0 010 1.5h-.5a.75.75 0 01-.75-.75zM7.75 11a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zM4 11.75a.75.75 0 01.75-.75h.5a.75.75 0 010 1.5h-.5a.75.75 0 01-.75-.75zM1.75 11a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5z"></path></svg>
</a>
</td>
<td class="blob-code blob-code-inner blob-code-hunk">@@ -362,6 +362,9 @@ impl&lt;'a&gt; PolicyBatch&lt;'a&gt; {</td>
</tr>
<tr data-hunk="03cc8ecf43ee1f43b1c23c7d59a34b92bc68d8b2262a5e4cb4c74dc47b4866f8">
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L362" data-line-number="362" class="blob-num blob-num-context js-linkable-line-number"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R362" data-line-number="362" class="blob-num blob-num-context js-linkable-line-number"></td>
<td class="blob-code blob-code-context">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="1" data-side="right" data-line="362" data-original-line=" self.add_dns_rule(tunnel, TransportProtocol::Udp)?;" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker=" "> <span class="pl-c1">self</span>.<span class="pl-en">add_dns_rule</span>(tunnel, TransportProtocol<span class="pl-k">::</span>Udp)?;</span></td>
</tr>
<tr data-hunk="03cc8ecf43ee1f43b1c23c7d59a34b92bc68d8b2262a5e4cb4c74dc47b4866f8">
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L363" data-line-number="363" class="blob-num blob-num-context js-linkable-line-number"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R363" data-line-number="363" class="blob-num blob-num-context js-linkable-line-number"></td>
<td class="blob-code blob-code-context">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="2" data-side="right" data-line="363" data-original-line=" self.add_dns_rule(tunnel, TransportProtocol::Tcp)?;" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker=" "> <span class="pl-c1">self</span>.<span class="pl-en">add_dns_rule</span>(tunnel, TransportProtocol<span class="pl-k">::</span>Tcp)?;</span></td>
</tr>
<tr data-hunk="03cc8ecf43ee1f43b1c23c7d59a34b92bc68d8b2262a5e4cb4c74dc47b4866f8">
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L364" data-line-number="364" class="blob-num blob-num-context js-linkable-line-number"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R364" data-line-number="364" class="blob-num blob-num-context js-linkable-line-number"></td>
<td class="blob-code blob-code-context">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="3" data-side="right" data-line="364" data-original-line=" self.add_allow_tunnel_rules(tunnel)?;" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker=" "> <span class="pl-c1">self</span>.<span class="pl-en">add_allow_tunnel_rules</span>(tunnel)?;</span></td>
</tr>
<tr data-hunk="03cc8ecf43ee1f43b1c23c7d59a34b92bc68d8b2262a5e4cb4c74dc47b4866f8">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R365" data-line-number="365" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="4" data-side="right" data-line="365" data-original-line="+ if *allow_lan {" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-k">if</span> <span class="pl-k">*</span>allow_lan {</span></td>
</tr>
<tr data-hunk="03cc8ecf43ee1f43b1c23c7d59a34b92bc68d8b2262a5e4cb4c74dc47b4866f8">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R366" data-line-number="366" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="5" data-side="right" data-line="366" data-original-line="+ self.add_block_cve_2019_14899(tunnel);" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-c1">self</span>.<span class="pl-en">add_block_cve_2019_14899</span>(tunnel);</span></td>
</tr>
<tr data-hunk="03cc8ecf43ee1f43b1c23c7d59a34b92bc68d8b2262a5e4cb4c74dc47b4866f8">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R367" data-line-number="367" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="6" data-side="right" data-line="367" data-original-line="+ }" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"> }</span></td>
</tr>
<tr data-hunk="03cc8ecf43ee1f43b1c23c7d59a34b92bc68d8b2262a5e4cb4c74dc47b4866f8">
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L365" data-line-number="365" class="blob-num blob-num-context js-linkable-line-number"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R368" data-line-number="368" class="blob-num blob-num-context js-linkable-line-number"></td>
<td class="blob-code blob-code-context">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="7" data-side="right" data-line="368" data-original-line=" *allow_lan" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker=" "> <span class="pl-k">*</span>allow_lan</span></td>
</tr>
<tr data-hunk="03cc8ecf43ee1f43b1c23c7d59a34b92bc68d8b2262a5e4cb4c74dc47b4866f8">
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L366" data-line-number="366" class="blob-num blob-num-context js-linkable-line-number"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R369" data-line-number="369" class="blob-num blob-num-context js-linkable-line-number"></td>
<td class="blob-code blob-code-context">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="8" data-side="right" data-line="369" data-original-line=" }" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker=" "> }</span></td>
</tr>
<tr data-hunk="03cc8ecf43ee1f43b1c23c7d59a34b92bc68d8b2262a5e4cb4c74dc47b4866f8">
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L367" data-line-number="367" class="blob-num blob-num-context js-linkable-line-number"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R370" data-line-number="370" class="blob-num blob-num-context js-linkable-line-number"></td>
<td class="blob-code blob-code-context">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="9" data-side="right" data-line="370" data-original-line=" FirewallPolicy::Blocked { allow_lan } =&gt; *allow_lan," type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker=" "> FirewallPolicy<span class="pl-k">::</span>Blocked { allow_lan } <span class="pl-k">=&gt;</span> <span class="pl-k">*</span>allow_lan,</span></td>
</tr>
<tr class="js-expandable-line" data-position="10">
<td class="blob-num blob-num-expandable" colspan="2">
<a href="#diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" class="js-expand directional-expander" title="Expand Down" aria-label="Expand Down" data-url="/mullvad/mullvadvpn-app/blob_excerpt/e2f6f4f73694de2429b2fb889b97b82f4c89cc89?diff=unified&amp;direction=down&amp;in_wiki_context=&amp;last_left=367&amp;last_right=370&amp;left=470&amp;left_hunk_size=6&amp;mode=100644&amp;path=talpid-core%2Fsrc%2Ffirewall%2Flinux.rs&amp;right=473&amp;right_hunk_size=20" data-left-range="368-417" data-right-range="371-420">
<svg class="octicon octicon-fold-down" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.177 14.323l2.896-2.896a.25.25 0 00-.177-.427H8.75V7.764a.75.75 0 10-1.5 0V11H5.104a.25.25 0 00-.177.427l2.896 2.896a.25.25 0 00.354 0zM2.25 5a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM6 4.25a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5a.75.75 0 01.75.75zM8.25 5a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM12 4.25a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5a.75.75 0 01.75.75zm2.25.75a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5z"></path></svg>
</a>
<a href="#diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" class="js-expand directional-expander" title="Expand Up" aria-label="Expand Up" data-url="/mullvad/mullvadvpn-app/blob_excerpt/e2f6f4f73694de2429b2fb889b97b82f4c89cc89?diff=unified&amp;direction=up&amp;in_wiki_context=&amp;last_left=367&amp;last_right=370&amp;left=470&amp;left_hunk_size=6&amp;mode=100644&amp;path=talpid-core%2Fsrc%2Ffirewall%2Flinux.rs&amp;right=473&amp;right_hunk_size=20" data-left-range="418-469" data-right-range="421-472">
<svg class="octicon octicon-fold-up" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.823 1.677L4.927 4.573A.25.25 0 005.104 5H7.25v3.236a.75.75 0 101.5 0V5h2.146a.25.25 0 00.177-.427L8.177 1.677a.25.25 0 00-.354 0zM13.75 11a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zm-3.75.75a.75.75 0 01.75-.75h.5a.75.75 0 010 1.5h-.5a.75.75 0 01-.75-.75zM7.75 11a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zM4 11.75a.75.75 0 01.75-.75h.5a.75.75 0 010 1.5h-.5a.75.75 0 01-.75-.75zM1.75 11a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5z"></path></svg>
</a>
</td>
<td class="blob-code blob-code-inner blob-code-hunk">@@ -470,6 +473,20 @@ impl&lt;'a&gt; PolicyBatch&lt;'a&gt; {</td>
</tr>
<tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L470" data-line-number="470" class="blob-num blob-num-context js-linkable-line-number"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R473" data-line-number="473" class="blob-num blob-num-context js-linkable-line-number"></td>
<td class="blob-code blob-code-context">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="11" data-side="right" data-line="473" data-original-line=" Ok(())" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker=" "> <span class="pl-c1">Ok</span>(())</span></td>
</tr>
<tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L471" data-line-number="471" class="blob-num blob-num-context js-linkable-line-number"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R474" data-line-number="474" class="blob-num blob-num-context js-linkable-line-number"></td>
<td class="blob-code blob-code-context">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="12" data-side="right" data-line="474" data-original-line=" }" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker=" "> }</span></td>
</tr>
<tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L472" data-line-number="472" class="blob-num blob-num-context js-linkable-line-number"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R475" data-line-number="475" class="blob-num blob-num-context js-linkable-line-number"></td>
<td class="blob-code blob-code-context">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="13" data-side="right" data-line="475" data-original-line=" " type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker=" "><br></span></td>
</tr>
<tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R476" data-line-number="476" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="14" data-side="right" data-line="476" data-original-line="+ /// Adds rules for stopping [CVE-2019-14899](https://seclists.org/oss-sec/2019/q4/122)." type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-c">/// Adds rules for stopping [CVE-2019-14899](https://seclists.org/oss-sec/2019/q4/122).</span></span></td>
</tr>
<tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R477" data-line-number="477" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="15" data-side="right" data-line="477" data-original-line="+ /// An attacker on the same local network as the VPN connected device could figure out" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-c">/// An attacker on the same local network as the VPN connected device could figure out</span></span></td>
</tr>
<tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R478" data-line-number="478" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="16" data-side="right" data-line="478" data-original-line="+ /// the tunnel IP the device used if the device was set to not filter reverse path (rp_filter.)" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-c">/// the tunnel IP the device used if the device was set to not filter reverse path (rp_filter.)</span></span></td>
</tr>
<tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R479" data-line-number="479" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="17" data-side="right" data-line="479" data-original-line="+ /// These rules stops all packets coming in to the tunnel IP. As such, these rules must come" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-c">/// These rules stops all packets coming in to the tunnel IP. As such, these rules must come</span></span></td>
</tr>
<tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R480" data-line-number="480" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="18" data-side="right" data-line="480" data-original-line="+ /// after the rule allowing the tunnel, otherwise even the tunnel can't talk to that IP." type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-c">/// after the rule allowing the tunnel, otherwise even the tunnel can't talk to that IP.</span></span></td>
</tr>
<tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R481" data-line-number="481" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="19" data-side="right" data-line="481" data-original-line="+ fn add_block_cve_2019_14899(&amp;mut self, tunnel: &amp;tunnel::TunnelMetadata) {" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-k">fn</span> <span class="pl-en">add_block_cve_2019_14899</span>(<span class="pl-k">&amp;</span><span class="pl-k">mut</span> <span class="pl-c1">self</span>, tunnel: <span class="pl-k">&amp;</span>tunnel::TunnelMetadata) {</span></td>
</tr>
<tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R482" data-line-number="482" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="20" data-side="right" data-line="482" data-original-line="+ for tunnel_ip in &amp;tunnel.ips {" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-k">for</span> tunnel_ip <span class="pl-k">in</span> <span class="pl-k">&amp;</span>tunnel.ips {</span></td>
</tr>
<tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R483" data-line-number="483" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="21" data-side="right" data-line="483" data-original-line="+ let mut rule = Rule::new(&amp;self.in_chain);" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-k">let</span> <span class="pl-k">mut</span> rule <span class="pl-k">=</span> Rule<span class="pl-k">::</span><span class="pl-en">new</span>(<span class="pl-k">&amp;</span><span class="pl-c1">self</span>.in_chain);</span></td>
</tr>
<tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R484" data-line-number="484" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="22" data-side="right" data-line="484" data-original-line="+ check_ip(&amp;mut rule, End::Dst, *tunnel_ip);" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-en">check_ip</span>(<span class="pl-k">&amp;</span><span class="pl-k">mut</span> rule, End<span class="pl-k">::</span>Dst, <span class="pl-k">*</span>tunnel_ip);</span></td>
</tr>
<tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R485" data-line-number="485" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="23" data-side="right" data-line="485" data-original-line="+ add_verdict(&amp;mut rule, &amp;Verdict::Drop);" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-en">add_verdict</span>(<span class="pl-k">&amp;</span><span class="pl-k">mut</span> rule, <span class="pl-k">&amp;</span>Verdict<span class="pl-k">::</span><span class="pl-c1">Drop</span>);</span></td>
</tr>
<tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R486" data-line-number="486" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="24" data-side="right" data-line="486" data-original-line="+ self.batch.add(&amp;rule, nftnl::MsgType::Add);" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-c1">self</span>.batch.<span class="pl-en">add</span>(<span class="pl-k">&amp;</span>rule, nftnl<span class="pl-k">::</span>MsgType<span class="pl-k">::</span>Add);</span></td>
</tr>
<tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R487" data-line-number="487" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="25" data-side="right" data-line="487" data-original-line="+ }" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"> }</span></td>
</tr>
<tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R488" data-line-number="488" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="26" data-side="right" data-line="488" data-original-line="+ }" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"> }</span></td>
</tr>
<tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
<td class="blob-num blob-num-addition empty-cell"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R489" data-line-number="489" class="blob-num blob-num-addition js-linkable-line-number"></td>
<td class="blob-code blob-code-addition">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="27" data-side="right" data-line="489" data-original-line="+" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker="+"><br></span></td>
</tr>
<tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L473" data-line-number="473" class="blob-num blob-num-context js-linkable-line-number"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R490" data-line-number="490" class="blob-num blob-num-context js-linkable-line-number"></td>
<td class="blob-code blob-code-context">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="28" data-side="right" data-line="490" data-original-line=" fn add_allow_lan_rules(&amp;mut self) {" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker=" "> <span class="pl-k">fn</span> <span class="pl-en">add_allow_lan_rules</span>(<span class="pl-k">&amp;</span><span class="pl-k">mut</span> <span class="pl-c1">self</span>) {</span></td>
</tr>
<tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L474" data-line-number="474" class="blob-num blob-num-context js-linkable-line-number"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R491" data-line-number="491" class="blob-num blob-num-context js-linkable-line-number"></td>
<td class="blob-code blob-code-context">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="29" data-side="right" data-line="491" data-original-line=" // LAN -&gt; LAN" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker=" "> <span class="pl-c">// LAN -&gt; LAN</span></span></td>
</tr>
<tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L475" data-line-number="475" class="blob-num blob-num-context js-linkable-line-number"></td>
<td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R492" data-line-number="492" class="blob-num blob-num-context js-linkable-line-number"></td>
<td class="blob-code blob-code-context">
<button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="30" data-side="right" data-line="492" data-original-line=" for net in &amp;*super::ALLOWED_LAN_NETS {" type="button" aria-label="Add line comment">
<svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path></svg>
</button>
<span class="blob-code-inner blob-code-marker" data-code-marker=" "> <span class="pl-k">for</span> net <span class="pl-k">in</span> <span class="pl-k">&amp;</span><span class="pl-k">*</span><span class="pl-k">super</span><span class="pl-k">::</span>ALLOWED_LAN_NETS {</span></td>
</tr>
<tr class="js-expandable-line" data-position="">
<td class="blob-num blob-num-expandable" colspan="2">
<a href="#diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" class="js-expand directional-expander single-expander" title="Expand Down" aria-label="Expand Down" data-url="/mullvad/mullvadvpn-app/blob_excerpt/e2f6f4f73694de2429b2fb889b97b82f4c89cc89?diff=unified&amp;direction=down&amp;in_wiki_context=&amp;last_left=475&amp;last_right=492&amp;left=644&amp;left_hunk_size=&amp;mode=100644&amp;path=talpid-core%2Fsrc%2Ffirewall%2Flinux.rs&amp;right=644&amp;right_hunk_size=" data-left-range="476-643" data-right-range="493-643">
<svg class="octicon octicon-fold-down" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.177 14.323l2.896-2.896a.25.25 0 00-.177-.427H8.75V7.764a.75.75 0 10-1.5 0V11H5.104a.25.25 0 00-.177.427l2.896 2.896a.25.25 0 00.354 0zM2.25 5a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM6 4.25a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5a.75.75 0 01.75.75zM8.25 5a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM12 4.25a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5a.75.75 0 01.75.75zm2.25.75a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5z"></path></svg>
</a>
</td>
<td class="blob-code blob-code-inner blob-code-hunk"></td>
</tr>
</tbody></table>
</div>
</div>
</div>
</div>
</div>
<button type="button" class="js-toggle-all-file-notes" data-hotkey="i" style="display:none">Toggle all file notes</button>
<svg aria-hidden="true" width="320px" height="84px" viewBox="0 0 340 84" version="1.1" xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" class="diff-placeholder-svg position-absolute bottom-0">
<defs>
<clipPath id="diff-placeholder">
<rect x="0" y="0" width="67.0175439" height="11.9298746" rx="2"></rect>
<rect x="18.9473684" y="47.7194983" width="100.701754" height="11.9298746" rx="2"></rect>
<rect x="0" y="71.930126" width="37.8947368" height="11.9298746" rx="2"></rect>
<rect x="127.017544" y="48.0703769" width="53.3333333" height="11.9298746" rx="2"></rect>
<rect x="187.719298" y="48.0703769" width="72.9824561" height="11.9298746" rx="2"></rect>
<rect x="76.8421053" y="0" width="140.350877" height="11.9298746" rx="2"></rect>
<rect x="17.8947368" y="23.8597491" width="140.350877" height="11.9298746" rx="2"></rect>
<rect x="166.315789" y="23.8597491" width="173.684211" height="11.9298746" rx="2"></rect>
</clipPath>
<linearGradient id="animated-diff-gradient" x1="0" x2="0" y1="0" y2="1" spreadMethod="reflect">
<stop offset="0" stop-color="#eee"></stop>
<stop offset="0.2" stop-color="#eee"></stop>
<stop offset="0.5" stop-color="#ddd"></stop>
<stop offset="0.8" stop-color="#eee"></stop>
<stop offset="1" stop-color="#eee"></stop>
<animateTransform attributeName="y1" values="0%; 100%; 0" dur="1s" repeatCount="3"></animateTransform>
<animateTransform attributeName="y2" values="100%; 200%; 0" dur="1s" repeatCount="3"></animateTransform>
</linearGradient>
</defs>
</svg>
<div id="all_commit_comments" class="js-quote-selection-container" data-quote-markdown=".js-comment-body">
<div class="mb-1 mb-md-3">
<div id="partial-visible-comments-header" class="d-flex flex-items-center flex-column-reverse flex-md-row">
<h4 class="flex-auto text-md-left text-center">
0 comments
on commit <code class="commit-sha">ef58862</code>
</h4>
<div class="flex-shrink-0 mb-2 mb-md-0">
</div>
</div>
</div>
<div id="comments" class="comment-holder ml-0 pl-0 ml-md-6 pl-md-3">
<!-- Rendered timeline since 2019-12-06 06:30:13 -->
<div id="partial-timeline-marker" class="js-timeline-marker js-socket-channel js-updatable-content" data-channel="eyJjIjoicmVwbzoxMTQ3NDI0MjI6Y29tbWl0OmVmNTg4NjI4MWRkODRiNDUwYWUyNWE5ZmZjYTAzNmNmZmQxNmFiZDEiLCJ0IjoxNjExNzE3MjM1fQ==--2860a5967f3b56b55c81e7668a4bb9826729f73aa06132bffb659cd7a4acd008" data-url="/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1/show_partial?partial=commit%2Ftimeline_marker&amp;since=1575642613" data-last-modified="Fri, 06 Dec 2019 14:30:13 GMT">
</div>
</div>
<div class="timeline-comment-wrapper timeline-new-comment js-comment-container ml-0 pl-0 ml-md-6 pl-md-3 ">
<div class="d-none d-md-block">
<span class="timeline-comment-avatar "><a class="d-inline-block" data-hovercard-type="user" data-hovercard-url="/users/wtolley/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wtolley"><img class="avatar avatar-user" src="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/15262083_002.png" alt="@wtolley" width="40" height="40"></a></span>
</div>
<!-- '"` --><!-- </textarea></xmp> --><form class="js-new-comment-form js-needs-timeline-marker-header" action="/mullvad/mullvadvpn-app/commit_comment/create" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="C05vrZkcIJm+G/iZAk76gdc5KoT0RsZJzEE9fqaL/KctHHGkcJqtWYEO/wRDxV547ely1mOSh0s7q/YrmCxSuA==">
<input type="text" name="required_field_feab" class="form-control" hidden="hidden"><input type="hidden" name="timestamp" value="1611717235938" class="form-control"><input type="hidden" name="timestamp_secret" value="f4565f83802732f6932cc988e5295126c71960f19d0c399eadcd704aee770187" class="form-control">
<div class="border-0 border-md timeline-comment">
<input type="hidden" name="commit_id" value="ef5886281dd84b450ae25a9ffca036cffd16abd1">
<input type="hidden" name="path" value="">
<tab-container class="js-previewable-comment-form previewable-comment-form write-selected" data-preview-url="/preview?markdown_unsupported=false&amp;repository=114742422&amp;sparkles_supported=false&amp;subject=ef5886281dd84b450ae25a9ffca036cffd16abd1&amp;subject_type=Commit">
<input type="hidden" value="VWXfERcfkWfkbo2FKMAIkNphVju9sYHKVJFE/jR7Eu9JTeGGDtd9c+THKgCZ+r2B/eY3qGj6Am1oKkJ4CPHdHA==" data-csrf="true" class="js-data-preview-url-csrf">
<div class="comment-form-head tabnav d-flex flex-justify-between mb-2 p-0 tabnav--responsive flex-column border-bottom-0 mb-0 mb-lg-2 flex-items-stretch border-lg-bottom color-border-primary flex-lg-items-center flex-lg-row">
<div class="tabnav-tabs mx-0 mx-md-2 mt-0 mt-md-2 no-wrap d-flex flex-auto d-md-block" role="tablist">
<button type="button" class="btn-link tabnav-tab write-tab js-write-tab px-3 px-sm-6 px-md-3 flex-1 flex-md-auto" role="tab" aria-selected="true" tabindex="0">
Write
</button>
<button type="button" class="btn-link tabnav-tab preview-tab js-preview-tab flex-1 flex-md-auto" role="tab" aria-selected="false" tabindex="-1">
Preview
</button>
</div>
<markdown-toolbar role="toolbar" aria-label="Composition" for="new_commit_comment_field" class="js-details-container Details toolbar-commenting d-flex no-wrap flex-items-start flex-wrap px-2 pt-2 pt-lg-0 border-md-top border-lg-top-0" tabindex="0">
<div class="d-block d-md-none flex-auto">
<button data-md-button="" tabindex="-1" type="button" aria-label="Toggle text tools" aria-expanded="false" class="js-details-target btn-link toolbar-item no-underline py-2 mr-1">
<svg class="octicon octicon-typography" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6.21 8.5L4.574 3.594 2.857 8.5H6.21zm.5 1.5l.829 2.487a.75.75 0 001.423-.474L5.735 2.332a1.216 1.216 0 00-2.302-.018l-3.39 9.688a.75.75 0 001.415.496L2.332 10H6.71zm3.13-4.358C10.53 4.374 11.87 4 13 4c1.5 0 3 .939 3 2.601v5.649a.75.75 0 01-1.448.275C13.995 12.82 13.3 13 12.5 13c-.77 0-1.514-.231-2.078-.709-.577-.488-.922-1.199-.922-2.041 0-.694.265-1.411.887-1.944C11 7.78 11.88 7.5 13 7.5h1.5v-.899c0-.54-.5-1.101-1.5-1.101-.869 0-1.528.282-1.84.858a.75.75 0 11-1.32-.716zM14.5 9H13c-.881 0-1.375.22-1.637.444-.253.217-.363.5-.363.806 0 .408.155.697.39.896.249.21.63.354 1.11.354.732 0 1.26-.209 1.588-.449.35-.257.412-.495.412-.551V9z"></path></svg>
<svg class="octicon octicon-chevron-up Details-content--shown" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.22 9.78a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 0l4.25 4.25a.75.75 0 01-1.06 1.06L8 6.06 4.28 9.78a.75.75 0 01-1.06 0z"></path></svg>
<svg class="octicon octicon-chevron-down Details-content--hidden" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z"></path></svg>
</button>
</div>
<div class="flex-nowrap d-none d-md-inline-block mr-3">
<md-header tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1" aria-label="Add header text" data-ga-click="Markdown Toolbar, click, header" role="button">
<svg class="octicon octicon-heading" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.75 2a.75.75 0 01.75.75V7h7V2.75a.75.75 0 011.5 0v10.5a.75.75 0 01-1.5 0V8.5h-7v4.75a.75.75 0 01-1.5 0V2.75A.75.75 0 013.75 2z"></path></svg>
</md-header>
<md-bold tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1 js-modifier-label-key" aria-label="Add bold text &lt;ctrl+b&gt;" data-ga-click="Markdown Toolbar, click, bold" role="button" hotkey="b">
<svg class="octicon octicon-bold" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 2a1 1 0 00-1 1v10a1 1 0 001 1h5.5a3.5 3.5 0 001.852-6.47A3.5 3.5 0 008.5 2H4zm4.5 5a1.5 1.5 0 100-3H5v3h3.5zM5 9v3h4.5a1.5 1.5 0 000-3H5z"></path></svg>
</md-bold>
<md-italic tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1 js-modifier-label-key" aria-label="Add italic text &lt;ctrl+i&gt;" data-ga-click="Markdown Toolbar, click, italic" role="button" hotkey="i">
<svg class="octicon octicon-italic" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6 2.75A.75.75 0 016.75 2h6.5a.75.75 0 010 1.5h-2.505l-3.858 9H9.25a.75.75 0 010 1.5h-6.5a.75.75 0 010-1.5h2.505l3.858-9H6.75A.75.75 0 016 2.75z"></path></svg>
</md-italic>
</div>
<div class="d-flex d-md-inline-block mr-0 mr-md-3">
<md-quote tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 p-md-1 mx-1" aria-label="Insert a quote" data-ga-click="Markdown Toolbar, click, quote" role="button">
<svg class="octicon octicon-quote" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.75 2.5a.75.75 0 000 1.5h10.5a.75.75 0 000-1.5H1.75zm4 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM2.5 7.75a.75.75 0 00-1.5 0v6a.75.75 0 001.5 0v-6z"></path></svg>
</md-quote>
<md-code tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 p-md-1 mx-1" aria-label="Insert code" data-ga-click="Markdown Toolbar, click, code" role="button">
<svg class="octicon octicon-code" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4.72 3.22a.75.75 0 011.06 1.06L2.06 8l3.72 3.72a.75.75 0 11-1.06 1.06L.47 8.53a.75.75 0 010-1.06l4.25-4.25zm6.56 0a.75.75 0 10-1.06 1.06L13.94 8l-3.72 3.72a.75.75 0 101.06 1.06l4.25-4.25a.75.75 0 000-1.06l-4.25-4.25z"></path></svg>
</md-code>
<button type="button" data-md-button="" tabindex="-1" class="toolbar-item text-center menu-target p-2 mx-1 d-md-none js-markdown-link-button" aria-label="Add a link" data-ga-click="Markdown Toolbar, click, saved reply">
<svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg>
</button>
<template class="js-markdown-link-dialog">
<div class="Box-header">
<h3 class="Box-title">Insert Link</h3>
</div>
<div class="Box-body overflow-auto">
<div>
<label class="d-block mb-1" for="js-dialog-link-text">Link Text</label>
<input type="text" class="mb-3 form-control input-block" id="js-dialog-link-text" autofocus="">
</div>
<div>
<label class="d-block mb-1" for="js-dialog-link-href">URL</label>
<input type="url" class="mb-3 form-control input-block" id="js-dialog-link-href">
</div>
<div class="pt-3 border-top">
<button type="button" class="btn btn-primary btn-block js-markdown-link-insert" data-close-dialog="" data-for-textarea="new_commit_comment_field">
Add
</button>
</div>
</div>
</template>
<md-link tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 p-md-1 d-none d-md-block mx-1 js-modifier-label-key" aria-label="Add a link &lt;ctrl+k&gt;" data-ga-click="Markdown Toolbar, click, link" role="button" hotkey="k">
<svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg>
</md-link>
</div>
<div class="d-none d-md-inline-block mr-3">
<md-unordered-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1" aria-label="Add a bulleted list" data-ga-click="Markdown Toolbar, click, unordered list" role="button">
<svg class="octicon octicon-list-unordered" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 4a1 1 0 100-2 1 1 0 000 2zm3.75-1.5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM3 8a1 1 0 11-2 0 1 1 0 012 0zm-1 6a1 1 0 100-2 1 1 0 000 2z"></path></svg>
</md-unordered-list>
<md-ordered-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1" aria-label="Add a numbered list" data-ga-click="Markdown Toolbar, click, ordered list" role="button">
<svg class="octicon octicon-list-ordered" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.003 2.5a.5.5 0 00-.723-.447l-1.003.5a.5.5 0 00.446.895l.28-.14V6H.5a.5.5 0 000 1h2.006a.5.5 0 100-1h-.503V2.5zM5 3.25a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5A.75.75 0 015 3.25zm0 5a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5A.75.75 0 015 8.25zm0 5a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5a.75.75 0 01-.75-.75zM.924 10.32l.003-.004a.851.851 0 01.144-.153A.66.66 0 011.5 10c.195 0 .306.068.374.146a.57.57 0 01.128.376c0 .453-.269.682-.8 1.078l-.035.025C.692 11.98 0 12.495 0 13.5a.5.5 0 00.5.5h2.003a.5.5 0 000-1H1.146c.132-.197.351-.372.654-.597l.047-.035c.47-.35 1.156-.858 1.156-1.845 0-.365-.118-.744-.377-1.038-.268-.303-.658-.484-1.126-.484-.48 0-.84.202-1.068.392a1.858 1.858 0 00-.348.384l-.007.011-.002.004-.001.002-.001.001a.5.5 0 00.851.525zM.5 10.055l-.427-.26.427.26z"></path></svg>
</md-ordered-list>
<md-task-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1" aria-label="Add a task list" data-ga-click="Markdown Toolbar, click, task list" role="button" hotkey="L">
<svg class="octicon octicon-tasklist" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.5 2.75a.25.25 0 01.25-.25h10.5a.25.25 0 01.25.25v10.5a.25.25 0 01-.25.25H2.75a.25.25 0 01-.25-.25V2.75zM2.75 1A1.75 1.75 0 001 2.75v10.5c0 .966.784 1.75 1.75 1.75h10.5A1.75 1.75 0 0015 13.25V2.75A1.75 1.75 0 0013.25 1H2.75zm9.03 5.28a.75.75 0 00-1.06-1.06L6.75 9.19 5.28 7.72a.75.75 0 00-1.06 1.06l2 2a.75.75 0 001.06 0l4.5-4.5z"></path></svg>
</md-task-list>
</div>
<div class="d-flex d-xs-inline-block">
<md-mention tabindex="-1" class="flex-auto text-center toolbar-item tooltipped tooltipped-sw p-2 p-md-1 mx-1" aria-label="Directly mention a user or team" data-ga-click="Markdown Toolbar, click, mention" role="button">
<svg class="octicon octicon-mention" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4.75 2.37a6.5 6.5 0 006.5 11.26.75.75 0 01.75 1.298 8 8 0 113.994-7.273.754.754 0 01.006.095v1.5a2.75 2.75 0 01-5.072 1.475A4 4 0 1112 8v1.25a1.25 1.25 0 002.5 0V7.867a6.5 6.5 0 00-9.75-5.496V2.37zM10.5 8a2.5 2.5 0 10-5 0 2.5 2.5 0 005 0z"></path></svg>
</md-mention>
<label for="fc-new_commit_comment_field" data-md-button="" tabindex="-1" class="d-block d-md-none btn-link flex-auto text-center toolbar-item tooltipped tooltipped-sw p-2 mx-1" aria-label="Attach an image or video">
<svg class="octicon octicon-image" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.75 2.5a.25.25 0 00-.25.25v10.5c0 .138.112.25.25.25h.94a.76.76 0 01.03-.03l6.077-6.078a1.75 1.75 0 012.412-.06L14.5 10.31V2.75a.25.25 0 00-.25-.25H1.75zm12.5 11H4.81l5.048-5.047a.25.25 0 01.344-.009l4.298 3.889v.917a.25.25 0 01-.25.25zm1.75-.25V2.75A1.75 1.75 0 0014.25 1H1.75A1.75 1.75 0 000 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0016 13.25zM5.5 6a.5.5 0 11-1 0 .5.5 0 011 0zM7 6a2 2 0 11-4 0 2 2 0 014 0z"></path></svg>
</label>
<md-ref tabindex="-1" class="flex-auto text-center toolbar-item tooltipped tooltipped-sw p-2 p-md-1 mx-1" aria-label="Reference an issue, pull request, or discussion" data-ga-click="Markdown Toolbar, click, reference" role="button">
<svg class="octicon octicon-cross-reference" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M16 1.25v4.146a.25.25 0 01-.427.177L14.03 4.03l-3.75 3.75a.75.75 0 11-1.06-1.06l3.75-3.75-1.543-1.543A.25.25 0 0111.604 1h4.146a.25.25 0 01.25.25zM2.75 3.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 01.75.75v2.19l2.72-2.72a.75.75 0 01.53-.22h4.5a.25.25 0 00.25-.25v-2.5a.75.75 0 111.5 0v2.5A1.75 1.75 0 0113.25 13H9.06l-2.573 2.573A1.457 1.457 0 014 14.543V13H2.75A1.75 1.75 0 011 11.25v-7.5C1 2.784 1.784 2 2.75 2h5.5a.75.75 0 010 1.5h-5.5z"></path></svg>
</md-ref>
<details class="details-reset details-overlay flex-auto toolbar-item select-menu select-menu-modal-right js-saved-reply-container hx_rsm" tabindex="-1">
<summary data-md-button="" tabindex="-1" class="text-center menu-target py-2 p-md-1 hx_rsm-trigger ml-1" aria-label="Insert a reply" data-ga-click="Markdown Toolbar, click, saved reply" aria-haspopup="menu" role="button">
<svg class="octicon octicon-reply" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6.78 1.97a.75.75 0 010 1.06L3.81 6h6.44A4.75 4.75 0 0115 10.75v2.5a.75.75 0 01-1.5 0v-2.5a3.25 3.25 0 00-3.25-3.25H3.81l2.97 2.97a.75.75 0 11-1.06 1.06L1.47 7.28a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 0z"></path></svg>
<span class="dropdown-caret hide-sm"></span>
</summary>
<details-menu style="z-index: 99;" class="select-menu-modal position-absolute right-0 js-saved-reply-menu hx_rsm-modal" data-menu-input="new_commit_comment_field_saved_reply_id" src="/settings/replies?context=none" preload="" role="menu">
<div class="select-menu-header d-flex">
<span class="select-menu-title flex-auto">Select a reply</span>
<code><span class="border rounded-1 p-1 mr-2">ctrl .</span></code>
</div>
<include-fragment role="menuitem" aria-label="Loading">
<svg viewBox="0 0 16 16" fill="none" style="box-sizing: content-box; color: var(--color-icon-primary);" class="my-6 mx-auto d-block" width="32" height="32">
<circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke"></circle>
<path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke">
<animateTransform attributeName="transform" type="rotate" from="0 8 8" to="360 8 8" dur="1s" repeatCount="indefinite"></animateTransform>
</path>
</svg>
</include-fragment>
</details-menu>
</details>
</div>
<div class="Details-content--hidden d-block d-md-none width-full">
<md-header tabindex="-1" class="toolbar-item tooltipped tooltipped-sw py-2 pr-2 pl-1 mr-1" aria-label="Add header text" data-ga-click="Markdown Toolbar, click, header" role="button">
<svg class="octicon octicon-heading" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.75 2a.75.75 0 01.75.75V7h7V2.75a.75.75 0 011.5 0v10.5a.75.75 0 01-1.5 0V8.5h-7v4.75a.75.75 0 01-1.5 0V2.75A.75.75 0 013.75 2z"></path></svg>
</md-header>
<md-bold tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 mx-1 js-modifier-label-key" aria-label="Add bold text &lt;ctrl+b&gt;" data-ga-click="Markdown Toolbar, click, bold" role="button" hotkey="b">
<svg class="octicon octicon-bold" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 2a1 1 0 00-1 1v10a1 1 0 001 1h5.5a3.5 3.5 0 001.852-6.47A3.5 3.5 0 008.5 2H4zm4.5 5a1.5 1.5 0 100-3H5v3h3.5zM5 9v3h4.5a1.5 1.5 0 000-3H5z"></path></svg>
</md-bold>
<md-italic tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 mx-1 js-modifier-label-key" aria-label="Add italic text &lt;ctrl+i&gt;" data-ga-click="Markdown Toolbar, click, italic" role="button" hotkey="i">
<svg class="octicon octicon-italic" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6 2.75A.75.75 0 016.75 2h6.5a.75.75 0 010 1.5h-2.505l-3.858 9H9.25a.75.75 0 010 1.5h-6.5a.75.75 0 010-1.5h2.505l3.858-9H6.75A.75.75 0 016 2.75z"></path></svg>
</md-italic>
<md-unordered-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 mx-1" aria-label="Add a bulleted list" data-ga-click="Markdown Toolbar, click, unordered list" role="button">
<svg class="octicon octicon-list-unordered" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 4a1 1 0 100-2 1 1 0 000 2zm3.75-1.5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM3 8a1 1 0 11-2 0 1 1 0 012 0zm-1 6a1 1 0 100-2 1 1 0 000 2z"></path></svg>
</md-unordered-list>
<md-ordered-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 mx-1" aria-label="Add a numbered list" data-ga-click="Markdown Toolbar, click, ordered list" role="button">
<svg class="octicon octicon-list-ordered" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.003 2.5a.5.5 0 00-.723-.447l-1.003.5a.5.5 0 00.446.895l.28-.14V6H.5a.5.5 0 000 1h2.006a.5.5 0 100-1h-.503V2.5zM5 3.25a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5A.75.75 0 015 3.25zm0 5a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5A.75.75 0 015 8.25zm0 5a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5a.75.75 0 01-.75-.75zM.924 10.32l.003-.004a.851.851 0 01.144-.153A.66.66 0 011.5 10c.195 0 .306.068.374.146a.57.57 0 01.128.376c0 .453-.269.682-.8 1.078l-.035.025C.692 11.98 0 12.495 0 13.5a.5.5 0 00.5.5h2.003a.5.5 0 000-1H1.146c.132-.197.351-.372.654-.597l.047-.035c.47-.35 1.156-.858 1.156-1.845 0-.365-.118-.744-.377-1.038-.268-.303-.658-.484-1.126-.484-.48 0-.84.202-1.068.392a1.858 1.858 0 00-.348.384l-.007.011-.002.004-.001.002-.001.001a.5.5 0 00.851.525zM.5 10.055l-.427-.26.427.26z"></path></svg>
</md-ordered-list>
<md-task-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 mx-1" aria-label="Add a task list" data-ga-click="Markdown Toolbar, click, task list" role="button" hotkey="L">
<svg class="octicon octicon-tasklist" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.5 2.75a.25.25 0 01.25-.25h10.5a.25.25 0 01.25.25v10.5a.25.25 0 01-.25.25H2.75a.25.25 0 01-.25-.25V2.75zM2.75 1A1.75 1.75 0 001 2.75v10.5c0 .966.784 1.75 1.75 1.75h10.5A1.75 1.75 0 0015 13.25V2.75A1.75 1.75 0 0013.25 1H2.75zm9.03 5.28a.75.75 0 00-1.06-1.06L6.75 9.19 5.28 7.72a.75.75 0 00-1.06 1.06l2 2a.75.75 0 001.06 0l4.5-4.5z"></path></svg>
</md-task-list>
</div>
</markdown-toolbar>
</div>
<div class="comment-form-error js-comment-form-error" role="alert" hidden="">
There was an error creating your Commit.
</div>
<file-attachment class="js-upload-markdown-image is-default" input="fc-new_commit_comment_field" role="tabpanel" data-tab-container-no-tabstop="true" data-upload-repository-id="114742422" data-upload-policy-url="/upload/policies/assets"><input type="hidden" value="9w5L+oS7d+rtzHp21qXp1FC19eMfex3lRwp6GB4KCET9IxA61EMlU+L6L6Dy8gUfi2wVxNbvvT9XSW2SjRyYkw==" data-csrf="true" class="js-data-upload-policy-url-csrf">
<div class="write-content js-write-bucket tooltipped tooltipped-ne tooltipped-no-delay tooltipped-align-left-1 hide-reaction-suggestion upload-enabled mx-0 mt-2 mb-2 mx-md-2 hx_sm-hide-drag-drop js-reaction-suggestion" data-reaction-markup="Would you like to leave a reaction instead?">
<input type="hidden" name="saved_reply_id" id="new_commit_comment_field_saved_reply_id" class="js-resettable-field" value="" data-reset-value="">
<text-expander keys=": @ #" data-issue-url="/suggestions/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1?issue_suggester=1&amp;repository=mullvadvpn-app&amp;user_id=mullvad" data-mention-url="/suggestions/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1?mention_suggester=1&amp;repository=mullvadvpn-app&amp;user_id=mullvad" multiword="#" data-emoji-url="/autocomplete/emoji">
<textarea name="comment[body]" id="new_commit_comment_field" placeholder="Leave a comment" aria-label="Comment body" data-required-trimmed="Text field is empty" class="form-control input-contrast comment-form-textarea js-comment-field js-paste-markdown js-task-list-field js-quick-submit js-size-to-fit js-session-resumable js-saved-reply-shortcut-comment-field" required=""></textarea>
</text-expander>
<label class="text-normal drag-and-drop hx_drag-and-drop position-relative d-flex flex-justify-between">
<input accept=".gif,.jpeg,.jpg,.mov,.mp4,.png,.docx,.gz,.log,.pdf,.pptx,.txt,.xlsx,.zip" type="file" multiple="" class="manual-file-chooser manual-file-chooser-transparent top-0 right-0 bottom-0 left-0 width-full ml-0 form-control" id="fc-new_commit_comment_field">
<span class="bg-gray-light position-absolute top-0 left-0 width-full height-full rounded-1" style="pointer-events: none;"></span>
<span class="position-relative pr-2" style="pointer-events: none;">
<span class="default">
Attach files by dragging &amp; dropping, selecting or pasting them.
</span>
<span class="loading">
<svg viewBox="0 0 16 16" fill="none" style="box-sizing: content-box; color: var(--color-icon-primary);" class="v-align-text-bottom mr-1" width="16" height="16">
<circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke"></circle>
<path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke">
<animateTransform attributeName="transform" type="rotate" from="0 8 8" to="360 8 8" dur="1s" repeatCount="indefinite"></animateTransform>
</path>
</svg> Uploading your files…
</span>
<span class="error bad-file">
We don’t support that file type.
<span class="drag-and-drop-error-info">
<span class="btn-link">Try again</span> with a
GIF, JPEG, JPG, MOV, MP4, PNG, DOCX, GZ, LOG, PDF, PPTX, TXT, XLSX or ZIP.
</span>
</span>
<span class="error bad-permissions">
Attaching documents requires write permission to this repository.
<span class="drag-and-drop-error-info">
<span class="btn-link">Try again</span> with a GIF, JPEG, JPG, MOV, MP4, PNG, DOCX, GZ, LOG, PDF, PPTX, TXT, XLSX or ZIP.
</span>
</span>
<span class="error repository-required">
We don’t support that file type.
<span class="drag-and-drop-error-info">
<span class="btn-link">Try again</span> with a GIF, JPEG, JPG, MOV, MP4, PNG, DOCX, GZ, LOG, PDF, PPTX, TXT, XLSX or ZIP.
</span>
</span>
<span class="error too-big">
Yowza, that’s a big file
<span class="drag-and-drop-error-info">
<span class="btn-link">Try again</span> with a file smaller than 10MB.
</span>
</span>
<span class="error empty">
This file is empty.
<span class="drag-and-drop-error-info">
<span class="btn-link">Try again</span> with a file that’s not empty.
</span>
</span>
<span class="error hidden-file">
This file is hidden.
<span class="drag-and-drop-error-info">
<span class="btn-link">Try again</span> with another file.
</span>
</span>
<span class="error failed-request">
Something went really wrong, and we can’t process that file.
<span class="drag-and-drop-error-info">
<span class="btn-link">Try again.</span>
</span>
</span>
</span>
<span class="tooltipped tooltipped-nw" aria-label="Styling with Markdown is supported">
<a class="muted-link position-relative d-inline" href="https://guides.github.com/features/mastering-markdown/" target="_blank" data-ga-click="Markdown Toolbar, click, help" aria-label="Learn about styling with Markdown">
<svg class="octicon octicon-markdown v-align-bottom" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M14.85 3H1.15C.52 3 0 3.52 0 4.15v7.69C0 12.48.52 13 1.15 13h13.69c.64 0 1.15-.52 1.15-1.15v-7.7C16 3.52 15.48 3 14.85 3zM9 11H7V8L5.5 9.92 4 8v3H2V5h2l1.5 2L7 5h2v6zm2.99.5L9.5 8H11V5h2v3h1.5l-2.51 3.5z"></path></svg>
</a>
</span>
</label>
<span class="js-sparkles-remaining-container" hidden=""></span>
</div>
</file-attachment>
<div role="tabpanel" class="js-preview-panel overflow-auto border-bottom mx-0 my-3 mx-md-2 mb-md-2" hidden="">
<input type="hidden" name="path" value="" class="js-path">
<input type="hidden" name="line" value="" class="js-line-number">
<input type="hidden" name="start_line" value="" class="js-start-line-number">
<input type="hidden" name="preview_side" value="" class="js-side">
<input type="hidden" name="preview_start_side" value="" class="js-start-side">
<input type="hidden" name="start_commit_oid" value="" class="js-start-commit-oid">
<input type="hidden" name="end_commit_oid" value="" class="js-end-commit-oid">
<input type="hidden" name="base_commit_oid" value="" class="js-base-commit-oid">
<input type="hidden" name="comment_id" value="" class="js-comment-id">
<div class="comment js-suggested-changes-container" data-thread-side="">
<div class="comment-body markdown-body js-preview-body">
<p>Nothing to preview</p>
</div>
</div>
</div>
<div class="comment-form-error mb-2 js-comment-update-error" hidden=""></div>
</tab-container>
<div class="form-actions pr-0 pr-md-2">
<button type="submit" class="btn btn-primary" data-disable-invalid="" data-disable-with="" disabled="disabled">Comment on this commit</button>
</div>
</div>
</form>
</div>
</div>
<div class="thread-subscription-status js-socket-channel js-updatable-content" data-replace-remote-form-target="" data-channel="eyJjIjoibGlzdC1zdWJzY3JpcHRpb246cmVwb3NpdG9yeToxMTQ3NDI0MjI6MTUyNjIwODMiLCJ0IjoxNjExNzE3MjM1fQ==--5276ddf529075e42b22da466e7092ef47668f77fdef95b87428898add07c5869 eyJjIjoidGhyZWFkLXN1YnNjcmlwdGlvbjplZjU4ODYyODFkZDg0YjQ1MGFlMjVhOWZmY2EwMzZjZmZkMTZhYmQxOjE1MjYyMDgzIiwidCI6MTYxMTcxNzIzNX0=--541985d8185d34dee3fe727b65fbd38a7829fcc69297a8981f2cc2db14161e69" data-url="/notifications/thread_subscription?repository_id=114742422&amp;thread_class=Commit&amp;thread_id=ef5886281dd84b450ae25a9ffca036cffd16abd1">
<form data-replace-remote-form="true" class="thread-subscribe-form" action="/notifications/thread" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="7j7otJ4v53SHqZynuzdUtZSDmc7Z1JH/7wmAAGHSsJie4eiVTjqvXrYBa6AEbq5Xp+5QnEaU10v3ncRWvdRSXQ=="> <input type="hidden" name="repository_id" value="114742422">
<input type="hidden" name="thread_id" value="ef5886281dd84b450ae25a9ffca036cffd16abd1">
<input type="hidden" name="thread_class" value="Commit">
<input type="hidden" name="id" value="subscribe">
<button type="submit" class="btn btn-block btn-sm thread-subscribe-button" data-disable-with="">
<svg class="octicon octicon-bell" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path d="M8 16a2 2 0 001.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 008 16z"></path><path fill-rule="evenodd" d="M8 1.5A3.5 3.5 0 004.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.018.018 0 00-.003.01l.001.006c0 .002.002.004.004.006a.017.017 0 00.006.004l.007.001h10.964l.007-.001a.016.016 0 00.006-.004.016.016 0 00.004-.006l.001-.007a.017.017 0 00-.003-.01l-1.703-2.554a1.75 1.75 0 01-.294-.97V5A3.5 3.5 0 008 1.5zM3 5a5 5 0 0110 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.518 1.518 0 0113.482 13H2.518a1.518 1.518 0 01-1.263-2.36l1.703-2.554A.25.25 0 003 7.947V5z"></path></svg> Subscribe
</button>
</form> <p class="reason text-small text-gray">You’re not receiving notifications from this thread.</p>
</div>
</div>
</div>
</main>
</div>
</div>
<div class="footer container-xl width-full p-responsive" role="contentinfo">
<div class="position-relative d-flex flex-row-reverse flex-lg-row flex-wrap flex-lg-nowrap flex-justify-center flex-lg-justify-between pt-6 pb-2 mt-6 f6 text-gray border-top border-gray-light ">
<ul class="list-style-none d-flex flex-wrap col-12 col-lg-5 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0">
<li class="mr-3 mr-lg-0">© 2021 GitHub, Inc.</li>
<li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to terms, text:terms" href="https://github.com/site/terms">Terms</a></li>
<li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to privacy, text:privacy" href="https://github.com/site/privacy">Privacy</a></li>
<li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to security, text:security" href="https://github.com/security">Security</a></li>
<li class="mr-3 mr-lg-0"><a href="https://www.githubstatus.com/" data-ga-click="Footer, go to status, text:status">Status</a></li>
<li><a data-ga-click="Footer, go to help, text:Docs" href="https://docs.github.com/">Docs</a></li>
</ul>
<a aria-label="Homepage" title="GitHub" class="footer-octicon d-none d-lg-block mx-lg-4" href="https://github.com/">
<svg height="24" class="octicon octicon-mark-github" viewBox="0 0 16 16" version="1.1" width="24" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg>
</a>
<ul class="list-style-none d-flex flex-wrap col-12 col-lg-5 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0">
<li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to contact, text:contact" href="https://github.com/contact">Contact GitHub</a></li>
<li class="mr-3 mr-lg-0"><a href="https://github.com/pricing" data-ga-click="Footer, go to Pricing, text:Pricing">Pricing</a></li>
<li class="mr-3 mr-lg-0"><a href="https://docs.github.com/" data-ga-click="Footer, go to api, text:api">API</a></li>
<li class="mr-3 mr-lg-0"><a href="https://services.github.com/" data-ga-click="Footer, go to training, text:training">Training</a></li>
<li class="mr-3 mr-lg-0"><a href="https://github.blog/" data-ga-click="Footer, go to blog, text:blog">Blog</a></li>
<li><a data-ga-click="Footer, go to about, text:about" href="https://github.com/about">About</a></li>
</ul>
</div>
<div class="d-flex flex-justify-center pb-6">
<span class="f6 text-gray-light"></span>
</div>
</div>
<div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden="">
<svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path></svg>
<button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
<svg class="octicon octicon-x" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path></svg>
</button>
You can’t perform that action at this time.
</div>
<div class="js-stale-session-flash flash flash-warn flash-banner" hidden="">
<svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path></svg>
<span class="js-stale-session-flash-signed-in" hidden="">You signed in with another tab or window. <a 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 href="">Reload</a> to refresh your session.</span>
</div>
<template id="site-details-dialog">
<details class="details-reset details-overlay details-overlay-dark lh-default text-gray-dark 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 class="octicon octicon-x" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path></svg>
</button>
<div class="octocat-spinner my-6 js-details-dialog-spinner"></div>
</details-dialog>
</details>
</template>
<div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;" tabindex="0">
<div class="Popover-message Popover-message--bottom-left Popover-message--large Box box-shadow-large" style="width:360px;">
</div>
</div>
<div aria-live="polite" class="sr-only"></div></body></html>