Full Code of wpscanteam/wpscan for AI

master 43a3de076bba cached
4987 files
62.7 MB
17.0M tokens
2086 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (67,497K chars total). Download the full file to get everything.
Repository: wpscanteam/wpscan
Branch: master
Commit: 43a3de076bba
Files: 4987
Total size: 62.7 MB

Directory structure:
gitextract_9u6uo61d/

├── .codeclimate.yml
├── .dockerignore
├── .github/
│   ├── CONTRIBUTING.md
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   ├── feature_request.md
│   │   └── other-issue.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── dependabot.yml
│   └── workflows/
│       ├── build.yml
│       ├── docker.yml
│       └── gempush.yml
├── .gitignore
├── .rspec
├── .rubocop.yml
├── .ruby-gemset
├── .ruby-version
├── .simplecov
├── Dockerfile
├── Gemfile
├── LICENSE
├── README.md
├── Rakefile
├── app/
│   ├── app.rb
│   ├── controllers/
│   │   ├── aliases.rb
│   │   ├── core.rb
│   │   ├── custom_directories.rb
│   │   ├── enumeration/
│   │   │   ├── cli_options.rb
│   │   │   └── enum_methods.rb
│   │   ├── enumeration.rb
│   │   ├── main_theme.rb
│   │   ├── password_attack.rb
│   │   ├── vuln_api.rb
│   │   └── wp_version.rb
│   ├── controllers.rb
│   ├── finders/
│   │   ├── config_backups/
│   │   │   └── known_filenames.rb
│   │   ├── config_backups.rb
│   │   ├── db_exports/
│   │   │   └── known_locations.rb
│   │   ├── db_exports.rb
│   │   ├── interesting_findings/
│   │   │   ├── backup_db.rb
│   │   │   ├── debug_log.rb
│   │   │   ├── duplicator_installer_log.rb
│   │   │   ├── emergency_pwd_reset_script.rb
│   │   │   ├── full_path_disclosure.rb
│   │   │   ├── mu_plugins.rb
│   │   │   ├── multisite.rb
│   │   │   ├── php_disabled.rb
│   │   │   ├── readme.rb
│   │   │   ├── registration.rb
│   │   │   ├── tmm_db_migrate.rb
│   │   │   ├── upload_directory_listing.rb
│   │   │   ├── upload_sql_dump.rb
│   │   │   └── wp_cron.rb
│   │   ├── interesting_findings.rb
│   │   ├── main_theme/
│   │   │   ├── css_style_in_404_page.rb
│   │   │   ├── css_style_in_homepage.rb
│   │   │   ├── urls_in_404_page.rb
│   │   │   ├── urls_in_homepage.rb
│   │   │   └── woo_framework_meta_generator.rb
│   │   ├── main_theme.rb
│   │   ├── medias/
│   │   │   └── attachment_brute_forcing.rb
│   │   ├── medias.rb
│   │   ├── passwords/
│   │   │   ├── wp_login.rb
│   │   │   ├── xml_rpc.rb
│   │   │   └── xml_rpc_multicall.rb
│   │   ├── passwords.rb
│   │   ├── plugin_version/
│   │   │   └── readme.rb
│   │   ├── plugin_version.rb
│   │   ├── plugins/
│   │   │   ├── body_pattern.rb
│   │   │   ├── comment.rb
│   │   │   ├── config_parser.rb
│   │   │   ├── header_pattern.rb
│   │   │   ├── javascript_var.rb
│   │   │   ├── known_locations.rb
│   │   │   ├── query_parameter.rb
│   │   │   ├── urls_in_404_page.rb
│   │   │   ├── urls_in_homepage.rb
│   │   │   └── xpath.rb
│   │   ├── plugins.rb
│   │   ├── theme_version/
│   │   │   ├── style.rb
│   │   │   └── woo_framework_meta_generator.rb
│   │   ├── theme_version.rb
│   │   ├── themes/
│   │   │   ├── known_locations.rb
│   │   │   ├── urls_in_404_page.rb
│   │   │   └── urls_in_homepage.rb
│   │   ├── themes.rb
│   │   ├── timthumb_version/
│   │   │   └── bad_request.rb
│   │   ├── timthumb_version.rb
│   │   ├── timthumbs/
│   │   │   └── known_locations.rb
│   │   ├── timthumbs.rb
│   │   ├── users/
│   │   │   ├── author_id_brute_forcing.rb
│   │   │   ├── author_posts.rb
│   │   │   ├── author_sitemap.rb
│   │   │   ├── login_error_messages.rb
│   │   │   ├── oembed_api.rb
│   │   │   ├── rss_generator.rb
│   │   │   ├── wp_json_api.rb
│   │   │   └── yoast_seo_author_sitemap.rb
│   │   ├── users.rb
│   │   ├── wp_items/
│   │   │   └── urls_in_page.rb
│   │   ├── wp_items.rb
│   │   ├── wp_version/
│   │   │   ├── atom_generator.rb
│   │   │   ├── rdf_generator.rb
│   │   │   ├── readme.rb
│   │   │   ├── rss_generator.rb
│   │   │   └── unique_fingerprinting.rb
│   │   └── wp_version.rb
│   ├── finders.rb
│   ├── models/
│   │   ├── config_backup.rb
│   │   ├── db_export.rb
│   │   ├── interesting_finding.rb
│   │   ├── media.rb
│   │   ├── plugin.rb
│   │   ├── theme.rb
│   │   ├── timthumb.rb
│   │   ├── wp_item.rb
│   │   ├── wp_version.rb
│   │   └── xml_rpc.rb
│   ├── models.rb
│   └── views/
│       ├── cli/
│       │   ├── core/
│       │   │   ├── banner.erb
│       │   │   ├── db_update_finished.erb
│       │   │   ├── db_update_started.erb
│       │   │   ├── not_fully_configured.erb
│       │   │   └── version.erb
│       │   ├── enumeration/
│       │   │   ├── config_backups.erb
│       │   │   ├── db_exports.erb
│       │   │   ├── medias.erb
│       │   │   ├── plugins.erb
│       │   │   ├── themes.erb
│       │   │   ├── timthumbs.erb
│       │   │   └── users.erb
│       │   ├── finding.erb
│       │   ├── info.erb
│       │   ├── main_theme/
│       │   │   └── theme.erb
│       │   ├── notice.erb
│       │   ├── password_attack/
│       │   │   └── users.erb
│       │   ├── theme.erb
│       │   ├── usage.erb
│       │   ├── vuln_api/
│       │   │   └── status.erb
│       │   ├── vulnerability.erb
│       │   ├── wp_item.erb
│       │   └── wp_version/
│       │       └── version.erb
│       └── json/
│           ├── core/
│           │   ├── banner.erb
│           │   ├── db_update_finished.erb
│           │   ├── db_update_started.erb
│           │   ├── not_fully_configured.erb
│           │   └── version.erb
│           ├── enumeration/
│           │   ├── config_backups.erb
│           │   ├── db_exports.erb
│           │   ├── medias.erb
│           │   ├── plugins.erb
│           │   ├── themes.erb
│           │   ├── timthumbs.erb
│           │   └── users.erb
│           ├── finding.erb
│           ├── main_theme/
│           │   └── theme.erb
│           ├── password_attack/
│           │   └── users.erb
│           ├── theme.erb
│           ├── vuln_api/
│           │   └── status.erb
│           ├── wp_item.erb
│           └── wp_version/
│               └── version.erb
├── bin/
│   ├── wpscan
│   ├── wpscan-docker
│   ├── wpscan-docker-dev
│   ├── wpscan-memprof
│   └── wpscan-stackprof
├── lib/
│   ├── wpscan/
│   │   ├── browser.rb
│   │   ├── controller.rb
│   │   ├── controllers.rb
│   │   ├── db/
│   │   │   ├── dynamic_finders/
│   │   │   │   ├── base.rb
│   │   │   │   ├── plugin.rb
│   │   │   │   ├── theme.rb
│   │   │   │   └── wordpress.rb
│   │   │   ├── fingerprints.rb
│   │   │   ├── plugin.rb
│   │   │   ├── plugins.rb
│   │   │   ├── sponsor.rb
│   │   │   ├── theme.rb
│   │   │   ├── themes.rb
│   │   │   ├── updater.rb
│   │   │   ├── vuln_api.rb
│   │   │   ├── wp_item.rb
│   │   │   ├── wp_items.rb
│   │   │   └── wp_version.rb
│   │   ├── db.rb
│   │   ├── errors/
│   │   │   ├── enumeration.rb
│   │   │   ├── http.rb
│   │   │   ├── update.rb
│   │   │   ├── vuln_api.rb
│   │   │   ├── wordpress.rb
│   │   │   └── xmlrpc.rb
│   │   ├── errors.rb
│   │   ├── finders/
│   │   │   ├── dynamic_finder/
│   │   │   │   ├── finder.rb
│   │   │   │   ├── version/
│   │   │   │   │   ├── body_pattern.rb
│   │   │   │   │   ├── comment.rb
│   │   │   │   │   ├── config_parser.rb
│   │   │   │   │   ├── finder.rb
│   │   │   │   │   ├── header_pattern.rb
│   │   │   │   │   ├── javascript_var.rb
│   │   │   │   │   ├── query_parameter.rb
│   │   │   │   │   └── xpath.rb
│   │   │   │   ├── wp_item_version.rb
│   │   │   │   ├── wp_items/
│   │   │   │   │   └── finder.rb
│   │   │   │   └── wp_version.rb
│   │   │   └── finder/
│   │   │       └── wp_version/
│   │   │           └── smart_url_checker.rb
│   │   ├── finders.rb
│   │   ├── helper.rb
│   │   ├── parsed_cli.rb
│   │   ├── references.rb
│   │   ├── target/
│   │   │   └── platform/
│   │   │       ├── wordpress/
│   │   │       │   └── custom_directories.rb
│   │   │       └── wordpress.rb
│   │   ├── target.rb
│   │   ├── typhoeus/
│   │   │   └── response.rb
│   │   ├── version.rb
│   │   ├── vulnerability.rb
│   │   └── vulnerable.rb
│   └── wpscan.rb
├── spec/
│   ├── app/
│   │   ├── controllers/
│   │   │   ├── aliases_spec.rb
│   │   │   ├── core_spec.rb
│   │   │   ├── custom_directories_spec.rb
│   │   │   ├── enumeration_spec.rb
│   │   │   ├── password_attack_spec.rb
│   │   │   ├── vuln_api_spec.rb
│   │   │   └── wp_version_spec.rb
│   │   ├── finders/
│   │   │   ├── config_backups/
│   │   │   │   └── known_filenames_spec.rb
│   │   │   ├── config_backups_spec.rb
│   │   │   ├── db_exports/
│   │   │   │   └── known_locations_spec.rb
│   │   │   ├── db_exports_spec.rb
│   │   │   ├── interesting_findings/
│   │   │   │   ├── backup_db_spec.rb
│   │   │   │   ├── debug_log_spec.rb
│   │   │   │   ├── duplicator_installer_log_spec.rb
│   │   │   │   ├── emergency_pwd_reset_script_spec.rb
│   │   │   │   ├── full_path_disclosure_spec.rb
│   │   │   │   ├── mu_plugins_spec.rb
│   │   │   │   ├── multisite_spec.rb
│   │   │   │   ├── php_disabled_spec.rb
│   │   │   │   ├── readme_spec.rb
│   │   │   │   ├── registration_spec.rb
│   │   │   │   ├── tmm_db_migrate_spec.rb
│   │   │   │   ├── upload_direcrory_listing_spec.rb
│   │   │   │   ├── upload_sql_dump_spec.rb
│   │   │   │   └── wp_cron_spec.rb
│   │   │   ├── interesting_findings_spec.rb
│   │   │   ├── main_theme/
│   │   │   │   ├── css_style_in_404_page_spec.rb
│   │   │   │   ├── css_style_in_homepage_spec.rb
│   │   │   │   ├── urls_in_404_page_spec.rb.rb
│   │   │   │   ├── urls_in_homepage_spec.rb
│   │   │   │   └── woo_framework_meta_generator_spec.rb
│   │   │   ├── main_theme_spec.rb
│   │   │   ├── medias/
│   │   │   │   └── attachment_brute_forcing_spec.rb
│   │   │   ├── medias_spec.rb
│   │   │   ├── passwords/
│   │   │   │   ├── wp_login_spec.rb
│   │   │   │   └── xml_rpc_spec.rb
│   │   │   ├── plugin_version/
│   │   │   │   └── readme_spec.rb
│   │   │   ├── plugin_version_spec.rb
│   │   │   ├── plugins/
│   │   │   │   ├── body_pattern_spec.rb
│   │   │   │   ├── comment_spec.rb
│   │   │   │   ├── config_parser_spec.rb
│   │   │   │   ├── header_pattern_spec.rb
│   │   │   │   ├── javascript_var_spec.rb
│   │   │   │   ├── known_locations_spec.rb
│   │   │   │   ├── query_parameter_spec.rb
│   │   │   │   ├── urls_in_404_page_spec.rb
│   │   │   │   ├── urls_in_homepage_spec.rb
│   │   │   │   └── xpath_spec.rb
│   │   │   ├── plugins_spec.rb
│   │   │   ├── theme_version/
│   │   │   │   ├── style_spec.rb
│   │   │   │   └── woo_framework_meta_generator_spec.rb
│   │   │   ├── theme_version_spec.rb
│   │   │   ├── themes/
│   │   │   │   ├── known_locations_spec.rb
│   │   │   │   ├── urls_in_404_page_spec.rb
│   │   │   │   └── urls_in_homepage_spec.rb
│   │   │   ├── themes_spec.rb
│   │   │   ├── timthumb_version/
│   │   │   │   └── bad_request_spec.rb
│   │   │   ├── timthumb_version_spec.rb
│   │   │   ├── timthumbs/
│   │   │   │   └── known_locations_spec.rb
│   │   │   ├── timthumbs_spec.rb
│   │   │   ├── users/
│   │   │   │   ├── author_id_brute_forcing_spec.rb
│   │   │   │   ├── author_posts_spec.rb
│   │   │   │   ├── author_sitemap_spec.rb
│   │   │   │   ├── login_error_messages_spec.rb
│   │   │   │   ├── oembed_api_spec.rb
│   │   │   │   ├── rss_generator_spec.rb
│   │   │   │   ├── wp_json_api_spec.rb
│   │   │   │   └── yoast_seo_author_sitemap_spec.rb
│   │   │   ├── users_spec.rb
│   │   │   ├── wp_version/
│   │   │   │   ├── atom_generator_spec.rb
│   │   │   │   ├── rdf_generator_spec.rb
│   │   │   │   ├── readme_spec.rb
│   │   │   │   ├── rss_generator_spec.rb
│   │   │   │   └── unique_fingerprinting_spec.rb
│   │   │   └── wp_version_spec.rb
│   │   ├── models/
│   │   │   ├── interesting_finding_spec.rb
│   │   │   ├── media_spec.rb
│   │   │   ├── plugin_spec.rb
│   │   │   ├── theme_spec.rb
│   │   │   ├── timthumb_spec.rb
│   │   │   ├── wp_item_spec.rb
│   │   │   ├── wp_version_spec.rb
│   │   │   └── xml_rpc_spec.rb
│   │   └── views_spec.rb
│   ├── cache/
│   │   └── .gitignore
│   ├── fixtures/
│   │   ├── db/
│   │   │   ├── config_backups.txt
│   │   │   ├── db_exports.txt
│   │   │   ├── dynamic_finders.yml
│   │   │   ├── metadata.json
│   │   │   ├── sponsor.txt
│   │   │   ├── vuln_api/
│   │   │   │   ├── plugins/
│   │   │   │   │   ├── no-vulns-popular.json
│   │   │   │   │   ├── vulnerable-introduced-in.json
│   │   │   │   │   └── vulnerable-not-popular.json
│   │   │   │   ├── themes/
│   │   │   │   │   ├── dignitas-themes.json
│   │   │   │   │   ├── no-vulns-popular.json
│   │   │   │   │   ├── vulnerable-not-popular.json
│   │   │   │   │   └── yaaburnee-themes.json
│   │   │   │   └── wordpresses/
│   │   │   │       ├── 38.json
│   │   │   │       ├── 381.json
│   │   │   │       └── 40.json
│   │   │   └── wp_fingerprints.json
│   │   ├── dynamic_finders/
│   │   │   ├── expected.yml
│   │   │   ├── plugin_version/
│   │   │   │   ├── 10bit-paybuttons-easycard/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── 10bit-paybuttons-easycard-he_IL.po
│   │   │   │   ├── 10bit-paybuttons-pelecard/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── 10bit-paybuttons-pelecard-he_IL.po
│   │   │   │   ├── 24liveblog/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── 2fas/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── 2fas-pt_BR.po
│   │   │   │   ├── 2fas-light/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── 2kb-amazon-affiliates-store/
│   │   │   │   │   └── version_log/
│   │   │   │   │       └── template/
│   │   │   │   │           └── admin/
│   │   │   │   │               └── version.phtml
│   │   │   │   ├── 3-word-address-validation-field/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── 300form/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── 360-image/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── 360-product-viewer-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wp360view.pot
│   │   │   │   ├── 360-video/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── 404-page/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── 404-solution/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── 404-to-301/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── 404-to-301.pot
│   │   │   │   ├── 4nton-extensions/
│   │   │   │   │   └── javascript_file/
│   │   │   │   │       └── assets/
│   │   │   │   │           └── js/
│   │   │   │   │               └── script.js
│   │   │   │   ├── 4partners/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── 4partners-ru_RU.po
│   │   │   │   ├── 9mail-wp-email-templates-designer/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── LayerSlider/
│   │   │   │   │   ├── language_translation_file/
│   │   │   │   │   │   └── languages/
│   │   │   │   │   │       └── LayerSlider-en_US.po
│   │   │   │   │   └── locale_translation_file/
│   │   │   │   │       └── locales/
│   │   │   │   │           └── LayerSlider-en_US.po
│   │   │   │   ├── Ultimate_VC_Addons/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── a-note-above-wp-dashboard-notes/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── a-z-listing/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── a-z-listing.pot
│   │   │   │   ├── a3-portfolio/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── a4-barcode-generator/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wpbcu-barcode-generator.pot
│   │   │   │   ├── ab-human-time/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ab-human-time-it_IT.po
│   │   │   │   ├── abandoned-cart-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── abandoned-cart-for-woocommerce.pot
│   │   │   │   ├── abandoned-contact-form-7/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── abandoned-forms-contact-form-7.pot
│   │   │   │   ├── above-the-fold-optimization/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── absolute-thumbnail-column/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── absolute-thumbnail-column.pot
│   │   │   │   ├── academic-bloggers-toolkit/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── academic-bloggers-toolkit.pot
│   │   │   │   ├── academy-starter-templates/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── academy-starter-templates.pot
│   │   │   │   ├── accedeme-for-wp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wp-accedeme-es_ES.po
│   │   │   │   ├── accelerated-mobile-pages/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── accept-2checkout-payments-using-contact-form-7/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── accept-2checkout-payments-using-contact-form-7.pot
│   │   │   │   ├── accept-authorize-net-payments-using-contact-form-7/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── contact-form-7-authorize-net-addon.pot
│   │   │   │   ├── accept-qpay-payments-using-contact-form-7/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── accept-qpay-payments-using-contact-form-7.pot
│   │   │   │   ├── accept-sagepay-payments-using-contact-form-7/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── accept-sagepay-payments-using-contact-form-7.pot
│   │   │   │   ├── accept-stripe-payments-using-contact-form-7/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── contact-form-7-stripe-addon.pot
│   │   │   │   ├── accept-worldpay-payments-using-contact-form-7/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── contact-form-7-worldpay-addon.pot
│   │   │   │   ├── access-guard/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── access-guard.pot
│   │   │   │   ├── accessiblewp-skiplinks/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── accessiblewp-skiplinks.pot
│   │   │   │   ├── accordion-blocks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── accordion-faq-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── accordion-for-wp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── accordion-for-wp.pot
│   │   │   │   ├── aceide/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── acf-beautiful-flexible/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── acf-conditional-logic-advanced/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── acf-dropzone/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── acf-dropzone.pot
│   │   │   │   ├── acf-duplicate-repeater/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── acf-duplicate-repeater.pot
│   │   │   │   ├── acf-field-selector-field/
│   │   │   │   │   ├── translation_file/
│   │   │   │   │   │   └── lang/
│   │   │   │   │   │       └── acf-field-selector-field-hu_HU.mo
│   │   │   │   │   ├── translation_file2/
│   │   │   │   │   │   └── lang/
│   │   │   │   │   │       └── translation.po
│   │   │   │   │   ├── translation_file3/
│   │   │   │   │   │   └── lang/
│   │   │   │   │   │       └── acf-field-selector-field-hu_HU.po
│   │   │   │   │   └── translation_file_/
│   │   │   │   │       └── lang/
│   │   │   │   │           ├── acf-field-selector-field-hu_HU.mo
│   │   │   │   │           ├── acf-field-selector-field-hu_HU.po
│   │   │   │   │           └── translation.po
│   │   │   │   ├── acf-fields-in-custom-table/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── acffict.pot
│   │   │   │   ├── acf-flexible-content-extended/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── acf-flexible-content-preview/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── acf-openstreetmap-field/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── acf-openstreetmap-field.pot
│   │   │   │   ├── acf-options-for-polylang/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── acf-pro-show-fields-shortcode/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── uk_UA.po
│   │   │   │   ├── acf-quickedit-fields/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── acf-quickedit-fields.pot
│   │   │   │   ├── acf-sidebar-selector-field/
│   │   │   │   │   ├── translation_file/
│   │   │   │   │   │   └── lang/
│   │   │   │   │   │       └── acf-sidebar-selector-field-hu_HU.mo
│   │   │   │   │   ├── translation_file2/
│   │   │   │   │   │   └── lang/
│   │   │   │   │   │       └── translation.pot
│   │   │   │   │   └── translation_file3/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── acf-sidebar-selector-field-hu_HU.po
│   │   │   │   ├── acf-to-rest-api/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── composer.json
│   │   │   │   │   └── composer_file_/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── ach-updates-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ach_upn_manager.pot
│   │   │   │   ├── aco-product-labels-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── aco-product-labels-for-woocommerce.pot
│   │   │   │   ├── aco-variation-swatches-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── aco-variation-swatches-for-woocommerce.pot
│   │   │   │   ├── aco-wishlist-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── aco-wishlist-for-woocommerce.pot
│   │   │   │   ├── acobot-chatbot/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── acobot.pot
│   │   │   │   ├── action-scheduler/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── active-directory-authentication-integration/
│   │   │   │   │   ├── translation_file/
│   │   │   │   │   │   └── active-directory-authentication-integration.pot
│   │   │   │   │   ├── translation_file2/
│   │   │   │   │   │   └── languages/
│   │   │   │   │   │       └── default.mo
│   │   │   │   │   └── translation_file3/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── default.po
│   │   │   │   ├── active-plugins-on-multisite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── active-plugins.pot
│   │   │   │   ├── activecampaign-newsletter-subscription/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── default.pot
│   │   │   │   ├── activity-log-gravity-forms/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wsal-gravityforms.pot
│   │   │   │   ├── activity-log-memberpress/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── activity-log-memberpress.pot
│   │   │   │   ├── activity-log-tablepress/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── activity-log-tablepress.pot
│   │   │   │   ├── activity-log-wp-seo/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── activity-log-wp-seo.pot
│   │   │   │   ├── activitystream-extension/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── localization/
│   │   │   │   │           └── activitystream_extension.pot
│   │   │   │   ├── actus-animated-tags/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── acumulus/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── lib/
│   │   │   │   │   │       └── siel/
│   │   │   │   │   │           └── acumulus/
│   │   │   │   │   │               └── changelog.txt
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── libraries/
│   │   │   │   │           └── Siel/
│   │   │   │   │               └── composer.json
│   │   │   │   ├── acymailing-integration-for-uncanny-automator/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── language/
│   │   │   │   │           └── acymailing-integration-for-uncanny-automator.pot
│   │   │   │   ├── ad-blocks/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ad-blocks.pot
│   │   │   │   ├── ad-inserter/
│   │   │   │   │   ├── javascript_var/
│   │   │   │   │   │   └── js/
│   │   │   │   │   │       └── ad-inserter.js
│   │   │   │   │   └── style_var/
│   │   │   │   │       └── css/
│   │   │   │   │           └── ad-inserter.css
│   │   │   │   ├── ad-music-player-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── plugin-name.pot
│   │   │   │   ├── adamrob-parallax-scroll/
│   │   │   │   │   └── style_comment/
│   │   │   │   │       └── css/
│   │   │   │   │           └── parallax.css
│   │   │   │   ├── adaptive-learning-with-learndash/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── adblock-notify-by-bweb/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── add-amazon-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── add-from-server/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── add-meta-tags/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── add-meta-tags.pot
│   │   │   │   ├── add-on-cf7-for-airtable/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wpc-wpcf7-at.pot
│   │   │   │   ├── add-on-cf7-for-notion/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wpc-wpcf7-ntn.pot
│   │   │   │   ├── add-on-contact-form-7-mailpoet/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── add-on-gravity-forms-mailpoet/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── add-on-woocommerce-mailpoet/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── add-product-frontend-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bytes_product_frontend.pot
│   │   │   │   ├── additional-block-styles/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── additional-content/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── additional-content.pot
│   │   │   │   ├── additional-product-fields-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── rednaowooextraproduct.pot
│   │   │   │   ├── addon-gravityforms-sendinblue-free/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── addon-gravityforms-sendinblue-free.pot
│   │   │   │   ├── addon-library/
│   │   │   │   │   └── release_log/
│   │   │   │   │       └── release_log.txt
│   │   │   │   ├── addon-library-layouts/
│   │   │   │   │   └── release_log/
│   │   │   │   │       └── release_log.txt
│   │   │   │   ├── addon-stripe-with-contact-form-7/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── stripe-with-contact-form-7.pot
│   │   │   │   ├── addonify-quick-view/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── address-autocomplete-google-places/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── address-autocomplete.pot
│   │   │   │   ├── addressfinder-woo/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── javascript_var/
│   │   │   │   │       └── addressfinder.js
│   │   │   │   ├── addy-autocomplete-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── adl-team/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── at.pot
│   │   │   │   ├── admin-atlex-cloud/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ru_RU.pot
│   │   │   │   ├── admin-bar/
│   │   │   │   │   ├── translation_file/
│   │   │   │   │   │   └── lang/
│   │   │   │   │   │       └── ru_RU.po
│   │   │   │   │   └── translation_file2/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── ru_RU.mo
│   │   │   │   ├── admin-bar-backend-search/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── ab-backend-search-de_DE.po
│   │   │   │   ├── admin-category-filter/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── post-category-filter.pot
│   │   │   │   ├── admin-color-schemes/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── admin-dashboard-last-edits/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── admin-email-as-from-address/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── admin-help-docs/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── admin-live-search/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── admin-live-search.pot
│   │   │   │   ├── admin-menu-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── admin-menu-manager.pot
│   │   │   │   ├── admin-menu-reorder/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── admin-notes-wp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wp-admin-notes.pot
│   │   │   │   ├── admin-only-jetpack/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── admin-only-jetpack.pot
│   │   │   │   ├── admin-todotastic/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── admin-todotastic.pot
│   │   │   │   ├── admin-user-control/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── admin-user-control-ja.po
│   │   │   │   ├── admitad-tracking/
│   │   │   │   │   ├── translation_file/
│   │   │   │   │   │   └── languages/
│   │   │   │   │   │       └── admitadtracking.pot
│   │   │   │   │   ├── translation_file2/
│   │   │   │   │   │   └── languages/
│   │   │   │   │   │       └── admitadtracking-ru_RU.mo
│   │   │   │   │   └── translation_file3/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── admitadtracking-ru_RU.po
│   │   │   │   ├── adobe-xmp-for-wp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── adobe-xmp-for-wp.pot
│   │   │   │   ├── adplugg/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── adrecord-affiliate/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── adrecord-affiliate.pot
│   │   │   │   ├── adshares/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── adsimple-vote/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── adsimple-vote-de_DE.po
│   │   │   │   ├── advance-cash-on-delivery-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── coderockz-wc-advance-cod-free.pot
│   │   │   │   ├── advance-custom-html/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-html.pot
│   │   │   │   ├── advanced-category-column/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── advanced-cc-es_ES.po
│   │   │   │   ├── advanced-custom-fields-table-field/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── acf-table-pl_PL.po
│   │   │   │   ├── advanced-custom-types-for-divi/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── en_US.po
│   │   │   │   ├── advanced-database-cleaner/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── advanced-db-cleaner.pot
│   │   │   │   ├── advanced-google-recaptcha/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── advanced-google-recaptcha.pot
│   │   │   │   ├── advanced-image-comparison-for-elementor/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── advanced-options-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── advanced-options-for-woocommerce-he_IL.po
│   │   │   │   ├── advanced-post-excerpt/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── advanced-quiz/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── advanced-random-posts-widget/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── advanced-random-posts-widget.pot
│   │   │   │   ├── advanced-testimonial-carousel-for-elementor/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── advanced-testimonial-for-wp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── itt_testimonial_textdomain-en_US.po
│   │   │   │   ├── advanced-twitter-profile-widget/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── atpw-pl_PL.po
│   │   │   │   ├── advanced-wp-table/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── advanced-wp-table.pot
│   │   │   │   ├── advanced-xprofile-fields-for-buddypress/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── advanced-xprofile-fields-for-buddypress.pot
│   │   │   │   ├── af-companion/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── affiliate-bridge/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── affiliate-bridge.pot
│   │   │   │   ├── affiliate-links-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── uk_UA.po
│   │   │   │   ├── affiliatebooster-blocks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── affiliates/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── affiliates-buddypress/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── affiliates-events-manager/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── affiliates-formidable/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── affiliates-ninja-forms/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── affiliates-woocommerce-light/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── affiliatewp-blocks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── affilicious/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── affliates-manager-prime-for-wc-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ciwcamp-affliate-manager.pot
│   │   │   │   ├── afi-to-integrations/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── after-comment-prompts/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── ag-twitter/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── age-verify/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── age-verify.pot
│   │   │   │   ├── aged-content-message/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── agile-whatsapp-share/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── agile_whatsapp_share.po
│   │   │   │   ├── agnoplay/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── nl.po
│   │   │   │   ├── agy-verification/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── agy-verification.pot
│   │   │   │   ├── ahachat-messenger-marketing/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── ahime-image-printer/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── ai-bot/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ai-bot.pot
│   │   │   │   ├── ai-co-pilot-for-wp/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── ai-contact-form/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── ai-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── firstmedia-ai-text-es_VE.po
│   │   │   │   ├── ai-image-generator/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── ai-scribe/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── aiscribe.pot
│   │   │   │   ├── aiaibot/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── aiaibot.pot
│   │   │   │   ├── aio-for-divi/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── en_US.po
│   │   │   │   ├── air-wp-sync/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── airwpsync-fr_FR.po
│   │   │   │   ├── aircash-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── aircash-for-woocommerce-hr.po
│   │   │   │   ├── airstory/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── airstory.pot
│   │   │   │   ├── ajax-contact-forms/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── acfw30-en_US.po
│   │   │   │   ├── ajax-load-more-by-bkker-theme/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── en_US.po
│   │   │   │   ├── ajax-search-bar/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── ajaxify-filters/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── language/
│   │   │   │   │           └── ajaxify-filters-en_US.po
│   │   │   │   ├── alceris-analytics/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── alerts-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── ali2woo-lite/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── ali2woo-migration-tool/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── align-text-edge/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── align-text-edge.pot
│   │   │   │   ├── alkubot/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── Alkubot-en_US.po
│   │   │   │   ├── all-embed-addons-for-elementor/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── allembed.pot
│   │   │   │   ├── all-in-all-image-hover-effect/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── cu-framework/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── zh_CN.po
│   │   │   │   ├── all-in-one-event-calendar/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── language/
│   │   │   │   │           └── all-in-one-event-calendar.po
│   │   │   │   ├── all-in-one-forms/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easycalculationform.pot
│   │   │   │   ├── all-in-one-music-player/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── all-in-one-music-player.pot
│   │   │   │   ├── all-in-one-redirection/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── all-in-one-redirection.pot
│   │   │   │   ├── allada-tshirt-designer-for-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── allow-javascript-in-text-widgets/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── allow-javascript-in-text-widgets.pot
│   │   │   │   ├── allpay-payment-gateway/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── allpay-payment-gateway-ru_RU.po
│   │   │   │   ├── alnp-facebook-pixel-tracking/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── alnp-facebook-pixel-tracking.pot
│   │   │   │   ├── alo-easymail/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── alpha-google-map-for-elementor/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── alpha-google-map-for-elementor.pot
│   │   │   │   ├── alpha-insights-intelligent-profit-reports-for-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── alpha-price-table-for-elementor/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── alpha-price-table-for-elementor.pot
│   │   │   │   ├── alpha-single-product-for-elementor/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── alpha-single-product-for-elementor.pot
│   │   │   │   ├── altapay-for-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── always-allow-admin-comments/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── always-visible-floating-product-publish-button-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── floating-product-publish-button-it_IT.po
│   │   │   │   ├── am-lottieplayer/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── amazing-portfolio/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── inc/
│   │   │   │   │           └── framework/
│   │   │   │   │               └── languages/
│   │   │   │   │                   └── cs-framework.pot
│   │   │   │   ├── amazon-fps/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ppdg.pot
│   │   │   │   ├── amazon-product-in-a-post-plugin/
│   │   │   │   │   └── css_file/
│   │   │   │   │       └── css/
│   │   │   │   │           └── amazon-default-plugin-styles.css
│   │   │   │   ├── amnav-menu-control/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── amnav-menu-control.pot
│   │   │   │   ├── amwal-checkout/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── amzft/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── analogwp-templates/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ang.pot
│   │   │   │   ├── analytics-for-cloudflare/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── ananas/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── angelleye-paypal-invoicing/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── angelleye-paypal-invoicing-en_US.po
│   │   │   │   ├── ani-mate-animation-extension/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── animate-blocks/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── animate-blocks.pot
│   │   │   │   ├── animated-blocks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── animation-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── announce-on-publish/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── announce-on-publish-es_ES.po
│   │   │   │   ├── annytab-photoswipe/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── annytab-photoswipe.pot
│   │   │   │   ├── anrghg/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── anrghg-en_GB.po
│   │   │   │   ├── anspress-question-answer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── anspress-question-answer.pot
│   │   │   │   ├── anti-ddosbot-recaptcha-protection/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── anwp-post-grid-for-elementor/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── anycomment/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── anycomment-analytics/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── anything-order-by-terms/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── aoplayer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── aoplayer.pot
│   │   │   │   ├── apcu-manager/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── api-cache-pro/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── api-key-for-google-maps/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── gmaps-api-key.po
│   │   │   │   ├── apijoin-gumroad/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── apiki-wp-care/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── aplazame/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── aplazame.pot
│   │   │   │   ├── aplazo-payment-gateway/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── aplazo-payment-gateway-es_MX.po
│   │   │   │   ├── apollo13-framework-extensions/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── app-log/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── aplg.pot
│   │   │   │   ├── appconsent-cmp-sfbx/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── appconsent-cmp-sfbx.pot
│   │   │   │   ├── appmaps/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── appmaps.pot
│   │   │   │   ├── appsy/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── apx-link-status/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── apx-link-status.pot
│   │   │   │   ├── ar-contactus/
│   │   │   │   │   └── changelog/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── arabic-webfonts/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── archive-disabler/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── archive-disabler.pot
│   │   │   │   ├── archive-title/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── archiver/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── archiver.pot
│   │   │   │   ├── archives-by-category-and-date/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── archives-by-category-and-date.pot
│   │   │   │   ├── arforms-form-builder/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── arforms-form-builder-ja_JP.po
│   │   │   │   ├── arkam-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ar.po
│   │   │   │   ├── arlo-training-and-event-management-system/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── armember-membership/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ARMember-en_US.po
│   │   │   │   ├── array-partition/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── arrayforms/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── arvancloud-cdn/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── arvancloud-cdn.pot
│   │   │   │   ├── arvancloud-vod/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── arvancloud-vod.pot
│   │   │   │   ├── arya-license-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── arya-license-manager.pot
│   │   │   │   ├── ascendoor-logo-slide/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ascendoor-logo-slide.pot
│   │   │   │   ├── ascendoor-metadata-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ascendoor-metadata-manager.pot
│   │   │   │   ├── ask-faq/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ask-faq-pro.pot
│   │   │   │   ├── ask-me-anything-anonymously/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ask-me-anything-anonymously.pot
│   │   │   │   ├── asmember/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── asmember-de_DE.po
│   │   │   │   ├── assign-missing-categories/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── assign-missing-categories.pot
│   │   │   │   ├── asterisk-web-callback/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── z_asteriskcallback-ru_RU.po
│   │   │   │   ├── astra-sites/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── astra-sites.pot
│   │   │   │   ├── astra-widgets/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── astra-widgets.pot
│   │   │   │   ├── asura-connector/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── athemes-blocks/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── athemes-blocks.pot
│   │   │   │   ├── atlas-content-modeler/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── atlas-content-modeler.pot
│   │   │   │   ├── atom-featured-image/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── atomic-blocks/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── atomic-blocks.pot
│   │   │   │   ├── atr-inline-rtl-ltr/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── attachment-file-icons/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── attachment-file-icons-en_US.po
│   │   │   │   ├── attachment-usage/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── attachment-usage-de_DE.po
│   │   │   │   ├── attribute-stock-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── attribute-stock-for-woocommerce.pot
│   │   │   │   ├── audio-widget/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── audio-widget.pot
│   │   │   │   ├── audius-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── aurora-heatmap/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── aurora-heatmap-ja.po
│   │   │   │   ├── auth0/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── authentiq/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── author-bio-box/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── author-bio-box.pot
│   │   │   │   ├── author-images/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── author-images.pot
│   │   │   │   ├── authors-autocomplete-meta-box/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── authors-autocomplete-meta-box-es_ES.po
│   │   │   │   ├── auto-animateimage/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── animateimage-ja.po
│   │   │   │   ├── auto-category-for-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── auto-category-for-posts.pot
│   │   │   │   ├── auto-date-year-month/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── auto-delete-applications-add-on-for-wp-job-openings/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── auto-delete-wp-job-openings.pot
│   │   │   │   ├── auto-deselect-uncategorized/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── auto-deselect-uncategorized.pot
│   │   │   │   ├── auto-load-next-post/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── auto-load-next-post.pot
│   │   │   │   ├── auto-login-with-cloudflare/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── auto-login-with-cloudflare-zh_TW.po
│   │   │   │   ├── auto-menu-from-pages/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── auto-menu-from-pages.pot
│   │   │   │   ├── auto-post-woocommerce-products/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── auto-post-woocommerce-products-es_ES.po
│   │   │   │   ├── autoclear-autoptimize-cache/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── autoclear-autoptimize-cache.pot
│   │   │   │   ├── autoclose/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── autoclose-en_US.pot
│   │   │   │   ├── autocomplete-wc-order-status/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── autodate/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── default.pot
│   │   │   │   ├── autodescription/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── language/
│   │   │   │   │           └── autodescription.pot
│   │   │   │   ├── automatic-image-uploader/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── aiu.pot
│   │   │   │   ├── automatic-post-categories/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── automatic-post-categories.pot
│   │   │   │   ├── automatically-add-product-to-cart/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── automizy-gravity-forms/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── automizy-gravity-forms.pot
│   │   │   │   ├── autoptimize-criticalcss/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ao_critcss_aas.pot
│   │   │   │   ├── autoremove-attachments/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── autotags/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── AutoTags.pot
│   │   │   │   ├── avadanta-companion/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── avadanta-companion.pot
│   │   │   │   ├── avaibook/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── avaibook-pt_PT.po
│   │   │   │   ├── avalon23-products-filter-for-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── avangpress/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── avartan-slider-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── avartan-slider-lite.pot
│   │   │   │   ├── avatarplus/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── avatarplus-de_DE.po
│   │   │   │   ├── avatars-meta-box/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── avatars-meta-box.pot
│   │   │   │   ├── avif-support/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── avif-support.pot
│   │   │   │   ├── aw-woocommerce-kode-pembayaran/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── aw-woocommerce-pos/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── aw-woocommerce-tiki/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── aweos-wp-lock/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── awesome-hooks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── awesome-instant-search/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── translation/
│   │   │   │   │           └── ais-es_ES.po
│   │   │   │   ├── awesome-support/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── awesome-support.pot
│   │   │   │   ├── awesome-surveys/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── awesome-surveys-hu_HU.po
│   │   │   │   ├── awp-booking-calendar/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── awsa-quick-buy/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── awsa-quick-buy.pot
│   │   │   │   ├── awsa-shipping/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── awsa-shipping-fa_IR.po
│   │   │   │   ├── awstats-script/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── awstats-script.pot
│   │   │   │   ├── ax-scrollto-top/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── ayecode-connect/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ayecode-connect-en_US.po
│   │   │   │   ├── b-productiv-lite/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── b-slider/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── sliders-en_US.po
│   │   │   │   ├── b-tiktok-feed/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── tiktok.pot
│   │   │   │   ├── b2b-e-commerce-lite/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── b2binpay-payments-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── b2binpay-payments-for-woocommerce.pot
│   │   │   │   ├── ba-book-everything/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ba-book-everything.pot
│   │   │   │   ├── ba-event/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ba-event.pot
│   │   │   │   ├── baap-mobile-version/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── baap-mobile-version.pot
│   │   │   │   ├── back-in-stock-notifications-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── back-in-stock-notifications-for-woocommerce-en_US.po
│   │   │   │   ├── back-in-stock-notifier-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cwginstocknotifier-cz_CZ.po
│   │   │   │   ├── back-top/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── setting-page/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── bn_BD.po
│   │   │   │   ├── backdrop-post-types/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── backdrop-post-types.pot
│   │   │   │   ├── backend-startpage-customizer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── backend-startpage-customizer-de_DE.po
│   │   │   │   ├── background-music-player-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── plugin-name.pot
│   │   │   │   ├── backstage/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── backstage.pot
│   │   │   │   ├── backupbuddy/
│   │   │   │   │   └── history_log/
│   │   │   │   │       └── history.txt
│   │   │   │   ├── backupwordpress/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── backupwordpress.pot
│   │   │   │   ├── badgeos-edd-integration/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── badgeos-lifterlms-integration/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── badgeos-nomination-submission-add-on/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── badgeos-rest-api-addon/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── banana-faq/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── banana-faq.pot
│   │   │   │   ├── banggood-dropshipping/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── bangla-sidebar-login/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── I18n/
│   │   │   │   │           └── bn-sidebar-login.pot
│   │   │   │   ├── bankval/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── banner-alerts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── banner-alerts.pot
│   │   │   │   ├── banner-slider-for-advertisement/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wpwbs-en_US.po
│   │   │   │   ├── basic-alerts/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── bayarcash-givewp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bayarcash-givewp.pot
│   │   │   │   ├── bb-gallery/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bb_gallery.pot
│   │   │   │   ├── bb-header-footer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bb-header-footer.pot
│   │   │   │   ├── bb-login-module/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── login-module-for-bb.pot
│   │   │   │   ├── bb-toolbox/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── bb-vapor-modules/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bb-vapor-modules.pot
│   │   │   │   ├── bbpress-digest/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bbp-digest.pot
│   │   │   │   ├── bbpress-improved-statistics-users-online/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── bbpressmoderation/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── bbredirector/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── default.pot
│   │   │   │   ├── bdthemes-prime-slider-lite/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── be-shortcodes/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── be-shortcodes.pot
│   │   │   │   ├── bea-activator/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.MD
│   │   │   │   ├── beastiepress/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── beastiepress-en_US.po
│   │   │   │   ├── beautiful-custom-invoices/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── beautimour-kit/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── beautimour-kit.pot
│   │   │   │   ├── beaver-builder-lite-version/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── beaverlodge-pushmenu/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── default.po
│   │   │   │   ├── beer-blocks/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── before-after-image-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── before-after-images-for-divi/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── en_US.po
│   │   │   │   ├── bellows-accordion-menu/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bellows.pot
│   │   │   │   ├── beonepage-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── beonepage-lite.pot
│   │   │   │   ├── bertha-ai-free/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── best-restaurant-menu-by-pricelisto/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── best-suggestion-boxes/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── best-suggestion-boxes.pot
│   │   │   │   ├── best-testimonial/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── best-testimonial.pot
│   │   │   │   ├── bestprice-analytics-integration/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── bethemesme/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bethemesme.pot
│   │   │   │   ├── better-admin-users-search/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── baus.pot
│   │   │   │   ├── better-comments/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── better-comments-reply-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── better-comments-reply-manager.pot
│   │   │   │   ├── better-file-editor/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── better-font-awesome/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── better-font-awesome.pot
│   │   │   │   ├── better-formats/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── betterformats.pot
│   │   │   │   ├── better-plugin-recommendations/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── better-plugin-recommendations.pot
│   │   │   │   ├── better-rest-api-featured-images/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── better-rest-api-featured-images.pot
│   │   │   │   ├── better-rest-endpoints/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── better-reviews-for-woocommerce/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── woo-better-reviews.pot
│   │   │   │   ├── better-website-performance/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── better-website-performance.pot
│   │   │   │   ├── better-wp-security/
│   │   │   │   │   └── history_log/
│   │   │   │   │       └── history.txt
│   │   │   │   ├── better-yourls/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── better-yourls.pot
│   │   │   │   ├── beyond-identity-passwordless/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── bft-autoresponder/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── bft-autoresponder.pot
│   │   │   │   ├── bhoot-blocks-wp-job-manager/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── blocks-for-wp-job-manager.pot
│   │   │   │   ├── bible-online-popup/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── BOP.pot
│   │   │   │   ├── bigcommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── bigly-dropship/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── bike-rental/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bike-rental-ru_RU.po
│   │   │   │   ├── billingo/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── billplz-for-edd/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── bim-ba/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lib/
│   │   │   │   │           └── cmb2/
│   │   │   │   │               └── languages/
│   │   │   │   │                   └── cmb2.pot
│   │   │   │   ├── bing-translator/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bing-translator-bg_BG.po
│   │   │   │   ├── bip-pages/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bip-pages.pot
│   │   │   │   ├── birthday-widget-for-buddypress/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── bit-integrations/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bit-integrations.pot
│   │   │   │   ├── bit-social/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bit-social.pot
│   │   │   │   ├── bitform/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bitform.pot
│   │   │   │   ├── black-login-screen/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── langs/
│   │   │   │   │           └── black_login_screen-en_GB.po
│   │   │   │   ├── black-studio-tinymce-widget/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── black-studio-tinymce-widget.pot
│   │   │   │   ├── blade/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── blank-footnotes/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── blaze-checkout/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── bleumi-pay-crypto-payments-for-woocommerce/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── blimply/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lib/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── blimply.pot
│   │   │   │   ├── blkcanvas-easy-attachments/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── block-catalog/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── block-editor-gallery-slider/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── block-editor-gallery-slider.pot
│   │   │   │   ├── block-editor-navigator/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── block-editor-navigator.pot
│   │   │   │   ├── block-editor-search-replace/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── block-editor-search-replace.pot
│   │   │   │   ├── block-enhancements/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── block-enhancements.pot
│   │   │   │   ├── block-for-mailchimp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── mailchimp.pot
│   │   │   │   ├── block-for-masonry-gallery/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── block-for-woo-product-table/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── block-for-woo-product-table.pot
│   │   │   │   ├── block-for-yandex-sovetnik/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── antisovet-ru_RU.po
│   │   │   │   ├── block-layouts/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── block-minimap/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── block-pattern-builder/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── block-spammers/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wbs.pot
│   │   │   │   ├── block-xray-attributes/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── blockart-blocks/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── blockart.pot
│   │   │   │   ├── blockbuddy/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── blockify/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── assets/
│   │   │   │   │           └── lang/
│   │   │   │   │               └── blockify.pot
│   │   │   │   ├── blockmeister/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── blockons/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── blockons.pot
│   │   │   │   ├── blockprotocol/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── blockq/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── locale/
│   │   │   │   │           └── blockq.pot
│   │   │   │   ├── blocks-by-projects-engine/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── blocks-export-import/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── blocks-for-eventbrite/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── blocks-for-shopengine/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── shopengine-gutenberg-addon.pot
│   │   │   │   ├── blocks-for-wp-editor/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── blocks-ultimate/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── blogging-tools/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── blogging-tools.pot
│   │   │   │   ├── bloglovin-follow/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bloglovin_follow_trans_domain.pot
│   │   │   │   ├── blogsqode-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── blogsqode.pot
│   │   │   │   ├── blogware-importer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── blogware-importer.pot
│   │   │   │   ├── blossom-recipe-maker/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── blossom-recipe-maker.pot
│   │   │   │   ├── blossomthemes-email-newsletter/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── blossomthemes-email-newsletter.pot
│   │   │   │   ├── blossomthemes-toolkit/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── blossomthemes-toolkit.pot
│   │   │   │   ├── blue-hat-cdn/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── blue-hat-cdn-pt_BR.po
│   │   │   │   ├── bluebox-pricing-table-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── bluehost-site-migrator/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bluehost-site-migrator.pot
│   │   │   │   ├── bma-lite-appointment-booking-and-scheduling/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── rtwbmal-book-my-appointment.pot
│   │   │   │   ├── body_pattern_passive_all.html
│   │   │   │   ├── boleto-cora/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── bolt-checkout-bigcommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── bonaire/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── boo-recipes/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── boo-recipes-de_DE.po
│   │   │   │   ├── book-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── book-review/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── book-review.pot
│   │   │   │   ├── booking-activities/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── booking-activities.pot
│   │   │   │   ├── booking-x/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bookingx.pot
│   │   │   │   ├── bookingcom-official-searchbox/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bookingcom-official-searchbox-ru_RU.po
│   │   │   │   ├── bookingcom-product-helper/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bookingcom-product-helper-en_US.po
│   │   │   │   ├── bookingpress-appointment-booking/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bookingpress-appointment-booking-en_US.po
│   │   │   │   ├── bookmark-export/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── bookmark-export-de_DE.po
│   │   │   │   ├── bookwize-booking-form/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── boomerang/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── boomerang.pot
│   │   │   │   ├── booster-for-elementor/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── elementor-booster.pot
│   │   │   │   ├── booster-pack-for-divi/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── en_US.po
│   │   │   │   ├── boostimer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── boostimer.pot
│   │   │   │   ├── bootstrap-for-contact-form-7/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── bopo-woo-product-bundle-builder/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── bot-for-telegram-on-woocommerce/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── bounce-handler-mailpoet/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── bowe-codes/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bowe-codes.pot
│   │   │   │   ├── boxtal-connect/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── Boxtal/
│   │   │   │   │           └── BoxtalConnectWoocommerce/
│   │   │   │   │               └── translation/
│   │   │   │   │                   └── boxtal-connect-fr_FR.po
│   │   │   │   ├── bp-activity-social-share/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── buddypress-share.pot
│   │   │   │   ├── bp-avatar-suggestions/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-avatar-suggestions.pot
│   │   │   │   ├── bp-beta-tester/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-beta-tester.pot
│   │   │   │   ├── bp-block-users/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-block-users.pot
│   │   │   │   ├── bp-bookmarklet/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-bookmarklet.pot
│   │   │   │   ├── bp-create-group-type/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-add-group-types.pot
│   │   │   │   ├── bp-edit-user-profiles/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-edit-user-profiles.pot
│   │   │   │   ├── bp-emails-for-bbp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-emails-for-bbp.pot
│   │   │   │   ├── bp-events-calendar/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-events-calendar.pot
│   │   │   │   ├── bp-forum-notifier/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-forum-notifier-sv_SE.po
│   │   │   │   ├── bp-group-sites/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-group-sites.pot
│   │   │   │   ├── bp-groups-civicrm-sync/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-groups-civicrm-sync.pot
│   │   │   │   ├── bp-my-home/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-my-home.pot
│   │   │   │   ├── bp-new-order-notifications-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-new-order-notification.pot
│   │   │   │   ├── bp-order-date-time-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-woopick-delivery.pot
│   │   │   │   ├── bp-post-from-anywhere/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-post-from-anywhere.pot
│   │   │   │   ├── bp-premiums/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-premiums.pot
│   │   │   │   ├── bp-profile-field-duplicator/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-profile-field-duplicator.pot
│   │   │   │   ├── bp-reactions/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-reactions.pot
│   │   │   │   ├── bp-search-block/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-search-block-fr_FR.po
│   │   │   │   ├── bp-security-check/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-security-check.pot
│   │   │   │   ├── bp-show-friends/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-show-friends.pot
│   │   │   │   ├── bp-social-connect/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── bp-sticky-groups/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-sticky-groups.pot
│   │   │   │   ├── bp-xprofile-rich-text-field/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-xprofile-rich-text-field.pot
│   │   │   │   ├── bpost-shipping/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── composer.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bpost_shipping.pot
│   │   │   │   ├── bps-splide-slider-block/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bps-slider-block.pot
│   │   │   │   ├── bpwp-set-homepages/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── plugin.pot
│   │   │   │   ├── braft-woo-shipping-packer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── braft-woo-shipping-packer.pot
│   │   │   │   ├── branda-white-labeling/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ub.pot
│   │   │   │   ├── brandnestor/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── brandnestor-el.po
│   │   │   │   ├── breadcrumb-trail/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── breadcrumb-trail.pot
│   │   │   │   ├── bridge-tournament/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bridge-tournament-fr_FR.po
│   │   │   │   ├── bridgy-publish/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bridgy.pot
│   │   │   │   ├── brightcove-video-connect/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── brightcove.pot
│   │   │   │   ├── brix-page-builder/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── brix.pot
│   │   │   │   ├── broken-links-remover/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── browser-title-bar-animation/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wp-tbas.pot
│   │   │   │   ├── browser-window-stats/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── browser-window-stats.pot
│   │   │   │   ├── brozzme-blurb-lightbox-module-in-divi/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── brozzme-lightbox-blurb-fr_FR.po
│   │   │   │   ├── brozzme-change-username/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── brozzme-change-username.pot
│   │   │   │   ├── brozzme-colorize/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── brozzme-colorize.pot
│   │   │   │   ├── brozzme-fullwidth-divi/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── brozzme-fullwidth-divi.pot
│   │   │   │   ├── bstone-demo-importer/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── btb-full-width-section/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── btcpaywall/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── bu-learning-blocks/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bu-learning-blocks.pot
│   │   │   │   ├── bu-navigation/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bu-navigation.pot
│   │   │   │   ├── bu-section-editing/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bu-section-editing.pot
│   │   │   │   ├── buddy-bbpress-support-topic/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── buddypress/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── buddypress.pot
│   │   │   │   ├── buddypress-activity-tags/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-activity-tags-sr_RS.po
│   │   │   │   ├── buddypress-compliments/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── change_log.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-compliments-en_US.po
│   │   │   │   ├── buddypress-docs/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── buddypress-docs.pot
│   │   │   │   ├── buddypress-media/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── buddypress-media.po
│   │   │   │   ├── buddypress-message-attachment/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-msgat.pot
│   │   │   │   ├── buddypress-profile-progression/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bppp-de_DE.po
│   │   │   │   ├── buddypress-registration-groups-1/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── buddypress-registration-groups.pot
│   │   │   │   ├── buffer-my-post/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── buffer-my-post.pot
│   │   │   │   ├── bugherd-dashboard/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── plugin-name.pot
│   │   │   │   ├── bulk-delete/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bulk-delete.pot
│   │   │   │   ├── bulk-edit-categories-tags/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── bulk-edit-categories-tags.pot
│   │   │   │   ├── bulk-edit-events/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── bulk-edit-events.pot
│   │   │   │   ├── bulk-edit-posts-on-frontend/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── bulk-edit-posts-on-frontend.pot
│   │   │   │   ├── bulk-edit-user-profiles-in-spreadsheet/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── bulk-edit-user-profiles-in-spreadsheet.pot
│   │   │   │   ├── bulk-plugin-installation/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bulk-plugin-installation-es_ES.po
│   │   │   │   ├── bulk-plugin-toggle/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── bulk-term-editor/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bulk-term-editor.pot
│   │   │   │   ├── bulkpress-export/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bulkpress-export.pot
│   │   │   │   ├── bulky-bulk-edit-products-for-woo/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── bulletproof-security/
│   │   │   │   │   └── config_comment/
│   │   │   │   │       └── admin/
│   │   │   │   │           └── htaccess/
│   │   │   │   │               └── wpadmin-secure.htaccess
│   │   │   │   ├── bumbal/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bumbal.pot
│   │   │   │   ├── bunnycdnbunnyapi/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── buscape-wp-related-products/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── BWPRP-pt_BR.po
│   │   │   │   ├── business-block-widget/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── business-block-widget.pot
│   │   │   │   ├── business-directory-plugin/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── WPBDM.pot
│   │   │   │   ├── business-profile/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── business-profile.pot
│   │   │   │   ├── business-review/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── business-reviews.pot
│   │   │   │   ├── business-website-helper/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── button-with-fontawesome-icons-by-like-agency/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── lbfa-pl_PL.po
│   │   │   │   ├── buttons-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── buy-now-button-direct-checkout-quick-checkoutpurchase-button-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── buy-now-direct-checkout-for-woocommerce-hi_IN.po
│   │   │   │   ├── bwp-recaptcha/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── bwp-recaptcha.pot
│   │   │   │   ├── bxslider-integration/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bxsg.pot
│   │   │   │   ├── bypass-iframe-height-limit/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cab-fare-calculator/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── tblight.pot
│   │   │   │   ├── cache-control-by-cacholong/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── cache-images/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cache-images-fa_IR.po
│   │   │   │   ├── cache-seo-speed/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cal-embedder-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── language/
│   │   │   │   │           └── cal-embedder-lite.pot
│   │   │   │   ├── calculated-fields-for-acf/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── calculated-fields-for-acf.pot
│   │   │   │   ├── calculated-fields-form/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── caldera-forms/
│   │   │   │   │   └── javascript_comment/
│   │   │   │   │       └── assets/
│   │   │   │   │           └── js/
│   │   │   │   │               └── vue.js
│   │   │   │   ├── calendarista-basic-edition/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── calendarista-de_DE.po
│   │   │   │   ├── call-to-action-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── callme-form/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── callme-plugin-ru_RU.po
│   │   │   │   ├── campaign-monitor-dashboard/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── campaign-monitor-dashboard.pot
│   │   │   │   ├── candescent/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── canto/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── capture-and-convert/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── carbon-fields/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── card-oracle/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── card-oracle.pot
│   │   │   │   ├── carmo-woo-product-gtin/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── carmo-product-gtin-for-woocommerce-pt_PT.po
│   │   │   │   ├── carousel-glider-js/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cart-rest-api-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cart-rest-api-for-woocommerce.pot
│   │   │   │   ├── cartflows/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cartflows.pot
│   │   │   │   ├── casso-tu-dong-xac-nhan-thanh-toan-chuyen-khoan-ngan-hang/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── casso-wordpress-plugin-vi.po
│   │   │   │   ├── catalog-mode-pricing-enquiry-forms-promotions/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wmodes-tdm.pot
│   │   │   │   ├── categorize-pages/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── categorize-your-wishlist-for-woocomerceposts-custom-post-types/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── categorize-wishlist-woocomerce-posts-custom-post-types-ja.po
│   │   │   │   ├── category-archives-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── category-tag-tidy/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── category-tag-tidy-en.po
│   │   │   │   ├── catenis-blocks/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── catenis-blocks.pot
│   │   │   │   ├── catna-woo-name-your-price-and-offers/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── cbqe-edit-flow/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cbqe-edit-flow.pot
│   │   │   │   ├── cbtwittercard/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cbtwittercard-en_US.po
│   │   │   │   ├── cbxdropboxfilechooser/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cbxdropboxfilechooser-en_GB.po
│   │   │   │   ├── cbxform/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cbxform-en_GB.po
│   │   │   │   ├── cbxpoll/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cbxpoll-en_US.po
│   │   │   │   ├── cbxwooextendedorders/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cbxwooextendedorders-en_GB.po
│   │   │   │   ├── cbxwpslack/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cbxwpslack-en_GB.po
│   │   │   │   ├── cc-auto-activate-plugins/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── cc-manga-comic-reader/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lib/
│   │   │   │   │           └── codestar-framework/
│   │   │   │   │               └── languages/
│   │   │   │   │                   └── bn_BD.po
│   │   │   │   ├── cc-mu-plugins-loader/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── centrobill-payment-gateway/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── cestina-zalomeni-radku/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bozimediazalomeni.pot
│   │   │   │   ├── cf-7-gutenberg/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cf-7-gutenberg.pot
│   │   │   │   ├── cf-geoplugin/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── cf-image-resizing/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── cf-images/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cf-images.pot
│   │   │   │   ├── cf7-blocks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cf7-conditional-load/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── cf7-conditional-load.pot
│   │   │   │   ├── cf7-constant-contact-fields-mapping/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cf7-constant-contact-fields-mapping.pot
│   │   │   │   ├── cf7-custom-validation-message/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cf7-custom-validation-message.pot
│   │   │   │   ├── cf7-editor-button/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── contact-form-7-editor-button.pot
│   │   │   │   ├── cf7-facebook-contactor/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── gsconnector-en_US.po
│   │   │   │   ├── cf7-file-download/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cf7-file-download.pot
│   │   │   │   ├── cf7-google-sheets-connector/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cf7-google-sheets-connector-en_US.po
│   │   │   │   ├── cf7-mountstride-crm-integration/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cf7-to-mountstride.pot
│   │   │   │   ├── cf7-proxy-ip/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cf7-repeatable-fields/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── cf7-sendinblue-opt-in-checkbox/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── cf7-signature/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cf7-signature.pot
│   │   │   │   ├── cf7-sms/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cf7-sms.pot
│   │   │   │   ├── cfonlinetest/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cfonlinetest-es.po
│   │   │   │   ├── chained-product-for-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── chained-quiz/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── chained-quiz.pot
│   │   │   │   ├── chamber-dashboard-events-calendar/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── change-password-e-mail/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── change-password-e-mail.pot
│   │   │   │   ├── change-payments-account/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── change-payments-account.pot
│   │   │   │   ├── chaport/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── charitable/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── charitable.pot
│   │   │   │   ├── charts-blocks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── chat-for-aesop-story-engine/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ase-chat.pot
│   │   │   │   ├── chat-robot/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── plugin-chat-robot.pot
│   │   │   │   ├── chatra-live-chat/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── chatra-live-chat-ru_RU.po
│   │   │   │   ├── chatster/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── chatster.pot
│   │   │   │   ├── chayall/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── chayall.pot
│   │   │   │   ├── checkbox-for-taxonomies/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── checkbox-for-taxonomies.pot
│   │   │   │   ├── checkout-add-on-woo-onepage/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── woo-onepage-checkout.pot
│   │   │   │   ├── checkout-field-customizer/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── checkout-upsell-funnel-for-woo/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── checkoutwc-lite/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── checkoutx/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── checkrobin/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── child-theme-configurator/
│   │   │   │   │   └── javascript_comment/
│   │   │   │   │       └── js/
│   │   │   │   │           └── chldthmcfg.js
│   │   │   │   ├── chillpay-payment-gateway/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── chinads-dropshipping-taobao-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── choco/
│   │   │   │   │   └── javascript_var/
│   │   │   │   │       └── js/
│   │   │   │   │           └── choco.js
│   │   │   │   ├── chuffed-widget/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── churchtithewp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── church-tithe-wp.pot
│   │   │   │   ├── cielo-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cielo-woocommerce.pot
│   │   │   │   ├── cip-dtac-for-give/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── cision-modules/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── citadela-directory-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── citadela-directory-lite.pot
│   │   │   │   ├── cities-shipping-zones-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── cities-shipping-zones-for-woocommerce.pot
│   │   │   │   ├── civicrm-admin-utilities/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── civicrm-admin-utilities.pot
│   │   │   │   ├── civicrm-wp-member-sync/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── civicrm-wp-member-sync.pot
│   │   │   │   ├── civil-comments/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── civil-comments.pot
│   │   │   │   ├── classic-quiz-feedback-survey/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cqfs.pot
│   │   │   │   ├── classic-widgets-with-block-based-widgets/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── classic-and-block-widgets.pot
│   │   │   │   ├── classified/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── classified.pot
│   │   │   │   ├── classifieds-wp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── classifieds-wp.pot
│   │   │   │   ├── clean-and-simple-contact-form-by-meg-nicholas/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── clean-and-simple-contact-form-by-meg-nicholas.pot
│   │   │   │   ├── clean-my-archives/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── clean-my-wp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── clean-my-wordpress.pot
│   │   │   │   ├── clean-options/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cleanoptions-de_DE.po
│   │   │   │   ├── cleaner-gallery/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cleaner-gallery.pot
│   │   │   │   ├── clear-autoptimize-cache-automatically/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── clear-cache-for-timber/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── clear-floats-button/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── clear-opcache/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── clearfy/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── clearfy-ru_RU.po
│   │   │   │   ├── cleverreach-newsletter-dashboard-widget/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── translations/
│   │   │   │   │           └── haet_cleverreach_dashboard-de_DE.po
│   │   │   │   ├── click-pledge-paid-memberships-pro/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── click-pledge-wpjobboard/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── change_log.txt
│   │   │   │   ├── clicksco-offerstack/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── clickship/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── clickship.pot
│   │   │   │   ├── clicksports-maps/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── clicksports-maps.pot
│   │   │   │   ├── clicky/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── clicky.pot
│   │   │   │   ├── client-power-tools/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── clocks-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cloud-search/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cloud2png/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── clou2png.pot
│   │   │   │   ├── cloudflare/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── composer.json
│   │   │   │   │   └── config_file/
│   │   │   │   │       └── config.js
│   │   │   │   ├── cloudtables/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── clust-client-portal/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── clust-wp-portal.pot
│   │   │   │   ├── cm-idin/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cm-idin.pot
│   │   │   │   ├── cmb2/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cmb2.pot
│   │   │   │   ├── co2counter/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── plugin-name.pot
│   │   │   │   ├── coblocks/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── coblocks.pot
│   │   │   │   ├── cocart-get-cart-enhanced/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cocart-get-cart-enhanced.pot
│   │   │   │   ├── cocart-jwt-authentication/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cocart-jwt-authentication.pot
│   │   │   │   ├── cocoon-scenery-color/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cocoon-scenery-color-en.po
│   │   │   │   ├── cod-network/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── code-for-cj-affiliate-network/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── code-generator/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── generate-wp.pot
│   │   │   │   ├── code-injection/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── code-injection.pot
│   │   │   │   ├── code-prettify-syntax-highlighter/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cpsh-ru_RU.po
│   │   │   │   ├── code-snippet-library/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── code_snippet-en_GB.po
│   │   │   │   ├── code-snippets/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── code-snippets.pot
│   │   │   │   ├── code-snippets-cpt/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dsgnwrks-code-snippets-cpt.pot
│   │   │   │   ├── code-to-widget/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── codechime-loader/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── codechime-loader.pot
│   │   │   │   ├── codedragon-smartcache/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── codeless-hotspot-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── codepen-embed-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── codepile/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── codistoconnect/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── codja-wc-ajax-search/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cj-wc-ajax-search.pot
│   │   │   │   ├── coinpaprika/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── coinpaprika-pl_PL.po
│   │   │   │   ├── colete-online/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── coleteonline-ro_RO.po
│   │   │   │   ├── colissimo-shipping-methods-for-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── colorlab/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── woocommerce-colorlab.pot
│   │   │   │   ├── colorlib-login-customizer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── colorlib-login-customizer.po
│   │   │   │   ├── columnify/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── come-back/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── come-back.pot
│   │   │   │   ├── comet-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── comet.pot
│   │   │   │   ├── coming-soon-by-boomdevs/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── coming-soon-counter-page-maintenance-mode-lacoming-soon/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── lasoon-en_CA.po
│   │   │   │   ├── coming2live/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── coming2live.pot
│   │   │   │   ├── comment-count-admin/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── comment-count-admin-de_DE.po
│   │   │   │   ├── comment-form-message/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── comment-form-message.pot
│   │   │   │   ├── comment-mail/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── comment-privileges-by-post/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── comment-privileges-by-post.pot
│   │   │   │   ├── comment_passive_all.html
│   │   │   │   ├── commentmailer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── commentmailer.pot
│   │   │   │   ├── commentpress-core/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── commentpress-core.pot
│   │   │   │   ├── comments-avatar-lazyload/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── comments-link-optimization/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── comments-user-column/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── comments-user-column.pot
│   │   │   │   ├── comments-widget-plus/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── comments-widget-plus.pot
│   │   │   │   ├── common-wish-and-bridal-lists/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── commonsbooking/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── commonsbooking.pot
│   │   │   │   ├── community-watch/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── community-watch.pot
│   │   │   │   ├── community-yard-sale/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── community-yard-sale.pot
│   │   │   │   ├── compactrss/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── compactrss.pot
│   │   │   │   ├── compe-woo-compare-products/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── complete-open-graph/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── complianz-terms-conditions/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── complianz-terms-conditions.pot
│   │   │   │   ├── composite-products-conditional-images-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── woocommerce-composite-products-conditional-images.pot
│   │   │   │   ├── conditional-logic-for-woo-product-add-ons/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── conekta-payment-gateway/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── conformis-cookie-banner/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── conformis-en_GB.po
│   │   │   │   ├── connect-daily-web-calendar/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── captions/
│   │   │   │   │           └── connect-daily-web-calendar-fr_FR.po
│   │   │   │   ├── connect-eduma-theme-to-discord/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.TXT
│   │   │   │   ├── connect-learndash-and-discord/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── connect-learnpress-discord-add-on/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.TXT
│   │   │   │   ├── connections-business-directory-certifications/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── connections-business-directory-facilities/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── connections-business-directory-local-time/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── constant-contact-api/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── constant-contact-api.pot
│   │   │   │   ├── consumer-financing-by-chargeafter/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── contact-form-7-extras/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cf7-extras.pot
│   │   │   │   ├── contact-form-7-getresponse-extension/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── contact-form-7-getresponse-extension.pot
│   │   │   │   ├── contact-form-query/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── contact-form-query.pot
│   │   │   │   ├── contact-list/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── contact-list.pot
│   │   │   │   ├── content-parts/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── content-promoter/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── contentpromoter.pot
│   │   │   │   ├── content-switcher/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── content-switcher-fr_FR.po
│   │   │   │   ├── contentblocks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── contestfriend/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── contestfriend.pot
│   │   │   │   ├── contributor-role-for-approved-comments/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── contributor-role-for-approved-comments.pot
│   │   │   │   ├── convatic/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── convert-speech-to-text-as-post/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── convertiser-widgets/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── convertiser-widgets.pot
│   │   │   │   ├── convertplug/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── convocations/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── convocations-fr_FR.po
│   │   │   │   ├── cookbook-hook-guide/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cookbook-hook-guide.pot
│   │   │   │   ├── cookie-jar/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── cookie-law-info/
│   │   │   │   │   └── javascript_comment/
│   │   │   │   │       └── js/
│   │   │   │   │           └── cookielawinfo.js
│   │   │   │   ├── cookiebot/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── langs/
│   │   │   │   │           └── cookiebot.pot
│   │   │   │   ├── cookiegenie/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── cookiegenie-nl_NL.po
│   │   │   │   ├── cookiehub/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── cookiepro/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wpcookiepro.pot
│   │   │   │   ├── cooking-recipe-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cool-admin-theme-lite-for-wp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── catforwp.po
│   │   │   │   ├── copycraft/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── copycraft.pot
│   │   │   │   ├── copysmith-for-woocommerce/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cora-lite/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── core-rollback/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── core-rollback.pot
│   │   │   │   ├── coreactivity/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── cornell-notes/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cornerstone/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── corona-vat-germany/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cect.pot
│   │   │   │   ├── correos-oficial/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── correoswc.pot
│   │   │   │   ├── cosy-address-book/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cosy-address-book.pot
│   │   │   │   ├── counting-number-block/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── counting-number.pot
│   │   │   │   ├── courier-notices/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── course-scheduler-for-learndash/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── course-wizard-for-sensei/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── covid-19-live-tracking/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── jms-covid-19.pot
│   │   │   │   ├── cowidgets-elementor-addons/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── coyote/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── cpo-content-types/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── crazy-call-to-action-box/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── crea-listings/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── plugin-name.pot
│   │   │   │   ├── create-payment-stripe-gateway/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── uk_UA.po
│   │   │   │   ├── creative-commons-configurator-1/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── creative-commons-configurator-1.pot
│   │   │   │   ├── creative-mail-by-constant-contact/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── creeperbit-woo-accordion/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── cresta-posts-box/
│   │   │   │   │   └── style_comment/
│   │   │   │   │       └── css/
│   │   │   │   │           └── cresta-posts-box-style.css
│   │   │   │   ├── crm-hubspot-learndash-integration/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── crm-in-cloud-for-wc/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── crm-in-cloud-for-wc-it_IT.pot
│   │   │   │   ├── crm-salesforce-learndash-integration/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── cron-task-viewer-redux/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cron-task-viewer-redux.pot
│   │   │   │   ├── croquet-metaverse-web-showcase/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── croquet-metaverse-web-showcase.pot
│   │   │   │   ├── cross-domain-tracker-for-affiliatewp/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── crosswinds-blocks/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── crosswordsearch/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── crosswordsearch.pot
│   │   │   │   ├── crowdcue/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── crowdsignal-forms/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── crowdsignal-forms.pot
│   │   │   │   ├── crucial-real-estate/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── cryptex/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── Cryptex.pot
│   │   │   │   ├── crypto-payments-woo/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── Crypto-Payments-Woo.pot
│   │   │   │   ├── crypto-qr-code-wp/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── cryptocurrency-price-widget/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── crcpw-cryptocurrency-price-widget.pot
│   │   │   │   ├── cryptopanel-payment-gateway-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cryptopanel-payment-gateway-de_DE.po
│   │   │   │   ├── cryptum-nft/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cryptum-nft-domain.pot
│   │   │   │   ├── css3-buttons/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── default.pot
│   │   │   │   ├── csv-exporter-for-terms/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── et-csv.pot
│   │   │   │   ├── csv-to-db/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── src/
│   │   │   │   │           └── lang/
│   │   │   │   │               └── csv2db.pot
│   │   │   │   ├── cta-bar/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── ctc-countdown-timer-cookies/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ctc-countdown-timer-cookies.pot
│   │   │   │   ├── ctcl-floating-cart/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cubecolour-caboodle/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cubecolour-caboodle.pot
│   │   │   │   ├── cubicfusion-admin-enhancer/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── culqi-full-integration/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── cultivate-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cultivate-for-woocommerce.pot
│   │   │   │   ├── curatewp-nested-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cwpnp.pot
│   │   │   │   ├── curatewp-related-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cwprp-en_US.po
│   │   │   │   ├── currencyr/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── default.po
│   │   │   │   ├── custom-admin-login/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── custom-advert-blocks-free/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── custom-blocks-free-ru_RU.po
│   │   │   │   ├── custom-authentication/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custauth.pot
│   │   │   │   ├── custom-bulkquick-edit/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-bulkquick-edit.pot
│   │   │   │   ├── custom-classes/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── custom-classes.pot
│   │   │   │   ├── custom-codes/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-codes.pot
│   │   │   │   ├── custom-content-portfolio/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── custom-content-types-by-pixelpillow/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── pixelpillow-custom-content-types-nl_NL.po
│   │   │   │   ├── custom-css-by-dev7studios/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── custom-css-js/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-css-js.pot
│   │   │   │   ├── custom-database-tables/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── langs/
│   │   │   │   │           └── custom-database-tables-ja.po
│   │   │   │   ├── custom-dokan-fields/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── custom-fields-account-registration-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-fields-account-for-woocommerce-registration.pot
│   │   │   │   ├── custom-header-extended/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── custom-help/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── custom-importer-exporter/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-importer-exporter.pot
│   │   │   │   ├── custom-javascript-editor/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-javascript-editor.pot
│   │   │   │   ├── custom-page-extensions/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── custom-page-extensions.pot
│   │   │   │   ├── custom-post-type-cleanup/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-post-type-cleanup.pot
│   │   │   │   ├── custom-post-type-maker/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── custom-post-type-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── cptm-ja.po
│   │   │   │   ├── custom-post-type-order/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cpto-fr_FR.po
│   │   │   │   ├── custom-post-type-parents/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-post-type-parents.pot
│   │   │   │   ├── custom-post-type-widget-blocks/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-post-type-widget-blocks.pot
│   │   │   │   ├── custom-posts-list-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── custom-registration-link/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── custom-registration-link-fr_FR.po
│   │   │   │   ├── custom-sidebars/
│   │   │   │   │   └── javascript_comment/
│   │   │   │   │       └── assets/
│   │   │   │   │           └── js/
│   │   │   │   │               └── cs-visibility.js
│   │   │   │   ├── custom-smilies-directory/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── jpm_csd.pot
│   │   │   │   ├── custom-template-learndash/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-template-learndash.pot
│   │   │   │   ├── custom-template-lifterlms/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-template-lifterlms.pot
│   │   │   │   ├── custom-testimonial/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── vendor/
│   │   │   │   │           └── testimonialmetaoption/
│   │   │   │   │               └── languages/
│   │   │   │   │                   └── zh_CN.po
│   │   │   │   ├── custom-toolbox/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── custom-toolbox-fr_FR.po
│   │   │   │   ├── custom-typekit-fonts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-typekit-fonts.pot
│   │   │   │   ├── custom-wishlist/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── cwl-es_ES.po
│   │   │   │   ├── customer-area/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── composer.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cuar.pot
│   │   │   │   ├── customify-sites/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── customify-sites.pot
│   │   │   │   ├── customize-my-account-for-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── customize-woo/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── customize-woo.pot
│   │   │   │   ├── customizely/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── customizely.pot
│   │   │   │   ├── customizer-search/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── customizer-search.pot
│   │   │   │   ├── customizr-addons/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── en_US.po
│   │   │   │   ├── cvi-widgets/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cvi.pot
│   │   │   │   ├── cycle-blocks/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cycle-blocks-ja.po
│   │   │   │   ├── daggerhart-openid-connect-generic/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── daily-maxim-365/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── daily-maxim-365.pot
│   │   │   │   ├── daily-snapshot-for-woocommerce-admin/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── mwb-dailyss-en_US.po
│   │   │   │   ├── danixland-countdown/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── danixland-countdown.pot
│   │   │   │   ├── dark-login-screen/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── langs/
│   │   │   │   │           └── dark_login_screen-en_AU.po
│   │   │   │   ├── dark-mode-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dark_mode_lite.pot
│   │   │   │   ├── dark-mode-toggle/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dark-mode-toggle.pot
│   │   │   │   ├── darwin-backup/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── dash-notifier/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dash-notifier.pot
│   │   │   │   ├── dashboard-columns/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── dashboard-linker/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dashboard-linker.pot
│   │   │   │   ├── dashboard-notes/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dashboard-notes.pot
│   │   │   │   ├── dashboard-welcome-for-beaver-builder/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dashly/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dashly-ru_RU.po
│   │   │   │   ├── dashview/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── dashview-de_DE.po
│   │   │   │   ├── database-analyzer/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── date-and-time-widget/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── date-time.pot
│   │   │   │   ├── davons-floating-admin-bar/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── davon-floating-admin-bar-de_DE.po
│   │   │   │   ├── db-access-adminer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── db-access-adminer.pot
│   │   │   │   ├── db-share-count/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── db-signatures/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── deau-api/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── deau-api-en_US.po
│   │   │   │   ├── debrandify/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dbrdify.pot
│   │   │   │   ├── debug-bar-rewrite-rules/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── decent-comments/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── deep-free-plus/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── deepcore/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── deep.pot
│   │   │   │   ├── default-attributes-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── default-attributes-for-woocommerce-he_IL.po
│   │   │   │   ├── defender-security/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wpdef-default.pot
│   │   │   │   ├── delete-expired-transients/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── delete-revision/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── delete-unscaled-images/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── delete-unscaled-images.pot
│   │   │   │   ├── delicious-recipes/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── delicious-recipes.pot
│   │   │   │   ├── delivengo/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wc_delivengo.pot
│   │   │   │   ├── delivery-area-with-google-maps/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── delivery-date-system-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── delivery-date-system.pot
│   │   │   │   ├── delucks-seo/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── language/
│   │   │   │   │           └── delucks-seo-de_DE_formal.po
│   │   │   │   ├── demo-bar/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── demo-bar.pot
│   │   │   │   ├── demo-importer-plus/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── demo-importer-plus.pot
│   │   │   │   ├── demoify-blocks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── demomentsomtres-wc-minimum-purchase-message/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── DeMomentSomTres-WC-minPurchaseMessage-ca.po
│   │   │   │   ├── demomentsomtres-woocommerce-minimum-purchase-message/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── DeMomentSomTres-WC-minPurchaseMessage-ca.po
│   │   │   │   ├── denade-translate/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── depay-payments-for-woocommerce/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── depay-woocommerce-payments.pot
│   │   │   │   ├── deposits-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── deposits-for-woocommerce.pot
│   │   │   │   ├── deposits-partial-payments-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── deposits-partial-payments-for-woocommerce.pot
│   │   │   │   ├── depublish-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── wp-depublish-posts.pot
│   │   │   │   ├── derweili-fb-chat/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── description-list-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── design-sidebar-using-page-builder/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── sidebar-using-page-builder.pot
│   │   │   │   ├── deskaddons-for-beaver-builder-lite/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dessky-responsive-slider/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dessky-security/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dev-debug-tools/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dev-studio/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── developer-tool/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dev-tool.pot
│   │   │   │   ├── device-detect/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── device-detect-fr_FR.po
│   │   │   │   ├── device-detector/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── dexonline-searchbox/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dexonline-searchbox-de_DE.po
│   │   │   │   ├── dezo-tools/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dezo-tools.pot
│   │   │   │   ├── df-pagination/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── I18n/
│   │   │   │   │           └── df-pagination.pot
│   │   │   │   ├── dgxpco/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── dh-dashboard-quick-content-access/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dh-widget-dashqa-de_DE.po
│   │   │   │   ├── dh-new-mark/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dh-new-mark-ja.po
│   │   │   │   ├── dialogue-layout/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── language/
│   │   │   │   │           └── dialogue-layout.pot
│   │   │   │   ├── dibs-for-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dicentis-podcast/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── digest/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── digest.pot
│   │   │   │   ├── digital-certainty/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── plugin-name.pot
│   │   │   │   ├── digitalpush/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── insert-headers-and-footers.pot
│   │   │   │   ├── diller-loyalty/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── diller-loyalty.pot
│   │   │   │   ├── dirt-directory-client/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dirt-directory-client.pot
│   │   │   │   ├── disable-automatic-theme-plugin-updates/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── disable-plugin-theme-auto-updates.pot
│   │   │   │   ├── disable-blog/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── disable-directory-listings/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── disable-directory-listings.pot
│   │   │   │   ├── disable-emails/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── disable-embeds/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── disable-feeds/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── disable-feeds.pot
│   │   │   │   ├── disable-flamingo-addressbook/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── disable-right-click-powered-by-pixterme/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── pixterme.pot
│   │   │   │   ├── disable-search/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── disable-search-slug/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── disable-title/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── disable_title-de_DE.po
│   │   │   │   ├── disclaimer-popup/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── assets/
│   │   │   │   │           └── mb-settings-page/
│   │   │   │   │               └── languages/
│   │   │   │   │                   └── default.pot
│   │   │   │   ├── discontinued-product-stock-status-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── discontinued-products-stock-status.pot
│   │   │   │   ├── dispensary-coupons/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── display-a-meta-field-as-block/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── mfb.pot
│   │   │   │   ├── display-featured-image-genesis/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── display-featured-image-genesis.pot
│   │   │   │   ├── display-git-status/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── display-git-status.pot
│   │   │   │   ├── display-post-reading-time/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── Changelog.txt
│   │   │   │   ├── display-post-types/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── display-post-types.pot
│   │   │   │   ├── display-posts-shortcode/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── display-taxes-on-product-page-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── mlfactory_tax_plugin-de_DE.po
│   │   │   │   ├── display-terms-shortcode/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── display-terms-shortcode.pot
│   │   │   │   ├── distributor-remote-quickedit/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── dlocal-go-payments-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── directo-pago-payments-for-woocommerce-es_PE.po
│   │   │   │   ├── dn-footer-contacts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dn-footer-contacts-it_IT.po
│   │   │   │   ├── dn-shopping-discounts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dn_discounts-it_IT.po
│   │   │   │   ├── do-not-send-emails-if/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── do-not-send-emails-if.pot
│   │   │   │   ├── dobsondev-shortcodes/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dobsondev-weather/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── doc8/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── docu-en_US.pot
│   │   │   │   ├── docket-cache/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── docket-cache.pot
│   │   │   │   ├── docollipics-faustball-de/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── docs2site/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── docs2site.pot
│   │   │   │   ├── document-embedder-addons-for-elementor/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── b-addon.pot
│   │   │   │   ├── document-engine/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── document-engine.pot
│   │   │   │   ├── document-gallery/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── document-generator-for-openapi/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── document-library-lite/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── document-library-lite.pot
│   │   │   │   ├── documentation/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dodebug/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── dodebug.pot
│   │   │   │   ├── dokan-invoice/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dokan-invoice.pot
│   │   │   │   ├── dokan-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dokan-lite.pot
│   │   │   │   ├── dokan-migrator/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dokan-migrator.pot
│   │   │   │   ├── dokan-plus/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dokan-vendor-dashboard/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dokan-vendor-dashboard.pot
│   │   │   │   ├── dolibarr-rest-api/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── domyaccounting/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── rtwdma-domyaccounting.pot
│   │   │   │   ├── doppelme-avatars/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── double-image/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── double-image.pot
│   │   │   │   ├── download-after-email/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dae.pot
│   │   │   │   ├── download-list-block-with-icons/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── download-media-file/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── download-media-file.pot
│   │   │   │   ├── download-monitor/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── download-monitor.pot
│   │   │   │   ├── download-monitor-learndash-integration/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── download-monitor-paid-membership-pro-integration/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── download-monitor-restrict-content-integration/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── download-plugins-dashboard/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── langs/
│   │   │   │   │           └── download-plugins-dashboard.pot
│   │   │   │   ├── downloadio/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── downloadio.pot
│   │   │   │   ├── dozent/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dozent.pot
│   │   │   │   ├── dozent-lms/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dozent-lms.pot
│   │   │   │   ├── dozent-lms-certificate/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dozent-lms-certificate.pot
│   │   │   │   ├── dplayer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dplayer.pot
│   │   │   │   ├── dps-pxpay-for-wp-ecommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── dr-widgets-blocks/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dr-widgets-blocks.pot
│   │   │   │   ├── dracula-dark-mode/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dracula-dark-mode.pot
│   │   │   │   ├── drag-drop-featured-image-improved/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dragandropimproved.pot
│   │   │   │   ├── dragon-video/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── drastic-table-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── drastic-table-manager.pot
│   │   │   │   ├── driveworks-block-form-embed/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── dropdown-content/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dropdowncontent.pot
│   │   │   │   ├── dropp-pay-per-use/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dropp-pay-tipping/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dropship-sell-your-art/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── dropshipping-with-ebay-for-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dropshipping-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dropshipping-woocommerce.pot
│   │   │   │   ├── dropshipping-xml-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── dropshipping-xml-for-woocommerce.pot
│   │   │   │   ├── ds-suit/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── en_US.po
│   │   │   │   ├── dse-divi-section-enhancer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dse-divi-section-enhancer.pot
│   │   │   │   ├── dummy-images/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── duogeek-blocks/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dggb-blocks.pot
│   │   │   │   ├── duplicate-pages-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── duplicate-pages-posts.pot
│   │   │   │   ├── duplicate-term/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── duplicate-term.pot
│   │   │   │   ├── dvk-social-sharing/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── dxtag-auto-listings/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── guaven_dxtag.pot
│   │   │   │   ├── dynamic-asset-versioning/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dynamic-asset-versioning.pot
│   │   │   │   ├── dynamic-block-content/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dynamic-content-for-elementor/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── dynamic-coupons-with-zendesk-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── zndskcoupon-en_US.po
│   │   │   │   ├── dynamic-seo-child-pages/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── dynamic-seo-child-pages.pot
│   │   │   │   ├── dynamic-text-field-for-contact-form-7/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dynamic-text-field-for-contact-form-7.pot
│   │   │   │   ├── dynamically-display-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── uk_UA.po
│   │   │   │   ├── e-commerce-by-salescart/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── e-commerce-mailcheck/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── e-commerce-payment-gateway-kevin/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── e-connector-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── e-connector-for-woocommerce.pot
│   │   │   │   ├── e-nkap-woocommerce-gateway/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── easing-slider/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easingslider.pot
│   │   │   │   ├── easy-ad-picker/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easyadpicker-nl_NL.po
│   │   │   │   ├── easy-attendance/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-attendance-en_US.po
│   │   │   │   ├── easy-blog-ideas/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── __pig_.pot
│   │   │   │   ├── easy-code-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── locals/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── css-javascript-toolbox.pot
│   │   │   │   ├── easy-contact-form-pro/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelogs.txt
│   │   │   │   ├── easy-content-protector/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── easy-content-protector.pot
│   │   │   │   ├── easy-custom-error-pages/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── easy-custom-js-and-css/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── easy-custom-oceanwp-shop/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-custom-oceanwp-shop-fr_FR.po
│   │   │   │   ├── easy-customizer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-customizer.pot
│   │   │   │   ├── easy-customizer-for-woocommerce-pdf-invoices/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── easy-digital-downloads/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-digital-downloads.pot
│   │   │   │   ├── easy-digital-downloads-free-link/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── easy-digital-downloads-payment-gateway-by-novalnet/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── edd-novalnet.pot
│   │   │   │   ├── easy-excerpt/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-excerpt.po
│   │   │   │   ├── easy-featured-images/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── easy-featured-images-hu_HU.po
│   │   │   │   ├── easy-feedback/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── easy-flipbook-i-widget/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-flipbook.pot
│   │   │   │   ├── easy-folders/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-folders.pot
│   │   │   │   ├── easy-google-fonts/
│   │   │   │   │   └── javascript_comment/
│   │   │   │   │       └── assets/
│   │   │   │   │           └── js/
│   │   │   │   │               └── admin.js
│   │   │   │   ├── easy-image-optimizer/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── easy-plugin-demo/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-plugin-demo.pot
│   │   │   │   ├── easy-plugin-stats/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-plugin-stats.pot
│   │   │   │   ├── easy-post-types-fields/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-post-types-fields.pot
│   │   │   │   ├── easy-pricing-table-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── easy-pricing-table-manager.po
│   │   │   │   ├── easy-primary-category/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-primary-category.pot
│   │   │   │   ├── easy-product-bundles-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── asnp-easy-product-bundles.pot
│   │   │   │   ├── easy-property-listings/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-property-listings.pot
│   │   │   │   ├── easy-recent-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── langs/
│   │   │   │   │           └── easy-recent-posts-de_DE.po
│   │   │   │   ├── easy-retweet/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-retweet.pot
│   │   │   │   ├── easy-scheduled-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── langs/
│   │   │   │   │           └── easy-recent-posts-de_DE.po
│   │   │   │   ├── easy-similar-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── langs/
│   │   │   │   │           └── easy-similar-posts-de_DE.po
│   │   │   │   ├── easy-social-sharing/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-social-sharing.pot
│   │   │   │   ├── easy-static-maps/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── easy-static-maps-it_IT.po
│   │   │   │   ├── easy-support-videos/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-support-videos.pot
│   │   │   │   ├── easy-swipebox/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-swipebox.pot
│   │   │   │   ├── easy-taxonomy-support/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── ez-taxonomy-support.pot
│   │   │   │   ├── easy-testimonial-rotator/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-testimonial-rotator.pot
│   │   │   │   ├── easy-theme-plugin-switcher/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-wp-tp-switcher.pot
│   │   │   │   ├── easy-timer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-timer-fr_FR.po
│   │   │   │   ├── easy-user-registration/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-user-registration.pot
│   │   │   │   ├── easy-woocommerce-discounts/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-woocommerce-discounts.pot
│   │   │   │   ├── easymega/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── eazy-ad-unblocker/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── eazy-ad-unblocker-de_DE.po
│   │   │   │   ├── eazy-image-slider-block/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── eazyimagesliderblock-de_DE.po
│   │   │   │   ├── eazyable/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── eazyable.pot
│   │   │   │   ├── eazyfilter-for-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── ebanqo-widget/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ebanqo-widget.pot
│   │   │   │   ├── ec-links/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── echo-show-ids/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── eclear-spot/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── ecomail-elementor-form-integration/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── edd-advanced-discounts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── edd-advanced-discounts.pot
│   │   │   │   ├── edd-blocks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── edd-bulk-sale-price/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── edd-card/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── edd-card.pot
│   │   │   │   ├── edd-download-info/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── edd-download-info.pot
│   │   │   │   ├── edd-first-time-buyers-gift/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── edd-mark-as-add-on/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── edd-mark-as-addon.pot
│   │   │   │   ├── edd-multilingual/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── edd-payu-latam-gateway/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wpas-edd-payu-latam-en_US.po
│   │   │   │   ├── edd-purchase-details/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── edd-purchase-details.pot
│   │   │   │   ├── edd-variable-defaults-update/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── edit-author-slug/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── edit-author-slug.pot
│   │   │   │   ├── edit-parent-comment-id/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── edit-parent-comment-id-ru_RU.po
│   │   │   │   ├── edit-recent-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── edit-recent-posts.pot
│   │   │   │   ├── editor-bridge/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── editor-bridge-ja.po
│   │   │   │   ├── editor-custom-color-palette/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── editor-custom-color-palette-fr_FR.po
│   │   │   │   ├── editor-for-timber/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── editorial-access-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── editorial-access-manager.pot
│   │   │   │   ├── editors-note/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── educare/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── efavourite-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── efavourite-posts.pot
│   │   │   │   ├── eidlogin/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── eidlogin-de_DE.po
│   │   │   │   ├── eight-day-week-print-workflow/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── eight-day-week.pot
│   │   │   │   ├── eighties-bbpress/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── eighties-bbpress-en_US.pot
│   │   │   │   ├── ekiline-block-collection/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ekiline-collection-es_MX.po
│   │   │   │   ├── eladdon/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── elementaddon.pot
│   │   │   │   ├── elasticpress/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── elasticpress.pot
│   │   │   │   ├── electrifying-engineering-portfolio/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── electrifying-engineering-portfolio.pot
│   │   │   │   ├── elegant-responsive-content-slider/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ercs.pot
│   │   │   │   ├── elemendas-addons/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── elemendas-addons.pot
│   │   │   │   ├── element-capability-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── english.po
│   │   │   │   ├── elemental-theme-builder/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── elemental-theme-builder.pot
│   │   │   │   ├── elementify-visual-widgets/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── elementify-visual-widgets.pot
│   │   │   │   ├── elementor/
│   │   │   │   │   └── javascript_comment/
│   │   │   │   │       └── assets/
│   │   │   │   │           └── js/
│   │   │   │   │               └── admin-feedback.js
│   │   │   │   ├── elementor-addon-widgets/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── elementor-pro/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── elementor-templater/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── elementpress/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── elform/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── elform.pot
│   │   │   │   ├── elfsight-addons-for-elementor/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── elfsight-blocks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── elgg-bridge/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── elmo-privacylab/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── elmo.pot
│   │   │   │   ├── email-address-encoder/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── email-address-encoder.pot
│   │   │   │   ├── email-download-link/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── email-fields-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── email-fields-for-woocommerce.pot
│   │   │   │   ├── email-log/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── email-log.pot
│   │   │   │   ├── email-notice-wp-document-revisions/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wpdr-email-notice.pot
│   │   │   │   ├── email-posts-to-subscribers/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── email-subscribe/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── email-subscribe.pot
│   │   │   │   ├── email-subscribers/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └─

================================================
FILE CONTENTS
================================================

================================================
FILE: .codeclimate.yml
================================================
version: "2"
# https://docs.codeclimate.com/docs/default-analysis-configuration#sample-codeclimateyml
checks:
  method-complexity:
    enabled: true
    config:
      threshold: 15


================================================
FILE: .dockerignore
================================================
git/
bundle/
.idea/
.yardoc/
cache/
coverage/
spec/
.*
**/*.md
*.md
!README.md
Dockerfile
**/*.orig
*.orig
bin/wpscan-*
.wpscan/
.github/


================================================
FILE: .github/CONTRIBUTING.md
================================================
# Contributing to WPScan

## Licensing

By submitting code contributions to the WPScan development team via Github Pull Requests, or any other method, it is understood that the contributor is offering the WPScan company (company number 	83421476900012), which is registered in France, the unlimited, non-exclusive right to reuse, modify, and relicense the code.

================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

Before submitting an issue, please make sure you fully read any potential error messages output and did some research on your own.

### Subject of the issue
Describe your issue here.

### Your environment
* Version of WPScan:
* Version of Ruby:
* Operating System (OS):

### Steps to reproduce
Tell us how to reproduce this issue.

### Expected behavior
Tell us what should happen.

### Actual behavior
Tell us what happens instead.

### What have you already tried
Tell us what you have already tried to do to fix the issue you are having.

Things you have tried (where relevant):

* Update WPScan to the latest version [ ]
* Update Ruby to the latest version [ ]
* Ensure you can reach the target site using cURL [ ]
* Proxied WPScan through a HTTP proxy to view the raw traffic [ ]
* Ensure you are using a supported Operating System (Linux and macOS) [ ]


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.


================================================
FILE: .github/ISSUE_TEMPLATE/other-issue.md
================================================
---
name: Other Issue
about: Create a report which is not a related to a Bug or Feature
title: ''
labels: ''
assignees: ''

---

Before submitting an issue, please make sure you fully read any potential error messages output and did some research on your own.


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
## Licensing

By submitting code contributions to the WPScan development team via Github Pull Requests, or any other method, it is understood that the contributor is offering the WPScan company (company number 	83421476900012), which is registered in France, the unlimited, non-exclusive right to reuse, modify, and relicense the code.

================================================
FILE: .github/dependabot.yml
================================================
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
  - package-ecosystem: "bundler"
    directory: "/"
    schedule:
      interval: "weekly"

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      # Check for updates to GitHub Actions every weekday
      interval: "daily"


================================================
FILE: .github/workflows/build.yml
================================================
name: Build

on: [push, pull_request]

jobs:
  build:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        ruby: ['3.0', 3.1, 3.2, 3.3, 3.4]

    steps:
    - name: Checkout code
      uses: actions/checkout@v5

    - name: Set up Ruby ${{ matrix.ruby }}
      uses: ruby/setup-ruby@v1
      with:
        ruby-version: ${{ matrix.ruby }}

    - name: Install GEMs
      run: |
        gem install bundler
        bundle config force_ruby_platform true
        bundle config path vendor/bundle
        bundle install --jobs 4 --retry 3

    - name: rubocop
      run: |
        bundle exec rubocop

    # Runs Specs which are not tagged as slow first to speed up the process in case of failure in those
    # Then will run the full specs suite (and generate the final coverage report)
    - name: rspec
      run: |
        bundle exec rspec --tag ~slow
        bundle exec rspec

    - name: Coveralls
      uses: coverallsapp/github-action@master
      continue-on-error: true
      with:
        github-token: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/docker.yml
================================================
name: Build Docker Images

on:
  push:
    branches:
      - master
  release:
    types: [published]
  schedule:
    - cron: "0 7 * * *"

jobs:
  images:
    runs-on: ubuntu-latest

    steps:
      - name: checkout sources
        uses: actions/checkout@v5

      - name: Set tag to latest
        if: (github.event_name == 'push' && github.ref == 'refs/heads/master') || github.event_name == 'schedule'
        run: |
          echo "DOCKER_TAG=latest" >> $GITHUB_ENV

      - name: Set tag to release name
        if: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/')
        run: |
          echo "DOCKER_TAG=${{ github.event.release.tag_name }}" >> $GITHUB_ENV

      - name: Check if DOCKER_TAG is set
        if: env.DOCKER_TAG == ''
        run: |
          echo DOCKER_TAG is not set!
          exit 1

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3
        id: buildx
        with:
          install: true

      - name: Login to Docker Hub
        uses: docker/login-action@v3.5.0
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Build and push
        uses: docker/build-push-action@v6
        with:
          platforms: linux/amd64,linux/arm/v7,linux/arm64
          push: true
          tags: wpscanteam/wpscan:${{ env.DOCKER_TAG }}


================================================
FILE: .github/workflows/gempush.yml
================================================
name: Ruby Gem

on:
  release:
    types: [published]

jobs:
  build:
    name: Build + Publish
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@master
    - name: Set up Ruby 3.0
      uses: ruby/setup-ruby@v1
      with:
        ruby-version: '3.0'

    #- name: Publish to GPR
    #  run: |
    #    mkdir -p $HOME/.gem
    #    touch $HOME/.gem/credentials
    #    chmod 0600 $HOME/.gem/credentials
    #    printf -- "---\n:github: Bearer ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
    #    gem build *.gemspec
    #    gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem
    #  env:
    #    GEM_HOST_API_KEY: ${{secrets.GITHUB_TOKEN}}
    #    OWNER: wpscanteam

    - name: Publish to RubyGems
      run: |
        mkdir -p $HOME/.gem
        touch $HOME/.gem/credentials
        chmod 0600 $HOME/.gem/credentials
        printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
        gem build *.gemspec
        gem push *.gem
      env:
        GEM_HOST_API_KEY: ${{secrets.RUBYGEMS_AUTH_TOKEN}}


================================================
FILE: .gitignore
================================================
*.gem
*.rbc
.bundle
.config
coverage
pkg
rdoc
Gemfile.lock

# YARD artifacts
.yardoc
_yardoc
doc/
.wpscan/

.ash_history
.DS_Store
.DS_Store?
.idea/

# Old files from v2
cache/
data/

# Profiling reports
bin/memprof*.report


================================================
FILE: .rspec
================================================
--require spec_helper
--color

================================================
FILE: .rubocop.yml
================================================
require: rubocop-performance
AllCops:
  NewCops: enable
  SuggestExtensions: false
  TargetRubyVersion: 2.7
  Exclude:
  - '*.gemspec'
  - 'vendor/**/*'
Layout/LineLength:
  Max: 120
Lint/ConstantDefinitionInBlock:
  Enabled: false
Lint/MissingSuper:
  Enabled: false
Lint/UriEscapeUnescape:
  Enabled: false
Metrics/AbcSize:
  Max: 27
Metrics/BlockLength:
  Exclude:
  - 'spec/**/*'
Metrics/ClassLength:
  Max: 150
  Exclude:
  - 'app/controllers/enumeration/cli_options.rb'
Metrics/CyclomaticComplexity:
  Max: 10
Metrics/MethodLength:
  Max: 20
  Exclude:
  - 'app/controllers/enumeration/cli_options.rb'
Metrics/PerceivedComplexity:
  Max: 11
Style/ClassVars:
  Enabled: false
Style/Documentation:
  Enabled: false
Style/FormatStringToken:
  Enabled: false
Style/NumericPredicate:
  Exclude:
  - 'app/controllers/vuln_api.rb'


================================================
FILE: .ruby-gemset
================================================
wpscanv3


================================================
FILE: .ruby-version
================================================
3.0.2


================================================
FILE: .simplecov
================================================
# frozen_string_literal: true

if ENV['GITHUB_ACTION']
  require 'simplecov-lcov'

  SimpleCov::Formatter::LcovFormatter.config do |c|
    c.single_report_path = 'coverage/lcov.info'
    c.report_with_single_file = true
  end

  SimpleCov.formatter = SimpleCov::Formatter::LcovFormatter
end

SimpleCov.start do
  enable_coverage :branch # Only supported for Ruby >= 2.5

  add_filter '/spec/'
  add_filter 'helper'
end


================================================
FILE: Dockerfile
================================================
FROM ruby:3.4.2-alpine AS builder
LABEL maintainer="WPScan Team <contact@wpscan.com>"

RUN echo "install: --no-document --no-post-install-message\nupdate: --no-document --no-post-install-message" > /etc/gemrc

COPY . /wpscan

RUN apk add --no-cache git libcurl ruby-dev libffi-dev make gcc musl-dev zlib-dev procps sqlite-dev && \
  bundle config force_ruby_platform true && \
  bundle config disable_version_check 'true' && \
  bundle config without "test development" && \
  bundle config path.system 'true' && \
  bundle install --gemfile=/wpscan/Gemfile --jobs=8

WORKDIR /wpscan
RUN rake install --trace

# needed so non superusers can read gems
RUN chmod -R a+r /usr/local/bundle


FROM ruby:3.4.2-alpine
LABEL maintainer="WPScan Team <contact@wpscan.com>"
LABEL org.opencontainers.image.source https://github.com/wpscanteam/wpscan

RUN adduser -h /wpscan -g WPScan -D wpscan

COPY --from=builder /usr/local/bundle /usr/local/bundle

RUN chown -R wpscan:wpscan /wpscan

# runtime dependencies
RUN apk add --no-cache libcurl procps sqlite-libs

WORKDIR /wpscan

USER wpscan

RUN /usr/local/bundle/bin/wpscan --update --verbose

ENTRYPOINT ["/usr/local/bundle/bin/wpscan"]


================================================
FILE: Gemfile
================================================
# frozen_string_literal: true

source 'https://rubygems.org'
gemspec

# gem 'cms_scanner', branch: 'xxx', git: 'https://github.com/wpscanteam/CMSScanner.git'


================================================
FILE: LICENSE
================================================
WPScan Public Source License

The WPScan software (henceforth referred to simply as "WPScan") is dual-licensed - Copyright 2011-2019 WPScan Team.

Cases that include commercialization of WPScan require a commercial, non-free license. Otherwise, WPScan can be used without charge under the terms set out below.

1. Definitions

1.1 "License" means this document.
1.2 "Contributor" means each individual or legal entity that creates, contributes to the creation of, or owns WPScan.
1.3 "WPScan Team" means WPScan’s core developers.

2. Commercialization

A commercial use is one intended for commercial advantage or monetary compensation.

Example cases of commercialization are:

 - Using WPScan to provide commercial managed/Software-as-a-Service services.
 - Distributing WPScan as a commercial product or as part of one.
 - Using WPScan as a value added service/product.

Example cases which do not require a commercial license, and thus fall under the terms set out below, include (but are not limited to):

 - Penetration testers (or penetration testing organizations) using WPScan as part of their assessment toolkit.
 - Penetration Testing Linux Distributions including but not limited to Kali Linux, SamuraiWTF, BackBox Linux.
 - Using WPScan to test your own systems.
 - Any non-commercial use of WPScan.

If you need to purchase a commercial license or are unsure whether you need to purchase a commercial license contact us - contact@wpscan.com.

Free-use Terms and Conditions;

3. Redistribution

Redistribution is permitted under the following conditions:

 - Unmodified License is provided with WPScan.
 - Unmodified Copyright notices are provided with WPScan.
 - Does not conflict with the commercialization clause.

4. Copying

Copying is permitted so long as it does not conflict with the Redistribution clause.

5. Modification

Modification is permitted so long as it does not conflict with the Redistribution clause.

6. Contributions

Any Contributions assume the Contributor grants the WPScan Team the unlimited, non-exclusive right to reuse, modify and relicense the Contributor's content.

7. Support

WPScan is provided under an AS-IS basis and without any support, updates or maintenance. Support, updates and maintenance may be given according to the sole discretion of the WPScan Team.

8. Disclaimer of Warranty

WPScan is provided under this License on an "as is" basis, without warranty of any kind, either expressed, implied, or statutory, including, without limitation, warranties that the WPScan is free of defects, merchantable, fit for a particular purpose or non-infringing.

9. Limitation of Liability

To the extent permitted under Law, WPScan is provided under an AS-IS basis. The WPScan Team shall never, and without any limit, be liable for any damage, cost, expense or any other payment incurred as a result of WPScan's actions, failure, bugs and/or any other interaction between WPScan and end-equipment, computers, other software or any 3rd party, end-equipment, computer or services.

10. Disclaimer

Running WPScan against websites without prior mutual consent may be illegal in your country. The WPScan Team accept no liability and are not responsible for any misuse or damage caused by WPScan.

11. Trademark

The "wpscan" term is a registered trademark. This License does not grant the use of the "wpscan" trademark or the use of the WPScan logo.


================================================
FILE: README.md
================================================
<p align="center">
  <a href="https://wpscan.com/">
    <img src="https://raw.githubusercontent.com/wpscanteam/wpscan/gh-pages/images/wpscan_logo.png" alt="WPScan logo">
  </a>
</p>

<h3 align="center">WPScan</h3>

<p align="center">
  WordPress Security Scanner
  <br>
  <br>
  <a href="https://wpscan.com/" title="homepage" target="_blank">WPScan WordPress Vulnerability Database</a> - <a href="https://wordpress.org/plugins/wpscan/" title="wordpress security plugin" target="_blank">WordPress Security Plugin</a>
</p>

<p align="center">
  <a href="https://badge.fury.io/rb/wpscan" target="_blank"><img src="https://badge.fury.io/rb/wpscan.svg"></a>
  <a href="https://hub.docker.com/r/wpscanteam/wpscan/" target="_blank"><img src="https://img.shields.io/docker/pulls/wpscanteam/wpscan.svg"></a>
  <a href="https://github.com/wpscanteam/wpscan/actions?query=workflow%3ABuild" target="_blank"><img src="https://github.com/wpscanteam/wpscan/workflows/Build/badge.svg"></a>
  <a href="https://codeclimate.com/github/wpscanteam/wpscan" target="_blank"><img src="https://codeclimate.com/github/wpscanteam/wpscan/badges/gpa.svg"></a>
</p>

# INSTALL

## Prerequisites

- (Optional but highly recommended: [RVM](https://rvm.io/rvm/install))
- Ruby >= 3.0 - Recommended: latest
- Curl >= 7.72  - Recommended: latest
  - The 7.29 has a segfault
  - The < 7.72 could result in `Stream error in the HTTP/2 framing layer` in some cases
- RubyGems      - Recommended: latest
- Nokogiri might require packages to be installed via your package manager depending on your OS, see https://nokogiri.org/tutorials/installing_nokogiri.html

### In a Pentesting distribution

When using a pentesting distribution (such as Kali Linux), it is recommended to install/update wpscan via the package manager if available.

### In macOSX via Homebrew

```shell
brew install wpscanteam/tap/wpscan
```

### From RubyGems

```shell
gem install wpscan
```

On MacOSX, if a ```Gem::FilePermissionError``` is raised due to the Apple's System Integrity Protection (SIP), either install RVM and install wpscan again, or run ```sudo gem install -n /usr/local/bin wpscan``` (see [#1286](https://github.com/wpscanteam/wpscan/issues/1286))

# Updating

You can update the local database by using ```wpscan --update```

Updating WPScan itself is either done via ```gem update wpscan``` or the packages manager (this is quite important for distributions such as in Kali Linux: ```apt-get update && apt-get upgrade```) depending on how WPScan was (pre)installed

# Docker

Pull the repo with ```docker pull wpscanteam/wpscan```

Enumerating usernames

```shell
docker run -it --rm wpscanteam/wpscan --url https://target.tld/ --enumerate u
```

Enumerating a range of usernames

```shell
docker run -it --rm wpscanteam/wpscan --url https://target.tld/ --enumerate u1-100
```

** replace u1-100 with a range of your choice.

# Usage

Full user documentation can be found here; https://github.com/wpscanteam/wpscan/wiki/WPScan-User-Documentation

```wpscan --url blog.tld``` This will scan the blog using default options with a good compromise between speed and accuracy. For example, the plugins will be checked passively but their version with a mixed detection mode (passively + aggressively). Potential config backup files will also be checked, along with other interesting findings.

If a more stealthy approach is required, then ```wpscan --stealthy --url blog.tld``` can be used.
As a result, when using the ```--enumerate``` option, don't forget to set the ```--plugins-detection``` accordingly, as its default is 'passive'.

For more options, open a terminal and type ```wpscan --help``` (if you built wpscan from the source, you should type the command outside of the git repo)

The DB is located at ~/.wpscan/db

## Optional: WordPress Vulnerability Database API

The WPScan CLI tool uses the [WordPress Vulnerability Database API](https://wpscan.com/api) to retrieve WordPress vulnerability data in real time. For WPScan to retrieve the vulnerability data an API token must be supplied via the `--api-token` option, or via a configuration file, as discussed below. An API token can be obtained by registering an account on [WPScan.com](https://wpscan.com/register).

Up to **25** API requests per day are given free of charge, that should be suitable to scan most WordPress websites at least once per day. When the daily 25 API requests are exhausted, WPScan will continue to work as normal but without any vulnerability data.

### How many API requests do you need?

- Our WordPress scanner makes one API request for the WordPress version, one request per installed plugin and one request per installed theme.
- On average, a WordPress website has 22 installed plugins.

## Load CLI options from file/s

WPScan can load all options (including the `--url`) from configuration files, the following locations are checked (order: first to last):

- `~/.wpscan/scan.json`
- `~/.wpscan/scan.yml`
- `pwd/.wpscan/scan.json`
- `pwd/.wpscan/scan.yml`

If those files exist, options from the `cli_options` key will be loaded and overridden if found twice.

e.g:

`~/.wpscan/scan.yml`:

```yml
cli_options:
  proxy: 'http://127.0.0.1:8080'
  verbose: true
```

`pwd/.wpscan/scan.yml`:

```yml
cli_options:
  proxy: 'socks5://127.0.0.1:9090'
  url: 'http://target.tld'
```

Running ```wpscan``` in the current directory (pwd), is the same as ```wpscan -v --proxy socks5://127.0.0.1:9090 --url http://target.tld```

Other command line options can be added by using snake case convention. e.g:
```yml
cli_options:
  user_agent: "Testing UA"
  max_threads: 1
  headers: "Custom-Header: aaaa; Another Header: bbb"
```

## Save API Token in a file

The feature mentioned above is useful to keep the API Token in a config file and not have to supply it via the CLI each time. To do so, create the ~/.wpscan/scan.yml file containing the below:

```yml
cli_options:
  api_token: 'YOUR_API_TOKEN'
```

## Load API Token From ENV (since v3.7.10)

The API Token will be automatically loaded from the ENV variable `WPSCAN_API_TOKEN` if present. If the `--api-token` CLI option is also provided, the value from the CLI will be used.


## Enumerating usernames

```shell
wpscan --url https://target.tld/ --enumerate u
```

Enumerating a range of usernames

```shell
wpscan --url https://target.tld/ --enumerate u1-100
```

** replace u1-100 with a range of your choice.

# LICENSE

## WPScan Public Source License

The WPScan software (henceforth referred to simply as "WPScan") is dual-licensed - Copyright 2011-2019 WPScan Team.

Cases that include commercialization of WPScan require a commercial, non-free license. Otherwise, WPScan can be used without charge under the terms set out below.

### 1. Definitions

1.1 "License" means this document.

1.2 "Contributor" means each individual or legal entity that creates, contributes to the creation of, or owns WPScan.

1.3 "WPScan Team" means WPScan’s core developers.

### 2. Commercialization

A commercial use is one intended for commercial advantage or monetary compensation.

Example cases of commercialization are:

- Using WPScan to provide commercial managed/Software-as-a-Service services.
- Distributing WPScan as a commercial product or as part of one.
- Using WPScan as a value added service/product.

Example cases which do not require a commercial license, and thus fall under the terms set out below, include (but are not limited to):

- Penetration testers (or penetration testing organizations) using WPScan as part of their assessment toolkit.
- Penetration Testing Linux Distributions including but not limited to Kali Linux, SamuraiWTF, BackBox Linux.
- Using WPScan to test your own systems.
- Any non-commercial use of WPScan.

If you need to purchase a commercial license or are unsure whether you need to purchase a commercial license contact us - contact@wpscan.com.

Free-use Terms and Conditions;

### 3. Redistribution

Redistribution is permitted under the following conditions:

- Unmodified License is provided with WPScan.
- Unmodified Copyright notices are provided with WPScan.
- Does not conflict with the commercialization clause.

### 4. Copying

Copying is permitted so long as it does not conflict with the Redistribution clause.

### 5. Modification

Modification is permitted so long as it does not conflict with the Redistribution clause.

### 6. Contributions

Any Contributions assume the Contributor grants the WPScan Team the unlimited, non-exclusive right to reuse, modify and relicense the Contributor's content.

### 7. Support

WPScan is provided under an AS-IS basis and without any support, updates or maintenance. Support, updates and maintenance may be given according to the sole discretion of the WPScan Team.

### 8. Disclaimer of Warranty

WPScan is provided under this License on an “as is” basis, without warranty of any kind, either expressed, implied, or statutory, including, without limitation, warranties that the WPScan is free of defects, merchantable, fit for a particular purpose or non-infringing.

### 9. Limitation of Liability

To the extent permitted under Law, WPScan is provided under an AS-IS basis. The WPScan Team shall never, and without any limit, be liable for any damage, cost, expense or any other payment incurred as a result of WPScan's actions, failure, bugs and/or any other interaction between WPScan and end-equipment, computers, other software or any 3rd party, end-equipment, computer or services.

### 10. Disclaimer

Running WPScan against websites without prior mutual consent may be illegal in your country. The WPScan Team accept no liability and are not responsible for any misuse or damage caused by WPScan.

### 11. Trademark

The "wpscan" term is a registered trademark. This License does not grant the use of the "wpscan" trademark or the use of the WPScan logo.


================================================
FILE: Rakefile
================================================
# rubocop:disable all

require 'bundler/gem_tasks'

exec = []

begin
  require 'rubocop/rake_task'

  RuboCop::RakeTask.new

  exec << :rubocop
rescue LoadError
end

begin
  require 'rspec/core/rake_task'

  RSpec::Core::RakeTask.new(:spec) { |t| t.rspec_opts = %w{--tag ~slow} }

  exec << :spec
rescue LoadError
end

# Run rubocop & rspec before the build (only if installed)
task build: exec

# rubocop:enable all


================================================
FILE: app/app.rb
================================================
# frozen_string_literal: true

require_relative 'models'
require_relative 'finders'
require_relative 'controllers'


================================================
FILE: app/controllers/aliases.rb
================================================
# frozen_string_literal: true

module WPScan
  module Controller
    # Controller to add the aliases in the CLI
    class Aliases < CMSScanner::Controller::Base
      def cli_options
        [
          OptAlias.new(['--stealthy'],
                       alias_for: '--random-user-agent --detection-mode passive --plugins-version-detection passive')
        ]
      end
    end
  end
end


================================================
FILE: app/controllers/core.rb
================================================
# frozen_string_literal: true

module WPScan
  module Controller
    # Specific Core controller to include WordPress checks
    class Core < CMSScanner::Controller::Core
      # @return [ Array<OptParseValidator::Opt> ]
      def cli_options
        [OptURL.new(['--url URL', 'The URL of the blog to scan'],
                    required_unless: %i[update help hh version], default_protocol: 'http')] +
          super.drop(2) + # delete the --url and --force from CMSScanner
          [
            OptChoice.new(['--server SERVER', 'Force the supplied server module to be loaded'],
                          choices: %w[apache iis nginx],
                          normalize: %i[downcase to_sym],
                          advanced: true),
            OptBoolean.new(['--force', 'Do not check if the target is running WordPress or returns a 403']),
            OptBoolean.new(['--[no-]update', 'Whether or not to update the Database'])
          ]
      end

      # @return [ DB::Updater ]
      def local_db
        @local_db ||= DB::Updater.new(DB_DIR)
      end

      # @return [ Boolean ]
      def update_db_required?
        if local_db.missing_files?
          raise Error::MissingDatabaseFile if ParsedCli.update == false

          return true
        end

        return ParsedCli.update unless ParsedCli.update.nil?

        return false unless user_interaction? && local_db.outdated?

        output('@notice', msg: 'It seems like you have not updated the database for some time.')
        print '[?] Do you want to update now? [Y]es [N]o, default: [N]'
        $stdout.flush

        response = $stdin.gets.to_s.strip

        !!/^y/i.match?(response)
      end

      def update_db
        output('db_update_started')
        output('db_update_finished', updated: local_db.update, verbose: ParsedCli.verbose)

        exit(0) unless ParsedCli.url
      end

      def before_scan
        @last_update = local_db.last_update

        maybe_output_banner_help_and_version # From CMSScanner

        update_db if update_db_required?
        setup_cache
        check_target_availability
        load_server_module
        check_wordpress_state
      rescue Error::NotWordPress => e
        target.maybe_add_cookies
        raise e unless target.wordpress?(ParsedCli.detection_mode)
      end

      # Raises errors if the target is hosted on wordpress.com or is not running WordPress
      # Also check if the homepage_url is still the install url
      def check_wordpress_state
        raise Error::WordPressHosted if target.wordpress_hosted?

        if %r{/wp-admin/install.php$}i.match?(Addressable::URI.parse(target.homepage_url).path)

          output('not_fully_configured', url: target.homepage_url)

          exit(WPScan::ExitCode::VULNERABLE)
        end

        raise Error::NotWordPress unless target.wordpress?(ParsedCli.detection_mode) || ParsedCli.force
      end

      # Loads the related server module in the target
      # and includes it in the WpItem class which will be needed
      # to check if directory listing is enabled etc
      #
      # @return [ Symbol ] The server module loaded
      def load_server_module
        server = target.server || :Apache # Tries to auto detect the server

        # Force a specific server module to be loaded if supplied
        case ParsedCli.server
        when :apache
          server = :Apache
        when :iis
          server = :IIS
        when :nginx
          server = :Nginx
        end

        mod = CMSScanner::Target::Server.const_get(server)

        target.extend mod
        Model::WpItem.include mod

        server
      end
    end
  end
end


================================================
FILE: app/controllers/custom_directories.rb
================================================
# frozen_string_literal: true

module WPScan
  module Controller
    # Controller to ensure that the wp-content and wp-plugins
    # directories are found
    class CustomDirectories < CMSScanner::Controller::Base
      def cli_options
        [
          OptString.new(['--wp-content-dir DIR',
                         'The wp-content directory if custom or not detected, such as "wp-content"']),
          OptString.new(['--wp-plugins-dir DIR',
                         'The plugins directory if custom or not detected, such as "wp-content/plugins"'])
        ]
      end

      def before_scan
        target.content_dir = ParsedCli.wp_content_dir if ParsedCli.wp_content_dir
        target.plugins_dir = ParsedCli.wp_plugins_dir if ParsedCli.wp_plugins_dir

        raise Error::WpContentDirNotDetected unless target.content_dir
      end
    end
  end
end


================================================
FILE: app/controllers/enumeration/cli_options.rb
================================================
# frozen_string_literal: true

module WPScan
  module Controller
    # Enumeration CLI Options
    class Enumeration < CMSScanner::Controller::Base
      def cli_options
        cli_enum_choices + cli_plugins_opts + cli_themes_opts +
          cli_timthumbs_opts + cli_config_backups_opts + cli_db_exports_opts +
          cli_medias_opts + cli_users_opts
      end

      # @return [ Array<OptParseValidator::OptBase> ]
      def cli_enum_choices
        [
          OptMultiChoices.new(
            ['-e', '--enumerate [OPTS]', 'Enumeration Process'],
            choices: {
              vp: OptBoolean.new(['--vulnerable-plugins']),
              ap: OptBoolean.new(['--all-plugins']),
              p: OptBoolean.new(['--popular-plugins']),
              vt: OptBoolean.new(['--vulnerable-themes']),
              at: OptBoolean.new(['--all-themes']),
              t: OptBoolean.new(['--popular-themes']),
              tt: OptBoolean.new(['--timthumbs']),
              cb: OptBoolean.new(['--config-backups']),
              dbe: OptBoolean.new(['--db-exports']),
              u: OptIntegerRange.new(['--users', 'User IDs range. e.g: u1-5'], value_if_empty: '1-10'),
              m: OptIntegerRange.new(['--medias',
                                      'Media IDs range. e.g m1-15',
                                      'Note: Permalink setting must be set to "Plain" for those to be detected'],
                                     value_if_empty: '1-100')
            },
            value_if_empty: 'vp,vt,tt,cb,dbe,u,m',
            incompatible: [%i[vp ap p], %i[vt at t]],
            default: { all_plugins: true, config_backups: true }
          ),
          OptRegexp.new(
            [
              '--exclude-content-based REGEXP_OR_STRING',
              'Exclude all responses matching the Regexp (case insensitive) during parts of the enumeration.',
              'Both the headers and body are checked. Regexp delimiters are not required.'
            ], options: Regexp::IGNORECASE
          )
        ]
      end

      # @return [ Array<OptParseValidator::OptBase> ]
      def cli_plugins_opts
        [
          OptSmartList.new(['--plugins-list LIST', 'List of plugins to enumerate'], advanced: true),
          OptChoice.new(
            ['--plugins-detection MODE',
             'Use the supplied mode to enumerate Plugins.'],
            choices: %w[mixed passive aggressive], normalize: :to_sym, default: :passive
          ),
          OptBoolean.new(
            ['--plugins-version-all',
             'Check all the plugins version locations according to the choosen mode (--detection-mode, ' \
             '--plugins-detection and --plugins-version-detection)'],
            advanced: true
          ),
          OptChoice.new(
            ['--plugins-version-detection MODE',
             'Use the supplied mode to check plugins\' versions.'],
            choices: %w[mixed passive aggressive], normalize: :to_sym, default: :mixed
          ),
          OptInteger.new(
            ['--plugins-threshold THRESHOLD',
             'Raise an error when the number of detected plugins via known locations reaches the threshold. ' \
             'Set to 0 to ignore the threshold.'], default: 100, advanced: true
          )
        ]
      end

      # @return [ Array<OptParseValidator::OptBase> ]
      def cli_themes_opts
        [
          OptSmartList.new(['--themes-list LIST', 'List of themes to enumerate'], advanced: true),
          OptChoice.new(
            ['--themes-detection MODE',
             'Use the supplied mode to enumerate Themes, instead of the global (--detection-mode) mode.'],
            choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
          ),
          OptBoolean.new(
            ['--themes-version-all',
             'Check all the themes version locations according to the choosen mode (--detection-mode, ' \
             '--themes-detection and --themes-version-detection)'],
            advanced: true
          ),
          OptChoice.new(
            ['--themes-version-detection MODE',
             'Use the supplied mode to check themes versions instead of the --detection-mode ' \
             'or --themes-detection modes.'],
            choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
          ),
          OptInteger.new(
            ['--themes-threshold THRESHOLD',
             'Raise an error when the number of detected themes via known locations reaches the threshold. ' \
             'Set to 0 to ignore the threshold.'], default: 20, advanced: true
          )
        ]
      end

      # @return [ Array<OptParseValidator::OptBase> ]
      def cli_timthumbs_opts
        [
          OptFilePath.new(
            ['--timthumbs-list FILE-PATH', 'List of timthumbs\' location to use'],
            exists: true, default: DB_DIR.join('timthumbs-v3.txt').to_s, advanced: true
          ),
          OptChoice.new(
            ['--timthumbs-detection MODE',
             'Use the supplied mode to enumerate Timthumbs, instead of the global (--detection-mode) mode.'],
            choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
          )
        ]
      end

      # @return [ Array<OptParseValidator::OptBase> ]
      def cli_config_backups_opts
        [
          OptFilePath.new(
            ['--config-backups-list FILE-PATH', 'List of config backups\' filenames to use'],
            exists: true, default: DB_DIR.join('config_backups.txt').to_s, advanced: true
          ),
          OptChoice.new(
            ['--config-backups-detection MODE',
             'Use the supplied mode to enumerate Config Backups, instead of the global (--detection-mode) mode.'],
            choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
          )
        ]
      end

      # @return [ Array<OptParseValidator::OptBase> ]
      def cli_db_exports_opts
        [
          OptFilePath.new(
            ['--db-exports-list FILE-PATH', 'List of DB exports\' paths to use'],
            exists: true, default: DB_DIR.join('db_exports.txt').to_s, advanced: true
          ),
          OptChoice.new(
            ['--db-exports-detection MODE',
             'Use the supplied mode to enumerate DB Exports, instead of the global (--detection-mode) mode.'],
            choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
          )
        ]
      end

      # @return [ Array<OptParseValidator::OptBase> ]
      def cli_medias_opts
        [
          OptChoice.new(
            ['--medias-detection MODE',
             'Use the supplied mode to enumerate Medias, instead of the global (--detection-mode) mode.'],
            choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
          )
        ]
      end

      # @return [ Array<OptParseValidator::OptBase> ]
      def cli_users_opts
        [
          OptSmartList.new(
            ['--users-list LIST',
             'List of users to check during the users enumeration from the Login Error Messages'],
            advanced: true
          ),
          OptChoice.new(
            ['--users-detection MODE',
             'Use the supplied mode to enumerate Users, instead of the global (--detection-mode) mode.'],
            choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
          ),
          OptRegexp.new(
            [
              '--exclude-usernames REGEXP_OR_STRING',
              'Exclude usernames matching the Regexp/string (case insensitive). Regexp delimiters are not required.'
            ], options: Regexp::IGNORECASE
          )
        ]
      end
    end
  end
end


================================================
FILE: app/controllers/enumeration/enum_methods.rb
================================================
# frozen_string_literal: true

module WPScan
  module Controller
    # Enumeration Methods
    class Enumeration < CMSScanner::Controller::Base
      # @param [ String ] type (plugins or themes)
      # @param [ Symbol ] detection_mode
      #
      # @return [ String ] The related enumration message depending on the ParsedCli and type supplied
      def enum_message(type, detection_mode)
        return unless %w[plugins themes].include?(type)

        details = if ParsedCli.enumerate[:"vulnerable_#{type}"]
                    'Vulnerable'
                  elsif ParsedCli.enumerate[:"all_#{type}"]
                    'All'
                  else
                    'Most Popular'
                  end

        "Enumerating #{details} #{type.capitalize} #{enum_detection_message(detection_mode)}"
      end

      # @param [ Symbol ] detection_mode
      #
      # @return [ String ]
      def enum_detection_message(detection_mode)
        detection_method = if detection_mode == :mixed
                             'Passive and Aggressive'
                           else
                             detection_mode.to_s.capitalize
                           end

        "(via #{detection_method} Methods)"
      end

      # @param [ String ] type (plugins, themes etc)
      #
      # @return [ Hash ]
      def default_opts(type)
        mode = ParsedCli.options[:"#{type}_detection"] || ParsedCli.detection_mode

        {
          mode: mode,
          exclude_content: ParsedCli.exclude_content_based,
          show_progression: user_interaction?,
          version_detection: {
            mode: ParsedCli.options[:"#{type}_version_detection"] || mode,
            confidence_threshold: ParsedCli.options[:"#{type}_version_all"] ? 0 : 100
          }
        }
      end

      # @param [ Hash ] opts
      #
      # @return [ Boolean ] Wether or not to enumerate the plugins
      def enum_plugins?(opts)
        opts[:popular_plugins] || opts[:all_plugins] || opts[:vulnerable_plugins]
      end

      def enum_plugins
        opts = default_opts('plugins').merge(
          list: plugins_list_from_opts(ParsedCli.options),
          threshold: ParsedCli.plugins_threshold,
          sort: true
        )

        output('@info', msg: enum_message('plugins', opts[:mode])) if user_interaction?
        # Enumerate the plugins & find their versions to avoid doing that when #version
        # is called in the view
        plugins = target.plugins(opts)

        if user_interaction? && !plugins.empty?
          output('@info',
                 msg: "Checking Plugin Versions #{enum_detection_message(opts[:version_detection][:mode])}")
        end

        plugins.each(&:version)

        plugins.select!(&:vulnerable?) if ParsedCli.enumerate[:vulnerable_plugins]

        output('plugins', plugins: plugins)
      end

      # @param [ Hash ] opts
      #
      # @return [ Array<String> ] The plugins list associated to the cli options
      def plugins_list_from_opts(opts)
        # List file provided by the user via the cli
        return opts[:plugins_list] if opts[:plugins_list]

        if opts[:enumerate][:all_plugins]
          DB::Plugins.all_slugs
        elsif opts[:enumerate][:popular_plugins]
          DB::Plugins.popular_slugs
        else
          DB::Plugins.vulnerable_slugs
        end
      end

      # @param [ Hash ] opts
      #
      # @return [ Boolean ] Wether or not to enumerate the themes
      def enum_themes?(opts)
        opts[:popular_themes] || opts[:all_themes] || opts[:vulnerable_themes]
      end

      def enum_themes
        opts = default_opts('themes').merge(
          list: themes_list_from_opts(ParsedCli.options),
          threshold: ParsedCli.themes_threshold,
          sort: true
        )

        output('@info', msg: enum_message('themes', opts[:mode])) if user_interaction?
        # Enumerate the themes & find their versions to avoid doing that when #version
        # is called in the view
        themes = target.themes(opts)

        if user_interaction? && !themes.empty?
          output('@info',
                 msg: "Checking Theme Versions #{enum_detection_message(opts[:version_detection][:mode])}")
        end

        themes.each(&:version)

        themes.select!(&:vulnerable?) if ParsedCli.enumerate[:vulnerable_themes]

        output('themes', themes: themes)
      end

      # @param [ Hash ] opts
      #
      # @return [ Array<String> ] The themes list associated to the cli options
      def themes_list_from_opts(opts)
        # List file provided by the user via the cli
        return opts[:themes_list] if opts[:themes_list]

        if opts[:enumerate][:all_themes]
          DB::Themes.all_slugs
        elsif opts[:enumerate][:popular_themes]
          DB::Themes.popular_slugs
        else
          DB::Themes.vulnerable_slugs
        end
      end

      def enum_timthumbs
        opts = default_opts('timthumbs').merge(list: ParsedCli.timthumbs_list)

        output('@info', msg: "Enumerating Timthumbs #{enum_detection_message(opts[:mode])}") if user_interaction?
        output('timthumbs', timthumbs: target.timthumbs(opts))
      end

      def enum_config_backups
        opts = default_opts('config_backups').merge(list: ParsedCli.config_backups_list)

        output('@info', msg: "Enumerating Config Backups #{enum_detection_message(opts[:mode])}") if user_interaction?
        output('config_backups', config_backups: target.config_backups(opts))
      end

      def enum_db_exports
        opts = default_opts('db_exports').merge(list: ParsedCli.db_exports_list)

        output('@info', msg: "Enumerating DB Exports #{enum_detection_message(opts[:mode])}") if user_interaction?
        output('db_exports', db_exports: target.db_exports(opts))
      end

      def enum_medias
        opts = default_opts('medias').merge(range: ParsedCli.enumerate[:medias])

        if user_interaction?
          output('@info',
                 msg: "Enumerating Medias #{enum_detection_message(opts[:mode])} "\
                      '(Permalink setting must be set to "Plain" for those to be detected)')
        end

        output('medias', medias: target.medias(opts))
      end

      # @param [ Hash ] opts
      #
      # @return [ Boolean ] Wether or not to enumerate the users
      def enum_users?(opts)
        opts[:users] || (ParsedCli.passwords && !ParsedCli.username && !ParsedCli.usernames)
      end

      def enum_users
        opts = default_opts('users').merge(
          range: enum_users_range,
          list: ParsedCli.users_list
        )

        output('@info', msg: "Enumerating Users #{enum_detection_message(opts[:mode])}") if user_interaction?
        output('users', users: target.users(opts))
      end

      # @return [ Range ] The user ids range to enumerate
      # If the --enumerate is used, the default value is handled by the Option
      # However, when using --passwords alone, the default has to be set by the code below
      def enum_users_range
        ParsedCli.enumerate[:users] || cli_enum_choices[0].choices[:u].validate(nil)
      end
    end
  end
end


================================================
FILE: app/controllers/enumeration.rb
================================================
# frozen_string_literal: true

require_relative 'enumeration/cli_options'
require_relative 'enumeration/enum_methods'

module WPScan
  module Controller
    # Enumeration Controller
    class Enumeration < CMSScanner::Controller::Base
      def run
        enum = ParsedCli.enumerate || {}

        enum_plugins if enum_plugins?(enum)
        enum_themes  if enum_themes?(enum)

        %i[timthumbs config_backups db_exports medias].each do |key|
          send("enum_#{key}".to_sym) if enum.key?(key)
        end

        enum_users if enum_users?(enum)
      end
    end
  end
end


================================================
FILE: app/controllers/main_theme.rb
================================================
# frozen_string_literal: true

module WPScan
  module Controller
    # Main Theme Controller
    class MainTheme < CMSScanner::Controller::Base
      def cli_options
        [
          OptChoice.new(
            ['--main-theme-detection MODE',
             'Use the supplied mode for the Main theme detection, instead of the global (--detection-mode) mode.'],
            choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
          )
        ]
      end

      def run
        output(
          'theme',
          theme: target.main_theme(
            mode: ParsedCli.main_theme_detection || ParsedCli.detection_mode
          ),
          verbose: ParsedCli.verbose
        )
      end
    end
  end
end


================================================
FILE: app/controllers/password_attack.rb
================================================
# frozen_string_literal: true

module WPScan
  module Controller
    # Password Attack Controller
    class PasswordAttack < CMSScanner::Controller::Base
      def cli_options
        [
          OptFilePath.new(
            ['--passwords FILE-PATH', '-P',
             'List of passwords to use during the password attack.',
             'If no --username/s option supplied, user enumeration will be run.'],
            exists: true
          ),
          OptSmartList.new(['--usernames LIST', '-U', 'List of usernames to use during the password attack.']),
          OptInteger.new(['--multicall-max-passwords MAX_PWD',
                          'Maximum number of passwords to send by request with XMLRPC multicall'],
                         default: 500),
          OptChoice.new(['--password-attack ATTACK',
                         'Force the supplied attack to be used rather than automatically determining one.',
                         'Multicall will only work against WP < 4.4'],
                        choices: %w[wp-login xmlrpc xmlrpc-multicall],
                        normalize: %i[downcase underscore to_sym]),
          OptString.new(['--login-uri URI', 'The URI of the login page if different from /wp-login.php'])
        ]
      end

      def attack_opts
        @attack_opts ||= {
          show_progression: user_interaction?,
          multicall_max_passwords: ParsedCli.multicall_max_passwords
        }
      end

      def run
        return unless ParsedCli.passwords

        begin
          found = []

          if user_interaction?
            output('@info',
                   msg: "Performing password attack on #{attacker.titleize} against #{users.size} user/s")
          end

          attacker.attack(users, ParsedCli.passwords, attack_opts) do |user|
            found << user

            attacker.progress_bar.log("[SUCCESS] - #{user.username} / #{user.password}")
          end
        rescue Error::NoLoginInterfaceDetected => e
          # TODO: Maybe output that in JSON as well.
          output('@notice', msg: e.to_s) if user_interaction?
        ensure
          output('users', users: found)
        end
      end

      # @return [ CMSScanner::Finders::Finder ] The finder used to perform the attack
      def attacker
        @attacker ||= attacker_from_cli_options || attacker_from_automatic_detection
      end

      # @return [ Model::XMLRPC ]
      def xmlrpc
        @xmlrpc ||= target.xmlrpc
      end

      # @return [ CMSScanner::Finders::Finder ]
      def attacker_from_cli_options
        return unless ParsedCli.password_attack

        case ParsedCli.password_attack
        when :wp_login
          raise Error::NoLoginInterfaceDetected unless target.login_url

          Finders::Passwords::WpLogin.new(target)
        when :xmlrpc
          raise Error::XMLRPCNotDetected unless xmlrpc

          Finders::Passwords::XMLRPC.new(xmlrpc)
        when :xmlrpc_multicall
          raise Error::XMLRPCNotDetected unless xmlrpc

          Finders::Passwords::XMLRPCMulticall.new(xmlrpc)
        end
      end

      # @return [ Boolean ]
      def xmlrpc_get_users_blogs_enabled?
        if xmlrpc&.enabled? &&
           xmlrpc.available_methods.include?('wp.getUsersBlogs') &&
           !xmlrpc.method_call('wp.getUsersBlogs', [SecureRandom.hex[0, 6], SecureRandom.hex[0, 4]])
                  .run.body.match?(/>\s*405\s*</)

          true
        else
          false
        end
      end

      # @return [ CMSScanner::Finders::Finder ]
      def attacker_from_automatic_detection
        if xmlrpc_get_users_blogs_enabled?
          wp_version = target.wp_version

          if wp_version && wp_version < '4.4'
            Finders::Passwords::XMLRPCMulticall.new(xmlrpc)
          else
            Finders::Passwords::XMLRPC.new(xmlrpc)
          end
        elsif target.login_url
          Finders::Passwords::WpLogin.new(target)
        else
          raise Error::NoLoginInterfaceDetected
        end
      end

      # @return [ Array<Users> ] The users to brute force
      def users
        return target.users unless ParsedCli.usernames

        ParsedCli.usernames.reduce([]) do |acc, elem|
          acc << Model::User.new(elem.chomp)
        end
      end
    end
  end
end


================================================
FILE: app/controllers/vuln_api.rb
================================================
# frozen_string_literal: true

module WPScan
  module Controller
    # Controller to handle the API token
    class VulnApi < CMSScanner::Controller::Base
      ENV_KEY = 'WPSCAN_API_TOKEN'

      def cli_options
        [
          OptString.new(
            ['--api-token TOKEN',
             'The WPScan API Token to display vulnerability data, available at https://wpscan.com/profile']
          )
        ]
      end

      def before_scan
        return unless ParsedCli.api_token || ENV.key?(ENV_KEY)

        DB::VulnApi.token = ParsedCli.api_token || ENV[ENV_KEY]

        api_status = DB::VulnApi.status

        raise Error::InvalidApiToken if api_status['status'] == 'forbidden'
        raise Error::ApiLimitReached if api_status['requests_remaining'] == 0
        raise api_status['http_error'] if api_status['http_error']
      end

      def after_scan
        output('status', status: DB::VulnApi.status, api_requests: WPScan.api_requests)
      end
    end
  end
end


================================================
FILE: app/controllers/wp_version.rb
================================================
# frozen_string_literal: true

module WPScan
  module Controller
    # Wp Version Controller
    class WpVersion < CMSScanner::Controller::Base
      def cli_options
        [
          OptBoolean.new(['--wp-version-all', 'Check all the version locations'], advanced: true),
          OptChoice.new(
            ['--wp-version-detection MODE',
             'Use the supplied mode for the WordPress version detection, ' \
             'instead of the global (--detection-mode) mode.'],
            choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
          )
        ]
      end

      def before_scan
        DB::DynamicFinders::Wordpress.create_versions_finders
      end

      def run
        output(
          'version',
          version: target.wp_version(
            mode: ParsedCli.wp_version_detection || ParsedCli.detection_mode,
            confidence_threshold: ParsedCli.wp_version_all ? 0 : 100,
            show_progression: user_interaction?
          )
        )
      end
    end
  end
end


================================================
FILE: app/controllers.rb
================================================
# frozen_string_literal: true

require_relative 'controllers/core'
require_relative 'controllers/vuln_api'
require_relative 'controllers/custom_directories'
require_relative 'controllers/wp_version'
require_relative 'controllers/main_theme'
require_relative 'controllers/enumeration'
require_relative 'controllers/password_attack'
require_relative 'controllers/aliases'


================================================
FILE: app/finders/config_backups/known_filenames.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module ConfigBackups
      # Config Backup finder
      class KnownFilenames < CMSScanner::Finders::Finder
        include CMSScanner::Finders::Finder::Enumerator

        # @param [ Hash ] opts
        # @option opts [ String ] :list
        # @option opts [ Boolean ] :show_progression
        #
        # @return [ Array<ConfigBackup> ]
        def aggressive(opts = {})
          found = []

          enumerate(potential_urls(opts), opts.merge(check_full_response: 200)) do |res|
            next unless res.body =~ /define/i && res.body !~ /<\s?html/i

            found << Model::ConfigBackup.new(res.request.url, found_by: DIRECT_ACCESS, confidence: 100)
          end

          found
        end

        # @param [ Hash ] opts
        # @option opts [ String ] :list Mandatory
        #
        # @return [ Hash ]
        def potential_urls(opts = {})
          urls = {}

          File.open(opts[:list]).each_with_index do |file, index|
            urls[target.url(file.chomp)] = index
          end

          urls
        end

        def create_progress_bar(opts = {})
          super(opts.merge(title: ' Checking Config Backups -'))
        end
      end
    end
  end
end


================================================
FILE: app/finders/config_backups.rb
================================================
# frozen_string_literal: true

require_relative 'config_backups/known_filenames'

module WPScan
  module Finders
    module ConfigBackups
      # Config Backup Finder
      class Base
        include CMSScanner::Finders::SameTypeFinder

        # @param [ WPScan::Target ] target
        def initialize(target)
          finders << ConfigBackups::KnownFilenames.new(target)
        end
      end
    end
  end
end


================================================
FILE: app/finders/db_exports/known_locations.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module DbExports
      # DB Exports finder
      class KnownLocations < CMSScanner::Finders::Finder
        include CMSScanner::Finders::Finder::Enumerator

        def valid_response_codes
          @valid_response_codes ||= [200, 206].freeze
        end

        SQL_PATTERN = /(?:DROP|(?:UN)?LOCK|CREATE|ALTER) (?:TABLE|DATABASE)|INSERT INTO/.freeze

        # @param [ Hash ] opts
        # @option opts [ String ] :list
        # @option opts [ Boolean ] :show_progression
        #
        # @return [ Array<DBExport> ]
        def aggressive(opts = {})
          found = []

          enumerate(potential_urls(opts), opts.merge(check_full_response: valid_response_codes)) do |res|
            if res.effective_url.end_with?('.zip')
              next unless %r{\Aapplication/zip}i.match?(res.headers['Content-Type'])
            else
              next unless SQL_PATTERN.match?(res.body)
            end

            found << Model::DbExport.new(res.request.url, found_by: DIRECT_ACCESS, confidence: 100)
          end

          found
        end

        def full_request_params
          @full_request_params ||= { headers: { 'Range' => 'bytes=0-3000' } }
        end

        # @param [ Hash ] opts
        # @option opts [ String ] :list Mandatory
        #
        # @return [ Hash ]
        def potential_urls(opts = {})
          urls = {}
          index = 0

          File.open(opts[:list]).each do |path|
            path.chomp!

            if path.include?('{domain_name}')
              urls[target.url(path.gsub('{domain_name}', domain_name))] = index

              if domain_name != domain_name_with_sub
                urls[target.url(path.gsub('{domain_name}', domain_name_with_sub))] = index + 1

                index += 1
              end
            else
              urls[target.url(path)] = index
            end

            index += 1
          end

          urls
        end

        def domain_name
          @domain_name ||= if Resolv::AddressRegex.match?(target.uri.host)
                             target.uri.host
                           else
                             (PublicSuffix.domain(target.uri.host) || target.uri.host)[/(^[\w|-]+)/, 1]
                           end
        end

        def domain_name_with_sub
          @domain_name_with_sub ||=
            if Resolv::AddressRegex.match?(target.uri.host)
              target.uri.host
            else
              parsed = PublicSuffix.parse(target.uri.host)

              if parsed.subdomain
                parsed.subdomain.gsub(".#{parsed.tld}", '')
              elsif parsed.domain
                parsed.domain.gsub(".#{parsed.tld}", '')
              else
                target.uri.host
              end
            end
        rescue PublicSuffix::DomainNotAllowed
          @domain_name_with_sub = target.uri.host
        end

        def create_progress_bar(opts = {})
          super(opts.merge(title: ' Checking DB Exports -'))
        end
      end
    end
  end
end


================================================
FILE: app/finders/db_exports.rb
================================================
# frozen_string_literal: true

require_relative 'db_exports/known_locations'

module WPScan
  module Finders
    module DbExports
      # DB Exports Finder
      class Base
        include CMSScanner::Finders::SameTypeFinder

        # @param [ WPScan::Target ] target
        def initialize(target)
          finders << DbExports::KnownLocations.new(target)
        end
      end
    end
  end
end


================================================
FILE: app/finders/interesting_findings/backup_db.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module InterestingFindings
      # BackupDB finder
      class BackupDB < CMSScanner::Finders::Finder
        # @return [ InterestingFinding ]
        def aggressive(_opts = {})
          path = 'wp-content/backup-db/'
          res  = target.head_and_get(path, [200, 403])

          return unless [200, 403].include?(res.code) && !target.homepage_or_404?(res)

          Model::BackupDB.new(
            target.url(path),
            confidence: 70,
            found_by: DIRECT_ACCESS,
            interesting_entries: target.directory_listing_entries(path)
          )
        end
      end
    end
  end
end


================================================
FILE: app/finders/interesting_findings/debug_log.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module InterestingFindings
      # debug.log finder
      class DebugLog < CMSScanner::Finders::Finder
        # @return [ InterestingFinding ]
        def aggressive(_opts = {})
          path = 'wp-content/debug.log'

          return unless target.debug_log?(path)

          Model::DebugLog.new(target.url(path), confidence: 100, found_by: DIRECT_ACCESS)
        end
      end
    end
  end
end


================================================
FILE: app/finders/interesting_findings/duplicator_installer_log.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module InterestingFindings
      # DuplicatorInstallerLog finder
      class DuplicatorInstallerLog < CMSScanner::Finders::Finder
        # @return [ InterestingFinding ]
        def aggressive(_opts = {})
          path = 'installer-log.txt'

          return unless /DUPLICATOR(-|\s)?(PRO|LITE)?:? INSTALL-LOG/i.match?(target.head_and_get(path).body)

          Model::DuplicatorInstallerLog.new(target.url(path), confidence: 100, found_by: DIRECT_ACCESS)
        end
      end
    end
  end
end


================================================
FILE: app/finders/interesting_findings/emergency_pwd_reset_script.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module InterestingFindings
      # Emergency Password Reset Script finder
      class EmergencyPwdResetScript < CMSScanner::Finders::Finder
        # @return [ InterestingFinding ]
        def aggressive(_opts = {})
          path = 'emergency.php'
          res  = target.head_and_get(path)

          return unless res.code == 200 && !target.homepage_or_404?(res)

          Model::EmergencyPwdResetScript.new(
            target.url(path),
            confidence: /password/i.match?(res.body) ? 100 : 40,
            found_by: DIRECT_ACCESS
          )
        end
      end
    end
  end
end


================================================
FILE: app/finders/interesting_findings/full_path_disclosure.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module InterestingFindings
      # Full Path Disclosure finder
      class FullPathDisclosure < CMSScanner::Finders::Finder
        # @return [ InterestingFinding ]
        def aggressive(_opts = {})
          path        = 'wp-includes/rss-functions.php'
          fpd_entries = target.full_path_disclosure_entries(path)

          return if fpd_entries.empty?

          Model::FullPathDisclosure.new(
            target.url(path),
            confidence: 100,
            found_by: DIRECT_ACCESS,
            interesting_entries: fpd_entries
          )
        end
      end
    end
  end
end


================================================
FILE: app/finders/interesting_findings/mu_plugins.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module InterestingFindings
      # Must Use Plugins Directory checker
      class MuPlugins < CMSScanner::Finders::Finder
        # @return [ InterestingFinding ]
        def passive(_opts = {})
          pattern = %r{#{target.content_dir}/mu-plugins/}i

          target.in_scope_uris(target.homepage_res, '(//@href|//@src)[contains(., "mu-plugins")]') do |uri|
            next unless uri.path&.match?(pattern)

            url = target.url('wp-content/mu-plugins/')

            target.mu_plugins = true

            return Model::MuPlugins.new(url, confidence: 70, found_by: 'URLs In Homepage (Passive Detection)')
          end
          nil
        end

        # @return [ InterestingFinding ]
        def aggressive(_opts = {})
          url = target.url('wp-content/mu-plugins/')
          res = Browser.get_and_follow_location(url)

          return unless [200, 401, 403].include?(res.code)
          return if target.homepage_or_404?(res)

          target.mu_plugins = true

          Model::MuPlugins.new(url, confidence: 80, found_by: DIRECT_ACCESS)
        end
      end
    end
  end
end


================================================
FILE: app/finders/interesting_findings/multisite.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module InterestingFindings
      # Multisite checker
      class Multisite < CMSScanner::Finders::Finder
        # @return [ InterestingFinding ]
        def aggressive(_opts = {})
          url      = target.url('wp-signup.php')
          res      = Browser.get(url)
          location = res.headers_hash['location']

          return unless [200, 302].include?(res.code)
          return if res.code == 302 && location&.include?('wp-login.php?action=register')
          return unless res.code == 200 || (res.code == 302 && location&.include?('wp-signup.php'))

          target.multisite = true

          Model::Multisite.new(url, confidence: 100, found_by: DIRECT_ACCESS)
        end
      end
    end
  end
end


================================================
FILE: app/finders/interesting_findings/php_disabled.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module InterestingFindings
      # See https://github.com/wpscanteam/wpscan/issues/1593
      class PHPDisabled < CMSScanner::Finders::Finder
        PATTERN = /\$wp_version =/.freeze

        # @return [ InterestingFinding ]
        def aggressive(_opts = {})
          path = 'wp-includes/version.php'

          return unless PATTERN.match?(target.head_and_get(path).body)

          Model::PHPDisabled.new(target.url(path), confidence: 100, found_by: DIRECT_ACCESS)
        end
      end
    end
  end
end


================================================
FILE: app/finders/interesting_findings/readme.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module InterestingFindings
      # Readme.html finder
      class Readme < CMSScanner::Finders::Finder
        # @return [ InterestingFinding ]
        def aggressive(_opts = {})
          potential_files.each do |path|
            res = target.head_and_get(path)

            next unless res.code == 200 && res.body =~ /wordpress/i

            return Model::Readme.new(target.url(path), confidence: 100, found_by: DIRECT_ACCESS)
          end

          nil
        end

        # @retun [ Array<String> ] The list of potential readme files
        def potential_files
          %w[readme.html olvasdel.html lisenssi.html liesmich.html]
        end
      end
    end
  end
end


================================================
FILE: app/finders/interesting_findings/registration.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module InterestingFindings
      # Registration Enabled checker
      class Registration < CMSScanner::Finders::Finder
        # @return [ InterestingFinding ]
        def passive(_opts = {})
          # Maybe check in the homepage if there is the registration url ?
        end

        # @return [ InterestingFinding ]
        def aggressive(_opts = {})
          res = Browser.get_and_follow_location(target.registration_url)

          return unless res.code == 200
          return if res.html.css('form#setupform').empty? &&
                    res.html.css('form#registerform').empty?

          target.registration_enabled = true

          Model::Registration.new(res.effective_url, confidence: 100, found_by: DIRECT_ACCESS)
        end
      end
    end
  end
end


================================================
FILE: app/finders/interesting_findings/tmm_db_migrate.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module InterestingFindings
      # Tmm DB Migrate finder
      class TmmDbMigrate < CMSScanner::Finders::Finder
        # @return [ InterestingFinding ]
        def aggressive(_opts = {})
          path = 'wp-content/uploads/tmm_db_migrate/tmm_db_migrate.zip'
          url  = target.url(path)
          res  = browser.forge_request(url, target.head_or_get_request_params).run

          return unless res.code == 200 && res.headers['Content-Type'] =~ %r{\Aapplication/zip}i

          Model::TmmDbMigrate.new(url, confidence: 100, found_by: DIRECT_ACCESS)
        end
      end
    end
  end
end


================================================
FILE: app/finders/interesting_findings/upload_directory_listing.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module InterestingFindings
      # UploadDirectoryListing finder
      class UploadDirectoryListing < CMSScanner::Finders::Finder
        # @return [ InterestingFinding ]
        def aggressive(_opts = {})
          path = 'wp-content/uploads/'

          return unless target.directory_listing?(path)

          url = target.url(path)

          Model::UploadDirectoryListing.new(url, confidence: 100, found_by: DIRECT_ACCESS)
        end
      end
    end
  end
end


================================================
FILE: app/finders/interesting_findings/upload_sql_dump.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module InterestingFindings
      # UploadSQLDump finder
      class UploadSQLDump < CMSScanner::Finders::Finder
        SQL_PATTERN = /(?:DROP|CREATE|(?:UN)?LOCK) TABLE|INSERT INTO/.freeze

        # @return [ InterestingFinding ]
        def aggressive(_opts = {})
          path = 'wp-content/uploads/dump.sql'
          res  = target.head_and_get(path, [200], get: { headers: { 'Range' => 'bytes=0-3000' } })

          return unless SQL_PATTERN.match?(res.body)

          Model::UploadSQLDump.new(target.url(path), confidence: 100, found_by: DIRECT_ACCESS)
        end
      end
    end
  end
end


================================================
FILE: app/finders/interesting_findings/wp_cron.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module InterestingFindings
      # wp-cron.php finder
      class WPCron < CMSScanner::Finders::Finder
        # @return [ InterestingFinding ]
        def aggressive(_opts = {})
          res = Browser.get(wp_cron_url)

          return unless res.code == 200

          Model::WPCron.new(wp_cron_url, confidence: 60, found_by: DIRECT_ACCESS)
        end

        def wp_cron_url
          @wp_cron_url ||= target.url('wp-cron.php')
        end
      end
    end
  end
end


================================================
FILE: app/finders/interesting_findings.rb
================================================
# frozen_string_literal: true

require_relative 'interesting_findings/readme'
require_relative 'interesting_findings/wp_cron'
require_relative 'interesting_findings/multisite'
require_relative 'interesting_findings/debug_log'
require_relative 'interesting_findings/backup_db'
require_relative 'interesting_findings/mu_plugins'
require_relative 'interesting_findings/php_disabled'
require_relative 'interesting_findings/registration'
require_relative 'interesting_findings/tmm_db_migrate'
require_relative 'interesting_findings/upload_sql_dump'
require_relative 'interesting_findings/full_path_disclosure'
require_relative 'interesting_findings/duplicator_installer_log'
require_relative 'interesting_findings/upload_directory_listing'
require_relative 'interesting_findings/emergency_pwd_reset_script'

module WPScan
  module Finders
    module InterestingFindings
      # Interesting Files Finder
      class Base < CMSScanner::Finders::InterestingFindings::Base
        # @param [ WPScan::Target ] target
        def initialize(target)
          super(target)

          %w[
            Readme DebugLog FullPathDisclosure BackupDB DuplicatorInstallerLog
            Multisite MuPlugins Registration UploadDirectoryListing TmmDbMigrate
            UploadSQLDump EmergencyPwdResetScript WPCron PHPDisabled
          ].each do |f|
            finders << InterestingFindings.const_get(f).new(target)
          end
        end
      end
    end
  end
end


================================================
FILE: app/finders/main_theme/css_style_in_404_page.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module MainTheme
      # From the CSS style in the 404 page
      class CssStyleIn404Page < CssStyleInHomepage
        def passive(opts = {})
          passive_from_css_href(target.error_404_res, opts) || passive_from_style_code(target.error_404_res, opts)
        end
      end
    end
  end
end


================================================
FILE: app/finders/main_theme/css_style_in_homepage.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module MainTheme
      # From the CSS style in the homepage
      class CssStyleInHomepage < CMSScanner::Finders::Finder
        include Finders::WpItems::UrlsInPage # To have the item_code_pattern method available here

        def create_theme(slug, style_url, opts)
          Model::Theme.new(
            slug,
            target,
            opts.merge(found_by: found_by, confidence: 70, style_url: style_url)
          )
        end

        def passive(opts = {})
          passive_from_css_href(target.homepage_res, opts) || passive_from_style_code(target.homepage_res, opts)
        end

        def passive_from_css_href(res, opts)
          target.in_scope_uris(res, '//link/@href[contains(., "style.css")]') do |uri|
            next unless uri.path =~ %r{/themes/([^/]+)/style.css\z}i

            return create_theme(Regexp.last_match[1], uri.to_s, opts)
          end
          nil
        end

        def passive_from_style_code(res, opts)
          res.html.css('style').each do |tag|
            code = tag.text.to_s
            next if code.empty?

            next unless code =~ %r{#{item_code_pattern('themes')}\\?/style\.css[^"'( ]*}i

            return create_theme(Regexp.last_match[1], Regexp.last_match[0].strip, opts)
          end
          nil
        end
      end
    end
  end
end


================================================
FILE: app/finders/main_theme/urls_in_404_page.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module MainTheme
      # URLs In 404 Page Finder
      class UrlsIn404Page < UrlsInHomepage
        # @return [ Typhoeus::Response ]
        def page_res
          @page_res ||= target.error_404_res
        end
      end
    end
  end
end


================================================
FILE: app/finders/main_theme/urls_in_homepage.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module MainTheme
      # URLs In Homepage Finder
      class UrlsInHomepage < CMSScanner::Finders::Finder
        include WpItems::UrlsInPage

        # @param [ Hash ] opts
        #
        # @return [ Array<Theme> ]
        def passive(opts = {})
          found = []

          slugs = items_from_links('themes', uniq: false) + items_from_codes('themes', uniq: false)

          slugs.each_with_object(Hash.new(0)) { |slug, counts| counts[slug] += 1 }.each do |slug, occurences|
            found << Model::Theme.new(slug, target, opts.merge(found_by: found_by, confidence: 2 * occurences))
          end

          found
        end

        # @return [ Typhoeus::Response ]
        def page_res
          @page_res ||= target.homepage_res
        end
      end
    end
  end
end


================================================
FILE: app/finders/main_theme/woo_framework_meta_generator.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module MainTheme
      # From the WooFramework meta generators
      class WooFrameworkMetaGenerator < CMSScanner::Finders::Finder
        THEME_PATTERN     = %r{<meta name="generator" content="([^\s"]+)\s?([^"]+)?"\s+/?>}.freeze
        FRAMEWORK_PATTERN = %r{<meta name="generator" content="WooFramework\s?([^"]+)?"\s+/?>}.freeze
        PATTERN           = /#{THEME_PATTERN}\s+#{FRAMEWORK_PATTERN}/i.freeze

        def passive(opts = {})
          return unless target.homepage_res.body =~ PATTERN || target.error_404_res.body =~ PATTERN

          Model::Theme.new(
            Regexp.last_match[1],
            target,
            opts.merge(found_by: found_by, confidence: 80)
          )
        end
      end
    end
  end
end


================================================
FILE: app/finders/main_theme.rb
================================================
# frozen_string_literal: true

require_relative 'main_theme/css_style_in_homepage'
require_relative 'main_theme/css_style_in_404_page'
require_relative 'main_theme/woo_framework_meta_generator'
require_relative 'main_theme/urls_in_homepage'
require_relative 'main_theme/urls_in_404_page'

module WPScan
  module Finders
    module MainTheme
      # Main Theme Finder
      class Base
        include CMSScanner::Finders::UniqueFinder

        # @param [ WPScan::Target ] target
        def initialize(target)
          finders <<
            MainTheme::CssStyleInHomepage.new(target) <<
            MainTheme::CssStyleIn404Page.new(target) <<
            MainTheme::WooFrameworkMetaGenerator.new(target) <<
            MainTheme::UrlsInHomepage.new(target) <<
            MainTheme::UrlsIn404Page.new(target)
        end
      end
    end
  end
end


================================================
FILE: app/finders/medias/attachment_brute_forcing.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Medias
      # Medias Finder, see https://github.com/wpscanteam/wpscan/issues/172
      class AttachmentBruteForcing < CMSScanner::Finders::Finder
        include CMSScanner::Finders::Finder::Enumerator

        # @param [ Hash ] opts
        # @option opts [ Range ] :range Mandatory
        #
        # @return [ Array<Media> ]
        def aggressive(opts = {})
          found = []

          enumerate(target_urls(opts), opts) do |res|
            next unless res.code == 200

            found << Model::Media.new(res.effective_url, opts.merge(found_by: found_by, confidence: 100))
          end

          found
        end

        # @param [ Hash ] opts
        # @option opts [ Range ] :range Mandatory
        #
        # @return [ Hash ]
        def target_urls(opts = {})
          urls = {}

          opts[:range].each do |id|
            urls[target.uri.join("?attachment_id=#{id}").to_s] = id
          end

          urls
        end

        def create_progress_bar(opts = {})
          super(opts.merge(title: ' Brute Forcing Attachment IDs -'))
        end
      end
    end
  end
end


================================================
FILE: app/finders/medias.rb
================================================
# frozen_string_literal: true

require_relative 'medias/attachment_brute_forcing'

module WPScan
  module Finders
    module Medias
      # Medias Finder
      class Base
        include CMSScanner::Finders::SameTypeFinder

        # @param [ WPScan::Target ] target
        def initialize(target)
          finders << Medias::AttachmentBruteForcing.new(target)
        end
      end
    end
  end
end


================================================
FILE: app/finders/passwords/wp_login.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Passwords
      # Password attack against the wp-login.php
      class WpLogin < CMSScanner::Finders::Finder
        include CMSScanner::Finders::Finder::BreadthFirstDictionaryAttack

        def login_request(username, password)
          target.login_request(username, password)
        end

        def valid_credentials?(response)
          response.code == 302 &&
            Array(response.headers['Set-Cookie'])&.any? { |cookie| cookie =~ /wordpress_logged_in_/i }
        end

        def errored_response?(response)
          response.code != 200 && response.body !~ /login_error/i
        end
      end
    end
  end
end


================================================
FILE: app/finders/passwords/xml_rpc.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Passwords
      # Password attack against the XMLRPC interface
      class XMLRPC < CMSScanner::Finders::Finder
        include CMSScanner::Finders::Finder::BreadthFirstDictionaryAttack

        def login_request(username, password)
          target.method_call('wp.getUsersBlogs', [username, password], cache_ttl: 0)
        end

        def valid_credentials?(response)
          response.code == 200 && response.body.include?('blogName')
        end

        def errored_response?(response)
          response.code != 200 && response.body !~ /Incorrect username or password/i
        end
      end
    end
  end
end


================================================
FILE: app/finders/passwords/xml_rpc_multicall.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Passwords
      # Password attack against the XMLRPC interface with the multicall method
      # WP < 4.4 is vulnerable to such attack
      class XMLRPCMulticall < CMSScanner::Finders::Finder
        # @param [ Array<User> ] users
        # @param [ Array<String> ] passwords
        #
        # @return [ Typhoeus::Response ]
        def do_multi_call(users, passwords)
          methods = []

          users.each do |user|
            passwords.each do |password|
              methods << ['wp.getUsersBlogs', user.username, password]
            end
          end

          target.multi_call(methods, cache_ttl: 0).run
        end

        # @param [ IO ] file
        # @param [ Integer ] passwords_size
        # @return [ Array<String> ] The passwords from the last checked position in the file until there are
        #                           passwords_size passwords retrieved
        def passwords_from_wordlist(file, passwords_size)
          pwds       = []
          added_pwds = 0

          return pwds if passwords_size.zero?

          # Make sure that the main code does not call #sysseek or #count etc
          # otherwise the file descriptor will be set to somwehere else
          file.each_line(chomp: true) do |line|
            pwds << line
            added_pwds += 1

            break if added_pwds == passwords_size
          end

          pwds
        end

        # @param [ Array<Model::User> ] users
        # @param [ String ] wordlist_path
        # @param [ Hash ] opts
        # @option opts [ Boolean ] :show_progression
        # @option opts [ Integer ] :multicall_max_passwords
        #
        # @yield [ Model::User ] When a valid combination is found
        #
        # TODO: Make rubocop happy about metrics etc
        #
        # rubocop:disable all
        def attack(users, wordlist_path, opts = {})
          checked_passwords      = 0
          wordlist               = File.open(wordlist_path)
          wordlist_size          = wordlist.count
          max_passwords          = opts[:multicall_max_passwords]
          current_passwords_size = passwords_size(max_passwords, users.size)

          create_progress_bar(total: (wordlist_size / current_passwords_size.round(1)).ceil,
                              show_progression: opts[:show_progression])

          wordlist.sysseek(0) # reset the descriptor to the beginning of the file as it changed with #count

          loop do
            current_users      = users.select { |user| user.password.nil? }
            current_passwords  = passwords_from_wordlist(wordlist, current_passwords_size)
            checked_passwords += current_passwords_size

            break if current_users.empty? || current_passwords.nil? || current_passwords.empty?

            res = do_multi_call(current_users, current_passwords)

            progress_bar.increment

            check_and_output_errors(res)

            # Avoid to parse the response and iterate over all the structs in the document
            # if there isn't any tag matching a valid combination
            next unless res.body =~ /isAdmin/ # maybe a better one ?

            Nokogiri::XML(res.body).xpath('//struct').each_with_index do |struct, index|
              next if struct.text =~ /faultCode/

              user = current_users[index / current_passwords.size]
              user.password = current_passwords[index % current_passwords.size]

              yield user

              # Updates the current_passwords_size and progress_bar#total
              # given that less requests will be done due to a valid combination found.
              current_passwords_size = passwords_size(max_passwords, current_users.size - 1)

              if current_passwords_size == 0
                progress_bar.log('All Found') # remove ?
                progress_bar.stop
                break
              end

              begin
                progress_bar.total = progress_bar.progress + ((wordlist_size - checked_passwords) / current_passwords_size.round(1)).ceil
              rescue ProgressBar::InvalidProgressError
              end
            end
          end
          # Maybe a progress_bar.stop ?
        end
        # rubocop:enable all

        def passwords_size(max_passwords, users_size)
          return 1 if max_passwords < users_size
          return 0 if users_size.zero?

          max_passwords / users_size
        end

        # @param [ Typhoeus::Response ] res
        def check_and_output_errors(res)
          progress_bar.log("Incorrect response: #{res.code} / #{res.return_message}") unless res.code == 200

          if /parse error. not well formed/i.match?(res.body)
            progress_bar.log('Parsing error, might be caused by a too high --max-passwords value (such as >= 2k)')
          end

          return unless /requested method [^ ]+ does not exist/i.match?(res.body)

          progress_bar.log('The requested method is not supported')
        end
      end
    end
  end
end


================================================
FILE: app/finders/passwords.rb
================================================
# frozen_string_literal: true

require_relative 'passwords/wp_login'
require_relative 'passwords/xml_rpc'
require_relative 'passwords/xml_rpc_multicall'


================================================
FILE: app/finders/plugin_version/readme.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module PluginVersion
      # Plugin Version Finder from the readme.txt file
      class Readme < CMSScanner::Finders::Finder
        # @return [ Version ]
        def aggressive(_opts = {})
          found_by_msg = 'Readme - %s (Aggressive Detection)'

          # The target(plugin)#readme_url can't be used directly here
          # as if the --detection-mode is passive, it will always return nil
          target.potential_readme_filenames.each do |file|
            res = target.head_and_get(file)

            next unless res.code == 200 && !(numbers = version_numbers(res.body)).empty?

            return numbers.reduce([]) do |a, e|
              a << Model::Version.new(
                e[0],
                found_by: format(found_by_msg, e[1]),
                confidence: e[2],
                interesting_entries: [res.effective_url]
              )
            end
          end

          nil
        end

        # @return [ Array<String, String, Integer> ] number, found_by, confidence
        def version_numbers(body)
          numbers = []

          if (number = from_stable_tag(body))
            numbers << [number, 'Stable Tag', 80]
          end

          if (number = from_changelog_section(body))
            numbers << [number, 'ChangeLog Section', 50]
          end

          numbers
        end

        # @param [ String ] body
        #
        # @return [ String, nil ] The version number detected from the stable tag
        def from_stable_tag(body)
          return unless body =~ /\b(?:stable tag|version):\s*(?!trunk)([0-9a-z.-]+)/i

          number = Regexp.last_match[1]

          number if /[0-9]+/.match?(number)
        end

        # @param [ String ] body
        #
        # @return [ String, nil ] The best version number detected from the changelog section
        def from_changelog_section(body)
          extracted_versions = body.scan(/^=+\s+(?:v(?:ersion)?\s*)?([0-9.-]+)[^=]*=+$/i)

          return if extracted_versions.nil? || extracted_versions.empty?

          extracted_versions.flatten!
          # must contain at least one number
          extracted_versions = extracted_versions.grep(/[0-9]+/)

          sorted = extracted_versions.sort do |x, y|
            Gem::Version.new(x) <=> Gem::Version.new(y)
          rescue StandardError
            0
          end

          sorted.last
        end
      end
    end
  end
end


================================================
FILE: app/finders/plugin_version.rb
================================================
# frozen_string_literal: true

require_relative 'plugin_version/readme'

module WPScan
  module Finders
    module PluginVersion
      # Plugin Version Finder
      class Base
        include CMSScanner::Finders::UniqueFinder

        # @param [ Model::Plugin ] plugin
        def initialize(plugin)
          finders << PluginVersion::Readme.new(plugin)

          create_and_load_dynamic_versions_finders(plugin)
        end

        # Create the dynamic version finders related to the plugin and register them
        #
        # @param [ Model::Plugin ] plugin
        def create_and_load_dynamic_versions_finders(plugin)
          DB::DynamicFinders::Plugin.create_versions_finders(plugin.slug).each do |finder|
            finders << finder.new(plugin)
          end
        end
      end
    end
  end
end


================================================
FILE: app/finders/plugins/body_pattern.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Plugins
      # Plugins finder from Dynamic Finder 'BodyPattern'
      class BodyPattern < Finders::DynamicFinder::WpItems::Finder
        DEFAULT_CONFIDENCE = 30

        # @param [ Hash ] opts The options from the #passive, #aggressive methods
        # @param [ Typhoeus::Response ] response
        # @param [ String ] slug
        # @param [ String ] klass
        # @param [ Hash ] config The related dynamic finder config hash
        #
        # @return [ Plugin ] The detected plugin in the response, related to the config
        def process_response(opts, response, slug, klass, config)
          return unless response.body&.match?(config['pattern'])

          Model::Plugin.new(
            slug,
            target,
            opts.merge(found_by: found_by(klass), confidence: config['confidence'] || DEFAULT_CONFIDENCE)
          )
        end
      end
    end
  end
end


================================================
FILE: app/finders/plugins/comment.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Plugins
      # Plugins finder from the Dynamic Finder 'Comment'
      class Comment < Finders::DynamicFinder::WpItems::Finder
        DEFAULT_CONFIDENCE = 30

        # @param [ Hash ] opts The options from the #passive, #aggressive methods
        # @param [ Typhoeus::Response ] response
        # @param [ String ] slug
        # @param [ String ] klass
        # @param [ Hash ] config The related dynamic finder config hash
        #
        # @return [ Plugin ] The detected plugin in the response, related to the config
        def process_response(opts, response, slug, klass, config)
          response.html.xpath(config['xpath'] || '//comment()').each do |node|
            comment = node.text.to_s.strip

            next unless comment&.match?(config['pattern'])

            return Model::Plugin.new(
              slug,
              target,
              opts.merge(found_by: found_by(klass), confidence: config['confidence'] || DEFAULT_CONFIDENCE)
            )
          end
        end
      end
    end
  end
end


================================================
FILE: app/finders/plugins/config_parser.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Plugins
      # Plugins finder from Dynamic Finder 'ConfigParser'
      class ConfigParser < Finders::DynamicFinder::WpItems::Finder
        DEFAULT_CONFIDENCE = 40

        # @param [ Hash ] opts The options from the #passive, #aggressive methods
        # @param [ Typhoeus::Response ] response
        # @param [ String ] slug
        # @param [ String ] klass
        # @param [ Hash ] config The related dynamic finder config hash
        #
        # @return [ Plugin ] The detected plugin in the response, related to the config
        def _process_response(_opts, _response, slug, klass, config)
          #
          # TODO. Currently not implemented, and not even loaded by the Finders, as this
          # finder only has an aggressive method, which has been disabled (globally)
          # when checking for plugins
          #

          Model::Plugin.new(
            slug,
            target,
            opts.merge(found_by: found_by(klass), confidence: config['confidence'] || DEFAULT_CONFIDENCE)
          )
        end
      end
    end
  end
end


================================================
FILE: app/finders/plugins/header_pattern.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Plugins
      # Plugins finder from Dynamic Finder 'HeaderPattern'
      class HeaderPattern < Finders::DynamicFinder::WpItems::Finder
        DEFAULT_CONFIDENCE = 30

        # @param [ Hash ] opts
        #
        # @return [ Array<Plugin> ]
        def passive(opts = {})
          found = []
          headers = target.homepage_res.headers

          return found if headers.empty?

          DB::DynamicFinders::Plugin.passive_header_pattern_finder_configs.each do |slug, configs|
            configs.each do |klass, config|
              next unless headers[config['header']] && headers[config['header']].to_s =~ config['pattern']

              found << Model::Plugin.new(
                slug,
                target,
                opts.merge(found_by: found_by(klass), confidence: config['confidence'] || DEFAULT_CONFIDENCE)
              )
            end
          end

          found
        end

        # @param [ Hash ] opts
        #
        # @return [ nil ]
        def aggressive(_opts = {})
          # None
        end
      end
    end
  end
end


================================================
FILE: app/finders/plugins/javascript_var.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Plugins
      # Plugins finder from the Dynamic Finder 'JavascriptVar'
      class JavascriptVar < Finders::DynamicFinder::WpItems::Finder
        DEFAULT_CONFIDENCE = 60

        # @param [ Hash ] opts The options from the #passive, #aggressive methods
        # @param [ Typhoeus::Response ] response
        # @param [ String ] slug
        # @param [ String ] klass
        # @param [ Hash ] config The related dynamic finder config hash
        #
        # @return [ Plugin ] The detected plugin in the response, related to the config
        def process_response(opts, response, slug, klass, config)
          response.html.xpath(config['xpath'] || '//script[not(@src)]').each do |node|
            next if config['pattern'] && !node.text.match(config['pattern'])

            return Model::Plugin.new(
              slug,
              target,
              opts.merge(found_by: found_by(klass), confidence: config['confidence'] || DEFAULT_CONFIDENCE)
            )
          end
        end
      end
    end
  end
end


================================================
FILE: app/finders/plugins/known_locations.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Plugins
      # Known Locations Plugins Finder
      class KnownLocations < CMSScanner::Finders::Finder
        include CMSScanner::Finders::Finder::Enumerator

        # @return [ Array<Integer> ]
        def valid_response_codes
          @valid_response_codes ||= [200, 401, 403, 500].freeze
        end

        # @param [ Hash ] opts
        # @option opts [ String ] :list
        #
        # @return [ Array<Plugin> ]
        def aggressive(opts = {})
          found = []

          enumerate(target_urls(opts), opts.merge(check_full_response: true)) do |res, slug|
            finding_opts = opts.merge(found_by: found_by,
                                      confidence: 80,
                                      interesting_entries: ["#{res.effective_url}, status: #{res.code}"])

            found << Model::Plugin.new(slug, target, finding_opts)

            raise Error::PluginsThresholdReached if opts[:threshold].positive? && found.size >= opts[:threshold]
          end

          found
        end

        # @param [ Hash ] opts
        # @option opts [ String ] :list
        #
        # @return [ Hash ]
        def target_urls(opts = {})
          slugs       = opts[:list] || DB::Plugins.vulnerable_slugs
          urls        = {}

          slugs.each do |slug|
            urls[target.plugin_url(slug)] = slug
          end

          urls
        end

        def create_progress_bar(opts = {})
          super(opts.merge(title: ' Checking Known Locations -'))
        end
      end
    end
  end
end


================================================
FILE: app/finders/plugins/query_parameter.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Plugins
      # Plugins finder from Dynamic Finder 'QueryParameter'
      class QueryParameter < Finders::DynamicFinder::WpItems::Finder
        DEFAULT_CONFIDENCE = 10

        def passive(_opts = {})
          # Handled by UrlsInHomePage, so no need to check this twice
        end

        # @param [ Hash ] opts The options from the #passive, #aggressive methods
        # @param [ Typhoeus::Response ] response
        # @param [ String ] slug
        # @param [ String ] klass
        # @param [ Hash ] config The related dynamic finder config hash
        #
        # @return [ Plugin ] The detected plugin in the response, related to the config
        def process_response(opts, response, slug, klass, config)
          # TODO: when a real case will be found
        end
      end
    end
  end
end


================================================
FILE: app/finders/plugins/urls_in_404_page.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Plugins
      # URLs In 404 Page Finder
      # Typically, the items detected from URLs like /wp-content/plugins/<slug>/
      class UrlsIn404Page < UrlsInHomepage
        # @return [ Typhoeus::Response ]
        def page_res
          @page_res ||= target.error_404_res
        end
      end
    end
  end
end


================================================
FILE: app/finders/plugins/urls_in_homepage.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Plugins
      # URLs In Homepage Finder
      # Typically, the items detected from URLs like /wp-content/plugins/<slug>/
      class UrlsInHomepage < CMSScanner::Finders::Finder
        include WpItems::UrlsInPage

        # @param [ Hash ] opts
        #
        # @return [ Array<Plugin> ]
        def passive(opts = {})
          found = []

          (items_from_links('plugins') + items_from_codes('plugins')).uniq.sort.each do |slug|
            found << Model::Plugin.new(slug, target, opts.merge(found_by: found_by, confidence: 80))
          end

          found
        end

        # @return [ Typhoeus::Response ]
        def page_res
          @page_res ||= target.homepage_res
        end
      end
    end
  end
end


================================================
FILE: app/finders/plugins/xpath.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Plugins
      # Plugins finder from the Dynamic Finder 'Xpath'
      class Xpath < Finders::DynamicFinder::WpItems::Finder
        DEFAULT_CONFIDENCE = 40

        # @param [ Hash ] opts The options from the #passive, #aggressive methods
        # @param [ Typhoeus::Response ] response
        # @param [ String ] slug
        # @param [ String ] klass
        # @param [ Hash ] config The related dynamic finder config hash
        #
        # @return [ Plugin ] The detected plugin in the response, related to the config
        def process_response(opts, response, slug, klass, config)
          response.html.xpath(config['xpath']).each do |node|
            next if config['pattern'] && !node.text.match(config['pattern'])

            return Model::Plugin.new(
              slug,
              target,
              opts.merge(found_by: found_by(klass), confidence: config['confidence'] || DEFAULT_CONFIDENCE)
            )
          end
        end
      end
    end
  end
end


================================================
FILE: app/finders/plugins.rb
================================================
# frozen_string_literal: true

require_relative 'plugins/urls_in_homepage'
require_relative 'plugins/urls_in_404_page'
require_relative 'plugins/known_locations'
# From the DynamicFinders
require_relative 'plugins/comment'
require_relative 'plugins/xpath'
require_relative 'plugins/header_pattern'
require_relative 'plugins/body_pattern'
require_relative 'plugins/javascript_var'
require_relative 'plugins/query_parameter'
require_relative 'plugins/config_parser' # Not loaded below as not implemented

module WPScan
  module Finders
    module Plugins
      # Plugins Finder
      class Base
        include CMSScanner::Finders::SameTypeFinder

        # @param [ WPScan::Target ] target
        def initialize(target)
          finders <<
            Plugins::UrlsInHomepage.new(target) <<
            Plugins::UrlsIn404Page.new(target) <<
            Plugins::HeaderPattern.new(target) <<
            Plugins::Comment.new(target) <<
            Plugins::Xpath.new(target) <<
            Plugins::BodyPattern.new(target) <<
            Plugins::JavascriptVar.new(target) <<
            Plugins::KnownLocations.new(target)
        end
      end
    end
  end
end


================================================
FILE: app/finders/theme_version/style.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module ThemeVersion
      # Theme Version Finder from the style.css file
      class Style < CMSScanner::Finders::Finder
        # @param [ Hash ] opts
        #
        # @return [ Version ]
        def passive(_opts = {})
          return unless cached_style?

          style_version
        end

        # @param [ Hash ] opts
        #
        # @return [ Version ]
        def aggressive(_opts = {})
          return if cached_style?

          style_version
        end

        # @return [ Boolean ]
        def cached_style?
          Typhoeus::Config.cache.get(browser.forge_request(target.style_url)) ? true : false
        end

        # @return [ Version ]
        def style_version
          return unless Browser.get(target.style_url).body =~ /Version:[\t ]*(?!trunk)([0-9a-z.-]+)/i

          Model::Version.new(
            Regexp.last_match[1],
            found_by: found_by,
            confidence: 80,
            interesting_entries: ["#{target.style_url}, Match: '#{Regexp.last_match}'"]
          )
        end
      end
    end
  end
end


================================================
FILE: app/finders/theme_version/woo_framework_meta_generator.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module ThemeVersion
      # Theme Version Finder from the WooFramework generators
      class WooFrameworkMetaGenerator < CMSScanner::Finders::Finder
        # @param [ Hash ] opts
        #
        # @return [ Version ]
        def passive(_opts = {})
          return unless target.blog.homepage_res.body =~ Finders::MainTheme::WooFrameworkMetaGenerator::PATTERN

          return unless Regexp.last_match[1] == target.slug

          Model::Version.new(Regexp.last_match[2], found_by: found_by, confidence: 80)
        end
      end
    end
  end
end


================================================
FILE: app/finders/theme_version.rb
================================================
# frozen_string_literal: true

require_relative 'theme_version/style'
require_relative 'theme_version/woo_framework_meta_generator'

module WPScan
  module Finders
    module ThemeVersion
      # Theme Version Finder
      class Base
        include CMSScanner::Finders::UniqueFinder

        # @param [ Model::Theme ] theme
        def initialize(theme)
          finders <<
            ThemeVersion::Style.new(theme) <<
            ThemeVersion::WooFrameworkMetaGenerator.new(theme)

          create_and_load_dynamic_versions_finders(theme)
        end

        # Create the dynamic version finders related to the theme and register them
        #
        # @param [ Model::Theme ] theme
        def create_and_load_dynamic_versions_finders(theme)
          DB::DynamicFinders::Theme.create_versions_finders(theme.slug).each do |finder|
            finders << finder.new(theme)
          end
        end
      end
    end
  end
end


================================================
FILE: app/finders/themes/known_locations.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Themes
      # Known Locations Themes Finder
      class KnownLocations < CMSScanner::Finders::Finder
        include CMSScanner::Finders::Finder::Enumerator

        # @return [ Array<Integer> ]
        def valid_response_codes
          @valid_response_codes ||= [200, 401, 403, 500].freeze
        end

        # @param [ Hash ] opts
        # @option opts [ String ] :list
        #
        # @return [ Array<Theme> ]
        def aggressive(opts = {})
          found = []

          enumerate(target_urls(opts), opts.merge(check_full_response: true)) do |res, slug|
            finding_opts = opts.merge(found_by: found_by,
                                      confidence: 80,
                                      interesting_entries: ["#{res.effective_url}, status: #{res.code}"])

            found << Model::Theme.new(slug, target, finding_opts)

            raise Error::ThemesThresholdReached if opts[:threshold].positive? && found.size >= opts[:threshold]
          end

          found
        end

        # @param [ Hash ] opts
        # @option opts [ String ] :list
        #
        # @return [ Hash ]
        def target_urls(opts = {})
          slugs = opts[:list] || DB::Themes.vulnerable_slugs
          urls  = {}

          slugs.each do |slug|
            urls[target.theme_url(slug)] = slug
          end

          urls
        end

        def create_progress_bar(opts = {})
          super(opts.merge(title: ' Checking Known Locations -'))
        end
      end
    end
  end
end


================================================
FILE: app/finders/themes/urls_in_404_page.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Themes
      # URLs In 04 Page Finder
      class UrlsIn404Page < UrlsInHomepage
        # @return [ Typhoeus::Response ]
        def page_res
          @page_res ||= target.error_404_res
        end
      end
    end
  end
end


================================================
FILE: app/finders/themes/urls_in_homepage.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Themes
      # URLs In Homepage Finder
      class UrlsInHomepage < CMSScanner::Finders::Finder
        include WpItems::UrlsInPage

        # @param [ Hash ] opts
        #
        # @return [ Array<Theme> ]
        def passive(opts = {})
          found = []

          (items_from_links('themes') + items_from_codes('themes')).uniq.sort.each do |slug|
            found << Model::Theme.new(slug, target, opts.merge(found_by: found_by, confidence: 80))
          end

          found
        end

        # @return [ Typhoeus::Response ]
        def page_res
          @page_res ||= target.homepage_res
        end
      end
    end
  end
end


================================================
FILE: app/finders/themes.rb
================================================
# frozen_string_literal: true

require_relative 'themes/urls_in_homepage'
require_relative 'themes/urls_in_404_page'
require_relative 'themes/known_locations'

module WPScan
  module Finders
    module Themes
      # Themes Finder
      class Base
        include CMSScanner::Finders::SameTypeFinder

        # @param [ WPScan::Target ] target
        def initialize(target)
          finders <<
            Themes::UrlsInHomepage.new(target) <<
            Themes::UrlsIn404Page.new(target) <<
            Themes::KnownLocations.new(target)
        end
      end
    end
  end
end


================================================
FILE: app/finders/timthumb_version/bad_request.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module TimthumbVersion
      # Timthumb Version Finder from the body of a bad request
      # See https://code.google.com/p/timthumb/source/browse/trunk/timthumb.php#435
      class BadRequest < CMSScanner::Finders::Finder
        # @return [ Version ]
        def aggressive(_opts = {})
          return unless Browser.get(target.url).body =~ /(TimThumb version\s*: ([^<]+))/

          Model::Version.new(
            Regexp.last_match[2],
            found_by: 'Bad Request (Aggressive Detection)',
            confidence: 90,
            interesting_entries: ["#{target.url}, Match: '#{Regexp.last_match[1]}'"]
          )
        end
      end
    end
  end
end


================================================
FILE: app/finders/timthumb_version.rb
================================================
# frozen_string_literal: true

require_relative 'timthumb_version/bad_request'

module WPScan
  module Finders
    module TimthumbVersion
      # Timthumb Version Finder
      class Base
        include CMSScanner::Finders::UniqueFinder

        # @param [ Model::Timthumb ] target
        def initialize(target)
          finders << TimthumbVersion::BadRequest.new(target)
        end
      end
    end
  end
end


================================================
FILE: app/finders/timthumbs/known_locations.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Timthumbs
      # Known Locations Timthumbs Finder
      # Note: A vulnerable version, 2.8.13 can be found here:
      # https://github.com/GabrielGil/TimThumb/blob/980c3d6a823477761570475e8b83d3e9fcd2d7ae/timthumb.php
      class KnownLocations < CMSScanner::Finders::Finder
        include CMSScanner::Finders::Finder::Enumerator

        # @return [ Array<Integer> ]
        def valid_response_codes
          @valid_response_codes ||= [400]
        end

        # @param [ Hash ] opts
        # @option opts [ String ] :list Mandatory
        #
        # @return [ Array<Timthumb> ]
        def aggressive(opts = {})
          found = []

          enumerate(target_urls(opts), opts.merge(check_full_response: 400)) do |res|
            next unless /no image specified/i.match?(res.body)

            found << Model::Timthumb.new(res.request.url, opts.merge(found_by: found_by, confidence: 100))
          end

          found
        end

        # @param [ Hash ] opts
        # @option opts [ String ] :list Mandatory
        #
        # @return [ Hash ]
        def target_urls(opts = {})
          urls = {}

          File.open(opts[:list]).each_with_index do |path, index|
            urls[target.url(path.chomp)] = index
          end

          # Add potential timthumbs located in the main theme
          if target.main_theme
            main_theme_timthumbs_paths.each do |path|
              urls[target.main_theme.url(path)] = 1 # index not important there
            end
          end

          urls
        end

        def main_theme_timthumbs_paths
          %w[timthumb.php lib/timthumb.php inc/timthumb.php includes/timthumb.php
             scripts/timthumb.php tools/timthumb.php functions/timthumb.php]
        end

        def create_progress_bar(opts = {})
          super(opts.merge(title: ' Checking Known Locations -'))
        end
      end
    end
  end
end


================================================
FILE: app/finders/timthumbs.rb
================================================
# frozen_string_literal: true

require_relative 'timthumbs/known_locations'

module WPScan
  module Finders
    module Timthumbs
      # Timthumbs Finder
      class Base
        include CMSScanner::Finders::SameTypeFinder

        # @param [ WPScan::Target ] target
        def initialize(target)
          finders << Timthumbs::KnownLocations.new(target)
        end
      end
    end
  end
end


================================================
FILE: app/finders/users/author_id_brute_forcing.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Users
      # Author Id Brute Forcing
      class AuthorIdBruteForcing < CMSScanner::Finders::Finder
        include CMSScanner::Finders::Finder::Enumerator

        # @return [ Array<Integer> ]
        def valid_response_codes
          @valid_response_codes ||= [200, 301, 302]
        end

        # @param [ Hash ] opts
        # @option opts [ Range ] :range Mandatory
        #
        # @return [ Array<User> ]
        def aggressive(opts = {})
          found = []
          found_by_msg = 'Author Id Brute Forcing - %s (Aggressive Detection)'

          enumerate(target_urls(opts), opts.merge(check_full_response: true)) do |res, id|
            username, found_by, confidence = potential_username(res)

            next unless username

            found << Model::User.new(
              username,
              id: id,
              found_by: format(found_by_msg, found_by),
              confidence: confidence
            )
          end

          found
        end

        # @param [ Hash ] opts
        # @option opts [ Range ] :range
        #
        # @return [ Hash ]
        def target_urls(opts = {})
          urls = {}

          opts[:range].each do |id|
            urls[target.uri.join("?author=#{id}").to_s] = id
          end

          urls
        end

        def create_progress_bar(opts = {})
          super(opts.merge(title: ' Brute Forcing Author IDs -'))
        end

        def full_request_params
          { followlocation: true }
        end

        # @param [ Typhoeus::Response ] res
        #
        # @return [ Array<String, String, Integer>, nil ] username, found_by, confidence
        def potential_username(res)
          username = username_from_author_url(res.effective_url) || username_from_response(res)

          return username, 'Author Pattern', 100 if username

          username = display_name_from_body(res.body)

          return username, 'Display Name', 50 if username
        end

        # @param [ String, Addressable::URI ] uri
        #
        # @return [ String, nil ]
        def username_from_author_url(uri)
          uri = Addressable::URI.parse(uri) unless uri.is_a?(Addressable::URI)

          uri.path[%r{/author/([^/\b]+)/?}i, 1]
        end

        # @param [ Typhoeus::Response ] res
        #
        # @return [ String, nil ] The username found
        def username_from_response(res)
          # Permalink enabled
          target.in_scope_uris(res, '//@href[contains(., "author/")]') do |uri|
            username = username_from_author_url(uri)
            return username if username
          end

          # No permalink, TODO Maybe use xpath to extract the classes ?
          res.body[/<body class="archive author author-([^\s]+)[ "]/i, 1]
        end

        # @param [ String ] body
        #
        # @return [ String, nil ]
        def display_name_from_body(body)
          page = Nokogiri::HTML.parse(body)

          # WP >= 3.0
          page.css('h1.page-title span').each do |node|
            text = node.text.to_s.strip

            return text unless text.empty?
          end

          # WP < 3.0
          page.xpath('//link[@rel="alternate" and @type="application/rss+xml"]').each do |node|
            title = node['title']

            next unless title =~ /Posts by (.*) Feed\z/i

            return Regexp.last_match[1] unless Regexp.last_match[1].empty?
          end
          nil
        end
      end
    end
  end
end


================================================
FILE: app/finders/users/author_posts.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Users
      # Author Posts
      class AuthorPosts < CMSScanner::Finders::Finder
        # @param [ Hash ] opts
        #
        # @return [ Array<User> ]
        def passive(opts = {})
          found_by_msg = 'Author Posts - %s (Passive Detection)'

          usernames(opts).reduce([]) do |a, e|
            a << Model::User.new(
              e[0],
              found_by: format(found_by_msg, e[1]),
              confidence: e[2]
            )
          end
        end

        # @param [ Hash ] opts
        #
        # @return [ Array<Array>> ]
        def usernames(_opts = {})
          found = potential_usernames(target.homepage_res)

          return found unless found.empty?

          target.homepage_res.html.css('header.entry-header a').each do |post_url_node|
            url = post_url_node['href']

            next if url.nil? || url.empty?

            found += potential_usernames(Browser.get(url))
          end

          found.compact.uniq
        end

        # @param [ Typhoeus::Response ] res
        #
        # @return [ Array<Array> ]
        def potential_usernames(res)
          usernames = []

          target.in_scope_uris(res, '//a/@href[contains(., "author")]') do |uri, node|
            if uri.path =~ %r{/author/([^/\b]+)/?\z}i
              usernames << [Regexp.last_match[1], 'Author Pattern', 100]
            elsif /author=[0-9]+/.match?(uri.query)
              usernames << [node.text.to_s.strip, 'Display Name', 30]
            end
          end

          usernames.uniq
        end
      end
    end
  end
end


================================================
FILE: app/finders/users/author_sitemap.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Users
      # Since WP 5.5, /wp-sitemap-users-1.xml is generated and contains
      # the usernames of accounts who made a post
      class AuthorSitemap < CMSScanner::Finders::Finder
        # @param [ Hash ] opts
        #
        # @return [ Array<User> ]
        def aggressive(_opts = {})
          found = []

          Browser.get(sitemap_url).html.xpath('//url/loc').each do |user_tag|
            username = user_tag.text.to_s[%r{/author/([^/]+)/}, 1]

            next unless username && !username.strip.empty?

            found << Model::User.new(username,
                                     found_by: found_by,
                                     confidence: 100,
                                     interesting_entries: [sitemap_url])
          end

          found
        end

        # @return [ String ] The URL of the sitemap
        def sitemap_url
          @sitemap_url ||= target.url('wp-sitemap-users-1.xml')
        end
      end
    end
  end
end


================================================
FILE: app/finders/users/login_error_messages.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Users
      # Login Error Messages
      #
      # Existing username:
      #   WP < 3.1 - Incorrect password.
      #   WP >= 3.1 - The password you entered for the username admin is incorrect.
      # Non existent username: Invalid username.
      #
      class LoginErrorMessages < CMSScanner::Finders::Finder
        # @param [ Hash ] opts
        # @option opts [ String ] :list
        #
        # @return [ Array<User> ]
        def aggressive(opts = {})
          found = []

          usernames(opts).each do |username|
            res   = target.do_login(username, SecureRandom.hex[0, 8])
            error = res.html.css('div#login_error').text.strip

            return found if error.empty? # Protection plugin / error disabled

            next unless /The password you entered for the username|Incorrect Password/i.match?(error)

            found << Model::User.new(username, found_by: found_by, confidence: 100)
          end

          found
        end

        # @return [ Array<String> ] List of usernames to check
        def usernames(opts = {})
          # usernames from the potential Users found
          unames = opts[:found].map(&:username)

          Array(opts[:list]).each { |uname| unames << uname.chomp }

          unames.uniq
        end
      end
    end
  end
end


================================================
FILE: app/finders/users/oembed_api.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Users
      # Since WP 4.4, the oembed API can disclose a user
      # https://github.com/wpscanteam/wpscan/issues/1049
      class OembedApi < CMSScanner::Finders::Finder
        # @param [ Hash ] opts
        #
        # @return [ Array<User> ]
        def passive(_opts = {})
          # TODO: get the api_url from the Homepage and query it if present,
          # then discard the aggressive check if same/similar URL
        end

        # @param [ Hash ] opts
        #
        # @return [ Array<User> ]
        def aggressive(_opts = {})
          oembed_data = JSON.parse(Browser.get(api_url).body)
          details     = user_details_from_oembed_data(oembed_data)

          return [] unless details

          [Model::User.new(details[0],
                           found_by: format(found_by_msg, details[1]),
                           confidence: details[2],
                           interesting_entries: [api_url])]
        rescue JSON::ParserError
          []
        end

        def user_details_from_oembed_data(oembed_data)
          return unless oembed_data

          oembed_data = oembed_data.first if oembed_data.is_a?(Array)

          if oembed_data['author_url'] =~ %r{/author/([^/]+)/?\z}
            details = [Regexp.last_match[1], 'Author URL', 90]
          elsif oembed_data['author_name'] && !oembed_data['author_name'].empty?
            details = [oembed_data['author_name'], 'Author Name', 70]
          end

          details
        end

        def found_by_msg
          'Oembed API - %s (Aggressive Detection)'
        end

        # @return [ String ] The URL of the API listing the Users
        def api_url
          @api_url ||= target.url("wp-json/oembed/1.0/embed?url=#{target.url}&format=json")
        end
      end
    end
  end
end


================================================
FILE: app/finders/users/rss_generator.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Users
      # Users disclosed from the dc:creator field in the RSS
      # The names disclosed are display names, however depending on the configuration of the blog,
      # they can be the same than usernames
      class RSSGenerator < Finders::WpVersion::RSSGenerator
        def process_urls(urls, _opts = {})
          found = []

          urls.each do |url|
            res = Browser.get_and_follow_location(url)

            next unless res.code == 200 && res.body =~ /<dc:creator>/i

            potential_usernames = []

            begin
              res.xml.xpath('//item/dc:creator').each do |node|
                username = node.text.to_s

                # Ignoring potential username longer than 60 characters and containing accents
                # as they are considered invalid. See https://github.com/wpscanteam/wpscan/issues/1215
                next if username.strip.empty? || username.length > 60 || username =~ /[^\x00-\x7F]/

                potential_usernames << username
              end
            rescue Nokogiri::XML::XPath::SyntaxError
              next
            end

            potential_usernames.uniq.each do |username|
              found << Model::User.new(username, found_by: found_by, confidence: 50)
            end

            break
          end

          found
        end
      end
    end
  end
end


================================================
FILE: app/finders/users/wp_json_api.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Users
      # WP JSON API
      #
      # Since 4.7 - Need more investigation as it seems WP 4.7.1 reduces the exposure, see https://github.com/wpscanteam/wpscan/issues/1038)
      # For the pagination, see https://github.com/wpscanteam/wpscan/issues/1285
      #
      class WpJsonApi < CMSScanner::Finders::Finder
        MAX_PER_PAGE = 100 # See https://developer.wordpress.org/rest-api/using-the-rest-api/pagination/

        # @param [ Hash ] opts
        #
        # @return [ Array<User> ]
        def aggressive(_opts = {})
          found        = []
          current_page = 0

          loop do
            current_page += 1

            res = Browser.get(api_url, params: { per_page: MAX_PER_PAGE, page: current_page })

            total_pages ||= res.headers['X-WP-TotalPages'].to_i

            users_in_page = users_from_response(res)
            found        += users_in_page

            break if current_page >= total_pages || users_in_page.empty?
          end

          found
        rescue JSON::ParserError, TypeError
          found
        end

        # @param [ Typhoeus::Response ] response
        #
        # @return [ Array<User> ] The users from the response
        def users_from_response(response)
          found = []

          JSON.parse(response.body)&.each do |user|
            found << Model::User.new(user['slug'],
                                     id: user['id'],
                                     found_by: found_by,
                                     confidence: 100,
                                     interesting_entries: [response.effective_url])
          end

          found
        end

        # @return [ String ] The URL of the API listing the Users
        def api_url
          return @api_url if @api_url

          target.in_scope_uris(target.homepage_res, "//link[@rel='https://api.w.org/']/@href").each do |uri|
            return @api_url = uri.join('wp/v2/users/').to_s if uri.path.include?('wp-json')
          end

          @api_url = target.url('wp-json/wp/v2/users/')
        end
      end
    end
  end
end


================================================
FILE: app/finders/users/yoast_seo_author_sitemap.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module Users
      # The YOAST SEO plugin has an author-sitemap.xml which can leak usernames
      # See https://github.com/wpscanteam/wpscan/issues/1228
      class YoastSeoAuthorSitemap < AuthorSitemap
        # @return [ String ] The URL of the author-sitemap
        def sitemap_url
          @sitemap_url ||= target.url('author-sitemap.xml')
        end
      end
    end
  end
end


================================================
FILE: app/finders/users.rb
================================================
# frozen_string_literal: true

require_relative 'users/author_posts'
require_relative 'users/wp_json_api'
require_relative 'users/oembed_api'
require_relative 'users/rss_generator'
require_relative 'users/author_id_brute_forcing'
require_relative 'users/login_error_messages'
require_relative 'users/author_sitemap'
require_relative 'users/yoast_seo_author_sitemap'

module WPScan
  module Finders
    # Specific Finders container to filter the usernames found
    # and remove the ones matching ParsedCli.exclude_username if supplied
    class UsersFinders < SameTypeFinders
      def filter_findings
        findings.delete_if { |user| ParsedCli.exclude_usernames.match?(user.username) } if ParsedCli.exclude_usernames

        findings
      end
    end

    module Users
      # Users Finder
      class Base
        include CMSScanner::Finders::SameTypeFinder

        # @param [ WPScan::Target ] target
        def initialize(target)
          finders <<
            Users::AuthorPosts.new(target) <<
            Users::WpJsonApi.new(target) <<
            Users::OembedApi.new(target) <<
            Users::RSSGenerator.new(target) <<
            Users::AuthorSitemap.new(target) <<
            Users::YoastSeoAuthorSitemap.new(target) <<
            Users::AuthorIdBruteForcing.new(target) <<
            Users::LoginErrorMessages.new(target)
        end

        def finders
          @finders ||= Finders::UsersFinders.new
        end
      end
    end
  end
end


================================================
FILE: app/finders/wp_items/urls_in_page.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module WpItems
      # URLs In Homepage Module to use in plugins & themes finders
      module UrlsInPage
        # @param [ String ] type plugins / themes
        # @param [ Boolean ] uniq Wether or not to apply the #uniq on the results
        #
        # @return [ Array<String> ] The plugins/themes detected in the href, src attributes of the page
        def items_from_links(type, uniq: true)
          found = []
          xpath = format(
            '(//@href|//@src|//@data-src)[contains(., "%s")]',
            type == 'plugins' ? target.plugins_dir : target.content_dir
          )

          target.in_scope_uris(page_res, xpath) do |uri|
            next unless uri.to_s =~ item_attribute_pattern(type)

            slug = Regexp.last_match[1]&.strip

            found << slug unless slug&.empty?
          end

          uniq ? found.uniq.sort : found.sort
        end

        # @param [ String ] type plugins / themes
        # @param [ Boolean ] uniq Wether or not to apply the #uniq on the results
        #
        # @return [Array<String> ] The plugins/themes detected in the javascript/style of the homepage
        def items_from_codes(type, uniq: true)
          found = []

          page_res.html.xpath('//script[not(@src)]|//style[not(@src)]').each do |tag|
            code = tag.text.to_s
            next if code.empty?

            code.scan(item_code_pattern(type)).flatten.uniq.each { |slug| found << slug }
          end

          uniq ? found.uniq.sort : found.sort
        end

        # @param [ String ] type
        #
        # @return [ Regexp ]
        def item_attribute_pattern(type)
          @item_attribute_pattern ||= %r{#{item_url_pattern(type)}([^/]+)/}i
        end

        # @param [ String ] type
        #
        # @return [ Regexp ]
        def item_code_pattern(type)
          @item_code_pattern ||= %r{["'( ]#{item_url_pattern(type)}([^\\/)"']+)}i
        end

        # @param [ String ] type
        #
        # @return [ Regexp ]
        def item_url_pattern(type)
          item_dir = type == 'plugins' ? target.plugins_dir : target.content_dir
          item_url = type == 'plugins' ? target.plugins_url : target.content_url

          url = /#{item_url.gsub(/\A(?:https?)/i, 'https?').gsub('/', '\\\\\?\/')}/i
          item_dir = %r{(?:#{url}|\\?/#{item_dir.gsub('/', '\\\\\?\/')}\\?/)}i

          type == 'plugins' ? item_dir : %r{#{item_dir}#{type}\\?/}i
        end
      end
    end
  end
end


================================================
FILE: app/finders/wp_items.rb
================================================
# frozen_string_literal: true

require_relative 'wp_items/urls_in_page'


================================================
FILE: app/finders/wp_version/atom_generator.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module WpVersion
      # Atom Generator Version Finder
      class AtomGenerator < CMSScanner::Finders::Finder
        include Finder::WpVersion::SmartURLChecker

        def process_urls(urls, _opts = {})
          found = Findings.new

          urls.each do |url|
            res = Browser.get_and_follow_location(url)

            res.html.css('generator').each do |node|
              next unless node.text.to_s.strip.casecmp('wordpress').zero?

              found << create_version(
                node['version'],
                found_by: found_by,
                entries: ["#{res.effective_url}, #{node.to_s.strip}"]
              )
            end
          end

          found
        end

        def passive_urls_xpath
          '//link[@rel="alternate" and @type="application/atom+xml"]/@href'
        end

        def aggressive_urls(_opts = {})
          %w[feed/atom/ ?feed=atom].reduce([]) do |a, uri|
            a << target.url(uri)
          end
        end
      end
    end
  end
end


================================================
FILE: app/finders/wp_version/rdf_generator.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module WpVersion
      # RDF Generator Version Finder
      class RDFGenerator < CMSScanner::Finders::Finder
        include Finder::WpVersion::SmartURLChecker

        def process_urls(urls, _opts = {})
          found = Findings.new

          urls.each do |url|
            res = Browser.get_and_follow_location(url)

            res.html.xpath('//generatoragent').each do |node|
              next unless node['rdf:resource'] =~ %r{\Ahttps?://wordpress\.(?:[a-z.]+)/\?v=(.*)\z}i

              found << create_version(
                Regexp.last_match[1],
                found_by: found_by,
                entries: ["#{res.effective_url}, #{node.to_s.strip}"]
              )
            end
          end

          found
        end

        def passive_urls_xpath
          '//a[contains(@href, "/rdf")]/@href'
        end

        def aggressive_urls(_opts = {})
          [target.url('feed/rdf/')]
        end
      end
    end
  end
end


================================================
FILE: app/finders/wp_version/readme.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module WpVersion
      # Readme Version Finder
      class Readme < CMSScanner::Finders::Finder
        # @return [ WpVersion ]
        def aggressive(_opts = {})
          readme_url = target.url('readme.html') # Maybe move this into the Target ?

          node = Browser.get(readme_url).html.css('h1#logo').last

          return unless node&.text.to_s.strip =~ /\AVersion (.*)\z/i

          number = Regexp.last_match(1)

          return unless Model::WpVersion.valid?(number)

          Model::WpVersion.new(
            number,
            found_by: 'Readme (Aggressive Detection)',
            # Since WP 4.7, the Readme only contains the major version (ie 4.7, 4.8 etc)
            confidence: number >= '4.7' ? 10 : 90,
            interesting_entries: ["#{readme_url}, Match: '#{node.text.to_s.strip}'"]
          )
        end
      end
    end
  end
end


================================================
FILE: app/finders/wp_version/rss_generator.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module WpVersion
      # RSS Generator Version Finder
      class RSSGenerator < CMSScanner::Finders::Finder
        include Finder::WpVersion::SmartURLChecker

        def process_urls(urls, _opts = {})
          found = Findings.new

          urls.each do |url|
            res = Browser.get_and_follow_location(url)

            res.html.xpath('//comment()[contains(., "wordpress")] | //generator').each do |node|
              node_text = node.text.to_s.strip

              next unless node_text =~ %r{\Ahttps?://wordpress\.(?:[a-z]+)/\?v=(.*)\z}i ||
                          node_text =~ %r{\Agenerator="wordpress/([^"]+)"\z}i

              found << create_version(
                Regexp.last_match[1],
                found_by: found_by,
                entries: ["#{res.effective_url}, #{node.to_s.strip}"]
              )
            end
          end

          found
        end

        def passive_urls_xpath
          '//link[@rel="alternate" and @type="application/rss+xml"]/@href'
        end

        def aggressive_urls(_opts = {})
          %w[feed/ comments/feed/ feed/rss/ feed/rss2/].reduce([]) do |a, uri|
            a << target.url(uri)
          end
        end
      end
    end
  end
end


================================================
FILE: app/finders/wp_version/unique_fingerprinting.rb
================================================
# frozen_string_literal: true

module WPScan
  module Finders
    module WpVersion
      # Unique Fingerprinting Version Finder
      class UniqueFingerprinting < CMSScanner::Finders::Finder
        include CMSScanner::Finders::Finder::Fingerprinter

        # @return [ WpVersion ]
        def aggressive(opts = {})
          fingerprint(DB::Fingerprints.wp_unique_fingerprints, opts) do |version_number, url, md5sum|
            hydra.abort
            progress_bar.finish

            return Model::WpVersion.new(
              version_number,
              found_by: 'Unique Fingerprinting (Aggressive Detection)',
              confidence: 100,
              interesting_entries: ["#{url} md5sum is #{md5sum}"]
            )
          end
          nil
        end

        def create_progress_bar(opts = {})
          super(opts.merge(title: 'Fingerprinting the version -'))
        end
      end
    end
  end
end


================================================
FILE: app/finders/wp_version.rb
================================================
# frozen_string_literal: true

require_relative 'wp_version/rss_generator'
require_relative 'wp_version/atom_generator'
require_relative 'wp_version/rdf_generator'
require_relative 'wp_version/readme'
require_relative 'wp_version/unique_fingerprinting'

module WPScan
  module Finders
    # Specific Finders container to filter the version detected
    # and remove the one with low confidence to avoid false
    # positive when there is not enough information to accurately
    # determine it.
    class WpVersionFinders < UniqueFinders
      def filter_findings
        best_finding = super

        best_finding && best_finding.confidence >= 40 ? best_finding : false
      end
    end

    module WpVersion
      # Wp Version Finder
      class Base
        include CMSScanner::Finders::UniqueFinder

        # @param [ WPScan::Target ] target
        def initialize(target)
          (%w[RSSGenerator AtomGenerator RDFGenerator] +
           DB::DynamicFinders::Wordpress.versions_finders_configs.keys +
           %w[Readme UniqueFingerprinting]
          ).each do |finder_name|
            finders << WpVersion.const_get(finder_name.to_sym).new(target)
          end
        end

        def finders
          @finders ||= Finders::WpVersionFinders.new
        end
      end
    end
  end
end


================================================
FILE: app/finders.rb
================================================
# frozen_string_literal: true

require_relative 'finders/interesting_findings'
require_relative 'finders/wp_items'
require_relative 'finders/wp_version'
require_relative 'finders/main_theme'
require_relative 'finders/timthumb_version'
require_relative 'finders/timthumbs'
require_relative 'finders/config_backups'
require_relative 'finders/db_exports'
require_relative 'finders/medias'
require_relative 'finders/users'
require_relative 'finders/plugins'
require_relative 'finders/plugin_version'
require_relative 'finders/theme_version'
require_relative 'finders/themes'
require_relative 'finders/passwords'


================================================
FILE: app/models/config_backup.rb
================================================
# frozen_string_literal: true

module WPScan
  module Model
    # Config Backup
    class ConfigBackup < InterestingFinding
    end
  end
end


================================================
FILE: app/models/db_export.rb
================================================
# frozen_string_literal: true

module WPScan
  module Model
    # DB Export
    class DbExport < InterestingFinding
    end
  end
end


================================================
FILE: app/models/interesting_finding.rb
================================================
# frozen_string_literal: true

module WPScan
  module Model
    # Custom class to include the WPScan::References module
    class InterestingFinding < CMSScanner::Model::InterestingFinding
      include References
    end

    class BackupDB < InterestingFinding
      def to_s
        @to_s ||= "A backup directory has been found: #{url}"
      end

      # @return [ Hash ]
      def references
        @references ||= { url: ['https://github.com/wpscanteam/wpscan/issues/422'] }
      end
    end

    class DebugLog < InterestingFinding
      def to_s
        @to_s ||= "Debug Log found: #{url}"
      end

      # @ return [ Hash ]
      def references
        @references ||= { url: ['https://codex.wordpress.org/Debugging_in_WordPress'] }
      end
    end

    class DuplicatorInstallerLog < InterestingFinding
      # @return [ Hash ]
      def references
        @references ||= { url: ['https://www.exploit-db.com/ghdb/3981/'] }
      end
    end

    class EmergencyPwdResetScript < InterestingFinding
      def references
        @references ||= {
          url: ['https://codex.wordpress.org/Resetting_Your_Password#Using_the_Emergency_Password_Reset_Script']
        }
      end
    end

    class FullPathDisclosure < InterestingFinding
      def to_s
        @to_s ||= "Full Path Disclosure found: #{url}"
      end

      # @return [ Hash ]
      def references
        @references ||= { url: ['https://www.owasp.org/index.php/Full_Path_Disclosure'] }
      end
    end

    class MuPlugins < InterestingFinding
      # @return [ String ]
      def to_s
        @to_s ||= "This site has 'Must Use Plugins': #{url}"
      end

      # @return [ Hash ]
      def references
        @references ||= { url: ['http://codex.wordpress.org/Must_Use_Plugins'] }
      end
    end

    class Multisite < InterestingFinding
      # @return [ String ]
      def to_s
        @to_s ||= 'This site seems to be a multisite'
      end

      # @return [ Hash ]
      def references
        @references ||= { url: ['http://codex.wordpress.org/Glossary#Multisite'] }
      end
    end

    class Readme < InterestingFinding
      def to_s
        @to_s ||= "WordPress readme found: #{url}"
      end
    end

    class Registration < InterestingFinding
      # @return [ String ]
      def to_s
        @to_s ||= "Registration is enabled: #{url}"
      end
    end

    class TmmDbMigrate < InterestingFinding
      def to_s
        @to_s ||= "ThemeMakers migration file found: #{url}"
      end

      # @return [ Hash ]
      def references
        @references ||= { packetstorm: [131_957] }
      end
    end

    class UploadDirectoryListing < InterestingFinding
      # @return [ String ]
      def to_s
        @to_s ||= "Upload directory has listing enabled: #{url}"
      end
    end

    class UploadSQLDump < InterestingFinding
      def to_s
        @to_s ||= "SQL Dump found: #{url}"
      end
    end

    class WPCron < InterestingFinding
      # @return [ String ]
      def to_s
        @to_s ||= "The external WP-Cron seems to be enabled: #{url}"
      end

      # @return [ Hash ]
      def references
        @references ||= {
          url: [
            'https://www.iplocation.net/defend-wordpress-from-ddos',
            'https://github.com/wpscanteam/wpscan/issues/1299'
          ]
        }
      end
    end

    class PHPDisabled < InterestingFinding
      # @return [ String ]
      def to_s
        @to_s ||= 'PHP seems to be disabled'
      end

      # @return [ Hash ]
      def references
        @references ||= {
          url: ['https://github.com/wpscanteam/wpscan/issues/1593']
        }
      end
    end
  end
end


================================================
FILE: app/models/media.rb
================================================
# frozen_string_literal: true

module WPScan
  module Model
    # Media
    class Media < InterestingFinding
    end
  end
end


================================================
FILE: app/models/plugin.rb
================================================
# frozen_string_literal: true

module WPScan
  module Model
    # WordPress Plugin
    class Plugin < WpItem
      # See WpItem
      def initialize(slug, blog, opts = {})
        super(slug, blog, opts)

        # To be used by #head_and_get
        # If custom wp-content, it will be replaced by blog#url
        @path_from_blog = "wp-content/plugins/#{slug}/"

        @uri = Addressable::URI.parse(blog.url(path_from_blog))
      end

      # Retrieve the metadata from the vuln API if available (and a valid token is given),
      # or the local metadata db otherwise
      # @return [ Hash ]
      def metadata
        @metadata ||= db_data.empty? ? DB::Plugin.metadata_at(slug) : db_data
      end

      # @return [ Hash ]
      def db_data
        @db_data ||= DB::VulnApi.plugin_data(slug)
      end

      # @param [ Hash ] opts
      #
      # @return [ Model::Version, false ]
      def version(opts = {})
        @version = Finders::PluginVersion::Base.find(self, version_detection_opts.merge(opts)) if @version.nil?

        @version
      end

      # @return [ Array<String> ]
      def potential_readme_filenames
        @potential_readme_filenames ||= Array((DB::DynamicFinders::Plugin.df_data.dig(slug, 'Readme', 'path') || super))
      end
    end
  end
end


================================================
FILE: app/models/theme.rb
================================================
# frozen_string_literal: true

module WPScan
  module Model
    # WordPress Theme
    class Theme < WpItem
      attr_reader :style_url, :style_name, :style_uri, :author, :author_uri, :template, :description,
                  :license, :license_uri, :tags, :text_domain

      # See WpItem
      def initialize(slug, blog, opts = {})
        super(slug, blog, opts)

        # To be used by #head_and_get
        # If custom wp-content, it will be replaced by blog#url
        @path_from_blog = "wp-content/themes/#{slug}/"

        @uri       = Addressable::URI.parse(blog.url(path_from_blog))
        @style_url = opts[:style_url] || url('style.css')

        parse_style
      end

      # Retrieve the metadata from the vuln API if available (and a valid token is given),
      # or the local metadata db otherwise
      # @return [ JSON ]
      def metadata
        @metadata ||= db_data.empty? ? DB::Theme.metadata_at(slug) : db_data
      end

      # @return [ Hash ]
      def db_data
        @db_data ||= DB::VulnApi.theme_data(slug)
      end

      # @param [ Hash ] opts
      #
      # @return [ Model::Version, false ]
      def version(opts = {})
        @version = Finders::ThemeVersion::Base.find(self, version_detection_opts.merge(opts)) if @version.nil?

        @version
      end

      # @return [ Theme ]
      def parent_theme
        return unless template
        return unless style_body =~ /^@import\surl\(["']?([^"')]+)["']?\);\s*$/i

        opts = detection_opts.merge(
          style_url: url(Regexp.last_match[1]),
          found_by: 'Parent Themes (Passive Detection)',
          confidence: 100
        ).merge(version_detection: version_detection_opts)

        self.class.new(template, blog, opts)
      end

      # @param [ Integer ] depth
      #
      # @retun [ Array<Theme> ]
      def parent_themes(depth = 3)
        theme  = self
        found  = []

        (1..depth).each do |_|
          parent = theme.parent_theme

          break unless parent

          found << parent
          theme = parent
        end

        found
      end

      def style_body
        @style_body ||= Browser.get(style_url).body
      end

      def parse_style
        {
          style_name: 'Theme Name',
          style_uri: 'Theme URI',
          author: 'Author',
          author_uri: 'Author URI',
          template: 'Template',
          description: 'Description',
          license: 'License',
          license_uri: 'License URI',
          tags: 'Tags',
          text_domain: 'Text Domain'
        }.each do |attribute, tag|
          instance_variable_set(:"@#{attribute}", parse_style_tag(style_body, tag)&.force_encoding('UTF-8'))
        end
      end

      # @param [ String ] bofy
      # @param [ String ] tag
      #
      # @return [ String ]
      def parse_style_tag(body, tag)
        value = body[/\b#{Regexp.escape(tag)}:[\t ]*([^\r\n*]+)/, 1]

        value && !value.strip.empty? ? value.strip : nil
      end

      def ==(other)
        super(other) && style_url == other.style_url
      end
    end
  end
end


================================================
FILE: app/models/timthumb.rb
================================================
# frozen_string_literal: true

module WPScan
  module Model
    # Timthumb
    class Timthumb < InterestingFinding
      include Vulnerable

      attr_reader :version_detection_opts

      # @param [ String ] url
      # @param [ Hash ] opts
      # @option opts [ Symbol ] :mode The mode to use to detect the version
      def initialize(url, opts = {})
        super(url, opts)

        @version_detection_opts = opts[:version_detection] || {}
      end

      # @param [ Hash ] opts
      #
      # @return [ Model::Version, false ]
      def version(opts = {})
        @version = Finders::TimthumbVersion::Base.find(self, version_detection_opts.merge(opts)) if @version.nil?

        @version
      end

      # @return [ Array<Vulnerability> ]
      def vulnerabilities
        vulns = []

        vulns << rce_webshot_vuln if version == false || (version > '1.35' && version < '2.8.14' && webshot_enabled?)
        vulns << rce_132_vuln if version == false || version < '1.33'

        vulns
      end

      # @return [ Vulnerability ] The RCE in the <= 1.32
      def rce_132_vuln
        Vulnerability.new(
          'Timthumb <= 1.32 Remote Code Execution',
          references: { exploitdb: ['17602'] },
          type: 'RCE',
          fixed_in: '1.33'
        )
      end

      # @return [ Vulnerability ] The RCE due to the WebShot in the > 1.35 (or >= 2.0) and <= 2.8.13
      def rce_webshot_vuln
        Vulnerability.new(
          'Timthumb <= 2.8.13 WebShot Remote Code Execution',
          references: {
            url: ['http://seclists.org/fulldisclosure/2014/Jun/117', 'https://github.com/wpscanteam/wpscan/issues/519'],
            cve: '2014-4663'
          },
          type: 'RCE',
          fixed_in: '2.8.14'
        )
      end

      # @return [ Boolean ]
      def webshot_enabled?
        res = Browser.get(url, params: { webshot: 1, src: "http://#{default_allowed_domains.sample}" })

        !/WEBSHOT_ENABLED == true/.match?(res.body)
      end

      # @return [ Array<String> ] The default allowed domains (between the 2.0 and 2.8.13)
      def default_allowed_domains
        %w[flickr.com picasa.com img.youtube.com upload.wikimedia.org]
      end
    end
  end
end


================================================
FILE: app/models/wp_item.rb
================================================
# frozen_string_literal: true

module WPScan
  module Model
    # WpItem (superclass of Plugin & Theme)
    class WpItem
      include Vulnerable
      include Finders::Finding
      include CMSScanner::Target::Platform::PHP
      include CMSScanner::Target::Server::Generic

      # Most common readme filenames, based on checking all public plugins and themes.
      READMES = %w[readme.txt README.txt README.md readme.md Readme.txt].freeze

      attr_reader :uri, :slug, :detection_opts, :version_detection_opts, :blog, :path_from_blog, :db_data

      delegate :homepage_res, :error_404_res, :xpath_pattern_from_page, :in_scope_uris, :head_or_get_params, to: :blog

      # @param [ String ] slug The plugin/theme slug
      # @param [ Target ] blog The targeted blog
      # @param [ Hash ] opts
      # @option opts [ Symbol ] :mode The detection mode to use
      # @option opts [ Hash ]   :version_detection The options to use when looking for the version
      # @option opts [ String ] :url The URL of the item
      def initialize(slug, blog, opts = {})
        @slug  = Addressable::URI.unencode(slug)
        @blog  = blog
        @uri   = Addressable::URI.parse(opts[:url]) if opts[:url]

        @detection_opts         = { mode: opts[:mode] }
        @version_detection_opts = opts[:version_detection] || {}

        parse_finding_options(opts)
      end

      # @return [ Array<Vulnerabily> ]
      def vulnerabilities
        return @vulnerabilities if @vulnerabilities

        @vulnerabilities = []

        Array(db_data['vulnerabilities']).each do |json_vuln|
          vulnerability = Vulnerability.load_from_json(json_vuln)
          @vulnerabilities << vulnerability if vulnerable_to?(vulnerability)
        end

        @vulnerabilities
      end

      # Checks if the wp_item is vulnerable to a specific vulnerability
      #
      # @param [ Vulnerability ] vuln Vulnerability to check the item against
      #
      # @return [ Boolean ]
      def vulnerable_to?(vuln)
        return false if version && vuln&.introduced_in && version < vuln.introduced_in

        return true unless version && vuln&.fixed_in && !vuln.fixed_in.empty?

        version < vuln.fixed_in
      end

      # @return [ String ]
      def latest_version
        @latest_version ||= metadata['latest_version'] ? Model::Version.new(metadata['latest_version']) : nil
      end

      # Not used anywhere ATM
      # @return [ Boolean ]
      def popular?
        @popular ||= metadata['popular'] ? true : false
      end

      # @return [ String ]
      def last_updated
        @last_updated ||= metadata['last_updated']
      end

      # @return [ Boolean ]
      def outdated?
        @outdated ||= if version && latest_version
                        version < latest_version
                      else
                        false
                      end
      end

      # @param [ String ] path Optional path to merge with the uri
      #
      # @return [ String ]
      def url(path = nil)
        return unless @uri
        return @uri.to_s unless path

        @uri.join(Addressable::URI.encode(path)).to_s
      end

      # @return [ Boolean ]
      def ==(other)
        self.class == other.class && slug == other.slug
      end

      def to_s
        slug
      end

      # @return [ Symbol ] The Class symbol associated to the item
      def classify
        @classify ||= classify_slug(slug)
      end

      # @return [ String, False ] The readme url if found, false otherwise
      def readme_url
        return if detection_opts[:mode] == :passive

        return @readme_url unless @readme_url.nil?

        potential_readme_filenames.each do |path|
          t_url = url(path)

          return @readme_url = t_url if Browser.forge_request(t_url, blog.head_or_get_params).run.code == 200
        end

        @readme_url = false
      end

      def potential_readme_filenames
        @potential_readme_filenames ||= READMES
      end

      # @param [ String ] path
      # @param [ Hash ] params The request params
      #
      # @return [ Boolean ]
      def directory_listing?(path = nil, params = {})
        return if detection_opts[:mode] == :passive

        super(path, params)
      end

      # @param [ String ] path
      # @param [ Hash ] params The request params
      #
      # @return [ Boolean ]
      def error_log?(path = 'error_log', params = {})
        return if detection_opts[:mode] == :passive

        super(path, params)
      end

      # See CMSScanner::Target#head_and_get
      #
      # This is used by the error_log? above in the super()
      # to have the correct path (ie readme.txt checked from the plugin/theme location
      # and not from the blog root). Could also be used in finders
      #
      # @param [ String ] path
      # @param [ Array<String> ] codes
      # @param [ Hash ] params The requests params
      # @option params [ Hash ] :head Request params for the HEAD
      # @option params [ hash ] :get Request params for the GET
      #
      # @return [ Typhoeus::Response ]
      def head_and_get(path, codes = [200], params = {})
        final_path = @path_from_blog.dup # @path_from_blog is set in the plugin/theme
        final_path << path unless path.nil?

        blog.head_and_get(final_path, codes, params)
      end
    end
  end
end


================================================
FILE: app/models/wp_version.rb
================================================
# frozen_string_literal: true

module WPScan
  module Model
    # WP Version
    class WpVersion < CMSScanner::Model::Version
      include Vulnerable

      def initialize(number, opts = {})
        raise Error::InvalidWordPressVersion unless WpVersion.valid?(number.to_s)

        super(number, opts)
      end

      # @param [ String ] number
      #
      # @return [ Boolean ] true if the number is a valid WP version, false otherwise
      def self.valid?(number)
        all.include?(number)
      end

      # @return [ Array<String> ] All the version numbers
      def self.all
        return @all_numbers if @all_numbers

        @all_numbers = []

        DB::Version.metadata.each_key do |ver|
          @all_numbers << ver
        end

        DB::Fingerprints.wp_fingerprints.each_value do |fp|
          @all_numbers << fp.values
        end

        # @all_numbers.flatten.uniq.sort! {} doesn't produce the same result here.
        @all_numbers.flatten!
        @all_numbers.uniq!
        @all_numbers.sort! { |a, b| Gem::Version.new(b) <=> Gem::Version.new(a) }
      end

      # Retrieve the metadata from the vuln API if available (and a valid token is given),
      # or the local metadata db otherwise
      # @return [ Hash ]
      def metadata
        @metadata ||= db_data.empty? ? DB::Version.metadata_at(number) : db_data
      end

      # @return [ Hash ]
      def db_data
        @db_data ||= DB::VulnApi.wordpress_data(number)
      end

      # @return [ Array<Vulnerability> ]
      def vulnerabilities
        return @vulnerabilities if @vulnerabilities

        @vulnerabilities = []

        Array(db_data['vulnerabilities']).each do |json_vuln|
          @vulnerabilities << Vulnerability.load_from_json(json_vuln)
        end

        @vulnerabilities
      end

      # @return [ String ]
      def release_date
        @release_date ||= metadata['release_date'] || 'Unknown'
      end

      # @return [ String ]
      def status
        @status ||= metadata['status'] || 'Unknown'
      end
    end
  end
end


================================================
FILE: app/models/xml_rpc.rb
================================================
# frozen_string_literal: true

module WPScan
  module Model
    # Override of the CMSScanner::XMLRPC to include the references
    class XMLRPC < CMSScanner::Model::XMLRPC
      include References # To be able to use the :wpvulndb reference if needed

      # @return [ Hash ]
      def references
        @references ||= {
          url: ['http://codex.wordpress.org/XML-RPC_Pingback_API'],
          metasploit: [
            'auxiliary/scanner/http/wordpress_ghost_scanner',
            'auxiliary/dos/http/wordpress_xmlrpc_dos',
            'auxiliary/scanner/http/wordpress_xmlrpc_login',
            'auxiliary/scanner/http/wordpress_pingback_access'
          ]
        }
      end
    end
  end
end


================================================
FILE: app/models.rb
================================================
# frozen_string_literal: true

module WPScan
  module Model
    include CMSScanner::Model
  end
end

require_relative 'models/interesting_finding'
require_relative 'models/wp_version'
require_relative 'models/xml_rpc'
require_relative 'models/wp_item'
require_relative 'models/timthumb'
require_relative 'models/media'
require_relative 'models/plugin'
require_relative 'models/theme'
require_relative 'models/config_backup'
require_relative 'models/db_export'


================================================
FILE: app/views/cli/core/banner.erb
================================================
_______________________________________________________________
         __          _______   _____
         \ \        / /  __ \ / ____|
          \ \  /\  / /| |__) | (___   ___  __ _ _ __ ®
           \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
            \  /\  /  | |     ____) | (__| (_| | | | |
             \/  \/   |_|    |_____/ \___|\__,_|_| |_|

         WordPress Security Scanner by the WPScan Team
                         Version <%= WPScan::VERSION %>
<%= ' ' * ((63 - WPScan::DB::Sponsor.text.length)/2) + WPScan::DB::Sponsor.text %>
       @_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________



================================================
FILE: app/views/cli/core/db_update_finished.erb
================================================
<% if @verbose && !@updated.empty? -%>
<%= notice_icon %> File(s) Updated:
<% @updated.each do |file| -%>
 |  <%= file %>
<% end -%>
<% end -%>
<%= notice_icon %> Update completed.



================================================
FILE: app/views/cli/core/db_update_started.erb
================================================
<%= notice_icon %> Updating the Database ...

================================================
FILE: app/views/cli/core/not_fully_configured.erb
================================================
<%= critical_icon %> The Website is not fully configured and currently in install mode. Create a new admin user at <%= @url %>


================================================
FILE: app/views/cli/core/version.erb
================================================
Current Version: <%= WPScan::VERSION %>
<% if @last_update -%>
Last DB Update: <%= @last_update.strftime('%Y-%m-%d') %>
<% end -%>



================================================
FILE: app/views/cli/enumeration/config_backups.erb
================================================

<% if @config_backups.empty? -%>
<%= notice_icon %> No Config Backups Found.
<% else -%>
<%= notice_icon %> Config Backup(s) Identified:
<% @config_backups.each do |config_backup| -%>

<%= critical_icon %> <%= config_backup %>
<%= render('@finding', item: config_backup) -%>
<% end -%>
<% end %>


================================================
FILE: app/views/cli/enumeration/db_exports.erb
================================================

<% if @db_exports.empty? -%>
<%= notice_icon %> No DB Exports Found.
<% else -%>
<%= notice_icon %> Db Export(s) Identified:
<% @db_exports.each do |db_export| -%>

<%= critical_icon %> <%= db_export %>
<%= render('@finding', item: db_export) -%>
<% end -%>
<% end %>


================================================
FILE: app/views/cli/enumeration/medias.erb
================================================

<% if @medias.empty? -%>
<%= notice_icon %> No Medias Found.
<% else -%>
<%= notice_icon %> Medias(s) Identified:
<% @medias.each do |media| -%>

<%= info_icon %> <%= media %>
<%= render('@finding', item: media) -%>
<% end -%>
<% end %>


================================================
FILE: app/views/cli/enumeration/plugins.erb
================================================

<% if @plugins.empty? -%>
<%= notice_icon %> No plugins Found.
<% else -%>
<%= notice_icon %> Plugin(s) Identified:
<% @plugins.each do |plugin| -%>

<%= info_icon %> <%= plugin %>
<%= render('@wp_item', wp_item: plugin) -%>
 |
<%= render('@finding', item: plugin) -%>
 |
<% if plugin.version -%>
 | Version: <%= plugin.version %> (<%= plugin.version.confidence %>% confidence)
<%= render('@finding', item: plugin.version) -%>
<% else -%>
 | The version could not be determined.
<% end -%>
<% end -%>
<% end %>


================================================
FILE: app/views/cli/enumeration/themes.erb
================================================

<% if @themes.empty? -%>
<%= notice_icon %> No themes Found.
<% else -%>
<%= notice_icon %> Theme(s) Identified:
<% @themes.each do |theme| -%>

<%= info_icon %> <%= theme %>
<%= render('@theme', theme: theme, show_parents: false) -%>
<% end -%>
<% end %>


================================================
FILE: app/views/cli/enumeration/timthumbs.erb
================================================

<% if @timthumbs.empty? -%>
<%= notice_icon %> No Timthumbs Found.
<% else -%>
<%= notice_icon %> Timthumb(s) Identified:
<% @timthumbs.each do |timthumb| -%>

<%= info_icon %> <%= timthumb %>
<%= render('@finding', item: timthumb) -%>
 |
<% if timthumb.version -%>
 | Version: <%= timthumb.version %>
<%= render('@finding', item: timthumb.version) -%>
<% else -%>
 | The version could not be determined.
<% end -%>
<% end -%>
<% end %>


================================================
FILE: app/views/cli/enumeration/users.erb
================================================

<% if @users.empty? -%>
<%= notice_icon %> No Users Found.
<% else -%>
<%= notice_icon %> User(s) Identified:
<% @users.each do |user| -%>

<%= info_icon %> <%= user %>
<%= render('@finding', item: user) -%>
<% end -%>
<% end %>


================================================
FILE: app/views/cli/finding.erb
================================================
 | Found By: <%= @item.found_by %>
<% @item.interesting_entries.each do |entry| -%>
 |  - <%= entry %>
<% end -%>
<% unless (confirmed = @item.confirmed_by).empty? -%>
<% if confirmed.size == 1 -%>
 | Confirmed By: <%= confirmed.first.found_by %>
<% confirmed.first.interesting_entries.each do |entry| -%>
 |  - <%= entry %>
<% end -%>
<% else -%>
 | Confirmed By:
<% confirmed.each do |c| -%>
 |  <%= c.found_by %>
<% c.interesting_entries.each do |entry| -%>
 |   - <%= entry %>
<% end -%>
<% end -%>
<% end -%>
<% end -%>
<% if @item.respond_to?(:vulnerabilities) && !(vulns = @item.vulnerabilities).empty? -%>
<% vulns_size = vulns.size -%>
 |
 | <%= critical_icon %> <%= vulns_size %> <%= vulns_size == 1 ? 'vulnerability' : 'vulnerabilities' %> identified:
 |
<% vulns.each_with_index do |vulnerability, index| -%>
<%= render('@vulnerability', v: vulnerability) -%>
<% if index != vulns_size -1 -%>
 |
<% end -%>
<% end -%>
<% end -%>

================================================
FILE: app/views/cli/info.erb
================================================
<%= info_icon %> <%= @msg %>


================================================
FILE: app/views/cli/main_theme/theme.erb
================================================
<% if @theme -%>
<%= info_icon %> WordPress theme in use: <%= @theme %>
<%= render('@theme', theme: @theme, show_parents: true) -%>
<% else -%>
<%= notice_icon %> The main theme could not be detected.
<% end %>


================================================
FILE: app/views/cli/notice.erb
================================================
<%= notice_icon %> <%= @msg %>


================================================
FILE: app/views/cli/password_attack/users.erb
================================================

<% if @users.empty? -%>
<%= notice_icon %> No Valid Passwords Found.
<% else -%>
<%= critical_icon %> Valid Combinations Found:
<% @users.each do |user| -%>
 | Username: <%= user.username %>, Password: <%= user.password %>
<% end -%>
<% end %>


================================================
FILE: app/views/cli/theme.erb
================================================
<%= render('@wp_item', wp_item: @theme) -%>
 | Style URL: <%= @theme.style_url %>
<% if @theme.style_name -%>
 | Style Name: <%= @theme.style_name %>
<% end -%>
<% if @theme.style_uri -%>
 | Style URI: <%= @theme.style_uri %>
<% end -%>
<% if @theme.description -%>
 | Description: <%= @verbose ? @theme.description : @theme.description[0, 100] + '...' %>
<% end -%>
<% if @theme.author -%>
 | Author: <%= @theme.author %>
<% end -%>
<% if @theme.author_uri -%>
 | Author URI: <%= @theme.author_uri %>
<% end -%>
<% if @theme.template && @verbose -%>
 | Template: <%= @theme.template %>
<% end -%>
<% if @theme.license && @verbose -%>
 | License: <%= @theme.license %>
<% end -%>
<% if @theme.license_uri && @verbose -%>
 | License URI: <%= @theme.license_uri %>
<% end -%>
<% if @theme.tags && @verbose -%>
 | Tags: <%= @theme.tags %>
<% end -%>
<% if @theme.text_domain && @verbose -%>
 | Text Domain: <%= @theme.text_domain %>
<% end -%>
 |
<%= render('@finding', item: @theme) -%>
 |
<% if @theme.version -%>
 | Version: <%= @theme.version %> (<%= @theme.version.confidence %>% confidence)
<%= render('@finding', item: @theme.version) -%>
<% else -%>
 | The version could not be determined.
<% end -%>
<% if @show_parents && !(parents = @theme.parent_themes).empty? -%>
 |
 | Parent Theme(s):
<% parents.each do |parent| -%>
 |
<%= render('@theme', theme: parent, show_parents: false) -%>
<% end -%>
<% end -%>

================================================
FILE: app/views/cli/usage.erb
================================================
<%= @msg %>

Please use --help/-h for the list of available options.


================================================
FILE: app/views/cli/vuln_api/status.erb
================================================
<% unless @status.empty? -%>
<% if @status['http_error'] -%>
<%= critical_icon %> WPScan DB API, <%= @status['http_error'].to_s %>
<% else -%>
<%= info_icon %> WPScan DB API OK
 | Plan: <%= @status['plan'] %>
 | Requests Done (during the scan): <%= @api_requests %>
 | Requests Remaining: <%= @status['requests_remaining'] %>
<% end -%>
<% else -%>
<%= warning_icon %> No WPScan API Token given, as a result vulnerability data has not been output.
<%= warning_icon %> You can get a free API token with 25 daily requests by registering at https://wpscan.com/register
<% end -%>


================================================
FILE: app/views/cli/vulnerability.erb
================================================
 | <%= critical_icon %> Title: <%= @v.title %>
<% if @v.cvss -%>
 |     CVSS: <%= @v.cvss[:score] %> (<%= @v.cvss[:vector] %>)
<% end -%>
<% if @v.fixed_in -%>
 |     Fixed in: <%= @v.fixed_in %>
<% end -%>
<% unless (references = @v.references_urls).empty? -%>
<% if references.size == 1 -%>
 |     Reference: <%= references.first %>
<% else -%>
 |     References:
<% references.each do |ref| -%>
 |      - <%= ref %>
<% end -%>
<% end -%>
<% end -%>

================================================
FILE: app/views/cli/wp_item.erb
================================================
 | Location: <%= @wp_item.url %>
<% if @wp_item.latest_version && !@wp_item.outdated? -%>
 | Latest Version: <%= @wp_item.latest_version %><% if @wp_item.version %> (up to date)<% end %>
<% end -%>
<% if @wp_item.last_updated -%>
 | Last Updated: <%= @wp_item.last_updated %>
<% end -%>
<% if @wp_item.readme_url -%>
 | Readme: <%= @wp_item.readme_url %>
<% end -%>
<% if @wp_item.latest_version && @wp_item.outdated? -%>
 | <%= warning_icon %> The version is out of date, the latest version is <%= @wp_item.latest_version %>
<% end -%>
<% if @wp_item.directory_listing? -%>
 | <%= critical_icon %> Directory listing is enabled
<% end -%>
<% if @wp_item.error_log? -%>
 | <%= critical_icon %> An error log file has been found: <%= @wp_item.url('error_log') %>
<% end -%>

================================================
FILE: app/views/cli/wp_version/version.erb
================================================
<% if @version -%>
<%= info_icon %> WordPress version <%= @version.number %> identified (<%= @version.status.tr('-', '_').humanize %>, released on <%= @version.release_date %>).
<%= render('@finding', item: @version) -%>
<% else -%>
<%= notice_icon %> The WordPress version could not be detected.
<% end %>


================================================
FILE: app/views/json/core/banner.erb
================================================
"banner": {
"description": "WordPress Security Scanner by the WPScan Team",
  "version": <%= WPScan::VERSION.to_json %>,
  "authors": [
    "@_WPScan_",
    "@ethicalhack3r",
    "@erwan_lr",
    "@firefart"
  ],
  "sponsor": <%= WPScan::DB::Sponsor.text.to_json %>
},


================================================
FILE: app/views/json/core/db_update_finished.erb
================================================
"db_files_updated": <%= @updated.to_json %>,
"db_update_finished": true,

================================================
FILE: app/views/json/core/db_update_started.erb
================================================
"db_update_started": true,

================================================
FILE: app/views/json/core/not_fully_configured.erb
================================================
"not_fully_configured": "The Website is not fully configured and currently in install mode. Create a new admin user at <%= @url %>",

================================================
FILE: app/views/json/core/version.erb
================================================
"version": <%= WPScan::VERSION.to_json %>,
"last_db_update": <%= @last_update.to_json %>,

================================================
FILE: app/views/json/enumeration/config_backups.erb
================================================
"config_backups": {
<% unless @config_backups.empty? -%>
<% last_index = @config_backups.size - 1 -%>
<% @config_backups.each_with_index do |config_backup, index| -%>
  <%= config_backup.url.to_json %>: {
    <%= render('@finding', item: config_backup) -%>
  }<% unless index == last_index -%>,<% end -%>
<% end -%>
<% end -%>
},

================================================
FILE: app/views/json/enumeration/db_exports.erb
================================================
"db_exports": {
<% unless @db_exports.empty? -%>
<% last_index = @db_exports.size - 1 -%>
<% @db_exports.each_with_index do |db_export, index| -%>
  <%= db_export.url.to_json %>: {
    <%= render('@finding', item: db_export) -%>
  }<% unless index == last_index -%>,<% end -%>
<% end -%>
<% end -%>
},

================================================
FILE: app/views/json/enumeration/medias.erb
================================================
"medias": {
<% unless @medias.empty? -%>
<% last_index = @medias.size - 1 -%>
<% @medias.each_with_index do |media, index| -%>
  <%= media.url.to_json %>: {
    <%= render('@finding', item: media) -%>
  }<% unless index == last_index -%>,<% end -%>
<% end -%>
<% end -%>
},

================================================
FILE: app/views/json/enumeration/plugins.erb
================================================
"plugins": {
<% unless @plugins.empty? -%>
<% last_index = @plugins.size - 1 -%>
<% @plugins.each_with_index do |plugin, index| -%>
  <%= plugin.slug.to_json %>: {
    <%= render('@wp_item', wp_item: plugin) %>,
    <%= render('@finding', item: plugin) -%>,
    <% if plugin.version -%>
    "version": {
      "number": <%= plugin.version.number.to_json %>,
      "confidence": <%= plugin.version.confidence.to_json %>,
      <%= render('@finding', item: plugin.version) -%>
    }
    <% else -%>
    "version": null
    <% end -%>
  }<% unless index == last_index -%>,<% end -%>
<% end -%>
<% end -%>
},

================================================
FILE: app/views/json/enumeration/themes.erb
================================================
"themes": {
<% unless @themes.empty? -%>
<% last_index = @themes.size - 1 -%>
<% @themes.each_with_index do |theme, index| -%>
  <%= theme.slug.to_json %>: {
    <%= render('@theme', theme: theme) -%>
  }<% unless index == last_index -%>,<% end -%>
<% end -%>
<% end -%>
},

================================================
FILE: app/views/json/enumeration/timthumbs.erb
================================================
"timthumbs": {
<% unless @timthumbs.empty? -%>
<% last_index = @timthumbs.size - 1 -%>
<% @timthumbs.each_with_index do |timthumb, index| -%>
  <%= timthumb.url.to_json %>: {
    <%= render('@finding', item: timthumb) -%>,
    <% if timthumb.version -%>
    "version": {
      "number": <%= timthumb.version.number.to_json %>,
      "confidence": <%= timthumb.version.confidence.to_json %>,
      <%= render('@finding', item: timthumb.version) -%>
    }
    <% else -%>
    "version": null
    <% end -%>
  }<% unless index == last_index -%>,<% end -%>
<% end -%>
<% end -%>
},

================================================
FILE: app/views/json/enumeration/users.erb
================================================
"users": {
<% unless @users.empty? -%>
<% last_index = @users.size - 1 -%>
<% @users.each_with_index do |user, index| -%>
  <%= user.username.to_json %>: {
    "id": <%= user.id.to_json %>,
    <%= render('@finding', item: user) -%>
  }<% unless index == last_index -%>,<% end -%>
<% end -%>
<% end -%>
},

================================================
FILE: app/views/json/finding.erb
================================================
"found_by": <%= @item.found_by.to_json %>,
"confidence": <%= @item.confidence.to_json %>,
"interesting_entries": <%= @item.interesting_entries.to_json %>,
"confirmed_by": {
<% unless (confirmed = @item.confirmed_by).empty? -%>
<% last_index = @item.confirmed_by.size - 1 -%>
<% @item.confirmed_by.each_with_index do |c, index| -%>
  <%= c.found_by.to_json %>: {
    "confidence": <%= c.confidence.to_json %>,
    "interesting_entries": <%= c.interesting_entries.to_json %>
  }<% unless index == last_index %>,<% end -%>
<% end -%>
<% end -%>
}
<% if @item.respond_to?(:vulnerabilities) -%>
,"vulnerabilities": [
<% unless (vulns = @item.vulnerabilities).empty? -%>
  <% last_index = vulns.size - 1 -%>
  <% vulns.each_with_index do |v, index| -%>
  {
    "title": <%= v.title.to_json %>,
    <% if v.cvss -%>
    "cvss": <%= v.cvss.to_json %>,
    <% end -%>
    "fixed_in": <%= v.fixed_in.to_json %>,
    "references": <%= v.references.to_json %>
  }<% unless index == last_index -%>,<% end -%>
  <% end -%>
<% end -%>
]
<% end -%>

================================================
FILE: app/views/json/main_theme/theme.erb
================================================
<% if @theme -%>
"main_theme": {
  <%= render('@theme', theme: @theme, show_parents: true) %>
},
<% else -%>
"main_theme": null,
<% end -%>

================================================
FILE: app/views/json/password_attack/users.erb
================================================
"password_attack": {
<% unless @users.empty? -%>
<% last_index = @users.size - 1 -%>
<% @users.each_with_index do |user, index| -%>
  <%= user.username.to_json %>: {
    "password": <%= user.password.to_json %>
  }<% unless index == last_index -%>,<% end -%>
<% end -%>
<% end -%>
},

================================================
FILE: app/views/json/theme.erb
================================================
<%= render('@wp_item', wp_item: @theme) %>,
"style_url": <%= @theme.style_url.to_json %>,
"style_name": <%= @theme.style_name.to_json %>,
"style_uri": <%= @theme.style_uri.to_json %>,
"description": <%= @theme.description.to_json %>,
"author": <%= @theme.author.to_json %>,
"author_uri": <%= @theme.author_uri.to_json %>,
"template": <%= @theme.template.to_json %>,
"license": <%= @theme.license.to_json %>,
"license_uri": <%= @theme.license_uri.to_json %>,
"tags": <%= @theme.tags.to_json %>,
"text_domain": <%= @theme.text_domain.to_json %>,
<%= render('@finding', item: @theme) -%>,
<% if @theme.version -%>
"version": {
  "number": <%= @theme.version.number.to_json %>,
  "confidence": <%= @theme.version.confidence.to_json %>,
  <%= render('@finding', item: @theme.version) -%>
},
<% else -%>
"version": null,
<% end -%>
"parents": [
<% if @show_parents && !(parents = @theme.parent_themes).empty? -%>
<% last_index = parents.size - 1 -%>
  <% parents.each_with_index do |parent, index| -%>
  {
    <%= render('@theme', theme: parent, show_parents: false) -%>
  }<% unless index == last_index -%>,<% end -%>
  <% end -%>
<% end -%>
]

================================================
FILE: app/views/json/vuln_api/status.erb
================================================
"vuln_api": {
<% unless @status.empty? -%>
<% if @status['http_error'] -%>
"http_error": <%= @status['http_error'].to_s.to_json %>
<% else -%>
"plan": <%= @status['plan'].to_json %>,
"requests_done_during_scan": <%= @api_requests.to_json %>,
"requests_remaining": <%= @status['requests_remaining'].to_json %>
<% end -%>
<% else -%>
"error": "No WPScan API Token given, as a result vulnerability data has not been output.\nYou can get a free API token with 25 daily requests by registering at https://wpscan.com/register"
<% end -%>
},

================================================
FILE: app/views/json/wp_item.erb
================================================
"slug": <%= @wp_item.slug.to_json %>,
"location": <%= @wp_item.url.to_json %>,
"latest_version": <%= @wp_item.latest_version ? @wp_item.latest_version.number.to_json : nil.to_json %>,
"last_updated": <%= @wp_item.last_updated.to_json %>,
"outdated": <%= @wp_item.outdated?.to_json %>,
"readme_url": <%= @wp_item.readme_url.to_json %>,
"directory_listing": <%= @wp_item.directory_listing?.to_json %>,
"error_log_url": <% if @wp_item.error_log? %><%= @wp_item.url('error_log').to_json %><% else %>null<% end %>

================================================
FILE: app/views/json/wp_version/version.erb
================================================
<% if @version -%>
"version": {
  "number": <%= @version.number.to_json %>,
  "release_date": <%= @version.release_date.to_json %>,
  "status": <%= @version.status.to_json %>,
  <%= render('@finding', item: @version) -%>
},
<% else -%>
"version": null,
<% end -%>

================================================
FILE: bin/wpscan
================================================
#!/usr/bin/env ruby
# frozen_string_literal: true

require 'wpscan'

WPScan::Scan.new do |s|
  s.controllers <<
    WPScan::Controller::VulnApi.new <<
    WPScan::Controller::CustomDirectories.new <<
    WPScan::Controller::InterestingFindings.new <<
    WPScan::Controller::WpVersion.new <<
    WPScan::Controller::MainTheme.new <<
    WPScan::Controller::Enumeration.new <<
    WPScan::Controller::PasswordAttack.new <<
    WPScan::Controller::Aliases.new

  s.run
end


================================================
FILE: bin/wpscan-docker
================================================
#!/bin/bash

SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
  DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
  SOURCE="$(readlink "$SOURCE")"
  [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"

cd $DIR/../
docker build -q -t wpscan:git .
docker run -it --rm wpscan:git "$@"



================================================
FILE: bin/wpscan-docker-dev
================================================
#!/bin/bash

SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
  DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
  SOURCE="$(readlink "$SOURCE")"
  [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"

cd $DIR/../
if [[ -n "$WPSCAN_BUILD" ]]; then
  docker build -q -t wpscan:git .
fi
docker run -it --rm -v $DIR/../:/wpscan wpscan:git "$@"



================================================
FILE: bin/wpscan-memprof
================================================
#!/usr/bin/env ruby
# frozen_string_literal: true

require 'memory_profiler' # https://github.com/SamSaffron/memory_profiler
require 'wpscan'

report = MemoryProfiler.report(top: 15) do
  WPScan::Scan.new do |s|
    s.controllers <<
      WPScan::Controller::VulnApi.new <<
      WPScan::Controller::CustomDirectories.new <<
      WPScan::Controller::InterestingFindings.new <<
      WPScan::Controller::WpVersion.new <<
      WPScan::Controller::MainTheme.new <<
      WPScan::Controller::Enumeration.new <<
      WPScan::Controller::PasswordAttack.new <<
      WPScan::Controller::Aliases.new

    s.run
  end
end

report.pretty_print(scale_bytes: true, to_file: 'memprof.report')


================================================
FILE: bin/wpscan-stackprof
================================================
#!/usr/bin/env ruby
# frozen_string_literal: true

require 'stackprof' # https://github.com/tmm1/stackprof
require 'wpscan'

# The object mode produces a segfault currently: https://github.com/jfelchner/ruby-progressbar/issues/153
# StackProf.run(mode: :object, out: '/tmp/stackprof-object.dump') do
# StackProf.run(mode: :wall, out: '/tmp/stackprof-wall.dump') do
StackProf.run(mode: :cpu, out: '/tmp/stackprof-cpu.dump', interval: 500) do
  # Couldn't we just load the ./wpscan here ?
  # require_relative 'wpscan' doesn't work
  WPScan::Scan.new do |s|
    s.controllers <<
      WPScan::Controller::VulnApi.new <<
      WPScan::Controller::CustomDirectories.new <<
      WPScan::Controller::InterestingFindings.new <<
      WPScan::Controller::WpVersion.new <<
      WPScan::Controller::MainTheme.new <<
      WPScan::Controller::Enumeration.new <<
      WPScan::Controller::PasswordAttack.new <<
      WPScan::Controller::Aliases.new

    s.run
  end
end


================================================
FILE: lib/wpscan/browser.rb
================================================
# frozen_string_literal: true

module WPScan
  # Custom Browser
  class Browser < CMSScanner::Browser
    extend Actions

    # @return [ String ]
    def default_user_agent
      @default_user_agent ||= "WPScan v#{VERSION} (https://wpscan.com/wordpress-security-scanner)"
    end
  end
end


================================================
FILE: lib/wpscan/controller.rb
================================================
# frozen_string_literal: true

module WPScan
  # Needed to load at least the Core controller
  # Otherwise, the following error will be raised:
  # `initialize': uninitialized constant WPScan::Controller::Core (NameError)
  module Controller
    include CMSScanner::Controller
  end
end


================================================
FILE: lib/wpscan/controllers.rb
================================================
# frozen_string_literal: true

module WPScan
  # Override to set the OptParser's summary width to 45 (instead of 40 from the CMSScanner)
  class Controllers < CMSScanner::Controllers
    def initialize(option_parser = OptParseValidator::OptParser.new(nil, 45))
      super(option_parser)
    end
  end
end


================================================
FILE: lib/wpscan/db/dynamic_finders/base.rb
================================================
# frozen_string_literal: true

module WPScan
  module DB
    module DynamicFinders
      class Base
        # @return [ String ]
        def self.df_file
          @df_file ||= DB_DIR.join('dynamic_finders.yml').to_s
        end

        # @return [ Hash ]
        def self.all_df_data
          @all_df_data ||= if Gem::Version.new(Psych::VERSION) >= Gem::Version.new('4.0.0')
                             YAML.safe_load(File.read(df_file), permitted_classes: [Regexp])
                           else
                             YAML.safe_load(File.read(df_file), [Regexp])
                           end
        end

        # @return [ Array<Symbol> ]
        def self.allowed_classes
          # The Readme is not put in there as it's not a Real DF, but rather using the DF system
          # to get the list of potential filenames for a given slug
          @allowed_classes ||= %i[Comment Xpath HeaderPattern BodyPattern JavascriptVar QueryParameter ConfigParser]
        end

        # @param [ Symbol ] sym
        def self.method_missing(sym)
          super unless sym =~ /\A(passive|aggressive)_(.*)_finder_configs\z/i

          finder_class = Regexp.last_match[2].camelize.to_sym

          raise "#{finder_class} is not allowed as a Dynamic Finder" unless allowed_classes.include?(finder_class)

          finder_configs(
            finder_class,
            aggressive: Regexp.last_match[1] == 'aggressive'
          )
        end

        def self.respond_to_missing?(sym, *_args)
          sym =~ /\A(passive|aggressive)_(.*)_finder_configs\z/i
        end
      end
    end
  end
end


================================================
FILE: lib/wpscan/db/dynamic_finders/plugin.rb
================================================
# frozen_string_literal: true

module WPScan
  module DB
    module DynamicFinders
      class Plugin < Base
        # @return [ Hash ]
        def self.df_data
          @df_data ||= all_df_data['plugins'] || {}
        end

        def self.version_finder_module
          Finders::PluginVersion
        end

        # @param [ Symbol ] finder_class
        # @param [ Boolean ] aggressive
        # @return [ Hash ]
        def self.finder_configs(finder_class, aggressive: false)
          configs = {}

          return configs unless allowed_classes.include?(finder_class)

          df_data.each do |slug, finders|
            # Quite sure better can be done with some kind of logic statement in the select
            fs = if aggressive
                   finders.reject { |_f, c| c['path'].nil? }
                 else
                   finders.select { |_f, c| c['path'].nil? }
                 end

            fs.each do |finder_name, config|
              klass = config['class'] || finder_name

              next unless klass.to_sym == finder_class

              configs[slug] ||= {}
              configs[slug][finder_name] = config
            end
          end

          configs
        end

        # @return [ Hash ]
        def self.versions_finders_configs
          return @versions_finders_configs if @versions_finders_configs

          @versions_finders_configs = {}

          df_data.each do |slug, finders|
            finders.each do |finder_name, config|
              next unless config.key?('version')

              @versions_finders_configs[slug] ||= {}
              @versions_finders_configs[slug][finder_name] = config
            end
          end

          @versions_finders_configs
        end

        # @param [ String ] slug
        # @return [ Constant ]
        def self.maybe_create_module(slug)
          # What about slugs such as js_composer which will be done as JsComposer, just like js-composer
          constant_name = classify_slug(slug)

          unless version_finder_module.constants.include?(constant_name)
            version_finder_module.const_set(constant_name, Module.new)
          end

          version_finder_module.const_get(constant_name)
        end

        # Create the dynamic finders related to the given slug, and return the created classes
        #
        # @param [ String ] slug
        #
        # @return [ Array<Class> ] The created classes
        def self.create_versions_finders(slug)
          created = []
          mod     = maybe_create_module(slug)

          versions_finders_configs[slug]&.each do |finder_class, config|
            klass = config['class'] || finder_class

            # Instead of raising exceptions, skip unallowed/already defined finders
            # So that, when new DF configs are put in the .yml
            # users with old version of WPScan will still be able to scan blogs
            # when updating the DB but not the tool

            next unless allowed_classes.include?(klass.to_sym)

            created << if mod.constants.include?(finder_class.to_sym)
                         mod.const_get(finder_class.to_sym)
                       else
                         version_finder_super_class(klass).create_child_class(mod, finder_class.to_sym, config)
                       end
          end

          created
        end

        # The idea here would be to check if the class exist in
        # the Finders::DynamicFinders::Plugins/Themes::klass or WpItemVersion::klass
        # and return the related constant when one has been found.
        #
        # So far, the Finders::DynamicFinders::WPItemVersion is enought
        # as nothing else is used
        #
        # @param [ String, Symbol ] klass
        # @return [ Constant ]
        def self.version_finder_super_class(klass)
          "WPScan::Finders::DynamicFinder::WpItemVersion::#{klass}".constantize
        end
      end
    end
  end
end


================================================
FILE: lib/wpscan/db/dynamic_finders/theme.rb
================================================
# frozen_string_literal: true

module WPScan
  module DB
    module DynamicFinders
      class Theme < Plugin
        # @return [ Hash ]
        def self.df_data
          @df_data ||= all_df_data['themes'] || {}
        end

        def self.version_finder_module
          Finders::ThemeVersion
        end
      end
    end
  end
end


================================================
FILE: lib/wpscan/db/dynamic_finders/wordpress.rb
================================================
# frozen_string_literal: true

module WPScan
  module DB
    module DynamicFinders
      class Wordpress < Base
        # @return [ Hash ]
        def self.df_data
          @df_data ||= all_df_data['wordpress'] || {}
        end

        # @return [ Constant ]
        def self.version_finder_module
          Finders::WpVersion
        end

        # @return [ Array<Symbol> ]
        def self.allowed_classes
          @allowed_classes ||= %i[
            Comment Xpath HeaderPattern BodyPattern JavascriptVar QueryParameter WpItemQueryParameter
          ]
        end

        # @param [ Symbol ] finder_class
        # @param [ Boolean ] aggressive
        # @return [ Hash ]
        def self.finder_configs(finder_class, aggressive: false)
          configs = {}

          return configs unless allowed_classes.include?(finder_class)

          finders = if aggressive
                      df_data.reject { |_f, c| c['path'].nil? }
                    else
                      df_data.select { |_f, c| c['path'].nil? }
                    end

          finders.each do |finder_name, config|
            klass = config['class'] || finder_name

            next unless klass.to_sym == finder_class

            configs[finder_name] = config
          end

          configs
        end

        # @return [ Hash ]
        def self.versions_finders_configs
          @versions_finders_configs ||= df_data.select { |_finder_name, config| config.key?('version') }
        end

        def self.create_versions_finders
          versions_finders_configs.each do |finder_class, config|
            klass = config['class'] || finder_class

            # Instead of raising exceptions, skip unallowed/already defined finders
            # So that, when new DF configs are put in the .yml
            # users with old version of WPScan will still be able to scan blogs
            # when updating the DB but not the tool
            next if version_finder_module.constants.include?(finder_class.to_sym) ||
                    !allowed_classes.include?(klass.to_sym)

            version_finder_super_class(klass).create_child_class(version_finder_module, finder_class.to_sym, config)
          end
        end

        # @param [ String, Symbol ] klass
        # @return [ Constant ]
        def self.version_finder_super_class(klass)
          "WPScan::Finders::DynamicFinder::WpVe
Download .txt
Showing preview only (696K chars total). Download the full file or copy to clipboard to get everything.
gitextract_9u6uo61d/

├── .codeclimate.yml
├── .dockerignore
├── .github/
│   ├── CONTRIBUTING.md
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   ├── feature_request.md
│   │   └── other-issue.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── dependabot.yml
│   └── workflows/
│       ├── build.yml
│       ├── docker.yml
│       └── gempush.yml
├── .gitignore
├── .rspec
├── .rubocop.yml
├── .ruby-gemset
├── .ruby-version
├── .simplecov
├── Dockerfile
├── Gemfile
├── LICENSE
├── README.md
├── Rakefile
├── app/
│   ├── app.rb
│   ├── controllers/
│   │   ├── aliases.rb
│   │   ├── core.rb
│   │   ├── custom_directories.rb
│   │   ├── enumeration/
│   │   │   ├── cli_options.rb
│   │   │   └── enum_methods.rb
│   │   ├── enumeration.rb
│   │   ├── main_theme.rb
│   │   ├── password_attack.rb
│   │   ├── vuln_api.rb
│   │   └── wp_version.rb
│   ├── controllers.rb
│   ├── finders/
│   │   ├── config_backups/
│   │   │   └── known_filenames.rb
│   │   ├── config_backups.rb
│   │   ├── db_exports/
│   │   │   └── known_locations.rb
│   │   ├── db_exports.rb
│   │   ├── interesting_findings/
│   │   │   ├── backup_db.rb
│   │   │   ├── debug_log.rb
│   │   │   ├── duplicator_installer_log.rb
│   │   │   ├── emergency_pwd_reset_script.rb
│   │   │   ├── full_path_disclosure.rb
│   │   │   ├── mu_plugins.rb
│   │   │   ├── multisite.rb
│   │   │   ├── php_disabled.rb
│   │   │   ├── readme.rb
│   │   │   ├── registration.rb
│   │   │   ├── tmm_db_migrate.rb
│   │   │   ├── upload_directory_listing.rb
│   │   │   ├── upload_sql_dump.rb
│   │   │   └── wp_cron.rb
│   │   ├── interesting_findings.rb
│   │   ├── main_theme/
│   │   │   ├── css_style_in_404_page.rb
│   │   │   ├── css_style_in_homepage.rb
│   │   │   ├── urls_in_404_page.rb
│   │   │   ├── urls_in_homepage.rb
│   │   │   └── woo_framework_meta_generator.rb
│   │   ├── main_theme.rb
│   │   ├── medias/
│   │   │   └── attachment_brute_forcing.rb
│   │   ├── medias.rb
│   │   ├── passwords/
│   │   │   ├── wp_login.rb
│   │   │   ├── xml_rpc.rb
│   │   │   └── xml_rpc_multicall.rb
│   │   ├── passwords.rb
│   │   ├── plugin_version/
│   │   │   └── readme.rb
│   │   ├── plugin_version.rb
│   │   ├── plugins/
│   │   │   ├── body_pattern.rb
│   │   │   ├── comment.rb
│   │   │   ├── config_parser.rb
│   │   │   ├── header_pattern.rb
│   │   │   ├── javascript_var.rb
│   │   │   ├── known_locations.rb
│   │   │   ├── query_parameter.rb
│   │   │   ├── urls_in_404_page.rb
│   │   │   ├── urls_in_homepage.rb
│   │   │   └── xpath.rb
│   │   ├── plugins.rb
│   │   ├── theme_version/
│   │   │   ├── style.rb
│   │   │   └── woo_framework_meta_generator.rb
│   │   ├── theme_version.rb
│   │   ├── themes/
│   │   │   ├── known_locations.rb
│   │   │   ├── urls_in_404_page.rb
│   │   │   └── urls_in_homepage.rb
│   │   ├── themes.rb
│   │   ├── timthumb_version/
│   │   │   └── bad_request.rb
│   │   ├── timthumb_version.rb
│   │   ├── timthumbs/
│   │   │   └── known_locations.rb
│   │   ├── timthumbs.rb
│   │   ├── users/
│   │   │   ├── author_id_brute_forcing.rb
│   │   │   ├── author_posts.rb
│   │   │   ├── author_sitemap.rb
│   │   │   ├── login_error_messages.rb
│   │   │   ├── oembed_api.rb
│   │   │   ├── rss_generator.rb
│   │   │   ├── wp_json_api.rb
│   │   │   └── yoast_seo_author_sitemap.rb
│   │   ├── users.rb
│   │   ├── wp_items/
│   │   │   └── urls_in_page.rb
│   │   ├── wp_items.rb
│   │   ├── wp_version/
│   │   │   ├── atom_generator.rb
│   │   │   ├── rdf_generator.rb
│   │   │   ├── readme.rb
│   │   │   ├── rss_generator.rb
│   │   │   └── unique_fingerprinting.rb
│   │   └── wp_version.rb
│   ├── finders.rb
│   ├── models/
│   │   ├── config_backup.rb
│   │   ├── db_export.rb
│   │   ├── interesting_finding.rb
│   │   ├── media.rb
│   │   ├── plugin.rb
│   │   ├── theme.rb
│   │   ├── timthumb.rb
│   │   ├── wp_item.rb
│   │   ├── wp_version.rb
│   │   └── xml_rpc.rb
│   ├── models.rb
│   └── views/
│       ├── cli/
│       │   ├── core/
│       │   │   ├── banner.erb
│       │   │   ├── db_update_finished.erb
│       │   │   ├── db_update_started.erb
│       │   │   ├── not_fully_configured.erb
│       │   │   └── version.erb
│       │   ├── enumeration/
│       │   │   ├── config_backups.erb
│       │   │   ├── db_exports.erb
│       │   │   ├── medias.erb
│       │   │   ├── plugins.erb
│       │   │   ├── themes.erb
│       │   │   ├── timthumbs.erb
│       │   │   └── users.erb
│       │   ├── finding.erb
│       │   ├── info.erb
│       │   ├── main_theme/
│       │   │   └── theme.erb
│       │   ├── notice.erb
│       │   ├── password_attack/
│       │   │   └── users.erb
│       │   ├── theme.erb
│       │   ├── usage.erb
│       │   ├── vuln_api/
│       │   │   └── status.erb
│       │   ├── vulnerability.erb
│       │   ├── wp_item.erb
│       │   └── wp_version/
│       │       └── version.erb
│       └── json/
│           ├── core/
│           │   ├── banner.erb
│           │   ├── db_update_finished.erb
│           │   ├── db_update_started.erb
│           │   ├── not_fully_configured.erb
│           │   └── version.erb
│           ├── enumeration/
│           │   ├── config_backups.erb
│           │   ├── db_exports.erb
│           │   ├── medias.erb
│           │   ├── plugins.erb
│           │   ├── themes.erb
│           │   ├── timthumbs.erb
│           │   └── users.erb
│           ├── finding.erb
│           ├── main_theme/
│           │   └── theme.erb
│           ├── password_attack/
│           │   └── users.erb
│           ├── theme.erb
│           ├── vuln_api/
│           │   └── status.erb
│           ├── wp_item.erb
│           └── wp_version/
│               └── version.erb
├── bin/
│   ├── wpscan
│   ├── wpscan-docker
│   ├── wpscan-docker-dev
│   ├── wpscan-memprof
│   └── wpscan-stackprof
├── lib/
│   ├── wpscan/
│   │   ├── browser.rb
│   │   ├── controller.rb
│   │   ├── controllers.rb
│   │   ├── db/
│   │   │   ├── dynamic_finders/
│   │   │   │   ├── base.rb
│   │   │   │   ├── plugin.rb
│   │   │   │   ├── theme.rb
│   │   │   │   └── wordpress.rb
│   │   │   ├── fingerprints.rb
│   │   │   ├── plugin.rb
│   │   │   ├── plugins.rb
│   │   │   ├── sponsor.rb
│   │   │   ├── theme.rb
│   │   │   ├── themes.rb
│   │   │   ├── updater.rb
│   │   │   ├── vuln_api.rb
│   │   │   ├── wp_item.rb
│   │   │   ├── wp_items.rb
│   │   │   └── wp_version.rb
│   │   ├── db.rb
│   │   ├── errors/
│   │   │   ├── enumeration.rb
│   │   │   ├── http.rb
│   │   │   ├── update.rb
│   │   │   ├── vuln_api.rb
│   │   │   ├── wordpress.rb
│   │   │   └── xmlrpc.rb
│   │   ├── errors.rb
│   │   ├── finders/
│   │   │   ├── dynamic_finder/
│   │   │   │   ├── finder.rb
│   │   │   │   ├── version/
│   │   │   │   │   ├── body_pattern.rb
│   │   │   │   │   ├── comment.rb
│   │   │   │   │   ├── config_parser.rb
│   │   │   │   │   ├── finder.rb
│   │   │   │   │   ├── header_pattern.rb
│   │   │   │   │   ├── javascript_var.rb
│   │   │   │   │   ├── query_parameter.rb
│   │   │   │   │   └── xpath.rb
│   │   │   │   ├── wp_item_version.rb
│   │   │   │   ├── wp_items/
│   │   │   │   │   └── finder.rb
│   │   │   │   └── wp_version.rb
│   │   │   └── finder/
│   │   │       └── wp_version/
│   │   │           └── smart_url_checker.rb
│   │   ├── finders.rb
│   │   ├── helper.rb
│   │   ├── parsed_cli.rb
│   │   ├── references.rb
│   │   ├── target/
│   │   │   └── platform/
│   │   │       ├── wordpress/
│   │   │       │   └── custom_directories.rb
│   │   │       └── wordpress.rb
│   │   ├── target.rb
│   │   ├── typhoeus/
│   │   │   └── response.rb
│   │   ├── version.rb
│   │   ├── vulnerability.rb
│   │   └── vulnerable.rb
│   └── wpscan.rb
├── spec/
│   ├── app/
│   │   ├── controllers/
│   │   │   ├── aliases_spec.rb
│   │   │   ├── core_spec.rb
│   │   │   ├── custom_directories_spec.rb
│   │   │   ├── enumeration_spec.rb
│   │   │   ├── password_attack_spec.rb
│   │   │   ├── vuln_api_spec.rb
│   │   │   └── wp_version_spec.rb
│   │   ├── finders/
│   │   │   ├── config_backups/
│   │   │   │   └── known_filenames_spec.rb
│   │   │   ├── config_backups_spec.rb
│   │   │   ├── db_exports/
│   │   │   │   └── known_locations_spec.rb
│   │   │   ├── db_exports_spec.rb
│   │   │   ├── interesting_findings/
│   │   │   │   ├── backup_db_spec.rb
│   │   │   │   ├── debug_log_spec.rb
│   │   │   │   ├── duplicator_installer_log_spec.rb
│   │   │   │   ├── emergency_pwd_reset_script_spec.rb
│   │   │   │   ├── full_path_disclosure_spec.rb
│   │   │   │   ├── mu_plugins_spec.rb
│   │   │   │   ├── multisite_spec.rb
│   │   │   │   ├── php_disabled_spec.rb
│   │   │   │   ├── readme_spec.rb
│   │   │   │   ├── registration_spec.rb
│   │   │   │   ├── tmm_db_migrate_spec.rb
│   │   │   │   ├── upload_direcrory_listing_spec.rb
│   │   │   │   ├── upload_sql_dump_spec.rb
│   │   │   │   └── wp_cron_spec.rb
│   │   │   ├── interesting_findings_spec.rb
│   │   │   ├── main_theme/
│   │   │   │   ├── css_style_in_404_page_spec.rb
│   │   │   │   ├── css_style_in_homepage_spec.rb
│   │   │   │   ├── urls_in_404_page_spec.rb.rb
│   │   │   │   ├── urls_in_homepage_spec.rb
│   │   │   │   └── woo_framework_meta_generator_spec.rb
│   │   │   ├── main_theme_spec.rb
│   │   │   ├── medias/
│   │   │   │   └── attachment_brute_forcing_spec.rb
│   │   │   ├── medias_spec.rb
│   │   │   ├── passwords/
│   │   │   │   ├── wp_login_spec.rb
│   │   │   │   └── xml_rpc_spec.rb
│   │   │   ├── plugin_version/
│   │   │   │   └── readme_spec.rb
│   │   │   ├── plugin_version_spec.rb
│   │   │   ├── plugins/
│   │   │   │   ├── body_pattern_spec.rb
│   │   │   │   ├── comment_spec.rb
│   │   │   │   ├── config_parser_spec.rb
│   │   │   │   ├── header_pattern_spec.rb
│   │   │   │   ├── javascript_var_spec.rb
│   │   │   │   ├── known_locations_spec.rb
│   │   │   │   ├── query_parameter_spec.rb
│   │   │   │   ├── urls_in_404_page_spec.rb
│   │   │   │   ├── urls_in_homepage_spec.rb
│   │   │   │   └── xpath_spec.rb
│   │   │   ├── plugins_spec.rb
│   │   │   ├── theme_version/
│   │   │   │   ├── style_spec.rb
│   │   │   │   └── woo_framework_meta_generator_spec.rb
│   │   │   ├── theme_version_spec.rb
│   │   │   ├── themes/
│   │   │   │   ├── known_locations_spec.rb
│   │   │   │   ├── urls_in_404_page_spec.rb
│   │   │   │   └── urls_in_homepage_spec.rb
│   │   │   ├── themes_spec.rb
│   │   │   ├── timthumb_version/
│   │   │   │   └── bad_request_spec.rb
│   │   │   ├── timthumb_version_spec.rb
│   │   │   ├── timthumbs/
│   │   │   │   └── known_locations_spec.rb
│   │   │   ├── timthumbs_spec.rb
│   │   │   ├── users/
│   │   │   │   ├── author_id_brute_forcing_spec.rb
│   │   │   │   ├── author_posts_spec.rb
│   │   │   │   ├── author_sitemap_spec.rb
│   │   │   │   ├── login_error_messages_spec.rb
│   │   │   │   ├── oembed_api_spec.rb
│   │   │   │   ├── rss_generator_spec.rb
│   │   │   │   ├── wp_json_api_spec.rb
│   │   │   │   └── yoast_seo_author_sitemap_spec.rb
│   │   │   ├── users_spec.rb
│   │   │   ├── wp_version/
│   │   │   │   ├── atom_generator_spec.rb
│   │   │   │   ├── rdf_generator_spec.rb
│   │   │   │   ├── readme_spec.rb
│   │   │   │   ├── rss_generator_spec.rb
│   │   │   │   └── unique_fingerprinting_spec.rb
│   │   │   └── wp_version_spec.rb
│   │   ├── models/
│   │   │   ├── interesting_finding_spec.rb
│   │   │   ├── media_spec.rb
│   │   │   ├── plugin_spec.rb
│   │   │   ├── theme_spec.rb
│   │   │   ├── timthumb_spec.rb
│   │   │   ├── wp_item_spec.rb
│   │   │   ├── wp_version_spec.rb
│   │   │   └── xml_rpc_spec.rb
│   │   └── views_spec.rb
│   ├── cache/
│   │   └── .gitignore
│   ├── fixtures/
│   │   ├── db/
│   │   │   ├── config_backups.txt
│   │   │   ├── db_exports.txt
│   │   │   ├── dynamic_finders.yml
│   │   │   ├── metadata.json
│   │   │   ├── sponsor.txt
│   │   │   ├── vuln_api/
│   │   │   │   ├── plugins/
│   │   │   │   │   ├── no-vulns-popular.json
│   │   │   │   │   ├── vulnerable-introduced-in.json
│   │   │   │   │   └── vulnerable-not-popular.json
│   │   │   │   ├── themes/
│   │   │   │   │   ├── dignitas-themes.json
│   │   │   │   │   ├── no-vulns-popular.json
│   │   │   │   │   ├── vulnerable-not-popular.json
│   │   │   │   │   └── yaaburnee-themes.json
│   │   │   │   └── wordpresses/
│   │   │   │       ├── 38.json
│   │   │   │       ├── 381.json
│   │   │   │       └── 40.json
│   │   │   └── wp_fingerprints.json
│   │   ├── dynamic_finders/
│   │   │   ├── expected.yml
│   │   │   ├── plugin_version/
│   │   │   │   ├── 10bit-paybuttons-easycard/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── 10bit-paybuttons-easycard-he_IL.po
│   │   │   │   ├── 10bit-paybuttons-pelecard/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── 10bit-paybuttons-pelecard-he_IL.po
│   │   │   │   ├── 24liveblog/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── 2fas/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── 2fas-pt_BR.po
│   │   │   │   ├── 2fas-light/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── 2kb-amazon-affiliates-store/
│   │   │   │   │   └── version_log/
│   │   │   │   │       └── template/
│   │   │   │   │           └── admin/
│   │   │   │   │               └── version.phtml
│   │   │   │   ├── 3-word-address-validation-field/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── 300form/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── 360-image/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── 360-product-viewer-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wp360view.pot
│   │   │   │   ├── 360-video/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── 404-page/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── 404-solution/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── 404-to-301/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── 404-to-301.pot
│   │   │   │   ├── 4nton-extensions/
│   │   │   │   │   └── javascript_file/
│   │   │   │   │       └── assets/
│   │   │   │   │           └── js/
│   │   │   │   │               └── script.js
│   │   │   │   ├── 4partners/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── 4partners-ru_RU.po
│   │   │   │   ├── 9mail-wp-email-templates-designer/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── LayerSlider/
│   │   │   │   │   ├── language_translation_file/
│   │   │   │   │   │   └── languages/
│   │   │   │   │   │       └── LayerSlider-en_US.po
│   │   │   │   │   └── locale_translation_file/
│   │   │   │   │       └── locales/
│   │   │   │   │           └── LayerSlider-en_US.po
│   │   │   │   ├── Ultimate_VC_Addons/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── a-note-above-wp-dashboard-notes/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── a-z-listing/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── a-z-listing.pot
│   │   │   │   ├── a3-portfolio/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── a4-barcode-generator/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wpbcu-barcode-generator.pot
│   │   │   │   ├── ab-human-time/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ab-human-time-it_IT.po
│   │   │   │   ├── abandoned-cart-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── abandoned-cart-for-woocommerce.pot
│   │   │   │   ├── abandoned-contact-form-7/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── abandoned-forms-contact-form-7.pot
│   │   │   │   ├── above-the-fold-optimization/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── absolute-thumbnail-column/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── absolute-thumbnail-column.pot
│   │   │   │   ├── academic-bloggers-toolkit/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── academic-bloggers-toolkit.pot
│   │   │   │   ├── academy-starter-templates/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── academy-starter-templates.pot
│   │   │   │   ├── accedeme-for-wp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wp-accedeme-es_ES.po
│   │   │   │   ├── accelerated-mobile-pages/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── accept-2checkout-payments-using-contact-form-7/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── accept-2checkout-payments-using-contact-form-7.pot
│   │   │   │   ├── accept-authorize-net-payments-using-contact-form-7/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── contact-form-7-authorize-net-addon.pot
│   │   │   │   ├── accept-qpay-payments-using-contact-form-7/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── accept-qpay-payments-using-contact-form-7.pot
│   │   │   │   ├── accept-sagepay-payments-using-contact-form-7/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── accept-sagepay-payments-using-contact-form-7.pot
│   │   │   │   ├── accept-stripe-payments-using-contact-form-7/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── contact-form-7-stripe-addon.pot
│   │   │   │   ├── accept-worldpay-payments-using-contact-form-7/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── contact-form-7-worldpay-addon.pot
│   │   │   │   ├── access-guard/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── access-guard.pot
│   │   │   │   ├── accessiblewp-skiplinks/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── accessiblewp-skiplinks.pot
│   │   │   │   ├── accordion-blocks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── accordion-faq-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── accordion-for-wp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── accordion-for-wp.pot
│   │   │   │   ├── aceide/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── acf-beautiful-flexible/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── acf-conditional-logic-advanced/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── acf-dropzone/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── acf-dropzone.pot
│   │   │   │   ├── acf-duplicate-repeater/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── acf-duplicate-repeater.pot
│   │   │   │   ├── acf-field-selector-field/
│   │   │   │   │   ├── translation_file/
│   │   │   │   │   │   └── lang/
│   │   │   │   │   │       └── acf-field-selector-field-hu_HU.mo
│   │   │   │   │   ├── translation_file2/
│   │   │   │   │   │   └── lang/
│   │   │   │   │   │       └── translation.po
│   │   │   │   │   ├── translation_file3/
│   │   │   │   │   │   └── lang/
│   │   │   │   │   │       └── acf-field-selector-field-hu_HU.po
│   │   │   │   │   └── translation_file_/
│   │   │   │   │       └── lang/
│   │   │   │   │           ├── acf-field-selector-field-hu_HU.mo
│   │   │   │   │           ├── acf-field-selector-field-hu_HU.po
│   │   │   │   │           └── translation.po
│   │   │   │   ├── acf-fields-in-custom-table/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── acffict.pot
│   │   │   │   ├── acf-flexible-content-extended/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── acf-flexible-content-preview/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── acf-openstreetmap-field/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── acf-openstreetmap-field.pot
│   │   │   │   ├── acf-options-for-polylang/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── acf-pro-show-fields-shortcode/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── uk_UA.po
│   │   │   │   ├── acf-quickedit-fields/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── acf-quickedit-fields.pot
│   │   │   │   ├── acf-sidebar-selector-field/
│   │   │   │   │   ├── translation_file/
│   │   │   │   │   │   └── lang/
│   │   │   │   │   │       └── acf-sidebar-selector-field-hu_HU.mo
│   │   │   │   │   ├── translation_file2/
│   │   │   │   │   │   └── lang/
│   │   │   │   │   │       └── translation.pot
│   │   │   │   │   └── translation_file3/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── acf-sidebar-selector-field-hu_HU.po
│   │   │   │   ├── acf-to-rest-api/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── composer.json
│   │   │   │   │   └── composer_file_/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── ach-updates-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ach_upn_manager.pot
│   │   │   │   ├── aco-product-labels-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── aco-product-labels-for-woocommerce.pot
│   │   │   │   ├── aco-variation-swatches-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── aco-variation-swatches-for-woocommerce.pot
│   │   │   │   ├── aco-wishlist-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── aco-wishlist-for-woocommerce.pot
│   │   │   │   ├── acobot-chatbot/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── acobot.pot
│   │   │   │   ├── action-scheduler/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── active-directory-authentication-integration/
│   │   │   │   │   ├── translation_file/
│   │   │   │   │   │   └── active-directory-authentication-integration.pot
│   │   │   │   │   ├── translation_file2/
│   │   │   │   │   │   └── languages/
│   │   │   │   │   │       └── default.mo
│   │   │   │   │   └── translation_file3/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── default.po
│   │   │   │   ├── active-plugins-on-multisite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── active-plugins.pot
│   │   │   │   ├── activecampaign-newsletter-subscription/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── default.pot
│   │   │   │   ├── activity-log-gravity-forms/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wsal-gravityforms.pot
│   │   │   │   ├── activity-log-memberpress/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── activity-log-memberpress.pot
│   │   │   │   ├── activity-log-tablepress/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── activity-log-tablepress.pot
│   │   │   │   ├── activity-log-wp-seo/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── activity-log-wp-seo.pot
│   │   │   │   ├── activitystream-extension/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── localization/
│   │   │   │   │           └── activitystream_extension.pot
│   │   │   │   ├── actus-animated-tags/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── acumulus/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── lib/
│   │   │   │   │   │       └── siel/
│   │   │   │   │   │           └── acumulus/
│   │   │   │   │   │               └── changelog.txt
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── libraries/
│   │   │   │   │           └── Siel/
│   │   │   │   │               └── composer.json
│   │   │   │   ├── acymailing-integration-for-uncanny-automator/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── language/
│   │   │   │   │           └── acymailing-integration-for-uncanny-automator.pot
│   │   │   │   ├── ad-blocks/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ad-blocks.pot
│   │   │   │   ├── ad-inserter/
│   │   │   │   │   ├── javascript_var/
│   │   │   │   │   │   └── js/
│   │   │   │   │   │       └── ad-inserter.js
│   │   │   │   │   └── style_var/
│   │   │   │   │       └── css/
│   │   │   │   │           └── ad-inserter.css
│   │   │   │   ├── ad-music-player-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── plugin-name.pot
│   │   │   │   ├── adamrob-parallax-scroll/
│   │   │   │   │   └── style_comment/
│   │   │   │   │       └── css/
│   │   │   │   │           └── parallax.css
│   │   │   │   ├── adaptive-learning-with-learndash/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── adblock-notify-by-bweb/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── add-amazon-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── add-from-server/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── add-meta-tags/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── add-meta-tags.pot
│   │   │   │   ├── add-on-cf7-for-airtable/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wpc-wpcf7-at.pot
│   │   │   │   ├── add-on-cf7-for-notion/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wpc-wpcf7-ntn.pot
│   │   │   │   ├── add-on-contact-form-7-mailpoet/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── add-on-gravity-forms-mailpoet/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── add-on-woocommerce-mailpoet/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── add-product-frontend-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bytes_product_frontend.pot
│   │   │   │   ├── additional-block-styles/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── additional-content/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── additional-content.pot
│   │   │   │   ├── additional-product-fields-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── rednaowooextraproduct.pot
│   │   │   │   ├── addon-gravityforms-sendinblue-free/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── addon-gravityforms-sendinblue-free.pot
│   │   │   │   ├── addon-library/
│   │   │   │   │   └── release_log/
│   │   │   │   │       └── release_log.txt
│   │   │   │   ├── addon-library-layouts/
│   │   │   │   │   └── release_log/
│   │   │   │   │       └── release_log.txt
│   │   │   │   ├── addon-stripe-with-contact-form-7/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── stripe-with-contact-form-7.pot
│   │   │   │   ├── addonify-quick-view/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── address-autocomplete-google-places/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── address-autocomplete.pot
│   │   │   │   ├── addressfinder-woo/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── javascript_var/
│   │   │   │   │       └── addressfinder.js
│   │   │   │   ├── addy-autocomplete-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── adl-team/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── at.pot
│   │   │   │   ├── admin-atlex-cloud/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ru_RU.pot
│   │   │   │   ├── admin-bar/
│   │   │   │   │   ├── translation_file/
│   │   │   │   │   │   └── lang/
│   │   │   │   │   │       └── ru_RU.po
│   │   │   │   │   └── translation_file2/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── ru_RU.mo
│   │   │   │   ├── admin-bar-backend-search/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── ab-backend-search-de_DE.po
│   │   │   │   ├── admin-category-filter/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── post-category-filter.pot
│   │   │   │   ├── admin-color-schemes/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── admin-dashboard-last-edits/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── admin-email-as-from-address/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── admin-help-docs/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── admin-live-search/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── admin-live-search.pot
│   │   │   │   ├── admin-menu-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── admin-menu-manager.pot
│   │   │   │   ├── admin-menu-reorder/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── admin-notes-wp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wp-admin-notes.pot
│   │   │   │   ├── admin-only-jetpack/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── admin-only-jetpack.pot
│   │   │   │   ├── admin-todotastic/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── admin-todotastic.pot
│   │   │   │   ├── admin-user-control/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── admin-user-control-ja.po
│   │   │   │   ├── admitad-tracking/
│   │   │   │   │   ├── translation_file/
│   │   │   │   │   │   └── languages/
│   │   │   │   │   │       └── admitadtracking.pot
│   │   │   │   │   ├── translation_file2/
│   │   │   │   │   │   └── languages/
│   │   │   │   │   │       └── admitadtracking-ru_RU.mo
│   │   │   │   │   └── translation_file3/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── admitadtracking-ru_RU.po
│   │   │   │   ├── adobe-xmp-for-wp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── adobe-xmp-for-wp.pot
│   │   │   │   ├── adplugg/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── adrecord-affiliate/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── adrecord-affiliate.pot
│   │   │   │   ├── adshares/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── adsimple-vote/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── adsimple-vote-de_DE.po
│   │   │   │   ├── advance-cash-on-delivery-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── coderockz-wc-advance-cod-free.pot
│   │   │   │   ├── advance-custom-html/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-html.pot
│   │   │   │   ├── advanced-category-column/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── advanced-cc-es_ES.po
│   │   │   │   ├── advanced-custom-fields-table-field/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── acf-table-pl_PL.po
│   │   │   │   ├── advanced-custom-types-for-divi/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── en_US.po
│   │   │   │   ├── advanced-database-cleaner/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── advanced-db-cleaner.pot
│   │   │   │   ├── advanced-google-recaptcha/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── advanced-google-recaptcha.pot
│   │   │   │   ├── advanced-image-comparison-for-elementor/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── advanced-options-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── advanced-options-for-woocommerce-he_IL.po
│   │   │   │   ├── advanced-post-excerpt/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── advanced-quiz/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── advanced-random-posts-widget/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── advanced-random-posts-widget.pot
│   │   │   │   ├── advanced-testimonial-carousel-for-elementor/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── advanced-testimonial-for-wp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── itt_testimonial_textdomain-en_US.po
│   │   │   │   ├── advanced-twitter-profile-widget/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── atpw-pl_PL.po
│   │   │   │   ├── advanced-wp-table/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── advanced-wp-table.pot
│   │   │   │   ├── advanced-xprofile-fields-for-buddypress/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── advanced-xprofile-fields-for-buddypress.pot
│   │   │   │   ├── af-companion/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── affiliate-bridge/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── affiliate-bridge.pot
│   │   │   │   ├── affiliate-links-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── uk_UA.po
│   │   │   │   ├── affiliatebooster-blocks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── affiliates/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── affiliates-buddypress/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── affiliates-events-manager/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── affiliates-formidable/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── affiliates-ninja-forms/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── affiliates-woocommerce-light/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── affiliatewp-blocks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── affilicious/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── affliates-manager-prime-for-wc-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ciwcamp-affliate-manager.pot
│   │   │   │   ├── afi-to-integrations/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── after-comment-prompts/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── ag-twitter/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── age-verify/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── age-verify.pot
│   │   │   │   ├── aged-content-message/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── agile-whatsapp-share/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── agile_whatsapp_share.po
│   │   │   │   ├── agnoplay/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── nl.po
│   │   │   │   ├── agy-verification/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── agy-verification.pot
│   │   │   │   ├── ahachat-messenger-marketing/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── ahime-image-printer/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── ai-bot/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ai-bot.pot
│   │   │   │   ├── ai-co-pilot-for-wp/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── ai-contact-form/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── ai-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── firstmedia-ai-text-es_VE.po
│   │   │   │   ├── ai-image-generator/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── ai-scribe/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── aiscribe.pot
│   │   │   │   ├── aiaibot/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── aiaibot.pot
│   │   │   │   ├── aio-for-divi/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── en_US.po
│   │   │   │   ├── air-wp-sync/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── airwpsync-fr_FR.po
│   │   │   │   ├── aircash-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── aircash-for-woocommerce-hr.po
│   │   │   │   ├── airstory/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── airstory.pot
│   │   │   │   ├── ajax-contact-forms/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── acfw30-en_US.po
│   │   │   │   ├── ajax-load-more-by-bkker-theme/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── en_US.po
│   │   │   │   ├── ajax-search-bar/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── ajaxify-filters/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── language/
│   │   │   │   │           └── ajaxify-filters-en_US.po
│   │   │   │   ├── alceris-analytics/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── alerts-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── ali2woo-lite/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── ali2woo-migration-tool/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── align-text-edge/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── align-text-edge.pot
│   │   │   │   ├── alkubot/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── Alkubot-en_US.po
│   │   │   │   ├── all-embed-addons-for-elementor/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── allembed.pot
│   │   │   │   ├── all-in-all-image-hover-effect/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── cu-framework/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── zh_CN.po
│   │   │   │   ├── all-in-one-event-calendar/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── language/
│   │   │   │   │           └── all-in-one-event-calendar.po
│   │   │   │   ├── all-in-one-forms/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easycalculationform.pot
│   │   │   │   ├── all-in-one-music-player/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── all-in-one-music-player.pot
│   │   │   │   ├── all-in-one-redirection/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── all-in-one-redirection.pot
│   │   │   │   ├── allada-tshirt-designer-for-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── allow-javascript-in-text-widgets/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── allow-javascript-in-text-widgets.pot
│   │   │   │   ├── allpay-payment-gateway/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── allpay-payment-gateway-ru_RU.po
│   │   │   │   ├── alnp-facebook-pixel-tracking/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── alnp-facebook-pixel-tracking.pot
│   │   │   │   ├── alo-easymail/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── alpha-google-map-for-elementor/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── alpha-google-map-for-elementor.pot
│   │   │   │   ├── alpha-insights-intelligent-profit-reports-for-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── alpha-price-table-for-elementor/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── alpha-price-table-for-elementor.pot
│   │   │   │   ├── alpha-single-product-for-elementor/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── alpha-single-product-for-elementor.pot
│   │   │   │   ├── altapay-for-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── always-allow-admin-comments/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── always-visible-floating-product-publish-button-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── floating-product-publish-button-it_IT.po
│   │   │   │   ├── am-lottieplayer/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── amazing-portfolio/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── inc/
│   │   │   │   │           └── framework/
│   │   │   │   │               └── languages/
│   │   │   │   │                   └── cs-framework.pot
│   │   │   │   ├── amazon-fps/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ppdg.pot
│   │   │   │   ├── amazon-product-in-a-post-plugin/
│   │   │   │   │   └── css_file/
│   │   │   │   │       └── css/
│   │   │   │   │           └── amazon-default-plugin-styles.css
│   │   │   │   ├── amnav-menu-control/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── amnav-menu-control.pot
│   │   │   │   ├── amwal-checkout/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── amzft/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── analogwp-templates/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ang.pot
│   │   │   │   ├── analytics-for-cloudflare/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── ananas/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── angelleye-paypal-invoicing/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── angelleye-paypal-invoicing-en_US.po
│   │   │   │   ├── ani-mate-animation-extension/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── animate-blocks/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── animate-blocks.pot
│   │   │   │   ├── animated-blocks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── animation-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── announce-on-publish/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── announce-on-publish-es_ES.po
│   │   │   │   ├── annytab-photoswipe/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── annytab-photoswipe.pot
│   │   │   │   ├── anrghg/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── anrghg-en_GB.po
│   │   │   │   ├── anspress-question-answer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── anspress-question-answer.pot
│   │   │   │   ├── anti-ddosbot-recaptcha-protection/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── anwp-post-grid-for-elementor/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── anycomment/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── anycomment-analytics/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── anything-order-by-terms/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── aoplayer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── aoplayer.pot
│   │   │   │   ├── apcu-manager/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── api-cache-pro/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── api-key-for-google-maps/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── gmaps-api-key.po
│   │   │   │   ├── apijoin-gumroad/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── apiki-wp-care/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── aplazame/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── aplazame.pot
│   │   │   │   ├── aplazo-payment-gateway/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── aplazo-payment-gateway-es_MX.po
│   │   │   │   ├── apollo13-framework-extensions/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── app-log/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── aplg.pot
│   │   │   │   ├── appconsent-cmp-sfbx/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── appconsent-cmp-sfbx.pot
│   │   │   │   ├── appmaps/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── appmaps.pot
│   │   │   │   ├── appsy/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── apx-link-status/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── apx-link-status.pot
│   │   │   │   ├── ar-contactus/
│   │   │   │   │   └── changelog/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── arabic-webfonts/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── archive-disabler/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── archive-disabler.pot
│   │   │   │   ├── archive-title/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── archiver/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── archiver.pot
│   │   │   │   ├── archives-by-category-and-date/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── archives-by-category-and-date.pot
│   │   │   │   ├── arforms-form-builder/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── arforms-form-builder-ja_JP.po
│   │   │   │   ├── arkam-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ar.po
│   │   │   │   ├── arlo-training-and-event-management-system/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── armember-membership/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ARMember-en_US.po
│   │   │   │   ├── array-partition/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── arrayforms/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── arvancloud-cdn/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── arvancloud-cdn.pot
│   │   │   │   ├── arvancloud-vod/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── arvancloud-vod.pot
│   │   │   │   ├── arya-license-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── arya-license-manager.pot
│   │   │   │   ├── ascendoor-logo-slide/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ascendoor-logo-slide.pot
│   │   │   │   ├── ascendoor-metadata-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ascendoor-metadata-manager.pot
│   │   │   │   ├── ask-faq/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ask-faq-pro.pot
│   │   │   │   ├── ask-me-anything-anonymously/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ask-me-anything-anonymously.pot
│   │   │   │   ├── asmember/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── asmember-de_DE.po
│   │   │   │   ├── assign-missing-categories/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── assign-missing-categories.pot
│   │   │   │   ├── asterisk-web-callback/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── z_asteriskcallback-ru_RU.po
│   │   │   │   ├── astra-sites/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── astra-sites.pot
│   │   │   │   ├── astra-widgets/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── astra-widgets.pot
│   │   │   │   ├── asura-connector/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── athemes-blocks/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── athemes-blocks.pot
│   │   │   │   ├── atlas-content-modeler/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── atlas-content-modeler.pot
│   │   │   │   ├── atom-featured-image/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── atomic-blocks/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── atomic-blocks.pot
│   │   │   │   ├── atr-inline-rtl-ltr/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── attachment-file-icons/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── attachment-file-icons-en_US.po
│   │   │   │   ├── attachment-usage/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── attachment-usage-de_DE.po
│   │   │   │   ├── attribute-stock-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── attribute-stock-for-woocommerce.pot
│   │   │   │   ├── audio-widget/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── audio-widget.pot
│   │   │   │   ├── audius-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── aurora-heatmap/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── aurora-heatmap-ja.po
│   │   │   │   ├── auth0/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── authentiq/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── author-bio-box/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── author-bio-box.pot
│   │   │   │   ├── author-images/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── author-images.pot
│   │   │   │   ├── authors-autocomplete-meta-box/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── authors-autocomplete-meta-box-es_ES.po
│   │   │   │   ├── auto-animateimage/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── animateimage-ja.po
│   │   │   │   ├── auto-category-for-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── auto-category-for-posts.pot
│   │   │   │   ├── auto-date-year-month/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── auto-delete-applications-add-on-for-wp-job-openings/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── auto-delete-wp-job-openings.pot
│   │   │   │   ├── auto-deselect-uncategorized/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── auto-deselect-uncategorized.pot
│   │   │   │   ├── auto-load-next-post/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── auto-load-next-post.pot
│   │   │   │   ├── auto-login-with-cloudflare/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── auto-login-with-cloudflare-zh_TW.po
│   │   │   │   ├── auto-menu-from-pages/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── auto-menu-from-pages.pot
│   │   │   │   ├── auto-post-woocommerce-products/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── auto-post-woocommerce-products-es_ES.po
│   │   │   │   ├── autoclear-autoptimize-cache/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── autoclear-autoptimize-cache.pot
│   │   │   │   ├── autoclose/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── autoclose-en_US.pot
│   │   │   │   ├── autocomplete-wc-order-status/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── autodate/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── default.pot
│   │   │   │   ├── autodescription/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── language/
│   │   │   │   │           └── autodescription.pot
│   │   │   │   ├── automatic-image-uploader/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── aiu.pot
│   │   │   │   ├── automatic-post-categories/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── automatic-post-categories.pot
│   │   │   │   ├── automatically-add-product-to-cart/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── automizy-gravity-forms/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── automizy-gravity-forms.pot
│   │   │   │   ├── autoptimize-criticalcss/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ao_critcss_aas.pot
│   │   │   │   ├── autoremove-attachments/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── autotags/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── AutoTags.pot
│   │   │   │   ├── avadanta-companion/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── avadanta-companion.pot
│   │   │   │   ├── avaibook/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── avaibook-pt_PT.po
│   │   │   │   ├── avalon23-products-filter-for-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── avangpress/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── avartan-slider-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── avartan-slider-lite.pot
│   │   │   │   ├── avatarplus/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── avatarplus-de_DE.po
│   │   │   │   ├── avatars-meta-box/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── avatars-meta-box.pot
│   │   │   │   ├── avif-support/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── avif-support.pot
│   │   │   │   ├── aw-woocommerce-kode-pembayaran/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── aw-woocommerce-pos/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── aw-woocommerce-tiki/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── aweos-wp-lock/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── awesome-hooks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── awesome-instant-search/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── translation/
│   │   │   │   │           └── ais-es_ES.po
│   │   │   │   ├── awesome-support/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── awesome-support.pot
│   │   │   │   ├── awesome-surveys/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── awesome-surveys-hu_HU.po
│   │   │   │   ├── awp-booking-calendar/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── awsa-quick-buy/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── awsa-quick-buy.pot
│   │   │   │   ├── awsa-shipping/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── awsa-shipping-fa_IR.po
│   │   │   │   ├── awstats-script/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── awstats-script.pot
│   │   │   │   ├── ax-scrollto-top/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── ayecode-connect/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ayecode-connect-en_US.po
│   │   │   │   ├── b-productiv-lite/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── b-slider/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── sliders-en_US.po
│   │   │   │   ├── b-tiktok-feed/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── tiktok.pot
│   │   │   │   ├── b2b-e-commerce-lite/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── b2binpay-payments-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── b2binpay-payments-for-woocommerce.pot
│   │   │   │   ├── ba-book-everything/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ba-book-everything.pot
│   │   │   │   ├── ba-event/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ba-event.pot
│   │   │   │   ├── baap-mobile-version/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── baap-mobile-version.pot
│   │   │   │   ├── back-in-stock-notifications-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── back-in-stock-notifications-for-woocommerce-en_US.po
│   │   │   │   ├── back-in-stock-notifier-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cwginstocknotifier-cz_CZ.po
│   │   │   │   ├── back-top/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── setting-page/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── bn_BD.po
│   │   │   │   ├── backdrop-post-types/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── backdrop-post-types.pot
│   │   │   │   ├── backend-startpage-customizer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── backend-startpage-customizer-de_DE.po
│   │   │   │   ├── background-music-player-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── plugin-name.pot
│   │   │   │   ├── backstage/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── backstage.pot
│   │   │   │   ├── backupbuddy/
│   │   │   │   │   └── history_log/
│   │   │   │   │       └── history.txt
│   │   │   │   ├── backupwordpress/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── backupwordpress.pot
│   │   │   │   ├── badgeos-edd-integration/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── badgeos-lifterlms-integration/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── badgeos-nomination-submission-add-on/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── badgeos-rest-api-addon/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── banana-faq/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── banana-faq.pot
│   │   │   │   ├── banggood-dropshipping/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── bangla-sidebar-login/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── I18n/
│   │   │   │   │           └── bn-sidebar-login.pot
│   │   │   │   ├── bankval/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── banner-alerts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── banner-alerts.pot
│   │   │   │   ├── banner-slider-for-advertisement/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wpwbs-en_US.po
│   │   │   │   ├── basic-alerts/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── bayarcash-givewp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bayarcash-givewp.pot
│   │   │   │   ├── bb-gallery/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bb_gallery.pot
│   │   │   │   ├── bb-header-footer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bb-header-footer.pot
│   │   │   │   ├── bb-login-module/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── login-module-for-bb.pot
│   │   │   │   ├── bb-toolbox/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── bb-vapor-modules/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bb-vapor-modules.pot
│   │   │   │   ├── bbpress-digest/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bbp-digest.pot
│   │   │   │   ├── bbpress-improved-statistics-users-online/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── bbpressmoderation/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── bbredirector/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── default.pot
│   │   │   │   ├── bdthemes-prime-slider-lite/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── be-shortcodes/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── be-shortcodes.pot
│   │   │   │   ├── bea-activator/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.MD
│   │   │   │   ├── beastiepress/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── beastiepress-en_US.po
│   │   │   │   ├── beautiful-custom-invoices/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── beautimour-kit/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── beautimour-kit.pot
│   │   │   │   ├── beaver-builder-lite-version/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── beaverlodge-pushmenu/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── default.po
│   │   │   │   ├── beer-blocks/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── before-after-image-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── before-after-images-for-divi/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── en_US.po
│   │   │   │   ├── bellows-accordion-menu/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bellows.pot
│   │   │   │   ├── beonepage-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── beonepage-lite.pot
│   │   │   │   ├── bertha-ai-free/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── best-restaurant-menu-by-pricelisto/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── best-suggestion-boxes/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── best-suggestion-boxes.pot
│   │   │   │   ├── best-testimonial/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── best-testimonial.pot
│   │   │   │   ├── bestprice-analytics-integration/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── bethemesme/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bethemesme.pot
│   │   │   │   ├── better-admin-users-search/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── baus.pot
│   │   │   │   ├── better-comments/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── better-comments-reply-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── better-comments-reply-manager.pot
│   │   │   │   ├── better-file-editor/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── better-font-awesome/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── better-font-awesome.pot
│   │   │   │   ├── better-formats/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── betterformats.pot
│   │   │   │   ├── better-plugin-recommendations/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── better-plugin-recommendations.pot
│   │   │   │   ├── better-rest-api-featured-images/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── better-rest-api-featured-images.pot
│   │   │   │   ├── better-rest-endpoints/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── better-reviews-for-woocommerce/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── woo-better-reviews.pot
│   │   │   │   ├── better-website-performance/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── better-website-performance.pot
│   │   │   │   ├── better-wp-security/
│   │   │   │   │   └── history_log/
│   │   │   │   │       └── history.txt
│   │   │   │   ├── better-yourls/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── better-yourls.pot
│   │   │   │   ├── beyond-identity-passwordless/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── bft-autoresponder/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── bft-autoresponder.pot
│   │   │   │   ├── bhoot-blocks-wp-job-manager/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── blocks-for-wp-job-manager.pot
│   │   │   │   ├── bible-online-popup/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── BOP.pot
│   │   │   │   ├── bigcommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── bigly-dropship/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── bike-rental/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bike-rental-ru_RU.po
│   │   │   │   ├── billingo/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── billplz-for-edd/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── bim-ba/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lib/
│   │   │   │   │           └── cmb2/
│   │   │   │   │               └── languages/
│   │   │   │   │                   └── cmb2.pot
│   │   │   │   ├── bing-translator/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bing-translator-bg_BG.po
│   │   │   │   ├── bip-pages/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bip-pages.pot
│   │   │   │   ├── birthday-widget-for-buddypress/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── bit-integrations/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bit-integrations.pot
│   │   │   │   ├── bit-social/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bit-social.pot
│   │   │   │   ├── bitform/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bitform.pot
│   │   │   │   ├── black-login-screen/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── langs/
│   │   │   │   │           └── black_login_screen-en_GB.po
│   │   │   │   ├── black-studio-tinymce-widget/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── black-studio-tinymce-widget.pot
│   │   │   │   ├── blade/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── blank-footnotes/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── blaze-checkout/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── bleumi-pay-crypto-payments-for-woocommerce/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── blimply/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lib/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── blimply.pot
│   │   │   │   ├── blkcanvas-easy-attachments/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── block-catalog/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── block-editor-gallery-slider/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── block-editor-gallery-slider.pot
│   │   │   │   ├── block-editor-navigator/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── block-editor-navigator.pot
│   │   │   │   ├── block-editor-search-replace/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── block-editor-search-replace.pot
│   │   │   │   ├── block-enhancements/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── block-enhancements.pot
│   │   │   │   ├── block-for-mailchimp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── mailchimp.pot
│   │   │   │   ├── block-for-masonry-gallery/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── block-for-woo-product-table/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── block-for-woo-product-table.pot
│   │   │   │   ├── block-for-yandex-sovetnik/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── antisovet-ru_RU.po
│   │   │   │   ├── block-layouts/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── block-minimap/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── block-pattern-builder/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── block-spammers/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wbs.pot
│   │   │   │   ├── block-xray-attributes/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── blockart-blocks/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── blockart.pot
│   │   │   │   ├── blockbuddy/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── blockify/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── assets/
│   │   │   │   │           └── lang/
│   │   │   │   │               └── blockify.pot
│   │   │   │   ├── blockmeister/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── blockons/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── blockons.pot
│   │   │   │   ├── blockprotocol/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── blockq/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── locale/
│   │   │   │   │           └── blockq.pot
│   │   │   │   ├── blocks-by-projects-engine/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── blocks-export-import/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── blocks-for-eventbrite/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── blocks-for-shopengine/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── shopengine-gutenberg-addon.pot
│   │   │   │   ├── blocks-for-wp-editor/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── blocks-ultimate/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── blogging-tools/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── blogging-tools.pot
│   │   │   │   ├── bloglovin-follow/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bloglovin_follow_trans_domain.pot
│   │   │   │   ├── blogsqode-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── blogsqode.pot
│   │   │   │   ├── blogware-importer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── blogware-importer.pot
│   │   │   │   ├── blossom-recipe-maker/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── blossom-recipe-maker.pot
│   │   │   │   ├── blossomthemes-email-newsletter/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── blossomthemes-email-newsletter.pot
│   │   │   │   ├── blossomthemes-toolkit/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── blossomthemes-toolkit.pot
│   │   │   │   ├── blue-hat-cdn/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── blue-hat-cdn-pt_BR.po
│   │   │   │   ├── bluebox-pricing-table-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── bluehost-site-migrator/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bluehost-site-migrator.pot
│   │   │   │   ├── bma-lite-appointment-booking-and-scheduling/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── rtwbmal-book-my-appointment.pot
│   │   │   │   ├── body_pattern_passive_all.html
│   │   │   │   ├── boleto-cora/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── bolt-checkout-bigcommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── bonaire/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── boo-recipes/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── boo-recipes-de_DE.po
│   │   │   │   ├── book-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── book-review/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── book-review.pot
│   │   │   │   ├── booking-activities/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── booking-activities.pot
│   │   │   │   ├── booking-x/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bookingx.pot
│   │   │   │   ├── bookingcom-official-searchbox/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bookingcom-official-searchbox-ru_RU.po
│   │   │   │   ├── bookingcom-product-helper/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bookingcom-product-helper-en_US.po
│   │   │   │   ├── bookingpress-appointment-booking/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bookingpress-appointment-booking-en_US.po
│   │   │   │   ├── bookmark-export/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── bookmark-export-de_DE.po
│   │   │   │   ├── bookwize-booking-form/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── boomerang/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── boomerang.pot
│   │   │   │   ├── booster-for-elementor/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── elementor-booster.pot
│   │   │   │   ├── booster-pack-for-divi/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── en_US.po
│   │   │   │   ├── boostimer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── boostimer.pot
│   │   │   │   ├── bootstrap-for-contact-form-7/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── bopo-woo-product-bundle-builder/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── bot-for-telegram-on-woocommerce/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── bounce-handler-mailpoet/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── bowe-codes/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bowe-codes.pot
│   │   │   │   ├── boxtal-connect/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── Boxtal/
│   │   │   │   │           └── BoxtalConnectWoocommerce/
│   │   │   │   │               └── translation/
│   │   │   │   │                   └── boxtal-connect-fr_FR.po
│   │   │   │   ├── bp-activity-social-share/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── buddypress-share.pot
│   │   │   │   ├── bp-avatar-suggestions/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-avatar-suggestions.pot
│   │   │   │   ├── bp-beta-tester/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-beta-tester.pot
│   │   │   │   ├── bp-block-users/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-block-users.pot
│   │   │   │   ├── bp-bookmarklet/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-bookmarklet.pot
│   │   │   │   ├── bp-create-group-type/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-add-group-types.pot
│   │   │   │   ├── bp-edit-user-profiles/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-edit-user-profiles.pot
│   │   │   │   ├── bp-emails-for-bbp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-emails-for-bbp.pot
│   │   │   │   ├── bp-events-calendar/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-events-calendar.pot
│   │   │   │   ├── bp-forum-notifier/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-forum-notifier-sv_SE.po
│   │   │   │   ├── bp-group-sites/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-group-sites.pot
│   │   │   │   ├── bp-groups-civicrm-sync/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-groups-civicrm-sync.pot
│   │   │   │   ├── bp-my-home/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-my-home.pot
│   │   │   │   ├── bp-new-order-notifications-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-new-order-notification.pot
│   │   │   │   ├── bp-order-date-time-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-woopick-delivery.pot
│   │   │   │   ├── bp-post-from-anywhere/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-post-from-anywhere.pot
│   │   │   │   ├── bp-premiums/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-premiums.pot
│   │   │   │   ├── bp-profile-field-duplicator/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-profile-field-duplicator.pot
│   │   │   │   ├── bp-reactions/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-reactions.pot
│   │   │   │   ├── bp-search-block/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-search-block-fr_FR.po
│   │   │   │   ├── bp-security-check/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-security-check.pot
│   │   │   │   ├── bp-show-friends/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-show-friends.pot
│   │   │   │   ├── bp-social-connect/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── bp-sticky-groups/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-sticky-groups.pot
│   │   │   │   ├── bp-xprofile-rich-text-field/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-xprofile-rich-text-field.pot
│   │   │   │   ├── bpost-shipping/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── composer.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bpost_shipping.pot
│   │   │   │   ├── bps-splide-slider-block/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bps-slider-block.pot
│   │   │   │   ├── bpwp-set-homepages/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── plugin.pot
│   │   │   │   ├── braft-woo-shipping-packer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── braft-woo-shipping-packer.pot
│   │   │   │   ├── branda-white-labeling/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ub.pot
│   │   │   │   ├── brandnestor/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── brandnestor-el.po
│   │   │   │   ├── breadcrumb-trail/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── breadcrumb-trail.pot
│   │   │   │   ├── bridge-tournament/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bridge-tournament-fr_FR.po
│   │   │   │   ├── bridgy-publish/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bridgy.pot
│   │   │   │   ├── brightcove-video-connect/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── brightcove.pot
│   │   │   │   ├── brix-page-builder/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── brix.pot
│   │   │   │   ├── broken-links-remover/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── browser-title-bar-animation/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wp-tbas.pot
│   │   │   │   ├── browser-window-stats/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── browser-window-stats.pot
│   │   │   │   ├── brozzme-blurb-lightbox-module-in-divi/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── brozzme-lightbox-blurb-fr_FR.po
│   │   │   │   ├── brozzme-change-username/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── brozzme-change-username.pot
│   │   │   │   ├── brozzme-colorize/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── brozzme-colorize.pot
│   │   │   │   ├── brozzme-fullwidth-divi/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── brozzme-fullwidth-divi.pot
│   │   │   │   ├── bstone-demo-importer/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── btb-full-width-section/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── btcpaywall/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── bu-learning-blocks/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bu-learning-blocks.pot
│   │   │   │   ├── bu-navigation/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bu-navigation.pot
│   │   │   │   ├── bu-section-editing/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bu-section-editing.pot
│   │   │   │   ├── buddy-bbpress-support-topic/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── buddypress/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── buddypress.pot
│   │   │   │   ├── buddypress-activity-tags/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-activity-tags-sr_RS.po
│   │   │   │   ├── buddypress-compliments/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── change_log.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-compliments-en_US.po
│   │   │   │   ├── buddypress-docs/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── buddypress-docs.pot
│   │   │   │   ├── buddypress-media/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── buddypress-media.po
│   │   │   │   ├── buddypress-message-attachment/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bp-msgat.pot
│   │   │   │   ├── buddypress-profile-progression/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bppp-de_DE.po
│   │   │   │   ├── buddypress-registration-groups-1/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── buddypress-registration-groups.pot
│   │   │   │   ├── buffer-my-post/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── buffer-my-post.pot
│   │   │   │   ├── bugherd-dashboard/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── plugin-name.pot
│   │   │   │   ├── bulk-delete/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bulk-delete.pot
│   │   │   │   ├── bulk-edit-categories-tags/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── bulk-edit-categories-tags.pot
│   │   │   │   ├── bulk-edit-events/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── bulk-edit-events.pot
│   │   │   │   ├── bulk-edit-posts-on-frontend/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── bulk-edit-posts-on-frontend.pot
│   │   │   │   ├── bulk-edit-user-profiles-in-spreadsheet/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── bulk-edit-user-profiles-in-spreadsheet.pot
│   │   │   │   ├── bulk-plugin-installation/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bulk-plugin-installation-es_ES.po
│   │   │   │   ├── bulk-plugin-toggle/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── bulk-term-editor/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bulk-term-editor.pot
│   │   │   │   ├── bulkpress-export/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bulkpress-export.pot
│   │   │   │   ├── bulky-bulk-edit-products-for-woo/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── bulletproof-security/
│   │   │   │   │   └── config_comment/
│   │   │   │   │       └── admin/
│   │   │   │   │           └── htaccess/
│   │   │   │   │               └── wpadmin-secure.htaccess
│   │   │   │   ├── bumbal/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bumbal.pot
│   │   │   │   ├── bunnycdnbunnyapi/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── buscape-wp-related-products/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── BWPRP-pt_BR.po
│   │   │   │   ├── business-block-widget/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── business-block-widget.pot
│   │   │   │   ├── business-directory-plugin/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── WPBDM.pot
│   │   │   │   ├── business-profile/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── business-profile.pot
│   │   │   │   ├── business-review/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── business-reviews.pot
│   │   │   │   ├── business-website-helper/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── button-with-fontawesome-icons-by-like-agency/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── lbfa-pl_PL.po
│   │   │   │   ├── buttons-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── buy-now-button-direct-checkout-quick-checkoutpurchase-button-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── buy-now-direct-checkout-for-woocommerce-hi_IN.po
│   │   │   │   ├── bwp-recaptcha/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── bwp-recaptcha.pot
│   │   │   │   ├── bxslider-integration/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bxsg.pot
│   │   │   │   ├── bypass-iframe-height-limit/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cab-fare-calculator/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── tblight.pot
│   │   │   │   ├── cache-control-by-cacholong/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── cache-images/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cache-images-fa_IR.po
│   │   │   │   ├── cache-seo-speed/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cal-embedder-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── language/
│   │   │   │   │           └── cal-embedder-lite.pot
│   │   │   │   ├── calculated-fields-for-acf/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── calculated-fields-for-acf.pot
│   │   │   │   ├── calculated-fields-form/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── caldera-forms/
│   │   │   │   │   └── javascript_comment/
│   │   │   │   │       └── assets/
│   │   │   │   │           └── js/
│   │   │   │   │               └── vue.js
│   │   │   │   ├── calendarista-basic-edition/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── calendarista-de_DE.po
│   │   │   │   ├── call-to-action-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── callme-form/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── callme-plugin-ru_RU.po
│   │   │   │   ├── campaign-monitor-dashboard/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── campaign-monitor-dashboard.pot
│   │   │   │   ├── candescent/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── canto/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── capture-and-convert/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── carbon-fields/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── card-oracle/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── card-oracle.pot
│   │   │   │   ├── carmo-woo-product-gtin/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── carmo-product-gtin-for-woocommerce-pt_PT.po
│   │   │   │   ├── carousel-glider-js/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cart-rest-api-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cart-rest-api-for-woocommerce.pot
│   │   │   │   ├── cartflows/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cartflows.pot
│   │   │   │   ├── casso-tu-dong-xac-nhan-thanh-toan-chuyen-khoan-ngan-hang/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── casso-wordpress-plugin-vi.po
│   │   │   │   ├── catalog-mode-pricing-enquiry-forms-promotions/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wmodes-tdm.pot
│   │   │   │   ├── categorize-pages/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── categorize-your-wishlist-for-woocomerceposts-custom-post-types/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── categorize-wishlist-woocomerce-posts-custom-post-types-ja.po
│   │   │   │   ├── category-archives-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── category-tag-tidy/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── category-tag-tidy-en.po
│   │   │   │   ├── catenis-blocks/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── catenis-blocks.pot
│   │   │   │   ├── catna-woo-name-your-price-and-offers/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── cbqe-edit-flow/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cbqe-edit-flow.pot
│   │   │   │   ├── cbtwittercard/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cbtwittercard-en_US.po
│   │   │   │   ├── cbxdropboxfilechooser/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cbxdropboxfilechooser-en_GB.po
│   │   │   │   ├── cbxform/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cbxform-en_GB.po
│   │   │   │   ├── cbxpoll/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cbxpoll-en_US.po
│   │   │   │   ├── cbxwooextendedorders/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cbxwooextendedorders-en_GB.po
│   │   │   │   ├── cbxwpslack/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cbxwpslack-en_GB.po
│   │   │   │   ├── cc-auto-activate-plugins/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── cc-manga-comic-reader/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lib/
│   │   │   │   │           └── codestar-framework/
│   │   │   │   │               └── languages/
│   │   │   │   │                   └── bn_BD.po
│   │   │   │   ├── cc-mu-plugins-loader/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── centrobill-payment-gateway/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── cestina-zalomeni-radku/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── bozimediazalomeni.pot
│   │   │   │   ├── cf-7-gutenberg/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cf-7-gutenberg.pot
│   │   │   │   ├── cf-geoplugin/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── cf-image-resizing/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── cf-images/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cf-images.pot
│   │   │   │   ├── cf7-blocks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cf7-conditional-load/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── cf7-conditional-load.pot
│   │   │   │   ├── cf7-constant-contact-fields-mapping/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cf7-constant-contact-fields-mapping.pot
│   │   │   │   ├── cf7-custom-validation-message/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cf7-custom-validation-message.pot
│   │   │   │   ├── cf7-editor-button/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── contact-form-7-editor-button.pot
│   │   │   │   ├── cf7-facebook-contactor/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── gsconnector-en_US.po
│   │   │   │   ├── cf7-file-download/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cf7-file-download.pot
│   │   │   │   ├── cf7-google-sheets-connector/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cf7-google-sheets-connector-en_US.po
│   │   │   │   ├── cf7-mountstride-crm-integration/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cf7-to-mountstride.pot
│   │   │   │   ├── cf7-proxy-ip/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cf7-repeatable-fields/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── cf7-sendinblue-opt-in-checkbox/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── cf7-signature/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cf7-signature.pot
│   │   │   │   ├── cf7-sms/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cf7-sms.pot
│   │   │   │   ├── cfonlinetest/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cfonlinetest-es.po
│   │   │   │   ├── chained-product-for-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── chained-quiz/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── chained-quiz.pot
│   │   │   │   ├── chamber-dashboard-events-calendar/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── change-password-e-mail/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── change-password-e-mail.pot
│   │   │   │   ├── change-payments-account/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── change-payments-account.pot
│   │   │   │   ├── chaport/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── charitable/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── charitable.pot
│   │   │   │   ├── charts-blocks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── chat-for-aesop-story-engine/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ase-chat.pot
│   │   │   │   ├── chat-robot/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── plugin-chat-robot.pot
│   │   │   │   ├── chatra-live-chat/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── chatra-live-chat-ru_RU.po
│   │   │   │   ├── chatster/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── chatster.pot
│   │   │   │   ├── chayall/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── chayall.pot
│   │   │   │   ├── checkbox-for-taxonomies/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── checkbox-for-taxonomies.pot
│   │   │   │   ├── checkout-add-on-woo-onepage/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── woo-onepage-checkout.pot
│   │   │   │   ├── checkout-field-customizer/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── checkout-upsell-funnel-for-woo/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── checkoutwc-lite/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── checkoutx/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── checkrobin/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── child-theme-configurator/
│   │   │   │   │   └── javascript_comment/
│   │   │   │   │       └── js/
│   │   │   │   │           └── chldthmcfg.js
│   │   │   │   ├── chillpay-payment-gateway/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── chinads-dropshipping-taobao-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── choco/
│   │   │   │   │   └── javascript_var/
│   │   │   │   │       └── js/
│   │   │   │   │           └── choco.js
│   │   │   │   ├── chuffed-widget/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── churchtithewp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── church-tithe-wp.pot
│   │   │   │   ├── cielo-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cielo-woocommerce.pot
│   │   │   │   ├── cip-dtac-for-give/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── cision-modules/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── citadela-directory-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── citadela-directory-lite.pot
│   │   │   │   ├── cities-shipping-zones-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── cities-shipping-zones-for-woocommerce.pot
│   │   │   │   ├── civicrm-admin-utilities/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── civicrm-admin-utilities.pot
│   │   │   │   ├── civicrm-wp-member-sync/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── civicrm-wp-member-sync.pot
│   │   │   │   ├── civil-comments/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── civil-comments.pot
│   │   │   │   ├── classic-quiz-feedback-survey/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cqfs.pot
│   │   │   │   ├── classic-widgets-with-block-based-widgets/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── classic-and-block-widgets.pot
│   │   │   │   ├── classified/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── classified.pot
│   │   │   │   ├── classifieds-wp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── classifieds-wp.pot
│   │   │   │   ├── clean-and-simple-contact-form-by-meg-nicholas/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── clean-and-simple-contact-form-by-meg-nicholas.pot
│   │   │   │   ├── clean-my-archives/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── clean-my-wp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── clean-my-wordpress.pot
│   │   │   │   ├── clean-options/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cleanoptions-de_DE.po
│   │   │   │   ├── cleaner-gallery/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cleaner-gallery.pot
│   │   │   │   ├── clear-autoptimize-cache-automatically/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── clear-cache-for-timber/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── clear-floats-button/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── clear-opcache/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── clearfy/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── clearfy-ru_RU.po
│   │   │   │   ├── cleverreach-newsletter-dashboard-widget/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── translations/
│   │   │   │   │           └── haet_cleverreach_dashboard-de_DE.po
│   │   │   │   ├── click-pledge-paid-memberships-pro/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── click-pledge-wpjobboard/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── change_log.txt
│   │   │   │   ├── clicksco-offerstack/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── clickship/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── clickship.pot
│   │   │   │   ├── clicksports-maps/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── clicksports-maps.pot
│   │   │   │   ├── clicky/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── clicky.pot
│   │   │   │   ├── client-power-tools/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── clocks-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cloud-search/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cloud2png/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── clou2png.pot
│   │   │   │   ├── cloudflare/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── composer.json
│   │   │   │   │   └── config_file/
│   │   │   │   │       └── config.js
│   │   │   │   ├── cloudtables/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── clust-client-portal/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── clust-wp-portal.pot
│   │   │   │   ├── cm-idin/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cm-idin.pot
│   │   │   │   ├── cmb2/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cmb2.pot
│   │   │   │   ├── co2counter/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── plugin-name.pot
│   │   │   │   ├── coblocks/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── coblocks.pot
│   │   │   │   ├── cocart-get-cart-enhanced/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cocart-get-cart-enhanced.pot
│   │   │   │   ├── cocart-jwt-authentication/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cocart-jwt-authentication.pot
│   │   │   │   ├── cocoon-scenery-color/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cocoon-scenery-color-en.po
│   │   │   │   ├── cod-network/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── code-for-cj-affiliate-network/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── code-generator/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── generate-wp.pot
│   │   │   │   ├── code-injection/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── code-injection.pot
│   │   │   │   ├── code-prettify-syntax-highlighter/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cpsh-ru_RU.po
│   │   │   │   ├── code-snippet-library/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── code_snippet-en_GB.po
│   │   │   │   ├── code-snippets/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── code-snippets.pot
│   │   │   │   ├── code-snippets-cpt/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dsgnwrks-code-snippets-cpt.pot
│   │   │   │   ├── code-to-widget/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── codechime-loader/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── codechime-loader.pot
│   │   │   │   ├── codedragon-smartcache/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── codeless-hotspot-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── codepen-embed-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── codepile/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── codistoconnect/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── codja-wc-ajax-search/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cj-wc-ajax-search.pot
│   │   │   │   ├── coinpaprika/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── coinpaprika-pl_PL.po
│   │   │   │   ├── colete-online/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── coleteonline-ro_RO.po
│   │   │   │   ├── colissimo-shipping-methods-for-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── colorlab/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── woocommerce-colorlab.pot
│   │   │   │   ├── colorlib-login-customizer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── colorlib-login-customizer.po
│   │   │   │   ├── columnify/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── come-back/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── come-back.pot
│   │   │   │   ├── comet-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── comet.pot
│   │   │   │   ├── coming-soon-by-boomdevs/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── coming-soon-counter-page-maintenance-mode-lacoming-soon/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── lasoon-en_CA.po
│   │   │   │   ├── coming2live/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── coming2live.pot
│   │   │   │   ├── comment-count-admin/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── comment-count-admin-de_DE.po
│   │   │   │   ├── comment-form-message/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── comment-form-message.pot
│   │   │   │   ├── comment-mail/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── comment-privileges-by-post/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── comment-privileges-by-post.pot
│   │   │   │   ├── comment_passive_all.html
│   │   │   │   ├── commentmailer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── commentmailer.pot
│   │   │   │   ├── commentpress-core/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── commentpress-core.pot
│   │   │   │   ├── comments-avatar-lazyload/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── comments-link-optimization/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── comments-user-column/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── comments-user-column.pot
│   │   │   │   ├── comments-widget-plus/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── comments-widget-plus.pot
│   │   │   │   ├── common-wish-and-bridal-lists/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── commonsbooking/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── commonsbooking.pot
│   │   │   │   ├── community-watch/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── community-watch.pot
│   │   │   │   ├── community-yard-sale/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── community-yard-sale.pot
│   │   │   │   ├── compactrss/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── compactrss.pot
│   │   │   │   ├── compe-woo-compare-products/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── complete-open-graph/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── complianz-terms-conditions/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── complianz-terms-conditions.pot
│   │   │   │   ├── composite-products-conditional-images-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── woocommerce-composite-products-conditional-images.pot
│   │   │   │   ├── conditional-logic-for-woo-product-add-ons/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── conekta-payment-gateway/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── conformis-cookie-banner/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── conformis-en_GB.po
│   │   │   │   ├── connect-daily-web-calendar/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── captions/
│   │   │   │   │           └── connect-daily-web-calendar-fr_FR.po
│   │   │   │   ├── connect-eduma-theme-to-discord/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.TXT
│   │   │   │   ├── connect-learndash-and-discord/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── connect-learnpress-discord-add-on/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.TXT
│   │   │   │   ├── connections-business-directory-certifications/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── connections-business-directory-facilities/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── connections-business-directory-local-time/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── constant-contact-api/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── constant-contact-api.pot
│   │   │   │   ├── consumer-financing-by-chargeafter/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── contact-form-7-extras/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cf7-extras.pot
│   │   │   │   ├── contact-form-7-getresponse-extension/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── contact-form-7-getresponse-extension.pot
│   │   │   │   ├── contact-form-query/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── contact-form-query.pot
│   │   │   │   ├── contact-list/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── contact-list.pot
│   │   │   │   ├── content-parts/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── content-promoter/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── contentpromoter.pot
│   │   │   │   ├── content-switcher/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── content-switcher-fr_FR.po
│   │   │   │   ├── contentblocks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── contestfriend/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── contestfriend.pot
│   │   │   │   ├── contributor-role-for-approved-comments/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── contributor-role-for-approved-comments.pot
│   │   │   │   ├── convatic/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── convert-speech-to-text-as-post/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── convertiser-widgets/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── convertiser-widgets.pot
│   │   │   │   ├── convertplug/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── convocations/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── convocations-fr_FR.po
│   │   │   │   ├── cookbook-hook-guide/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cookbook-hook-guide.pot
│   │   │   │   ├── cookie-jar/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── cookie-law-info/
│   │   │   │   │   └── javascript_comment/
│   │   │   │   │       └── js/
│   │   │   │   │           └── cookielawinfo.js
│   │   │   │   ├── cookiebot/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── langs/
│   │   │   │   │           └── cookiebot.pot
│   │   │   │   ├── cookiegenie/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── cookiegenie-nl_NL.po
│   │   │   │   ├── cookiehub/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── cookiepro/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wpcookiepro.pot
│   │   │   │   ├── cooking-recipe-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cool-admin-theme-lite-for-wp/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── catforwp.po
│   │   │   │   ├── copycraft/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── copycraft.pot
│   │   │   │   ├── copysmith-for-woocommerce/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cora-lite/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── core-rollback/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── core-rollback.pot
│   │   │   │   ├── coreactivity/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── cornell-notes/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cornerstone/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── corona-vat-germany/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cect.pot
│   │   │   │   ├── correos-oficial/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── correoswc.pot
│   │   │   │   ├── cosy-address-book/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cosy-address-book.pot
│   │   │   │   ├── counting-number-block/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── counting-number.pot
│   │   │   │   ├── courier-notices/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── course-scheduler-for-learndash/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── course-wizard-for-sensei/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── covid-19-live-tracking/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── jms-covid-19.pot
│   │   │   │   ├── cowidgets-elementor-addons/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── coyote/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── cpo-content-types/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── crazy-call-to-action-box/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── crea-listings/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── plugin-name.pot
│   │   │   │   ├── create-payment-stripe-gateway/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── uk_UA.po
│   │   │   │   ├── creative-commons-configurator-1/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── creative-commons-configurator-1.pot
│   │   │   │   ├── creative-mail-by-constant-contact/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── creeperbit-woo-accordion/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── cresta-posts-box/
│   │   │   │   │   └── style_comment/
│   │   │   │   │       └── css/
│   │   │   │   │           └── cresta-posts-box-style.css
│   │   │   │   ├── crm-hubspot-learndash-integration/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── crm-in-cloud-for-wc/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── crm-in-cloud-for-wc-it_IT.pot
│   │   │   │   ├── crm-salesforce-learndash-integration/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── cron-task-viewer-redux/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cron-task-viewer-redux.pot
│   │   │   │   ├── croquet-metaverse-web-showcase/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── croquet-metaverse-web-showcase.pot
│   │   │   │   ├── cross-domain-tracker-for-affiliatewp/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── crosswinds-blocks/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── crosswordsearch/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── crosswordsearch.pot
│   │   │   │   ├── crowdcue/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── crowdsignal-forms/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── crowdsignal-forms.pot
│   │   │   │   ├── crucial-real-estate/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── cryptex/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── Cryptex.pot
│   │   │   │   ├── crypto-payments-woo/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── Crypto-Payments-Woo.pot
│   │   │   │   ├── crypto-qr-code-wp/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── cryptocurrency-price-widget/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── crcpw-cryptocurrency-price-widget.pot
│   │   │   │   ├── cryptopanel-payment-gateway-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cryptopanel-payment-gateway-de_DE.po
│   │   │   │   ├── cryptum-nft/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cryptum-nft-domain.pot
│   │   │   │   ├── css3-buttons/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── default.pot
│   │   │   │   ├── csv-exporter-for-terms/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── et-csv.pot
│   │   │   │   ├── csv-to-db/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── src/
│   │   │   │   │           └── lang/
│   │   │   │   │               └── csv2db.pot
│   │   │   │   ├── cta-bar/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── ctc-countdown-timer-cookies/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ctc-countdown-timer-cookies.pot
│   │   │   │   ├── ctcl-floating-cart/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── cubecolour-caboodle/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cubecolour-caboodle.pot
│   │   │   │   ├── cubicfusion-admin-enhancer/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── culqi-full-integration/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── cultivate-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cultivate-for-woocommerce.pot
│   │   │   │   ├── curatewp-nested-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cwpnp.pot
│   │   │   │   ├── curatewp-related-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cwprp-en_US.po
│   │   │   │   ├── currencyr/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── default.po
│   │   │   │   ├── custom-admin-login/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── custom-advert-blocks-free/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── custom-blocks-free-ru_RU.po
│   │   │   │   ├── custom-authentication/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custauth.pot
│   │   │   │   ├── custom-bulkquick-edit/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-bulkquick-edit.pot
│   │   │   │   ├── custom-classes/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── custom-classes.pot
│   │   │   │   ├── custom-codes/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-codes.pot
│   │   │   │   ├── custom-content-portfolio/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── custom-content-types-by-pixelpillow/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── pixelpillow-custom-content-types-nl_NL.po
│   │   │   │   ├── custom-css-by-dev7studios/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── custom-css-js/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-css-js.pot
│   │   │   │   ├── custom-database-tables/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── langs/
│   │   │   │   │           └── custom-database-tables-ja.po
│   │   │   │   ├── custom-dokan-fields/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── custom-fields-account-registration-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-fields-account-for-woocommerce-registration.pot
│   │   │   │   ├── custom-header-extended/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── custom-help/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── custom-importer-exporter/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-importer-exporter.pot
│   │   │   │   ├── custom-javascript-editor/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-javascript-editor.pot
│   │   │   │   ├── custom-page-extensions/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── custom-page-extensions.pot
│   │   │   │   ├── custom-post-type-cleanup/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-post-type-cleanup.pot
│   │   │   │   ├── custom-post-type-maker/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── custom-post-type-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── cptm-ja.po
│   │   │   │   ├── custom-post-type-order/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cpto-fr_FR.po
│   │   │   │   ├── custom-post-type-parents/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-post-type-parents.pot
│   │   │   │   ├── custom-post-type-widget-blocks/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-post-type-widget-blocks.pot
│   │   │   │   ├── custom-posts-list-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── custom-registration-link/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── custom-registration-link-fr_FR.po
│   │   │   │   ├── custom-sidebars/
│   │   │   │   │   └── javascript_comment/
│   │   │   │   │       └── assets/
│   │   │   │   │           └── js/
│   │   │   │   │               └── cs-visibility.js
│   │   │   │   ├── custom-smilies-directory/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── jpm_csd.pot
│   │   │   │   ├── custom-template-learndash/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-template-learndash.pot
│   │   │   │   ├── custom-template-lifterlms/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-template-lifterlms.pot
│   │   │   │   ├── custom-testimonial/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── vendor/
│   │   │   │   │           └── testimonialmetaoption/
│   │   │   │   │               └── languages/
│   │   │   │   │                   └── zh_CN.po
│   │   │   │   ├── custom-toolbox/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── custom-toolbox-fr_FR.po
│   │   │   │   ├── custom-typekit-fonts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── custom-typekit-fonts.pot
│   │   │   │   ├── custom-wishlist/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── cwl-es_ES.po
│   │   │   │   ├── customer-area/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── composer.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cuar.pot
│   │   │   │   ├── customify-sites/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── customify-sites.pot
│   │   │   │   ├── customize-my-account-for-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── customize-woo/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── customize-woo.pot
│   │   │   │   ├── customizely/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── customizely.pot
│   │   │   │   ├── customizer-search/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── customizer-search.pot
│   │   │   │   ├── customizr-addons/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── en_US.po
│   │   │   │   ├── cvi-widgets/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cvi.pot
│   │   │   │   ├── cycle-blocks/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── cycle-blocks-ja.po
│   │   │   │   ├── daggerhart-openid-connect-generic/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── daily-maxim-365/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── daily-maxim-365.pot
│   │   │   │   ├── daily-snapshot-for-woocommerce-admin/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── mwb-dailyss-en_US.po
│   │   │   │   ├── danixland-countdown/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── danixland-countdown.pot
│   │   │   │   ├── dark-login-screen/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── langs/
│   │   │   │   │           └── dark_login_screen-en_AU.po
│   │   │   │   ├── dark-mode-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dark_mode_lite.pot
│   │   │   │   ├── dark-mode-toggle/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dark-mode-toggle.pot
│   │   │   │   ├── darwin-backup/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── dash-notifier/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dash-notifier.pot
│   │   │   │   ├── dashboard-columns/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── dashboard-linker/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dashboard-linker.pot
│   │   │   │   ├── dashboard-notes/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dashboard-notes.pot
│   │   │   │   ├── dashboard-welcome-for-beaver-builder/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dashly/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dashly-ru_RU.po
│   │   │   │   ├── dashview/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── dashview-de_DE.po
│   │   │   │   ├── database-analyzer/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── date-and-time-widget/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── date-time.pot
│   │   │   │   ├── davons-floating-admin-bar/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── davon-floating-admin-bar-de_DE.po
│   │   │   │   ├── db-access-adminer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── db-access-adminer.pot
│   │   │   │   ├── db-share-count/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── db-signatures/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── deau-api/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── deau-api-en_US.po
│   │   │   │   ├── debrandify/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dbrdify.pot
│   │   │   │   ├── debug-bar-rewrite-rules/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── decent-comments/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── deep-free-plus/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── deepcore/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── deep.pot
│   │   │   │   ├── default-attributes-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── i18n/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── default-attributes-for-woocommerce-he_IL.po
│   │   │   │   ├── defender-security/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wpdef-default.pot
│   │   │   │   ├── delete-expired-transients/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── delete-revision/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── delete-unscaled-images/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── delete-unscaled-images.pot
│   │   │   │   ├── delicious-recipes/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── delicious-recipes.pot
│   │   │   │   ├── delivengo/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wc_delivengo.pot
│   │   │   │   ├── delivery-area-with-google-maps/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── delivery-date-system-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── delivery-date-system.pot
│   │   │   │   ├── delucks-seo/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── language/
│   │   │   │   │           └── delucks-seo-de_DE_formal.po
│   │   │   │   ├── demo-bar/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── demo-bar.pot
│   │   │   │   ├── demo-importer-plus/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── demo-importer-plus.pot
│   │   │   │   ├── demoify-blocks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── demomentsomtres-wc-minimum-purchase-message/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── DeMomentSomTres-WC-minPurchaseMessage-ca.po
│   │   │   │   ├── demomentsomtres-woocommerce-minimum-purchase-message/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── DeMomentSomTres-WC-minPurchaseMessage-ca.po
│   │   │   │   ├── denade-translate/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── depay-payments-for-woocommerce/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── depay-woocommerce-payments.pot
│   │   │   │   ├── deposits-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── deposits-for-woocommerce.pot
│   │   │   │   ├── deposits-partial-payments-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── deposits-partial-payments-for-woocommerce.pot
│   │   │   │   ├── depublish-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── wp-depublish-posts.pot
│   │   │   │   ├── derweili-fb-chat/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── description-list-block/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── design-sidebar-using-page-builder/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── sidebar-using-page-builder.pot
│   │   │   │   ├── deskaddons-for-beaver-builder-lite/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dessky-responsive-slider/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dessky-security/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dev-debug-tools/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dev-studio/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── developer-tool/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dev-tool.pot
│   │   │   │   ├── device-detect/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── device-detect-fr_FR.po
│   │   │   │   ├── device-detector/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── dexonline-searchbox/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dexonline-searchbox-de_DE.po
│   │   │   │   ├── dezo-tools/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dezo-tools.pot
│   │   │   │   ├── df-pagination/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── I18n/
│   │   │   │   │           └── df-pagination.pot
│   │   │   │   ├── dgxpco/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── dh-dashboard-quick-content-access/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dh-widget-dashqa-de_DE.po
│   │   │   │   ├── dh-new-mark/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dh-new-mark-ja.po
│   │   │   │   ├── dialogue-layout/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── language/
│   │   │   │   │           └── dialogue-layout.pot
│   │   │   │   ├── dibs-for-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dicentis-podcast/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── digest/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── digest.pot
│   │   │   │   ├── digital-certainty/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── plugin-name.pot
│   │   │   │   ├── digitalpush/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── insert-headers-and-footers.pot
│   │   │   │   ├── diller-loyalty/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── diller-loyalty.pot
│   │   │   │   ├── dirt-directory-client/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dirt-directory-client.pot
│   │   │   │   ├── disable-automatic-theme-plugin-updates/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── disable-plugin-theme-auto-updates.pot
│   │   │   │   ├── disable-blog/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── disable-directory-listings/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── disable-directory-listings.pot
│   │   │   │   ├── disable-emails/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── disable-embeds/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── disable-feeds/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── disable-feeds.pot
│   │   │   │   ├── disable-flamingo-addressbook/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── disable-right-click-powered-by-pixterme/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── pixterme.pot
│   │   │   │   ├── disable-search/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── disable-search-slug/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── disable-title/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── disable_title-de_DE.po
│   │   │   │   ├── disclaimer-popup/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── assets/
│   │   │   │   │           └── mb-settings-page/
│   │   │   │   │               └── languages/
│   │   │   │   │                   └── default.pot
│   │   │   │   ├── discontinued-product-stock-status-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── discontinued-products-stock-status.pot
│   │   │   │   ├── dispensary-coupons/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── display-a-meta-field-as-block/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── mfb.pot
│   │   │   │   ├── display-featured-image-genesis/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── display-featured-image-genesis.pot
│   │   │   │   ├── display-git-status/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── display-git-status.pot
│   │   │   │   ├── display-post-reading-time/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── Changelog.txt
│   │   │   │   ├── display-post-types/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── display-post-types.pot
│   │   │   │   ├── display-posts-shortcode/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── display-taxes-on-product-page-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── mlfactory_tax_plugin-de_DE.po
│   │   │   │   ├── display-terms-shortcode/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── display-terms-shortcode.pot
│   │   │   │   ├── distributor-remote-quickedit/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── dlocal-go-payments-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── directo-pago-payments-for-woocommerce-es_PE.po
│   │   │   │   ├── dn-footer-contacts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dn-footer-contacts-it_IT.po
│   │   │   │   ├── dn-shopping-discounts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dn_discounts-it_IT.po
│   │   │   │   ├── do-not-send-emails-if/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── do-not-send-emails-if.pot
│   │   │   │   ├── dobsondev-shortcodes/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dobsondev-weather/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── doc8/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── docu-en_US.pot
│   │   │   │   ├── docket-cache/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── docket-cache.pot
│   │   │   │   ├── docollipics-faustball-de/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── docs2site/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── docs2site.pot
│   │   │   │   ├── document-embedder-addons-for-elementor/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── b-addon.pot
│   │   │   │   ├── document-engine/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── document-engine.pot
│   │   │   │   ├── document-gallery/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── document-generator-for-openapi/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── document-library-lite/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── document-library-lite.pot
│   │   │   │   ├── documentation/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dodebug/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── dodebug.pot
│   │   │   │   ├── dokan-invoice/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dokan-invoice.pot
│   │   │   │   ├── dokan-lite/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dokan-lite.pot
│   │   │   │   ├── dokan-migrator/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dokan-migrator.pot
│   │   │   │   ├── dokan-plus/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dokan-vendor-dashboard/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dokan-vendor-dashboard.pot
│   │   │   │   ├── dolibarr-rest-api/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── domyaccounting/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── rtwdma-domyaccounting.pot
│   │   │   │   ├── doppelme-avatars/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── double-image/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── double-image.pot
│   │   │   │   ├── download-after-email/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dae.pot
│   │   │   │   ├── download-list-block-with-icons/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── download-media-file/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── download-media-file.pot
│   │   │   │   ├── download-monitor/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── download-monitor.pot
│   │   │   │   ├── download-monitor-learndash-integration/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── download-monitor-paid-membership-pro-integration/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── download-monitor-restrict-content-integration/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── download-plugins-dashboard/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── langs/
│   │   │   │   │           └── download-plugins-dashboard.pot
│   │   │   │   ├── downloadio/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── downloadio.pot
│   │   │   │   ├── dozent/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dozent.pot
│   │   │   │   ├── dozent-lms/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dozent-lms.pot
│   │   │   │   ├── dozent-lms-certificate/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dozent-lms-certificate.pot
│   │   │   │   ├── dplayer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dplayer.pot
│   │   │   │   ├── dps-pxpay-for-wp-ecommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── dr-widgets-blocks/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dr-widgets-blocks.pot
│   │   │   │   ├── dracula-dark-mode/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dracula-dark-mode.pot
│   │   │   │   ├── drag-drop-featured-image-improved/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dragandropimproved.pot
│   │   │   │   ├── dragon-video/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── drastic-table-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── drastic-table-manager.pot
│   │   │   │   ├── driveworks-block-form-embed/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── dropdown-content/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dropdowncontent.pot
│   │   │   │   ├── dropp-pay-per-use/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dropp-pay-tipping/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dropship-sell-your-art/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── dropshipping-with-ebay-for-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dropshipping-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dropshipping-woocommerce.pot
│   │   │   │   ├── dropshipping-xml-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── dropshipping-xml-for-woocommerce.pot
│   │   │   │   ├── ds-suit/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── en_US.po
│   │   │   │   ├── dse-divi-section-enhancer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dse-divi-section-enhancer.pot
│   │   │   │   ├── dummy-images/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── duogeek-blocks/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dggb-blocks.pot
│   │   │   │   ├── duplicate-pages-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── duplicate-pages-posts.pot
│   │   │   │   ├── duplicate-term/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── duplicate-term.pot
│   │   │   │   ├── dvk-social-sharing/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── dxtag-auto-listings/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── guaven_dxtag.pot
│   │   │   │   ├── dynamic-asset-versioning/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dynamic-asset-versioning.pot
│   │   │   │   ├── dynamic-block-content/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── dynamic-content-for-elementor/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── dynamic-coupons-with-zendesk-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── zndskcoupon-en_US.po
│   │   │   │   ├── dynamic-seo-child-pages/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── dynamic-seo-child-pages.pot
│   │   │   │   ├── dynamic-text-field-for-contact-form-7/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── dynamic-text-field-for-contact-form-7.pot
│   │   │   │   ├── dynamically-display-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── uk_UA.po
│   │   │   │   ├── e-commerce-by-salescart/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── e-commerce-mailcheck/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── e-commerce-payment-gateway-kevin/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── e-connector-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── e-connector-for-woocommerce.pot
│   │   │   │   ├── e-nkap-woocommerce-gateway/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── easing-slider/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easingslider.pot
│   │   │   │   ├── easy-ad-picker/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easyadpicker-nl_NL.po
│   │   │   │   ├── easy-attendance/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-attendance-en_US.po
│   │   │   │   ├── easy-blog-ideas/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── __pig_.pot
│   │   │   │   ├── easy-code-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── locals/
│   │   │   │   │           └── languages/
│   │   │   │   │               └── css-javascript-toolbox.pot
│   │   │   │   ├── easy-contact-form-pro/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelogs.txt
│   │   │   │   ├── easy-content-protector/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── easy-content-protector.pot
│   │   │   │   ├── easy-custom-error-pages/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── easy-custom-js-and-css/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── easy-custom-oceanwp-shop/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-custom-oceanwp-shop-fr_FR.po
│   │   │   │   ├── easy-customizer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-customizer.pot
│   │   │   │   ├── easy-customizer-for-woocommerce-pdf-invoices/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── easy-digital-downloads/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-digital-downloads.pot
│   │   │   │   ├── easy-digital-downloads-free-link/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── easy-digital-downloads-payment-gateway-by-novalnet/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── edd-novalnet.pot
│   │   │   │   ├── easy-excerpt/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-excerpt.po
│   │   │   │   ├── easy-featured-images/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── easy-featured-images-hu_HU.po
│   │   │   │   ├── easy-feedback/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── easy-flipbook-i-widget/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-flipbook.pot
│   │   │   │   ├── easy-folders/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-folders.pot
│   │   │   │   ├── easy-google-fonts/
│   │   │   │   │   └── javascript_comment/
│   │   │   │   │       └── assets/
│   │   │   │   │           └── js/
│   │   │   │   │               └── admin.js
│   │   │   │   ├── easy-image-optimizer/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── easy-plugin-demo/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-plugin-demo.pot
│   │   │   │   ├── easy-plugin-stats/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-plugin-stats.pot
│   │   │   │   ├── easy-post-types-fields/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-post-types-fields.pot
│   │   │   │   ├── easy-pricing-table-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── easy-pricing-table-manager.po
│   │   │   │   ├── easy-primary-category/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-primary-category.pot
│   │   │   │   ├── easy-product-bundles-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── asnp-easy-product-bundles.pot
│   │   │   │   ├── easy-property-listings/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-property-listings.pot
│   │   │   │   ├── easy-recent-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── langs/
│   │   │   │   │           └── easy-recent-posts-de_DE.po
│   │   │   │   ├── easy-retweet/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-retweet.pot
│   │   │   │   ├── easy-scheduled-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── langs/
│   │   │   │   │           └── easy-recent-posts-de_DE.po
│   │   │   │   ├── easy-similar-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── langs/
│   │   │   │   │           └── easy-similar-posts-de_DE.po
│   │   │   │   ├── easy-social-sharing/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-social-sharing.pot
│   │   │   │   ├── easy-static-maps/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── easy-static-maps-it_IT.po
│   │   │   │   ├── easy-support-videos/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-support-videos.pot
│   │   │   │   ├── easy-swipebox/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-swipebox.pot
│   │   │   │   ├── easy-taxonomy-support/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── ez-taxonomy-support.pot
│   │   │   │   ├── easy-testimonial-rotator/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-testimonial-rotator.pot
│   │   │   │   ├── easy-theme-plugin-switcher/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-wp-tp-switcher.pot
│   │   │   │   ├── easy-timer/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-timer-fr_FR.po
│   │   │   │   ├── easy-user-registration/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-user-registration.pot
│   │   │   │   ├── easy-woocommerce-discounts/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── easy-woocommerce-discounts.pot
│   │   │   │   ├── easymega/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── eazy-ad-unblocker/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── eazy-ad-unblocker-de_DE.po
│   │   │   │   ├── eazy-image-slider-block/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── eazyimagesliderblock-de_DE.po
│   │   │   │   ├── eazyable/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── eazyable.pot
│   │   │   │   ├── eazyfilter-for-woocommerce/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── ebanqo-widget/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ebanqo-widget.pot
│   │   │   │   ├── ec-links/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── echo-show-ids/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── eclear-spot/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── ecomail-elementor-form-integration/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── edd-advanced-discounts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── edd-advanced-discounts.pot
│   │   │   │   ├── edd-blocks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── edd-bulk-sale-price/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── edd-card/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── edd-card.pot
│   │   │   │   ├── edd-download-info/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── edd-download-info.pot
│   │   │   │   ├── edd-first-time-buyers-gift/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── edd-mark-as-add-on/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── edd-mark-as-addon.pot
│   │   │   │   ├── edd-multilingual/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── edd-payu-latam-gateway/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wpas-edd-payu-latam-en_US.po
│   │   │   │   ├── edd-purchase-details/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── edd-purchase-details.pot
│   │   │   │   ├── edd-variable-defaults-update/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.txt
│   │   │   │   ├── edit-author-slug/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── CHANGELOG.md
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── edit-author-slug.pot
│   │   │   │   ├── edit-parent-comment-id/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── edit-parent-comment-id-ru_RU.po
│   │   │   │   ├── edit-recent-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── edit-recent-posts.pot
│   │   │   │   ├── editor-bridge/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── editor-bridge-ja.po
│   │   │   │   ├── editor-custom-color-palette/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── editor-custom-color-palette-fr_FR.po
│   │   │   │   ├── editor-for-timber/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── composer.json
│   │   │   │   ├── editorial-access-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── editorial-access-manager.pot
│   │   │   │   ├── editors-note/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── educare/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.md
│   │   │   │   ├── efavourite-posts/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── efavourite-posts.pot
│   │   │   │   ├── eidlogin/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── eidlogin-de_DE.po
│   │   │   │   ├── eight-day-week-print-workflow/
│   │   │   │   │   ├── composer_file/
│   │   │   │   │   │   └── package.json
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── eight-day-week.pot
│   │   │   │   ├── eighties-bbpress/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── eighties-bbpress-en_US.pot
│   │   │   │   ├── ekiline-block-collection/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ekiline-collection-es_MX.po
│   │   │   │   ├── eladdon/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── elementaddon.pot
│   │   │   │   ├── elasticpress/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── lang/
│   │   │   │   │           └── elasticpress.pot
│   │   │   │   ├── electrifying-engineering-portfolio/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── electrifying-engineering-portfolio.pot
│   │   │   │   ├── elegant-responsive-content-slider/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── ercs.pot
│   │   │   │   ├── elemendas-addons/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── elemendas-addons.pot
│   │   │   │   ├── element-capability-manager/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── english.po
│   │   │   │   ├── elemental-theme-builder/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── elemental-theme-builder.pot
│   │   │   │   ├── elementify-visual-widgets/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── elementify-visual-widgets.pot
│   │   │   │   ├── elementor/
│   │   │   │   │   └── javascript_comment/
│   │   │   │   │       └── assets/
│   │   │   │   │           └── js/
│   │   │   │   │               └── admin-feedback.js
│   │   │   │   ├── elementor-addon-widgets/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── elementor-pro/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── elementor-templater/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── elementpress/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── elform/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── elform.pot
│   │   │   │   ├── elfsight-addons-for-elementor/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── elfsight-blocks/
│   │   │   │   │   └── composer_file/
│   │   │   │   │       └── package.json
│   │   │   │   ├── elgg-bridge/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── CHANGELOG.md
│   │   │   │   ├── elmo-privacylab/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── elmo.pot
│   │   │   │   ├── email-address-encoder/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── email-address-encoder.pot
│   │   │   │   ├── email-download-link/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── email-fields-for-woocommerce/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── email-fields-for-woocommerce.pot
│   │   │   │   ├── email-log/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── email-log.pot
│   │   │   │   ├── email-notice-wp-document-revisions/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── wpdr-email-notice.pot
│   │   │   │   ├── email-posts-to-subscribers/
│   │   │   │   │   └── change_log/
│   │   │   │   │       └── changelog.txt
│   │   │   │   ├── email-subscribe/
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── email-subscribe.pot
│   │   │   │   ├── email-subscribers/
│   │   │   │   │   ├── change_log/
│   │   │   │   │   │   └── changelog.txt
│   │   │   │   │   └── translation_file/
│   │   │   │   │       └── languages/
│   │   │   │   │           └── email-subscribers-pt_BR.po
│   │   │   │   ├── email-subscribers-advanced-f
Download .txt
SYMBOL INDEX (2086 symbols across 167 files)

FILE: app/controllers/aliases.rb
  type WPScan (line 3) | module WPScan
    type Controller (line 4) | module Controller
      class Aliases (line 6) | class Aliases < CMSScanner::Controller::Base
        method cli_options (line 7) | def cli_options

FILE: app/controllers/core.rb
  type WPScan (line 3) | module WPScan
    type Controller (line 4) | module Controller
      class Core (line 6) | class Core < CMSScanner::Controller::Core
        method cli_options (line 8) | def cli_options
        method local_db (line 23) | def local_db
        method update_db_required? (line 28) | def update_db_required?
        method update_db (line 48) | def update_db
        method before_scan (line 55) | def before_scan
        method check_wordpress_state (line 72) | def check_wordpress_state
        method load_server_module (line 90) | def load_server_module

FILE: app/controllers/custom_directories.rb
  type WPScan (line 3) | module WPScan
    type Controller (line 4) | module Controller
      class CustomDirectories (line 7) | class CustomDirectories < CMSScanner::Controller::Base
        method cli_options (line 8) | def cli_options
        method before_scan (line 17) | def before_scan

FILE: app/controllers/enumeration.rb
  type WPScan (line 6) | module WPScan
    type Controller (line 7) | module Controller
      class Enumeration (line 9) | class Enumeration < CMSScanner::Controller::Base
        method run (line 10) | def run

FILE: app/controllers/enumeration/cli_options.rb
  type WPScan (line 3) | module WPScan
    type Controller (line 4) | module Controller
      class Enumeration (line 6) | class Enumeration < CMSScanner::Controller::Base
        method cli_options (line 7) | def cli_options
        method cli_enum_choices (line 14) | def cli_enum_choices
        method cli_plugins_opts (line 49) | def cli_plugins_opts
        method cli_themes_opts (line 77) | def cli_themes_opts
        method cli_timthumbs_opts (line 106) | def cli_timthumbs_opts
        method cli_config_backups_opts (line 121) | def cli_config_backups_opts
        method cli_db_exports_opts (line 136) | def cli_db_exports_opts
        method cli_medias_opts (line 151) | def cli_medias_opts
        method cli_users_opts (line 162) | def cli_users_opts

FILE: app/controllers/enumeration/enum_methods.rb
  type WPScan (line 3) | module WPScan
    type Controller (line 4) | module Controller
      class Enumeration (line 6) | class Enumeration < CMSScanner::Controller::Base
        method enum_message (line 11) | def enum_message(type, detection_mode)
        method enum_detection_message (line 28) | def enum_detection_message(detection_mode)
        method default_opts (line 41) | def default_opts(type)
        method enum_plugins? (line 58) | def enum_plugins?(opts)
        method enum_plugins (line 62) | def enum_plugins
        method plugins_list_from_opts (line 89) | def plugins_list_from_opts(opts)
        method enum_themes? (line 105) | def enum_themes?(opts)
        method enum_themes (line 109) | def enum_themes
        method themes_list_from_opts (line 136) | def themes_list_from_opts(opts)
        method enum_timthumbs (line 149) | def enum_timthumbs
        method enum_config_backups (line 156) | def enum_config_backups
        method enum_db_exports (line 163) | def enum_db_exports
        method enum_medias (line 170) | def enum_medias
        method enum_users? (line 185) | def enum_users?(opts)
        method enum_users (line 189) | def enum_users
        method enum_users_range (line 202) | def enum_users_range

FILE: app/controllers/main_theme.rb
  type WPScan (line 3) | module WPScan
    type Controller (line 4) | module Controller
      class MainTheme (line 6) | class MainTheme < CMSScanner::Controller::Base
        method cli_options (line 7) | def cli_options
        method run (line 17) | def run

FILE: app/controllers/password_attack.rb
  type WPScan (line 3) | module WPScan
    type Controller (line 4) | module Controller
      class PasswordAttack (line 6) | class PasswordAttack < CMSScanner::Controller::Base
        method cli_options (line 7) | def cli_options
        method attack_opts (line 28) | def attack_opts
        method run (line 35) | def run
        method attacker (line 60) | def attacker
        method xmlrpc (line 65) | def xmlrpc
        method attacker_from_cli_options (line 70) | def attacker_from_cli_options
        method xmlrpc_get_users_blogs_enabled? (line 90) | def xmlrpc_get_users_blogs_enabled?
        method attacker_from_automatic_detection (line 103) | def attacker_from_automatic_detection
        method users (line 120) | def users

FILE: app/controllers/vuln_api.rb
  type WPScan (line 3) | module WPScan
    type Controller (line 4) | module Controller
      class VulnApi (line 6) | class VulnApi < CMSScanner::Controller::Base
        method cli_options (line 9) | def cli_options
        method before_scan (line 18) | def before_scan
        method after_scan (line 30) | def after_scan

FILE: app/controllers/wp_version.rb
  type WPScan (line 3) | module WPScan
    type Controller (line 4) | module Controller
      class WpVersion (line 6) | class WpVersion < CMSScanner::Controller::Base
        method cli_options (line 7) | def cli_options
        method before_scan (line 19) | def before_scan
        method run (line 23) | def run

FILE: app/finders/config_backups.rb
  type WPScan (line 5) | module WPScan
    type Finders (line 6) | module Finders
      type ConfigBackups (line 7) | module ConfigBackups
        class Base (line 9) | class Base
          method initialize (line 13) | def initialize(target)

FILE: app/finders/config_backups/known_filenames.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type ConfigBackups (line 5) | module ConfigBackups
        class KnownFilenames (line 7) | class KnownFilenames < CMSScanner::Finders::Finder
          method aggressive (line 15) | def aggressive(opts = {})
          method potential_urls (line 31) | def potential_urls(opts = {})
          method create_progress_bar (line 41) | def create_progress_bar(opts = {})

FILE: app/finders/db_exports.rb
  type WPScan (line 5) | module WPScan
    type Finders (line 6) | module Finders
      type DbExports (line 7) | module DbExports
        class Base (line 9) | class Base
          method initialize (line 13) | def initialize(target)

FILE: app/finders/db_exports/known_locations.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type DbExports (line 5) | module DbExports
        class KnownLocations (line 7) | class KnownLocations < CMSScanner::Finders::Finder
          method valid_response_codes (line 10) | def valid_response_codes
          method aggressive (line 21) | def aggressive(opts = {})
          method full_request_params (line 37) | def full_request_params
          method potential_urls (line 45) | def potential_urls(opts = {})
          method domain_name (line 70) | def domain_name
          method domain_name_with_sub (line 78) | def domain_name_with_sub
          method create_progress_bar (line 97) | def create_progress_bar(opts = {})

FILE: app/finders/interesting_findings.rb
  type WPScan (line 18) | module WPScan
    type Finders (line 19) | module Finders
      type InterestingFindings (line 20) | module InterestingFindings
        class Base (line 22) | class Base < CMSScanner::Finders::InterestingFindings::Base
          method initialize (line 24) | def initialize(target)

FILE: app/finders/interesting_findings/backup_db.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type InterestingFindings (line 5) | module InterestingFindings
        class BackupDB (line 7) | class BackupDB < CMSScanner::Finders::Finder
          method aggressive (line 9) | def aggressive(_opts = {})

FILE: app/finders/interesting_findings/debug_log.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type InterestingFindings (line 5) | module InterestingFindings
        class DebugLog (line 7) | class DebugLog < CMSScanner::Finders::Finder
          method aggressive (line 9) | def aggressive(_opts = {})

FILE: app/finders/interesting_findings/duplicator_installer_log.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type InterestingFindings (line 5) | module InterestingFindings
        class DuplicatorInstallerLog (line 7) | class DuplicatorInstallerLog < CMSScanner::Finders::Finder
          method aggressive (line 9) | def aggressive(_opts = {})

FILE: app/finders/interesting_findings/emergency_pwd_reset_script.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type InterestingFindings (line 5) | module InterestingFindings
        class EmergencyPwdResetScript (line 7) | class EmergencyPwdResetScript < CMSScanner::Finders::Finder
          method aggressive (line 9) | def aggressive(_opts = {})

FILE: app/finders/interesting_findings/full_path_disclosure.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type InterestingFindings (line 5) | module InterestingFindings
        class FullPathDisclosure (line 7) | class FullPathDisclosure < CMSScanner::Finders::Finder
          method aggressive (line 9) | def aggressive(_opts = {})

FILE: app/finders/interesting_findings/mu_plugins.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type InterestingFindings (line 5) | module InterestingFindings
        class MuPlugins (line 7) | class MuPlugins < CMSScanner::Finders::Finder
          method passive (line 9) | def passive(_opts = {})
          method aggressive (line 25) | def aggressive(_opts = {})

FILE: app/finders/interesting_findings/multisite.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type InterestingFindings (line 5) | module InterestingFindings
        class Multisite (line 7) | class Multisite < CMSScanner::Finders::Finder
          method aggressive (line 9) | def aggressive(_opts = {})

FILE: app/finders/interesting_findings/php_disabled.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type InterestingFindings (line 5) | module InterestingFindings
        class PHPDisabled (line 7) | class PHPDisabled < CMSScanner::Finders::Finder
          method aggressive (line 11) | def aggressive(_opts = {})

FILE: app/finders/interesting_findings/readme.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type InterestingFindings (line 5) | module InterestingFindings
        class Readme (line 7) | class Readme < CMSScanner::Finders::Finder
          method aggressive (line 9) | def aggressive(_opts = {})
          method potential_files (line 22) | def potential_files

FILE: app/finders/interesting_findings/registration.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type InterestingFindings (line 5) | module InterestingFindings
        class Registration (line 7) | class Registration < CMSScanner::Finders::Finder
          method passive (line 9) | def passive(_opts = {})
          method aggressive (line 14) | def aggressive(_opts = {})

FILE: app/finders/interesting_findings/tmm_db_migrate.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type InterestingFindings (line 5) | module InterestingFindings
        class TmmDbMigrate (line 7) | class TmmDbMigrate < CMSScanner::Finders::Finder
          method aggressive (line 9) | def aggressive(_opts = {})

FILE: app/finders/interesting_findings/upload_directory_listing.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type InterestingFindings (line 5) | module InterestingFindings
        class UploadDirectoryListing (line 7) | class UploadDirectoryListing < CMSScanner::Finders::Finder
          method aggressive (line 9) | def aggressive(_opts = {})

FILE: app/finders/interesting_findings/upload_sql_dump.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type InterestingFindings (line 5) | module InterestingFindings
        class UploadSQLDump (line 7) | class UploadSQLDump < CMSScanner::Finders::Finder
          method aggressive (line 11) | def aggressive(_opts = {})

FILE: app/finders/interesting_findings/wp_cron.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type InterestingFindings (line 5) | module InterestingFindings
        class WPCron (line 7) | class WPCron < CMSScanner::Finders::Finder
          method aggressive (line 9) | def aggressive(_opts = {})
          method wp_cron_url (line 17) | def wp_cron_url

FILE: app/finders/main_theme.rb
  type WPScan (line 9) | module WPScan
    type Finders (line 10) | module Finders
      type MainTheme (line 11) | module MainTheme
        class Base (line 13) | class Base
          method initialize (line 17) | def initialize(target)

FILE: app/finders/main_theme/css_style_in_404_page.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type MainTheme (line 5) | module MainTheme
        class CssStyleIn404Page (line 7) | class CssStyleIn404Page < CssStyleInHomepage
          method passive (line 8) | def passive(opts = {})

FILE: app/finders/main_theme/css_style_in_homepage.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type MainTheme (line 5) | module MainTheme
        class CssStyleInHomepage (line 7) | class CssStyleInHomepage < CMSScanner::Finders::Finder
          method create_theme (line 10) | def create_theme(slug, style_url, opts)
          method passive (line 18) | def passive(opts = {})
          method passive_from_css_href (line 22) | def passive_from_css_href(res, opts)
          method passive_from_style_code (line 31) | def passive_from_style_code(res, opts)

FILE: app/finders/main_theme/urls_in_404_page.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type MainTheme (line 5) | module MainTheme
        class UrlsIn404Page (line 7) | class UrlsIn404Page < UrlsInHomepage
          method page_res (line 9) | def page_res

FILE: app/finders/main_theme/urls_in_homepage.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type MainTheme (line 5) | module MainTheme
        class UrlsInHomepage (line 7) | class UrlsInHomepage < CMSScanner::Finders::Finder
          method passive (line 13) | def passive(opts = {})
          method page_res (line 26) | def page_res

FILE: app/finders/main_theme/woo_framework_meta_generator.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type MainTheme (line 5) | module MainTheme
        class WooFrameworkMetaGenerator (line 7) | class WooFrameworkMetaGenerator < CMSScanner::Finders::Finder
          method passive (line 12) | def passive(opts = {})

FILE: app/finders/medias.rb
  type WPScan (line 5) | module WPScan
    type Finders (line 6) | module Finders
      type Medias (line 7) | module Medias
        class Base (line 9) | class Base
          method initialize (line 13) | def initialize(target)

FILE: app/finders/medias/attachment_brute_forcing.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Medias (line 5) | module Medias
        class AttachmentBruteForcing (line 7) | class AttachmentBruteForcing < CMSScanner::Finders::Finder
          method aggressive (line 14) | def aggressive(opts = {})
          method target_urls (line 30) | def target_urls(opts = {})
          method create_progress_bar (line 40) | def create_progress_bar(opts = {})

FILE: app/finders/passwords/wp_login.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Passwords (line 5) | module Passwords
        class WpLogin (line 7) | class WpLogin < CMSScanner::Finders::Finder
          method login_request (line 10) | def login_request(username, password)
          method valid_credentials? (line 14) | def valid_credentials?(response)
          method errored_response? (line 19) | def errored_response?(response)

FILE: app/finders/passwords/xml_rpc.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Passwords (line 5) | module Passwords
        class XMLRPC (line 7) | class XMLRPC < CMSScanner::Finders::Finder
          method login_request (line 10) | def login_request(username, password)
          method valid_credentials? (line 14) | def valid_credentials?(response)
          method errored_response? (line 18) | def errored_response?(response)

FILE: app/finders/passwords/xml_rpc_multicall.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Passwords (line 5) | module Passwords
        class XMLRPCMulticall (line 8) | class XMLRPCMulticall < CMSScanner::Finders::Finder
          method do_multi_call (line 13) | def do_multi_call(users, passwords)
          method passwords_from_wordlist (line 29) | def passwords_from_wordlist(file, passwords_size)
          method attack (line 58) | def attack(users, wordlist_path, opts = {})
          method passwords_size (line 115) | def passwords_size(max_passwords, users_size)
          method check_and_output_errors (line 123) | def check_and_output_errors(res)

FILE: app/finders/plugin_version.rb
  type WPScan (line 5) | module WPScan
    type Finders (line 6) | module Finders
      type PluginVersion (line 7) | module PluginVersion
        class Base (line 9) | class Base
          method initialize (line 13) | def initialize(plugin)
          method create_and_load_dynamic_versions_finders (line 22) | def create_and_load_dynamic_versions_finders(plugin)

FILE: app/finders/plugin_version/readme.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type PluginVersion (line 5) | module PluginVersion
        class Readme (line 7) | class Readme < CMSScanner::Finders::Finder
          method aggressive (line 9) | def aggressive(_opts = {})
          method version_numbers (line 33) | def version_numbers(body)
          method from_stable_tag (line 50) | def from_stable_tag(body)
          method from_changelog_section (line 61) | def from_changelog_section(body)

FILE: app/finders/plugins.rb
  type WPScan (line 15) | module WPScan
    type Finders (line 16) | module Finders
      type Plugins (line 17) | module Plugins
        class Base (line 19) | class Base
          method initialize (line 23) | def initialize(target)

FILE: app/finders/plugins/body_pattern.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Plugins (line 5) | module Plugins
        class BodyPattern (line 7) | class BodyPattern < Finders::DynamicFinder::WpItems::Finder
          method process_response (line 17) | def process_response(opts, response, slug, klass, config)

FILE: app/finders/plugins/comment.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Plugins (line 5) | module Plugins
        class Comment (line 7) | class Comment < Finders::DynamicFinder::WpItems::Finder
          method process_response (line 17) | def process_response(opts, response, slug, klass, config)

FILE: app/finders/plugins/config_parser.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Plugins (line 5) | module Plugins
        class ConfigParser (line 7) | class ConfigParser < Finders::DynamicFinder::WpItems::Finder
          method _process_response (line 17) | def _process_response(_opts, _response, slug, klass, config)

FILE: app/finders/plugins/header_pattern.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Plugins (line 5) | module Plugins
        class HeaderPattern (line 7) | class HeaderPattern < Finders::DynamicFinder::WpItems::Finder
          method passive (line 13) | def passive(opts = {})
          method aggressive (line 37) | def aggressive(_opts = {})

FILE: app/finders/plugins/javascript_var.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Plugins (line 5) | module Plugins
        class JavascriptVar (line 7) | class JavascriptVar < Finders::DynamicFinder::WpItems::Finder
          method process_response (line 17) | def process_response(opts, response, slug, klass, config)

FILE: app/finders/plugins/known_locations.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Plugins (line 5) | module Plugins
        class KnownLocations (line 7) | class KnownLocations < CMSScanner::Finders::Finder
          method valid_response_codes (line 11) | def valid_response_codes
          method aggressive (line 19) | def aggressive(opts = {})
          method target_urls (line 39) | def target_urls(opts = {})
          method create_progress_bar (line 50) | def create_progress_bar(opts = {})

FILE: app/finders/plugins/query_parameter.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Plugins (line 5) | module Plugins
        class QueryParameter (line 7) | class QueryParameter < Finders::DynamicFinder::WpItems::Finder
          method passive (line 10) | def passive(_opts = {})
          method process_response (line 21) | def process_response(opts, response, slug, klass, config)

FILE: app/finders/plugins/urls_in_404_page.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Plugins (line 5) | module Plugins
        class UrlsIn404Page (line 8) | class UrlsIn404Page < UrlsInHomepage
          method page_res (line 10) | def page_res

FILE: app/finders/plugins/urls_in_homepage.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Plugins (line 5) | module Plugins
        class UrlsInHomepage (line 8) | class UrlsInHomepage < CMSScanner::Finders::Finder
          method passive (line 14) | def passive(opts = {})
          method page_res (line 25) | def page_res

FILE: app/finders/plugins/xpath.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Plugins (line 5) | module Plugins
        class Xpath (line 7) | class Xpath < Finders::DynamicFinder::WpItems::Finder
          method process_response (line 17) | def process_response(opts, response, slug, klass, config)

FILE: app/finders/theme_version.rb
  type WPScan (line 6) | module WPScan
    type Finders (line 7) | module Finders
      type ThemeVersion (line 8) | module ThemeVersion
        class Base (line 10) | class Base
          method initialize (line 14) | def initialize(theme)
          method create_and_load_dynamic_versions_finders (line 25) | def create_and_load_dynamic_versions_finders(theme)

FILE: app/finders/theme_version/style.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type ThemeVersion (line 5) | module ThemeVersion
        class Style (line 7) | class Style < CMSScanner::Finders::Finder
          method passive (line 11) | def passive(_opts = {})
          method aggressive (line 20) | def aggressive(_opts = {})
          method cached_style? (line 27) | def cached_style?
          method style_version (line 32) | def style_version

FILE: app/finders/theme_version/woo_framework_meta_generator.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type ThemeVersion (line 5) | module ThemeVersion
        class WooFrameworkMetaGenerator (line 7) | class WooFrameworkMetaGenerator < CMSScanner::Finders::Finder
          method passive (line 11) | def passive(_opts = {})

FILE: app/finders/themes.rb
  type WPScan (line 7) | module WPScan
    type Finders (line 8) | module Finders
      type Themes (line 9) | module Themes
        class Base (line 11) | class Base
          method initialize (line 15) | def initialize(target)

FILE: app/finders/themes/known_locations.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Themes (line 5) | module Themes
        class KnownLocations (line 7) | class KnownLocations < CMSScanner::Finders::Finder
          method valid_response_codes (line 11) | def valid_response_codes
          method aggressive (line 19) | def aggressive(opts = {})
          method target_urls (line 39) | def target_urls(opts = {})
          method create_progress_bar (line 50) | def create_progress_bar(opts = {})

FILE: app/finders/themes/urls_in_404_page.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Themes (line 5) | module Themes
        class UrlsIn404Page (line 7) | class UrlsIn404Page < UrlsInHomepage
          method page_res (line 9) | def page_res

FILE: app/finders/themes/urls_in_homepage.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Themes (line 5) | module Themes
        class UrlsInHomepage (line 7) | class UrlsInHomepage < CMSScanner::Finders::Finder
          method passive (line 13) | def passive(opts = {})
          method page_res (line 24) | def page_res

FILE: app/finders/timthumb_version.rb
  type WPScan (line 5) | module WPScan
    type Finders (line 6) | module Finders
      type TimthumbVersion (line 7) | module TimthumbVersion
        class Base (line 9) | class Base
          method initialize (line 13) | def initialize(target)

FILE: app/finders/timthumb_version/bad_request.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type TimthumbVersion (line 5) | module TimthumbVersion
        class BadRequest (line 8) | class BadRequest < CMSScanner::Finders::Finder
          method aggressive (line 10) | def aggressive(_opts = {})

FILE: app/finders/timthumbs.rb
  type WPScan (line 5) | module WPScan
    type Finders (line 6) | module Finders
      type Timthumbs (line 7) | module Timthumbs
        class Base (line 9) | class Base
          method initialize (line 13) | def initialize(target)

FILE: app/finders/timthumbs/known_locations.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Timthumbs (line 5) | module Timthumbs
        class KnownLocations (line 9) | class KnownLocations < CMSScanner::Finders::Finder
          method valid_response_codes (line 13) | def valid_response_codes
          method aggressive (line 21) | def aggressive(opts = {})
          method target_urls (line 37) | def target_urls(opts = {})
          method main_theme_timthumbs_paths (line 54) | def main_theme_timthumbs_paths
          method create_progress_bar (line 59) | def create_progress_bar(opts = {})

FILE: app/finders/users.rb
  type WPScan (line 12) | module WPScan
    type Finders (line 13) | module Finders
      class UsersFinders (line 16) | class UsersFinders < SameTypeFinders
        method filter_findings (line 17) | def filter_findings
      type Users (line 24) | module Users
        class Base (line 26) | class Base
          method initialize (line 30) | def initialize(target)
          method finders (line 42) | def finders

FILE: app/finders/users/author_id_brute_forcing.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Users (line 5) | module Users
        class AuthorIdBruteForcing (line 7) | class AuthorIdBruteForcing < CMSScanner::Finders::Finder
          method valid_response_codes (line 11) | def valid_response_codes
          method aggressive (line 19) | def aggressive(opts = {})
          method target_urls (line 43) | def target_urls(opts = {})
          method create_progress_bar (line 53) | def create_progress_bar(opts = {})
          method full_request_params (line 57) | def full_request_params
          method potential_username (line 64) | def potential_username(res)
          method username_from_author_url (line 77) | def username_from_author_url(uri)
          method username_from_response (line 86) | def username_from_response(res)
          method display_name_from_body (line 100) | def display_name_from_body(body)

FILE: app/finders/users/author_posts.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Users (line 5) | module Users
        class AuthorPosts (line 7) | class AuthorPosts < CMSScanner::Finders::Finder
          method passive (line 11) | def passive(opts = {})
          method usernames (line 26) | def usernames(_opts = {})
          method potential_usernames (line 45) | def potential_usernames(res)

FILE: app/finders/users/author_sitemap.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Users (line 5) | module Users
        class AuthorSitemap (line 8) | class AuthorSitemap < CMSScanner::Finders::Finder
          method aggressive (line 12) | def aggressive(_opts = {})
          method sitemap_url (line 30) | def sitemap_url

FILE: app/finders/users/login_error_messages.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Users (line 5) | module Users
        class LoginErrorMessages (line 13) | class LoginErrorMessages < CMSScanner::Finders::Finder
          method aggressive (line 18) | def aggressive(opts = {})
          method usernames (line 36) | def usernames(opts = {})

FILE: app/finders/users/oembed_api.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Users (line 5) | module Users
        class OembedApi (line 8) | class OembedApi < CMSScanner::Finders::Finder
          method passive (line 12) | def passive(_opts = {})
          method aggressive (line 20) | def aggressive(_opts = {})
          method user_details_from_oembed_data (line 34) | def user_details_from_oembed_data(oembed_data)
          method found_by_msg (line 48) | def found_by_msg
          method api_url (line 53) | def api_url

FILE: app/finders/users/rss_generator.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Users (line 5) | module Users
        class RSSGenerator (line 9) | class RSSGenerator < Finders::WpVersion::RSSGenerator
          method process_urls (line 10) | def process_urls(urls, _opts = {})

FILE: app/finders/users/wp_json_api.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Users (line 5) | module Users
        class WpJsonApi (line 11) | class WpJsonApi < CMSScanner::Finders::Finder
          method aggressive (line 17) | def aggressive(_opts = {})
          method users_from_response (line 42) | def users_from_response(response)
          method api_url (line 57) | def api_url

FILE: app/finders/users/yoast_seo_author_sitemap.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type Users (line 5) | module Users
        class YoastSeoAuthorSitemap (line 8) | class YoastSeoAuthorSitemap < AuthorSitemap
          method sitemap_url (line 10) | def sitemap_url

FILE: app/finders/wp_items/urls_in_page.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type WpItems (line 5) | module WpItems
        type UrlsInPage (line 7) | module UrlsInPage
          function items_from_links (line 12) | def items_from_links(type, uniq: true)
          function items_from_codes (line 34) | def items_from_codes(type, uniq: true)
          function item_attribute_pattern (line 50) | def item_attribute_pattern(type)
          function item_code_pattern (line 57) | def item_code_pattern(type)
          function item_url_pattern (line 64) | def item_url_pattern(type)

FILE: app/finders/wp_version.rb
  type WPScan (line 9) | module WPScan
    type Finders (line 10) | module Finders
      class WpVersionFinders (line 15) | class WpVersionFinders < UniqueFinders
        method filter_findings (line 16) | def filter_findings
      type WpVersion (line 23) | module WpVersion
        class Base (line 25) | class Base
          method initialize (line 29) | def initialize(target)
          method finders (line 38) | def finders

FILE: app/finders/wp_version/atom_generator.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type WpVersion (line 5) | module WpVersion
        class AtomGenerator (line 7) | class AtomGenerator < CMSScanner::Finders::Finder
          method process_urls (line 10) | def process_urls(urls, _opts = {})
          method passive_urls_xpath (line 30) | def passive_urls_xpath
          method aggressive_urls (line 34) | def aggressive_urls(_opts = {})

FILE: app/finders/wp_version/rdf_generator.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type WpVersion (line 5) | module WpVersion
        class RDFGenerator (line 7) | class RDFGenerator < CMSScanner::Finders::Finder
          method process_urls (line 10) | def process_urls(urls, _opts = {})
          method passive_urls_xpath (line 30) | def passive_urls_xpath
          method aggressive_urls (line 34) | def aggressive_urls(_opts = {})

FILE: app/finders/wp_version/readme.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type WpVersion (line 5) | module WpVersion
        class Readme (line 7) | class Readme < CMSScanner::Finders::Finder
          method aggressive (line 9) | def aggressive(_opts = {})

FILE: app/finders/wp_version/rss_generator.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type WpVersion (line 5) | module WpVersion
        class RSSGenerator (line 7) | class RSSGenerator < CMSScanner::Finders::Finder
          method process_urls (line 10) | def process_urls(urls, _opts = {})
          method passive_urls_xpath (line 33) | def passive_urls_xpath
          method aggressive_urls (line 37) | def aggressive_urls(_opts = {})

FILE: app/finders/wp_version/unique_fingerprinting.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type WpVersion (line 5) | module WpVersion
        class UniqueFingerprinting (line 7) | class UniqueFingerprinting < CMSScanner::Finders::Finder
          method aggressive (line 11) | def aggressive(opts = {})
          method create_progress_bar (line 26) | def create_progress_bar(opts = {})

FILE: app/models.rb
  type WPScan (line 3) | module WPScan
    type Model (line 4) | module Model

FILE: app/models/config_backup.rb
  type WPScan (line 3) | module WPScan
    type Model (line 4) | module Model
      class ConfigBackup (line 6) | class ConfigBackup < InterestingFinding

FILE: app/models/db_export.rb
  type WPScan (line 3) | module WPScan
    type Model (line 4) | module Model
      class DbExport (line 6) | class DbExport < InterestingFinding

FILE: app/models/interesting_finding.rb
  type WPScan (line 3) | module WPScan
    type Model (line 4) | module Model
      class InterestingFinding (line 6) | class InterestingFinding < CMSScanner::Model::InterestingFinding
      class BackupDB (line 10) | class BackupDB < InterestingFinding
        method to_s (line 11) | def to_s
        method references (line 16) | def references
      class DebugLog (line 21) | class DebugLog < InterestingFinding
        method to_s (line 22) | def to_s
        method references (line 27) | def references
      class DuplicatorInstallerLog (line 32) | class DuplicatorInstallerLog < InterestingFinding
        method references (line 34) | def references
      class EmergencyPwdResetScript (line 39) | class EmergencyPwdResetScript < InterestingFinding
        method references (line 40) | def references
      class FullPathDisclosure (line 47) | class FullPathDisclosure < InterestingFinding
        method to_s (line 48) | def to_s
        method references (line 53) | def references
      class MuPlugins (line 58) | class MuPlugins < InterestingFinding
        method to_s (line 60) | def to_s
        method references (line 65) | def references
      class Multisite (line 70) | class Multisite < InterestingFinding
        method to_s (line 72) | def to_s
        method references (line 77) | def references
      class Readme (line 82) | class Readme < InterestingFinding
        method to_s (line 83) | def to_s
      class Registration (line 88) | class Registration < InterestingFinding
        method to_s (line 90) | def to_s
      class TmmDbMigrate (line 95) | class TmmDbMigrate < InterestingFinding
        method to_s (line 96) | def to_s
        method references (line 101) | def references
      class UploadDirectoryListing (line 106) | class UploadDirectoryListing < InterestingFinding
        method to_s (line 108) | def to_s
      class UploadSQLDump (line 113) | class UploadSQLDump < InterestingFinding
        method to_s (line 114) | def to_s
      class WPCron (line 119) | class WPCron < InterestingFinding
        method to_s (line 121) | def to_s
        method references (line 126) | def references
      class PHPDisabled (line 136) | class PHPDisabled < InterestingFinding
        method to_s (line 138) | def to_s
        method references (line 143) | def references

FILE: app/models/media.rb
  type WPScan (line 3) | module WPScan
    type Model (line 4) | module Model
      class Media (line 6) | class Media < InterestingFinding

FILE: app/models/plugin.rb
  type WPScan (line 3) | module WPScan
    type Model (line 4) | module Model
      class Plugin (line 6) | class Plugin < WpItem
        method initialize (line 8) | def initialize(slug, blog, opts = {})
        method metadata (line 21) | def metadata
        method db_data (line 26) | def db_data
        method version (line 33) | def version(opts = {})
        method potential_readme_filenames (line 40) | def potential_readme_filenames

FILE: app/models/theme.rb
  type WPScan (line 3) | module WPScan
    type Model (line 4) | module Model
      class Theme (line 6) | class Theme < WpItem
        method initialize (line 11) | def initialize(slug, blog, opts = {})
        method metadata (line 27) | def metadata
        method db_data (line 32) | def db_data
        method version (line 39) | def version(opts = {})
        method parent_theme (line 46) | def parent_theme
        method parent_themes (line 62) | def parent_themes(depth = 3)
        method style_body (line 78) | def style_body
        method parse_style (line 82) | def parse_style
        method parse_style_tag (line 103) | def parse_style_tag(body, tag)
        method == (line 109) | def ==(other)

FILE: app/models/timthumb.rb
  type WPScan (line 3) | module WPScan
    type Model (line 4) | module Model
      class Timthumb (line 6) | class Timthumb < InterestingFinding
        method initialize (line 14) | def initialize(url, opts = {})
        method version (line 23) | def version(opts = {})
        method vulnerabilities (line 30) | def vulnerabilities
        method rce_132_vuln (line 40) | def rce_132_vuln
        method rce_webshot_vuln (line 50) | def rce_webshot_vuln
        method webshot_enabled? (line 63) | def webshot_enabled?
        method default_allowed_domains (line 70) | def default_allowed_domains

FILE: app/models/wp_item.rb
  type WPScan (line 3) | module WPScan
    type Model (line 4) | module Model
      class WpItem (line 6) | class WpItem
        method initialize (line 25) | def initialize(slug, blog, opts = {})
        method vulnerabilities (line 37) | def vulnerabilities
        method vulnerable_to? (line 55) | def vulnerable_to?(vuln)
        method latest_version (line 64) | def latest_version
        method popular? (line 70) | def popular?
        method last_updated (line 75) | def last_updated
        method outdated? (line 80) | def outdated?
        method url (line 91) | def url(path = nil)
        method == (line 99) | def ==(other)
        method to_s (line 103) | def to_s
        method classify (line 108) | def classify
        method readme_url (line 113) | def readme_url
        method potential_readme_filenames (line 127) | def potential_readme_filenames
        method directory_listing? (line 135) | def directory_listing?(path = nil, params = {})
        method error_log? (line 145) | def error_log?(path = 'error_log', params = {})
        method head_and_get (line 164) | def head_and_get(path, codes = [200], params = {})

FILE: app/models/wp_version.rb
  type WPScan (line 3) | module WPScan
    type Model (line 4) | module Model
      class WpVersion (line 6) | class WpVersion < CMSScanner::Model::Version
        method initialize (line 9) | def initialize(number, opts = {})
        method valid? (line 18) | def self.valid?(number)
        method all (line 23) | def self.all
        method metadata (line 45) | def metadata
        method db_data (line 50) | def db_data
        method vulnerabilities (line 55) | def vulnerabilities
        method release_date (line 68) | def release_date
        method status (line 73) | def status

FILE: app/models/xml_rpc.rb
  type WPScan (line 3) | module WPScan
    type Model (line 4) | module Model
      class XMLRPC (line 6) | class XMLRPC < CMSScanner::Model::XMLRPC
        method references (line 10) | def references

FILE: lib/wpscan.rb
  type WPScan (line 37) | module WPScan
    function app_name (line 52) | def self.app_name
    function api_requests (line 57) | def self.api_requests
    function api_requests= (line 62) | def self.api_requests=(value)

FILE: lib/wpscan/browser.rb
  type WPScan (line 3) | module WPScan
    class Browser (line 5) | class Browser < CMSScanner::Browser
      method default_user_agent (line 9) | def default_user_agent

FILE: lib/wpscan/controller.rb
  type WPScan (line 3) | module WPScan
    type Controller (line 7) | module Controller

FILE: lib/wpscan/controllers.rb
  type WPScan (line 3) | module WPScan
    class Controllers (line 5) | class Controllers < CMSScanner::Controllers
      method initialize (line 6) | def initialize(option_parser = OptParseValidator::OptParser.new(nil,...

FILE: lib/wpscan/db/dynamic_finders/base.rb
  type WPScan (line 3) | module WPScan
    type DB (line 4) | module DB
      type DynamicFinders (line 5) | module DynamicFinders
        class Base (line 6) | class Base
          method df_file (line 8) | def self.df_file
          method all_df_data (line 13) | def self.all_df_data
          method allowed_classes (line 22) | def self.allowed_classes
          method method_missing (line 29) | def self.method_missing(sym)
          method respond_to_missing? (line 42) | def self.respond_to_missing?(sym, *_args)

FILE: lib/wpscan/db/dynamic_finders/plugin.rb
  type WPScan (line 3) | module WPScan
    type DB (line 4) | module DB
      type DynamicFinders (line 5) | module DynamicFinders
        class Plugin (line 6) | class Plugin < Base
          method df_data (line 8) | def self.df_data
          method version_finder_module (line 12) | def self.version_finder_module
          method finder_configs (line 19) | def self.finder_configs(finder_class, aggressive: false)
          method versions_finders_configs (line 46) | def self.versions_finders_configs
          method maybe_create_module (line 65) | def self.maybe_create_module(slug)
          method create_versions_finders (line 81) | def self.create_versions_finders(slug)
          method version_finder_super_class (line 114) | def self.version_finder_super_class(klass)

FILE: lib/wpscan/db/dynamic_finders/theme.rb
  type WPScan (line 3) | module WPScan
    type DB (line 4) | module DB
      type DynamicFinders (line 5) | module DynamicFinders
        class Theme (line 6) | class Theme < Plugin
          method df_data (line 8) | def self.df_data
          method version_finder_module (line 12) | def self.version_finder_module

FILE: lib/wpscan/db/dynamic_finders/wordpress.rb
  type WPScan (line 3) | module WPScan
    type DB (line 4) | module DB
      type DynamicFinders (line 5) | module DynamicFinders
        class Wordpress (line 6) | class Wordpress < Base
          method df_data (line 8) | def self.df_data
          method version_finder_module (line 13) | def self.version_finder_module
          method allowed_classes (line 18) | def self.allowed_classes
          method finder_configs (line 27) | def self.finder_configs(finder_class, aggressive: false)
          method versions_finders_configs (line 50) | def self.versions_finders_configs
          method create_versions_finders (line 54) | def self.create_versions_finders
          method version_finder_super_class (line 71) | def self.version_finder_super_class(klass)

FILE: lib/wpscan/db/fingerprints.rb
  type WPScan (line 3) | module WPScan
    type DB (line 4) | module DB
      class Fingerprints (line 6) | class Fingerprints
        method unique_fingerprints (line 21) | def self.unique_fingerprints(data)
        method wp_fingerprints_path (line 37) | def self.wp_fingerprints_path
        method wp_fingerprints (line 42) | def self.wp_fingerprints
        method wp_unique_fingerprints (line 47) | def self.wp_unique_fingerprints

FILE: lib/wpscan/db/plugin.rb
  type WPScan (line 3) | module WPScan
    type DB (line 4) | module DB
      class Plugin (line 6) | class Plugin < WpItem
        method metadata (line 8) | def self.metadata

FILE: lib/wpscan/db/plugins.rb
  type WPScan (line 3) | module WPScan
    type DB (line 4) | module DB
      class Plugins (line 6) | class Plugins < WpItems
        method metadata (line 8) | def self.metadata

FILE: lib/wpscan/db/sponsor.rb
  type WPScan (line 3) | module WPScan
    type DB (line 4) | module DB
      class Sponsor (line 5) | class Sponsor
        method text (line 7) | def self.text
        method file_path (line 11) | def self.file_path

FILE: lib/wpscan/db/theme.rb
  type WPScan (line 3) | module WPScan
    type DB (line 4) | module DB
      class Theme (line 6) | class Theme < WpItem
        method metadata (line 8) | def self.metadata

FILE: lib/wpscan/db/themes.rb
  type WPScan (line 3) | module WPScan
    type DB (line 4) | module DB
      class Themes (line 6) | class Themes < WpItems
        method metadata (line 8) | def self.metadata

FILE: lib/wpscan/db/updater.rb
  type WPScan (line 3) | module WPScan
    type DB (line 4) | module DB
      class Updater (line 7) | class Updater
        method initialize (line 22) | def initialize(repo_directory)
        method delete_old_files (line 40) | def delete_old_files
        method last_update (line 47) | def last_update
        method last_update_file (line 54) | def last_update_file
        method outdated? (line 59) | def outdated?
        method missing_files? (line 66) | def missing_files?
        method request_params (line 75) | def request_params
        method remote_file_url (line 86) | def remote_file_url(filename)
        method remote_file_checksum (line 91) | def remote_file_checksum(filename)
        method local_file_path (line 101) | def local_file_path(filename)
        method local_file_checksum (line 105) | def local_file_checksum(filename)
        method backup_file_path (line 110) | def backup_file_path(filename)
        method create_backup (line 114) | def create_backup(filename)
        method restore_backup (line 120) | def restore_backup(filename)
        method delete_backup (line 126) | def delete_backup(filename)
        method download (line 131) | def download(filename)
        method update (line 144) | def update

FILE: lib/wpscan/db/vuln_api.rb
  type WPScan (line 3) | module WPScan
    type DB (line 4) | module DB
      class VulnApi (line 6) | class VulnApi
        method uri (line 14) | def self.uri
        method get (line 22) | def self.get(path, params = {})
        method plugin_data (line 47) | def self.plugin_data(slug)
        method theme_data (line 52) | def self.theme_data(slug)
        method wordpress_data (line 57) | def self.wordpress_data(version_number)
        method status (line 62) | def self.status
        method default_request_params (line 72) | def self.default_request_params

FILE: lib/wpscan/db/wp_item.rb
  type WPScan (line 3) | module WPScan
    type DB (line 4) | module DB
      class WpItem (line 6) | class WpItem
        method metadata_at (line 10) | def self.metadata_at(identifier)
        method metadata (line 15) | def self.metadata
        method metadata_file (line 20) | def self.metadata_file

FILE: lib/wpscan/db/wp_items.rb
  type WPScan (line 3) | module WPScan
    type DB (line 4) | module DB
      class WpItems (line 6) | class WpItems
        method all_slugs (line 8) | def self.all_slugs
        method popular_slugs (line 13) | def self.popular_slugs
        method vulnerable_slugs (line 18) | def self.vulnerable_slugs

FILE: lib/wpscan/db/wp_version.rb
  type WPScan (line 3) | module WPScan
    type DB (line 4) | module DB
      class Version (line 6) | class Version < WpItem
        method metadata (line 8) | def self.metadata

FILE: lib/wpscan/errors.rb
  type WPScan (line 3) | module WPScan
    type Error (line 4) | module Error
      class Standard (line 7) | class Standard < StandardError

FILE: lib/wpscan/errors/enumeration.rb
  type WPScan (line 3) | module WPScan
    type Error (line 4) | module Error
      class PluginsThresholdReached (line 5) | class PluginsThresholdReached < Standard
        method to_s (line 6) | def to_s
      class ThemesThresholdReached (line 13) | class ThemesThresholdReached < Standard
        method to_s (line 14) | def to_s

FILE: lib/wpscan/errors/http.rb
  type WPScan (line 3) | module WPScan
    type Error (line 4) | module Error
      class HTTP (line 6) | class HTTP < Standard
        method initialize (line 10) | def initialize(response)
        method failure_details (line 14) | def failure_details
        method to_s (line 26) | def to_s
      class Download (line 32) | class Download < HTTP
        method to_s (line 33) | def to_s

FILE: lib/wpscan/errors/update.rb
  type WPScan (line 3) | module WPScan
    type Error (line 4) | module Error
      class MissingDatabaseFile (line 6) | class MissingDatabaseFile < Standard
        method to_s (line 7) | def to_s
      class ChecksumsMismatch (line 12) | class ChecksumsMismatch < Standard
        method initialize (line 15) | def initialize(db_file)
        method to_s (line 19) | def to_s

FILE: lib/wpscan/errors/vuln_api.rb
  type WPScan (line 3) | module WPScan
    type Error (line 4) | module Error
      class InvalidApiToken (line 6) | class InvalidApiToken < Standard
        method to_s (line 7) | def to_s
      class ApiLimitReached (line 14) | class ApiLimitReached < Standard
        method to_s (line 15) | def to_s

FILE: lib/wpscan/errors/wordpress.rb
  type WPScan (line 3) | module WPScan
    type Error (line 4) | module Error
      class WordPressHosted (line 6) | class WordPressHosted < Standard
        method to_s (line 7) | def to_s
      class NotWordPress (line 13) | class NotWordPress < Standard
        method to_s (line 14) | def to_s
      class InvalidWordPressVersion (line 20) | class InvalidWordPressVersion < Standard
        method to_s (line 21) | def to_s
      class WpContentDirNotDetected (line 26) | class WpContentDirNotDetected < Standard
        method to_s (line 27) | def to_s
      class NoLoginInterfaceDetected (line 33) | class NoLoginInterfaceDetected < Standard
        method to_s (line 34) | def to_s

FILE: lib/wpscan/errors/xmlrpc.rb
  type WPScan (line 3) | module WPScan
    type Error (line 4) | module Error
      class XMLRPCNotDetected (line 6) | class XMLRPCNotDetected < Standard
        method to_s (line 7) | def to_s

FILE: lib/wpscan/finders.rb
  type WPScan (line 18) | module WPScan
    type Finders (line 20) | module Finders
      type InterestingFindings (line 24) | module InterestingFindings

FILE: lib/wpscan/finders/dynamic_finder/finder.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type DynamicFinder (line 5) | module DynamicFinder
        class Finder (line 7) | class Finder < CMSScanner::Finders::Finder
          method child_class_constant (line 9) | def self.child_class_constant(*args)
          method child_class_constants (line 23) | def self.child_class_constants
          method create_child_class (line 30) | def self.create_child_class(mod, klass, config)
          method find (line 48) | def find(_response, _opts = {})
          method passive (line 54) | def passive(opts = {})
          method aggressive (line 68) | def aggressive(opts = {})

FILE: lib/wpscan/finders/dynamic_finder/version/body_pattern.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type DynamicFinder (line 5) | module DynamicFinder
        type Version (line 6) | module Version
          class BodyPattern (line 9) | class BodyPattern < Finders::DynamicFinder::Version::Finder
            method child_class_constants (line 11) | def self.child_class_constants
            method find (line 18) | def find(response, _opts = {})

FILE: lib/wpscan/finders/dynamic_finder/version/comment.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type DynamicFinder (line 5) | module DynamicFinder
        type Version (line 6) | module Version
          class Comment (line 9) | class Comment < Finders::DynamicFinder::Version::Xpath
            method child_class_constants (line 11) | def self.child_class_constants

FILE: lib/wpscan/finders/dynamic_finder/version/config_parser.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type DynamicFinder (line 5) | module DynamicFinder
        type Version (line 6) | module Version
          class ConfigParser (line 9) | class ConfigParser < Finders::DynamicFinder::Version::Finder
            method child_class_constants (line 12) | def self.child_class_constants
            method parse (line 20) | def parse(body)
            method passive (line 35) | def passive(opts = {}); end
            method find (line 40) | def find(response, _opts = {})

FILE: lib/wpscan/finders/dynamic_finder/version/finder.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type DynamicFinder (line 5) | module DynamicFinder
        type Version (line 6) | module Version
          class Finder (line 9) | class Finder < Finders::DynamicFinder::Finder
            method create_version (line 15) | def create_version(number, finding_opts)
            method version_finding_opts (line 21) | def version_finding_opts(opts)

FILE: lib/wpscan/finders/dynamic_finder/version/header_pattern.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type DynamicFinder (line 5) | module DynamicFinder
        type Version (line 6) | module Version
          class HeaderPattern (line 8) | class HeaderPattern < Finders::DynamicFinder::Version::Finder
            method child_class_constants (line 10) | def self.child_class_constants
            method find (line 17) | def find(response, _opts = {})

FILE: lib/wpscan/finders/dynamic_finder/version/javascript_var.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type DynamicFinder (line 5) | module DynamicFinder
        type Version (line 6) | module Version
          class JavascriptVar (line 8) | class JavascriptVar < Finders::DynamicFinder::Version::Finder
            method child_class_constants (line 10) | def self.child_class_constants
            method find (line 20) | def find(response, _opts = {})
            method version_number_from_match_data (line 41) | def version_number_from_match_data(match_data)

FILE: lib/wpscan/finders/dynamic_finder/version/query_parameter.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type DynamicFinder (line 5) | module DynamicFinder
        type Version (line 6) | module Version
          class QueryParameter (line 8) | class QueryParameter < Finders::DynamicFinder::Version::Finder
            method child_class_constants (line 10) | def self.child_class_constants
            method find (line 19) | def find(response, _opts = {})
            method scan_response (line 35) | def scan_response(response)
            method xpath (line 51) | def xpath
            method path_pattern (line 56) | def path_pattern

FILE: lib/wpscan/finders/dynamic_finder/version/xpath.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type DynamicFinder (line 5) | module DynamicFinder
        type Version (line 6) | module Version
          class Xpath (line 8) | class Xpath < Finders::DynamicFinder::Version::Finder
            method child_class_constants (line 10) | def self.child_class_constants
            method find (line 19) | def find(response, _opts = {})

FILE: lib/wpscan/finders/dynamic_finder/wp_item_version.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type DynamicFinder (line 5) | module DynamicFinder
        type WpItemVersion (line 6) | module WpItemVersion
          class BodyPattern (line 7) | class BodyPattern < Finders::DynamicFinder::Version::BodyPattern
          class Comment (line 10) | class Comment < Finders::DynamicFinder::Version::Comment
          class ConfigParser (line 13) | class ConfigParser < Finders::DynamicFinder::Version::ConfigParser
          class HeaderPattern (line 16) | class HeaderPattern < Finders::DynamicFinder::Version::HeaderPat...
          class JavascriptVar (line 19) | class JavascriptVar < Finders::DynamicFinder::Version::Javascrip...
          class QueryParameter (line 22) | class QueryParameter < Finders::DynamicFinder::Version::QueryPar...
            method path_pattern (line 24) | def path_pattern
            method xpath (line 33) | def xpath
          class Xpath (line 40) | class Xpath < Finders::DynamicFinder::Version::Xpath

FILE: lib/wpscan/finders/dynamic_finder/wp_items/finder.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type DynamicFinder (line 5) | module DynamicFinder
        type WpItems (line 6) | module WpItems
          class Finder (line 14) | class Finder < CMSScanner::Finders::Finder
            method passive_configs (line 17) | def passive_configs
            method passive (line 29) | def passive(opts = {})
            method aggressive_configs (line 50) | def aggressive_configs
            method aggressive (line 62) | def aggressive(_opts = {})
            method aggressive_ (line 70) | def aggressive_(opts = {})
            method aggressive_path (line 93) | def aggressive_path(slug, config)

FILE: lib/wpscan/finders/dynamic_finder/wp_version.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      type DynamicFinder (line 5) | module DynamicFinder
        type WpVersion (line 6) | module WpVersion
          type Finder (line 7) | module Finder
            function create_version (line 8) | def create_version(number, finding_opts)
          class BodyPattern (line 15) | class BodyPattern < Finders::DynamicFinder::Version::BodyPattern
          class Comment (line 19) | class Comment < Finders::DynamicFinder::Version::Comment
          class HeaderPattern (line 23) | class HeaderPattern < Finders::DynamicFinder::Version::HeaderPat...
          class JavascriptVar (line 27) | class JavascriptVar < Finders::DynamicFinder::Version::Javascrip...
          class QueryParameter (line 31) | class QueryParameter < Finders::DynamicFinder::Version::QueryPar...
            method child_class_constants (line 35) | def self.child_class_constants
          class WpItemQueryParameter (line 42) | class WpItemQueryParameter < QueryParameter
            method xpath (line 43) | def xpath
            method path_pattern (line 50) | def path_pattern
          class Xpath (line 59) | class Xpath < WPScan::Finders::DynamicFinder::Version::Xpath

FILE: lib/wpscan/finders/finder/wp_version/smart_url_checker.rb
  type WPScan (line 3) | module WPScan
    type Finders (line 4) | module Finders
      class Finder (line 5) | class Finder
        type WpVersion (line 6) | module WpVersion
          type SmartURLChecker (line 8) | module SmartURLChecker
            function create_version (line 11) | def create_version(number, opts = {})

FILE: lib/wpscan/helper.rb
  function read_json_file (line 3) | def read_json_file(file)
  function classify_slug (line 15) | def classify_slug(slug)

FILE: lib/wpscan/parsed_cli.rb
  type WPScan (line 3) | module WPScan
    class ParsedCli (line 5) | class ParsedCli < CMSScanner::ParsedCli

FILE: lib/wpscan/references.rb
  type WPScan (line 3) | module WPScan
    type References (line 6) | module References
      type ClassMethods (line 10) | module ClassMethods
        function references_keys (line 12) | def references_keys
      function references_urls (line 17) | def references_urls
      function wpvulndb_ids (line 21) | def wpvulndb_ids
      function wpvulndb_urls (line 25) | def wpvulndb_urls
      function wpvulndb_url (line 29) | def wpvulndb_url(id)

FILE: lib/wpscan/target.rb
  type WPScan (line 5) | module WPScan
    class Target (line 7) | class Target < CMSScanner::Target
      method head_or_get_request_params (line 11) | def head_or_get_request_params
      method vulnerable? (line 20) | def vulnerable?
      method xmlrpc (line 34) | def xmlrpc
      method wp_version (line 41) | def wp_version(opts = {})
      method main_theme (line 50) | def main_theme(opts = {})
      method plugins (line 59) | def plugins(opts = {})
      method themes (line 66) | def themes(opts = {})
      method timthumbs (line 73) | def timthumbs(opts = {})
      method config_backups (line 80) | def config_backups(opts = {})
      method db_exports (line 87) | def db_exports(opts = {})
      method medias (line 94) | def medias(opts = {})
      method users (line 101) | def users(opts = {})

FILE: lib/wpscan/target/platform/wordpress.rb
  type WPScan (line 7) | module WPScan
    class Target (line 8) | class Target < CMSScanner::Target
      type Platform (line 9) | module Platform
        type WordPress (line 11) | module WordPress
          function wordpress? (line 29) | def wordpress?(detection_mode)
          function wordpress_from_meta_comments_or_scripts? (line 51) | def wordpress_from_meta_comments_or_scripts?(response)
          function maybe_add_cookies (line 75) | def maybe_add_cookies
          function registration_url (line 98) | def registration_url
          function wordpress_hosted? (line 103) | def wordpress_hosted?
          function do_login (line 119) | def do_login(username, password)
          function login_request (line 127) | def login_request(username, password)
          function login_url (line 143) | def login_url

FILE: lib/wpscan/target/platform/wordpress/custom_directories.rb
  type WPScan (line 3) | module WPScan
    class Target (line 4) | class Target < CMSScanner::Target
      type Platform (line 5) | module Platform
        type WordPress (line 7) | module WordPress
          function content_dir= (line 8) | def content_dir=(dir)
          function plugins_dir= (line 12) | def plugins_dir=(dir)
          function content_dir (line 17) | def content_dir
          function default_content_dir_exists? (line 39) | def default_content_dir_exists?
          function content_uri (line 46) | def content_uri
          function content_url (line 51) | def content_url
          function plugins_dir (line 56) | def plugins_dir
          function plugins_uri (line 61) | def plugins_uri
          function plugins_url (line 66) | def plugins_url
          function plugin_url (line 73) | def plugin_url(slug)
          function themes_dir (line 78) | def themes_dir
          function themes_uri (line 83) | def themes_uri
          function themes_url (line 88) | def themes_url
          function theme_url (line 95) | def theme_url(slug)
          function sub_dir (line 103) | def sub_dir
          function url (line 124) | def url(path = nil)

FILE: lib/wpscan/typhoeus/response.rb
  type Typhoeus (line 3) | module Typhoeus
    class Response (line 5) | class Response
      method from_vuln_api? (line 9) | def from_vuln_api?

FILE: lib/wpscan/version.rb
  type WPScan (line 4) | module WPScan

FILE: lib/wpscan/vulnerability.rb
  type WPScan (line 3) | module WPScan
    class Vulnerability (line 5) | class Vulnerability < CMSScanner::Vulnerability
      method load_from_json (line 10) | def self.load_from_json(json_data)

FILE: lib/wpscan/vulnerable.rb
  type WPScan (line 3) | module WPScan
    type Vulnerable (line 6) | module Vulnerable
      function vulnerable? (line 8) | def vulnerable?

FILE: spec/app/controllers/wp_version_spec.rb
  function it_calls_the_formatter_with_the_correct_parameter (line 3) | def it_calls_the_formatter_with_the_correct_parameter(version)

FILE: spec/app/finders/plugin_version/readme_spec.rb
  function version (line 9) | def version(number, found_by, confidence)
  function stable_tag (line 18) | def stable_tag(number)
  function changelog_section (line 22) | def changelog_section(number)

FILE: spec/app/finders/plugins/header_pattern_spec.rb
  function plugin (line 9) | def plugin(slug)

FILE: spec/fixtures/dynamic_finders/plugin_version/4nton-extensions/javascript_file/assets/js/script.js
  function xcroppie (line 27) | function xcroppie(){
  function croppie (line 142) | function croppie(){
  function ajax_search (line 353) | function ajax_search(id){

FILE: spec/fixtures/dynamic_finders/plugin_version/ad-inserter/javascript_var/js/ad-inserter.js
  function SyntaxHighlight (line 233) | function SyntaxHighlight (id, block, settings) {
  function change_block_alignment (line 313) | function change_block_alignment (block) {
  function change_banner_image (line 317) | function change_banner_image (block) {
  function get_editor_text (line 350) | function get_editor_text (block) {
  function set_editor_text (line 360) | function set_editor_text (block, text) {
  function window_open_post (line 372) | function window_open_post (url, windowoption, name, params) {
  function remove_default_values (line 712) | function remove_default_values (block) {
  function configure_editor_language (line 828) | function configure_editor_language (block) {
  function disable_auto_refresh_statistics (line 837) | function disable_auto_refresh_statistics () {
  function reload_statistics (line 843) | function reload_statistics (block) {
  function getDate (line 850) | function getDate (element) {
  function process_scheduling_dates (line 861) | function process_scheduling_dates (block) {
  function process_chart_dates (line 894) | function process_chart_dates (block) {
  function process_display_elements (line 928) | function process_display_elements (block) {
  function process_adsense_elements (line 1052) | function process_adsense_elements (block) {
  function switch_editor (line 1087) | function switch_editor (block, editor_disabled) {
  function configure_editor (line 1104) | function configure_editor (block) {
  function configure_adb (line 1149) | function configure_adb () {
  function configure_statistics_toolbar (line 1164) | function configure_statistics_toolbar (tab) {
  function configure_tab_0 (line 1304) | function configure_tab_0 () {
  function configure_tab (line 1448) | function configure_tab (tab) {
  function import_rotation_code (line 2282) | function import_rotation_code (block) {
  function generate_rotatation_code (line 2341) | function generate_rotatation_code (block) {
  function add_rotate_options (line 2390) | function add_rotate_options (block, new_options) {
  function remove_rotate_option (line 2429) | function remove_rotate_option (block, option) {
  function create_list_selector (line 2458) | function create_list_selector (element_name_prefix, index) {
  function update_list_from_selection (line 2502) | function update_list_from_selection (select_element, element_name_prefix) {
  function update_selection_from_list (line 2524) | function update_selection_from_list (list_element, element_name_prefix, ...
  function create_multi_select (line 2564) | function create_multi_select (select, element_name_prefix, index) {
  function create_list_editor (line 2603) | function create_list_editor (element_name_prefix, index) {
  function clean_url_list (line 2622) | function clean_url_list (list_element, list_items) {
  function update_editor_from_list (line 2668) | function update_editor_from_list (list_element, element_name_prefix, tog...
  function update_list_from_editor (line 2689) | function update_list_from_editor (editor, element_name_prefix) {
  function configure_hidden_tab (line 2700) | function configure_hidden_tab () {
  function configure_chart (line 2736) | function configure_chart (container) {
  function update_rating (line 2808) | function update_rating (parameter) {
  function configure_charts (line 2824) | function configure_charts (container) {
  function replace_block_number (line 2833) | function replace_block_number (element, attribute, old_block, new_block) {
  function copy_to_clipboard (line 2843) | function copy_to_clipboard () {
  function load_saved_settings_to_clipboard (line 2875) | function load_saved_settings_to_clipboard (block, paste) {
  function paste_from_clipboard (line 2941) | function paste_from_clipboard (paste_name, paste_code, paste_settings, c...
  function reload_list (line 3043) | function reload_list () {
  function reload_adsense_list (line 3108) | function reload_adsense_list (update_ad_units) {
  function configure_tabs (line 3277) | function configure_tabs () {
  function reload_settings (line 3353) | function reload_settings () {
  function update_adsense_authorization (line 3402) | function update_adsense_authorization (authorization_code) {
  function update_block_code_demo (line 3417) | function update_block_code_demo () {

FILE: spec/fixtures/dynamic_finders/plugin_version/addressfinder-woo/javascript_var/addressfinder.js
  function n (line 1) | function n(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{...
  function i (line 1) | function i(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a ...
  function e (line 1) | function e(e,n){for(var t=0;t<n.length;t++){var i=n[t];i.enumerable=i.en...
  function e (line 1) | function e(n){i(this,e),this.version="1.2.10",this.widgetConfig=n,$=wind...
  function n (line 1) | function n(n,i){switch($("#"+e+"country").val()){case"NZ":t.bind(this)("...
  function t (line 1) | function t(e){for(var n=["nz","au"],t=0;t<n.length;t++)n[t]==e?(i[n[t]]....

FILE: spec/fixtures/dynamic_finders/plugin_version/caldera-forms/javascript_comment/assets/js/vue.js
  function _toString (line 17) | function _toString (val) {
  function toNumber (line 29) | function toNumber (val) {
  function makeMap (line 38) | function makeMap (
  function remove$1 (line 60) | function remove$1 (arr, item) {
  function hasOwn (line 73) | function hasOwn (obj, key) {
  function isPrimitive (line 80) | function isPrimitive (value) {
  function cached (line 87) | function cached (fn) {
  function bind$1 (line 124) | function bind$1 (fn, ctx) {
  function toArray (line 141) | function toArray (list, start) {
  function extend (line 154) | function extend (to, _from) {
  function isObject (line 166) | function isObject (obj) {
  function isPlainObject (line 176) | function isPlainObject (obj) {
  function toObject (line 183) | function toObject (arr) {
  function noop (line 196) | function noop () {}
  function genStaticKeys (line 211) | function genStaticKeys (modules) {
  function looseEqual (line 221) | function looseEqual (a, b) {
  function looseIndexOf (line 231) | function looseIndexOf (arr, val) {
  function isReserved (line 335) | function isReserved (str) {
  function def (line 343) | function def (obj, key, val, enumerable) {
  function parsePath (line 356) | function parsePath (path) {
  function isNative (line 407) | function isNative (Ctor) {
  function nextTickHandler (line 419) | function nextTickHandler () {
  function Set (line 498) | function Set () {
  function pushTarget (line 592) | function pushTarget (_target) {
  function popTarget (line 597) | function popTarget () {
  function protoAugment (line 714) | function protoAugment (target, src) {
  function copyAugment (line 725) | function copyAugment (target, src, keys) {
  function observe (line 737) | function observe (value) {
  function defineReactive$$1 (line 759) | function defineReactive$$1 (
  function set$1 (line 819) | function set$1 (obj, key, val) {
  function del (line 849) | function del (obj, key) {
  function dependArray (line 872) | function dependArray (value) {
  function mergeData (line 909) | function mergeData (to, from) {
  function mergeHook (line 983) | function mergeHook (
  function mergeAssets (line 1007) | function mergeAssets (parentVal, childVal) {
  function checkComponents (line 1069) | function checkComponents (options) {
  function normalizeProps (line 1085) | function normalizeProps (options) {
  function normalizeDirectives (line 1116) | function normalizeDirectives (options) {
  function mergeOptions (line 1132) | function mergeOptions (
  function resolveAsset (line 1179) | function resolveAsset (
  function validateProp (line 1209) | function validateProp (
  function getPropDefaultValue (line 1245) | function getPropDefaultValue (vm, prop, key) {
  function assertProp (line 1276) | function assertProp (
  function assertType (line 1329) | function assertType (value, type) {
  function getType (line 1358) | function getType (fn) {
  function isBooleanType (line 1363) | function isBooleanType (fn) {
  method _Set (line 1417) | get _Set () { return _Set; }
  method warn (line 1420) | get warn () { return warn; }
  method formatComponentName (line 1421) | get formatComponentName () { return formatComponentName; }
  function resetSchedulerState (line 1512) | function resetSchedulerState () {
  function flushSchedulerQueue (line 1524) | function flushSchedulerQueue () {
  function queueWatcher (line 1575) | function queueWatcher (watcher) {
  function traverse (line 1808) | function traverse (val) {
  function _traverse (line 1813) | function _traverse (val, seen) {
  function initState (line 1838) | function initState (vm) {
  function initProps (line 1849) | function initProps (vm) {
  function initData (line 1886) | function initData (vm) {
  function initComputed (line 1926) | function initComputed (vm) {
  function makeComputedGetter (line 1949) | function makeComputedGetter (getter, owner) {
  function initMethods (line 1964) | function initMethods (vm) {
  function initWatch (line 1980) | function initWatch (vm) {
  function createWatcher (line 1996) | function createWatcher (vm, key, handler) {
  function stateMixin (line 2008) | function stateMixin (Vue) {
  function proxy (line 2048) | function proxy (vm, key) {
  function createTextVNode (line 2101) | function createTextVNode (val) {
  function cloneVNode (line 2109) | function cloneVNode (vnode) {
  function cloneVNodes (line 2126) | function cloneVNodes (vnodes) {
  function initLifecycle (line 2138) | function initLifecycle (vm) {
  function lifecycleMixin (line 2163) | function lifecycleMixin (Vue) {
  function callHook (line 2333) | function callHook (vm, hook) {
  function createComponent (line 2348) | function createComponent (
  function createFunctionalComponent (line 2428) | function createFunctionalComponent (
  function createComponentInstanceForVnode (line 2462) | function createComponentInstanceForVnode (
  function init (line 2489) | function init (
  function prepatch (line 2510) | function prepatch (
  function insert (line 2524) | function insert (vnode) {
  function destroy$1 (line 2535) | function destroy$1 (vnode) {
  function resolveAsyncComponent (line 2546) | function resolveAsyncComponent (
  function extractProps (line 2594) | function extractProps (data, Ctor) {
  function checkProp (line 2617) | function checkProp (
  function mergeHooks (line 2642) | function mergeHooks (data) {
  function mergeHook$1 (line 2654) | function mergeHook$1 (one, two) {
  function mergeVNodeHook (line 2663) | function mergeVNodeHook (def, hookKey, hook, key) {
  function updateListeners (line 2682) | function updateListeners (
  function arrInvoker (line 2736) | function arrInvoker (arr) {
  function fnInvoker (line 2747) | function fnInvoker (o) {
  function normalizeChildren (line 2756) | function normalizeChildren (children) {
  function normalizeArrayChildren (line 2764) | function normalizeArrayChildren (children, nestedIndex) {
  function getFirstComponentChild (line 2798) | function getFirstComponentChild (children) {
  function createElement (line 2806) | function createElement (
  function _createElement (line 2823) | function _createElement (
  function applyNS (line 2887) | function applyNS (vnode, ns) {
  function initRender (line 2901) | function initRender (vm) {
  function renderMixin (line 2922) | function renderMixin (Vue) {
  function resolveSlots (line 3147) | function resolveSlots (
  function initEvents (line 3185) | function initEvents (vm) {
  function eventsMixin (line 3201) | function eventsMixin (Vue) {
  function initMixin (line 3265) | function initMixin (Vue) {
  function initInternalComponent (line 3300) | function initInternalComponent (vm, options) {
  function resolveConstructorOptions (line 3317) | function resolveConstructorOptions (Ctor) {
  function Vue$3 (line 3338) | function Vue$3 (options) {
  function initUse (line 3354) | function initUse (Vue) {
  function initMixin$1 (line 3375) | function initMixin$1 (Vue) {
  function initExtend (line 3383) | function initExtend (Vue) {
  function initAssetRegisters (line 3450) | function initAssetRegisters (Vue) {
  function matches (line 3489) | function matches (pattern, name) {
  function initGlobalAPI (line 3550) | function initGlobalAPI (Vue) {
  function genClassForVnode (line 3632) | function genClassForVnode (vnode) {
  function mergeClassData (line 3650) | function mergeClassData (child, parent) {
  function genClassFromData (line 3659) | function genClassFromData (data) {
  function concat (line 3669) | function concat (a, b) {
  function stringifyClass (line 3673) | function stringifyClass (value) {
  function getTagNamespace (line 3739) | function getTagNamespace (tag) {
  function isUnknownElement (line 3751) | function isUnknownElement (tag) {
  function query (line 3781) | function query (el) {
  function createElement$1 (line 3797) | function createElement$1 (tagName, vnode) {
  function createElementNS (line 3808) | function createElementNS (namespace, tagName) {
  function createTextNode (line 3812) | function createTextNode (text) {
  function createComment (line 3816) | function createComment (text) {
  function insertBefore (line 3820) | function insertBefore (parentNode, newNode, referenceNode) {
  function removeChild (line 3824) | function removeChild (node, child) {
  function appendChild (line 3828) | function appendChild (node, child) {
  function parentNode (line 3832) | function parentNode (node) {
  function nextSibling (line 3836) | function nextSibling (node) {
  function tagName (line 3840) | function tagName (node) {
  function setTextContent (line 3844) | function setTextContent (node, text) {
  function setAttribute (line 3848) | function setAttribute (node, key, val) {
  function registerRef (line 3885) | function registerRef (vnode, isRemoval) {
  function isUndef (line 3929) | function isUndef (s) {
  function isDef (line 3933) | function isDef (s) {
  function sameVnode (line 3937) | function sameVnode (vnode1, vnode2) {
  function createKeyToOldIdx (line 3946) | function createKeyToOldIdx (children, beginIdx, endIdx) {
  function createPatchFunction (line 3956) | function createPatchFunction (backend) {
  function updateDirectives (line 4523) | function updateDirectives (oldVnode, vnode) {
  function _update (line 4529) | function _update (oldVnode, vnode) {
  function normalizeDirectives$1 (line 4590) | function normalizeDirectives$1 (
  function getRawDirName (line 4610) | function getRawDirName (dir) {
  function callHook$1 (line 4614) | function callHook$1 (dir, hook, vnode, oldVnode) {
  function updateAttrs (line 4628) | function updateAttrs (oldVnode, vnode) {
  function setAttr (line 4664) | function setAttr (el, key, value) {
  function updateClass (line 4697) | function updateClass (oldVnode, vnode) {
  function add$1 (line 4730) | function add$1 (event, handler, once, capture) {
  function remove$2 (line 4743) | function remove$2 (event, handler, capture) {
  function updateDOMListeners (line 4747) | function updateDOMListeners (oldVnode, vnode) {
  function updateDOMProps (line 4764) | function updateDOMProps (oldVnode, vnode) {
  function isValueChanged (line 4809) | function isValueChanged (vnode, newVal) {
  function normalizeStyleData (line 4842) | function normalizeStyleData (data) {
  function normalizeStyleBinding (line 4852) | function normalizeStyleBinding (bindingStyle) {
  function getStyle (line 4866) | function getStyle (vnode, checkChild) {
  function updateStyle (line 4926) | function updateStyle (oldVnode, vnode) {
  function addClass (line 4974) | function addClass (el, cls) {
  function removeClass (line 4999) | function removeClass (el, cls) {
  function nextFrame (line 5048) | function nextFrame (fn) {
  function addTransitionClass (line 5054) | function addTransitionClass (el, cls) {
  function removeTransitionClass (line 5059) | function removeTransitionClass (el, cls) {
  function whenTransitionEnds (line 5066) | function whenTransitionEnds (
  function getTransitionInfo (line 5099) | function getTransitionInfo (el, expectedType) {
  function getTimeout (line 5148) | function getTimeout (delays, durations) {
  function toMs (line 5159) | function toMs (s) {
  function enter (line 5165) | function enter (vnode, toggleDisplay) {
  function leave (line 5283) | function leave (vnode, rm) {
  function resolveTransition (line 5371) | function resolveTransition (def$$1) {
  function once (line 5399) | function once (fn) {
  function _enter (line 5409) | function _enter (_, vnode) {
  function setSelected (line 5515) | function setSelected (el, binding, vm) {
  function hasNoMatchingOption (line 5548) | function hasNoMatchingOption (value, options) {
  function getValue (line 5557) | function getValue (option) {
  function onCompositionStart (line 5563) | function onCompositionStart (e) {
  function onCompositionEnd (line 5567) | function onCompositionEnd (e) {
  function trigger (line 5572) | function trigger (el, type) {
  function locateNode (line 5581) | function locateNode (vnode) {
  function getRealChild (line 5655) | function getRealChild (vnode) {
  function extractTransitionData (line 5664) | function extractTransitionData (comp) {
  function placeholder (line 5680) | function placeholder (h, rawChild) {
  function hasParentTransition (line 5686) | function hasParentTransition (vnode) {
  function callPendingCbs (line 5924) | function callPendingCbs (c) {
  function recordPosition (line 5935) | function recordPosition (c) {
  function applyTranslation (line 5939) | function applyTranslation (c) {
  function shouldDecode (line 6002) | function shouldDecode (content, encoded) {
  function decode (line 6016) | function decode (html) {
  function decodeAttr (line 6118) | function decodeAttr (value, shouldDecodeNewlines) {
  function parseHTML (line 6129) | function parseHTML (html, options) {
  function parseFilters (line 6362) | function parseFilters (exp) {
  function wrapFilter (line 6444) | function wrapFilter (exp, filter) {
  function parseText (line 6467) | function parseText (
  function baseWarn (line 6497) | function baseWarn (msg) {
  function pluckModuleFunction (line 6501) | function pluckModuleFunction (
  function addProp (line 6510) | function addProp (el, name, value) {
  function addAttr (line 6514) | function addAttr (el, name, value) {
  function addDirective (line 6518) | function addDirective (
  function addHandler (line 6529) | function addHandler (
  function getBindingAttr (line 6564) | function getBindingAttr (
  function getAndRemoveAttr (line 6582) | function getAndRemoveAttr (el, name) {
  function parseModel (line 6617) | function parseModel (val) {
  function next (line 6645) | function next () {
  function eof (line 6649) | function eof () {
  function isStringStart (line 6653) | function isStringStart (chr) {
  function parseBracket (line 6657) | function parseBracket (chr) {
  function parseString (line 6675) | function parseString (chr) {
  function parse (line 6710) | function parse (
  function processPre (line 6922) | function processPre (el) {
  function processRawAttrs (line 6928) | function processRawAttrs (el) {
  function processKey (line 6944) | function processKey (el) {
  function processRef (line 6954) | function processRef (el) {
  function processFor (line 6962) | function processFor (el) {
  function processIf (line 6987) | function processIf (el) {
  function processIfConditions (line 7006) | function processIfConditions (el, parent) {
  function addIfCondition (line 7021) | function addIfCondition (el, condition) {
  function processOnce (line 7028) | function processOnce (el) {
  function processSlot (line 7035) | function processSlot (el) {
  function processComponent (line 7056) | function processComponent (el) {
  function processAttrs (line 7066) | function processAttrs (el) {
  function checkInFor (line 7132) | function checkInFor (el) {
  function parseModifiers (line 7143) | function parseModifiers (name) {
  function makeAttrsMap (line 7152) | function makeAttrsMap (attrs) {
  function findPrevElement (line 7163) | function findPrevElement (children) {
  function isForbiddenTag (line 7170) | function isForbiddenTag (el) {
  function guardIESVGBug (line 7184) | function guardIESVGBug (attrs) {
  function checkForAliasModel (line 7196) | function checkForAliasModel (el, value) {
  function optimize (line 7230) | function optimize (root, options) {
  function genStaticKeys$1 (line 7240) | function genStaticKeys$1 (keys) {
  function markStatic (line 7247) | function markStatic (node) {
  function markStaticRoots (line 7270) | function markStaticRoots (node, isInFor) {
  function walkThroughConditionsBlocks (line 7298) | function walkThroughConditionsBlocks (conditionBlocks, isInFor) {
  function isStatic (line 7304) | function isStatic (node) {
  function isDirectChildOfTemplateFor (line 7321) | function isDirectChildOfTemplateFor (node) {
  function genHandlers (line 7362) | function genHandlers (events, native) {
  function genHandler (line 7370) | function genHandler (
  function genKeyFilter (line 7402) | function genKeyFilter (keys) {
  function genFilterCode (line 7406) | function genFilterCode (key) {
  function bind$2 (line 7417) | function bind$2 (el, dir) {
  function generate (line 7439) | function generate (
  function genElement (line 7462) | function genElement (el) {
  function genStatic (line 7495) | function genStatic (el) {
  function genOnce (line 7502) | function genOnce (el) {
  function genIf (line 7528) | function genIf (el) {
  function genIfConditions (line 7533) | function genIfConditions (conditions) {
  function genFor (line 7551) | function genFor (el) {
  function genData (line 7563) | function genData (el) {
  function genDirectives (line 7632) | function genDirectives (el) {
  function genInlineTemplate (line 7657) | function genInlineTemplate (el) {
  function genScopedSlots (line 7670) | function genScopedSlots (slots) {
  function genScopedSlot (line 7674) | function genScopedSlot (key, el) {
  function genChildren (line 7681) | function genChildren (el, checkSkip) {
  function canSkipNormalization (line 7698) | function canSkipNormalization (children) {
  function needsNormalization (line 7709) | function needsNormalization (el) {
  function genNode (line 7713) | function genNode (node) {
  function genText (line 7721) | function genText (text) {
  function genSlot (line 7727) | function genSlot (el) {
  function genComponent (line 7734) | function genComponent (componentName, el) {
  function genProps (line 7739) | function genProps (props) {
  function transformSpecialNewlines (line 7749) | function transformSpecialNewlines (text) {
  function compile$1 (line 7760) | function compile$1 (
  function detectErrors (line 7788) | function detectErrors (ast) {
  function checkNode (line 7796) | function checkNode (node, errors) {
  function checkFor (line 7820) | function checkFor (node, text, errors) {
  function checkIdentifier (line 7827) | function checkIdentifier (ident, type, text, errors) {
  function checkExpression (line 7833) | function checkExpression (exp, text, errors) {
  function transformNode (line 7851) | function transformNode (el, options) {
  function genData$1 (line 7874) | function genData$1 (el) {
  function transformNode$1 (line 7893) | function transformNode$1 (el, options) {
  function genData$2 (line 7918) | function genData$2 (el) {
  function model$1 (line 7944) | function model$1 (
  function genCheckboxModel (line 7976) | function genCheckboxModel (
  function genRadioModel (line 8012) | function genRadioModel (
  function genDefaultModel (line 8032) | function genDefaultModel (
  function genSelect (line 8092) | function genSelect (
  function checkOptionWarning (line 8112) | function checkOptionWarning (option) {
  function genAssignmentCode (line 8126) | function genAssignmentCode (value, assignment) {
  function text (line 8140) | function text (el, dir) {
  function html (line 8148) | function html (el, dir) {
  function compile$$1 (line 8176) | function compile$$1 (
  function compileToFunctions (line 8186) | function compileToFunctions (
  function makeFunction (line 8236) | function makeFunction (code) {
  function getOuterHTML (line 8312) | function getOuterHTML (el) {

FILE: spec/fixtures/dynamic_finders/plugin_version/cookie-law-info/javascript_comment/js/cookielawinfo.js
  function cli_show_cookiebar (line 1) | function cli_show_cookiebar(p) {
  function l1hs (line 209) | function l1hs(str){if(str.charAt(0)=="#"){str=str.substring(1,str.length...

FILE: spec/fixtures/dynamic_finders/plugin_version/elementor/javascript_comment/assets/js/admin-feedback.js
  function s (line 2) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...

FILE: spec/fixtures/dynamic_finders/plugin_version/fluentform/javascript_comment/public/libs/jquery-datetimepicker/jquery.datetimepicker.full.js
  function getCurrentValue (line 2173) | function getCurrentValue() {
  function setMask (line 2201) | function setMask(options) {
  function HighlightedDate (line 2454) | function HighlightedDate(date, desc, style) {
  function handler (line 2568) | function handler(event) {
  function nullLowestDelta (line 2681) | function nullLowestDelta() {
  function shouldAdjustOldDeltas (line 2685) | function shouldAdjustOldDeltas(orgEvent, absDelta) {

FILE: spec/fixtures/dynamic_finders/plugin_version/media-element-html5-video-and-audio-player/javascript_var/mediaelement/v4/mediaelement-and-player.js
  function s (line 11) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
  function noop (line 58) | function noop() {}
  function bind (line 61) | function bind(fn, thisArg) {
  function Promise (line 67) | function Promise(fn) {
  function handle (line 78) | function handle(self, deferred) {
  function resolve (line 104) | function resolve(self, newValue) {
  function reject (line 128) | function reject(self, newValue) {
  function finale (line 134) | function finale(self) {
  function Handler (line 149) | function Handler(onFulfilled, onRejected, promise) {
  function doResolve (line 161) | function doResolve(fn, self) {
  function res (line 198) | function res(i, val) {
  function _interopRequireDefault (line 303) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _interopRequireDefault (line 582) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 584) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _interopRequireDefault (line 1016) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function defineProperties (line 1047) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _interopRequireDefault (line 1053) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 1055) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Renderer (line 1058) | function Renderer() {
  function _interopRequireWildcard (line 1180) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
  function _interopRequireDefault (line 1182) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _interopRequireDefault (line 1468) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function togglePlayPause (line 1497) | function togglePlayPause(which) {
  function _interopRequireDefault (line 1563) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _interopRequireDefault (line 2096) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _interopRequireDefault (line 2228) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _interopRequireDefault (line 2986) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function defineProperties (line 3433) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _interopRequireWildcard (line 3471) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
  function _interopRequireDefault (line 3473) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 3475) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function MediaElementPlayer (line 3584) | function MediaElementPlayer(node, o) {
  function defineProperties (line 5307) | function defineProperties(target, props) { for (var i = 0; i < props.len...
  function _interopRequireDefault (line 5313) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 5315) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function DefaultPlayer (line 5318) | function DefaultPlayer(player) {
  function _interopRequireDefault (line 5487) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _interopRequireDefault (line 5545) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _interopRequireDefault (line 5806) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _interopRequireDefault (line 6237) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _interopRequireDefault (line 6486) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _interopRequireDefault (line 6773) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _interopRequireDefault (line 6922) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _interopRequireDefault (line 7448) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _interopRequireDefault (line 7642) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function loadScript (line 7644) | function loadScript(url) {
  function offset (line 7661) | function offset(el) {
  function toggleClass (line 7700) | function toggleClass(el, className) {
  function fadeOut (line 7704) | function fadeOut(el) {
  function fadeIn (line 7728) | function fadeIn(el) {
  function siblings (line 7752) | function siblings(el, filter) {
  function visible (line 7763) | function visible(elem) {
  function ajax (line 7770) | function ajax(url, dataType, success, error) {
  function _interopRequireDefault (line 7861) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function escapeHTML (line 7863) | function escapeHTML(input) {
  function debounce (line 7881) | function debounce(func, wait) {
  function isObjectEmpty (line 7916) | function isObjectEmpty(instance) {
  function splitEvents (line 7920) | function splitEvents(events, id) {
  function createEvent (line 7940) | function createEvent(eventName, target) {
  function isNodeAfter (line 7961) | function isNodeAfter(sourceNode, targetNode) {
  function isString (line 7966) | function isString(value) {
  function _interopRequireDefault (line 7999) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function absolutizeUrl (line 8003) | function absolutizeUrl(url) {
  function formatType (line 8014) | function formatType(url) {
  function getMimeFromType (line 8020) | function getMimeFromType(type) {
  function getTypeFromFile (line 8029) | function getTypeFromFile(url) {
  function getExtension (line 8059) | function getExtension(url) {
  function normalizeExtension (line 8070) | function normalizeExtension(extension) {
  function _interopRequireDefault (line 8113) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function CustomEvent (line 8137) | function CustomEvent(event, params) {
  function _interopRequireDefault (line 8271) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function isDropFrame (line 8273) | function isDropFrame() {
  function secondsToTimeCode (line 8278) | function secondsToTimeCode(time) {
  function timeCodeToSeconds (line 8367) | function timeCodeToSeconds(time) {
  function calculateTimeFormat (line 8428) | function calculateTimeFormat(time, options) {
  function convertSMPTEtoSeconds (line 8477) | function convertSMPTEtoSeconds(SMPTE) {

FILE: spec/fixtures/dynamic_finders/plugin_version/qoob/javascript_var/qoob/qoob-backend-starter.js
  function QoobStarter (line 14) | function QoobStarter(options) {

FILE: spec/fixtures/dynamic_finders/plugin_version/redirection/javascript_comment/redirection.js
  function t (line 2) | function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{...
  function n (line 7) | function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t]...
  function r (line 7) | function r(e){return function(){return e}}
  function r (line 7) | function r(e,t,n){function o(){b===g&&(b=g.slice())}function a(){return ...
  function o (line 7) | function o(e,t){var n=t&&t.type;return"Given action "+(n&&'"'+n.toString...
  function a (line 7) | function a(e){Object.keys(e).forEach(function(t){var n=e[t];if(void 0===...
  function i (line 7) | function i(e){for(var t=Object.keys(e),n={},r=0;r<t.length;r++){var i=t[...
  function l (line 7) | function l(e,t){return function(){return t(e.apply(void 0,arguments))}}
  function s (line 7) | function s(e,t){if("function"==typeof e)return l(e,t);if("object"!=typeo...
  function u (line 7) | function u(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=argu...
  function c (line 7) | function c(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=argu...
  function r (line 7) | function r(e){var t=g.call(e,y),n=e[y];try{e[y]=void 0;var r=!0}catch(e)...
  function o (line 7) | function o(e){return w.call(e)}
  function a (line 7) | function a(e){return null==e?void 0===e?k:_:x&&x in Object(e)?v(e):O(e)}
  function i (line 7) | function i(e,t){return function(n){return e(t(n))}}
  function l (line 7) | function l(e){return null!=e&&"object"==typeof e}
  function s (line 7) | function s(e){if(!T(e)||C(e)!=N)return!1;var t=P(e);if(null===t)return!0...
  function r (line 7) | function r(e){if(null===e||void 0===e)throw new TypeError("Object.assign...
  function n (line 12) | function n(){this._events=this._events||{},this._maxListeners=this._maxL...
  function r (line 12) | function r(e){return"function"==typeof e}
  function o (line 12) | function o(e){return"number"==typeof e}
  function a (line 12) | function a(e){return"object"==typeof e&&null!==e}
  function i (line 12) | function i(e){return void 0===e}
  function n (line 12) | function n(){this.removeListener(e,n),o||(o=!0,t.apply(this,arguments))}
  function r (line 12) | function r(e,t,n,r,a,i,l,s){if(o(t),!e){var u;if(void 0===t)u=new Error(...
  function r (line 12) | function r(){this.protocol=null,this.slashes=null,this.auth=null,this.ho...
  function o (line 12) | function o(e,t,n){if(e&&u.isObject(e)&&e instanceof r)return e;var o=new...
  function a (line 12) | function a(e){return u.isString(e)&&(e=o(e)),e instanceof r?e.format():r...
  function i (line 12) | function i(e,t){return o(e,!1,!0).resolve(t)}
  function l (line 12) | function l(e,t){return e?o(e,!1,!0).resolveObject(t):t}
  function r (line 12) | function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a ...
  function o (line 12) | function o(e,t){if(!e)throw new ReferenceError("this hasn't been initial...
  function a (line 12) | function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("S...
  function i (line 12) | function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a ...
  function l (line 12) | function l(){var e=[],t=[];return{clear:function(){t=xr,e=xr},notify:fun...
  function s (line 12) | function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a ...
  function u (line 12) | function u(e,t){if(!e)throw new ReferenceError("this hasn't been initial...
  function c (line 12) | function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("S...
  function p (line 12) | function p(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototyp...
  function f (line 12) | function f(){}
  function d (line 12) | function d(e,t){var n={run:function(r){try{var o=e(t.getState(),r);(o!==...
  function h (line 12) | function h(e){var t,n,r=arguments.length>1&&void 0!==arguments[1]?argume...
  function m (line 12) | function m(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!==e&&t!==t}
  function g (line 12) | function g(e,t){if(m(e,t))return!0;if("object"!=typeof e||null===e||"obj...
  function b (line 12) | function b(e){return function(t,n){function r(){return o}var o=e(t,n);re...
  function y (line 12) | function y(e){return null!==e.dependsOnOwnProps&&void 0!==e.dependsOnOwn...
  function v (line 12) | function v(e,t){return function(t,n){var r=(n.displayName,function(e,t){...
  function E (line 12) | function E(e){return"function"==typeof e?v(e,"mapDispatchToProps"):void 0}
  function w (line 12) | function w(e){return e?void 0:b(function(e){return{dispatch:e}})}
  function O (line 12) | function O(e){return e&&"object"==typeof e?b(function(t){return Object(R...
  function _ (line 12) | function _(e){return"function"==typeof e?v(e,"mapStateToProps"):void 0}
  function k (line 12) | function k(e){return e?void 0:b(function(){return{}})}
  function x (line 12) | function x(e,t,n){return Ar({},n,e,t)}
  function C (line 12) | function C(e){return function(t,n){var r=(n.displayName,n.pure),o=n.areM...
  function S (line 12) | function S(e){return"function"==typeof e?C(e):void 0}
  function j (line 12) | function j(e){return e?void 0:function(){return x}}
  function P (line 12) | function P(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototyp...
  function T (line 12) | function T(e,t,n,r){return function(o,a){return n(e(o,a),t(r,a),a)}}
  function N (line 12) | function N(e,t,n,r,o){function a(o,a){return h=o,m=a,g=e(h,m),b=t(r,m),y...
  function R (line 12) | function R(e,t){var n=t.initMapStateToProps,r=t.initMapDispatchToProps,o...
  function D (line 12) | function D(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototyp...
  function I (line 12) | function I(e,t,n){for(var r=t.length-1;r>=0;r--){var o=t[r](e);if(o)retu...
  function A (line 12) | function A(e,t){return e===t}
  function L (line 12) | function L(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function F (line 12) | function F(e,t){history.pushState({},null,M(e,t))}
  function U (line 12) | function U(e){return so.parse(e?e.slice(1):document.location.search.slic...
  function M (line 12) | function M(e,t,n){var r=U(n);for(var o in e)e[o]&&t[o]!==e[o]?r[o.toLowe...
  function B (line 12) | function B(e){var t=U(e);return-1!==co.indexOf(t.sub)?t.sub:"redirect"}
  function H (line 12) | function H(){return Redirectioni10n.pluginRoot+"&sub=rss&module=1&token=...
  function z (line 12) | function z(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.len...
  function V (line 12) | function V(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototyp...
  function G (line 12) | function G(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function q (line 12) | function q(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function W (line 12) | function W(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function $ (line 12) | function $(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function K (line 12) | function K(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function Q (line 12) | function Q(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function Y (line 12) | function Y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enume...
  function J (line 12) | function J(e,t,n){return Ka({},e,Y({},t[n],t))}
  function X (line 12) | function X(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function Z (line 12) | function Z(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0...
  function ee (line 12) | function ee(){return Redirectioni10n&&Redirectioni10n.preload&&Redirecti...
  function te (line 12) | function te(){var e=ee();return{loadStatus:Qr,saveStatus:!1,error:!1,ins...
  function ne (line 12) | function ne(){return{rows:[],saving:[],logType:lo,total:0,status:Qr,tabl...
  function re (line 12) | function re(){return{rows:[],saving:[],logType:lo,total:0,status:Qr,tabl...
  function oe (line 12) | function oe(){return{status:Qr,file:!1,lastImport:!1,exportData:!1,impor...
  function ae (line 12) | function ae(){return{rows:[],saving:[],total:0,status:Qr,table:mo(["name...
  function ie (line 12) | function ie(){return{rows:[],saving:[],total:0,addTop:!1,status:Qr,table...
  function le (line 12) | function le(){return{errors:[],notices:[],inProgress:0,saving:[]}}
  function se (line 12) | function se(){return{status:Qr,maps:{},agents:{},error:""}}
  function ue (line 12) | function ue(){return{settings:te(),log:ne(),error:re(),io:oe(),group:ae(...
  function ce (line 12) | function ce(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enum...
  function pe (line 12) | function pe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function fe (line 12) | function fe(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function de (line 12) | function de(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function he (line 12) | function he(e){return{onSaveSettings:function(t){e(ni(t))}}}
  function me (line 12) | function me(e){var t=e.settings;return{groups:t.groups,values:t.values,s...
  function ge (line 12) | function ge(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function be (line 12) | function be(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function ye (line 12) | function ye(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function ve (line 12) | function ve(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function Ee (line 12) | function Ee(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function we (line 12) | function we(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function Oe (line 12) | function Oe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enum...
  function _e (line 12) | function _e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function ke (line 12) | function ke(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function xe (line 12) | function xe(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function Ce (line 12) | function Ce(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function Se (line 12) | function Se(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function je (line 12) | function je(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function Pe (line 12) | function Pe(e){return{onLoadSettings:function(){e(ti())},onDeletePlugin:...
  function Te (line 12) | function Te(e){var t=e.settings;return{loadStatus:t.loadStatus,values:t....
  function Ne (line 12) | function Ne(e){return{onSubscribe:function(){e(ni({newsletter:!0}))}}}
  function Re (line 12) | function Re(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function De (line 12) | function De(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function Ie (line 12) | function Ie(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function Ae (line 12) | function Ae(e){return{onLoadStatus:function(){e(oi())},onFix:function(){...
  function Le (line 12) | function Le(e){return{pluginStatus:e.settings.pluginStatus}}
  function Fe (line 12) | function Fe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function Ue (line 12) | function Ue(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function Me (line 12) | function Me(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function Be (line 12) | function Be(e){return{onLoadSettings:function(){e(ti())}}}
  function He (line 12) | function He(e){return{values:e.settings.values}}
  function ze (line 12) | function ze(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enum...
  function Ve (line 12) | function Ve(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enum...
  function Ge (line 12) | function Ge(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function qe (line 12) | function qe(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function We (line 12) | function We(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function $e (line 12) | function $e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function Ke (line 12) | function Ke(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function Qe (line 12) | function Qe(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function Ye (line 12) | function Ye(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function Je (line 12) | function Je(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function Xe (line 12) | function Xe(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function Ze (line 12) | function Ze(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function et (line 12) | function et(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function tt (line 12) | function tt(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function nt (line 12) | function nt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function rt (line 12) | function rt(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function ot (line 12) | function ot(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function at (line 12) | function at(e){return{onGet:function(t){e(Xl(t))}}}
  function it (line 12) | function it(e){var t=e.info;return{status:t.status,error:t.error,maps:t....
  function lt (line 12) | function lt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function st (line 12) | function st(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function ut (line 12) | function ut(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function ct (line 12) | function ct(e){return{onGet:function(t){e(Zl(t))}}}
  function pt (line 12) | function pt(e){var t=e.info;return{status:t.status,error:t.error,agents:...
  function ft (line 12) | function ft(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function dt (line 12) | function dt(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function ht (line 12) | function ht(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function mt (line 12) | function mt(e){return{onShowIP:function(t){e($l("ip",t))},onSetSelected:...
  function gt (line 12) | function gt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function bt (line 12) | function bt(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function yt (line 12) | function yt(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function vt (line 12) | function vt(e){return{log:e.log}}
  function Et (line 12) | function Et(e){return{onLoad:function(t){e(Vl(t))},onDeleteAll:function(...
  function wt (line 12) | function wt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function Ot (line 12) | function Ot(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function _t (line 12) | function _t(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function kt (line 12) | function kt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function xt (line 12) | function xt(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function Ct (line 12) | function Ct(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function St (line 12) | function St(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function jt (line 12) | function jt(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function Pt (line 12) | function Pt(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function Tt (line 12) | function Tt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function Nt (line 12) | function Nt(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function Rt (line 12) | function Rt(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function Dt (line 12) | function Dt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function It (line 12) | function It(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function At (line 12) | function At(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function Lt (line 12) | function Lt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function Ft (line 12) | function Ft(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function Ut (line 12) | function Ut(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function Mt (line 12) | function Mt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function Bt (line 12) | function Bt(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function Ht (line 12) | function Ht(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function zt (line 12) | function zt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enum...
  function Vt (line 12) | function Vt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function Gt (line 12) | function Gt(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function qt (line 12) | function qt(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function Wt (line 12) | function Wt(e){var t=e.group,n=e.redirect;return{group:t,addTop:n.addTop...
  function $t (line 12) | function $t(e){return{onSave:function(t,n){e(iu(t,n))},onCreate:function...
  function Kt (line 12) | function Kt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function Qt (line 12) | function Qt(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function Yt (line 12) | function Yt(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function Jt (line 12) | function Jt(e){return{onShowIP:function(t){e(js("ip",t))},onSetSelected:...
  function Xt (line 12) | function Xt(e){return{infoStatus:e.info.status}}
  function Zt (line 12) | function Zt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function en (line 12) | function en(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function tn (line 12) | function tn(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function nn (line 12) | function nn(e){return{error:e.error}}
  function rn (line 12) | function rn(e){return{onLoad:function(t){e(ks(t))},onLoadGroups:function...
  function on (line 12) | function on(e){var t=[];if(e.dataTransfer){var n=e.dataTransfer;n.files&...
  function an (line 12) | function an(e,t){return"application/x-moz-file"===e.type||Qu()(e,t)}
  function ln (line 12) | function ln(e,t,n){return e.size<=t&&e.size>=n}
  function sn (line 12) | function sn(e,t){return e.every(function(e){return an(e,t)})}
  function un (line 12) | function un(e){e.preventDefault()}
  function cn (line 12) | function cn(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototy...
  function pn (line 12) | function pn(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.le...
  function fn (line 12) | function fn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function dn (line 12) | function dn(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function hn (line 12) | function hn(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function mn (line 12) | function mn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enum...
  function gn (line 12) | function gn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function bn (line 12) | function bn(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function yn (line 12) | function yn(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function vn (line 12) | function vn(e){return{group:e.group,io:e.io}}
  function En (line 12) | function En(e){return{onLoadGroups:function(){e(Lu())},onImport:function...
  function wn (line 12) | function wn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function On (line 12) | function On(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function _n (line 12) | function _n(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function kn (line 12) | function kn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function xn (line 12) | function xn(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function Cn (line 12) | function Cn(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function Sn (line 12) | function Sn(e){return{onSetSelected:function(t){e(Hu(t))},onSaveGroup:fu...
  function jn (line 12) | function jn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function Pn (line 12) | function Pn(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function Tn (line 12) | function Tn(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function Nn (line 12) | function Nn(e){return{group:e.group}}
  function Rn (line 12) | function Rn(e){return{onLoadGroups:function(){e(Lu({page:0,filter:"",fil...
  function Dn (line 12) | function Dn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function In (line 12) | function In(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function An (line 12) | function An(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function Ln (line 12) | function Ln(e){return{onSetSelected:function(t){e(du(t))},onTableAction:...
  function Fn (line 12) | function Fn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function Un (line 12) | function Un(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function Mn (line 12) | function Mn(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function Bn (line 12) | function Bn(e){return{redirect:e.redirect,group:e.group}}
  function Hn (line 12) | function Hn(e){return{onLoadGroups:function(){e(Lu())},onLoadRedirects:f...
  function zn (line 12) | function zn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function Vn (line 12) | function Vn(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function Gn (line 12) | function Gn(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function qn (line 12) | function qn(e){return{errors:e.message.errors}}
  function Wn (line 12) | function Wn(e){return{onClear:function(){e(Lc())}}}
  function $n (line 12) | function $n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function Kn (line 12) | function Kn(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function Qn (line 12) | function Qn(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function Yn (line 12) | function Yn(e){return{notices:e.message.notices}}
  function Jn (line 12) | function Jn(e){return{onClear:function(){e(Fc())}}}
  function Xn (line 12) | function Xn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function Zn (line 12) | function Zn(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function er (line 12) | function er(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function tr (line 12) | function tr(e){return{inProgress:e.message.inProgress}}
  function nr (line 12) | function nr(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a...
  function rr (line 12) | function rr(e,t){if(!e)throw new ReferenceError("this hasn't been initia...
  function or (line 12) | function or(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("...
  function ar (line 12) | function ar(e){return{onClear:function(){e(Lc())},onAdd:function(){e(mu(...
  function ir (line 12) | function ir(e){return{errors:e.message.errors}}
  function n (line 12) | function n(a,i){r(this,n);var l=o(this,e.call(this,a,i));return l[t]=a.s...
  function e (line 12) | function e(t,n,r){i(this,e),this.store=t,this.parentSub=n,this.onStateCh...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){pe(this,t);var n=fe(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){ge(this,t);var n=be(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){ve(this,t);var n=Ee(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){_e(this,t);var n=ke(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){Ce(this,t);var n=Se(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){Re(this,t);var n=De(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){Fe(this,t);var n=Ue(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){Ge(this,t);var n=qe(this,(t.__proto__||Object.getPrototype...
  function t (line 12) | function t(){return Ge(this,t),qe(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){$e(this,t);var n=Ke(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){Ye(this,t);var n=Je(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){Ze(this,t);var n=et(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){nt(this,t);var n=rt(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){lt(this,t);var n=st(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){ft(this,t);var n=dt(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){gt(this,t);var n=bt(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){wt(this,t);var n=Ot(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){kt(this,t);var n=xt(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){St(this,t);var n=jt(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(){var e,n,r,o;Tt(this,t);for(var a=arguments.length,i=Array(a...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){Dt(this,t);var n=It(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(){var e,n,r,o;Lt(this,t);for(var a=arguments.length,i=Array(a...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(){var e,n,r,o;Mt(this,t);for(var a=arguments.length,i=Array(a...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){Vt(this,t);var n=Gt(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){Kt(this,t);var n=Qt(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){Zt(this,t);var n=en(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e,n){fn(this,t);var r=dn(this,(t.__proto__||Object.getPrototy...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){gn(this,t);var n=bn(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){wn(this,t);var n=On(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){kn(this,t);var n=xn(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){jn(this,t);var n=Pn(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){Dn(this,t);var n=In(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){Fn(this,t);var n=Un(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){zn(this,t);var n=Vn(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){$n(this,t);var n=Kn(this,(t.__proto__||Object.getPrototype...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){return Xn(this,t),Zn(this,(t.__proto__||Object.getPrototyp...
  function e (line 12) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 12) | function t(e){nr(this,t);var n=rr(this,(t.__proto__||Object.getPrototype...
  function n (line 12) | function n(e){function t(e,n,r){e&&e.then?e.then(function(e){t(e,n,r)})....
  function r (line 12) | function r(){--a<=0&&t(e)}
  function t (line 12) | function t(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.\^...
  function n (line 12) | function n(e){return"string"!=typeof e&&(e=String(e)),e}
  function r (line 12) | function r(e){var t={next:function(){var t=e.shift();return{done:void 0=...
  function o (line 12) | function o(e){this.map={},e instanceof o?e.forEach(function(e,t){this.ap...
  function a (line 12) | function a(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already...
  function i (line 12) | function i(e){return new Promise(function(t,n){e.onload=function(){t(e.r...
  function l (line 12) | function l(e){var t=new FileReader,n=i(t);return t.readAsArrayBuffer(e),n}
  function s (line 12) | function s(e){var t=new FileReader,n=i(t);return t.readAsText(e),n}
  function u (line 12) | function u(e){for(var t=new Uint8Array(e),n=new Array(t.length),r=0;r<t....
  function c (line 12) | function c(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLe...
  function p (line 12) | function p(){return this.bodyUsed=!1,this._initBody=function(e){if(this....
  function f (line 12) | function f(e){var t=e.toUpperCase();return w.indexOf(t)>-1?t:e}
  function d (line 12) | function d(e,t){t=t||{};var n=t.body;if(e instanceof d){if(e.bodyUsed)th...
  function h (line 12) | function h(e){var t=new FormData;return e.trim().split("&").forEach(func...
  function m (line 12) | function m(e){var t=new o;return e.split(/\r?\n/).forEach(function(e){va...
  function g (line 12) | function g(e,t){t||(t={}),this.type="default",this.status="status"in t?t...
  function r (line 12) | function r(e){for(var t=arguments.length-1,n="Minified React error #"+e+...
  function o (line 12) | function o(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n...
  function a (line 12) | function a(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n...
  function i (line 12) | function i(){}
  function l (line 12) | function l(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n...
  function s (line 12) | function s(e,t,n){var r,o={},a=null,i=null;if(null!=t)for(r in void 0!==...
  function u (line 12) | function u(e){return"object"==typeof e&&null!==e&&e.$$typeof===O}
  function c (line 12) | function c(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g...
  function p (line 12) | function p(e,t,n,r){if(A.length){var o=A.pop();return o.result=e,o.keyPr...
  function f (line 12) | function f(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,...
  function d (line 12) | function d(e,t,n,o){var a=typeof e;"undefined"!==a&&"boolean"!==a||(e=nu...
  function h (line 12) | function h(e,t){return"object"==typeof e&&null!==e&&null!=e.key?c(e.key)...
  function m (line 12) | function m(e,t){e.func.call(e.context,t,e.count++)}
  function g (line 12) | function g(e,t,n){var r=e.result,o=e.keyPrefix;e=e.func.call(e.context,t...
  function b (line 12) | function b(e,t,n,r,o){var a="";null!=n&&(a=(""+n).replace(I,"$&/")+"/"),...
  function r (line 20) | function r(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"fun...
  function r (line 20) | function r(e){for(var t=arguments.length-1,n="Minified React error #"+e+...
  function o (line 20) | function o(e,t){return(e&t)===t}
  function a (line 20) | function a(e,t){if(Pn.hasOwnProperty(e)||2<e.length&&("o"===e[0]||"O"===...
  function i (line 20) | function i(e){return Nn.hasOwnProperty(e)?Nn[e]:null}
  function l (line 20) | function l(e){return e[1].toUpperCase()}
  function s (line 20) | function s(e,t,n,r,o,a,i,l,s){Gn._hasCaughtError=!1,Gn._caughtError=null...
  function u (line 20) | function u(){if(Gn._hasRethrowError){var e=Gn._rethrowError;throw Gn._re...
  function c (line 20) | function c(){if(qn)for(var e in Wn){var t=Wn[e],n=qn.indexOf(e);if(-1<n|...
  function p (line 20) | function p(e,t,n){Qn[e]&&r("100",e),Qn[e]=t,Yn[e]=t.eventTypes[n].depend...
  function f (line 20) | function f(e){qn&&r("101"),qn=Array.prototype.slice.call(e),c()}
  function d (line 20) | function d(e){var t,n=!1;for(t in e)if(e.hasOwnProperty(t)){var o=e[t];W...
  function h (line 20) | function h(e,t,n,r){t=e.type||"unknown-event",e.currentTarget=er(r),Gn.i...
  function m (line 20) | function m(e,t){return null==t&&r("30"),null==e?t:Array.isArray(e)?Array...
  function g (line 20) | function g(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}
  function b (line 20) | function b(e,t){if(e){var n=e._dispatchListeners,r=e._dispatchInstances;...
  function y (line 20) | function y(e){return b(e,!0)}
  function v (line 20) | function v(e){return b(e,!1)}
  function E (line 20) | function E(e,t){var n=e.stateNode;if(!n)return null;var o=Xn(n);if(!o)re...
  function w (line 20) | function w(e,t,n,r){for(var o,a=0;a<$n.length;a++){var i=$n[a];i&&(i=i.e...
  function O (line 20) | function O(e){e&&(tr=m(tr,e))}
  function _ (line 20) | function _(e){var t=tr;tr=null,t&&(e?g(t,y):g(t,v),tr&&r("95"),Gn.rethro...
  function k (line 20) | function k(e){if(e[ar])return e[ar];for(var t=[];!e[ar];){if(t.push(e),!...
  function x (line 20) | function x(e){if(5===e.tag||6===e.tag)return e.stateNode;r("33")}
  function C (line 20) | function C(e){return e[ir]||null}
  function S (line 20) | function S(e){do{e=e.return}while(e&&5!==e.tag);return e||null}
  function j (line 20) | function j(e,t,n){for(var r=[];e;)r.push(e),e=S(e);for(e=r.length;0<e--;...
  function P (line 20) | function P(e,t,n){(t=E(e,n.dispatchConfig.phasedRegistrationNames[t]))&&...
  function T (line 20) | function T(e){e&&e.dispatchConfig.phasedRegistrationNames&&j(e._targetIn...
  function N (line 20) | function N(e){if(e&&e.dispatchConfig.phasedRegistrationNames){var t=e._t...
  function R (line 20) | function R(e,t,n){e&&n&&n.dispatchConfig.registrationName&&(t=E(e,n.disp...
  function D (line 20) | function D(e){e&&e.dispatchConfig.registrationName&&R(e._targetInst,null...
  function I (line 20) | function I(e){g(e,T)}
  function A (line 20) | function A(e,t,n,r){if(n&&r)e:{for(var o=n,a=r,i=0,l=o;l;l=S(l))i++;l=0;...
  function L (line 20) | function L(){return!ur&&En.canUseDOM&&(ur="textContent"in document.docum...
  function F (line 20) | function F(){if(cr._fallbackText)return cr._fallbackText;var e,t,n=cr._s...
  function U (line 20) | function U(){return"value"in cr._root?cr._root.value:cr._root[L()]}
  function M (line 20) | function M(e,t,n,r){this.dispatchConfig=e,this._targetInst=t,this.native...
  function B (line 20) | function B(e,t,n,r){if(this.eventPool.length){var o=this.eventPool.pop()...
  function H (line 20) | function H(e){e instanceof this||r("223"),e.destructor(),10>this.eventPo...
  function z (line 20) | function z(e){e.eventPool=[],e.getPooled=B,e.release=H}
  function V (line 20) | function V(e,t,n,r){return M.call(this,e,t,n,r)}
  function G (line 20) | function G(e,t,n,r){return M.call(this,e,t,n,r)}
  function q (line 20) | function q(e,t){switch(e){case"topKeyUp":return-1!==dr.indexOf(t.keyCode...
  function W (line 20) | function W(e){return e=e.detail,"object"==typeof e&&"data"in e?e.data:null}
  function $ (line 20) | function $(e,t){switch(e){case"topCompositionEnd":return W(t);case"topKe...
  function K (line 20) | function K(e,t){if(kr)return"topCompositionEnd"===e||!hr&&q(e,t)?(e=F(),...
  function Q (line 20) | function Q(e){if(e=Zn(e)){Cr&&"function"==typeof Cr.restoreControlledSta...
  function Y (line 20) | function Y(e){Sr?jr?jr.push(e):jr=[e]:Sr=e}
  function J (line 20) | function J(){if(Sr){var e=Sr,t=jr;if(jr=Sr=null,Q(e),t)for(e=0;e<t.lengt...
  function X (line 20) | function X(e,t){return e(t)}
  function Z (line 20) | function Z(e,t){if(Nr)return X(e,t);Nr=!0;try{return X(e,t)}finally{Nr=!...
  function ee (line 20) | function ee(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"inpu...
  function te (line 20) | function te(e){return e=e.target||e.srcElement||window,e.correspondingUs...
  function ne (line 20) | function ne(e,t){if(!En.canUseDOM||t&&!("addEventListener"in document))r...
  function re (line 20) | function re(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCas...
  function oe (line 20) | function oe(e){var t=re(e)?"checked":"value",n=Object.getOwnPropertyDesc...
  function ae (line 20) | function ae(e){e._valueTracker||(e._valueTracker=oe(e))}
  function ie (line 20) | function ie(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n...
  function le (line 20) | function le(e,t,n){return e=M.getPooled(Dr.change,e,t,n),e.type="change"...
  function se (line 20) | function se(e){O(e),_(!1)}
  function ue (line 20) | function ue(e){if(ie(x(e)))return e}
  function ce (line 20) | function ce(e,t){if("topChange"===e)return t}
  function pe (line 20) | function pe(){Ir&&(Ir.detachEvent("onpropertychange",fe),Ar=Ir=null)}
  function fe (line 20) | function fe(e){"value"===e.propertyName&&ue(Ar)&&(e=le(Ar,e,te(e)),Z(se,...
  function de (line 20) | function de(e,t,n){"topFocus"===e?(pe(),Ir=t,Ar=n,Ir.attachEvent("onprop...
  function he (line 20) | function he(e){if("topSelectionChange"===e||"topKeyUp"===e||"topKeyDown"...
  function me (line 20) | function me(e,t){if("topClick"===e)return ue(t)}
  function ge (line 20) | function ge(e,t){if("topInput"===e||"topChange"===e)return ue(t)}
  function be (line 20) | function be(e,t,n,r){return M.call(this,e,t,n,r)}
  function ye (line 20) | function ye(e){var t=this.nativeEvent;return t.getModifierState?t.getMod...
  function ve (line 20) | function ve(){return ye}
  function Ee (line 20) | function Ee(e,t,n,r){return M.call(this,e,t,n,r)}
  function we (line 20) | function we(e){return e=e.type,"string"==typeof e?e:"function"==typeof e...
  function Oe (line 20) | function Oe(e){var t=e;if(e.alternate)for(;t.return;)t=t.return;else{if(...
  function _e (line 20) | function _e(e){return!!(e=e._reactInternalFiber)&&2===Oe(e)}
  function ke (line 20) | function ke(e){2!==Oe(e)&&r("188")}
  function xe (line 20) | function xe(e){var t=e.alternate;if(!t)return t=Oe(e),3===t&&r("188"),1=...
  function Ce (line 20) | function Ce(e){if(!(e=xe(e)))return null;for(var t=e;;){if(5===t.tag||6=...
  function Se (line 20) | function Se(e){if(!(e=xe(e)))return null;for(var t=e;;){if(5===t.tag||6=...
  function je (line 20) | function je(e){var t=e.targetInst;do{if(!t){e.ancestors.push(t);break}va...
  function Pe (line 20) | function Pe(e){Vr=!!e}
  function Te (line 20) | function Te(e,t,n){return n?_n.listen(n,t,Re.bind(null,e)):null}
  function Ne (line 20) | function Ne(e,t,n){return n?_n.capture(n,t,Re.bind(null,e)):null}
  function Re (line 20) | function Re(e,t){if(Vr){var n=te(t);if(n=k(n),null===n||"number"!=typeof...
  function De (line 20) | function De(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["W...
  function Ie (line 20) | function Ie(e){if($r[e])return $r[e];if(!Wr[e])return e;var t,n=Wr[e];fo...
  function Ae (line 20) | function Ae(e){return Object.prototype.hasOwnProperty.call(e,Xr)||(e[Xr]...
  function Le (line 20) | function Le(e){for(;e&&e.firstChild;)e=e.firstChild;return e}
  function Fe (line 20) | function Fe(e,t){var n=Le(e);e=0;for(var r;n;){if(3===n.nodeType){if(r=e...
  function Ue (line 20) | function Ue(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(...
  function Me (line 20) | function Me(e,t){if(oo||null==to||to!==kn())return null;var n=to;return"...
  function Be (line 20) | function Be(e,t,n,r){return M.call(this,e,t,n,r)}
  function He (line 20) | function He(e,t,n,r){return M.call(this,e,t,n,r)}
  function ze (line 20) | function ze(e,t,n,r){return M.call(this,e,t,n,r)}
  function Ve (line 20) | function Ve(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&...
  function Ge (line 20) | function Ge(e,t,n,r){return M.call(this,e,t,n,r)}
  function qe (line 20) | function qe(e,t,n,r){return M.call(this,e,t,n,r)}
  function We (line 20) | function We(e,t,n,r){return M.call(this,e,t,n,r)}
  function $e (line 20) | function $e(e,t,n,r){return M.call(this,e,t,n,r)}
  function Ke (line 20) | function Ke(e,t,n,r){return M.call(this,e,t,n,r)}
  function Qe (line 20) | function Qe(e){0>fo||(e.current=po[fo],po[fo]=null,fo--)}
  function Ye (line 20) | function Ye(e,t){fo++,po[fo]=e.current,e.current=t}
  function Je (line 20) | function Je(e){return Ze(e)?go:ho.current}
  function Xe (line 20) | function Xe(e,t){var n=e.type.contextTypes;if(!n)return jn;var r=e.state...
  function Ze (line 20) | function Ze(e){return 2===e.tag&&null!=e.type.childContextTypes}
  function et (line 20) | function et(e){Ze(e)&&(Qe(mo,e),Qe(ho,e))}
  function tt (line 20) | function tt(e,t,n){null!=ho.cursor&&r("168"),Ye(ho,t,e),Ye(mo,n,e)}
  function nt (line 20) | function nt(e,t){var n=e.stateNode,o=e.type.childContextTypes;if("functi...
  function rt (line 20) | function rt(e){if(!Ze(e))return!1;var t=e.stateNode;return t=t&&t.__reac...
  function ot (line 20) | function ot(e,t){var n=e.stateNode;if(n||r("169"),t){var o=nt(e,go);n.__...
  function at (line 20) | function at(e,t,n){this.tag=e,this.key=t,this.stateNode=this.type=null,t...
  function it (line 20) | function it(e,t,n){var r=e.alternate;return null===r?(r=new at(e.tag,e.k...
  function lt (line 20) | function lt(e,t,n){var o=void 0,a=e.type,i=e.key;return"function"==typeo...
  function st (line 20) | function st(e,t,n,r){return t=new at(10,r,t),t.pendingProps=e,t.expirati...
  function ut (line 20) | function ut(e,t,n){return t=new at(6,null,t),t.pendingProps=e,t.expirati...
  function ct (line 20) | function ct(e,t,n){return t=new at(7,e.key,t),t.type=e.handler,t.pending...
  function pt (line 20) | function pt(e,t,n){return e=new at(9,null,t),e.expirationTime=n,e}
  function ft (line 20) | function ft(e,t,n){return t=new at(4,e.key,t),t.pendingProps=e.children|...
  function dt (line 20) | function dt(e){return function(t){try{return e(t)}catch(e){}}}
  function ht (line 20) | function ht(e){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)ret...
  function mt (line 20) | function mt(e){"function"==typeof bo&&bo(e)}
  function gt (line 20) | function gt(e){"function"==typeof yo&&yo(e)}
  function bt (line 20) | function bt(e){return{baseState:e,expirationTime:0,first:null,last:null,...
  function yt (line 20) | function yt(e,t){null===e.last?e.first=e.last=t:(e.last.next=t,e.last=t)...
  function vt (line 20) | function vt(e,t){var n=e.alternate,r=e.updateQueue;null===r&&(r=e.update...
  function Et (line 20) | function Et(e,t,n,r){return e=e.partialState,"function"==typeof e?e.call...
  function wt (line 20) | function wt(e,t,n,r,o,a){null!==e&&e.updateQueue===n&&(n=t.updateQueue={...
  function Ot (line 20) | function Ot(e,t){var n=e.callbackList;if(null!==n)for(e.callbackList=nul...
  function _t (line 20) | function _t(e,t,n,o){function a(e,t){t.updater=i,e.stateNode=t,t._reactI...
  function kt (line 20) | function kt(e){return null===e||void 0===e?null:(e=xo&&e[xo]||e["@@itera...
  function xt (line 20) | function xt(e,t){var n=t.ref;if(null!==n&&"function"!=typeof n){if(t._ow...
  function Ct (line 20) | function Ct(e,t){"textarea"!==e.type&&r("31","[object Object]"===Object....
  function St (line 20) | function St(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.next...
  function jt (line 20) | function jt(e,t,n,o,a){function i(e,t,n){var r=t.expirationTime;t.child=...
  function Pt (line 20) | function Pt(e,t,n){function o(e){e.effectTag|=4}var a=e.createInstance,i...
  function Tt (line 20) | function Tt(e,t){function n(e){var n=e.ref;if(null!==n)try{n(null)}catch...
  function Nt (line 20) | function Nt(e){function t(e){return e===Po&&r("174"),e}var n=e.getChildH...
  function Rt (line 20) | function Rt(e){function t(e,t){var n=new at(5,null,0);n.type="DELETED",n...
  function Dt (line 20) | function Dt(e){function t(e){ae=Q=!0;var t=e.stateNode;if(t.current===e&...
  function It (line 20) | function It(e){function t(e){return e=Ce(e),null===e?null:e.stateNode}va...
  function At (line 20) | function At(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?argum...
  function Lt (line 20) | function Lt(e){return!!Qo.hasOwnProperty(e)||!Ko.hasOwnProperty(e)&&($o....
  function Ft (line 20) | function Ft(e,t,n){var r=i(t);if(r&&a(t,n)){var o=r.mutationMethod;o?o(e...
  function Ut (line 20) | function Ut(e,t,n){Lt(t)&&(null==n?e.removeAttribute(t):e.setAttribute(t...
  function Mt (line 20) | function Mt(e,t){var n=i(t);n?(t=n.mutationMethod)?t(e,void 0):n.mustUse...
  function Bt (line 20) | function Bt(e,t){var n=t.value,r=t.checked;return wn({type:void 0,step:v...
  function Ht (line 20) | function Ht(e,t){var n=t.defaultValue;e._wrapperState={initialChecked:nu...
  function zt (line 20) | function zt(e,t){null!=(t=t.checked)&&Ft(e,"checked",t)}
  function Vt (line 20) | function Vt(e,t){zt(e,t);var n=t.value;null!=n?0===n&&""===e.value?e.val...
  function Gt (line 20) | function Gt(e,t){switch(t.type){case"submit":case"reset":break;case"colo...
  function qt (line 20) | function qt(e){var t="";return vn.Children.forEach(e,function(e){null==e...
  function Wt (line 20) | function Wt(e,t){return e=wn({children:void 0},t),(t=qt(t.children))&&(e...
  function $t (line 20) | function $t(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t...
  function Kt (line 20) | function Kt(e,t){var n=t.value;e._wrapperState={initialValue:null!=n?n:t...
  function Qt (line 20) | function Qt(e,t){return null!=t.dangerouslySetInnerHTML&&r("91"),wn({},t...
  function Yt (line 20) | function Yt(e,t){var n=t.value;null==n&&(n=t.defaultValue,t=t.children,n...
  function Jt (line 20) | function Jt(e,t){var n=t.value;null!=n&&(n=""+n,n!==e.value&&(e.value=n)...
  function Xt (line 20) | function Xt(e){var t=e.textContent;t===e._wrapperState.initialValue&&(e....
  function Zt (line 20) | function Zt(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";ca...
  function en (line 20) | function en(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?Zt(t...
  function tn (line 20) | function tn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.n...
  function nn (line 20) | function nn(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=...
  function rn (line 20) | function rn(e,t,n){t&&(ta[e]&&(null!=t.children||null!=t.dangerouslySetI...
  function on (line 20) | function on(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;swit...
  function an (line 20) | function an(e,t){e=9===e.nodeType||11===e.nodeType?e:e.ownerDocument;var...
  function ln (line 20) | function ln(e,t,n,r){return n=9===n.nodeType?n:n.ownerDocument,r===na&&(...
  function sn (line 20) | function sn(e,t){return(9===t.nodeType?t:t.ownerDocument).createTextNode...
  function un (line 20) | function un(e,t,n,r){var o=on(t,n);switch(t){case"iframe":case"object":T...
  function cn (line 20) | function cn(e,t,n,r,o){var a=null;switch(t){case"input":n=Bt(e,n),r=Bt(e...
  function pn (line 20) | function pn(e,t,n,r,o){"input"===n&&"radio"===o.type&&null!=o.name&&zt(e...
  function fn (line 20) | function fn(e,t,n,r,o){switch(t){case"iframe":case"object":Te("topLoad",...
  function dn (line 20) | function dn(e,t){return e.nodeValue!==t}
  function hn (line 20) | function hn(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeTy...
  function mn (line 20) | function mn(e){return!(!(e=e?9===e.nodeType?e.documentElement:e.firstChi...
  function gn (line 20) | function gn(e,t,n,o,a){hn(n)||r("200");var i=n._reactRootContainer;if(i)...
  function bn (line 20) | function bn(e,t){var n=2<arguments.length&&void 0!==arguments[2]?argumen...
  function yn (line 20) | function yn(e,t){this._reactRootContainer=sa.createContainer(e,t)}
  function n (line 28) | function n(){}
  method _enabled (line 28) | get _enabled(){return Vr}
  method _handleTopLevel (line 28) | get _handleTopLevel(){return Gr}
  function r (line 28) | function r(e){if(void 0===(e=e||("undefined"!=typeof document?document:v...
  function r (line 28) | function r(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!==e&&t!==t}
  function o (line 28) | function o(e,t){if(r(e,t))return!0;if("object"!=typeof e||null===e||"obj...
  function r (line 28) | function r(e,t){return!(!e||!t)&&(e===t||!o(e)&&(o(t)?r(e,t.parentNode):...
  function r (line 28) | function r(e){return o(e)&&3==e.nodeType}
  function r (line 28) | function r(e){var t=e?e.ownerDocument||e:document,n=t.defaultView||windo...
  function r (line 28) | function r(e){try{e.focus()}catch(e){}}
  function r (line 28) | function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a ...
  function o (line 28) | function o(e,t){if(!e)throw new ReferenceError("this hasn't been initial...
  function a (line 28) | function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("S...
  function e (line 28) | function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.en...
  function t (line 28) | function t(){return r(this,t),o(this,(t.__proto__||Object.getPrototypeOf...
  function r (line 28) | function r(){s.throwErrors&&"undefined"!=typeof window&&window.console&&...
  function o (line 28) | function o(e){return Array.prototype.slice.call(e)}
  function a (line 28) | function a(e){var t,n=e[0],a={};for(("string"!=typeof n||e.length>3||e.l...
  function i (line 28) | function i(e,t){return{gettext:[t.original],ngettext:[t.original,t.plura...
  function l (line 28) | function l(e,t){var n,r="gettext";return t.context&&(r="p"+r),"string"==...
  function s (line 28) | function s(){if(!(this instanceof s))return new s;this.defaultLocaleSlug...
  function o (line 31) | function o(e){return d.PF.compile(e||"nplurals=2; plural=(n != 1);")}
  function a (line 31) | function a(e,t){this._key=e,this._i18n=t}
  function e (line 34) | function e(e){return Object.prototype.toString.call(e).slice(8,-1).toLow...
  function t (line 34) | function t(e,t){for(var n=[];t>0;n[--t]=e);return n.join("")}
  function t (line 34) | function t(e){return!0===e?1:e||0}
  function t (line 34) | function t(){var e;return e=n.lexer.lex()||1,"number"!=typeof e&&(e=n.sy...
  function r (line 34) | function r(e){return e&&e.__esModule?e:{default:e}}
  function o (line 34) | function o(e,t){var n,r,o=t[e],a=0;for(r=e+1;r<t.length;r++)if(n=t[r],n....
  function a (line 34) | function a(e,t){var n,r,i,s,c,f,d,m,g,b,y=[],v={};for(f=0;f<e.length;f++...
  function i (line 34) | function i(e){var t=e.mixedString,n=e.components,r=e.throwErrors;if(h=t,...
  function r (line 34) | function r(e){var t=e&&(w&&e[w]||e[O]);if("function"==typeof t)return t}
  function o (line 34) | function o(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g...
  function a (line 34) | function a(e,t){return e&&"object"==typeof e&&null!=e.key?o(e.key):t.toS...
  function i (line 34) | function i(e,t,n,o){var l=typeof e;if("undefined"!==l&&"boolean"!==l||(e...
  function l (line 34) | function l(e,t,n){return null==e?0:i(e,"",t,n)}
  function s (line 34) | function s(e){return(""+e).replace(_,"$&/")}
  function u (line 34) | function u(e,t){return h.cloneElement(e,{key:t},void 0!==e.props?e.props...
  function c (line 34) | function c(e,t,n,r){this.result=e,this.keyPrefix=t,this.func=n,this.cont...
  function p (line 34) | function p(e,t,n){var r=e.result,o=e.keyPrefix,a=e.func,i=e.context,l=a....
  function f (line 34) | function f(e,t,n,r,o){var a="";null!=n&&(a=s(n)+"/");var i=c.getPooled(t...
  function d (line 34) | function d(e){if("object"!=typeof e||!e||Array.isArray(e))return y(!1,"R...
  function r (line 34) | function r(e){return e.match(/^\{\{\//)?{type:"componentClose",value:e.r...
  function r (line 34) | function r(e){if(!(this instanceof r))return new r(e);"number"==typeof e...
  function n (line 41) | function n(e,t,n,r){e=(e+"").replace(/[^0-9+\-Ee.]/g,"");var o=isFinite(...
  function e (line 41) | function e(e,t,n,r,i,l){l!==a&&o(!1,"Calling PropTypes validators direct...
  function t (line 41) | function t(){return e}
  function r (line 41) | function r(e){var t,n=e.Symbol;return"function"==typeof n?n.observable?t...
  function r (line 41) | function r(e){return function(t){var n=t.dispatch,r=t.getState;return fu...
  function r (line 41) | function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}
  function r (line 41) | function r(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++...
  function n (line 41) | function n(e,t){var n=e[1]||"",o=e[3];if(!o)return n;if(t&&"function"==t...
  function r (line 41) | function r(e){return"/*# sourceMappingURL=data:application/json;charset=...
  function r (line 41) | function r(e,t){for(var n=0;n<e.length;n++){var r=e[n],o=h[r.id];if(o){o...
  function o (line 41) | function o(e,t){for(var n=[],r={},o=0;o<e.length;o++){var a=e[o],i=t.bas...
  function a (line 41) | function a(e,t){var n=b(e.insertInto);if(!n)throw new Error("Couldn't fi...
  function i (line 41) | function i(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e...
  function l (line 41) | function l(e){var t=document.createElement("style");return e.attrs.type=...
  function s (line 41) | function s(e){var t=document.createElement("link");return e.attrs.type="...
  function u (line 41) | function u(e,t){Object.keys(t).forEach(function(n){e.setAttribute(n,t[n]...
  function c (line 41) | function c(e,t){var n,r,o,a;if(t.transform&&e.css){if(!(a=t.transform(e....
  function p (line 41) | function p(e,t,n,r){var o=n?"":r.css;if(e.styleSheet)e.styleSheet.cssTex...
  function f (line 41) | function f(e,t){var n=t.css,r=t.media;if(r&&e.setAttribute("media",r),e....
  function d (line 41) | function d(e,t,n){var r=n.css,o=n.sourceMap,a=void 0===t.convertToAbsolu...
  function i (line 41) | function i(e){throw new RangeError(R[e])}
  function l (line 41) | function l(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}
  function s (line 41) | function s(e,t){var n=e.split("@"),r="";return n.length>1&&(r=n[0]+"@",e...
  function u (line 41) | function u(e){for(var t,n,r=[],o=0,a=e.length;o<a;)t=e.charCodeAt(o++),t...
  function c (line 41) | function c(e){return l(e,function(e){var t="";return e>65535&&(e-=65536,...
  function p (line 41) | function p(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:w}
  function f (line 41) | function f(e,t){return e+22+75*(e<26)-((0!=t)<<5)}
  function d (line 41) | function d(e,t,n){var r=0;for(e=n?I(e/x):e>>1,e+=I(e/t);e>D*_>>1;r+=w)e=...
  function h (line 41) | function h(e){var t,n,r,o,a,l,s,u,f,h,m=[],g=e.length,b=0,y=S,v=C;for(n=...
  function m (line 41) | function m(e){var t,n,r,o,a,l,s,c,p,h,m,g,b,y,v,k=[];for(e=u(e),g=e.leng...
  function g (line 41) | function g(e){return s(e,function(e){return P.test(e)?h(e.slice(4).toLow...
  function b (line 41) | function b(e){return s(e,function(e){return T.test(e)?"xn--"+m(e):e})}
  function t (line 41) | function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,lo...

FILE: spec/fixtures/dynamic_finders/plugin_version/windows-azure-storage/javascript_comment/js/windows-azure-storage-admin.js
  function get_upload_progress (line 59) | function get_upload_progress( item_id, item ) {

FILE: spec/fixtures/dynamic_finders/plugin_version/wp-gmappity-easy-google-maps/javascript_var/js/wpgmappity-iframe.js
  function getUrlVars (line 3) | function getUrlVars()
  function wpgmappity_build_sample_map (line 16) | function wpgmappity_build_sample_map(target_div, data) {
  function wpgmappity_build_data_container (line 32) | function wpgmappity_build_data_container() {
  function wpgmappity_post_resize (line 87) | function wpgmappity_post_resize(map, data) {
  function wpgmappity_update_map_size (line 93) | function wpgmappity_update_map_size(map, data) {
  function wpgmappity_set_size_event (line 105) | function wpgmappity_set_size_event(map, data) {
  function wpgmappity_set_zoom_event (line 176) | function wpgmappity_set_zoom_event(map, data) {
  function wpgmappity_set_center (line 195) | function wpgmappity_set_center(map,data) {
  function wpgmappity_geocode_response (line 202) | function wpgmappity_geocode_response(map, data, type) {
  function wpgmappity_set_center_point_event (line 256) | function wpgmappity_set_center_point_event(map, data) {
  function wpgmappity_set_add_marker_event (line 283) | function wpgmappity_set_add_marker_event(map, data) {
  function wpgmappity_change_map_type (line 334) | function wpgmappity_change_map_type(map, data, selection) {
  function wpgmappity_set_type_event (line 355) | function wpgmappity_set_type_event(map, data) {
  function wpgmappity_set_alignment_event (line 362) | function wpgmappity_set_alignment_event(map, data) {
  function wpgmappity_set_modal_events (line 372) | function wpgmappity_set_modal_events(map, data) {
  function wgmappity_set_sample_map_events (line 378) | function wgmappity_set_sample_map_events(map, wpgmappity_gmap_data) {
  function wgmappity_set_map_submission_event (line 392) | function wgmappity_set_map_submission_event(map, data) {
  function wpgmappity_iframe_js (line 414) | function wpgmappity_iframe_js() {

FILE: spec/fixtures/dynamic_finders/plugin_version/youtube-channel-gallery/script_comment/script.js
  function ytcplayVideo (line 39) | function ytcplayVideo (iframeid, youtubeid, quality) {
  function ytcStopVideo (line 54) | function ytcStopVideo(ifr) {
  function changePlayerContent (line 68) | function changePlayerContent (thumb, youtubeid) {
  function checkIfInView (line 91) | function checkIfInView(element){

FILE: spec/fixtures/finders/db_exports/dump.sql
  type `wp_comments` (line 4) | CREATE TABLE `wp_comments` (

FILE: spec/fixtures/finders/interesting_findings/upload_sql_dump/dump.sql
  type `wp_commentmeta` (line 9) | CREATE TABLE IF NOT EXISTS `wp_commentmeta` (

FILE: spec/lib/finders/dynamic_finder/version/body_pattern_spec.rb
  type WPScan (line 4) | module WPScan
    type Finders (line 5) | module Finders
      type Version (line 6) | module Version
        type Rspec (line 8) | module Rspec

FILE: spec/lib/finders/dynamic_finder/version/comment_spec.rb
  type WPScan (line 4) | module WPScan
    type Finders (line 5) | module Finders
      type Version (line 6) | module Version
        type Rspec (line 8) | module Rspec

FILE: spec/lib/finders/dynamic_finder/version/config_parser_spec.rb
  type WPScan (line 4) | module WPScan
    type Finders (line 5) | module Finders
      type Version (line 6) | module Version
        type Rspec (line 8) | module Rspec

FILE: spec/lib/finders/dynamic_finder/version/header_pattern_spec.rb
  type WPScan (line 4) | module WPScan
    type Finders (line 5) | module Finders
      type Version (line 6) | module Version
        type Rspec (line 8) | module Rspec

FILE: spec/lib/finders/dynamic_finder/version/javascript_var_spec.rb
  type WPScan (line 4) | module WPScan
    type Finders (line 5) | module Finders
      type Version (line 6) | module Version
        type Rspec (line 8) | module Rspec

FILE: spec/lib/finders/dynamic_finder/version/query_parameter_spec.rb
  type WPScan (line 4) | module WPScan
    type Finders (line 5) | module Finders
      type Version (line 6) | module Version
        type Rspec (line 8) | module Rspec

FILE: spec/lib/finders/dynamic_finder/version/xpath_spec.rb
  type WPScan (line 4) | module WPScan
    type Finders (line 5) | module Finders
      type Version (line 6) | module Version
        type Rspec (line 8) | module Rspec

FILE: spec/spec_helper.rb
  function redefine_constant (line 19) | def redefine_constant(constant, value)
  function df_expected_all (line 25) | def df_expected_all
  function df_tested_class_constant (line 29) | def df_tested_class_constant(type, finder_class, slug = nil)
  function df_stubbed_response (line 37) | def df_stubbed_response(fixture, finder_super_class)
  function vuln_api_data_for (line 45) | def vuln_api_data_for(path)
  function rspec_parsed_options (line 52) | def rspec_parsed_options(args)
  type WebMock (line 63) | module WebMock
    type HttpLibAdapters (line 64) | module HttpLibAdapters
      class TyphoeusAdapter (line 65) | class TyphoeusAdapter < HttpLibAdapter
        method effective_url (line 66) | def self.effective_url(effective_uri)
        method generate_typhoeus_response (line 73) | def self.generate_typhoeus_response(request_signature, webmock_res...
Copy disabled (too large) Download .json
Condensed preview — 4987 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (70,705K chars).
[
  {
    "path": ".codeclimate.yml",
    "chars": 181,
    "preview": "version: \"2\"\n# https://docs.codeclimate.com/docs/default-analysis-configuration#sample-codeclimateyml\nchecks:\n  method-c"
  },
  {
    "path": ".dockerignore",
    "chars": 138,
    "preview": "git/\nbundle/\n.idea/\n.yardoc/\ncache/\ncoverage/\nspec/\n.*\n**/*.md\n*.md\n!README.md\nDockerfile\n**/*.orig\n*.orig\nbin/wpscan-*\n"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "chars": 361,
    "preview": "# Contributing to WPScan\n\n## Licensing\n\nBy submitting code contributions to the WPScan development team via Github Pull "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 963,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\nBefore submittin"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 595,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Is your fea"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/other-issue.md",
    "chars": 260,
    "preview": "---\nname: Other Issue\nabout: Create a report which is not a related to a Bug or Feature\ntitle: ''\nlabels: ''\nassignees: "
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 335,
    "preview": "## Licensing\n\nBy submitting code contributions to the WPScan development team via Github Pull Requests, or any other met"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 590,
    "preview": "# To get started with Dependabot version updates, you'll need to specify which\n# package ecosystems to update and where "
  },
  {
    "path": ".github/workflows/build.yml",
    "chars": 1053,
    "preview": "name: Build\n\non: [push, pull_request]\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n\n    strategy:\n      matrix:\n        r"
  },
  {
    "path": ".github/workflows/docker.yml",
    "chars": 1455,
    "preview": "name: Build Docker Images\n\non:\n  push:\n    branches:\n      - master\n  release:\n    types: [published]\n  schedule:\n    - "
  },
  {
    "path": ".github/workflows/gempush.yml",
    "chars": 1083,
    "preview": "name: Ruby Gem\n\non:\n  release:\n    types: [published]\n\njobs:\n  build:\n    name: Build + Publish\n    runs-on: ubuntu-late"
  },
  {
    "path": ".gitignore",
    "chars": 224,
    "preview": "*.gem\n*.rbc\n.bundle\n.config\ncoverage\npkg\nrdoc\nGemfile.lock\n\n# YARD artifacts\n.yardoc\n_yardoc\ndoc/\n.wpscan/\n\n.ash_history"
  },
  {
    "path": ".rspec",
    "chars": 29,
    "preview": "--require spec_helper\n--color"
  },
  {
    "path": ".rubocop.yml",
    "chars": 830,
    "preview": "require: rubocop-performance\nAllCops:\n  NewCops: enable\n  SuggestExtensions: false\n  TargetRubyVersion: 2.7\n  Exclude:\n "
  },
  {
    "path": ".ruby-gemset",
    "chars": 9,
    "preview": "wpscanv3\n"
  },
  {
    "path": ".ruby-version",
    "chars": 6,
    "preview": "3.0.2\n"
  },
  {
    "path": ".simplecov",
    "chars": 419,
    "preview": "# frozen_string_literal: true\n\nif ENV['GITHUB_ACTION']\n  require 'simplecov-lcov'\n\n  SimpleCov::Formatter::LcovFormatter"
  },
  {
    "path": "Dockerfile",
    "chars": 1177,
    "preview": "FROM ruby:3.4.2-alpine AS builder\nLABEL maintainer=\"WPScan Team <contact@wpscan.com>\"\n\nRUN echo \"install: --no-document "
  },
  {
    "path": "Gemfile",
    "chars": 158,
    "preview": "# frozen_string_literal: true\n\nsource 'https://rubygems.org'\ngemspec\n\n# gem 'cms_scanner', branch: 'xxx', git: 'https://"
  },
  {
    "path": "LICENSE",
    "chars": 3396,
    "preview": "WPScan Public Source License\n\nThe WPScan software (henceforth referred to simply as \"WPScan\") is dual-licensed - Copyrig"
  },
  {
    "path": "README.md",
    "chars": 9859,
    "preview": "<p align=\"center\">\n  <a href=\"https://wpscan.com/\">\n    <img src=\"https://raw.githubusercontent.com/wpscanteam/wpscan/gh"
  },
  {
    "path": "Rakefile",
    "chars": 417,
    "preview": "# rubocop:disable all\n\nrequire 'bundler/gem_tasks'\n\nexec = []\n\nbegin\n  require 'rubocop/rake_task'\n\n  RuboCop::RakeTask."
  },
  {
    "path": "app/app.rb",
    "chars": 115,
    "preview": "# frozen_string_literal: true\n\nrequire_relative 'models'\nrequire_relative 'finders'\nrequire_relative 'controllers'\n"
  },
  {
    "path": "app/controllers/aliases.rb",
    "chars": 388,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Controller\n    # Controller to add the aliases in the CLI\n    clas"
  },
  {
    "path": "app/controllers/core.rb",
    "chars": 3645,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Controller\n    # Specific Core controller to include WordPress che"
  },
  {
    "path": "app/controllers/custom_directories.rb",
    "chars": 861,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Controller\n    # Controller to ensure that the wp-content and wp-p"
  },
  {
    "path": "app/controllers/enumeration/cli_options.rb",
    "chars": 7704,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Controller\n    # Enumeration CLI Options\n    class Enumeration < C"
  },
  {
    "path": "app/controllers/enumeration/enum_methods.rb",
    "chars": 7133,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Controller\n    # Enumeration Methods\n    class Enumeration < CMSSc"
  },
  {
    "path": "app/controllers/enumeration.rb",
    "chars": 584,
    "preview": "# frozen_string_literal: true\n\nrequire_relative 'enumeration/cli_options'\nrequire_relative 'enumeration/enum_methods'\n\nm"
  },
  {
    "path": "app/controllers/main_theme.rb",
    "chars": 730,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Controller\n    # Main Theme Controller\n    class MainTheme < CMSSc"
  },
  {
    "path": "app/controllers/password_attack.rb",
    "chars": 4265,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Controller\n    # Password Attack Controller\n    class PasswordAtta"
  },
  {
    "path": "app/controllers/vuln_api.rb",
    "chars": 984,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Controller\n    # Controller to handle the API token\n    class Vuln"
  },
  {
    "path": "app/controllers/wp_version.rb",
    "chars": 1034,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Controller\n    # Wp Version Controller\n    class WpVersion < CMSSc"
  },
  {
    "path": "app/controllers.rb",
    "chars": 370,
    "preview": "# frozen_string_literal: true\n\nrequire_relative 'controllers/core'\nrequire_relative 'controllers/vuln_api'\nrequire_relat"
  },
  {
    "path": "app/finders/config_backups/known_filenames.rb",
    "chars": 1256,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module ConfigBackups\n      # Config Backup finder\n    "
  },
  {
    "path": "app/finders/config_backups.rb",
    "chars": 414,
    "preview": "# frozen_string_literal: true\n\nrequire_relative 'config_backups/known_filenames'\n\nmodule WPScan\n  module Finders\n    mod"
  },
  {
    "path": "app/finders/db_exports/known_locations.rb",
    "chars": 3065,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module DbExports\n      # DB Exports finder\n      class"
  },
  {
    "path": "app/finders/db_exports.rb",
    "chars": 399,
    "preview": "# frozen_string_literal: true\n\nrequire_relative 'db_exports/known_locations'\n\nmodule WPScan\n  module Finders\n    module "
  },
  {
    "path": "app/finders/interesting_findings/backup_db.rb",
    "chars": 679,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module InterestingFindings\n      # BackupDB finder\n   "
  },
  {
    "path": "app/finders/interesting_findings/debug_log.rb",
    "chars": 465,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module InterestingFindings\n      # debug.log finder\n  "
  },
  {
    "path": "app/finders/interesting_findings/duplicator_installer_log.rb",
    "chars": 564,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module InterestingFindings\n      # DuplicatorInstaller"
  },
  {
    "path": "app/finders/interesting_findings/emergency_pwd_reset_script.rb",
    "chars": 662,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module InterestingFindings\n      # Emergency Password "
  },
  {
    "path": "app/finders/interesting_findings/full_path_disclosure.rb",
    "chars": 663,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module InterestingFindings\n      # Full Path Disclosur"
  },
  {
    "path": "app/finders/interesting_findings/mu_plugins.rb",
    "chars": 1171,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module InterestingFindings\n      # Must Use Plugins Di"
  },
  {
    "path": "app/finders/interesting_findings/multisite.rb",
    "chars": 783,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module InterestingFindings\n      # Multisite checker\n "
  },
  {
    "path": "app/finders/interesting_findings/php_disabled.rb",
    "chars": 576,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module InterestingFindings\n      # See https://github."
  },
  {
    "path": "app/finders/interesting_findings/readme.rb",
    "chars": 745,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module InterestingFindings\n      # Readme.html finder\n"
  },
  {
    "path": "app/finders/interesting_findings/registration.rb",
    "chars": 840,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module InterestingFindings\n      # Registration Enable"
  },
  {
    "path": "app/finders/interesting_findings/tmm_db_migrate.rb",
    "chars": 663,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module InterestingFindings\n      # Tmm DB Migrate find"
  },
  {
    "path": "app/finders/interesting_findings/upload_directory_listing.rb",
    "chars": 534,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module InterestingFindings\n      # UploadDirectoryList"
  },
  {
    "path": "app/finders/interesting_findings/upload_sql_dump.rb",
    "chars": 668,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module InterestingFindings\n      # UploadSQLDump finde"
  },
  {
    "path": "app/finders/interesting_findings/wp_cron.rb",
    "chars": 540,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module InterestingFindings\n      # wp-cron.php finder\n"
  },
  {
    "path": "app/finders/interesting_findings.rb",
    "chars": 1452,
    "preview": "# frozen_string_literal: true\n\nrequire_relative 'interesting_findings/readme'\nrequire_relative 'interesting_findings/wp_"
  },
  {
    "path": "app/finders/main_theme/css_style_in_404_page.rb",
    "chars": 363,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module MainTheme\n      # From the CSS style in the 404"
  },
  {
    "path": "app/finders/main_theme/css_style_in_homepage.rb",
    "chars": 1383,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module MainTheme\n      # From the CSS style in the hom"
  },
  {
    "path": "app/finders/main_theme/urls_in_404_page.rb",
    "chars": 305,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module MainTheme\n      # URLs In 404 Page Finder\n     "
  },
  {
    "path": "app/finders/main_theme/urls_in_homepage.rb",
    "chars": 851,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module MainTheme\n      # URLs In Homepage Finder\n     "
  },
  {
    "path": "app/finders/main_theme/woo_framework_meta_generator.rb",
    "chars": 802,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module MainTheme\n      # From the WooFramework meta ge"
  },
  {
    "path": "app/finders/main_theme.rb",
    "chars": 849,
    "preview": "# frozen_string_literal: true\n\nrequire_relative 'main_theme/css_style_in_homepage'\nrequire_relative 'main_theme/css_styl"
  },
  {
    "path": "app/finders/medias/attachment_brute_forcing.rb",
    "chars": 1178,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Medias\n      # Medias Finder, see https://githu"
  },
  {
    "path": "app/finders/medias.rb",
    "chars": 402,
    "preview": "# frozen_string_literal: true\n\nrequire_relative 'medias/attachment_brute_forcing'\n\nmodule WPScan\n  module Finders\n    mo"
  },
  {
    "path": "app/finders/passwords/wp_login.rb",
    "chars": 704,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Passwords\n      # Password attack against the w"
  },
  {
    "path": "app/finders/passwords/xml_rpc.rb",
    "chars": 692,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Passwords\n      # Password attack against the X"
  },
  {
    "path": "app/finders/passwords/xml_rpc_multicall.rb",
    "chars": 5068,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Passwords\n      # Password attack against the X"
  },
  {
    "path": "app/finders/passwords.rb",
    "chars": 153,
    "preview": "# frozen_string_literal: true\n\nrequire_relative 'passwords/wp_login'\nrequire_relative 'passwords/xml_rpc'\nrequire_relati"
  },
  {
    "path": "app/finders/plugin_version/readme.rb",
    "chars": 2462,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module PluginVersion\n      # Plugin Version Finder fro"
  },
  {
    "path": "app/finders/plugin_version.rb",
    "chars": 813,
    "preview": "# frozen_string_literal: true\n\nrequire_relative 'plugin_version/readme'\n\nmodule WPScan\n  module Finders\n    module Plugi"
  },
  {
    "path": "app/finders/plugins/body_pattern.rb",
    "chars": 962,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Plugins\n      # Plugins finder from Dynamic Fin"
  },
  {
    "path": "app/finders/plugins/comment.rb",
    "chars": 1106,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Plugins\n      # Plugins finder from the Dynamic"
  },
  {
    "path": "app/finders/plugins/config_parser.rb",
    "chars": 1138,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Plugins\n      # Plugins finder from Dynamic Fin"
  },
  {
    "path": "app/finders/plugins/header_pattern.rb",
    "chars": 1145,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Plugins\n      # Plugins finder from Dynamic Fin"
  },
  {
    "path": "app/finders/plugins/javascript_var.rb",
    "chars": 1100,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Plugins\n      # Plugins finder from the Dynamic"
  },
  {
    "path": "app/finders/plugins/known_locations.rb",
    "chars": 1602,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Plugins\n      # Known Locations Plugins Finder\n"
  },
  {
    "path": "app/finders/plugins/query_parameter.rb",
    "chars": 881,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Plugins\n      # Plugins finder from Dynamic Fin"
  },
  {
    "path": "app/finders/plugins/urls_in_404_page.rb",
    "chars": 384,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Plugins\n      # URLs In 404 Page Finder\n      #"
  },
  {
    "path": "app/finders/plugins/urls_in_homepage.rb",
    "chars": 804,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Plugins\n      # URLs In Homepage Finder\n      #"
  },
  {
    "path": "app/finders/plugins/xpath.rb",
    "chars": 1059,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Plugins\n      # Plugins finder from the Dynamic"
  },
  {
    "path": "app/finders/plugins.rb",
    "chars": 1164,
    "preview": "# frozen_string_literal: true\n\nrequire_relative 'plugins/urls_in_homepage'\nrequire_relative 'plugins/urls_in_404_page'\nr"
  },
  {
    "path": "app/finders/theme_version/style.rb",
    "chars": 1129,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module ThemeVersion\n      # Theme Version Finder from "
  },
  {
    "path": "app/finders/theme_version/woo_framework_meta_generator.rb",
    "chars": 620,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module ThemeVersion\n      # Theme Version Finder from "
  },
  {
    "path": "app/finders/theme_version.rb",
    "chars": 935,
    "preview": "# frozen_string_literal: true\n\nrequire_relative 'theme_version/style'\nrequire_relative 'theme_version/woo_framework_meta"
  },
  {
    "path": "app/finders/themes/known_locations.rb",
    "chars": 1583,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Themes\n      # Known Locations Themes Finder\n  "
  },
  {
    "path": "app/finders/themes/urls_in_404_page.rb",
    "chars": 301,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Themes\n      # URLs In 04 Page Finder\n      cla"
  },
  {
    "path": "app/finders/themes/urls_in_homepage.rb",
    "chars": 718,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Themes\n      # URLs In Homepage Finder\n      cl"
  },
  {
    "path": "app/finders/themes.rb",
    "chars": 582,
    "preview": "# frozen_string_literal: true\n\nrequire_relative 'themes/urls_in_homepage'\nrequire_relative 'themes/urls_in_404_page'\nreq"
  },
  {
    "path": "app/finders/timthumb_version/bad_request.rb",
    "chars": 733,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module TimthumbVersion\n      # Timthumb Version Finder"
  },
  {
    "path": "app/finders/timthumb_version.rb",
    "chars": 414,
    "preview": "# frozen_string_literal: true\n\nrequire_relative 'timthumb_version/bad_request'\n\nmodule WPScan\n  module Finders\n    modul"
  },
  {
    "path": "app/finders/timthumbs/known_locations.rb",
    "chars": 1967,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Timthumbs\n      # Known Locations Timthumbs Fin"
  },
  {
    "path": "app/finders/timthumbs.rb",
    "chars": 397,
    "preview": "# frozen_string_literal: true\n\nrequire_relative 'timthumbs/known_locations'\n\nmodule WPScan\n  module Finders\n    module T"
  },
  {
    "path": "app/finders/users/author_id_brute_forcing.rb",
    "chars": 3520,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Users\n      # Author Id Brute Forcing\n      cla"
  },
  {
    "path": "app/finders/users/author_posts.rb",
    "chars": 1639,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Users\n      # Author Posts\n      class AuthorPo"
  },
  {
    "path": "app/finders/users/author_sitemap.rb",
    "chars": 1050,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Users\n      # Since WP 5.5, /wp-sitemap-users-1"
  },
  {
    "path": "app/finders/users/login_error_messages.rb",
    "chars": 1375,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Users\n      # Login Error Messages\n      #\n    "
  },
  {
    "path": "app/finders/users/oembed_api.rb",
    "chars": 1860,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Users\n      # Since WP 4.4, the oembed API can "
  },
  {
    "path": "app/finders/users/rss_generator.rb",
    "chars": 1429,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Users\n      # Users disclosed from the dc:creat"
  },
  {
    "path": "app/finders/users/wp_json_api.rb",
    "chars": 2161,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Users\n      # WP JSON API\n      #\n      # Since"
  },
  {
    "path": "app/finders/users/yoast_seo_author_sitemap.rb",
    "chars": 453,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module Users\n      # The YOAST SEO plugin has an autho"
  },
  {
    "path": "app/finders/users.rb",
    "chars": 1473,
    "preview": "# frozen_string_literal: true\n\nrequire_relative 'users/author_posts'\nrequire_relative 'users/wp_json_api'\nrequire_relati"
  },
  {
    "path": "app/finders/wp_items/urls_in_page.rb",
    "chars": 2531,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module WpItems\n      # URLs In Homepage Module to use "
  },
  {
    "path": "app/finders/wp_items.rb",
    "chars": 72,
    "preview": "# frozen_string_literal: true\n\nrequire_relative 'wp_items/urls_in_page'\n"
  },
  {
    "path": "app/finders/wp_version/atom_generator.rb",
    "chars": 1077,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module WpVersion\n      # Atom Generator Version Finder"
  },
  {
    "path": "app/finders/wp_version/rdf_generator.rb",
    "chars": 1016,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module WpVersion\n      # RDF Generator Version Finder\n"
  },
  {
    "path": "app/finders/wp_version/readme.rb",
    "chars": 934,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module WpVersion\n      # Readme Version Finder\n      c"
  },
  {
    "path": "app/finders/wp_version/rss_generator.rb",
    "chars": 1286,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module WpVersion\n      # RSS Generator Version Finder\n"
  },
  {
    "path": "app/finders/wp_version/unique_fingerprinting.rb",
    "chars": 921,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module WpVersion\n      # Unique Fingerprinting Version"
  },
  {
    "path": "app/finders/wp_version.rb",
    "chars": 1301,
    "preview": "# frozen_string_literal: true\n\nrequire_relative 'wp_version/rss_generator'\nrequire_relative 'wp_version/atom_generator'\n"
  },
  {
    "path": "app/finders.rb",
    "chars": 608,
    "preview": "# frozen_string_literal: true\n\nrequire_relative 'finders/interesting_findings'\nrequire_relative 'finders/wp_items'\nrequi"
  },
  {
    "path": "app/models/config_backup.rb",
    "chars": 142,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Model\n    # Config Backup\n    class ConfigBackup < InterestingFind"
  },
  {
    "path": "app/models/db_export.rb",
    "chars": 134,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Model\n    # DB Export\n    class DbExport < InterestingFinding\n    "
  },
  {
    "path": "app/models/interesting_finding.rb",
    "chars": 3656,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Model\n    # Custom class to include the WPScan::References module\n"
  },
  {
    "path": "app/models/media.rb",
    "chars": 127,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Model\n    # Media\n    class Media < InterestingFinding\n    end\n  e"
  },
  {
    "path": "app/models/plugin.rb",
    "chars": 1280,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Model\n    # WordPress Plugin\n    class Plugin < WpItem\n      # See"
  },
  {
    "path": "app/models/theme.rb",
    "chars": 3079,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Model\n    # WordPress Theme\n    class Theme < WpItem\n      attr_re"
  },
  {
    "path": "app/models/timthumb.rb",
    "chars": 2212,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Model\n    # Timthumb\n    class Timthumb < InterestingFinding\n     "
  },
  {
    "path": "app/models/wp_item.rb",
    "chars": 5338,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Model\n    # WpItem (superclass of Plugin & Theme)\n    class WpItem"
  },
  {
    "path": "app/models/wp_version.rb",
    "chars": 2053,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Model\n    # WP Version\n    class WpVersion < CMSScanner::Model::Ve"
  },
  {
    "path": "app/models/xml_rpc.rb",
    "chars": 707,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Model\n    # Override of the CMSScanner::XMLRPC to include the refe"
  },
  {
    "path": "app/models.rb",
    "chars": 460,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Model\n    include CMSScanner::Model\n  end\nend\n\nrequire_relative 'm"
  },
  {
    "path": "app/views/cli/core/banner.erb",
    "chars": 673,
    "preview": "_______________________________________________________________\n         __          _______   _____\n         \\ \\       "
  },
  {
    "path": "app/views/cli/core/db_update_finished.erb",
    "chars": 182,
    "preview": "<% if @verbose && !@updated.empty? -%>\n<%= notice_icon %> File(s) Updated:\n<% @updated.each do |file| -%>\n |  <%= file %"
  },
  {
    "path": "app/views/cli/core/db_update_started.erb",
    "chars": 44,
    "preview": "<%= notice_icon %> Updating the Database ..."
  },
  {
    "path": "app/views/cli/core/not_fully_configured.erb",
    "chars": 127,
    "preview": "<%= critical_icon %> The Website is not fully configured and currently in install mode. Create a new admin user at <%= @"
  },
  {
    "path": "app/views/cli/core/version.erb",
    "chars": 132,
    "preview": "Current Version: <%= WPScan::VERSION %>\n<% if @last_update -%>\nLast DB Update: <%= @last_update.strftime('%Y-%m-%d') %>\n"
  },
  {
    "path": "app/views/cli/enumeration/config_backups.erb",
    "chars": 297,
    "preview": "\n<% if @config_backups.empty? -%>\n<%= notice_icon %> No Config Backups Found.\n<% else -%>\n<%= notice_icon %> Config Back"
  },
  {
    "path": "app/views/cli/enumeration/db_exports.erb",
    "chars": 269,
    "preview": "\n<% if @db_exports.empty? -%>\n<%= notice_icon %> No DB Exports Found.\n<% else -%>\n<%= notice_icon %> Db Export(s) Identi"
  },
  {
    "path": "app/views/cli/enumeration/medias.erb",
    "chars": 238,
    "preview": "\n<% if @medias.empty? -%>\n<%= notice_icon %> No Medias Found.\n<% else -%>\n<%= notice_icon %> Medias(s) Identified:\n<% @m"
  },
  {
    "path": "app/views/cli/enumeration/plugins.erb",
    "chars": 512,
    "preview": "\n<% if @plugins.empty? -%>\n<%= notice_icon %> No plugins Found.\n<% else -%>\n<%= notice_icon %> Plugin(s) Identified:\n<% "
  },
  {
    "path": "app/views/cli/enumeration/themes.erb",
    "chars": 257,
    "preview": "\n<% if @themes.empty? -%>\n<%= notice_icon %> No themes Found.\n<% else -%>\n<%= notice_icon %> Theme(s) Identified:\n<% @th"
  },
  {
    "path": "app/views/cli/enumeration/timthumbs.erb",
    "chars": 438,
    "preview": "\n<% if @timthumbs.empty? -%>\n<%= notice_icon %> No Timthumbs Found.\n<% else -%>\n<%= notice_icon %> Timthumb(s) Identifie"
  },
  {
    "path": "app/views/cli/enumeration/users.erb",
    "chars": 230,
    "preview": "\n<% if @users.empty? -%>\n<%= notice_icon %> No Users Found.\n<% else -%>\n<%= notice_icon %> User(s) Identified:\n<% @users"
  },
  {
    "path": "app/views/cli/finding.erb",
    "chars": 940,
    "preview": " | Found By: <%= @item.found_by %>\n<% @item.interesting_entries.each do |entry| -%>\n |  - <%= entry %>\n<% end -%>\n<% unl"
  },
  {
    "path": "app/views/cli/info.erb",
    "chars": 29,
    "preview": "<%= info_icon %> <%= @msg %>\n"
  },
  {
    "path": "app/views/cli/main_theme/theme.erb",
    "chars": 211,
    "preview": "<% if @theme -%>\n<%= info_icon %> WordPress theme in use: <%= @theme %>\n<%= render('@theme', theme: @theme, show_parents"
  },
  {
    "path": "app/views/cli/notice.erb",
    "chars": 31,
    "preview": "<%= notice_icon %> <%= @msg %>\n"
  },
  {
    "path": "app/views/cli/password_attack/users.erb",
    "chars": 245,
    "preview": "\n<% if @users.empty? -%>\n<%= notice_icon %> No Valid Passwords Found.\n<% else -%>\n<%= critical_icon %> Valid Combination"
  },
  {
    "path": "app/views/cli/theme.erb",
    "chars": 1414,
    "preview": "<%= render('@wp_item', wp_item: @theme) -%>\n | Style URL: <%= @theme.style_url %>\n<% if @theme.style_name -%>\n | Style N"
  },
  {
    "path": "app/views/cli/usage.erb",
    "chars": 69,
    "preview": "<%= @msg %>\n\nPlease use --help/-h for the list of available options.\n"
  },
  {
    "path": "app/views/cli/vuln_api/status.erb",
    "chars": 577,
    "preview": "<% unless @status.empty? -%>\n<% if @status['http_error'] -%>\n<%= critical_icon %> WPScan DB API, <%= @status['http_error"
  },
  {
    "path": "app/views/cli/vulnerability.erb",
    "chars": 451,
    "preview": " | <%= critical_icon %> Title: <%= @v.title %>\n<% if @v.cvss -%>\n |     CVSS: <%= @v.cvss[:score] %> (<%= @v.cvss[:vecto"
  },
  {
    "path": "app/views/cli/wp_item.erb",
    "chars": 770,
    "preview": " | Location: <%= @wp_item.url %>\n<% if @wp_item.latest_version && !@wp_item.outdated? -%>\n | Latest Version: <%= @wp_ite"
  },
  {
    "path": "app/views/cli/wp_version/version.erb",
    "chars": 307,
    "preview": "<% if @version -%>\n<%= info_icon %> WordPress version <%= @version.number %> identified (<%= @version.status.tr('-', '_'"
  },
  {
    "path": "app/views/json/core/banner.erb",
    "chars": 269,
    "preview": "\"banner\": {\n\"description\": \"WordPress Security Scanner by the WPScan Team\",\n  \"version\": <%= WPScan::VERSION.to_json %>,"
  },
  {
    "path": "app/views/json/core/db_update_finished.erb",
    "chars": 72,
    "preview": "\"db_files_updated\": <%= @updated.to_json %>,\n\"db_update_finished\": true,"
  },
  {
    "path": "app/views/json/core/db_update_started.erb",
    "chars": 26,
    "preview": "\"db_update_started\": true,"
  },
  {
    "path": "app/views/json/core/not_fully_configured.erb",
    "chars": 132,
    "preview": "\"not_fully_configured\": \"The Website is not fully configured and currently in install mode. Create a new admin user at <"
  },
  {
    "path": "app/views/json/core/version.erb",
    "chars": 89,
    "preview": "\"version\": <%= WPScan::VERSION.to_json %>,\n\"last_db_update\": <%= @last_update.to_json %>,"
  },
  {
    "path": "app/views/json/enumeration/config_backups.erb",
    "chars": 329,
    "preview": "\"config_backups\": {\n<% unless @config_backups.empty? -%>\n<% last_index = @config_backups.size - 1 -%>\n<% @config_backups"
  },
  {
    "path": "app/views/json/enumeration/db_exports.erb",
    "chars": 301,
    "preview": "\"db_exports\": {\n<% unless @db_exports.empty? -%>\n<% last_index = @db_exports.size - 1 -%>\n<% @db_exports.each_with_index"
  },
  {
    "path": "app/views/json/enumeration/medias.erb",
    "chars": 273,
    "preview": "\"medias\": {\n<% unless @medias.empty? -%>\n<% last_index = @medias.size - 1 -%>\n<% @medias.each_with_index do |media, inde"
  },
  {
    "path": "app/views/json/enumeration/plugins.erb",
    "chars": 604,
    "preview": "\"plugins\": {\n<% unless @plugins.empty? -%>\n<% last_index = @plugins.size - 1 -%>\n<% @plugins.each_with_index do |plugin,"
  },
  {
    "path": "app/views/json/enumeration/themes.erb",
    "chars": 273,
    "preview": "\"themes\": {\n<% unless @themes.empty? -%>\n<% last_index = @themes.size - 1 -%>\n<% @themes.each_with_index do |theme, inde"
  },
  {
    "path": "app/views/json/enumeration/timthumbs.erb",
    "chars": 577,
    "preview": "\"timthumbs\": {\n<% unless @timthumbs.empty? -%>\n<% last_index = @timthumbs.size - 1 -%>\n<% @timthumbs.each_with_index do "
  },
  {
    "path": "app/views/json/enumeration/users.erb",
    "chars": 305,
    "preview": "\"users\": {\n<% unless @users.empty? -%>\n<% last_index = @users.size - 1 -%>\n<% @users.each_with_index do |user, index| -%"
  },
  {
    "path": "app/views/json/finding.erb",
    "chars": 1032,
    "preview": "\"found_by\": <%= @item.found_by.to_json %>,\n\"confidence\": <%= @item.confidence.to_json %>,\n\"interesting_entries\": <%= @it"
  },
  {
    "path": "app/views/json/main_theme/theme.erb",
    "chars": 139,
    "preview": "<% if @theme -%>\n\"main_theme\": {\n  <%= render('@theme', theme: @theme, show_parents: true) %>\n},\n<% else -%>\n\"main_theme"
  },
  {
    "path": "app/views/json/password_attack/users.erb",
    "chars": 283,
    "preview": "\"password_attack\": {\n<% unless @users.empty? -%>\n<% last_index = @users.size - 1 -%>\n<% @users.each_with_index do |user,"
  },
  {
    "path": "app/views/json/theme.erb",
    "chars": 1138,
    "preview": "<%= render('@wp_item', wp_item: @theme) %>,\n\"style_url\": <%= @theme.style_url.to_json %>,\n\"style_name\": <%= @theme.style"
  },
  {
    "path": "app/views/json/vuln_api/status.erb",
    "chars": 534,
    "preview": "\"vuln_api\": {\n<% unless @status.empty? -%>\n<% if @status['http_error'] -%>\n\"http_error\": <%= @status['http_error'].to_s."
  },
  {
    "path": "app/views/json/wp_item.erb",
    "chars": 508,
    "preview": "\"slug\": <%= @wp_item.slug.to_json %>,\n\"location\": <%= @wp_item.url.to_json %>,\n\"latest_version\": <%= @wp_item.latest_ver"
  },
  {
    "path": "app/views/json/wp_version/version.erb",
    "chars": 263,
    "preview": "<% if @version -%>\n\"version\": {\n  \"number\": <%= @version.number.to_json %>,\n  \"release_date\": <%= @version.release_date."
  },
  {
    "path": "bin/wpscan",
    "chars": 471,
    "preview": "#!/usr/bin/env ruby\n# frozen_string_literal: true\n\nrequire 'wpscan'\n\nWPScan::Scan.new do |s|\n  s.controllers <<\n    WPSc"
  },
  {
    "path": "bin/wpscan-docker",
    "chars": 505,
    "preview": "#!/bin/bash\n\nSOURCE=\"${BASH_SOURCE[0]}\"\nwhile [ -h \"$SOURCE\" ]; do # resolve $SOURCE until the file is no longer a symli"
  },
  {
    "path": "bin/wpscan-docker-dev",
    "chars": 564,
    "preview": "#!/bin/bash\n\nSOURCE=\"${BASH_SOURCE[0]}\"\nwhile [ -h \"$SOURCE\" ]; do # resolve $SOURCE until the file is no longer a symli"
  },
  {
    "path": "bin/wpscan-memprof",
    "chars": 683,
    "preview": "#!/usr/bin/env ruby\n# frozen_string_literal: true\n\nrequire 'memory_profiler' # https://github.com/SamSaffron/memory_prof"
  },
  {
    "path": "bin/wpscan-stackprof",
    "chars": 960,
    "preview": "#!/usr/bin/env ruby\n# frozen_string_literal: true\n\nrequire 'stackprof' # https://github.com/tmm1/stackprof\nrequire 'wpsc"
  },
  {
    "path": "lib/wpscan/browser.rb",
    "chars": 291,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  # Custom Browser\n  class Browser < CMSScanner::Browser\n    extend Actions"
  },
  {
    "path": "lib/wpscan/controller.rb",
    "chars": 287,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  # Needed to load at least the Core controller\n  # Otherwise, the followin"
  },
  {
    "path": "lib/wpscan/controllers.rb",
    "chars": 306,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  # Override to set the OptParser's summary width to 45 (instead of 40 from"
  },
  {
    "path": "lib/wpscan/db/dynamic_finders/base.rb",
    "chars": 1605,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module DB\n    module DynamicFinders\n      class Base\n        # @return [ "
  },
  {
    "path": "lib/wpscan/db/dynamic_finders/plugin.rb",
    "chars": 3947,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module DB\n    module DynamicFinders\n      class Plugin < Base\n        # @"
  },
  {
    "path": "lib/wpscan/db/dynamic_finders/theme.rb",
    "chars": 337,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module DB\n    module DynamicFinders\n      class Theme < Plugin\n        # "
  },
  {
    "path": "lib/wpscan/db/dynamic_finders/wordpress.rb",
    "chars": 2453,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module DB\n    module DynamicFinders\n      class Wordpress < Base\n        "
  },
  {
    "path": "lib/wpscan/db/fingerprints.rb",
    "chars": 1322,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module DB\n    # Fingerprints class\n    class Fingerprints\n      # @param "
  },
  {
    "path": "lib/wpscan/db/plugin.rb",
    "chars": 221,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module DB\n    # Plugin DB\n    class Plugin < WpItem\n      # @return [ Has"
  },
  {
    "path": "lib/wpscan/db/plugins.rb",
    "chars": 203,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module DB\n    # WP Plugins\n    class Plugins < WpItems\n      # @return [ "
  },
  {
    "path": "lib/wpscan/db/sponsor.rb",
    "chars": 303,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module DB\n    class Sponsor\n      # @return [ Hash ]\n      def self.text\n"
  },
  {
    "path": "lib/wpscan/db/theme.rb",
    "chars": 218,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module DB\n    # Theme DB\n    class Theme < WpItem\n      # @return [ Hash "
  },
  {
    "path": "lib/wpscan/db/themes.rb",
    "chars": 200,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module DB\n    # WP Themes\n    class Themes < WpItems\n      # @return [ JS"
  },
  {
    "path": "lib/wpscan/db/updater.rb",
    "chars": 5146,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module DB\n    # Class used to perform DB updates\n    # :nocov:\n    class "
  },
  {
    "path": "lib/wpscan/db/vuln_api.rb",
    "chars": 2200,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module DB\n    # WPVulnDB API\n    class VulnApi\n      NON_ERROR_CODES = [2"
  },
  {
    "path": "lib/wpscan/db/wp_item.rb",
    "chars": 647,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module DB\n    # WpItem - super DB class for Plugin, Theme and Version\n   "
  },
  {
    "path": "lib/wpscan/db/wp_items.rb",
    "chars": 583,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module DB\n    # WP Items\n    class WpItems\n      # @return [ Array<String"
  },
  {
    "path": "lib/wpscan/db/wp_version.rb",
    "chars": 225,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module DB\n    # WP Version\n    class Version < WpItem\n      # @return [ H"
  },
  {
    "path": "lib/wpscan/db.rb",
    "chars": 549,
    "preview": "# frozen_string_literal: true\n\nrequire_relative 'db/wp_item'\nrequire_relative 'db/updater'\nrequire_relative 'db/wp_items"
  },
  {
    "path": "lib/wpscan/errors/enumeration.rb",
    "chars": 742,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Error\n    class PluginsThresholdReached < Standard\n      def to_s\n"
  },
  {
    "path": "lib/wpscan/errors/http.rb",
    "chars": 742,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Error\n    # HTTP Error\n    class HTTP < Standard\n      attr_reader"
  },
  {
    "path": "lib/wpscan/errors/update.rb",
    "chars": 552,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Error\n    # Error raised when there is a missing  DB file and --no"
  },
  {
    "path": "lib/wpscan/errors/vuln_api.rb",
    "chars": 480,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Error\n    # Error raised when the token given via --api-token is i"
  },
  {
    "path": "lib/wpscan/errors/wordpress.rb",
    "chars": 1048,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Error\n    # WordPress hosted (*.wordpress.com)\n    class WordPress"
  },
  {
    "path": "lib/wpscan/errors/xmlrpc.rb",
    "chars": 219,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Error\n    # XML-RPC Not Detected\n    class XMLRPCNotDetected < Sta"
  },
  {
    "path": "lib/wpscan/errors.rb",
    "chars": 351,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Error\n    include CMSScanner::Error\n\n    class Standard < Standard"
  },
  {
    "path": "lib/wpscan/finders/dynamic_finder/finder.rb",
    "chars": 2331,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module DynamicFinder\n      # To be used as a base when"
  },
  {
    "path": "lib/wpscan/finders/dynamic_finder/version/body_pattern.rb",
    "chars": 956,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module DynamicFinder\n      module Version\n        # Ve"
  },
  {
    "path": "lib/wpscan/finders/dynamic_finder/version/comment.rb",
    "chars": 499,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module DynamicFinder\n      module Version\n        # Ve"
  },
  {
    "path": "lib/wpscan/finders/dynamic_finder/version/config_parser.rb",
    "chars": 1954,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module DynamicFinder\n      module Version\n        # Ve"
  },
  {
    "path": "lib/wpscan/finders/dynamic_finder/version/finder.rb",
    "chars": 844,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module DynamicFinder\n      module Version\n        # To"
  },
  {
    "path": "lib/wpscan/finders/dynamic_finder/version/header_pattern.rb",
    "chars": 973,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module DynamicFinder\n      module Version\n        # Ve"
  },
  {
    "path": "lib/wpscan/finders/dynamic_finder/version/javascript_var.rb",
    "chars": 1964,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module DynamicFinder\n      module Version\n        # Ve"
  },
  {
    "path": "lib/wpscan/finders/dynamic_finder/version/query_parameter.rb",
    "chars": 1854,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module DynamicFinder\n      module Version\n        # Ve"
  },
  {
    "path": "lib/wpscan/finders/dynamic_finder/version/xpath.rb",
    "chars": 1045,
    "preview": "# frozen_string_literal: true\n\nmodule WPScan\n  module Finders\n    module DynamicFinder\n      module Version\n        # Ve"
  }
]

// ... and 4787 more files (download for full content)

About this extraction

This page contains the full source code of the wpscanteam/wpscan GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 4987 files (62.7 MB), approximately 17.0M tokens, and a symbol index with 2086 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!