gitextract_gl2ervna/ ├── .erb/ │ ├── configs/ │ │ ├── .eslintrc │ │ ├── webpack.config.base.ts │ │ ├── webpack.config.eslint.ts │ │ ├── webpack.config.main.dev.ts │ │ ├── webpack.config.main.prod.ts │ │ ├── webpack.config.preload.dev.ts │ │ ├── webpack.config.renderer.dev.dll.ts │ │ ├── webpack.config.renderer.dev.ts │ │ ├── webpack.config.renderer.prod.ts │ │ └── webpack.paths.ts │ ├── mocks/ │ │ └── fileMock.js │ └── scripts/ │ ├── .eslintrc │ ├── check-build-exists.ts │ ├── check-native-dep.js │ ├── check-node-env.js │ ├── check-port-in-use.js │ ├── clean.js │ ├── delete-source-maps.js │ ├── electron-rebuild.js │ ├── link-modules.ts │ └── notarize.js ├── .eslintignore ├── .eslintrc.js ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yaml │ │ ├── config.yml │ │ └── feature_request.yaml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── config.yml │ ├── dependabot.yml │ ├── release_message.md │ ├── stale.yml │ └── workflows/ │ ├── deploy-ppa.yml │ └── publish.yml ├── .gitignore ├── .husky/ │ ├── pre-commit │ └── pre-push ├── .prettierignore ├── .prettierrc ├── .vscode/ │ ├── launch.json │ └── settings.json ├── @types/ │ └── node-aplay.d.ts ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── DOCS.md ├── FAQ.md ├── LICENSE.md ├── README-fa.md ├── README.md ├── SECURITY.md ├── assets/ │ ├── assets.d.ts │ ├── css/ │ │ ├── materialIcons.css │ │ ├── noto.css │ │ ├── shabnam.css │ │ └── style.css │ ├── entitlements.mac.plist │ ├── icon.icns │ ├── json/ │ │ └── 1713988096625.json │ └── proto/ │ └── oblivion.proto ├── package.json ├── release/ │ └── app/ │ └── package.json ├── script/ │ ├── beforePackHook.js │ ├── changeVersion.ts │ ├── dlBins.ts │ ├── makeRegeditVBSAvailable.ts │ ├── playground.ts │ └── postinstall.ts ├── src/ │ ├── __tests__/ │ │ └── App.test.tsx │ ├── constants.ts │ ├── defaultSettings.ts │ ├── localization/ │ │ ├── am.ts │ │ ├── ar.ts │ │ ├── cn.ts │ │ ├── electron.ts │ │ ├── en.ts │ │ ├── es.ts │ │ ├── fa.ts │ │ ├── id.ts │ │ ├── index.ts │ │ ├── my.ts │ │ ├── pt.ts │ │ ├── ru.ts │ │ ├── tr.ts │ │ ├── type.ts │ │ ├── ur.ts │ │ ├── useTranslate.ts │ │ └── vi.ts │ ├── main/ │ │ ├── config.ts │ │ ├── dxConfig.ts │ │ ├── ipc.ts │ │ ├── ipcListeners/ │ │ │ ├── log.ts │ │ │ └── settings.ts │ │ ├── lib/ │ │ │ ├── customEvent.ts │ │ │ ├── netStatsManager.ts │ │ │ ├── pacScript.ts │ │ │ ├── proxy.ts │ │ │ ├── sbConfig.ts │ │ │ ├── sbHelper.ts │ │ │ ├── sbManager.ts │ │ │ ├── speedTestManager.ts │ │ │ ├── utils.ts │ │ │ ├── wpHelper.ts │ │ │ └── wpManager.ts │ │ ├── main.ts │ │ ├── menu.ts │ │ ├── playground.ts │ │ └── preload.ts │ ├── renderer/ │ │ ├── App.tsx │ │ ├── components/ │ │ │ ├── BackButton.tsx │ │ │ ├── Card/ │ │ │ │ └── index.tsx │ │ │ ├── ConfigHandler.tsx │ │ │ ├── Dropdown/ │ │ │ │ └── index.tsx │ │ │ ├── Input/ │ │ │ │ ├── index.tsx │ │ │ │ └── useInput.ts │ │ │ ├── Modal/ │ │ │ │ ├── DNS/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useDnsModal.ts │ │ │ │ ├── Endpoint/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useEndpointModal.ts │ │ │ │ ├── License/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useLicenseModal.ts │ │ │ │ ├── MTU/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useMTUModal.ts │ │ │ │ ├── Port/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── usePortModal.ts │ │ │ │ ├── Profile/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useProfileModal.ts │ │ │ │ ├── Restore/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useRestoreModal.ts │ │ │ │ ├── RoutingRules/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── useRoutingRulesModal.ts │ │ │ │ └── TestUrl/ │ │ │ │ ├── index.tsx │ │ │ │ └── useTestUrlModal.ts │ │ │ ├── Nav/ │ │ │ │ ├── index.tsx │ │ │ │ └── useNav.ts │ │ │ ├── Tabs.tsx │ │ │ └── Textarea/ │ │ │ ├── index.tsx │ │ │ └── useTextarea.ts │ │ ├── context/ │ │ │ └── GlobalContext.tsx │ │ ├── hooks/ │ │ │ ├── useButtonKeyDown.ts │ │ │ └── useGoBackOnEscape.tsx │ │ ├── index.ejs │ │ ├── index.tsx │ │ ├── lib/ │ │ │ ├── cfFlag.ts │ │ │ ├── dx.ts │ │ │ ├── getIspName.ts │ │ │ ├── globalEvents.ts │ │ │ ├── inputSanitizer.ts │ │ │ ├── isAnyUndefined.ts │ │ │ ├── loaders.ts │ │ │ ├── settings.ts │ │ │ ├── systemDateValidator.ts │ │ │ ├── toPersianNumber.ts │ │ │ ├── toasts.tsx │ │ │ ├── utils.ts │ │ │ └── withDefault.ts │ │ ├── pages/ │ │ │ ├── About/ │ │ │ │ └── index.tsx │ │ │ ├── Debug/ │ │ │ │ ├── index.tsx │ │ │ │ └── useDebug.ts │ │ │ ├── Landing/ │ │ │ │ ├── DownloadProgressBar.tsx │ │ │ │ ├── LandingBody.tsx │ │ │ │ ├── LandingDrawer.tsx │ │ │ │ ├── LandingHeader.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── useLanding.ts │ │ │ ├── Network/ │ │ │ │ ├── index.tsx │ │ │ │ └── useOptions.ts │ │ │ ├── Options/ │ │ │ │ ├── index.tsx │ │ │ │ └── useOptions.ts │ │ │ ├── Scanner/ │ │ │ │ ├── index.tsx │ │ │ │ └── useScanner.ts │ │ │ ├── Settings/ │ │ │ │ ├── index.tsx │ │ │ │ └── useSettings.ts │ │ │ ├── SingBox/ │ │ │ │ ├── index.tsx │ │ │ │ └── useSingBox.ts │ │ │ ├── SpeedTest/ │ │ │ │ ├── index.tsx │ │ │ │ └── useSpeedTest.ts │ │ │ └── SplashScreen/ │ │ │ ├── index.tsx │ │ │ └── useSplashScreen.ts │ │ ├── preload.d.ts │ │ ├── routes/ │ │ │ └── index.tsx │ │ └── store.ts │ └── types/ │ └── global.d.ts └── tsconfig.json