Skip to content

Instantly share code, notes, and snippets.

@devsrealm
Created June 27, 2023 23:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save devsrealm/d123b034db85b5856c7d1569ba983786 to your computer and use it in GitHub Desktop.
Save devsrealm/d123b034db85b5856c7d1569ba983786 to your computer and use it in GitHub Desktop.
TonicsRouter Benchmarks With FastRoute and Symfony - Game With BitBucket Routes
<?php
use Devsrealm\TonicsRouterSystem\Container\Container;
use Devsrealm\TonicsRouterSystem\Events\OnRequestProcess;
use Devsrealm\TonicsRouterSystem\Handler\Router;
use Devsrealm\TonicsRouterSystem\RequestInput;
use Devsrealm\TonicsRouterSystem\Resolver\RouteResolver;
use Devsrealm\TonicsRouterSystem\Response;
use Devsrealm\TonicsRouterSystem\Route;
use Devsrealm\TonicsRouterSystem\RouteNode;
use Devsrealm\TonicsRouterSystem\RouteTreeGenerator;
use Devsrealm\TonicsRouterSystem\State\RouteTreeGeneratorState;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\VarDumper\Cloner\VarCloner;
use Symfony\Component\VarDumper\Dumper\HtmlDumper;
use Symfony\Component\VarDumper\VarDumper;
use Symfony\Component\Routing\Route as SymfonyRoute;
use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherDumper;
use Symfony\Component\Routing\RequestContext;
use Symfony\Component\Routing\Matcher\CompiledUrlMatcher;
require dirname(__FILE__, 2) . '/vendor/autoload.php'; # Change this to the correct autoload.php
$onRequestProcess = new OnRequestProcess(
new RouteResolver(
new Container()
),
new Route( new RouteTreeGenerator(
new RouteTreeGeneratorState(), new RouteNode()
)
)
);
$router = new Router(
$onRequestProcess,
$onRequestProcess->getRouteObject(),
new Response(
$onRequestProcess, new RequestInput()
)
);
$tonicsRoute = $router->getRoute();
function calculateAverageExecutionTime(callable $benchmark): string
{
$totalExecutionTime = 0;
$iterations = 1000;
for ($i = 0; $i < $iterations; $i++) {
$totalExecutionTime += $benchmark();
}
return $totalExecutionTime / $iterations;
}
function printBenchmarks(array $benchmarks, string $url): void
{
$time = array_column($benchmarks, 'Time');
array_multisort($time, SORT_ASC, $benchmarks);
echo "AVERAGE EXECUTION TIME FOR PATH - $url <br> <br>";
foreach ($benchmarks as $key => $benchmark){
if ($key === 0){
echo $benchmark['Name'] . ' ' . sprintf("%f", $benchmark['Time']) . " 🏆 (Winner) <br>";
} else {
echo $benchmark['Name'] . ' ' . sprintf("%f", $benchmark['Time']) . "<br>";
}
}
}
#------------------
# TonicsRouter
#---------------------
function tonicsRoutes(Route $routes)
{
$routes->get( '/addon', function (){});
$routes->get( '/addon/linkers', function (){});
$routes->get( '/addon/linkers/:linker_key', function (){});
$routes->get( '/addon/linkers/:linker_key/values', function (){});
$routes->get( '/addon/linkers/:linker_key/values/:value_id', function (){});
$routes->get( '/hook_events', function (){});
$routes->get( '/hook_events/:subject_type', function (){});
$routes->get( '/pullrequests/:selected_user', function (){});
$routes->get( '/repositories', function (){});
$routes->get( '/repositories/:workspace', function (){});
$routes->get( '/repositories/:workspace/:repo_slug', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/branch-restrictions', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/branch-restrictions/:id', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/branching-model', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/branching-model/settings', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/commit/:commit', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/commit/:commit/approve', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/commit/:commit/comments', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/commit/:commit/comments/:comment_id', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/commit/:commit/properties/:app_key/:property_name', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/commit/:commit/pullrequests', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/commit/:commit/reports', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/commit/:commit/reports/:reportId', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/commit/:commit/reports/:reportId/annotations', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/commit/:commit/reports/:reportId/annotations/:annotationId', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/commit/:commit/statuses', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/commit/:commit/statuses/build', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/commit/:commit/statuses/build/:key', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/commits', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/commits/:revision', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/components', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/components/:component_id', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/default-reviewers', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/default-reviewers/:target_username', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/deploy-keys', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/deploy-keys/:key_id', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/deployments/', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/deployments/:deployment_uuid', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/deployments_config/environments/:environment_uuid/variables', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/deployments_config/environments/:environment_uuid/variables/:variable_uuid', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/diff/:spec', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/diffstat/:spec', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/downloads', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/downloads/:filename', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/environments/', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/environments/:environment_uuid', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/environments/:environment_uuid/changes/', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/filehistory/:commit/:path', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/forks', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/hooks', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/hooks/:uid', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/issues', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/issues/export', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/issues/import', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/issues/:issue_id', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/issues/:issue_id/attachments', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/issues/:issue_id/attachments/:path', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/issues/:issue_id/changes', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/issues/:issue_id/changes/:change_id', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/issues/:issue_id/comments', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/issues/:issue_id/comments/:comment_id', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/issues/:issue_id/vote', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/issues/:issue_id/watch', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/merge-base/:revspec', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/milestones', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/milestones/:milestone_id', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/patch/:spec', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines-config/caches/', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines-config/caches/:cache_uuid', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines-config/caches/:cache_uuid/content-uri', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines/', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines/:pipeline_uuid', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines/:pipeline_uuid/steps/', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines/:pipeline_uuid/steps/:step_uuid', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines/:pipeline_uuid/steps/:step_uuid/log', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines/:pipeline_uuid/steps/:step_uuid/logs/:log_uuid', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines/:pipeline_uuid/steps/:step_uuid/test_reports', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines/:pipeline_uuid/steps/:step_uuid/test_reports/test_cases', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines/:pipeline_uuid/steps/:step_uuid/test_reports/test_cases/:test_case_uuid/test_case_reasons', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines/:pipeline_uuid/stopPipeline', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines_config', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines_config/build_number', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines_config/schedules/', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines_config/schedules/:schedule_uuid', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines_config/schedules/:schedule_uuid/executions/', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines_config/ssh/key_pair', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines_config/ssh/known_hosts/', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines_config/ssh/known_hosts/:known_host_uuid', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines_config/variables/', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pipelines_config/variables/:variable_uuid', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/properties/:app_key/:property_name', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pullrequests', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pullrequests/activity', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pullrequests/:pull_request_id', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pullrequests/:pull_request_id/activity', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pullrequests/:pull_request_id/approve', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pullrequests/:pull_request_id/comments', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pullrequests/:pull_request_id/comments/:comment_id', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pullrequests/:pull_request_id/commits', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pullrequests/:pull_request_id/decline', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pullrequests/:pull_request_id/diff', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pullrequests/:pull_request_id/diffstat', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pullrequests/:pull_request_id/merge', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pullrequests/:pull_request_id/merge/task-status/:task_id', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pullrequests/:pull_request_id/patch', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pullrequests/:pull_request_id/request-changes', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pullrequests/:pull_request_id/statuses', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/pullrequests/:pullrequest_id/properties/:app_key/:property_name', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/refs', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/refs/branches', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/refs/branches/:name', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/refs/tags', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/refs/tags/:name', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/src', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/src/:commit/:path', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/versions', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/versions/:version_id', function (){});
$routes->get( '/repositories/:workspace/:repo_slug/watchers', function (){});
$routes->get( '/snippets', function (){});
$routes->get( '/snippets/:workspace', function (){});
$routes->get( '/snippets/:workspace/:encoded_id', function (){});
$routes->get( '/snippets/:workspace/:encoded_id/comments', function (){});
$routes->get( '/snippets/:workspace/:encoded_id/comments/:comment_id', function (){});
$routes->get( '/snippets/:workspace/:encoded_id/commits', function (){});
$routes->get( '/snippets/:workspace/:encoded_id/commits/:revision', function (){});
$routes->get( '/snippets/:workspace/:encoded_id/files/:path', function (){});
$routes->get( '/snippets/:workspace/:encoded_id/watch', function (){});
$routes->get( '/snippets/:workspace/:encoded_id/watchers', function (){});
$routes->get( '/snippets/:workspace/:encoded_id/:node_id', function (){});
$routes->get( '/snippets/:workspace/:encoded_id/:node_id/files/:path', function (){});
$routes->get( '/snippets/:workspace/:encoded_id/:revision/diff', function (){});
$routes->get( '/snippets/:workspace/:encoded_id/:revision/patch', function (){});
$routes->get( '/teams', function (){});
$routes->get( '/teams/:username', function (){});
$routes->get( '/teams/:username/followers', function (){});
$routes->get( '/teams/:username/following', function (){});
$routes->get( '/teams/:username/members', function (){});
$routes->get( '/teams/:username/permissions', function (){});
$routes->get( '/teams/:username/permissions/repositories', function (){});
$routes->get( '/teams/:username/permissions/repositories/:repo_slug', function (){});
$routes->get( '/teams/:username/pipelines_config/variables/', function (){});
$routes->get( '/teams/:username/pipelines_config/variables/:variable_uuid', function (){});
$routes->get( '/teams/:username/projects/', function (){});
$routes->get( '/teams/:username/projects/:project_key', function (){});
$routes->get( '/teams/:username/search/code', function (){});
$routes->get( '/teams/:workspace/repositories', function (){});
$routes->get( '/user', function (){});
$routes->get( '/user/emails', function (){});
$routes->get( '/user/emails/:email', function (){});
$routes->get( '/user/permissions/repositories', function (){});
$routes->get( '/user/permissions/teams', function (){});
$routes->get( '/user/permissions/workspaces', function (){});
$routes->get( '/users/:selected_user', function (){});
$routes->get( '/users/:selected_user/pipelines_config/variables/', function (){});
$routes->get( '/users/:selected_user/pipelines_config/variables/:variable_uuid', function (){});
$routes->get( '/users/:selected_user/properties/:app_key/:property_name', function (){});
$routes->get( '/users/:selected_user/search/code', function (){});
$routes->get( '/users/:selected_user/ssh-keys', function (){});
$routes->get( '/users/:selected_user/ssh-keys/:key_id', function (){});
$routes->get( '/users/:username/members', function (){});
$routes->get( '/users/:workspace/repositories', function (){});
$routes->get( '/workspaces', function (){});
$routes->get( '/workspaces/:workspace', function (){});
$routes->get( '/workspaces/:workspace/hooks', function (){});
$routes->get( '/workspaces/:workspace/hooks/:uid', function (){});
$routes->get( '/workspaces/:workspace/members', function (){});
$routes->get( '/workspaces/:workspace/members/:member', function (){});
$routes->get( '/workspaces/:workspace/permissions', function (){});
$routes->get( '/workspaces/:workspace/permissions/repositories', function (){});
$routes->get( '/workspaces/:workspace/permissions/repositories/:repo_slug', function (){});
$routes->get( '/workspaces/:workspace/pipelines-config/identity/oidc/keys.json', function (){});
$routes->get( '/workspaces/:workspace/pipelines-config/variables', function (){});
$routes->get( '/workspaces/:workspace/pipelines-config/variables/:variable_uuid', function (){});
$routes->get( '/workspaces/:workspace/projects', function (){});
$routes->get( '/workspaces/:workspace/projects/:project_key', function (){});
$routes->get( '/workspaces/:workspace/search/code', function (){});
}
tonicsRoutes($tonicsRoute);
$treeGenerator = $tonicsRoute->getRouteTreeGenerator();
#------------------
# FastRouter
#---------------------
$routes = function (\FastRoute\RouteCollector $routes) {
$routes->addRoute('GET', '/addon', 'addon');
$routes->addRoute('GET', '/addon/linkers', 'addon_linkers');
$routes->addRoute('GET', '/addon/linkers/{linker_key}', 'addon_linkers_linker_key');
$routes->addRoute('GET', '/addon/linkers/{linker_key}/values', 'addon_linkers_linker_key_values');
$routes->addRoute('GET', '/addon/linkers/{linker_key}/values/{value_id}', 'addon_linkers_linker_key_values_value_id');
$routes->addRoute('GET', '/hook_events', 'hook_events');
$routes->addRoute('GET', '/hook_events/{subject_type}', 'hook_events_subject_type');
$routes->addRoute('GET', '/pullrequests/{selected_user}', 'pullrequests_selected_user');
$routes->addRoute('GET', '/repositories', 'repositories');
$routes->addRoute('GET', '/repositories/{workspace}', 'repositories_workspace');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}', 'repositories_workspace_repo_slug');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/branch-restrictions', 'repositories_workspace_repo_slug_branch_restrictions');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/branch-restrictions/{id}', 'repositories_workspace_repo_slug_branch_restrictions_id');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/branching-model', 'repositories_workspace_repo_slug_branching_model');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/branching-model/settings', 'repositories_workspace_repo_slug_branching_model_settings');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/commit/{commit}', 'repositories_workspace_repo_slug_commit_commit');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/commit/{commit}/approve', 'repositories_workspace_repo_slug_commit_commit_approve');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/commit/{commit}/comments', 'repositories_workspace_repo_slug_commit_commit_comments');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/commit/{commit}/comments/{comment_id}', 'repositories_workspace_repo_slug_commit_commit_comments_comment_id');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/commit/{commit}/properties/{app_key}/{property_name}', 'repositories_workspace_repo_slug_commit_commit_properties_app_key_property_name');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/commit/{commit}/pullrequests', 'repositories_workspace_repo_slug_commit_commit_pullrequests');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/commit/{commit}/reports', 'repositories_workspace_repo_slug_commit_commit_reports');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/commit/{commit}/reports/{reportId}', 'repositories_workspace_repo_slug_commit_commit_reports_reportId');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/commit/{commit}/reports/{reportId}/annotations', 'repositories_workspace_repo_slug_commit_commit_reports_reportId_annotations');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/commit/{commit}/reports/{reportId}/annotations/{annotationId}', 'repositories_workspace_repo_slug_commit_commit_reports_reportId_annotations_annotationId');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/commit/{commit}/statuses', 'repositories_workspace_repo_slug_commit_commit_statuses');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/commit/{commit}/statuses/build', 'repositories_workspace_repo_slug_commit_commit_statuses_build');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/commit/{commit}/statuses/build/{key}', 'repositories_workspace_repo_slug_commit_commit_statuses_build_key');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/commits', 'repositories_workspace_repo_slug_commits');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/commits/{revision}', 'repositories_workspace_repo_slug_commits_revision');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/components', 'repositories_workspace_repo_slug_components');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/components/{component_id}', 'repositories_workspace_repo_slug_components_component_id');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/default-reviewers', 'repositories_workspace_repo_slug_default_reviewers');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/default-reviewers/{target_username}', 'repositories_workspace_repo_slug_default_reviewers_target_username');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/deploy-keys', 'repositories_workspace_repo_slug_deploy_keys');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/deploy-keys/{key_id}', 'repositories_workspace_repo_slug_deploy_keys_key_id');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/deployments/', 'repositories_workspace_repo_slug_deployments');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/deployments/{deployment_uuid}', 'repositories_workspace_repo_slug_deployments_deployment_uuid');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/deployments_config/environments/{environment_uuid}/variables', 'repositories_workspace_repo_slug_deployments_config_environments_environment_uuid_variables');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/deployments_config/environments/{environment_uuid}/variables/{variable_uuid}', 'repositories_workspace_repo_slug_deployments_config_environments_environment_uuid_variables_variable_uuid');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/diff/{spec}', 'repositories_workspace_repo_slug_diff_spec');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/diffstat/{spec}', 'repositories_workspace_repo_slug_diffstat_spec');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/downloads', 'repositories_workspace_repo_slug_downloads');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/downloads/{filename}', 'repositories_workspace_repo_slug_downloads_filename');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/environments/', 'repositories_workspace_repo_slug_environments');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/environments/{environment_uuid}', 'repositories_workspace_repo_slug_environments_environment_uuid');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/environments/{environment_uuid}/changes/', 'repositories_workspace_repo_slug_environments_environment_uuid_changes');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/filehistory/{commit}/{path}', 'repositories_workspace_repo_slug_filehistory_commit_path');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/forks', 'repositories_workspace_repo_slug_forks');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/hooks', 'repositories_workspace_repo_slug_hooks');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/hooks/{uid}', 'repositories_workspace_repo_slug_hooks_uid');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/issues', 'repositories_workspace_repo_slug_issues');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/issues/export', 'repositories_workspace_repo_slug_issues_export');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/issues/import', 'repositories_workspace_repo_slug_issues_import');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/issues/{issue_id}', 'repositories_workspace_repo_slug_issues_issue_id');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/issues/{issue_id}/attachments', 'repositories_workspace_repo_slug_issues_issue_id_attachments');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/issues/{issue_id}/attachments/{path}', 'repositories_workspace_repo_slug_issues_issue_id_attachments_path');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/issues/{issue_id}/changes', 'repositories_workspace_repo_slug_issues_issue_id_changes');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/issues/{issue_id}/changes/{change_id}', 'repositories_workspace_repo_slug_issues_issue_id_changes_change_id');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/issues/{issue_id}/comments', 'repositories_workspace_repo_slug_issues_issue_id_comments');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/issues/{issue_id}/comments/{comment_id}', 'repositories_workspace_repo_slug_issues_issue_id_comments_comment_id');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/issues/{issue_id}/vote', 'repositories_workspace_repo_slug_issues_issue_id_vote');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/issues/{issue_id}/watch', 'repositories_workspace_repo_slug_issues_issue_id_watch');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/merge-base/{revspec}', 'repositories_workspace_repo_slug_merge_base_revspec');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/milestones', 'repositories_workspace_repo_slug_milestones');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/milestones/{milestone_id}', 'repositories_workspace_repo_slug_milestones_milestone_id');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/patch/{spec}', 'repositories_workspace_repo_slug_patch_spec');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines-config/caches/', 'repositories_workspace_repo_slug_pipelines_config_caches');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines-config/caches/{cache_uuid}', 'repositories_workspace_repo_slug_pipelines_config_caches_cache_uuid');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines-config/caches/{cache_uuid}/content-uri', 'repositories_workspace_repo_slug_pipelines_config_caches_cache_uuid_content_uri');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines/', 'repositories_workspace_repo_slug_pipelines');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}', 'repositories_workspace_repo_slug_pipelines_pipeline_uuid');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps/', 'repositories_workspace_repo_slug_pipelines_pipeline_uuid_steps');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps/{step_uuid}', 'repositories_workspace_repo_slug_pipelines_pipeline_uuid_steps_step_uuid');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps/{step_uuid}/log', 'repositories_workspace_repo_slug_pipelines_pipeline_uuid_steps_step_uuid_log');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps/{step_uuid}/logs/{log_uuid}', 'repositories_workspace_repo_slug_pipelines_pipeline_uuid_steps_step_uuid_logs_log_uuid');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps/{step_uuid}/test_reports', 'repositories_workspace_repo_slug_pipelines_pipeline_uuid_steps_step_uuid_test_reports');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps/{step_uuid}/test_reports/test_cases', 'repositories_workspace_repo_slug_pipelines_pipeline_uuid_steps_step_uuid_test_reports_test_cases');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps/{step_uuid}/test_reports/test_cases/{test_case_uuid}/test_case_reasons', 'repositories_workspace_repo_slug_pipelines_pipeline_uuid_steps_step_uuid_test_reports_test_cases_test_case_uuid_test_case_reasons');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/stopPipeline', 'repositories_workspace_repo_slug_pipelines_pipeline_uuid_stopPipeline');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines_config', 'repositories_workspace_repo_slug_pipelines_config');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines_config/build_number', 'repositories_workspace_repo_slug_pipelines_config_build_number');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines_config/schedules/', 'repositories_workspace_repo_slug_pipelines_config_schedules');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines_config/schedules/{schedule_uuid}', 'repositories_workspace_repo_slug_pipelines_config_schedules_schedule_uuid');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines_config/schedules/{schedule_uuid}/executions/', 'repositories_workspace_repo_slug_pipelines_config_schedules_schedule_uuid_executions');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines_config/ssh/key_pair', 'repositories_workspace_repo_slug_pipelines_config_ssh_key_pair');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines_config/ssh/known_hosts/', 'repositories_workspace_repo_slug_pipelines_config_ssh_known_hosts');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines_config/ssh/known_hosts/{known_host_uuid}', 'repositories_workspace_repo_slug_pipelines_config_ssh_known_hosts_known_host_uuid');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines_config/variables/', 'repositories_workspace_repo_slug_pipelines_config_variables');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pipelines_config/variables/{variable_uuid}', 'repositories_workspace_repo_slug_pipelines_config_variables_variable_uuid');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/properties/{app_key}/{property_name}', 'repositories_workspace_repo_slug_properties_app_key_property_name');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pullrequests', 'repositories_workspace_repo_slug_pullrequests');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pullrequests/activity', 'repositories_workspace_repo_slug_pullrequests_activity');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}', 'repositories_workspace_repo_slug_pullrequests_pull_request_id');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/activity', 'repositories_workspace_repo_slug_pullrequests_pull_request_id_activity');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/approve', 'repositories_workspace_repo_slug_pullrequests_pull_request_id_approve');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/comments', 'repositories_workspace_repo_slug_pullrequests_pull_request_id_comments');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/comments/{comment_id}', 'repositories_workspace_repo_slug_pullrequests_pull_request_id_comments_comment_id');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/commits', 'repositories_workspace_repo_slug_pullrequests_pull_request_id_commits');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/decline', 'repositories_workspace_repo_slug_pullrequests_pull_request_id_decline');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/diff', 'repositories_workspace_repo_slug_pullrequests_pull_request_id_diff');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/diffstat', 'repositories_workspace_repo_slug_pullrequests_pull_request_id_diffstat');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/merge', 'repositories_workspace_repo_slug_pullrequests_pull_request_id_merge');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/merge/task-status/{task_id}', 'repositories_workspace_repo_slug_pullrequests_pull_request_id_merge_task_status_task_id');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/patch', 'repositories_workspace_repo_slug_pullrequests_pull_request_id_patch');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/request-changes', 'repositories_workspace_repo_slug_pullrequests_pull_request_id_request_changes');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/statuses', 'repositories_workspace_repo_slug_pullrequests_pull_request_id_statuses');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/pullrequests/{pullrequest_id}/properties/{app_key}/{property_name}', 'repositories_workspace_repo_slug_pullrequests_pullrequest_id_properties_app_key_property_name');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/refs', 'repositories_workspace_repo_slug_refs');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/refs/branches', 'repositories_workspace_repo_slug_refs_branches');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/refs/branches/{name}', 'repositories_workspace_repo_slug_refs_branches_name');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/refs/tags', 'repositories_workspace_repo_slug_refs_tags');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/refs/tags/{name}', 'repositories_workspace_repo_slug_refs_tags_name');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/src', 'repositories_workspace_repo_slug_src');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/src/{commit}/{path}', 'repositories_workspace_repo_slug_src_commit_path');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/versions', 'repositories_workspace_repo_slug_versions');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/versions/{version_id}', 'repositories_workspace_repo_slug_versions_version_id');
$routes->addRoute('GET', '/repositories/{workspace}/{repo_slug}/watchers', 'repositories_workspace_repo_slug_watchers');
$routes->addRoute('GET', '/snippets', 'snippets');
$routes->addRoute('GET', '/snippets/{workspace}', 'snippets_workspace');
$routes->addRoute('GET', '/snippets/{workspace}/{encoded_id}', 'snippets_workspace_encoded_id');
$routes->addRoute('GET', '/snippets/{workspace}/{encoded_id}/comments', 'snippets_workspace_encoded_id_comments');
$routes->addRoute('GET', '/snippets/{workspace}/{encoded_id}/comments/{comment_id}', 'snippets_workspace_encoded_id_comments_comment_id');
$routes->addRoute('GET', '/snippets/{workspace}/{encoded_id}/commits', 'snippets_workspace_encoded_id_commits');
$routes->addRoute('GET', '/snippets/{workspace}/{encoded_id}/commits/{revision}', 'snippets_workspace_encoded_id_commits_revision');
$routes->addRoute('GET', '/snippets/{workspace}/{encoded_id}/files/{path}', 'snippets_workspace_encoded_id_files_path');
$routes->addRoute('GET', '/snippets/{workspace}/{encoded_id}/watch', 'snippets_workspace_encoded_id_watch');
$routes->addRoute('GET', '/snippets/{workspace}/{encoded_id}/watchers', 'snippets_workspace_encoded_id_watchers');
$routes->addRoute('GET', '/snippets/{workspace}/{encoded_id}/{node_id}', 'snippets_workspace_encoded_id_node_id');
$routes->addRoute('GET', '/snippets/{workspace}/{encoded_id}/{node_id}/files/{path}', 'snippets_workspace_encoded_id_node_id_files_path');
$routes->addRoute('GET', '/snippets/{workspace}/{encoded_id}/{revision}/diff', 'snippets_workspace_encoded_id_revision_diff');
$routes->addRoute('GET', '/snippets/{workspace}/{encoded_id}/{revision}/patch', 'snippets_workspace_encoded_id_revision_patch');
$routes->addRoute('GET', '/teams', 'teams');
$routes->addRoute('GET', '/teams/{username}', 'teams_username');
$routes->addRoute('GET', '/teams/{username}/followers', 'teams_username_followers');
$routes->addRoute('GET', '/teams/{username}/following', 'teams_username_following');
$routes->addRoute('GET', '/teams/{username}/members', 'teams_username_members');
$routes->addRoute('GET', '/teams/{username}/permissions', 'teams_username_permissions');
$routes->addRoute('GET', '/teams/{username}/permissions/repositories', 'teams_username_permissions_repositories');
$routes->addRoute('GET', '/teams/{username}/permissions/repositories/{repo_slug}', 'teams_username_permissions_repositories_repo_slug');
$routes->addRoute('GET', '/teams/{username}/pipelines_config/variables/', 'teams_username_pipelines_config_variables');
$routes->addRoute('GET', '/teams/{username}/pipelines_config/variables/{variable_uuid}', 'teams_username_pipelines_config_variables_variable_uuid');
$routes->addRoute('GET', '/teams/{username}/projects/', 'teams_username_projects');
$routes->addRoute('GET', '/teams/{username}/projects/{project_key}', 'teams_username_projects_project_key');
$routes->addRoute('GET', '/teams/{username}/search/code', 'teams_username_search_code');
$routes->addRoute('GET', '/teams/{workspace}/repositories', 'teams_workspace_repositories');
$routes->addRoute('GET', '/user', 'user');
$routes->addRoute('GET', '/user/emails', 'user_emails');
$routes->addRoute('GET', '/user/emails/{email}', 'user_emails_email');
$routes->addRoute('GET', '/user/permissions/repositories', 'user_permissions_repositories');
$routes->addRoute('GET', '/user/permissions/teams', 'user_permissions_teams');
$routes->addRoute('GET', '/user/permissions/workspaces', 'user_permissions_workspaces');
$routes->addRoute('GET', '/users/{selected_user}', 'users_selected_user');
$routes->addRoute('GET', '/users/{selected_user}/pipelines_config/variables/', 'users_selected_user_pipelines_config_variables');
$routes->addRoute('GET', '/users/{selected_user}/pipelines_config/variables/{variable_uuid}', 'users_selected_user_pipelines_config_variables_variable_uuid');
$routes->addRoute('GET', '/users/{selected_user}/properties/{app_key}/{property_name}', 'users_selected_user_properties_app_key_property_name');
$routes->addRoute('GET', '/users/{selected_user}/search/code', 'users_selected_user_search_code');
$routes->addRoute('GET', '/users/{selected_user}/ssh-keys', 'users_selected_user_ssh_keys');
$routes->addRoute('GET', '/users/{selected_user}/ssh-keys/{key_id}', 'users_selected_user_ssh_keys_key_id');
$routes->addRoute('GET', '/users/{username}/members', 'users_username_members');
$routes->addRoute('GET', '/users/{workspace}/repositories', 'users_workspace_repositories');
$routes->addRoute('GET', '/workspaces', 'workspaces');
$routes->addRoute('GET', '/workspaces/{workspace}', 'workspaces_workspace');
$routes->addRoute('GET', '/workspaces/{workspace}/hooks', 'workspaces_workspace_hooks');
$routes->addRoute('GET', '/workspaces/{workspace}/hooks/{uid}', 'workspaces_workspace_hooks_uid');
$routes->addRoute('GET', '/workspaces/{workspace}/members', 'workspaces_workspace_members');
$routes->addRoute('GET', '/workspaces/{workspace}/members/{member}', 'workspaces_workspace_members_member');
$routes->addRoute('GET', '/workspaces/{workspace}/permissions', 'workspaces_workspace_permissions');
$routes->addRoute('GET', '/workspaces/{workspace}/permissions/repositories', 'workspaces_workspace_permissions_repositories');
$routes->addRoute('GET', '/workspaces/{workspace}/permissions/repositories/{repo_slug}', 'workspaces_workspace_permissions_repositories_repo_slug');
$routes->addRoute('GET', '/workspaces/{workspace}/pipelines-config/identity/oidc/.well-known/openid-configuration', 'workspaces_workspace_pipelines_config_identity_oidc_well_known_openid_configuration');
$routes->addRoute('GET', '/workspaces/{workspace}/pipelines-config/identity/oidc/keys.json', 'workspaces_workspace_pipelines_config_identity_oidc_keys_json');
$routes->addRoute('GET', '/workspaces/{workspace}/pipelines-config/variables', 'workspaces_workspace_pipelines_config_variables');
$routes->addRoute('GET', '/workspaces/{workspace}/pipelines-config/variables/{variable_uuid}', 'workspaces_workspace_pipelines_config_variables_variable_uuid');
$routes->addRoute('GET', '/workspaces/{workspace}/projects', 'workspaces_workspace_projects');
$routes->addRoute('GET', '/workspaces/{workspace}/projects/{project_key}', 'workspaces_workspace_projects_project_key');
$routes->addRoute('GET', '/workspaces/{workspace}/search/code', 'workspaces_workspace_search_code');
};
$dispatcher = FastRoute\cachedDispatcher($routes, [
'cacheKey' => "FastRoute.cache",
'cacheFile' => "FastRoute.cache",
'cacheDisabled' => false,
]
);
#------------------
# SymfonyRouting
#---------------------
$symfonyRoutes = new RouteCollection();
function symfonyRoutes(RouteCollection $routes)
{
$routes->add('addon', new SymfonyRoute('/addon'));
$routes->add('addon_linkers', new SymfonyRoute('/addon/linkers'));
$routes->add('addon_linkers_linker_key', new SymfonyRoute('/addon/linkers/{linker_key}'));
$routes->add('addon_linkers_linker_key_values', new SymfonyRoute('/addon/linkers/{linker_key}/values'));
$routes->add('addon_linkers_linker_key_values_value_id', new SymfonyRoute('/addon/linkers/{linker_key}/values/{value_id}'));
$routes->add('hook_events', new SymfonyRoute('/hook_events'));
$routes->add('hook_events_subject_type', new SymfonyRoute('/hook_events/{subject_type}'));
$routes->add('pullrequests_selected_user', new SymfonyRoute('/pullrequests/{selected_user}'));
$routes->add('repositories', new SymfonyRoute('/repositories'));
$routes->add('repositories_workspace', new SymfonyRoute('/repositories/{workspace}'));
$routes->add('repositories_workspace_repo_slug', new SymfonyRoute('/repositories/{workspace}/{repo_slug}'));
$routes->add('repositories_workspace_repo_slug_branch_restrictions', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/branch-restrictions'));
$routes->add('repositories_workspace_repo_slug_branch_restrictions_id', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/branch-restrictions/{id}'));
$routes->add('repositories_workspace_repo_slug_branching_model', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/branching-model'));
$routes->add('repositories_workspace_repo_slug_branching_model_settings', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/branching-model/settings'));
$routes->add('repositories_workspace_repo_slug_commit_commit', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/commit/{commit}'));
$routes->add('repositories_workspace_repo_slug_commit_commit_approve', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/commit/{commit}/approve'));
$routes->add('repositories_workspace_repo_slug_commit_commit_comments', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/commit/{commit}/comments'));
$routes->add('repositories_workspace_repo_slug_commit_commit_comments_comment_id', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/commit/{commit}/comments/{comment_id}'));
$routes->add('repositories_workspace_repo_slug_commit_commit_properties_app_key_property_name', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/commit/{commit}/properties/{app_key}/{property_name}'));
$routes->add('repositories_workspace_repo_slug_commit_commit_pullrequests', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/commit/{commit}/pullrequests'));
$routes->add('repositories_workspace_repo_slug_commit_commit_reports', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/commit/{commit}/reports'));
$routes->add('repositories_workspace_repo_slug_commit_commit_reports_reportId', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/commit/{commit}/reports/{reportId}'));
$routes->add('repositories_workspace_repo_slug_commit_commit_reports_reportId_annotations', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/commit/{commit}/reports/{reportId}/annotations'));
$routes->add('repositories_workspace_repo_slug_commit_commit_reports_reportId_annotations_annotationId', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/commit/{commit}/reports/{reportId}/annotations/{annotationId}'));
$routes->add('repositories_workspace_repo_slug_commit_commit_statuses', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/commit/{commit}/statuses'));
$routes->add('repositories_workspace_repo_slug_commit_commit_statuses_build', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/commit/{commit}/statuses/build'));
$routes->add('repositories_workspace_repo_slug_commit_commit_statuses_build_key', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/commit/{commit}/statuses/build/{key}'));
$routes->add('repositories_workspace_repo_slug_commits', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/commits'));
$routes->add('repositories_workspace_repo_slug_commits_revision', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/commits/{revision}'));
$routes->add('repositories_workspace_repo_slug_components', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/components'));
$routes->add('repositories_workspace_repo_slug_components_component_id', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/components/{component_id}'));
$routes->add('repositories_workspace_repo_slug_default_reviewers', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/default-reviewers'));
$routes->add('repositories_workspace_repo_slug_default_reviewers_target_username', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/default-reviewers/{target_username}'));
$routes->add('repositories_workspace_repo_slug_deploy_keys', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/deploy-keys'));
$routes->add('repositories_workspace_repo_slug_deploy_keys_key_id', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/deploy-keys/{key_id}'));
$routes->add('repositories_workspace_repo_slug_deployments', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/deployments/'));
$routes->add('repositories_workspace_repo_slug_deployments_deployment_uuid', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/deployments/{deployment_uuid}'));
$routes->add('repositories_workspace_repo_slug_deployments_config_environments_environment_uuid_variables', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/deployments_config/environments/{environment_uuid}/variables'));
$routes->add('repositories_workspace_repo_slug_deployments_config_environments_environment_uuid_variables_variable_uuid', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/deployments_config/environments/{environment_uuid}/variables/{variable_uuid}'));
$routes->add('repositories_workspace_repo_slug_diff_spec', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/diff/{spec}'));
$routes->add('repositories_workspace_repo_slug_diffstat_spec', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/diffstat/{spec}'));
$routes->add('repositories_workspace_repo_slug_downloads', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/downloads'));
$routes->add('repositories_workspace_repo_slug_downloads_filename', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/downloads/{filename}'));
$routes->add('repositories_workspace_repo_slug_environments', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/environments/'));
$routes->add('repositories_workspace_repo_slug_environments_environment_uuid', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/environments/{environment_uuid}'));
$routes->add('repositories_workspace_repo_slug_environments_environment_uuid_changes', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/environments/{environment_uuid}/changes/'));
$routes->add('repositories_workspace_repo_slug_filehistory_commit_path', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/filehistory/{commit}/{path}'));
$routes->add('repositories_workspace_repo_slug_forks', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/forks'));
$routes->add('repositories_workspace_repo_slug_hooks', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/hooks'));
$routes->add('repositories_workspace_repo_slug_hooks_uid', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/hooks/{uid}'));
$routes->add('repositories_workspace_repo_slug_issues', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/issues'));
$routes->add('repositories_workspace_repo_slug_issues_export', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/issues/export'));
$routes->add('repositories_workspace_repo_slug_issues_import', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/issues/import'));
$routes->add('repositories_workspace_repo_slug_issues_issue_id', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/issues/{issue_id}'));
$routes->add('repositories_workspace_repo_slug_issues_issue_id_attachments', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/issues/{issue_id}/attachments'));
$routes->add('repositories_workspace_repo_slug_issues_issue_id_attachments_path', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/issues/{issue_id}/attachments/{path}'));
$routes->add('repositories_workspace_repo_slug_issues_issue_id_changes', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/issues/{issue_id}/changes'));
$routes->add('repositories_workspace_repo_slug_issues_issue_id_changes_change_id', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/issues/{issue_id}/changes/{change_id}'));
$routes->add('repositories_workspace_repo_slug_issues_issue_id_comments', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/issues/{issue_id}/comments'));
$routes->add('repositories_workspace_repo_slug_issues_issue_id_comments_comment_id', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/issues/{issue_id}/comments/{comment_id}'));
$routes->add('repositories_workspace_repo_slug_issues_issue_id_vote', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/issues/{issue_id}/vote'));
$routes->add('repositories_workspace_repo_slug_issues_issue_id_watch', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/issues/{issue_id}/watch'));
$routes->add('repositories_workspace_repo_slug_merge_base_revspec', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/merge-base/{revspec}'));
$routes->add('repositories_workspace_repo_slug_milestones', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/milestones'));
$routes->add('repositories_workspace_repo_slug_milestones_milestone_id', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/milestones/{milestone_id}'));
$routes->add('repositories_workspace_repo_slug_patch_spec', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/patch/{spec}'));
$routes->add('repositories_workspace_repo_slug_pipelines_config_caches', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines-config/caches/'));
$routes->add('repositories_workspace_repo_slug_pipelines_config_caches_cache_uuid', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines-config/caches/{cache_uuid}'));
$routes->add('repositories_workspace_repo_slug_pipelines_config_caches_cache_uuid_content_uri', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines-config/caches/{cache_uuid}/content-uri'));
$routes->add('repositories_workspace_repo_slug_pipelines', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines/'));
$routes->add('repositories_workspace_repo_slug_pipelines_pipeline_uuid', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}'));
$routes->add('repositories_workspace_repo_slug_pipelines_pipeline_uuid_steps', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps/'));
$routes->add('repositories_workspace_repo_slug_pipelines_pipeline_uuid_steps_step_uuid', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps/{step_uuid}'));
$routes->add('repositories_workspace_repo_slug_pipelines_pipeline_uuid_steps_step_uuid_log', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps/{step_uuid}/log'));
$routes->add('repositories_workspace_repo_slug_pipelines_pipeline_uuid_steps_step_uuid_logs_log_uuid', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps/{step_uuid}/logs/{log_uuid}'));
$routes->add('repositories_workspace_repo_slug_pipelines_pipeline_uuid_steps_step_uuid_test_reports', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps/{step_uuid}/test_reports'));
$routes->add('repositories_workspace_repo_slug_pipelines_pipeline_uuid_steps_step_uuid_test_reports_test_cases', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps/{step_uuid}/test_reports/test_cases'));
$routes->add('repositories_workspace_repo_slug_pipelines_pipeline_uuid_steps_step_uuid_test_reports_test_cases_test_case_uuid_test_case_reasons', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/steps/{step_uuid}/test_reports/test_cases/{test_case_uuid}/test_case_reasons'));
$routes->add('repositories_workspace_repo_slug_pipelines_pipeline_uuid_stopPipeline', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines/{pipeline_uuid}/stopPipeline'));
$routes->add('repositories_workspace_repo_slug_pipelines_config', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines_config'));
$routes->add('repositories_workspace_repo_slug_pipelines_config_build_number', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines_config/build_number'));
$routes->add('repositories_workspace_repo_slug_pipelines_config_schedules', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines_config/schedules/'));
$routes->add('repositories_workspace_repo_slug_pipelines_config_schedules_schedule_uuid', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines_config/schedules/{schedule_uuid}'));
$routes->add('repositories_workspace_repo_slug_pipelines_config_schedules_schedule_uuid_executions', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines_config/schedules/{schedule_uuid}/executions/'));
$routes->add('repositories_workspace_repo_slug_pipelines_config_ssh_key_pair', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines_config/ssh/key_pair'));
$routes->add('repositories_workspace_repo_slug_pipelines_config_ssh_known_hosts', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines_config/ssh/known_hosts/'));
$routes->add('repositories_workspace_repo_slug_pipelines_config_ssh_known_hosts_known_host_uuid', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines_config/ssh/known_hosts/{known_host_uuid}'));
$routes->add('repositories_workspace_repo_slug_pipelines_config_variables', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines_config/variables/'));
$routes->add('repositories_workspace_repo_slug_pipelines_config_variables_variable_uuid', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pipelines_config/variables/{variable_uuid}'));
$routes->add('repositories_workspace_repo_slug_properties_app_key_property_name', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/properties/{app_key}/{property_name}'));
$routes->add('repositories_workspace_repo_slug_pullrequests', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pullrequests'));
$routes->add('repositories_workspace_repo_slug_pullrequests_activity', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pullrequests/activity'));
$routes->add('repositories_workspace_repo_slug_pullrequests_pull_request_id', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}'));
$routes->add('repositories_workspace_repo_slug_pullrequests_pull_request_id_activity', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/activity'));
$routes->add('repositories_workspace_repo_slug_pullrequests_pull_request_id_approve', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/approve'));
$routes->add('repositories_workspace_repo_slug_pullrequests_pull_request_id_comments', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/comments'));
$routes->add('repositories_workspace_repo_slug_pullrequests_pull_request_id_comments_comment_id', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/comments/{comment_id}'));
$routes->add('repositories_workspace_repo_slug_pullrequests_pull_request_id_commits', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/commits'));
$routes->add('repositories_workspace_repo_slug_pullrequests_pull_request_id_decline', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/decline'));
$routes->add('repositories_workspace_repo_slug_pullrequests_pull_request_id_diff', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/diff'));
$routes->add('repositories_workspace_repo_slug_pullrequests_pull_request_id_diffstat', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/diffstat'));
$routes->add('repositories_workspace_repo_slug_pullrequests_pull_request_id_merge', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/merge'));
$routes->add('repositories_workspace_repo_slug_pullrequests_pull_request_id_merge_task_status_task_id', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/merge/task-status/{task_id}'));
$routes->add('repositories_workspace_repo_slug_pullrequests_pull_request_id_patch', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/patch'));
$routes->add('repositories_workspace_repo_slug_pullrequests_pull_request_id_request_changes', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/request-changes'));
$routes->add('repositories_workspace_repo_slug_pullrequests_pull_request_id_statuses', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}/statuses'));
$routes->add('repositories_workspace_repo_slug_pullrequests_pullrequest_id_properties_app_key_property_name', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/pullrequests/{pullrequest_id}/properties/{app_key}/{property_name}'));
$routes->add('repositories_workspace_repo_slug_refs', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/refs'));
$routes->add('repositories_workspace_repo_slug_refs_branches', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/refs/branches'));
$routes->add('repositories_workspace_repo_slug_refs_branches_name', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/refs/branches/{name}'));
$routes->add('repositories_workspace_repo_slug_refs_tags', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/refs/tags'));
$routes->add('repositories_workspace_repo_slug_refs_tags_name', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/refs/tags/{name}'));
$routes->add('repositories_workspace_repo_slug_src', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/src'));
$routes->add('repositories_workspace_repo_slug_src_commit_path', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/src/{commit}/{path}'));
$routes->add('repositories_workspace_repo_slug_versions', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/versions'));
$routes->add('repositories_workspace_repo_slug_versions_version_id', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/versions/{version_id}'));
$routes->add('repositories_workspace_repo_slug_watchers', new SymfonyRoute('/repositories/{workspace}/{repo_slug}/watchers'));
$routes->add('snippets', new SymfonyRoute('/snippets'));
$routes->add('snippets_workspace', new SymfonyRoute('/snippets/{workspace}'));
$routes->add('snippets_workspace_encoded_id', new SymfonyRoute('/snippets/{workspace}/{encoded_id}'));
$routes->add('snippets_workspace_encoded_id_comments', new SymfonyRoute('/snippets/{workspace}/{encoded_id}/comments'));
$routes->add('snippets_workspace_encoded_id_comments_comment_id', new SymfonyRoute('/snippets/{workspace}/{encoded_id}/comments/{comment_id}'));
$routes->add('snippets_workspace_encoded_id_commits', new SymfonyRoute('/snippets/{workspace}/{encoded_id}/commits'));
$routes->add('snippets_workspace_encoded_id_commits_revision', new SymfonyRoute('/snippets/{workspace}/{encoded_id}/commits/{revision}'));
$routes->add('snippets_workspace_encoded_id_files_path', new SymfonyRoute('/snippets/{workspace}/{encoded_id}/files/{path}'));
$routes->add('snippets_workspace_encoded_id_watch', new SymfonyRoute('/snippets/{workspace}/{encoded_id}/watch'));
$routes->add('snippets_workspace_encoded_id_watchers', new SymfonyRoute('/snippets/{workspace}/{encoded_id}/watchers'));
$routes->add('snippets_workspace_encoded_id_node_id', new SymfonyRoute('/snippets/{workspace}/{encoded_id}/{node_id}'));
$routes->add('snippets_workspace_encoded_id_node_id_files_path', new SymfonyRoute('/snippets/{workspace}/{encoded_id}/{node_id}/files/{path}'));
$routes->add('snippets_workspace_encoded_id_revision_diff', new SymfonyRoute('/snippets/{workspace}/{encoded_id}/{revision}/diff'));
$routes->add('snippets_workspace_encoded_id_revision_patch', new SymfonyRoute('/snippets/{workspace}/{encoded_id}/{revision}/patch'));
$routes->add('teams', new SymfonyRoute('/teams'));
$routes->add('teams_username', new SymfonyRoute('/teams/{username}'));
$routes->add('teams_username_followers', new SymfonyRoute('/teams/{username}/followers'));
$routes->add('teams_username_following', new SymfonyRoute('/teams/{username}/following'));
$routes->add('teams_username_members', new SymfonyRoute('/teams/{username}/members'));
$routes->add('teams_username_permissions', new SymfonyRoute('/teams/{username}/permissions'));
$routes->add('teams_username_permissions_repositories', new SymfonyRoute('/teams/{username}/permissions/repositories'));
$routes->add('teams_username_permissions_repositories_repo_slug', new SymfonyRoute('/teams/{username}/permissions/repositories/{repo_slug}'));
$routes->add('teams_username_pipelines_config_variables', new SymfonyRoute('/teams/{username}/pipelines_config/variables/'));
$routes->add('teams_username_pipelines_config_variables_variable_uuid', new SymfonyRoute('/teams/{username}/pipelines_config/variables/{variable_uuid}'));
$routes->add('teams_username_projects', new SymfonyRoute('/teams/{username}/projects/'));
$routes->add('teams_username_projects_project_key', new SymfonyRoute('/teams/{username}/projects/{project_key}'));
$routes->add('teams_username_search_code', new SymfonyRoute('/teams/{username}/search/code'));
$routes->add('teams_workspace_repositories', new SymfonyRoute('/teams/{workspace}/repositories'));
$routes->add('user', new SymfonyRoute('/user'));
$routes->add('user_emails', new SymfonyRoute('/user/emails'));
$routes->add('user_emails_email', new SymfonyRoute('/user/emails/{email}'));
$routes->add('user_permissions_repositories', new SymfonyRoute('/user/permissions/repositories'));
$routes->add('user_permissions_teams', new SymfonyRoute('/user/permissions/teams'));
$routes->add('user_permissions_workspaces', new SymfonyRoute('/user/permissions/workspaces'));
$routes->add('users_selected_user', new SymfonyRoute('/users/{selected_user}'));
$routes->add('users_selected_user_pipelines_config_variables', new SymfonyRoute('/users/{selected_user}/pipelines_config/variables/'));
$routes->add('users_selected_user_pipelines_config_variables_variable_uuid', new SymfonyRoute('/users/{selected_user}/pipelines_config/variables/{variable_uuid}'));
$routes->add('users_selected_user_properties_app_key_property_name', new SymfonyRoute('/users/{selected_user}/properties/{app_key}/{property_name}'));
$routes->add('users_selected_user_search_code', new SymfonyRoute('/users/{selected_user}/search/code'));
$routes->add('users_selected_user_ssh_keys', new SymfonyRoute('/users/{selected_user}/ssh-keys'));
$routes->add('users_selected_user_ssh_keys_key_id', new SymfonyRoute('/users/{selected_user}/ssh-keys/{key_id}'));
$routes->add('users_username_members', new SymfonyRoute('/users/{username}/members'));
$routes->add('users_workspace_repositories', new SymfonyRoute('/users/{workspace}/repositories'));
$routes->add('workspaces', new SymfonyRoute('/workspaces'));
$routes->add('workspaces_workspace', new SymfonyRoute('/workspaces/{workspace}'));
$routes->add('workspaces_workspace_hooks', new SymfonyRoute('/workspaces/{workspace}/hooks'));
$routes->add('workspaces_workspace_hooks_uid', new SymfonyRoute('/workspaces/{workspace}/hooks/{uid}'));
$routes->add('workspaces_workspace_members', new SymfonyRoute('/workspaces/{workspace}/members'));
$routes->add('workspaces_workspace_members_member', new SymfonyRoute('/workspaces/{workspace}/members/{member}'));
$routes->add('workspaces_workspace_permissions', new SymfonyRoute('/workspaces/{workspace}/permissions'));
$routes->add('workspaces_workspace_permissions_repositories', new SymfonyRoute('/workspaces/{workspace}/permissions/repositories'));
$routes->add('workspaces_workspace_permissions_repositories_repo_slug', new SymfonyRoute('/workspaces/{workspace}/permissions/repositories/{repo_slug}'));
$routes->add('workspaces_workspace_pipelines_config_identity_oidc_well_known_openid_configuration', new SymfonyRoute('/workspaces/{workspace}/pipelines-config/identity/oidc/.well-known/openid-configuration'));
$routes->add('workspaces_workspace_pipelines_config_identity_oidc_keys_json', new SymfonyRoute('/workspaces/{workspace}/pipelines-config/identity/oidc/keys.json'));
$routes->add('workspaces_workspace_pipelines_config_variables', new SymfonyRoute('/workspaces/{workspace}/pipelines-config/variables'));
$routes->add('workspaces_workspace_pipelines_config_variables_variable_uuid', new SymfonyRoute('/workspaces/{workspace}/pipelines-config/variables/{variable_uuid}'));
$routes->add('workspaces_workspace_projects', new SymfonyRoute('/workspaces/{workspace}/projects'));
$routes->add('workspaces_workspace_projects_project_key', new SymfonyRoute('/workspaces/{workspace}/projects/{project_key}'));
$routes->add('workspaces_workspace_search_code', new SymfonyRoute('/workspaces/{workspace}/search/code'));
return $routes;
}
symfonyRoutes($symfonyRoutes);
$dumper = new CompiledUrlMatcherDumper($symfonyRoutes);
$compiled = $dumper->getCompiledRoutes();
function benchmarkRandom(): void
{
global $treeGenerator, $dispatcher, $compiled;
$urls = json_decode(<<<JSO
{"\/addon":"\/addon","\/addon\/linkers":"\/addon\/linkers","\/addon\/linkers\/tonics-linker_key":"\/addon\/linkers\/:linker_key","\/addon\/linkers\/tonics-linker_key\/values":"\/addon\/linkers\/:linker_key\/values","\/addon\/linkers\/tonics-linker_key\/values\/tonics-value_id":"\/addon\/linkers\/:linker_key\/values\/:value_id","\/hook_events":"\/hook_events","\/hook_events\/tonics-subject_type":"\/hook_events\/:subject_type","\/pullrequests\/tonics-selected_user":"\/pullrequests\/:selected_user","\/repositories":"\/repositories","\/repositories\/tonics-workspace":"\/repositories\/:workspace","\/repositories\/tonics-workspace\/tonics-repo_slug":"\/repositories\/:workspace\/:repo_slug","\/repositories\/tonics-workspace\/tonics-repo_slug\/branch-restrictions":"\/repositories\/:workspace\/:repo_slug\/branch-restrictions","\/repositories\/tonics-workspace\/tonics-repo_slug\/branch-restrictions\/tonics-id":"\/repositories\/:workspace\/:repo_slug\/branch-restrictions\/:id","\/repositories\/tonics-workspace\/tonics-repo_slug\/branching-model":"\/repositories\/:workspace\/:repo_slug\/branching-model","\/repositories\/tonics-workspace\/tonics-repo_slug\/branching-model\/settings":"\/repositories\/:workspace\/:repo_slug\/branching-model\/settings","\/repositories\/tonics-workspace\/tonics-repo_slug\/commit\/tonics-commit":"\/repositories\/:workspace\/:repo_slug\/commit\/:commit","\/repositories\/tonics-workspace\/tonics-repo_slug\/commit\/tonics-commit\/approve":"\/repositories\/:workspace\/:repo_slug\/commit\/:commit\/approve","\/repositories\/tonics-workspace\/tonics-repo_slug\/commit\/tonics-commit\/comments":"\/repositories\/:workspace\/:repo_slug\/commit\/:commit\/comments","\/repositories\/tonics-workspace\/tonics-repo_slug\/commit\/tonics-commit\/comments\/tonics-comment_id":"\/repositories\/:workspace\/:repo_slug\/commit\/:commit\/comments\/:comment_id","\/repositories\/tonics-workspace\/tonics-repo_slug\/commit\/tonics-commit\/properties\/tonics-app_key\/tonics-property_name":"\/repositories\/:workspace\/:repo_slug\/commit\/:commit\/properties\/:app_key\/:property_name","\/repositories\/tonics-workspace\/tonics-repo_slug\/commit\/tonics-commit\/pullrequests":"\/repositories\/:workspace\/:repo_slug\/commit\/:commit\/pullrequests","\/repositories\/tonics-workspace\/tonics-repo_slug\/commit\/tonics-commit\/reports":"\/repositories\/:workspace\/:repo_slug\/commit\/:commit\/reports","\/repositories\/tonics-workspace\/tonics-repo_slug\/commit\/tonics-commit\/reports\/tonics-reportId":"\/repositories\/:workspace\/:repo_slug\/commit\/:commit\/reports\/:reportId","\/repositories\/tonics-workspace\/tonics-repo_slug\/commit\/tonics-commit\/reports\/tonics-reportId\/annotations":"\/repositories\/:workspace\/:repo_slug\/commit\/:commit\/reports\/:reportId\/annotations","\/repositories\/tonics-workspace\/tonics-repo_slug\/commit\/tonics-commit\/reports\/tonics-reportId\/annotations\/tonics-annotationId":"\/repositories\/:workspace\/:repo_slug\/commit\/:commit\/reports\/:reportId\/annotations\/:annotationId","\/repositories\/tonics-workspace\/tonics-repo_slug\/commit\/tonics-commit\/statuses":"\/repositories\/:workspace\/:repo_slug\/commit\/:commit\/statuses","\/repositories\/tonics-workspace\/tonics-repo_slug\/commit\/tonics-commit\/statuses\/build":"\/repositories\/:workspace\/:repo_slug\/commit\/:commit\/statuses\/build","\/repositories\/tonics-workspace\/tonics-repo_slug\/commit\/tonics-commit\/statuses\/build\/tonics-key":"\/repositories\/:workspace\/:repo_slug\/commit\/:commit\/statuses\/build\/:key","\/repositories\/tonics-workspace\/tonics-repo_slug\/commits":"\/repositories\/:workspace\/:repo_slug\/commits","\/repositories\/tonics-workspace\/tonics-repo_slug\/commits\/tonics-revision":"\/repositories\/:workspace\/:repo_slug\/commits\/:revision","\/repositories\/tonics-workspace\/tonics-repo_slug\/components":"\/repositories\/:workspace\/:repo_slug\/components","\/repositories\/tonics-workspace\/tonics-repo_slug\/components\/tonics-component_id":"\/repositories\/:workspace\/:repo_slug\/components\/:component_id","\/repositories\/tonics-workspace\/tonics-repo_slug\/default-reviewers":"\/repositories\/:workspace\/:repo_slug\/default-reviewers","\/repositories\/tonics-workspace\/tonics-repo_slug\/default-reviewers\/tonics-target_username":"\/repositories\/:workspace\/:repo_slug\/default-reviewers\/:target_username","\/repositories\/tonics-workspace\/tonics-repo_slug\/deploy-keys":"\/repositories\/:workspace\/:repo_slug\/deploy-keys","\/repositories\/tonics-workspace\/tonics-repo_slug\/deploy-keys\/tonics-key_id":"\/repositories\/:workspace\/:repo_slug\/deploy-keys\/:key_id","\/repositories\/tonics-workspace\/tonics-repo_slug\/deployments":"\/repositories\/:workspace\/:repo_slug\/deployments","\/repositories\/tonics-workspace\/tonics-repo_slug\/deployments\/tonics-deployment_uuid":"\/repositories\/:workspace\/:repo_slug\/deployments\/:deployment_uuid","\/repositories\/tonics-workspace\/tonics-repo_slug\/deployments_config\/environments\/tonics-environment_uuid\/variables":"\/repositories\/:workspace\/:repo_slug\/deployments_config\/environments\/:environment_uuid\/variables","\/repositories\/tonics-workspace\/tonics-repo_slug\/deployments_config\/environments\/tonics-environment_uuid\/variables\/tonics-variable_uuid":"\/repositories\/:workspace\/:repo_slug\/deployments_config\/environments\/:environment_uuid\/variables\/:variable_uuid","\/repositories\/tonics-workspace\/tonics-repo_slug\/diff\/tonics-spec":"\/repositories\/:workspace\/:repo_slug\/diff\/:spec","\/repositories\/tonics-workspace\/tonics-repo_slug\/diffstat\/tonics-spec":"\/repositories\/:workspace\/:repo_slug\/diffstat\/:spec","\/repositories\/tonics-workspace\/tonics-repo_slug\/downloads":"\/repositories\/:workspace\/:repo_slug\/downloads","\/repositories\/tonics-workspace\/tonics-repo_slug\/downloads\/tonics-filename":"\/repositories\/:workspace\/:repo_slug\/downloads\/:filename","\/repositories\/tonics-workspace\/tonics-repo_slug\/environments":"\/repositories\/:workspace\/:repo_slug\/environments","\/repositories\/tonics-workspace\/tonics-repo_slug\/environments\/tonics-environment_uuid":"\/repositories\/:workspace\/:repo_slug\/environments\/:environment_uuid","\/repositories\/tonics-workspace\/tonics-repo_slug\/environments\/tonics-environment_uuid\/changes":"\/repositories\/:workspace\/:repo_slug\/environments\/:environment_uuid\/changes","\/repositories\/tonics-workspace\/tonics-repo_slug\/filehistory\/tonics-commit\/tonics-path":"\/repositories\/:workspace\/:repo_slug\/filehistory\/:commit\/:path","\/repositories\/tonics-workspace\/tonics-repo_slug\/forks":"\/repositories\/:workspace\/:repo_slug\/forks","\/repositories\/tonics-workspace\/tonics-repo_slug\/hooks":"\/repositories\/:workspace\/:repo_slug\/hooks","\/repositories\/tonics-workspace\/tonics-repo_slug\/hooks\/tonics-uid":"\/repositories\/:workspace\/:repo_slug\/hooks\/:uid","\/repositories\/tonics-workspace\/tonics-repo_slug\/issues":"\/repositories\/:workspace\/:repo_slug\/issues","\/repositories\/tonics-workspace\/tonics-repo_slug\/issues\/export":"\/repositories\/:workspace\/:repo_slug\/issues\/export","\/repositories\/tonics-workspace\/tonics-repo_slug\/issues\/export\/tonics-repo_name-issues-tonics-task_id.zip":"\/repositories\/:workspace\/:repo_slug\/issues\/export\/:repo_name-issues-task_id.zip","\/repositories\/tonics-workspace\/tonics-repo_slug\/issues\/import":"\/repositories\/:workspace\/:repo_slug\/issues\/import","\/repositories\/tonics-workspace\/tonics-repo_slug\/issues\/tonics-issue_id":"\/repositories\/:workspace\/:repo_slug\/issues\/:issue_id","\/repositories\/tonics-workspace\/tonics-repo_slug\/issues\/tonics-issue_id\/attachments":"\/repositories\/:workspace\/:repo_slug\/issues\/:issue_id\/attachments","\/repositories\/tonics-workspace\/tonics-repo_slug\/issues\/tonics-issue_id\/attachments\/tonics-path":"\/repositories\/:workspace\/:repo_slug\/issues\/:issue_id\/attachments\/:path","\/repositories\/tonics-workspace\/tonics-repo_slug\/issues\/tonics-issue_id\/changes":"\/repositories\/:workspace\/:repo_slug\/issues\/:issue_id\/changes","\/repositories\/tonics-workspace\/tonics-repo_slug\/issues\/tonics-issue_id\/changes\/tonics-change_id":"\/repositories\/:workspace\/:repo_slug\/issues\/:issue_id\/changes\/:change_id","\/repositories\/tonics-workspace\/tonics-repo_slug\/issues\/tonics-issue_id\/comments":"\/repositories\/:workspace\/:repo_slug\/issues\/:issue_id\/comments","\/repositories\/tonics-workspace\/tonics-repo_slug\/issues\/tonics-issue_id\/comments\/tonics-comment_id":"\/repositories\/:workspace\/:repo_slug\/issues\/:issue_id\/comments\/:comment_id","\/repositories\/tonics-workspace\/tonics-repo_slug\/issues\/tonics-issue_id\/vote":"\/repositories\/:workspace\/:repo_slug\/issues\/:issue_id\/vote","\/repositories\/tonics-workspace\/tonics-repo_slug\/issues\/tonics-issue_id\/watch":"\/repositories\/:workspace\/:repo_slug\/issues\/:issue_id\/watch","\/repositories\/tonics-workspace\/tonics-repo_slug\/merge-base\/tonics-revspec":"\/repositories\/:workspace\/:repo_slug\/merge-base\/:revspec","\/repositories\/tonics-workspace\/tonics-repo_slug\/milestones":"\/repositories\/:workspace\/:repo_slug\/milestones","\/repositories\/tonics-workspace\/tonics-repo_slug\/milestones\/tonics-milestone_id":"\/repositories\/:workspace\/:repo_slug\/milestones\/:milestone_id","\/repositories\/tonics-workspace\/tonics-repo_slug\/patch\/tonics-spec":"\/repositories\/:workspace\/:repo_slug\/patch\/:spec","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines-config\/caches":"\/repositories\/:workspace\/:repo_slug\/pipelines-config\/caches","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines-config\/caches\/tonics-cache_uuid":"\/repositories\/:workspace\/:repo_slug\/pipelines-config\/caches\/:cache_uuid","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines-config\/caches\/tonics-cache_uuid\/content-uri":"\/repositories\/:workspace\/:repo_slug\/pipelines-config\/caches\/:cache_uuid\/content-uri","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines":"\/repositories\/:workspace\/:repo_slug\/pipelines","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines\/tonics-pipeline_uuid":"\/repositories\/:workspace\/:repo_slug\/pipelines\/:pipeline_uuid","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines\/tonics-pipeline_uuid\/steps":"\/repositories\/:workspace\/:repo_slug\/pipelines\/:pipeline_uuid\/steps","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines\/tonics-pipeline_uuid\/steps\/tonics-step_uuid":"\/repositories\/:workspace\/:repo_slug\/pipelines\/:pipeline_uuid\/steps\/:step_uuid","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines\/tonics-pipeline_uuid\/steps\/tonics-step_uuid\/log":"\/repositories\/:workspace\/:repo_slug\/pipelines\/:pipeline_uuid\/steps\/:step_uuid\/log","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines\/tonics-pipeline_uuid\/steps\/tonics-step_uuid\/logs\/tonics-log_uuid":"\/repositories\/:workspace\/:repo_slug\/pipelines\/:pipeline_uuid\/steps\/:step_uuid\/logs\/:log_uuid","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines\/tonics-pipeline_uuid\/steps\/tonics-step_uuid\/test_reports":"\/repositories\/:workspace\/:repo_slug\/pipelines\/:pipeline_uuid\/steps\/:step_uuid\/test_reports","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines\/tonics-pipeline_uuid\/steps\/tonics-step_uuid\/test_reports\/test_cases":"\/repositories\/:workspace\/:repo_slug\/pipelines\/:pipeline_uuid\/steps\/:step_uuid\/test_reports\/test_cases","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines\/tonics-pipeline_uuid\/steps\/tonics-step_uuid\/test_reports\/test_cases\/tonics-test_case_uuid\/test_case_reasons":"\/repositories\/:workspace\/:repo_slug\/pipelines\/:pipeline_uuid\/steps\/:step_uuid\/test_reports\/test_cases\/:test_case_uuid\/test_case_reasons","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines\/tonics-pipeline_uuid\/stopPipeline":"\/repositories\/:workspace\/:repo_slug\/pipelines\/:pipeline_uuid\/stopPipeline","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines_config":"\/repositories\/:workspace\/:repo_slug\/pipelines_config","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines_config\/build_number":"\/repositories\/:workspace\/:repo_slug\/pipelines_config\/build_number","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines_config\/schedules":"\/repositories\/:workspace\/:repo_slug\/pipelines_config\/schedules","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines_config\/schedules\/tonics-schedule_uuid":"\/repositories\/:workspace\/:repo_slug\/pipelines_config\/schedules\/:schedule_uuid","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines_config\/schedules\/tonics-schedule_uuid\/executions":"\/repositories\/:workspace\/:repo_slug\/pipelines_config\/schedules\/:schedule_uuid\/executions","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines_config\/ssh\/key_pair":"\/repositories\/:workspace\/:repo_slug\/pipelines_config\/ssh\/key_pair","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines_config\/ssh\/known_hosts":"\/repositories\/:workspace\/:repo_slug\/pipelines_config\/ssh\/known_hosts","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines_config\/ssh\/known_hosts\/tonics-known_host_uuid":"\/repositories\/:workspace\/:repo_slug\/pipelines_config\/ssh\/known_hosts\/:known_host_uuid","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines_config\/variables":"\/repositories\/:workspace\/:repo_slug\/pipelines_config\/variables","\/repositories\/tonics-workspace\/tonics-repo_slug\/pipelines_config\/variables\/tonics-variable_uuid":"\/repositories\/:workspace\/:repo_slug\/pipelines_config\/variables\/:variable_uuid","\/repositories\/tonics-workspace\/tonics-repo_slug\/properties\/tonics-app_key\/tonics-property_name":"\/repositories\/:workspace\/:repo_slug\/properties\/:app_key\/:property_name","\/repositories\/tonics-workspace\/tonics-repo_slug\/pullrequests":"\/repositories\/:workspace\/:repo_slug\/pullrequests","\/repositories\/tonics-workspace\/tonics-repo_slug\/pullrequests\/activity":"\/repositories\/:workspace\/:repo_slug\/pullrequests\/activity","\/repositories\/tonics-workspace\/tonics-repo_slug\/pullrequests\/tonics-pull_request_id":"\/repositories\/:workspace\/:repo_slug\/pullrequests\/:pull_request_id","\/repositories\/tonics-workspace\/tonics-repo_slug\/pullrequests\/tonics-pull_request_id\/activity":"\/repositories\/:workspace\/:repo_slug\/pullrequests\/:pull_request_id\/activity","\/repositories\/tonics-workspace\/tonics-repo_slug\/pullrequests\/tonics-pull_request_id\/approve":"\/repositories\/:workspace\/:repo_slug\/pullrequests\/:pull_request_id\/approve","\/repositories\/tonics-workspace\/tonics-repo_slug\/pullrequests\/tonics-pull_request_id\/comments":"\/repositories\/:workspace\/:repo_slug\/pullrequests\/:pull_request_id\/comments","\/repositories\/tonics-workspace\/tonics-repo_slug\/pullrequests\/tonics-pull_request_id\/comments\/tonics-comment_id":"\/repositories\/:workspace\/:repo_slug\/pullrequests\/:pull_request_id\/comments\/:comment_id","\/repositories\/tonics-workspace\/tonics-repo_slug\/pullrequests\/tonics-pull_request_id\/commits":"\/repositories\/:workspace\/:repo_slug\/pullrequests\/:pull_request_id\/commits","\/repositories\/tonics-workspace\/tonics-repo_slug\/pullrequests\/tonics-pull_request_id\/decline":"\/repositories\/:workspace\/:repo_slug\/pullrequests\/:pull_request_id\/decline","\/repositories\/tonics-workspace\/tonics-repo_slug\/pullrequests\/tonics-pull_request_id\/diff":"\/repositories\/:workspace\/:repo_slug\/pullrequests\/:pull_request_id\/diff","\/repositories\/tonics-workspace\/tonics-repo_slug\/pullrequests\/tonics-pull_request_id\/diffstat":"\/repositories\/:workspace\/:repo_slug\/pullrequests\/:pull_request_id\/diffstat","\/repositories\/tonics-workspace\/tonics-repo_slug\/pullrequests\/tonics-pull_request_id\/merge":"\/repositories\/:workspace\/:repo_slug\/pullrequests\/:pull_request_id\/merge","\/repositories\/tonics-workspace\/tonics-repo_slug\/pullrequests\/tonics-pull_request_id\/merge\/task-status\/tonics-task_id":"\/repositories\/:workspace\/:repo_slug\/pullrequests\/:pull_request_id\/merge\/task-status\/:task_id","\/repositories\/tonics-workspace\/tonics-repo_slug\/pullrequests\/tonics-pull_request_id\/patch":"\/repositories\/:workspace\/:repo_slug\/pullrequests\/:pull_request_id\/patch","\/repositories\/tonics-workspace\/tonics-repo_slug\/pullrequests\/tonics-pull_request_id\/request-changes":"\/repositories\/:workspace\/:repo_slug\/pullrequests\/:pull_request_id\/request-changes","\/repositories\/tonics-workspace\/tonics-repo_slug\/pullrequests\/tonics-pull_request_id\/statuses":"\/repositories\/:workspace\/:repo_slug\/pullrequests\/:pull_request_id\/statuses","\/repositories\/tonics-workspace\/tonics-repo_slug\/pullrequests\/tonics-pullrequest_id\/properties\/tonics-app_key\/tonics-property_name":"\/repositories\/:workspace\/:repo_slug\/pullrequests\/:pullrequest_id\/properties\/:app_key\/:property_name","\/repositories\/tonics-workspace\/tonics-repo_slug\/refs":"\/repositories\/:workspace\/:repo_slug\/refs","\/repositories\/tonics-workspace\/tonics-repo_slug\/refs\/branches":"\/repositories\/:workspace\/:repo_slug\/refs\/branches","\/repositories\/tonics-workspace\/tonics-repo_slug\/refs\/branches\/tonics-name":"\/repositories\/:workspace\/:repo_slug\/refs\/branches\/:name","\/repositories\/tonics-workspace\/tonics-repo_slug\/refs\/tags":"\/repositories\/:workspace\/:repo_slug\/refs\/tags","\/repositories\/tonics-workspace\/tonics-repo_slug\/refs\/tags\/tonics-name":"\/repositories\/:workspace\/:repo_slug\/refs\/tags\/:name","\/repositories\/tonics-workspace\/tonics-repo_slug\/src":"\/repositories\/:workspace\/:repo_slug\/src","\/repositories\/tonics-workspace\/tonics-repo_slug\/src\/tonics-commit\/tonics-path":"\/repositories\/:workspace\/:repo_slug\/src\/:commit\/:path","\/repositories\/tonics-workspace\/tonics-repo_slug\/versions":"\/repositories\/:workspace\/:repo_slug\/versions","\/repositories\/tonics-workspace\/tonics-repo_slug\/versions\/tonics-version_id":"\/repositories\/:workspace\/:repo_slug\/versions\/:version_id","\/repositories\/tonics-workspace\/tonics-repo_slug\/watchers":"\/repositories\/:workspace\/:repo_slug\/watchers","\/snippets":"\/snippets","\/snippets\/tonics-workspace":"\/snippets\/:workspace","\/snippets\/tonics-workspace\/tonics-encoded_id":"\/snippets\/:workspace\/:encoded_id","\/snippets\/tonics-workspace\/tonics-encoded_id\/comments":"\/snippets\/:workspace\/:encoded_id\/comments","\/snippets\/tonics-workspace\/tonics-encoded_id\/comments\/tonics-comment_id":"\/snippets\/:workspace\/:encoded_id\/comments\/:comment_id","\/snippets\/tonics-workspace\/tonics-encoded_id\/commits":"\/snippets\/:workspace\/:encoded_id\/commits","\/snippets\/tonics-workspace\/tonics-encoded_id\/commits\/tonics-revision":"\/snippets\/:workspace\/:encoded_id\/commits\/:revision","\/snippets\/tonics-workspace\/tonics-encoded_id\/files\/tonics-path":"\/snippets\/:workspace\/:encoded_id\/files\/:path","\/snippets\/tonics-workspace\/tonics-encoded_id\/watch":"\/snippets\/:workspace\/:encoded_id\/watch","\/snippets\/tonics-workspace\/tonics-encoded_id\/watchers":"\/snippets\/:workspace\/:encoded_id\/watchers","\/snippets\/tonics-workspace\/tonics-encoded_id\/tonics-node_id":"\/snippets\/:workspace\/:encoded_id\/:node_id","\/snippets\/tonics-workspace\/tonics-encoded_id\/tonics-node_id\/files\/tonics-path":"\/snippets\/:workspace\/:encoded_id\/:node_id\/files\/:path","\/snippets\/tonics-workspace\/tonics-encoded_id\/tonics-revision\/diff":"\/snippets\/:workspace\/:encoded_id\/:revision\/diff","\/snippets\/tonics-workspace\/tonics-encoded_id\/tonics-revision\/patch":"\/snippets\/:workspace\/:encoded_id\/:revision\/patch","\/teams":"\/teams","\/teams\/tonics-username":"\/teams\/:username","\/teams\/tonics-username\/followers":"\/teams\/:username\/followers","\/teams\/tonics-username\/following":"\/teams\/:username\/following","\/teams\/tonics-username\/members":"\/teams\/:username\/members","\/teams\/tonics-username\/permissions":"\/teams\/:username\/permissions","\/teams\/tonics-username\/permissions\/repositories":"\/teams\/:username\/permissions\/repositories","\/teams\/tonics-username\/permissions\/repositories\/tonics-repo_slug":"\/teams\/:username\/permissions\/repositories\/:repo_slug","\/teams\/tonics-username\/pipelines_config\/variables":"\/teams\/:username\/pipelines_config\/variables","\/teams\/tonics-username\/pipelines_config\/variables\/tonics-variable_uuid":"\/teams\/:username\/pipelines_config\/variables\/:variable_uuid","\/teams\/tonics-username\/projects":"\/teams\/:username\/projects","\/teams\/tonics-username\/projects\/tonics-project_key":"\/teams\/:username\/projects\/:project_key","\/teams\/tonics-username\/search\/code":"\/teams\/:username\/search\/code","\/teams\/tonics-workspace\/repositories":"\/teams\/:workspace\/repositories","\/user":"\/user","\/user\/emails":"\/user\/emails","\/user\/emails\/tonics-email":"\/user\/emails\/:email","\/user\/permissions\/repositories":"\/user\/permissions\/repositories","\/user\/permissions\/teams":"\/user\/permissions\/teams","\/user\/permissions\/workspaces":"\/user\/permissions\/workspaces","\/users\/tonics-selected_user":"\/users\/:selected_user","\/users\/tonics-selected_user\/pipelines_config\/variables":"\/users\/:selected_user\/pipelines_config\/variables","\/users\/tonics-selected_user\/pipelines_config\/variables\/tonics-variable_uuid":"\/users\/:selected_user\/pipelines_config\/variables\/:variable_uuid","\/users\/tonics-selected_user\/properties\/tonics-app_key\/tonics-property_name":"\/users\/:selected_user\/properties\/:app_key\/:property_name","\/users\/tonics-selected_user\/search\/code":"\/users\/:selected_user\/search\/code","\/users\/tonics-selected_user\/ssh-keys":"\/users\/:selected_user\/ssh-keys","\/users\/tonics-selected_user\/ssh-keys\/tonics-key_id":"\/users\/:selected_user\/ssh-keys\/:key_id","\/users\/tonics-username\/members":"\/users\/:username\/members","\/users\/tonics-workspace\/repositories":"\/users\/:workspace\/repositories","\/workspaces":"\/workspaces","\/workspaces\/tonics-workspace":"\/workspaces\/:workspace","\/workspaces\/tonics-workspace\/hooks":"\/workspaces\/:workspace\/hooks","\/workspaces\/tonics-workspace\/hooks\/tonics-uid":"\/workspaces\/:workspace\/hooks\/:uid","\/workspaces\/tonics-workspace\/members":"\/workspaces\/:workspace\/members","\/workspaces\/tonics-workspace\/members\/tonics-member":"\/workspaces\/:workspace\/members\/:member","\/workspaces\/tonics-workspace\/permissions":"\/workspaces\/:workspace\/permissions","\/workspaces\/tonics-workspace\/permissions\/repositories":"\/workspaces\/:workspace\/permissions\/repositories","\/workspaces\/tonics-workspace\/permissions\/repositories\/tonics-repo_slug":"\/workspaces\/:workspace\/permissions\/repositories\/:repo_slug","\/workspaces\/tonics-workspace\/pipelines-config\/identity\/oidc\/keys.json":"\/workspaces\/:workspace\/pipelines-config\/identity\/oidc\/keys.json","\/workspaces\/tonics-workspace\/pipelines-config\/variables":"\/workspaces\/:workspace\/pipelines-config\/variables","\/workspaces\/tonics-workspace\/pipelines-config\/variables\/tonics-variable_uuid":"\/workspaces\/:workspace\/pipelines-config\/variables\/:variable_uuid","\/workspaces\/tonics-workspace\/projects":"\/workspaces\/:workspace\/projects","\/workspaces\/tonics-workspace\/projects\/tonics-project_key":"\/workspaces\/:workspace\/projects\/:project_key","\/workspaces\/tonics-workspace\/search\/code":"\/workspaces\/:workspace\/search\/code"}
JSO, true
);
$url = array_rand($urls);
printBenchmarks(
[
[
'Name' => 'TonicsRouter',
'Time' => calculateAverageExecutionTime(function () use ($url, $treeGenerator){
$startTonics = microtime(true);
$treeGenerator->match($url, false);
return microtime(true) - $startTonics;
})
],
[
'Name' => 'FastRoute',
'Time' => calculateAverageExecutionTime(function () use ($url, $dispatcher){
$start = microtime(true);
$dispatcher->dispatch('GET', $url);
return microtime(true) - $start;
})
],
[
'Name' => 'SymfonyRouting',
'Time' => calculateAverageExecutionTime(function () use ($url, $compiled){
$request = new Request();
$request = $request->create($url);
$requestContext = new RequestContext();
$start = microtime(true);
$matcher = new CompiledUrlMatcher(
$compiled, $requestContext->fromRequest($request)
);
$matcher->matchRequest($request);
return microtime(true) - $start;
})
]
], $url
);
}
try {
benchmarkRandom();
} catch (Throwable $exception){
echo $exception->getMessage();
}
exit();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment