CINXE.COM
README.md 路 main 路 Raimund Hook / stingrayza 路 GitLab
<!DOCTYPE html> <html class="gl-light ui-neutral with-top-bar with-header " lang="en"> <head prefix="og: http://ogp.me/ns#"> <meta charset="utf-8"> <meta content="IE=edge" http-equiv="X-UA-Compatible"> <meta content="width=device-width, initial-scale=1" name="viewport"> <title>README.md 路 main 路 Raimund Hook / stingrayza 路 GitLab</title> <script nonce="206ObPZ0GvldeZUwSXW1xQ=="> //<![CDATA[ window.gon={};gon.math_rendering_limits_enabled=true;gon.features={"asyncSidebarCounts":true,"inlineBlame":false,"upgradePdfjs":true};gon.licensed_features={"fileLocks":true,"remoteDevelopment":true}; //]]> </script> <script nonce="206ObPZ0GvldeZUwSXW1xQ=="> //<![CDATA[ var gl = window.gl || {}; gl.startup_calls = {"/stingrayza/stingrayza/-/blob/main/README.md?format=json\u0026viewer=rich":{}}; gl.startup_graphql_calls = [{"query":"query getBlobInfo(\n $projectPath: ID!\n $filePath: [String!]!\n $ref: String!\n $refType: RefType\n $shouldFetchRawText: Boolean!\n) {\n project(fullPath: $projectPath) {\n __typename\n id\n repository {\n __typename\n empty\n blobs(paths: $filePath, ref: $ref, refType: $refType) {\n __typename\n nodes {\n __typename\n id\n webPath\n name\n size\n rawSize\n rawTextBlob @include(if: $shouldFetchRawText)\n fileType\n language\n path\n blamePath\n editBlobPath\n gitpodBlobUrl\n ideEditPath\n forkAndEditPath\n ideForkAndEditPath\n codeNavigationPath\n projectBlobPathRoot\n forkAndViewPath\n environmentFormattedExternalUrl\n environmentExternalUrlForRouteMap\n canModifyBlob\n canModifyBlobWithWebIde\n canCurrentUserPushToBranch\n archived\n storedExternally\n externalStorage\n externalStorageUrl\n rawPath\n replacePath\n pipelineEditorPath\n simpleViewer {\n fileType\n tooLarge\n type\n renderError\n }\n richViewer {\n fileType\n tooLarge\n type\n renderError\n }\n }\n }\n }\n }\n}\n","variables":{"projectPath":"stingrayza/stingrayza","ref":"main","refType":null,"filePath":"README.md","shouldFetchRawText":false}}]; if (gl.startup_calls && window.fetch) { Object.keys(gl.startup_calls).forEach(apiCall => { gl.startup_calls[apiCall] = { fetchCall: fetch(apiCall, { // Emulate XHR for Rails AJAX request checks headers: { 'X-Requested-With': 'XMLHttpRequest' }, // fetch won鈥檛 send cookies in older browsers, unless you set the credentials init option. // We set to `same-origin` which is default value in modern browsers. // See https://github.com/whatwg/fetch/pull/585 for more information. credentials: 'same-origin' }) }; }); } if (gl.startup_graphql_calls && window.fetch) { const headers = {"X-CSRF-Token":"EM0uksqwRx2gvUQDOmPjKYNRtsBrXc7FA9PhuGRrcvbLs8DHwgVSHzlje8NP0jpqkmPiZJDd5dPqmageI9knuw","x-gitlab-feature-category":"source_code_management"}; const url = `https://gitlab.com/api/graphql` const opts = { method: "POST", headers: { "Content-Type": "application/json", ...headers, } }; gl.startup_graphql_calls = gl.startup_graphql_calls.map(call => ({ ...call, fetchCall: fetch(url, { ...opts, credentials: 'same-origin', body: JSON.stringify(call) }) })) } //]]> </script> <link rel="prefetch" href="/assets/webpack/monaco.f189f150.chunk.js"> <link rel="stylesheet" href="/assets/application-cf50ed9fdabbe5edc177ab99ddd2e34d929321bc2a28790cd0855b80d2f91959.css" /> <link rel="stylesheet" href="/assets/page_bundles/tree-1290ef28cdf5bf9a263be300651f92c985782ad16284daf5c07980e6117d6324.css" /><link rel="stylesheet" href="/assets/page_bundles/projects-7cb4d7393743b9262faff68791a75d2ae49f8411fbcb2ca190bb48f6e44b4b6e.css" /><link rel="stylesheet" href="/assets/page_bundles/commit_description-1e2cba4dda3c7b30dd84924809020c569f1308dea51520fe1dd5d4ce31403195.css" /><link rel="stylesheet" href="/assets/page_bundles/work_items-cbc6a2e1633c4e847a617e35cc4833b85b80816db688d3d6dd3cd31d4251bc53.css" /><link rel="stylesheet" href="/assets/page_bundles/notes_shared-7e727ab1e91b421915feadeb04a1b9d57213cb1b2f8f56f4d894b34d6b42e9b3.css" /> <link rel="stylesheet" href="/assets/application_utilities-73b9a1c83703ccfccd0e1e418c7d8dc606fcac533fa38b9fa86792f098db0f9a.css" /> <link rel="stylesheet" href="/assets/tailwind-9314cc7d2d98343a78eb1a2cfa05dae52ad8af7a588c79865b44258122d4b9b5.css" /> <link rel="stylesheet" href="/assets/fonts-fae5d3f79948bd85f18b6513a025f863b19636e85b09a1492907eb4b1bb0557b.css" /> <link rel="stylesheet" href="/assets/highlight/themes/white-5ffbb706faebead681b01c8b52e92c6c0d35ad5b1c11d39012c90bcaf7892ca8.css" /> <script src="/assets/webpack/runtime.36ceaf12.bundle.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/main.5ff9b3f0.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/tracker.f516f6a0.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/analytics.cc138df3.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script nonce="206ObPZ0GvldeZUwSXW1xQ=="> //<![CDATA[ window.snowplowOptions = {"namespace":"gl","hostname":"snowplow.trx.gitlab.net","cookieDomain":".gitlab.com","appId":"gitlab","formTracking":true,"linkClickTracking":true} gl = window.gl || {}; gl.snowplowStandardContext = {"schema":"iglu:com.gitlab/gitlab_standard/jsonschema/1-1-1","data":{"environment":"production","source":"gitlab-rails","correlation_id":"01JDREHRNMMT4R69R18HBHPH3B","plan":"ultimate","extra":{},"user_id":null,"global_user_id":null,"is_gitlab_team_member":null,"namespace_id":2588354,"project_id":40152566,"feature_enabled_by_namespace_ids":null,"realm":"saas","instance_id":"ea8bf810-1d6f-4a6a-b4fd-93e8cbd8b57f","host_name":"gitlab-webservice-web-5ddc466cf4-2sltk","instance_version":"17.7.0","context_generated_at":"2024-11-28T03:55:31.103Z"}} gl.snowplowPseudonymizedPageUrl = "https://gitlab.com/namespace2588354/project40152566/-/blob/:repository_path"; gl.maskedDefaultReferrerUrl = null; gl.ga4MeasurementId = 'G-ENFH3X7M5Y'; //]]> </script> <link rel="preload" href="/assets/application_utilities-73b9a1c83703ccfccd0e1e418c7d8dc606fcac533fa38b9fa86792f098db0f9a.css" as="style" type="text/css" nonce="ywgvD/tr/sLr21IsjlCxOA=="> <link rel="preload" href="/assets/application-cf50ed9fdabbe5edc177ab99ddd2e34d929321bc2a28790cd0855b80d2f91959.css" as="style" type="text/css" nonce="ywgvD/tr/sLr21IsjlCxOA=="> <link rel="preload" href="/assets/highlight/themes/white-5ffbb706faebead681b01c8b52e92c6c0d35ad5b1c11d39012c90bcaf7892ca8.css" as="style" type="text/css" nonce="ywgvD/tr/sLr21IsjlCxOA=="> <link crossorigin="" href="https://snowplow.trx.gitlab.net" rel="preconnect"> <link as="font" crossorigin="" href="/assets/gitlab-sans/GitLabSans-1e0a5107ea3bbd4be93e8ad2c503467e43166cd37e4293570b490e0812ede98b.woff2" rel="preload"> <link as="font" crossorigin="" href="/assets/gitlab-sans/GitLabSans-Italic-38eaf1a569a54ab28c58b92a4a8de3afb96b6ebc250cf372003a7b38151848cc.woff2" rel="preload"> <link as="font" crossorigin="" href="/assets/gitlab-mono/GitLabMono-08d2c5e8ff8fd3d2d6ec55bc7713380f8981c35f9d2df14e12b835464d6e8f23.woff2" rel="preload"> <link as="font" crossorigin="" href="/assets/gitlab-mono/GitLabMono-Italic-38e58d8df29485a20c550da1d0111e2c2169f6dcbcf894f2cd3afbdd97bcc588.woff2" rel="preload"> <link rel="preload" href="/assets/fonts-fae5d3f79948bd85f18b6513a025f863b19636e85b09a1492907eb4b1bb0557b.css" as="style" type="text/css" nonce="ywgvD/tr/sLr21IsjlCxOA=="> <script src="/assets/webpack/sentry.806e469a.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/10.627b621a.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/12.02747e09.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/14.cac0f30e.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/commons-pages.groups.analytics.dashboards-pages.groups.harbor.repositories-pages.groups.iteration_ca-b07ae190.c914cf7a.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/commons-pages.groups.new-pages.import.gitlab_projects.new-pages.import.manifest.new-pages.projects.n-44c6c18e.f71a354c.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/commons-pages.search.show-super_sidebar.cc9aea19.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/super_sidebar.5c18f377.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/commons-pages.projects-pages.projects.activity-pages.projects.alert_management.details-pages.project-bce54798.10aa3488.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/commons-pages.groups.packages-pages.groups.registry.repositories-pages.groups.security.policies.edit-429ebfda.2dd12550.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/117.e6b767a7.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/commons-pages.projects.blob.show-pages.projects.security.vulnerabilities.show-pages.projects.show-pa-736464ce.823d63cb.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/commons-pages.projects.blob.show-pages.projects.show-pages.projects.snippets.show-pages.projects.tre-c684fcf6.5533de5d.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/136.6e31aa7c.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/135.71141af6.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/commons-pages.projects.blob.show-pages.projects.commit.show-pages.projects.merge_requests.rapid_diff-e17e687c.4a4c7e32.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/commons-pages.projects.blob.show-pages.projects.show-pages.projects.tree.show.aa55456e.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/commons-pages.projects.blob.show-pages.projects.tree.show-treeList.637fc1fe.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <script src="/assets/webpack/pages.projects.blob.show.a2dc22c1.chunk.js" defer="defer" nonce="206ObPZ0GvldeZUwSXW1xQ=="></script> <meta content="object" property="og:type"> <meta content="GitLab" property="og:site_name"> <meta content="README.md 路 main 路 Raimund Hook / stingrayza 路 GitLab" property="og:title"> <meta content="GitLab.com" property="og:description"> <meta content="https://gitlab.com/assets/twitter_card-570ddb06edf56a2312253c5872489847a0f385112ddbcd71ccfa1570febab5d2.jpg" property="og:image"> <meta content="64" property="og:image:width"> <meta content="64" property="og:image:height"> <meta content="https://gitlab.com/stingrayza/stingrayza/-/blob/main/README.md" property="og:url"> <meta content="summary" property="twitter:card"> <meta content="README.md 路 main 路 Raimund Hook / stingrayza 路 GitLab" property="twitter:title"> <meta content="GitLab.com" property="twitter:description"> <meta content="https://gitlab.com/assets/twitter_card-570ddb06edf56a2312253c5872489847a0f385112ddbcd71ccfa1570febab5d2.jpg" property="twitter:image"> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="UTJv5HyusT9ojMFIzdT0cFd-xx5l15YXWwz0oOIIRJOKTIGxdBukPfFS_oi4ZS0zRkyTup5XvQGyRr0GpboR3g" /> <meta name="csp-nonce" content="206ObPZ0GvldeZUwSXW1xQ==" /> <meta name="action-cable-url" content="/-/cable" /> <link href="/-/manifest.json" rel="manifest"> <link rel="icon" type="image/png" href="/assets/favicon-72a2cad5025aa931d6ea56c3201d1f18e68a8cd39788c7c80d5b2b82aa5143ef.png" id="favicon" data-original-href="/assets/favicon-72a2cad5025aa931d6ea56c3201d1f18e68a8cd39788c7c80d5b2b82aa5143ef.png" /> <link rel="apple-touch-icon" type="image/x-icon" href="/assets/apple-touch-icon-b049d4bc0dd9626f31db825d61880737befc7835982586d015bded10b4435460.png" /> <link href="/search/opensearch.xml" rel="search" title="Search GitLab" type="application/opensearchdescription+xml"> <meta content="GitLab.com" name="description"> <meta content="#ececef" name="theme-color"> </head> <body class="tab-width-8 gl-browser-ie gl-platform-windows" data-find-file="/stingrayza/stingrayza/-/find_file/main" data-namespace-id="2588354" data-page="projects:blob:show" data-page-type-id="main/README.md" data-project="stingrayza" data-project-full-path="stingrayza/stingrayza" data-project-id="40152566"> <script nonce="206ObPZ0GvldeZUwSXW1xQ=="> //<![CDATA[ gl = window.gl || {}; gl.client = {"isIe":true,"isWindows":true}; //]]> </script> <header class="header-logged-out" data-testid="navbar"> <a class="gl-sr-only gl-accessibility" href="#content-body">Skip to content</a> <div class="container-fluid"> <nav aria-label="Explore GitLab" class="header-logged-out-nav gl-flex gl-gap-3 gl-justify-between"> <div class="gl-flex gl-items-center gl-gap-1"> <span class="gl-sr-only">GitLab</span> <a title="Homepage" id="logo" class="header-logged-out-logo has-tooltip" aria-label="Homepage" data-track-label="main_navigation" data-track-action="click_gitlab_logo_link" data-track-property="navigation_top" href="/"><svg aria-hidden="true" role="img" class="tanuki-logo" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path class="tanuki-shape tanuki" d="m24.507 9.5-.034-.09L21.082.562a.896.896 0 0 0-1.694.091l-2.29 7.01H7.825L5.535.653a.898.898 0 0 0-1.694-.09L.451 9.411.416 9.5a6.297 6.297 0 0 0 2.09 7.278l.012.01.03.022 5.16 3.867 2.56 1.935 1.554 1.176a1.051 1.051 0 0 0 1.268 0l1.555-1.176 2.56-1.935 5.197-3.89.014-.01A6.297 6.297 0 0 0 24.507 9.5Z" fill="#E24329"/> <path class="tanuki-shape right-cheek" d="m24.507 9.5-.034-.09a11.44 11.44 0 0 0-4.56 2.051l-7.447 5.632 4.742 3.584 5.197-3.89.014-.01A6.297 6.297 0 0 0 24.507 9.5Z" fill="#FC6D26"/> <path class="tanuki-shape chin" d="m7.707 20.677 2.56 1.935 1.555 1.176a1.051 1.051 0 0 0 1.268 0l1.555-1.176 2.56-1.935-4.743-3.584-4.755 3.584Z" fill="#FCA326"/> <path class="tanuki-shape left-cheek" d="M5.01 11.461a11.43 11.43 0 0 0-4.56-2.05L.416 9.5a6.297 6.297 0 0 0 2.09 7.278l.012.01.03.022 5.16 3.867 4.745-3.584-7.444-5.632Z" fill="#FC6D26"/> </svg> </a></div> <ul class="gl-list-none gl-p-0 gl-m-0 gl-flex gl-gap-3 gl-items-center gl-grow"> <li class="header-logged-out-nav-item header-logged-out-dropdown md:gl-hidden"> <button class="header-logged-out-toggle" data-toggle="dropdown" type="button"> <span class="gl-sr-only"> Menu </span> <svg class="s16" data-testid="hamburger-icon"><use href="/assets/icons-8791a66659d025e0a4c801978c79a1fbd82db1d27d85f044a35728ea7cf0ae80.svg#hamburger"></use></svg> </button> <div class="dropdown-menu"> <ul> <li> <a href="https://about.gitlab.com/why-gitlab">Why GitLab </a></li> <li> <a href="https://about.gitlab.com/pricing">Pricing </a></li> <li> <a href="https://about.gitlab.com/sales">Contact Sales </a></li> <li> <a href="/explore">Explore</a> </li> </ul> </div> </li> <li class="header-logged-out-nav-item gl-hidden md:gl-inline-block"> <a href="https://about.gitlab.com/why-gitlab">Why GitLab </a></li> <li class="header-logged-out-nav-item gl-hidden md:gl-inline-block"> <a href="https://about.gitlab.com/pricing">Pricing </a></li> <li class="header-logged-out-nav-item gl-hidden gl-inline-block"> <a href="https://about.gitlab.com/sales">Contact Sales </a></li> <li class="header-logged-out-nav-item gl-hidden md:gl-inline-block"> <a class="" href="/explore">Explore</a> </li> </ul> <ul class="gl-list-none gl-p-0 gl-m-0 gl-flex gl-gap-3 gl-items-center gl-justify-end"> <li class="header-logged-out-nav-item"> <a href="/users/sign_in?redirect_to_referer=yes">Sign in</a> </li> <li class="header-logged-out-nav-item"> <a class="gl-button btn btn-md btn-confirm !gl-inline-flex" href="/users/sign_up"><span class="gl-button-text"> Get free trial </span> </a></li> </ul> </nav> </div> </header> <div class="layout-page page-with-super-sidebar"> <aside class="js-super-sidebar super-sidebar super-sidebar-loading" data-command-palette="{"project_files_url":"/stingrayza/stingrayza/-/files/main?format=json","project_blob_url":"/stingrayza/stingrayza/-/blob/main"}" data-force-desktop-expanded-sidebar="" data-is-saas="true" data-root-path="/" data-sidebar="{"whats_new_most_recent_release_items_count":3,"whats_new_version_digest":"9020798cd628cb28f6f12ce4e3a03126dcfed925f69da6beaee7457ed775d76b","is_logged_in":false,"context_switcher_links":[{"title":"Explore","link":"/explore","icon":"compass"}],"current_menu_items":[{"id":"project_overview","title":"stingrayza","entity_id":40152566,"link":"/stingrayza/stingrayza","link_classes":"shortcuts-project","is_active":false},{"id":"manage_menu","title":"Manage","icon":"users","avatar_shape":"rect","link":"/stingrayza/stingrayza/activity","is_active":false,"items":[{"id":"activity","title":"Activity","link":"/stingrayza/stingrayza/activity","link_classes":"shortcuts-project-activity","is_active":false},{"id":"members","title":"Members","link":"/stingrayza/stingrayza/-/project_members","is_active":false},{"id":"labels","title":"Labels","link":"/stingrayza/stingrayza/-/labels","is_active":false}],"separated":false},{"id":"plan_menu","title":"Plan","icon":"planning","avatar_shape":"rect","link":"/stingrayza/stingrayza/-/issues","is_active":false,"items":[{"id":"project_issue_list","title":"Issues","link":"/stingrayza/stingrayza/-/issues","pill_count_field":"openIssuesCount","link_classes":"shortcuts-issues has-sub-items","is_active":false},{"id":"boards","title":"Issue boards","link":"/stingrayza/stingrayza/-/boards","link_classes":"shortcuts-issue-boards","is_active":false},{"id":"milestones","title":"Milestones","link":"/stingrayza/stingrayza/-/milestones","is_active":false},{"id":"project_wiki","title":"Wiki","link":"/stingrayza/stingrayza/-/wikis/home","link_classes":"shortcuts-wiki","is_active":false},{"id":"requirements","title":"Requirements","link":"/stingrayza/stingrayza/-/requirements_management/requirements","is_active":false}],"separated":false},{"id":"code_menu","title":"Code","icon":"code","avatar_shape":"rect","link":"/stingrayza/stingrayza/-/merge_requests","is_active":true,"items":[{"id":"project_merge_request_list","title":"Merge requests","link":"/stingrayza/stingrayza/-/merge_requests","pill_count_field":"openMergeRequestsCount","link_classes":"shortcuts-merge_requests","is_active":false},{"id":"files","title":"Repository","link":"/stingrayza/stingrayza/-/tree/main","link_classes":"shortcuts-tree","is_active":true},{"id":"branches","title":"Branches","link":"/stingrayza/stingrayza/-/branches","is_active":false},{"id":"commits","title":"Commits","link":"/stingrayza/stingrayza/-/commits/main?ref_type=heads","link_classes":"shortcuts-commits","is_active":false},{"id":"tags","title":"Tags","link":"/stingrayza/stingrayza/-/tags","is_active":false},{"id":"graphs","title":"Repository graph","link":"/stingrayza/stingrayza/-/network/main?ref_type=heads","link_classes":"shortcuts-network","is_active":false},{"id":"compare","title":"Compare revisions","link":"/stingrayza/stingrayza/-/compare?from=main\u0026to=main","is_active":false},{"id":"project_snippets","title":"Snippets","link":"/stingrayza/stingrayza/-/snippets","link_classes":"shortcuts-snippets","is_active":false},{"id":"file_locks","title":"Locked files","link":"/stingrayza/stingrayza/path_locks","is_active":false}],"separated":false},{"id":"build_menu","title":"Build","icon":"rocket","avatar_shape":"rect","link":"/stingrayza/stingrayza/-/pipelines","is_active":false,"items":[{"id":"pipelines","title":"Pipelines","link":"/stingrayza/stingrayza/-/pipelines","link_classes":"shortcuts-pipelines","is_active":false},{"id":"jobs","title":"Jobs","link":"/stingrayza/stingrayza/-/jobs","link_classes":"shortcuts-builds","is_active":false},{"id":"pipeline_schedules","title":"Pipeline schedules","link":"/stingrayza/stingrayza/-/pipeline_schedules","link_classes":"shortcuts-builds","is_active":false},{"id":"test_cases","title":"Test cases","link":"/stingrayza/stingrayza/-/quality/test_cases","link_classes":"shortcuts-test-cases","is_active":false},{"id":"artifacts","title":"Artifacts","link":"/stingrayza/stingrayza/-/artifacts","link_classes":"shortcuts-builds","is_active":false}],"separated":false},{"id":"deploy_menu","title":"Deploy","icon":"deployments","avatar_shape":"rect","link":"/stingrayza/stingrayza/-/releases","is_active":false,"items":[{"id":"releases","title":"Releases","link":"/stingrayza/stingrayza/-/releases","link_classes":"shortcuts-deployments-releases","is_active":false},{"id":"packages_registry","title":"Package Registry","link":"/stingrayza/stingrayza/-/packages","link_classes":"shortcuts-container-registry","is_active":false},{"id":"container_registry","title":"Container Registry","link":"/stingrayza/stingrayza/container_registry","is_active":false},{"id":"model_registry","title":"Model registry","link":"/stingrayza/stingrayza/-/ml/models","is_active":false}],"separated":false},{"id":"operations_menu","title":"Operate","icon":"cloud-pod","avatar_shape":"rect","link":"/stingrayza/stingrayza/-/environments","is_active":false,"items":[{"id":"environments","title":"Environments","link":"/stingrayza/stingrayza/-/environments","link_classes":"shortcuts-environments","is_active":false},{"id":"infrastructure_registry","title":"Terraform modules","link":"/stingrayza/stingrayza/-/terraform_module_registry","is_active":false}],"separated":false},{"id":"monitor_menu","title":"Monitor","icon":"monitor","avatar_shape":"rect","link":"/stingrayza/stingrayza/-/incidents","is_active":false,"items":[{"id":"incidents","title":"Incidents","link":"/stingrayza/stingrayza/-/incidents","is_active":false},{"id":"service_desk","title":"Service Desk","link":"/stingrayza/stingrayza/-/issues/service_desk","is_active":false}],"separated":false},{"id":"analyze_menu","title":"Analyze","icon":"chart","avatar_shape":"rect","link":"/stingrayza/stingrayza/-/value_stream_analytics","is_active":false,"items":[{"id":"cycle_analytics","title":"Value stream analytics","link":"/stingrayza/stingrayza/-/value_stream_analytics","link_classes":"shortcuts-project-cycle-analytics","is_active":false},{"id":"contributors","title":"Contributor analytics","link":"/stingrayza/stingrayza/-/graphs/main?ref_type=heads","is_active":false},{"id":"ci_cd_analytics","title":"CI/CD analytics","link":"/stingrayza/stingrayza/-/pipelines/charts","is_active":false},{"id":"repository_analytics","title":"Repository analytics","link":"/stingrayza/stingrayza/-/graphs/main/charts","link_classes":"shortcuts-repository-charts","is_active":false},{"id":"code_review","title":"Code review analytics","link":"/stingrayza/stingrayza/-/analytics/code_reviews","is_active":false},{"id":"issues","title":"Issue analytics","link":"/stingrayza/stingrayza/-/analytics/issues_analytics","is_active":false},{"id":"insights","title":"Insights","link":"/stingrayza/stingrayza/insights/","link_classes":"shortcuts-project-insights","is_active":false},{"id":"model_experiments","title":"Model experiments","link":"/stingrayza/stingrayza/-/ml/experiments","is_active":false}],"separated":false}],"current_context_header":"Project","support_path":"https://about.gitlab.com/get-help/","docs_path":"/help/docs","display_whats_new":true,"show_version_check":null,"search":{"search_path":"/search","issues_path":"/dashboard/issues","mr_path":"/dashboard/merge_requests","autocomplete_path":"/search/autocomplete","settings_path":"/search/settings","search_context":{"project":{"id":40152566,"name":"stingrayza"},"project_metadata":{"mr_path":"/stingrayza/stingrayza/-/merge_requests","issues_path":"/stingrayza/stingrayza/-/issues"},"code_search":true,"ref":"main","scope":null,"for_snippets":null}},"panel_type":"project","shortcut_links":[{"title":"Snippets","href":"/explore/snippets","css_class":"dashboard-shortcuts-snippets"},{"title":"Groups","href":"/explore/groups","css_class":"dashboard-shortcuts-groups"},{"title":"Projects","href":"/explore/projects/starred","css_class":"dashboard-shortcuts-projects"}],"terms":"/-/users/terms"}"></aside> <div class="content-wrapper"> <div class="broadcast-wrapper"> </div> <div class="alert-wrapper alert-wrapper-top-space gl-flex gl-flex-col gl-gap-3 container-fluid container-limited"> <div class="gl-alert gl-alert-danger gl-alert-not-dismissible" role="alert"> <div class="gl-alert-icon-container"> <svg class="s16 gl-alert-icon gl-alert-icon-no-title" data-testid="error-icon"><use href="/assets/icons-8791a66659d025e0a4c801978c79a1fbd82db1d27d85f044a35728ea7cf0ae80.svg#error"></use></svg> </div> <div class="gl-alert-content" role="alert"> <div class="gl-alert-body"> GitLab may not work properly, because you are using an outdated web browser. <br> Please install a <a target="_blank" rel="noopener noreferrer" href="/help/install/requirements.md#supported-web-browsers">supported web browser</a> for a better experience. </div> </div> </div> </div> <div class="top-bar-fixed container-fluid" data-testid="top-bar"> <div class="top-bar-container gl-flex gl-items-center gl-gap-2"> <div class="gl-grow gl-basis-0 gl-flex gl-items-center gl-justify-start"> <button class="gl-button btn btn-icon btn-md btn-default btn-default-tertiary js-super-sidebar-toggle-expand super-sidebar-toggle -gl-ml-3" aria-controls="super-sidebar" aria-expanded="false" aria-label="Primary navigation sidebar" type="button"><svg class="s16 gl-icon gl-button-icon " data-testid="sidebar-icon"><use href="/assets/icons-8791a66659d025e0a4c801978c79a1fbd82db1d27d85f044a35728ea7cf0ae80.svg#sidebar"></use></svg> </button> <script type="application/ld+json"> {"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Raimund Hook","item":"https://gitlab.com/stingrayza"},{"@type":"ListItem","position":2,"name":"stingrayza","item":"https://gitlab.com/stingrayza/stingrayza"},{"@type":"ListItem","position":3,"name":"Repository","item":"https://gitlab.com/stingrayza/stingrayza/-/blob/main/README.md"}]} </script> <div data-testid="breadcrumb-links" id="js-vue-page-breadcrumbs-wrapper"> <div data-breadcrumbs-json="[{"text":"Raimund Hook","href":"/stingrayza","avatarPath":null},{"text":"stingrayza","href":"/stingrayza/stingrayza","avatarPath":null},{"text":"Repository","href":"/stingrayza/stingrayza/-/blob/main/README.md","avatarPath":null}]" id="js-vue-page-breadcrumbs"></div> <div id="js-injected-page-breadcrumbs"></div> </div> </div> <div class="gl-flex-none gl-flex gl-items-center gl-justify-center"> <div id="js-advanced-search-modal"></div> </div> <div class="gl-grow gl-basis-0 gl-flex gl-items-center gl-justify-end"> <div id="js-work-item-feedback"></div> </div> </div> </div> <div class="container-fluid container-limited project-highlight-puc"> <main class="content" id="content-body" itemscope itemtype="http://schema.org/SoftwareSourceCode"> <div class="flash-container flash-container-page sticky" data-testid="flash-container"> <div id="js-global-alerts"></div> </div> <div class="js-signature-container" data-signatures-path="/stingrayza/stingrayza/-/commits/4b1e599200abd5fb724c3bc25c079d8be21b76f5/signatures?limit=1"></div> <div class="tree-holder gl-pt-4" id="tree-holder"> <div class="nav-block"> <div class="tree-ref-container"> <div class="tree-ref-holder gl-max-w-26"> <div data-project-id="40152566" data-project-root-path="/stingrayza/stingrayza" data-ref="main" data-ref-type="" id="js-tree-ref-switcher"></div> </div> <ul class="breadcrumb repo-breadcrumb"> <li class="breadcrumb-item"> <a href="/stingrayza/stingrayza/-/tree/main">stingrayza </a></li> <li class="breadcrumb-item"> <a href="/stingrayza/stingrayza/-/blob/main/README.md"><strong>README.md</strong> </a></li> </ul> </div> <div class="tree-controls gl-flex gl-flex-wrap sm:gl-flex-nowrap gl-items-baseline gl-gap-3"> <button class="gl-button btn btn-md btn-default has-tooltip shortcuts-find-file" title="Go to file, press <kbd class='flat ml-1' aria-hidden=true>/~</kbd> or <kbd class='flat ml-1' aria-hidden=true>t</kbd>" aria-keyshortcuts="/+~ t" data-html="true" data-event-tracking="click_find_file_button_on_repository_pages" type="button"><span class="gl-button-text"> Find file </span> </button> <a data-event-tracking="click_blame_control_on_blob_page" class="gl-button btn btn-md btn-default js-blob-blame-link" href="/stingrayza/stingrayza/-/blame/main/README.md"><span class="gl-button-text"> Blame </span> </a> <div class="gl-block sm:gl-hidden gl-w-full"> <a data-event-tracking="click_history_control_on_blob_page" class="gl-button btn btn-md btn-default " href="/stingrayza/stingrayza/-/commits/main/README.md"><span class="gl-button-text"> History </span> </a> </div> <a aria-keyshortcuts="y" class="gl-button btn btn-md btn-default has-tooltip js-data-file-blob-permalink-url" data-html="true" title="Go to permalink <kbd class='flat ml-1' aria-hidden=true>y</kbd>" href="/stingrayza/stingrayza/-/blob/4f01568588bd9f23c95474b8bd0a8cbc8aa662d1/README.md"><span class="gl-button-text"> Permalink </span> </a> </div> </div> <div class="info-well gl-hidden sm:gl-block"> <div class="well-segment"> <ul class="blob-commit-info"> <li class="commit flex-row js-toggle-container" id="commit-4b1e5992"> <div class="gl-self-start gl-hidden sm:gl-block"> <a href="/stingrayza"><img alt="Raimund Hook's avatar" src="https://secure.gravatar.com/avatar/c16b5d931128704290edb3144b13906791c8357732e5c8005018eb21e5009ea5?s=128&d=identicon" class="avatar s32 gl-hidden sm:gl-inline-block" title="Raimund Hook"></a> </div> <div class="commit-detail flex-list gl-flex gl-justify-between gl-items-start gl-grow gl-min-w-0"> <div class="commit-content" data-testid="commit-content"> <a class="commit-row-message item-title js-onboarding-commit-item " href="/stingrayza/stingrayza/-/commit/4b1e599200abd5fb724c3bc25c079d8be21b76f5">Add GitLab Community Discord Badge</a> <span class="commit-row-message d-inline d-sm-none"> · 4b1e5992 </span> <div class="committer gl-text-sm"> <a class="commit-author-link js-user-link" data-user-id="2083197" href="/stingrayza">Raimund Hook</a> authored <time class="js-timeago" title="May 16, 2023 10:52am" datetime="2023-05-16T10:52:05Z" data-toggle="tooltip" data-placement="bottom" data-container="body">May 16, 2023</time> </div> </div> <div class="commit-actions gl-flex gl-items-center"> <div class="js-commit-pipeline-status" data-endpoint="/stingrayza/stingrayza/-/commit/4b1e599200abd5fb724c3bc25c079d8be21b76f5/pipelines?ref=main"></div> <div class="commit-sha-group btn-group gl-hidden sm:gl-flex"> <div class="label label-monospace monospace"> 4b1e5992 </div> <button class="gl-button btn btn-icon btn-md btn-default " title="Copy commit SHA" aria-label="Copy commit SHA" aria-live="polite" data-toggle="tooltip" data-placement="bottom" data-container="body" data-html="true" data-category="primary" data-size="medium" data-clipboard-text="4b1e599200abd5fb724c3bc25c079d8be21b76f5" type="button"><svg class="s16 gl-icon gl-button-icon " data-testid="copy-to-clipboard-icon"><use href="/assets/icons-8791a66659d025e0a4c801978c79a1fbd82db1d27d85f044a35728ea7cf0ae80.svg#copy-to-clipboard"></use></svg> </button> </div> <div data-history-link="/stingrayza/stingrayza/-/commits/main/README.md" id="js-commit-history-link"> <button class="gl-button btn btn-md btn-default btn-default-tertiary gl-ml-4" type="button"><span class="gl-button-text"> History </span> </button></div> </div> </div> </li> </ul> </div> <div data-blob-path="README.md" data-branch="main" data-branch-rules-path="/stingrayza/stingrayza/-/settings/repository#js-branch-rules" data-project-path="stingrayza/stingrayza" id="js-code-owners"></div> </div> <div class="blob-content-holder js-per-page" data-blame-per-page="1000" id="blob-content-holder"> <div data-blob-path="README.md" data-can-download-code="true" data-explain-code-available="false" data-new-workspace-path="/-/remote_development/workspaces/new" data-original-branch="main" data-project-path="stingrayza/stingrayza" data-ref-type="" data-resource-id="gid://gitlab/Project/40152566" data-user-id="" id="js-view-blob-app"> <div class="gl-spinner-container" role="status"><span aria-hidden class="gl-spinner gl-spinner-md gl-spinner-dark !gl-align-text-bottom"></span><span class="gl-sr-only !gl-absolute">Loading</span> </div> </div> </div> </div> <script nonce="206ObPZ0GvldeZUwSXW1xQ=="> //<![CDATA[ window.gl = window.gl || {}; window.gl.webIDEPath = '/-/ide/project/stingrayza/stingrayza/edit/main/-/README.md' //]]> </script> <div data-ambiguous="false" data-ref="main" id="js-ambiguous-ref-modal"></div> </main> </div> </div> </div> <script nonce="206ObPZ0GvldeZUwSXW1xQ=="> //<![CDATA[ if ('loading' in HTMLImageElement.prototype) { document.querySelectorAll('img.lazy').forEach(img => { img.loading = 'lazy'; let imgUrl = img.dataset.src; // Only adding width + height for avatars for now if (imgUrl.indexOf('/avatar/') > -1 && imgUrl.indexOf('?') === -1) { const targetWidth = img.getAttribute('width') || img.width; imgUrl += `?width=${targetWidth}`; } img.src = imgUrl; img.removeAttribute('data-src'); img.classList.remove('lazy'); img.classList.add('js-lazy-loaded'); img.dataset.testid = 'js-lazy-loaded-content'; }); } //]]> </script> <script nonce="206ObPZ0GvldeZUwSXW1xQ=="> //<![CDATA[ gl = window.gl || {}; gl.experiments = {}; //]]> </script> </body> </html>