<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-04.dtd">
<coverage line-rate="0.8550857" branch-rate="0" version="" timestamp="1792839499341" lines-covered="4691" lines-valid="5486" branches-covered="0" branches-valid="0" complexity="0">
  <sources>
    <source>/home/runner/work/pipeline-analytics/pipeline-analytics</source>
  </sources>
  <packages>
    <package name="github.com/alrayyes/pipeline-analytics/cmd/pipeline-analytics" line-rate="0.83870965" branch-rate="0" complexity="0">
      <classes>
        <class name="-" filename="cmd/pipeline-analytics/main.go" line-rate="0.83870965" branch-rate="0" complexity="0">
          <methods>
            <method name="main" signature="" line-rate="0" branch-rate="0" complexity="0">
              <lines>
                <line number="53" hits="0"></line>
                <line number="54" hits="0"></line>
                <line number="55" hits="0"></line>
              </lines>
            </method>
            <method name="newRootCmd" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="59" hits="5"></line>
                <line number="60" hits="5"></line>
                <line number="61" hits="5"></line>
                <line number="62" hits="5"></line>
                <line number="63" hits="5"></line>
                <line number="64" hits="5"></line>
                <line number="65" hits="5"></line>
                <line number="66" hits="5"></line>
                <line number="67" hits="5"></line>
              </lines>
            </method>
            <method name="newHealthcheckCmd" signature="" line-rate="0.86206895" branch-rate="0" complexity="0">
              <lines>
                <line number="78" hits="5"></line>
                <line number="79" hits="5"></line>
                <line number="80" hits="5"></line>
                <line number="81" hits="5"></line>
                <line number="82" hits="5"></line>
                <line number="83" hits="5"></line>
                <line number="84" hits="5"></line>
                <line number="85" hits="1"></line>
                <line number="86" hits="1"></line>
                <line number="88" hits="5"></line>
                <line number="89" hits="5"></line>
                <line number="90" hits="0"></line>
                <line number="91" hits="0"></line>
                <line number="93" hits="5"></line>
                <line number="94" hits="5"></line>
                <line number="95" hits="5"></line>
                <line number="96" hits="5"></line>
                <line number="97" hits="5"></line>
                <line number="98" hits="0"></line>
                <line number="99" hits="0"></line>
                <line number="101" hits="5"></line>
                <line number="102" hits="5"></line>
                <line number="103" hits="2"></line>
                <line number="104" hits="2"></line>
                <line number="105" hits="3"></line>
                <line number="107" hits="3"></line>
                <line number="108" hits="1"></line>
                <line number="109" hits="1"></line>
                <line number="111" hits="2"></line>
              </lines>
            </method>
            <method name="newServeCmd" signature="" line-rate="0.875" branch-rate="0" complexity="0">
              <lines>
                <line number="117" hits="12"></line>
                <line number="118" hits="12"></line>
                <line number="119" hits="12"></line>
                <line number="120" hits="12"></line>
                <line number="121" hits="0"></line>
                <line number="122" hits="0"></line>
                <line number="125" hits="12"></line>
                <line number="126" hits="12"></line>
                <line number="127" hits="12"></line>
                <line number="128" hits="12"></line>
                <line number="129" hits="12"></line>
                <line number="130" hits="12"></line>
                <line number="131" hits="12"></line>
                <line number="132" hits="12"></line>
                <line number="133" hits="12"></line>
                <line number="134" hits="12"></line>
                <line number="135" hits="96"></line>
                <line number="136" hits="0"></line>
                <line number="140" hits="12"></line>
                <line number="141" hits="12"></line>
                <line number="144" hits="12"></line>
                <line number="145" hits="12"></line>
                <line number="146" hits="12"></line>
                <line number="147" hits="12"></line>
              </lines>
            </method>
            <method name="runServe" signature="" line-rate="0.71428573" branch-rate="0" complexity="0">
              <lines>
                <line number="151" hits="1"></line>
                <line number="152" hits="1"></line>
                <line number="153" hits="0"></line>
                <line number="154" hits="0"></line>
                <line number="156" hits="1"></line>
                <line number="157" hits="1"></line>
                <line number="158" hits="1"></line>
                <line number="159" hits="0"></line>
                <line number="160" hits="0"></line>
                <line number="162" hits="1"></line>
                <line number="163" hits="1"></line>
                <line number="164" hits="0"></line>
                <line number="165" hits="0"></line>
                <line number="167" hits="1"></line>
                <line number="168" hits="1"></line>
                <line number="169" hits="0"></line>
                <line number="170" hits="0"></line>
                <line number="173" hits="1"></line>
                <line number="174" hits="0"></line>
                <line number="175" hits="0"></line>
                <line number="177" hits="1"></line>
                <line number="178" hits="1"></line>
                <line number="179" hits="1"></line>
                <line number="180" hits="1"></line>
                <line number="181" hits="0"></line>
                <line number="182" hits="0"></line>
                <line number="184" hits="1"></line>
                <line number="185" hits="1"></line>
                <line number="186" hits="1"></line>
                <line number="187" hits="1"></line>
                <line number="188" hits="1"></line>
                <line number="189" hits="1"></line>
                <line number="190" hits="0"></line>
                <line number="191" hits="0"></line>
                <line number="193" hits="1"></line>
                <line number="194" hits="1"></line>
                <line number="195" hits="1"></line>
                <line number="196" hits="1"></line>
                <line number="197" hits="1"></line>
                <line number="199" hits="1"></line>
                <line number="200" hits="1"></line>
                <line number="201" hits="1"></line>
                <line number="202" hits="1"></line>
                <line number="203" hits="1"></line>
                <line number="204" hits="1"></line>
                <line number="205" hits="1"></line>
                <line number="206" hits="1"></line>
                <line number="207" hits="1"></line>
                <line number="208" hits="1"></line>
              </lines>
            </method>
            <method name="listenAndServe" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="212" hits="3"></line>
                <line number="213" hits="3"></line>
                <line number="214" hits="1"></line>
                <line number="215" hits="1"></line>
                <line number="217" hits="2"></line>
              </lines>
            </method>
            <method name="newForgeClients" signature="" line-rate="0.6666667" branch-rate="0" complexity="0">
              <lines>
                <line number="224" hits="1"></line>
                <line number="225" hits="1"></line>
                <line number="226" hits="0"></line>
                <line number="227" hits="0"></line>
                <line number="229" hits="1"></line>
                <line number="230" hits="1"></line>
                <line number="231" hits="0"></line>
                <line number="232" hits="0"></line>
                <line number="234" hits="1"></line>
                <line number="235" hits="1"></line>
                <line number="236" hits="1"></line>
                <line number="237" hits="1"></line>
              </lines>
            </method>
            <method name="loadConfig" signature="" line-rate="0.8181818" branch-rate="0" complexity="0">
              <lines>
                <line number="241" hits="7"></line>
                <line number="242" hits="7"></line>
                <line number="243" hits="0"></line>
                <line number="244" hits="0"></line>
                <line number="246" hits="7"></line>
                <line number="247" hits="7"></line>
                <line number="248" hits="1"></line>
                <line number="249" hits="1"></line>
                <line number="251" hits="6"></line>
                <line number="252" hits="6"></line>
                <line number="253" hits="6"></line>
                <line number="254" hits="6"></line>
                <line number="255" hits="6"></line>
                <line number="256" hits="6"></line>
                <line number="257" hits="6"></line>
                <line number="258" hits="6"></line>
                <line number="259" hits="6"></line>
                <line number="260" hits="6"></line>
                <line number="261" hits="6"></line>
                <line number="262" hits="0"></line>
                <line number="263" hits="0"></line>
                <line number="265" hits="6"></line>
              </lines>
            </method>
            <method name="parseLogLevel" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="274" hits="9"></line>
                <line number="275" hits="9"></line>
                <line number="276" hits="2"></line>
                <line number="277" hits="2"></line>
                <line number="279" hits="7"></line>
              </lines>
            </method>
            <method name="dbReady" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="287" hits="5"></line>
                <line number="288" hits="6"></line>
                <line number="289" hits="6"></line>
                <line number="290" hits="3"></line>
                <line number="291" hits="3"></line>
                <line number="293" hits="3"></line>
              </lines>
            </method>
            <method name="buildHandler" signature="" line-rate="0.875" branch-rate="0" complexity="0">
              <lines>
                <line number="298" hits="2"></line>
                <line number="299" hits="2"></line>
                <line number="300" hits="2"></line>
                <line number="301" hits="2"></line>
                <line number="302" hits="2"></line>
                <line number="303" hits="2"></line>
                <line number="304" hits="0"></line>
                <line number="305" hits="0"></line>
                <line number="307" hits="2"></line>
                <line number="308" hits="2"></line>
                <line number="309" hits="0"></line>
                <line number="310" hits="0"></line>
                <line number="315" hits="2"></line>
                <line number="316" hits="2"></line>
                <line number="317" hits="2"></line>
                <line number="318" hits="2"></line>
                <line number="319" hits="2"></line>
                <line number="320" hits="2"></line>
                <line number="321" hits="2"></line>
                <line number="322" hits="2"></line>
                <line number="323" hits="2"></line>
                <line number="324" hits="2"></line>
                <line number="325" hits="2"></line>
                <line number="326" hits="2"></line>
                <line number="327" hits="2"></line>
                <line number="328" hits="2"></line>
                <line number="329" hits="2"></line>
                <line number="330" hits="2"></line>
                <line number="331" hits="2"></line>
                <line number="332" hits="2"></line>
                <line number="333" hits="2"></line>
                <line number="334" hits="2"></line>
              </lines>
            </method>
            <method name="jobLogReaders" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="343" hits="2"></line>
                <line number="344" hits="2"></line>
                <line number="345" hits="2"></line>
                <line number="346" hits="2"></line>
                <line number="347" hits="2"></line>
                <line number="348" hits="2"></line>
                <line number="351" hits="2"></line>
              </lines>
            </method>
            <method name="runActors" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="356" hits="2"></line>
                <line number="357" hits="2"></line>
                <line number="358" hits="2"></line>
                <line number="359" hits="2"></line>
                <line number="360" hits="1"></line>
                <line number="361" hits="1"></line>
                <line number="364" hits="2"></line>
              </lines>
            </method>
            <method name="newWebAuthn" signature="" line-rate="0.6923077" branch-rate="0" complexity="0">
              <lines>
                <line number="368" hits="2"></line>
                <line number="369" hits="2"></line>
                <line number="370" hits="0"></line>
                <line number="371" hits="0"></line>
                <line number="373" hits="2"></line>
                <line number="374" hits="2"></line>
                <line number="375" hits="2"></line>
                <line number="376" hits="2"></line>
                <line number="377" hits="2"></line>
                <line number="378" hits="2"></line>
                <line number="379" hits="0"></line>
                <line number="380" hits="0"></line>
                <line number="382" hits="2"></line>
              </lines>
            </method>
            <method name="serveUntilDone" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="399" hits="5"></line>
                <line number="400" hits="5"></line>
                <line number="401" hits="5"></line>
                <line number="402" hits="5"></line>
                <line number="403" hits="5"></line>
                <line number="404" hits="5"></line>
                <line number="405" hits="1"></line>
                <line number="406" hits="1"></line>
                <line number="407" hits="1"></line>
                <line number="408" hits="1"></line>
                <line number="410" hits="4"></line>
                <line number="413" hits="5"></line>
                <line number="415" hits="4"></line>
                <line number="416" hits="4"></line>
                <line number="417" hits="4"></line>
                <line number="419" hits="4"></line>
                <line number="420" hits="4"></line>
                <line number="421" hits="4"></line>
                <line number="422" hits="4"></line>
                <line number="423" hits="4"></line>
                <line number="424" hits="4"></line>
                <line number="425" hits="1"></line>
                <line number="426" hits="1"></line>
                <line number="428" hits="3"></line>
                <line number="430" hits="1"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="53" hits="0"></line>
            <line number="54" hits="0"></line>
            <line number="55" hits="0"></line>
            <line number="59" hits="5"></line>
            <line number="60" hits="5"></line>
            <line number="61" hits="5"></line>
            <line number="62" hits="5"></line>
            <line number="63" hits="5"></line>
            <line number="64" hits="5"></line>
            <line number="65" hits="5"></line>
            <line number="66" hits="5"></line>
            <line number="67" hits="5"></line>
            <line number="78" hits="5"></line>
            <line number="79" hits="5"></line>
            <line number="80" hits="5"></line>
            <line number="81" hits="5"></line>
            <line number="82" hits="5"></line>
            <line number="83" hits="5"></line>
            <line number="84" hits="5"></line>
            <line number="85" hits="1"></line>
            <line number="86" hits="1"></line>
            <line number="88" hits="5"></line>
            <line number="89" hits="5"></line>
            <line number="90" hits="0"></line>
            <line number="91" hits="0"></line>
            <line number="93" hits="5"></line>
            <line number="94" hits="5"></line>
            <line number="95" hits="5"></line>
            <line number="96" hits="5"></line>
            <line number="97" hits="5"></line>
            <line number="98" hits="0"></line>
            <line number="99" hits="0"></line>
            <line number="101" hits="5"></line>
            <line number="102" hits="5"></line>
            <line number="103" hits="2"></line>
            <line number="104" hits="2"></line>
            <line number="105" hits="3"></line>
            <line number="107" hits="3"></line>
            <line number="108" hits="1"></line>
            <line number="109" hits="1"></line>
            <line number="111" hits="2"></line>
            <line number="117" hits="12"></line>
            <line number="118" hits="12"></line>
            <line number="119" hits="12"></line>
            <line number="120" hits="12"></line>
            <line number="121" hits="0"></line>
            <line number="122" hits="0"></line>
            <line number="125" hits="12"></line>
            <line number="126" hits="12"></line>
            <line number="127" hits="12"></line>
            <line number="128" hits="12"></line>
            <line number="129" hits="12"></line>
            <line number="130" hits="12"></line>
            <line number="131" hits="12"></line>
            <line number="132" hits="12"></line>
            <line number="133" hits="12"></line>
            <line number="134" hits="12"></line>
            <line number="135" hits="96"></line>
            <line number="136" hits="0"></line>
            <line number="140" hits="12"></line>
            <line number="141" hits="12"></line>
            <line number="144" hits="12"></line>
            <line number="145" hits="12"></line>
            <line number="146" hits="12"></line>
            <line number="147" hits="12"></line>
            <line number="151" hits="1"></line>
            <line number="152" hits="1"></line>
            <line number="153" hits="0"></line>
            <line number="154" hits="0"></line>
            <line number="156" hits="1"></line>
            <line number="157" hits="1"></line>
            <line number="158" hits="1"></line>
            <line number="159" hits="0"></line>
            <line number="160" hits="0"></line>
            <line number="162" hits="1"></line>
            <line number="163" hits="1"></line>
            <line number="164" hits="0"></line>
            <line number="165" hits="0"></line>
            <line number="167" hits="1"></line>
            <line number="168" hits="1"></line>
            <line number="169" hits="0"></line>
            <line number="170" hits="0"></line>
            <line number="173" hits="1"></line>
            <line number="174" hits="0"></line>
            <line number="175" hits="0"></line>
            <line number="177" hits="1"></line>
            <line number="178" hits="1"></line>
            <line number="179" hits="1"></line>
            <line number="180" hits="1"></line>
            <line number="181" hits="0"></line>
            <line number="182" hits="0"></line>
            <line number="184" hits="1"></line>
            <line number="185" hits="1"></line>
            <line number="186" hits="1"></line>
            <line number="187" hits="1"></line>
            <line number="188" hits="1"></line>
            <line number="189" hits="1"></line>
            <line number="190" hits="0"></line>
            <line number="191" hits="0"></line>
            <line number="193" hits="1"></line>
            <line number="194" hits="1"></line>
            <line number="195" hits="1"></line>
            <line number="196" hits="1"></line>
            <line number="197" hits="1"></line>
            <line number="199" hits="1"></line>
            <line number="200" hits="1"></line>
            <line number="201" hits="1"></line>
            <line number="202" hits="1"></line>
            <line number="203" hits="1"></line>
            <line number="204" hits="1"></line>
            <line number="205" hits="1"></line>
            <line number="206" hits="1"></line>
            <line number="207" hits="1"></line>
            <line number="208" hits="1"></line>
            <line number="212" hits="3"></line>
            <line number="213" hits="3"></line>
            <line number="214" hits="1"></line>
            <line number="215" hits="1"></line>
            <line number="217" hits="2"></line>
            <line number="224" hits="1"></line>
            <line number="225" hits="1"></line>
            <line number="226" hits="0"></line>
            <line number="227" hits="0"></line>
            <line number="229" hits="1"></line>
            <line number="230" hits="1"></line>
            <line number="231" hits="0"></line>
            <line number="232" hits="0"></line>
            <line number="234" hits="1"></line>
            <line number="235" hits="1"></line>
            <line number="236" hits="1"></line>
            <line number="237" hits="1"></line>
            <line number="241" hits="7"></line>
            <line number="242" hits="7"></line>
            <line number="243" hits="0"></line>
            <line number="244" hits="0"></line>
            <line number="246" hits="7"></line>
            <line number="247" hits="7"></line>
            <line number="248" hits="1"></line>
            <line number="249" hits="1"></line>
            <line number="251" hits="6"></line>
            <line number="252" hits="6"></line>
            <line number="253" hits="6"></line>
            <line number="254" hits="6"></line>
            <line number="255" hits="6"></line>
            <line number="256" hits="6"></line>
            <line number="257" hits="6"></line>
            <line number="258" hits="6"></line>
            <line number="259" hits="6"></line>
            <line number="260" hits="6"></line>
            <line number="261" hits="6"></line>
            <line number="262" hits="0"></line>
            <line number="263" hits="0"></line>
            <line number="265" hits="6"></line>
            <line number="274" hits="9"></line>
            <line number="275" hits="9"></line>
            <line number="276" hits="2"></line>
            <line number="277" hits="2"></line>
            <line number="279" hits="7"></line>
            <line number="287" hits="5"></line>
            <line number="288" hits="6"></line>
            <line number="289" hits="6"></line>
            <line number="290" hits="3"></line>
            <line number="291" hits="3"></line>
            <line number="293" hits="3"></line>
            <line number="298" hits="2"></line>
            <line number="299" hits="2"></line>
            <line number="300" hits="2"></line>
            <line number="301" hits="2"></line>
            <line number="302" hits="2"></line>
            <line number="303" hits="2"></line>
            <line number="304" hits="0"></line>
            <line number="305" hits="0"></line>
            <line number="307" hits="2"></line>
            <line number="308" hits="2"></line>
            <line number="309" hits="0"></line>
            <line number="310" hits="0"></line>
            <line number="315" hits="2"></line>
            <line number="316" hits="2"></line>
            <line number="317" hits="2"></line>
            <line number="318" hits="2"></line>
            <line number="319" hits="2"></line>
            <line number="320" hits="2"></line>
            <line number="321" hits="2"></line>
            <line number="322" hits="2"></line>
            <line number="323" hits="2"></line>
            <line number="324" hits="2"></line>
            <line number="325" hits="2"></line>
            <line number="326" hits="2"></line>
            <line number="327" hits="2"></line>
            <line number="328" hits="2"></line>
            <line number="329" hits="2"></line>
            <line number="330" hits="2"></line>
            <line number="331" hits="2"></line>
            <line number="332" hits="2"></line>
            <line number="333" hits="2"></line>
            <line number="334" hits="2"></line>
            <line number="343" hits="2"></line>
            <line number="344" hits="2"></line>
            <line number="345" hits="2"></line>
            <line number="346" hits="2"></line>
            <line number="347" hits="2"></line>
            <line number="348" hits="2"></line>
            <line number="351" hits="2"></line>
            <line number="356" hits="2"></line>
            <line number="357" hits="2"></line>
            <line number="358" hits="2"></line>
            <line number="359" hits="2"></line>
            <line number="360" hits="1"></line>
            <line number="361" hits="1"></line>
            <line number="364" hits="2"></line>
            <line number="368" hits="2"></line>
            <line number="369" hits="2"></line>
            <line number="370" hits="0"></line>
            <line number="371" hits="0"></line>
            <line number="373" hits="2"></line>
            <line number="374" hits="2"></line>
            <line number="375" hits="2"></line>
            <line number="376" hits="2"></line>
            <line number="377" hits="2"></line>
            <line number="378" hits="2"></line>
            <line number="379" hits="0"></line>
            <line number="380" hits="0"></line>
            <line number="382" hits="2"></line>
            <line number="399" hits="5"></line>
            <line number="400" hits="5"></line>
            <line number="401" hits="5"></line>
            <line number="402" hits="5"></line>
            <line number="403" hits="5"></line>
            <line number="404" hits="5"></line>
            <line number="405" hits="1"></line>
            <line number="406" hits="1"></line>
            <line number="407" hits="1"></line>
            <line number="408" hits="1"></line>
            <line number="410" hits="4"></line>
            <line number="413" hits="5"></line>
            <line number="415" hits="4"></line>
            <line number="416" hits="4"></line>
            <line number="417" hits="4"></line>
            <line number="419" hits="4"></line>
            <line number="420" hits="4"></line>
            <line number="421" hits="4"></line>
            <line number="422" hits="4"></line>
            <line number="423" hits="4"></line>
            <line number="424" hits="4"></line>
            <line number="425" hits="1"></line>
            <line number="426" hits="1"></line>
            <line number="428" hits="3"></line>
            <line number="430" hits="1"></line>
          </lines>
        </class>
      </classes>
    </package>
    <package name="github.com/alrayyes/pipeline-analytics/internal/auth" line-rate="0.64705884" branch-rate="0" complexity="0">
      <classes>
        <class name="webauthnUser" filename="internal/auth/auth.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="WebAuthnID" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="141" hits="20"></line>
              </lines>
            </method>
            <method name="WebAuthnName" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="142" hits="4"></line>
              </lines>
            </method>
            <method name="WebAuthnDisplayName" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="143" hits="4"></line>
              </lines>
            </method>
            <method name="WebAuthnCredentials" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="144" hits="6"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="141" hits="20"></line>
            <line number="142" hits="4"></line>
            <line number="143" hits="4"></line>
            <line number="144" hits="6"></line>
          </lines>
        </class>
        <class name="-" filename="internal/auth/service.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="NewService" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="35" hits="6"></line>
                <line number="36" hits="6"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="35" hits="6"></line>
            <line number="36" hits="6"></line>
          </lines>
        </class>
        <class name="Service" filename="internal/auth/service.go" line-rate="0.63414633" branch-rate="0" complexity="0">
          <methods>
            <method name="BeginRegistration" signature="" line-rate="0.6" branch-rate="0" complexity="0">
              <lines>
                <line number="41" hits="4"></line>
                <line number="42" hits="1"></line>
                <line number="43" hits="1"></line>
                <line number="44" hits="0"></line>
                <line number="45" hits="0"></line>
                <line number="47" hits="3"></line>
                <line number="48" hits="3"></line>
                <line number="49" hits="0"></line>
                <line number="50" hits="0"></line>
                <line number="52" hits="3"></line>
                <line number="53" hits="3"></line>
                <line number="54" hits="3"></line>
                <line number="55" hits="3"></line>
                <line number="56" hits="0"></line>
                <line number="57" hits="0"></line>
                <line number="59" hits="3"></line>
                <line number="60" hits="3"></line>
                <line number="61" hits="0"></line>
                <line number="62" hits="0"></line>
                <line number="64" hits="3"></line>
              </lines>
            </method>
            <method name="FinishRegistration" signature="" line-rate="0.6363636" branch-rate="0" complexity="0">
              <lines>
                <line number="73" hits="4"></line>
                <line number="74" hits="4"></line>
                <line number="75" hits="1"></line>
                <line number="76" hits="1"></line>
                <line number="78" hits="3"></line>
                <line number="79" hits="3"></line>
                <line number="80" hits="3"></line>
                <line number="81" hits="3"></line>
                <line number="82" hits="0"></line>
                <line number="83" hits="0"></line>
                <line number="85" hits="3"></line>
                <line number="86" hits="3"></line>
                <line number="87" hits="0"></line>
                <line number="88" hits="0"></line>
                <line number="90" hits="3"></line>
                <line number="91" hits="0"></line>
                <line number="92" hits="0"></line>
                <line number="94" hits="3"></line>
                <line number="95" hits="3"></line>
                <line number="96" hits="0"></line>
                <line number="97" hits="0"></line>
                <line number="99" hits="3"></line>
              </lines>
            </method>
            <method name="BeginLogin" signature="" line-rate="0.6923077" branch-rate="0" complexity="0">
              <lines>
                <line number="105" hits="4"></line>
                <line number="106" hits="4"></line>
                <line number="107" hits="1"></line>
                <line number="108" hits="1"></line>
                <line number="110" hits="3"></line>
                <line number="111" hits="3"></line>
                <line number="112" hits="0"></line>
                <line number="113" hits="0"></line>
                <line number="115" hits="3"></line>
                <line number="116" hits="3"></line>
                <line number="117" hits="0"></line>
                <line number="118" hits="0"></line>
                <line number="120" hits="3"></line>
              </lines>
            </method>
            <method name="FinishLogin" signature="" line-rate="0.7" branch-rate="0" complexity="0">
              <lines>
                <line number="126" hits="4"></line>
                <line number="127" hits="4"></line>
                <line number="128" hits="1"></line>
                <line number="129" hits="1"></line>
                <line number="131" hits="3"></line>
                <line number="132" hits="3"></line>
                <line number="133" hits="0"></line>
                <line number="134" hits="0"></line>
                <line number="136" hits="3"></line>
                <line number="137" hits="3"></line>
                <line number="138" hits="1"></line>
                <line number="139" hits="1"></line>
                <line number="141" hits="2"></line>
                <line number="142" hits="0"></line>
                <line number="143" hits="0"></line>
                <line number="145" hits="2"></line>
                <line number="146" hits="2"></line>
                <line number="147" hits="0"></line>
                <line number="148" hits="0"></line>
                <line number="150" hits="2"></line>
              </lines>
            </method>
            <method name="BeginAddCredential" signature="" line-rate="0.53846157" branch-rate="0" complexity="0">
              <lines>
                <line number="161" hits="1"></line>
                <line number="162" hits="1"></line>
                <line number="163" hits="0"></line>
                <line number="164" hits="0"></line>
                <line number="166" hits="1"></line>
                <line number="167" hits="1"></line>
                <line number="168" hits="0"></line>
                <line number="169" hits="0"></line>
                <line number="171" hits="1"></line>
                <line number="172" hits="1"></line>
                <line number="173" hits="0"></line>
                <line number="174" hits="0"></line>
                <line number="176" hits="1"></line>
              </lines>
            </method>
            <method name="FinishAddCredential" signature="" line-rate="0.5" branch-rate="0" complexity="0">
              <lines>
                <line number="182" hits="1"></line>
                <line number="183" hits="1"></line>
                <line number="184" hits="0"></line>
                <line number="185" hits="0"></line>
                <line number="187" hits="1"></line>
                <line number="188" hits="1"></line>
                <line number="189" hits="0"></line>
                <line number="190" hits="0"></line>
                <line number="192" hits="1"></line>
                <line number="193" hits="1"></line>
                <line number="194" hits="0"></line>
                <line number="195" hits="0"></line>
                <line number="197" hits="1"></line>
                <line number="198" hits="0"></line>
                <line number="199" hits="0"></line>
                <line number="201" hits="1"></line>
              </lines>
            </method>
            <method name="ListCredentials" signature="" line-rate="0.75" branch-rate="0" complexity="0">
              <lines>
                <line number="207" hits="3"></line>
                <line number="208" hits="3"></line>
                <line number="209" hits="0"></line>
                <line number="210" hits="0"></line>
                <line number="214" hits="3"></line>
                <line number="215" hits="5"></line>
                <line number="216" hits="5"></line>
                <line number="218" hits="3"></line>
              </lines>
            </method>
            <method name="RevokeCredential" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="225" hits="2"></line>
                <line number="226" hits="1"></line>
                <line number="227" hits="1"></line>
                <line number="229" hits="1"></line>
              </lines>
            </method>
            <method name="Logout" signature="" line-rate="0" branch-rate="0" complexity="0">
              <lines>
                <line number="234" hits="0"></line>
                <line number="235" hits="0"></line>
                <line number="236" hits="0"></line>
                <line number="238" hits="0"></line>
              </lines>
            </method>
            <method name="IssueToken" signature="" line-rate="0.6" branch-rate="0" complexity="0">
              <lines>
                <line number="244" hits="2"></line>
                <line number="245" hits="2"></line>
                <line number="246" hits="0"></line>
                <line number="247" hits="0"></line>
                <line number="249" hits="2"></line>
              </lines>
            </method>
            <method name="AuthenticateToken" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="256" hits="3"></line>
                <line number="257" hits="3"></line>
                <line number="258" hits="2"></line>
                <line number="259" hits="2"></line>
                <line number="261" hits="1"></line>
              </lines>
            </method>
            <method name="RevokeToken" signature="" line-rate="0.5" branch-rate="0" complexity="0">
              <lines>
                <line number="267" hits="1"></line>
                <line number="268" hits="0"></line>
                <line number="269" hits="0"></line>
                <line number="271" hits="1"></line>
              </lines>
            </method>
            <method name="userWithCredentials" signature="" line-rate="0.7777778" branch-rate="0" complexity="0">
              <lines>
                <line number="275" hits="9"></line>
                <line number="276" hits="9"></line>
                <line number="277" hits="1"></line>
                <line number="278" hits="1"></line>
                <line number="280" hits="8"></line>
                <line number="281" hits="8"></line>
                <line number="282" hits="0"></line>
                <line number="283" hits="0"></line>
                <line number="285" hits="8"></line>
              </lines>
            </method>
            <method name="saveCeremony" signature="" line-rate="0.5" branch-rate="0" complexity="0">
              <lines>
                <line number="289" hits="7"></line>
                <line number="290" hits="7"></line>
                <line number="291" hits="0"></line>
                <line number="292" hits="0"></line>
                <line number="294" hits="7"></line>
                <line number="295" hits="7"></line>
                <line number="296" hits="0"></line>
                <line number="297" hits="0"></line>
                <line number="299" hits="7"></line>
                <line number="300" hits="0"></line>
                <line number="301" hits="0"></line>
                <line number="303" hits="7"></line>
              </lines>
            </method>
            <method name="loadCeremony" signature="" line-rate="0.7777778" branch-rate="0" complexity="0">
              <lines>
                <line number="307" hits="9"></line>
                <line number="308" hits="9"></line>
                <line number="309" hits="2"></line>
                <line number="310" hits="2"></line>
                <line number="312" hits="7"></line>
                <line number="313" hits="7"></line>
                <line number="314" hits="0"></line>
                <line number="315" hits="0"></line>
                <line number="317" hits="7"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="41" hits="4"></line>
            <line number="42" hits="1"></line>
            <line number="43" hits="1"></line>
            <line number="44" hits="0"></line>
            <line number="45" hits="0"></line>
            <line number="47" hits="3"></line>
            <line number="48" hits="3"></line>
            <line number="49" hits="0"></line>
            <line number="50" hits="0"></line>
            <line number="52" hits="3"></line>
            <line number="53" hits="3"></line>
            <line number="54" hits="3"></line>
            <line number="55" hits="3"></line>
            <line number="56" hits="0"></line>
            <line number="57" hits="0"></line>
            <line number="59" hits="3"></line>
            <line number="60" hits="3"></line>
            <line number="61" hits="0"></line>
            <line number="62" hits="0"></line>
            <line number="64" hits="3"></line>
            <line number="73" hits="4"></line>
            <line number="74" hits="4"></line>
            <line number="75" hits="1"></line>
            <line number="76" hits="1"></line>
            <line number="78" hits="3"></line>
            <line number="79" hits="3"></line>
            <line number="80" hits="3"></line>
            <line number="81" hits="3"></line>
            <line number="82" hits="0"></line>
            <line number="83" hits="0"></line>
            <line number="85" hits="3"></line>
            <line number="86" hits="3"></line>
            <line number="87" hits="0"></line>
            <line number="88" hits="0"></line>
            <line number="90" hits="3"></line>
            <line number="91" hits="0"></line>
            <line number="92" hits="0"></line>
            <line number="94" hits="3"></line>
            <line number="95" hits="3"></line>
            <line number="96" hits="0"></line>
            <line number="97" hits="0"></line>
            <line number="99" hits="3"></line>
            <line number="105" hits="4"></line>
            <line number="106" hits="4"></line>
            <line number="107" hits="1"></line>
            <line number="108" hits="1"></line>
            <line number="110" hits="3"></line>
            <line number="111" hits="3"></line>
            <line number="112" hits="0"></line>
            <line number="113" hits="0"></line>
            <line number="115" hits="3"></line>
            <line number="116" hits="3"></line>
            <line number="117" hits="0"></line>
            <line number="118" hits="0"></line>
            <line number="120" hits="3"></line>
            <line number="126" hits="4"></line>
            <line number="127" hits="4"></line>
            <line number="128" hits="1"></line>
            <line number="129" hits="1"></line>
            <line number="131" hits="3"></line>
            <line number="132" hits="3"></line>
            <line number="133" hits="0"></line>
            <line number="134" hits="0"></line>
            <line number="136" hits="3"></line>
            <line number="137" hits="3"></line>
            <line number="138" hits="1"></line>
            <line number="139" hits="1"></line>
            <line number="141" hits="2"></line>
            <line number="142" hits="0"></line>
            <line number="143" hits="0"></line>
            <line number="145" hits="2"></line>
            <line number="146" hits="2"></line>
            <line number="147" hits="0"></line>
            <line number="148" hits="0"></line>
            <line number="150" hits="2"></line>
            <line number="161" hits="1"></line>
            <line number="162" hits="1"></line>
            <line number="163" hits="0"></line>
            <line number="164" hits="0"></line>
            <line number="166" hits="1"></line>
            <line number="167" hits="1"></line>
            <line number="168" hits="0"></line>
            <line number="169" hits="0"></line>
            <line number="171" hits="1"></line>
            <line number="172" hits="1"></line>
            <line number="173" hits="0"></line>
            <line number="174" hits="0"></line>
            <line number="176" hits="1"></line>
            <line number="182" hits="1"></line>
            <line number="183" hits="1"></line>
            <line number="184" hits="0"></line>
            <line number="185" hits="0"></line>
            <line number="187" hits="1"></line>
            <line number="188" hits="1"></line>
            <line number="189" hits="0"></line>
            <line number="190" hits="0"></line>
            <line number="192" hits="1"></line>
            <line number="193" hits="1"></line>
            <line number="194" hits="0"></line>
            <line number="195" hits="0"></line>
            <line number="197" hits="1"></line>
            <line number="198" hits="0"></line>
            <line number="199" hits="0"></line>
            <line number="201" hits="1"></line>
            <line number="207" hits="3"></line>
            <line number="208" hits="3"></line>
            <line number="209" hits="0"></line>
            <line number="210" hits="0"></line>
            <line number="214" hits="3"></line>
            <line number="215" hits="5"></line>
            <line number="216" hits="5"></line>
            <line number="218" hits="3"></line>
            <line number="225" hits="2"></line>
            <line number="226" hits="1"></line>
            <line number="227" hits="1"></line>
            <line number="229" hits="1"></line>
            <line number="234" hits="0"></line>
            <line number="235" hits="0"></line>
            <line number="236" hits="0"></line>
            <line number="238" hits="0"></line>
            <line number="244" hits="2"></line>
            <line number="245" hits="2"></line>
            <line number="246" hits="0"></line>
            <line number="247" hits="0"></line>
            <line number="249" hits="2"></line>
            <line number="256" hits="3"></line>
            <line number="257" hits="3"></line>
            <line number="258" hits="2"></line>
            <line number="259" hits="2"></line>
            <line number="261" hits="1"></line>
            <line number="267" hits="1"></line>
            <line number="268" hits="0"></line>
            <line number="269" hits="0"></line>
            <line number="271" hits="1"></line>
            <line number="275" hits="9"></line>
            <line number="276" hits="9"></line>
            <line number="277" hits="1"></line>
            <line number="278" hits="1"></line>
            <line number="280" hits="8"></line>
            <line number="281" hits="8"></line>
            <line number="282" hits="0"></line>
            <line number="283" hits="0"></line>
            <line number="285" hits="8"></line>
            <line number="289" hits="7"></line>
            <line number="290" hits="7"></line>
            <line number="291" hits="0"></line>
            <line number="292" hits="0"></line>
            <line number="294" hits="7"></line>
            <line number="295" hits="7"></line>
            <line number="296" hits="0"></line>
            <line number="297" hits="0"></line>
            <line number="299" hits="7"></line>
            <line number="300" hits="0"></line>
            <line number="301" hits="0"></line>
            <line number="303" hits="7"></line>
            <line number="307" hits="9"></line>
            <line number="308" hits="9"></line>
            <line number="309" hits="2"></line>
            <line number="310" hits="2"></line>
            <line number="312" hits="7"></line>
            <line number="313" hits="7"></line>
            <line number="314" hits="0"></line>
            <line number="315" hits="0"></line>
            <line number="317" hits="7"></line>
          </lines>
        </class>
      </classes>
    </package>
    <package name="github.com/alrayyes/pipeline-analytics/internal/auth/sqlite" line-rate="0.7411765" branch-rate="0" complexity="0">
      <classes>
        <class name="-" filename="internal/auth/sqlite/store.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="NewStore" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="31" hits="11"></line>
                <line number="32" hits="11"></line>
              </lines>
            </method>
            <method name="tokenHash" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="398" hits="7"></line>
                <line number="399" hits="7"></line>
                <line number="400" hits="7"></line>
                <line number="401" hits="7"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="31" hits="11"></line>
            <line number="32" hits="11"></line>
            <line number="398" hits="7"></line>
            <line number="399" hits="7"></line>
            <line number="400" hits="7"></line>
            <line number="401" hits="7"></line>
          </lines>
        </class>
        <class name="Store" filename="internal/auth/sqlite/store.go" line-rate="0.73493975" branch-rate="0" complexity="0">
          <methods>
            <method name="CreateUser" signature="" line-rate="0.8095238" branch-rate="0" complexity="0">
              <lines>
                <line number="36" hits="9"></line>
                <line number="37" hits="9"></line>
                <line number="38" hits="0"></line>
                <line number="39" hits="0"></line>
                <line number="41" hits="9"></line>
                <line number="42" hits="1"></line>
                <line number="43" hits="1"></line>
                <line number="45" hits="8"></line>
                <line number="46" hits="8"></line>
                <line number="47" hits="8"></line>
                <line number="48" hits="8"></line>
                <line number="49" hits="8"></line>
                <line number="50" hits="8"></line>
                <line number="52" hits="8"></line>
                <line number="53" hits="8"></line>
                <line number="54" hits="8"></line>
                <line number="55" hits="8"></line>
                <line number="56" hits="8"></line>
                <line number="57" hits="0"></line>
                <line number="58" hits="0"></line>
                <line number="60" hits="8"></line>
              </lines>
            </method>
            <method name="GetUser" signature="" line-rate="0.8181818" branch-rate="0" complexity="0">
              <lines>
                <line number="65" hits="2"></line>
                <line number="66" hits="2"></line>
                <line number="67" hits="2"></line>
                <line number="68" hits="2"></line>
                <line number="69" hits="2"></line>
                <line number="70" hits="1"></line>
                <line number="71" hits="1"></line>
                <line number="73" hits="1"></line>
                <line number="74" hits="0"></line>
                <line number="75" hits="0"></line>
                <line number="77" hits="1"></line>
              </lines>
            </method>
            <method name="PutCredential" signature="" line-rate="0.6666667" branch-rate="0" complexity="0">
              <lines>
                <line number="82" hits="4"></line>
                <line number="83" hits="4"></line>
                <line number="84" hits="0"></line>
                <line number="85" hits="0"></line>
                <line number="87" hits="4"></line>
                <line number="88" hits="4"></line>
                <line number="89" hits="4"></line>
                <line number="90" hits="4"></line>
                <line number="91" hits="4"></line>
                <line number="92" hits="0"></line>
                <line number="93" hits="0"></line>
                <line number="95" hits="4"></line>
              </lines>
            </method>
            <method name="PutCredentialLabeled" signature="" line-rate="0.6666667" branch-rate="0" complexity="0">
              <lines>
                <line number="100" hits="1"></line>
                <line number="101" hits="1"></line>
                <line number="102" hits="0"></line>
                <line number="103" hits="0"></line>
                <line number="105" hits="1"></line>
                <line number="106" hits="1"></line>
                <line number="107" hits="1"></line>
                <line number="108" hits="1"></line>
                <line number="109" hits="1"></line>
                <line number="110" hits="0"></line>
                <line number="111" hits="0"></line>
                <line number="113" hits="1"></line>
              </lines>
            </method>
            <method name="CredentialsForUser" signature="" line-rate="0.61904764" branch-rate="0" complexity="0">
              <lines>
                <line number="118" hits="2"></line>
                <line number="119" hits="2"></line>
                <line number="120" hits="0"></line>
                <line number="121" hits="0"></line>
                <line number="122" hits="2"></line>
                <line number="124" hits="2"></line>
                <line number="125" hits="2"></line>
                <line number="126" hits="2"></line>
                <line number="127" hits="2"></line>
                <line number="128" hits="2"></line>
                <line number="129" hits="0"></line>
                <line number="130" hits="0"></line>
                <line number="132" hits="2"></line>
                <line number="133" hits="2"></line>
                <line number="134" hits="0"></line>
                <line number="135" hits="0"></line>
                <line number="137" hits="2"></line>
                <line number="140" hits="2"></line>
                <line number="141" hits="0"></line>
                <line number="142" hits="0"></line>
                <line number="144" hits="2"></line>
              </lines>
            </method>
            <method name="CredentialInfosForUser" signature="" line-rate="0.7" branch-rate="0" complexity="0">
              <lines>
                <line number="149" hits="3"></line>
                <line number="150" hits="3"></line>
                <line number="151" hits="3"></line>
                <line number="152" hits="3"></line>
                <line number="153" hits="3"></line>
                <line number="154" hits="0"></line>
                <line number="155" hits="0"></line>
                <line number="156" hits="3"></line>
                <line number="158" hits="3"></line>
                <line number="159" hits="3"></line>
                <line number="160" hits="3"></line>
                <line number="161" hits="4"></line>
                <line number="162" hits="4"></line>
                <line number="163" hits="0"></line>
                <line number="164" hits="0"></line>
                <line number="166" hits="4"></line>
                <line number="169" hits="3"></line>
                <line number="170" hits="0"></line>
                <line number="171" hits="0"></line>
                <line number="173" hits="3"></line>
              </lines>
            </method>
            <method name="RevokeCredential" signature="" line-rate="0.6551724" branch-rate="0" complexity="0">
              <lines>
                <line number="178" hits="3"></line>
                <line number="179" hits="3"></line>
                <line number="180" hits="0"></line>
                <line number="181" hits="0"></line>
                <line number="182" hits="3"></line>
                <line number="184" hits="3"></line>
                <line number="185" hits="3"></line>
                <line number="186" hits="0"></line>
                <line number="187" hits="0"></line>
                <line number="189" hits="3"></line>
                <line number="190" hits="1"></line>
                <line number="191" hits="1"></line>
                <line number="193" hits="2"></line>
                <line number="194" hits="2"></line>
                <line number="195" hits="2"></line>
                <line number="196" hits="2"></line>
                <line number="197" hits="0"></line>
                <line number="198" hits="0"></line>
                <line number="200" hits="2"></line>
                <line number="201" hits="2"></line>
                <line number="202" hits="0"></line>
                <line number="203" hits="0"></line>
                <line number="205" hits="2"></line>
                <line number="206" hits="1"></line>
                <line number="207" hits="1"></line>
                <line number="209" hits="1"></line>
                <line number="210" hits="0"></line>
                <line number="211" hits="0"></line>
                <line number="213" hits="1"></line>
              </lines>
            </method>
            <method name="SaveCeremony" signature="" line-rate="0.75" branch-rate="0" complexity="0">
              <lines>
                <line number="218" hits="2"></line>
                <line number="219" hits="2"></line>
                <line number="220" hits="2"></line>
                <line number="221" hits="2"></line>
                <line number="222" hits="2"></line>
                <line number="223" hits="0"></line>
                <line number="224" hits="0"></line>
                <line number="226" hits="2"></line>
              </lines>
            </method>
            <method name="TakeCeremony" signature="" line-rate="0.7894737" branch-rate="0" complexity="0">
              <lines>
                <line number="231" hits="3"></line>
                <line number="232" hits="3"></line>
                <line number="233" hits="3"></line>
                <line number="234" hits="3"></line>
                <line number="235" hits="3"></line>
                <line number="236" hits="3"></line>
                <line number="237" hits="3"></line>
                <line number="238" hits="1"></line>
                <line number="239" hits="1"></line>
                <line number="241" hits="2"></line>
                <line number="242" hits="0"></line>
                <line number="243" hits="0"></line>
                <line number="245" hits="2"></line>
                <line number="246" hits="0"></line>
                <line number="247" hits="0"></line>
                <line number="249" hits="2"></line>
                <line number="250" hits="1"></line>
                <line number="251" hits="1"></line>
                <line number="253" hits="1"></line>
              </lines>
            </method>
            <method name="CreateSession" signature="" line-rate="0.71428573" branch-rate="0" complexity="0">
              <lines>
                <line number="258" hits="1"></line>
                <line number="259" hits="1"></line>
                <line number="260" hits="0"></line>
                <line number="261" hits="0"></line>
                <line number="263" hits="1"></line>
                <line number="264" hits="1"></line>
                <line number="265" hits="1"></line>
                <line number="266" hits="1"></line>
                <line number="267" hits="1"></line>
                <line number="268" hits="1"></line>
                <line number="269" hits="1"></line>
                <line number="270" hits="0"></line>
                <line number="271" hits="0"></line>
                <line number="273" hits="1"></line>
              </lines>
            </method>
            <method name="Session" signature="" line-rate="0.75" branch-rate="0" complexity="0">
              <lines>
                <line number="278" hits="2"></line>
                <line number="279" hits="2"></line>
                <line number="280" hits="2"></line>
                <line number="281" hits="2"></line>
                <line number="282" hits="2"></line>
                <line number="283" hits="2"></line>
                <line number="284" hits="2"></line>
                <line number="285" hits="1"></line>
                <line number="286" hits="1"></line>
                <line number="288" hits="1"></line>
                <line number="289" hits="0"></line>
                <line number="290" hits="0"></line>
                <line number="292" hits="1"></line>
                <line number="293" hits="0"></line>
                <line number="294" hits="0"></line>
                <line number="296" hits="1"></line>
              </lines>
            </method>
            <method name="DeleteSession" signature="" line-rate="0.5" branch-rate="0" complexity="0">
              <lines>
                <line number="301" hits="1"></line>
                <line number="302" hits="0"></line>
                <line number="303" hits="0"></line>
                <line number="305" hits="1"></line>
              </lines>
            </method>
            <method name="CreateToken" signature="" line-rate="0.8518519" branch-rate="0" complexity="0">
              <lines>
                <line number="310" hits="4"></line>
                <line number="311" hits="4"></line>
                <line number="312" hits="0"></line>
                <line number="313" hits="0"></line>
                <line number="315" hits="4"></line>
                <line number="316" hits="4"></line>
                <line number="317" hits="4"></line>
                <line number="320" hits="4"></line>
                <line number="321" hits="4"></line>
                <line number="322" hits="2"></line>
                <line number="323" hits="2"></line>
                <line number="325" hits="4"></line>
                <line number="326" hits="4"></line>
                <line number="327" hits="4"></line>
                <line number="328" hits="4"></line>
                <line number="329" hits="4"></line>
                <line number="330" hits="4"></line>
                <line number="331" hits="4"></line>
                <line number="332" hits="4"></line>
                <line number="334" hits="4"></line>
                <line number="335" hits="4"></line>
                <line number="336" hits="4"></line>
                <line number="337" hits="4"></line>
                <line number="338" hits="4"></line>
                <line number="339" hits="0"></line>
                <line number="340" hits="0"></line>
                <line number="342" hits="4"></line>
              </lines>
            </method>
            <method name="TokenUserID" signature="" line-rate="0.9" branch-rate="0" complexity="0">
              <lines>
                <line number="347" hits="3"></line>
                <line number="348" hits="3"></line>
                <line number="349" hits="3"></line>
                <line number="350" hits="3"></line>
                <line number="351" hits="3"></line>
                <line number="352" hits="3"></line>
                <line number="353" hits="3"></line>
                <line number="354" hits="3"></line>
                <line number="355" hits="3"></line>
                <line number="356" hits="3"></line>
                <line number="357" hits="3"></line>
                <line number="358" hits="1"></line>
                <line number="359" hits="1"></line>
                <line number="361" hits="2"></line>
                <line number="362" hits="0"></line>
                <line number="363" hits="0"></line>
                <line number="365" hits="2"></line>
                <line number="366" hits="1"></line>
                <line number="367" hits="1"></line>
                <line number="369" hits="1"></line>
              </lines>
            </method>
            <method name="RevokeToken" signature="" line-rate="0.6" branch-rate="0" complexity="0">
              <lines>
                <line number="374" hits="1"></line>
                <line number="375" hits="1"></line>
                <line number="376" hits="1"></line>
                <line number="377" hits="1"></line>
                <line number="378" hits="1"></line>
                <line number="379" hits="0"></line>
                <line number="380" hits="0"></line>
                <line number="382" hits="1"></line>
                <line number="383" hits="1"></line>
                <line number="384" hits="0"></line>
                <line number="385" hits="0"></line>
                <line number="387" hits="1"></line>
                <line number="388" hits="0"></line>
                <line number="389" hits="0"></line>
                <line number="391" hits="1"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="36" hits="9"></line>
            <line number="37" hits="9"></line>
            <line number="38" hits="0"></line>
            <line number="39" hits="0"></line>
            <line number="41" hits="9"></line>
            <line number="42" hits="1"></line>
            <line number="43" hits="1"></line>
            <line number="45" hits="8"></line>
            <line number="46" hits="8"></line>
            <line number="47" hits="8"></line>
            <line number="48" hits="8"></line>
            <line number="49" hits="8"></line>
            <line number="50" hits="8"></line>
            <line number="52" hits="8"></line>
            <line number="53" hits="8"></line>
            <line number="54" hits="8"></line>
            <line number="55" hits="8"></line>
            <line number="56" hits="8"></line>
            <line number="57" hits="0"></line>
            <line number="58" hits="0"></line>
            <line number="60" hits="8"></line>
            <line number="65" hits="2"></line>
            <line number="66" hits="2"></line>
            <line number="67" hits="2"></line>
            <line number="68" hits="2"></line>
            <line number="69" hits="2"></line>
            <line number="70" hits="1"></line>
            <line number="71" hits="1"></line>
            <line number="73" hits="1"></line>
            <line number="74" hits="0"></line>
            <line number="75" hits="0"></line>
            <line number="77" hits="1"></line>
            <line number="82" hits="4"></line>
            <line number="83" hits="4"></line>
            <line number="84" hits="0"></line>
            <line number="85" hits="0"></line>
            <line number="87" hits="4"></line>
            <line number="88" hits="4"></line>
            <line number="89" hits="4"></line>
            <line number="90" hits="4"></line>
            <line number="91" hits="4"></line>
            <line number="92" hits="0"></line>
            <line number="93" hits="0"></line>
            <line number="95" hits="4"></line>
            <line number="100" hits="1"></line>
            <line number="101" hits="1"></line>
            <line number="102" hits="0"></line>
            <line number="103" hits="0"></line>
            <line number="105" hits="1"></line>
            <line number="106" hits="1"></line>
            <line number="107" hits="1"></line>
            <line number="108" hits="1"></line>
            <line number="109" hits="1"></line>
            <line number="110" hits="0"></line>
            <line number="111" hits="0"></line>
            <line number="113" hits="1"></line>
            <line number="118" hits="2"></line>
            <line number="119" hits="2"></line>
            <line number="120" hits="0"></line>
            <line number="121" hits="0"></line>
            <line number="122" hits="2"></line>
            <line number="124" hits="2"></line>
            <line number="125" hits="2"></line>
            <line number="126" hits="2"></line>
            <line number="127" hits="2"></line>
            <line number="128" hits="2"></line>
            <line number="129" hits="0"></line>
            <line number="130" hits="0"></line>
            <line number="132" hits="2"></line>
            <line number="133" hits="2"></line>
            <line number="134" hits="0"></line>
            <line number="135" hits="0"></line>
            <line number="137" hits="2"></line>
            <line number="140" hits="2"></line>
            <line number="141" hits="0"></line>
            <line number="142" hits="0"></line>
            <line number="144" hits="2"></line>
            <line number="149" hits="3"></line>
            <line number="150" hits="3"></line>
            <line number="151" hits="3"></line>
            <line number="152" hits="3"></line>
            <line number="153" hits="3"></line>
            <line number="154" hits="0"></line>
            <line number="155" hits="0"></line>
            <line number="156" hits="3"></line>
            <line number="158" hits="3"></line>
            <line number="159" hits="3"></line>
            <line number="160" hits="3"></line>
            <line number="161" hits="4"></line>
            <line number="162" hits="4"></line>
            <line number="163" hits="0"></line>
            <line number="164" hits="0"></line>
            <line number="166" hits="4"></line>
            <line number="169" hits="3"></line>
            <line number="170" hits="0"></line>
            <line number="171" hits="0"></line>
            <line number="173" hits="3"></line>
            <line number="178" hits="3"></line>
            <line number="179" hits="3"></line>
            <line number="180" hits="0"></line>
            <line number="181" hits="0"></line>
            <line number="182" hits="3"></line>
            <line number="184" hits="3"></line>
            <line number="185" hits="3"></line>
            <line number="186" hits="0"></line>
            <line number="187" hits="0"></line>
            <line number="189" hits="3"></line>
            <line number="190" hits="1"></line>
            <line number="191" hits="1"></line>
            <line number="193" hits="2"></line>
            <line number="194" hits="2"></line>
            <line number="195" hits="2"></line>
            <line number="196" hits="2"></line>
            <line number="197" hits="0"></line>
            <line number="198" hits="0"></line>
            <line number="200" hits="2"></line>
            <line number="201" hits="2"></line>
            <line number="202" hits="0"></line>
            <line number="203" hits="0"></line>
            <line number="205" hits="2"></line>
            <line number="206" hits="1"></line>
            <line number="207" hits="1"></line>
            <line number="209" hits="1"></line>
            <line number="210" hits="0"></line>
            <line number="211" hits="0"></line>
            <line number="213" hits="1"></line>
            <line number="218" hits="2"></line>
            <line number="219" hits="2"></line>
            <line number="220" hits="2"></line>
            <line number="221" hits="2"></line>
            <line number="222" hits="2"></line>
            <line number="223" hits="0"></line>
            <line number="224" hits="0"></line>
            <line number="226" hits="2"></line>
            <line number="231" hits="3"></line>
            <line number="232" hits="3"></line>
            <line number="233" hits="3"></line>
            <line number="234" hits="3"></line>
            <line number="235" hits="3"></line>
            <line number="236" hits="3"></line>
            <line number="237" hits="3"></line>
            <line number="238" hits="1"></line>
            <line number="239" hits="1"></line>
            <line number="241" hits="2"></line>
            <line number="242" hits="0"></line>
            <line number="243" hits="0"></line>
            <line number="245" hits="2"></line>
            <line number="246" hits="0"></line>
            <line number="247" hits="0"></line>
            <line number="249" hits="2"></line>
            <line number="250" hits="1"></line>
            <line number="251" hits="1"></line>
            <line number="253" hits="1"></line>
            <line number="258" hits="1"></line>
            <line number="259" hits="1"></line>
            <line number="260" hits="0"></line>
            <line number="261" hits="0"></line>
            <line number="263" hits="1"></line>
            <line number="264" hits="1"></line>
            <line number="265" hits="1"></line>
            <line number="266" hits="1"></line>
            <line number="267" hits="1"></line>
            <line number="268" hits="1"></line>
            <line number="269" hits="1"></line>
            <line number="270" hits="0"></line>
            <line number="271" hits="0"></line>
            <line number="273" hits="1"></line>
            <line number="278" hits="2"></line>
            <line number="279" hits="2"></line>
            <line number="280" hits="2"></line>
            <line number="281" hits="2"></line>
            <line number="282" hits="2"></line>
            <line number="283" hits="2"></line>
            <line number="284" hits="2"></line>
            <line number="285" hits="1"></line>
            <line number="286" hits="1"></line>
            <line number="288" hits="1"></line>
            <line number="289" hits="0"></line>
            <line number="290" hits="0"></line>
            <line number="292" hits="1"></line>
            <line number="293" hits="0"></line>
            <line number="294" hits="0"></line>
            <line number="296" hits="1"></line>
            <line number="301" hits="1"></line>
            <line number="302" hits="0"></line>
            <line number="303" hits="0"></line>
            <line number="305" hits="1"></line>
            <line number="310" hits="4"></line>
            <line number="311" hits="4"></line>
            <line number="312" hits="0"></line>
            <line number="313" hits="0"></line>
            <line number="315" hits="4"></line>
            <line number="316" hits="4"></line>
            <line number="317" hits="4"></line>
            <line number="320" hits="4"></line>
            <line number="321" hits="4"></line>
            <line number="322" hits="2"></line>
            <line number="323" hits="2"></line>
            <line number="325" hits="4"></line>
            <line number="326" hits="4"></line>
            <line number="327" hits="4"></line>
            <line number="328" hits="4"></line>
            <line number="329" hits="4"></line>
            <line number="330" hits="4"></line>
            <line number="331" hits="4"></line>
            <line number="332" hits="4"></line>
            <line number="334" hits="4"></line>
            <line number="335" hits="4"></line>
            <line number="336" hits="4"></line>
            <line number="337" hits="4"></line>
            <line number="338" hits="4"></line>
            <line number="339" hits="0"></line>
            <line number="340" hits="0"></line>
            <line number="342" hits="4"></line>
            <line number="347" hits="3"></line>
            <line number="348" hits="3"></line>
            <line number="349" hits="3"></line>
            <line number="350" hits="3"></line>
            <line number="351" hits="3"></line>
            <line number="352" hits="3"></line>
            <line number="353" hits="3"></line>
            <line number="354" hits="3"></line>
            <line number="355" hits="3"></line>
            <line number="356" hits="3"></line>
            <line number="357" hits="3"></line>
            <line number="358" hits="1"></line>
            <line number="359" hits="1"></line>
            <line number="361" hits="2"></line>
            <line number="362" hits="0"></line>
            <line number="363" hits="0"></line>
            <line number="365" hits="2"></line>
            <line number="366" hits="1"></line>
            <line number="367" hits="1"></line>
            <line number="369" hits="1"></line>
            <line number="374" hits="1"></line>
            <line number="375" hits="1"></line>
            <line number="376" hits="1"></line>
            <line number="377" hits="1"></line>
            <line number="378" hits="1"></line>
            <line number="379" hits="0"></line>
            <line number="380" hits="0"></line>
            <line number="382" hits="1"></line>
            <line number="383" hits="1"></line>
            <line number="384" hits="0"></line>
            <line number="385" hits="0"></line>
            <line number="387" hits="1"></line>
            <line number="388" hits="0"></line>
            <line number="389" hits="0"></line>
            <line number="391" hits="1"></line>
          </lines>
        </class>
      </classes>
    </package>
    <package name="github.com/alrayyes/pipeline-analytics/internal/config" line-rate="1" branch-rate="0" complexity="0">
      <classes>
        <class name="Config" filename="internal/config/config.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="Validate" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="52" hits="9"></line>
                <line number="53" hits="1"></line>
                <line number="54" hits="1"></line>
                <line number="56" hits="8"></line>
                <line number="57" hits="1"></line>
                <line number="58" hits="1"></line>
                <line number="60" hits="7"></line>
                <line number="61" hits="1"></line>
                <line number="62" hits="1"></line>
                <line number="64" hits="6"></line>
                <line number="65" hits="1"></line>
                <line number="66" hits="1"></line>
                <line number="68" hits="5"></line>
                <line number="69" hits="1"></line>
                <line number="70" hits="1"></line>
                <line number="72" hits="4"></line>
                <line number="73" hits="1"></line>
                <line number="74" hits="1"></line>
                <line number="76" hits="3"></line>
                <line number="77" hits="1"></line>
                <line number="78" hits="1"></line>
                <line number="80" hits="2"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="52" hits="9"></line>
            <line number="53" hits="1"></line>
            <line number="54" hits="1"></line>
            <line number="56" hits="8"></line>
            <line number="57" hits="1"></line>
            <line number="58" hits="1"></line>
            <line number="60" hits="7"></line>
            <line number="61" hits="1"></line>
            <line number="62" hits="1"></line>
            <line number="64" hits="6"></line>
            <line number="65" hits="1"></line>
            <line number="66" hits="1"></line>
            <line number="68" hits="5"></line>
            <line number="69" hits="1"></line>
            <line number="70" hits="1"></line>
            <line number="72" hits="4"></line>
            <line number="73" hits="1"></line>
            <line number="74" hits="1"></line>
            <line number="76" hits="3"></line>
            <line number="77" hits="1"></line>
            <line number="78" hits="1"></line>
            <line number="80" hits="2"></line>
          </lines>
        </class>
      </classes>
    </package>
    <package name="github.com/alrayyes/pipeline-analytics/internal/crypto" line-rate="0.7" branch-rate="0" complexity="0">
      <classes>
        <class name="-" filename="internal/crypto/crypto.go" line-rate="0.7" branch-rate="0" complexity="0">
          <methods>
            <method name="RandomHex" signature="" line-rate="0.6" branch-rate="0" complexity="0">
              <lines>
                <line number="17" hits="2"></line>
                <line number="18" hits="2"></line>
                <line number="19" hits="0"></line>
                <line number="20" hits="0"></line>
                <line number="22" hits="2"></line>
              </lines>
            </method>
            <method name="Encrypt" signature="" line-rate="0.7777778" branch-rate="0" complexity="0">
              <lines>
                <line number="35" hits="3"></line>
                <line number="36" hits="3"></line>
                <line number="37" hits="1"></line>
                <line number="38" hits="1"></line>
                <line number="40" hits="2"></line>
                <line number="41" hits="2"></line>
                <line number="42" hits="0"></line>
                <line number="43" hits="0"></line>
                <line number="45" hits="2"></line>
              </lines>
            </method>
            <method name="Decrypt" signature="" line-rate="0.71428573" branch-rate="0" complexity="0">
              <lines>
                <line number="50" hits="2"></line>
                <line number="51" hits="2"></line>
                <line number="52" hits="0"></line>
                <line number="53" hits="0"></line>
                <line number="55" hits="2"></line>
                <line number="56" hits="0"></line>
                <line number="57" hits="0"></line>
                <line number="59" hits="2"></line>
                <line number="60" hits="2"></line>
                <line number="61" hits="2"></line>
                <line number="62" hits="2"></line>
                <line number="63" hits="1"></line>
                <line number="64" hits="1"></line>
                <line number="66" hits="1"></line>
              </lines>
            </method>
            <method name="newGCM" signature="" line-rate="0.6666667" branch-rate="0" complexity="0">
              <lines>
                <line number="70" hits="5"></line>
                <line number="71" hits="1"></line>
                <line number="72" hits="1"></line>
                <line number="74" hits="4"></line>
                <line number="75" hits="4"></line>
                <line number="76" hits="0"></line>
                <line number="77" hits="0"></line>
                <line number="79" hits="4"></line>
                <line number="80" hits="4"></line>
                <line number="81" hits="0"></line>
                <line number="82" hits="0"></line>
                <line number="84" hits="4"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="17" hits="2"></line>
            <line number="18" hits="2"></line>
            <line number="19" hits="0"></line>
            <line number="20" hits="0"></line>
            <line number="22" hits="2"></line>
            <line number="35" hits="3"></line>
            <line number="36" hits="3"></line>
            <line number="37" hits="1"></line>
            <line number="38" hits="1"></line>
            <line number="40" hits="2"></line>
            <line number="41" hits="2"></line>
            <line number="42" hits="0"></line>
            <line number="43" hits="0"></line>
            <line number="45" hits="2"></line>
            <line number="50" hits="2"></line>
            <line number="51" hits="2"></line>
            <line number="52" hits="0"></line>
            <line number="53" hits="0"></line>
            <line number="55" hits="2"></line>
            <line number="56" hits="0"></line>
            <line number="57" hits="0"></line>
            <line number="59" hits="2"></line>
            <line number="60" hits="2"></line>
            <line number="61" hits="2"></line>
            <line number="62" hits="2"></line>
            <line number="63" hits="1"></line>
            <line number="64" hits="1"></line>
            <line number="66" hits="1"></line>
            <line number="70" hits="5"></line>
            <line number="71" hits="1"></line>
            <line number="72" hits="1"></line>
            <line number="74" hits="4"></line>
            <line number="75" hits="4"></line>
            <line number="76" hits="0"></line>
            <line number="77" hits="0"></line>
            <line number="79" hits="4"></line>
            <line number="80" hits="4"></line>
            <line number="81" hits="0"></line>
            <line number="82" hits="0"></line>
            <line number="84" hits="4"></line>
          </lines>
        </class>
      </classes>
    </package>
    <package name="github.com/alrayyes/pipeline-analytics/internal/db" line-rate="0.70454544" branch-rate="0" complexity="0">
      <classes>
        <class name="-" filename="internal/db/checkdir.go" line-rate="0.8" branch-rate="0" complexity="0">
          <methods>
            <method name="CheckDir" signature="" line-rate="0.8" branch-rate="0" complexity="0">
              <lines>
                <line number="27" hits="7"></line>
                <line number="28" hits="1"></line>
                <line number="29" hits="1"></line>
                <line number="31" hits="6"></line>
                <line number="32" hits="6"></line>
                <line number="33" hits="6"></line>
                <line number="34" hits="6"></line>
                <line number="35" hits="6"></line>
                <line number="37" hits="1"></line>
                <line number="39" hits="0"></line>
                <line number="41" hits="1"></line>
                <line number="44" hits="4"></line>
                <line number="45" hits="4"></line>
                <line number="46" hits="1"></line>
                <line number="47" hits="1"></line>
                <line number="48" hits="1"></line>
                <line number="50" hits="3"></line>
                <line number="51" hits="3"></line>
                <line number="52" hits="3"></line>
                <line number="53" hits="0"></line>
                <line number="54" hits="0"></line>
                <line number="56" hits="3"></line>
                <line number="57" hits="0"></line>
                <line number="58" hits="0"></line>
                <line number="60" hits="3"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="27" hits="7"></line>
            <line number="28" hits="1"></line>
            <line number="29" hits="1"></line>
            <line number="31" hits="6"></line>
            <line number="32" hits="6"></line>
            <line number="33" hits="6"></line>
            <line number="34" hits="6"></line>
            <line number="35" hits="6"></line>
            <line number="37" hits="1"></line>
            <line number="39" hits="0"></line>
            <line number="41" hits="1"></line>
            <line number="44" hits="4"></line>
            <line number="45" hits="4"></line>
            <line number="46" hits="1"></line>
            <line number="47" hits="1"></line>
            <line number="48" hits="1"></line>
            <line number="50" hits="3"></line>
            <line number="51" hits="3"></line>
            <line number="52" hits="3"></line>
            <line number="53" hits="0"></line>
            <line number="54" hits="0"></line>
            <line number="56" hits="3"></line>
            <line number="57" hits="0"></line>
            <line number="58" hits="0"></line>
            <line number="60" hits="3"></line>
          </lines>
        </class>
        <class name="-" filename="internal/db/db.go" line-rate="0.71428573" branch-rate="0" complexity="0">
          <methods>
            <method name="Open" signature="" line-rate="0.71428573" branch-rate="0" complexity="0">
              <lines>
                <line number="20" hits="3"></line>
                <line number="21" hits="3"></line>
                <line number="22" hits="0"></line>
                <line number="23" hits="0"></line>
                <line number="25" hits="3"></line>
                <line number="26" hits="3"></line>
                <line number="27" hits="3"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="20" hits="3"></line>
            <line number="21" hits="3"></line>
            <line number="22" hits="0"></line>
            <line number="23" hits="0"></line>
            <line number="25" hits="3"></line>
            <line number="26" hits="3"></line>
            <line number="27" hits="3"></line>
          </lines>
        </class>
        <class name="-" filename="internal/db/migrate.go" line-rate="0.5" branch-rate="0" complexity="0">
          <methods>
            <method name="Migrate" signature="" line-rate="0.5" branch-rate="0" complexity="0">
              <lines>
                <line number="18" hits="2"></line>
                <line number="19" hits="2"></line>
                <line number="20" hits="0"></line>
                <line number="21" hits="0"></line>
                <line number="23" hits="2"></line>
                <line number="24" hits="2"></line>
                <line number="25" hits="0"></line>
                <line number="26" hits="0"></line>
                <line number="28" hits="2"></line>
                <line number="29" hits="0"></line>
                <line number="30" hits="0"></line>
                <line number="32" hits="2"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="18" hits="2"></line>
            <line number="19" hits="2"></line>
            <line number="20" hits="0"></line>
            <line number="21" hits="0"></line>
            <line number="23" hits="2"></line>
            <line number="24" hits="2"></line>
            <line number="25" hits="0"></line>
            <line number="26" hits="0"></line>
            <line number="28" hits="2"></line>
            <line number="29" hits="0"></line>
            <line number="30" hits="0"></line>
            <line number="32" hits="2"></line>
          </lines>
        </class>
      </classes>
    </package>
    <package name="github.com/alrayyes/pipeline-analytics/internal/httpserver" line-rate="0.88859695" branch-rate="0" complexity="0">
      <classes>
        <class name="authHandler" filename="internal/httpserver/auth.go" line-rate="0.615894" branch-rate="0" complexity="0">
          <methods>
            <method name="registerOptions" signature="" line-rate="0.85714287" branch-rate="0" complexity="0">
              <lines>
                <line number="22" hits="4"></line>
                <line number="23" hits="4"></line>
                <line number="24" hits="4"></line>
                <line number="26" hits="1"></line>
                <line number="28" hits="0"></line>
                <line number="30" hits="3"></line>
                <line number="31" hits="3"></line>
              </lines>
            </method>
            <method name="register" signature="" line-rate="0.5714286" branch-rate="0" complexity="0">
              <lines>
                <line number="36" hits="3"></line>
                <line number="37" hits="3"></line>
                <line number="38" hits="0"></line>
                <line number="39" hits="0"></line>
                <line number="40" hits="0"></line>
                <line number="41" hits="0"></line>
                <line number="43" hits="3"></line>
                <line number="44" hits="3"></line>
                <line number="45" hits="3"></line>
                <line number="47" hits="0"></line>
                <line number="49" hits="0"></line>
                <line number="51" hits="3"></line>
                <line number="52" hits="3"></line>
                <line number="53" hits="3"></line>
              </lines>
            </method>
            <method name="loginOptions" signature="" line-rate="0.71428573" branch-rate="0" complexity="0">
              <lines>
                <line number="58" hits="1"></line>
                <line number="59" hits="1"></line>
                <line number="60" hits="1"></line>
                <line number="62" hits="0"></line>
                <line number="64" hits="0"></line>
                <line number="66" hits="1"></line>
                <line number="67" hits="1"></line>
              </lines>
            </method>
            <method name="login" signature="" line-rate="0.46666667" branch-rate="0" complexity="0">
              <lines>
                <line number="72" hits="1"></line>
                <line number="73" hits="1"></line>
                <line number="74" hits="0"></line>
                <line number="75" hits="0"></line>
                <line number="76" hits="0"></line>
                <line number="77" hits="0"></line>
                <line number="79" hits="1"></line>
                <line number="80" hits="1"></line>
                <line number="81" hits="0"></line>
                <line number="82" hits="0"></line>
                <line number="83" hits="0"></line>
                <line number="84" hits="0"></line>
                <line number="86" hits="1"></line>
                <line number="87" hits="1"></line>
                <line number="88" hits="1"></line>
              </lines>
            </method>
            <method name="logout" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="92" hits="1"></line>
                <line number="93" hits="1"></line>
                <line number="94" hits="1"></line>
                <line number="96" hits="1"></line>
                <line number="97" hits="1"></line>
              </lines>
            </method>
            <method name="issueToken" signature="" line-rate="0.73913044" branch-rate="0" complexity="0">
              <lines>
                <line number="130" hits="9"></line>
                <line number="131" hits="9"></line>
                <line number="132" hits="1"></line>
                <line number="133" hits="1"></line>
                <line number="134" hits="1"></line>
                <line number="135" hits="1"></line>
                <line number="137" hits="8"></line>
                <line number="138" hits="8"></line>
                <line number="139" hits="0"></line>
                <line number="140" hits="0"></line>
                <line number="142" hits="8"></line>
                <line number="143" hits="8"></line>
                <line number="144" hits="2"></line>
                <line number="145" hits="2"></line>
                <line number="146" hits="2"></line>
                <line number="147" hits="2"></line>
                <line number="149" hits="6"></line>
                <line number="150" hits="6"></line>
                <line number="151" hits="0"></line>
                <line number="152" hits="0"></line>
                <line number="153" hits="0"></line>
                <line number="154" hits="0"></line>
                <line number="156" hits="6"></line>
              </lines>
            </method>
            <method name="revokeToken" signature="" line-rate="0.8333333" branch-rate="0" complexity="0">
              <lines>
                <line number="162" hits="2"></line>
                <line number="163" hits="2"></line>
                <line number="164" hits="1"></line>
                <line number="165" hits="1"></line>
                <line number="166" hits="1"></line>
                <line number="167" hits="1"></line>
                <line number="169" hits="1"></line>
                <line number="170" hits="1"></line>
                <line number="171" hits="1"></line>
                <line number="173" hits="0"></line>
                <line number="175" hits="0"></line>
                <line number="177" hits="1"></line>
              </lines>
            </method>
            <method name="addCredentialOptions" signature="" line-rate="0.42857143" branch-rate="0" complexity="0">
              <lines>
                <line number="186" hits="1"></line>
                <line number="187" hits="1"></line>
                <line number="188" hits="0"></line>
                <line number="189" hits="0"></line>
                <line number="190" hits="0"></line>
                <line number="191" hits="0"></line>
                <line number="193" hits="1"></line>
                <line number="194" hits="1"></line>
                <line number="195" hits="0"></line>
                <line number="196" hits="0"></line>
                <line number="197" hits="0"></line>
                <line number="198" hits="0"></line>
                <line number="200" hits="1"></line>
                <line number="201" hits="1"></line>
              </lines>
            </method>
            <method name="addCredential" signature="" line-rate="0.45454547" branch-rate="0" complexity="0">
              <lines>
                <line number="207" hits="1"></line>
                <line number="208" hits="1"></line>
                <line number="209" hits="0"></line>
                <line number="210" hits="0"></line>
                <line number="211" hits="0"></line>
                <line number="212" hits="0"></line>
                <line number="214" hits="1"></line>
                <line number="215" hits="1"></line>
                <line number="216" hits="0"></line>
                <line number="217" hits="0"></line>
                <line number="218" hits="0"></line>
                <line number="219" hits="0"></line>
                <line number="221" hits="1"></line>
                <line number="222" hits="1"></line>
                <line number="223" hits="1"></line>
                <line number="224" hits="1"></line>
                <line number="225" hits="0"></line>
                <line number="226" hits="0"></line>
                <line number="227" hits="0"></line>
                <line number="228" hits="0"></line>
                <line number="230" hits="1"></line>
                <line number="231" hits="1"></line>
              </lines>
            </method>
            <method name="listCredentials" signature="" line-rate="0.3846154" branch-rate="0" complexity="0">
              <lines>
                <line number="237" hits="2"></line>
                <line number="238" hits="2"></line>
                <line number="239" hits="0"></line>
                <line number="240" hits="0"></line>
                <line number="241" hits="0"></line>
                <line number="242" hits="0"></line>
                <line number="244" hits="2"></line>
                <line number="245" hits="2"></line>
                <line number="246" hits="0"></line>
                <line number="247" hits="0"></line>
                <line number="248" hits="0"></line>
                <line number="249" hits="0"></line>
                <line number="251" hits="2"></line>
              </lines>
            </method>
            <method name="revokeCredential" signature="" line-rate="0.7368421" branch-rate="0" complexity="0">
              <lines>
                <line number="257" hits="4"></line>
                <line number="258" hits="4"></line>
                <line number="259" hits="0"></line>
                <line number="260" hits="0"></line>
                <line number="261" hits="0"></line>
                <line number="262" hits="0"></line>
                <line number="264" hits="4"></line>
                <line number="265" hits="4"></line>
                <line number="266" hits="1"></line>
                <line number="267" hits="1"></line>
                <line number="268" hits="1"></line>
                <line number="269" hits="1"></line>
                <line number="271" hits="3"></line>
                <line number="272" hits="3"></line>
                <line number="273" hits="3"></line>
                <line number="275" hits="1"></line>
                <line number="277" hits="1"></line>
                <line number="279" hits="0"></line>
                <line number="281" hits="1"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="22" hits="4"></line>
            <line number="23" hits="4"></line>
            <line number="24" hits="4"></line>
            <line number="26" hits="1"></line>
            <line number="28" hits="0"></line>
            <line number="30" hits="3"></line>
            <line number="31" hits="3"></line>
            <line number="36" hits="3"></line>
            <line number="37" hits="3"></line>
            <line number="38" hits="0"></line>
            <line number="39" hits="0"></line>
            <line number="40" hits="0"></line>
            <line number="41" hits="0"></line>
            <line number="43" hits="3"></line>
            <line number="44" hits="3"></line>
            <line number="45" hits="3"></line>
            <line number="47" hits="0"></line>
            <line number="49" hits="0"></line>
            <line number="51" hits="3"></line>
            <line number="52" hits="3"></line>
            <line number="53" hits="3"></line>
            <line number="58" hits="1"></line>
            <line number="59" hits="1"></line>
            <line number="60" hits="1"></line>
            <line number="62" hits="0"></line>
            <line number="64" hits="0"></line>
            <line number="66" hits="1"></line>
            <line number="67" hits="1"></line>
            <line number="72" hits="1"></line>
            <line number="73" hits="1"></line>
            <line number="74" hits="0"></line>
            <line number="75" hits="0"></line>
            <line number="76" hits="0"></line>
            <line number="77" hits="0"></line>
            <line number="79" hits="1"></line>
            <line number="80" hits="1"></line>
            <line number="81" hits="0"></line>
            <line number="82" hits="0"></line>
            <line number="83" hits="0"></line>
            <line number="84" hits="0"></line>
            <line number="86" hits="1"></line>
            <line number="87" hits="1"></line>
            <line number="88" hits="1"></line>
            <line number="92" hits="1"></line>
            <line number="93" hits="1"></line>
            <line number="94" hits="1"></line>
            <line number="96" hits="1"></line>
            <line number="97" hits="1"></line>
            <line number="130" hits="9"></line>
            <line number="131" hits="9"></line>
            <line number="132" hits="1"></line>
            <line number="133" hits="1"></line>
            <line number="134" hits="1"></line>
            <line number="135" hits="1"></line>
            <line number="137" hits="8"></line>
            <line number="138" hits="8"></line>
            <line number="139" hits="0"></line>
            <line number="140" hits="0"></line>
            <line number="142" hits="8"></line>
            <line number="143" hits="8"></line>
            <line number="144" hits="2"></line>
            <line number="145" hits="2"></line>
            <line number="146" hits="2"></line>
            <line number="147" hits="2"></line>
            <line number="149" hits="6"></line>
            <line number="150" hits="6"></line>
            <line number="151" hits="0"></line>
            <line number="152" hits="0"></line>
            <line number="153" hits="0"></line>
            <line number="154" hits="0"></line>
            <line number="156" hits="6"></line>
            <line number="162" hits="2"></line>
            <line number="163" hits="2"></line>
            <line number="164" hits="1"></line>
            <line number="165" hits="1"></line>
            <line number="166" hits="1"></line>
            <line number="167" hits="1"></line>
            <line number="169" hits="1"></line>
            <line number="170" hits="1"></line>
            <line number="171" hits="1"></line>
            <line number="173" hits="0"></line>
            <line number="175" hits="0"></line>
            <line number="177" hits="1"></line>
            <line number="186" hits="1"></line>
            <line number="187" hits="1"></line>
            <line number="188" hits="0"></line>
            <line number="189" hits="0"></line>
            <line number="190" hits="0"></line>
            <line number="191" hits="0"></line>
            <line number="193" hits="1"></line>
            <line number="194" hits="1"></line>
            <line number="195" hits="0"></line>
            <line number="196" hits="0"></line>
            <line number="197" hits="0"></line>
            <line number="198" hits="0"></line>
            <line number="200" hits="1"></line>
            <line number="201" hits="1"></line>
            <line number="207" hits="1"></line>
            <line number="208" hits="1"></line>
            <line number="209" hits="0"></line>
            <line number="210" hits="0"></line>
            <line number="211" hits="0"></line>
            <line number="212" hits="0"></line>
            <line number="214" hits="1"></line>
            <line number="215" hits="1"></line>
            <line number="216" hits="0"></line>
            <line number="217" hits="0"></line>
            <line number="218" hits="0"></line>
            <line number="219" hits="0"></line>
            <line number="221" hits="1"></line>
            <line number="222" hits="1"></line>
            <line number="223" hits="1"></line>
            <line number="224" hits="1"></line>
            <line number="225" hits="0"></line>
            <line number="226" hits="0"></line>
            <line number="227" hits="0"></line>
            <line number="228" hits="0"></line>
            <line number="230" hits="1"></line>
            <line number="231" hits="1"></line>
            <line number="237" hits="2"></line>
            <line number="238" hits="2"></line>
            <line number="239" hits="0"></line>
            <line number="240" hits="0"></line>
            <line number="241" hits="0"></line>
            <line number="242" hits="0"></line>
            <line number="244" hits="2"></line>
            <line number="245" hits="2"></line>
            <line number="246" hits="0"></line>
            <line number="247" hits="0"></line>
            <line number="248" hits="0"></line>
            <line number="249" hits="0"></line>
            <line number="251" hits="2"></line>
            <line number="257" hits="4"></line>
            <line number="258" hits="4"></line>
            <line number="259" hits="0"></line>
            <line number="260" hits="0"></line>
            <line number="261" hits="0"></line>
            <line number="262" hits="0"></line>
            <line number="264" hits="4"></line>
            <line number="265" hits="4"></line>
            <line number="266" hits="1"></line>
            <line number="267" hits="1"></line>
            <line number="268" hits="1"></line>
            <line number="269" hits="1"></line>
            <line number="271" hits="3"></line>
            <line number="272" hits="3"></line>
            <line number="273" hits="3"></line>
            <line number="275" hits="1"></line>
            <line number="277" hits="1"></line>
            <line number="279" hits="0"></line>
            <line number="281" hits="1"></line>
          </lines>
        </class>
        <class name="issueTokenRequest" filename="internal/httpserver/auth.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="lifetime" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="111" hits="8"></line>
                <line number="112" hits="4"></line>
                <line number="113" hits="4"></line>
                <line number="115" hits="4"></line>
                <line number="116" hits="2"></line>
                <line number="117" hits="2"></line>
                <line number="119" hits="2"></line>
                <line number="120" hits="1"></line>
                <line number="121" hits="1"></line>
                <line number="123" hits="1"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="111" hits="8"></line>
            <line number="112" hits="4"></line>
            <line number="113" hits="4"></line>
            <line number="115" hits="4"></line>
            <line number="116" hits="2"></line>
            <line number="117" hits="2"></line>
            <line number="119" hits="2"></line>
            <line number="120" hits="1"></line>
            <line number="121" hits="1"></line>
            <line number="123" hits="1"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/auth.go" line-rate="0.94736844" branch-rate="0" complexity="0">
          <methods>
            <method name="toUserDTO" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="290" hits="3"></line>
                <line number="291" hits="3"></line>
              </lines>
            </method>
            <method name="toTokenDTO" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="304" hits="6"></line>
                <line number="305" hits="6"></line>
              </lines>
            </method>
            <method name="toCredentialDTOs" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="320" hits="2"></line>
                <line number="321" hits="2"></line>
                <line number="322" hits="3"></line>
                <line number="323" hits="3"></line>
                <line number="324" hits="3"></line>
                <line number="325" hits="3"></line>
                <line number="326" hits="3"></line>
                <line number="327" hits="3"></line>
                <line number="330" hits="2"></line>
              </lines>
            </method>
            <method name="ceremonyCookie" signature="" line-rate="0.6" branch-rate="0" complexity="0">
              <lines>
                <line number="334" hits="5"></line>
                <line number="335" hits="5"></line>
                <line number="336" hits="0"></line>
                <line number="337" hits="0"></line>
                <line number="339" hits="5"></line>
              </lines>
            </method>
            <method name="setCookie" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="348" hits="9"></line>
                <line number="349" hits="9"></line>
                <line number="350" hits="9"></line>
                <line number="351" hits="9"></line>
                <line number="352" hits="9"></line>
                <line number="353" hits="9"></line>
                <line number="354" hits="9"></line>
                <line number="355" hits="9"></line>
                <line number="356" hits="9"></line>
                <line number="357" hits="9"></line>
              </lines>
            </method>
            <method name="clearCookie" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="360" hits="6"></line>
                <line number="361" hits="6"></line>
                <line number="362" hits="6"></line>
                <line number="363" hits="6"></line>
                <line number="364" hits="6"></line>
                <line number="365" hits="6"></line>
                <line number="366" hits="6"></line>
                <line number="367" hits="6"></line>
                <line number="368" hits="6"></line>
                <line number="369" hits="6"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="290" hits="3"></line>
            <line number="291" hits="3"></line>
            <line number="304" hits="6"></line>
            <line number="305" hits="6"></line>
            <line number="320" hits="2"></line>
            <line number="321" hits="2"></line>
            <line number="322" hits="3"></line>
            <line number="323" hits="3"></line>
            <line number="324" hits="3"></line>
            <line number="325" hits="3"></line>
            <line number="326" hits="3"></line>
            <line number="327" hits="3"></line>
            <line number="330" hits="2"></line>
            <line number="334" hits="5"></line>
            <line number="335" hits="5"></line>
            <line number="336" hits="0"></line>
            <line number="337" hits="0"></line>
            <line number="339" hits="5"></line>
            <line number="348" hits="9"></line>
            <line number="349" hits="9"></line>
            <line number="350" hits="9"></line>
            <line number="351" hits="9"></line>
            <line number="352" hits="9"></line>
            <line number="353" hits="9"></line>
            <line number="354" hits="9"></line>
            <line number="355" hits="9"></line>
            <line number="356" hits="9"></line>
            <line number="357" hits="9"></line>
            <line number="360" hits="6"></line>
            <line number="361" hits="6"></line>
            <line number="362" hits="6"></line>
            <line number="363" hits="6"></line>
            <line number="364" hits="6"></line>
            <line number="365" hits="6"></line>
            <line number="366" hits="6"></line>
            <line number="367" hits="6"></line>
            <line number="368" hits="6"></line>
            <line number="369" hits="6"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/body_limit.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="bodyLimitFor" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="29" hits="821"></line>
                <line number="30" hits="15"></line>
                <line number="31" hits="15"></line>
                <line number="33" hits="806"></line>
              </lines>
            </method>
            <method name="writePayloadTooLarge" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="37" hits="8"></line>
                <line number="38" hits="8"></line>
              </lines>
            </method>
            <method name="isBodyTooLarge" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="42" hits="2"></line>
                <line number="43" hits="2"></line>
                <line number="44" hits="2"></line>
                <line number="45" hits="2"></line>
              </lines>
            </method>
            <method name="limitBodies" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="52" hits="336"></line>
                <line number="53" hits="821"></line>
                <line number="54" hits="821"></line>
                <line number="55" hits="821"></line>
                <line number="56" hits="7"></line>
                <line number="57" hits="7"></line>
                <line number="58" hits="7"></line>
                <line number="59" hits="7"></line>
                <line number="61" hits="814"></line>
                <line number="62" hits="516"></line>
                <line number="63" hits="516"></line>
                <line number="65" hits="814"></line>
              </lines>
            </method>
            <method name="readJSON" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="73" hits="247"></line>
                <line number="74" hits="2"></line>
                <line number="75" hits="1"></line>
                <line number="76" hits="1"></line>
                <line number="77" hits="1"></line>
                <line number="78" hits="1"></line>
                <line number="80" hits="2"></line>
                <line number="83" hits="245"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="29" hits="821"></line>
            <line number="30" hits="15"></line>
            <line number="31" hits="15"></line>
            <line number="33" hits="806"></line>
            <line number="37" hits="8"></line>
            <line number="38" hits="8"></line>
            <line number="42" hits="2"></line>
            <line number="43" hits="2"></line>
            <line number="44" hits="2"></line>
            <line number="45" hits="2"></line>
            <line number="52" hits="336"></line>
            <line number="53" hits="821"></line>
            <line number="54" hits="821"></line>
            <line number="55" hits="821"></line>
            <line number="56" hits="7"></line>
            <line number="57" hits="7"></line>
            <line number="58" hits="7"></line>
            <line number="59" hits="7"></line>
            <line number="61" hits="814"></line>
            <line number="62" hits="516"></line>
            <line number="63" hits="516"></line>
            <line number="65" hits="814"></line>
            <line number="73" hits="247"></line>
            <line number="74" hits="2"></line>
            <line number="75" hits="1"></line>
            <line number="76" hits="1"></line>
            <line number="77" hits="1"></line>
            <line number="78" hits="1"></line>
            <line number="80" hits="2"></line>
            <line number="83" hits="245"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/branch_filter.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="branchFilter" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="12" hits="86"></line>
                <line number="13" hits="86"></line>
                <line number="14" hits="3"></line>
                <line number="15" hits="3"></line>
                <line number="16" hits="3"></line>
                <line number="17" hits="3"></line>
                <line number="19" hits="83"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="12" hits="86"></line>
            <line number="13" hits="86"></line>
            <line number="14" hits="3"></line>
            <line number="15" hits="3"></line>
            <line number="16" hits="3"></line>
            <line number="17" hits="3"></line>
            <line number="19" hits="83"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/branches.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="toBranchListDTO" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="21" hits="7"></line>
                <line number="22" hits="7"></line>
                <line number="23" hits="9"></line>
                <line number="24" hits="9"></line>
                <line number="26" hits="7"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="21" hits="7"></line>
            <line number="22" hits="7"></line>
            <line number="23" hits="9"></line>
            <line number="24" hits="9"></line>
            <line number="26" hits="7"></line>
          </lines>
        </class>
        <class name="branchesHandler" filename="internal/httpserver/branches.go" line-rate="0.73333335" branch-rate="0" complexity="0">
          <methods>
            <method name="list" signature="" line-rate="0.73333335" branch-rate="0" complexity="0">
              <lines>
                <line number="37" hits="6"></line>
                <line number="38" hits="6"></line>
                <line number="39" hits="6"></line>
                <line number="40" hits="6"></line>
                <line number="41" hits="6"></line>
                <line number="42" hits="6"></line>
                <line number="43" hits="6"></line>
                <line number="44" hits="6"></line>
                <line number="45" hits="6"></line>
                <line number="46" hits="6"></line>
                <line number="47" hits="0"></line>
                <line number="48" hits="0"></line>
                <line number="49" hits="0"></line>
                <line number="50" hits="0"></line>
                <line number="52" hits="6"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="37" hits="6"></line>
            <line number="38" hits="6"></line>
            <line number="39" hits="6"></line>
            <line number="40" hits="6"></line>
            <line number="41" hits="6"></line>
            <line number="42" hits="6"></line>
            <line number="43" hits="6"></line>
            <line number="44" hits="6"></line>
            <line number="45" hits="6"></line>
            <line number="46" hits="6"></line>
            <line number="47" hits="0"></line>
            <line number="48" hits="0"></line>
            <line number="49" hits="0"></line>
            <line number="50" hits="0"></line>
            <line number="52" hits="6"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/failure_insights.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="toFailureInsightsDTO" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="61" hits="21"></line>
                <line number="62" hits="21"></line>
                <line number="63" hits="21"></line>
                <line number="64" hits="21"></line>
                <line number="65" hits="21"></line>
                <line number="66" hits="21"></line>
                <line number="67" hits="21"></line>
                <line number="68" hits="21"></line>
                <line number="69" hits="21"></line>
                <line number="70" hits="21"></line>
                <line number="71" hits="21"></line>
                <line number="72" hits="21"></line>
                <line number="74" hits="21"></line>
                <line number="75" hits="4"></line>
                <line number="76" hits="4"></line>
                <line number="77" hits="4"></line>
                <line number="79" hits="21"></line>
                <line number="80" hits="3"></line>
                <line number="81" hits="3"></line>
                <line number="83" hits="21"></line>
                <line number="84" hits="3"></line>
                <line number="85" hits="3"></line>
                <line number="87" hits="21"></line>
                <line number="88" hits="11"></line>
                <line number="89" hits="11"></line>
                <line number="90" hits="11"></line>
                <line number="91" hits="11"></line>
                <line number="92" hits="11"></line>
                <line number="93" hits="11"></line>
                <line number="94" hits="11"></line>
                <line number="95" hits="11"></line>
                <line number="97" hits="21"></line>
                <line number="98" hits="3"></line>
                <line number="99" hits="3"></line>
                <line number="100" hits="3"></line>
                <line number="101" hits="3"></line>
                <line number="103" hits="3"></line>
                <line number="104" hits="3"></line>
                <line number="105" hits="3"></line>
                <line number="106" hits="3"></line>
                <line number="107" hits="3"></line>
                <line number="108" hits="3"></line>
                <line number="109" hits="3"></line>
                <line number="112" hits="21"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="61" hits="21"></line>
            <line number="62" hits="21"></line>
            <line number="63" hits="21"></line>
            <line number="64" hits="21"></line>
            <line number="65" hits="21"></line>
            <line number="66" hits="21"></line>
            <line number="67" hits="21"></line>
            <line number="68" hits="21"></line>
            <line number="69" hits="21"></line>
            <line number="70" hits="21"></line>
            <line number="71" hits="21"></line>
            <line number="72" hits="21"></line>
            <line number="74" hits="21"></line>
            <line number="75" hits="4"></line>
            <line number="76" hits="4"></line>
            <line number="77" hits="4"></line>
            <line number="79" hits="21"></line>
            <line number="80" hits="3"></line>
            <line number="81" hits="3"></line>
            <line number="83" hits="21"></line>
            <line number="84" hits="3"></line>
            <line number="85" hits="3"></line>
            <line number="87" hits="21"></line>
            <line number="88" hits="11"></line>
            <line number="89" hits="11"></line>
            <line number="90" hits="11"></line>
            <line number="91" hits="11"></line>
            <line number="92" hits="11"></line>
            <line number="93" hits="11"></line>
            <line number="94" hits="11"></line>
            <line number="95" hits="11"></line>
            <line number="97" hits="21"></line>
            <line number="98" hits="3"></line>
            <line number="99" hits="3"></line>
            <line number="100" hits="3"></line>
            <line number="101" hits="3"></line>
            <line number="103" hits="3"></line>
            <line number="104" hits="3"></line>
            <line number="105" hits="3"></line>
            <line number="106" hits="3"></line>
            <line number="107" hits="3"></line>
            <line number="108" hits="3"></line>
            <line number="109" hits="3"></line>
            <line number="112" hits="21"></line>
          </lines>
        </class>
        <class name="failureInsightsHandler" filename="internal/httpserver/failure_insights.go" line-rate="0.7777778" branch-rate="0" complexity="0">
          <methods>
            <method name="get" signature="" line-rate="0.7777778" branch-rate="0" complexity="0">
              <lines>
                <line number="123" hits="20"></line>
                <line number="124" hits="20"></line>
                <line number="125" hits="20"></line>
                <line number="126" hits="20"></line>
                <line number="127" hits="1"></line>
                <line number="128" hits="1"></line>
                <line number="130" hits="19"></line>
                <line number="131" hits="19"></line>
                <line number="132" hits="19"></line>
                <line number="133" hits="19"></line>
                <line number="134" hits="19"></line>
                <line number="135" hits="19"></line>
                <line number="136" hits="19"></line>
                <line number="137" hits="0"></line>
                <line number="138" hits="0"></line>
                <line number="139" hits="0"></line>
                <line number="140" hits="0"></line>
                <line number="142" hits="19"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="123" hits="20"></line>
            <line number="124" hits="20"></line>
            <line number="125" hits="20"></line>
            <line number="126" hits="20"></line>
            <line number="127" hits="1"></line>
            <line number="128" hits="1"></line>
            <line number="130" hits="19"></line>
            <line number="131" hits="19"></line>
            <line number="132" hits="19"></line>
            <line number="133" hits="19"></line>
            <line number="134" hits="19"></line>
            <line number="135" hits="19"></line>
            <line number="136" hits="19"></line>
            <line number="137" hits="0"></line>
            <line number="138" hits="0"></line>
            <line number="139" hits="0"></line>
            <line number="140" hits="0"></line>
            <line number="142" hits="19"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/flaky_steps.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="toFlakyStepListDTO" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="33" hits="43"></line>
                <line number="34" hits="43"></line>
                <line number="35" hits="43"></line>
                <line number="36" hits="40"></line>
                <line number="37" hits="40"></line>
                <line number="38" hits="149"></line>
                <line number="39" hits="149"></line>
                <line number="41" hits="40"></line>
                <line number="42" hits="40"></line>
                <line number="43" hits="40"></line>
                <line number="44" hits="40"></line>
                <line number="45" hits="40"></line>
                <line number="46" hits="40"></line>
                <line number="47" hits="40"></line>
                <line number="48" hits="40"></line>
                <line number="49" hits="40"></line>
                <line number="50" hits="40"></line>
                <line number="51" hits="40"></line>
                <line number="54" hits="43"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="33" hits="43"></line>
            <line number="34" hits="43"></line>
            <line number="35" hits="43"></line>
            <line number="36" hits="40"></line>
            <line number="37" hits="40"></line>
            <line number="38" hits="149"></line>
            <line number="39" hits="149"></line>
            <line number="41" hits="40"></line>
            <line number="42" hits="40"></line>
            <line number="43" hits="40"></line>
            <line number="44" hits="40"></line>
            <line number="45" hits="40"></line>
            <line number="46" hits="40"></line>
            <line number="47" hits="40"></line>
            <line number="48" hits="40"></line>
            <line number="49" hits="40"></line>
            <line number="50" hits="40"></line>
            <line number="51" hits="40"></line>
            <line number="54" hits="43"></line>
          </lines>
        </class>
        <class name="flakyStepsHandler" filename="internal/httpserver/flaky_steps.go" line-rate="0.82608694" branch-rate="0" complexity="0">
          <methods>
            <method name="list" signature="" line-rate="0.82608694" branch-rate="0" complexity="0">
              <lines>
                <line number="65" hits="43"></line>
                <line number="66" hits="43"></line>
                <line number="67" hits="43"></line>
                <line number="68" hits="1"></line>
                <line number="69" hits="1"></line>
                <line number="71" hits="42"></line>
                <line number="72" hits="42"></line>
                <line number="73" hits="42"></line>
                <line number="74" hits="42"></line>
                <line number="75" hits="42"></line>
                <line number="76" hits="42"></line>
                <line number="77" hits="42"></line>
                <line number="78" hits="42"></line>
                <line number="79" hits="42"></line>
                <line number="80" hits="42"></line>
                <line number="81" hits="42"></line>
                <line number="82" hits="42"></line>
                <line number="83" hits="42"></line>
                <line number="84" hits="0"></line>
                <line number="85" hits="0"></line>
                <line number="86" hits="0"></line>
                <line number="87" hits="0"></line>
                <line number="89" hits="42"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="65" hits="43"></line>
            <line number="66" hits="43"></line>
            <line number="67" hits="43"></line>
            <line number="68" hits="1"></line>
            <line number="69" hits="1"></line>
            <line number="71" hits="42"></line>
            <line number="72" hits="42"></line>
            <line number="73" hits="42"></line>
            <line number="74" hits="42"></line>
            <line number="75" hits="42"></line>
            <line number="76" hits="42"></line>
            <line number="77" hits="42"></line>
            <line number="78" hits="42"></line>
            <line number="79" hits="42"></line>
            <line number="80" hits="42"></line>
            <line number="81" hits="42"></line>
            <line number="82" hits="42"></line>
            <line number="83" hits="42"></line>
            <line number="84" hits="0"></line>
            <line number="85" hits="0"></line>
            <line number="86" hits="0"></line>
            <line number="87" hits="0"></line>
            <line number="89" hits="42"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/forge_tokens.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="toSavedForgeTokenDTO" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="19" hits="14"></line>
                <line number="20" hits="14"></line>
                <line number="21" hits="14"></line>
                <line number="22" hits="14"></line>
                <line number="23" hits="14"></line>
                <line number="24" hits="14"></line>
              </lines>
            </method>
            <method name="requireSessionAuth" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="42" hits="31"></line>
                <line number="43" hits="31"></line>
              </lines>
            </method>
            <method name="sessionRequiredMessage" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="50" hits="11"></line>
                <line number="51" hits="11"></line>
              </lines>
            </method>
            <method name="requireViaSession" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="54" hits="47"></line>
                <line number="55" hits="47"></line>
                <line number="56" hits="5"></line>
                <line number="57" hits="5"></line>
                <line number="58" hits="5"></line>
                <line number="59" hits="5"></line>
                <line number="61" hits="42"></line>
              </lines>
            </method>
            <method name="validForge" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="138" hits="245"></line>
                <line number="139" hits="245"></line>
              </lines>
            </method>
            <method name="givenOrSavedToken" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="146" hits="220"></line>
                <line number="147" hits="206"></line>
                <line number="148" hits="206"></line>
                <line number="150" hits="14"></line>
                <line number="151" hits="11"></line>
                <line number="152" hits="11"></line>
                <line number="153" hits="5"></line>
                <line number="154" hits="5"></line>
                <line number="156" hits="6"></line>
                <line number="157" hits="2"></line>
                <line number="158" hits="2"></line>
                <line number="161" hits="7"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="19" hits="14"></line>
            <line number="20" hits="14"></line>
            <line number="21" hits="14"></line>
            <line number="22" hits="14"></line>
            <line number="23" hits="14"></line>
            <line number="24" hits="14"></line>
            <line number="42" hits="31"></line>
            <line number="43" hits="31"></line>
            <line number="50" hits="11"></line>
            <line number="51" hits="11"></line>
            <line number="54" hits="47"></line>
            <line number="55" hits="47"></line>
            <line number="56" hits="5"></line>
            <line number="57" hits="5"></line>
            <line number="58" hits="5"></line>
            <line number="59" hits="5"></line>
            <line number="61" hits="42"></line>
            <line number="138" hits="245"></line>
            <line number="139" hits="245"></line>
            <line number="146" hits="220"></line>
            <line number="147" hits="206"></line>
            <line number="148" hits="206"></line>
            <line number="150" hits="14"></line>
            <line number="151" hits="11"></line>
            <line number="152" hits="11"></line>
            <line number="153" hits="5"></line>
            <line number="154" hits="5"></line>
            <line number="156" hits="6"></line>
            <line number="157" hits="2"></line>
            <line number="158" hits="2"></line>
            <line number="161" hits="7"></line>
          </lines>
        </class>
        <class name="forgeTokensHandler" filename="internal/httpserver/forge_tokens.go" line-rate="0.9622642" branch-rate="0" complexity="0">
          <methods>
            <method name="list" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="65" hits="6"></line>
                <line number="66" hits="1"></line>
                <line number="67" hits="1"></line>
                <line number="69" hits="5"></line>
                <line number="70" hits="5"></line>
                <line number="71" hits="1"></line>
                <line number="72" hits="1"></line>
                <line number="73" hits="1"></line>
                <line number="74" hits="1"></line>
                <line number="76" hits="4"></line>
                <line number="77" hits="4"></line>
                <line number="78" hits="2"></line>
                <line number="79" hits="2"></line>
                <line number="81" hits="4"></line>
              </lines>
            </method>
            <method name="save" signature="" line-rate="0.9166667" branch-rate="0" complexity="0">
              <lines>
                <line number="85" hits="20"></line>
                <line number="86" hits="1"></line>
                <line number="87" hits="1"></line>
                <line number="89" hits="19"></line>
                <line number="90" hits="19"></line>
                <line number="91" hits="0"></line>
                <line number="92" hits="0"></line>
                <line number="94" hits="19"></line>
                <line number="95" hits="4"></line>
                <line number="96" hits="4"></line>
                <line number="97" hits="4"></line>
                <line number="98" hits="4"></line>
                <line number="100" hits="15"></line>
                <line number="101" hits="2"></line>
                <line number="102" hits="2"></line>
                <line number="103" hits="2"></line>
                <line number="104" hits="2"></line>
                <line number="106" hits="13"></line>
                <line number="107" hits="13"></line>
                <line number="108" hits="1"></line>
                <line number="109" hits="1"></line>
                <line number="110" hits="1"></line>
                <line number="111" hits="1"></line>
                <line number="113" hits="12"></line>
              </lines>
            </method>
            <method name="delete" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="117" hits="5"></line>
                <line number="118" hits="1"></line>
                <line number="119" hits="1"></line>
                <line number="121" hits="4"></line>
                <line number="122" hits="4"></line>
                <line number="123" hits="1"></line>
                <line number="124" hits="1"></line>
                <line number="125" hits="1"></line>
                <line number="126" hits="1"></line>
                <line number="128" hits="3"></line>
                <line number="129" hits="1"></line>
                <line number="130" hits="1"></line>
                <line number="131" hits="1"></line>
                <line number="132" hits="1"></line>
                <line number="134" hits="2"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="65" hits="6"></line>
            <line number="66" hits="1"></line>
            <line number="67" hits="1"></line>
            <line number="69" hits="5"></line>
            <line number="70" hits="5"></line>
            <line number="71" hits="1"></line>
            <line number="72" hits="1"></line>
            <line number="73" hits="1"></line>
            <line number="74" hits="1"></line>
            <line number="76" hits="4"></line>
            <line number="77" hits="4"></line>
            <line number="78" hits="2"></line>
            <line number="79" hits="2"></line>
            <line number="81" hits="4"></line>
            <line number="85" hits="20"></line>
            <line number="86" hits="1"></line>
            <line number="87" hits="1"></line>
            <line number="89" hits="19"></line>
            <line number="90" hits="19"></line>
            <line number="91" hits="0"></line>
            <line number="92" hits="0"></line>
            <line number="94" hits="19"></line>
            <line number="95" hits="4"></line>
            <line number="96" hits="4"></line>
            <line number="97" hits="4"></line>
            <line number="98" hits="4"></line>
            <line number="100" hits="15"></line>
            <line number="101" hits="2"></line>
            <line number="102" hits="2"></line>
            <line number="103" hits="2"></line>
            <line number="104" hits="2"></line>
            <line number="106" hits="13"></line>
            <line number="107" hits="13"></line>
            <line number="108" hits="1"></line>
            <line number="109" hits="1"></line>
            <line number="110" hits="1"></line>
            <line number="111" hits="1"></line>
            <line number="113" hits="12"></line>
            <line number="117" hits="5"></line>
            <line number="118" hits="1"></line>
            <line number="119" hits="1"></line>
            <line number="121" hits="4"></line>
            <line number="122" hits="4"></line>
            <line number="123" hits="1"></line>
            <line number="124" hits="1"></line>
            <line number="125" hits="1"></line>
            <line number="126" hits="1"></line>
            <line number="128" hits="3"></line>
            <line number="129" hits="1"></line>
            <line number="130" hits="1"></line>
            <line number="131" hits="1"></line>
            <line number="132" hits="1"></line>
            <line number="134" hits="2"></line>
          </lines>
        </class>
        <class name="insightsHandler" filename="internal/httpserver/insights.go" line-rate="0.7894737" branch-rate="0" complexity="0">
          <methods>
            <method name="githubRateLimit" signature="" line-rate="0.42857143" branch-rate="0" complexity="0">
              <lines>
                <line number="45" hits="2"></line>
                <line number="46" hits="2"></line>
                <line number="47" hits="0"></line>
                <line number="48" hits="0"></line>
                <line number="49" hits="0"></line>
                <line number="50" hits="0"></line>
                <line number="52" hits="2"></line>
              </lines>
            </method>
            <method name="tokenUsage" signature="" line-rate="0.71428573" branch-rate="0" complexity="0">
              <lines>
                <line number="58" hits="4"></line>
                <line number="59" hits="4"></line>
                <line number="60" hits="0"></line>
                <line number="61" hits="0"></line>
                <line number="63" hits="4"></line>
                <line number="64" hits="4"></line>
                <line number="65" hits="4"></line>
              </lines>
            </method>
            <method name="groupGitHubReposByToken" signature="" line-rate="0.8888889" branch-rate="0" complexity="0">
              <lines>
                <line number="74" hits="4"></line>
                <line number="75" hits="4"></line>
                <line number="76" hits="4"></line>
                <line number="77" hits="4"></line>
                <line number="78" hits="6"></line>
                <line number="79" hits="0"></line>
                <line number="82" hits="6"></line>
                <line number="83" hits="6"></line>
                <line number="84" hits="0"></line>
                <line number="87" hits="6"></line>
                <line number="88" hits="6"></line>
                <line number="89" hits="4"></line>
                <line number="90" hits="4"></line>
                <line number="91" hits="4"></line>
                <line number="92" hits="4"></line>
                <line number="94" hits="6"></line>
                <line number="95" hits="6"></line>
                <line number="98" hits="4"></line>
              </lines>
            </method>
            <method name="attachStatus" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="102" hits="6"></line>
                <line number="103" hits="2"></line>
                <line number="104" hits="2"></line>
                <line number="106" hits="4"></line>
                <line number="107" hits="2"></line>
                <line number="108" hits="2"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="45" hits="2"></line>
            <line number="46" hits="2"></line>
            <line number="47" hits="0"></line>
            <line number="48" hits="0"></line>
            <line number="49" hits="0"></line>
            <line number="50" hits="0"></line>
            <line number="52" hits="2"></line>
            <line number="58" hits="4"></line>
            <line number="59" hits="4"></line>
            <line number="60" hits="0"></line>
            <line number="61" hits="0"></line>
            <line number="63" hits="4"></line>
            <line number="64" hits="4"></line>
            <line number="65" hits="4"></line>
            <line number="74" hits="4"></line>
            <line number="75" hits="4"></line>
            <line number="76" hits="4"></line>
            <line number="77" hits="4"></line>
            <line number="78" hits="6"></line>
            <line number="79" hits="0"></line>
            <line number="82" hits="6"></line>
            <line number="83" hits="6"></line>
            <line number="84" hits="0"></line>
            <line number="87" hits="6"></line>
            <line number="88" hits="6"></line>
            <line number="89" hits="4"></line>
            <line number="90" hits="4"></line>
            <line number="91" hits="4"></line>
            <line number="92" hits="4"></line>
            <line number="94" hits="6"></line>
            <line number="95" hits="6"></line>
            <line number="98" hits="4"></line>
            <line number="102" hits="6"></line>
            <line number="103" hits="2"></line>
            <line number="104" hits="2"></line>
            <line number="106" hits="4"></line>
            <line number="107" hits="2"></line>
            <line number="108" hits="2"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/insights.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="toGitHubTokenUsageDTOs" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="112" hits="4"></line>
                <line number="113" hits="4"></line>
                <line number="114" hits="4"></line>
                <line number="115" hits="4"></line>
                <line number="116" hits="4"></line>
                <line number="117" hits="4"></line>
                <line number="118" hits="4"></line>
                <line number="119" hits="2"></line>
                <line number="120" hits="2"></line>
                <line number="121" hits="2"></line>
                <line number="122" hits="2"></line>
                <line number="123" hits="2"></line>
                <line number="124" hits="2"></line>
                <line number="127" hits="4"></line>
                <line number="130" hits="4"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="112" hits="4"></line>
            <line number="113" hits="4"></line>
            <line number="114" hits="4"></line>
            <line number="115" hits="4"></line>
            <line number="116" hits="4"></line>
            <line number="117" hits="4"></line>
            <line number="118" hits="4"></line>
            <line number="119" hits="2"></line>
            <line number="120" hits="2"></line>
            <line number="121" hits="2"></line>
            <line number="122" hits="2"></line>
            <line number="123" hits="2"></line>
            <line number="124" hits="2"></line>
            <line number="127" hits="4"></line>
            <line number="130" hits="4"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/job_log.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="toJobLogDTO" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="20" hits="5"></line>
                <line number="21" hits="5"></line>
                <line number="22" hits="3"></line>
                <line number="23" hits="3"></line>
                <line number="25" hits="5"></line>
                <line number="26" hits="5"></line>
                <line number="27" hits="5"></line>
                <line number="28" hits="5"></line>
                <line number="29" hits="5"></line>
                <line number="30" hits="5"></line>
                <line number="31" hits="5"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="20" hits="5"></line>
            <line number="21" hits="5"></line>
            <line number="22" hits="3"></line>
            <line number="23" hits="3"></line>
            <line number="25" hits="5"></line>
            <line number="26" hits="5"></line>
            <line number="27" hits="5"></line>
            <line number="28" hits="5"></line>
            <line number="29" hits="5"></line>
            <line number="30" hits="5"></line>
            <line number="31" hits="5"></line>
          </lines>
        </class>
        <class name="jobLogHandler" filename="internal/httpserver/job_log.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="get" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="43" hits="10"></line>
                <line number="44" hits="10"></line>
                <line number="45" hits="10"></line>
                <line number="46" hits="5"></line>
                <line number="47" hits="5"></line>
                <line number="48" hits="4"></line>
                <line number="49" hits="4"></line>
                <line number="50" hits="4"></line>
                <line number="51" hits="4"></line>
                <line number="53" hits="1"></line>
                <line number="56" hits="6"></line>
                <line number="57" hits="6"></line>
                <line number="58" hits="3"></line>
                <line number="59" hits="2"></line>
                <line number="60" hits="2"></line>
                <line number="61" hits="2"></line>
                <line number="62" hits="2"></line>
                <line number="64" hits="1"></line>
                <line number="65" hits="1"></line>
                <line number="66" hits="1"></line>
                <line number="69" hits="3"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="43" hits="10"></line>
            <line number="44" hits="10"></line>
            <line number="45" hits="10"></line>
            <line number="46" hits="5"></line>
            <line number="47" hits="5"></line>
            <line number="48" hits="4"></line>
            <line number="49" hits="4"></line>
            <line number="50" hits="4"></line>
            <line number="51" hits="4"></line>
            <line number="53" hits="1"></line>
            <line number="56" hits="6"></line>
            <line number="57" hits="6"></line>
            <line number="58" hits="3"></line>
            <line number="59" hits="2"></line>
            <line number="60" hits="2"></line>
            <line number="61" hits="2"></line>
            <line number="62" hits="2"></line>
            <line number="64" hits="1"></line>
            <line number="65" hits="1"></line>
            <line number="66" hits="1"></line>
            <line number="69" hits="3"></line>
          </lines>
        </class>
        <class name="statusRecorder" filename="internal/httpserver/logging.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="WriteHeader" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="17" hits="600"></line>
                <line number="18" hits="600"></line>
                <line number="19" hits="600"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="17" hits="600"></line>
            <line number="18" hits="600"></line>
            <line number="19" hits="600"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/logging.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="requestLogger" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="35" hits="336"></line>
                <line number="36" hits="821"></line>
                <line number="37" hits="26"></line>
                <line number="38" hits="26"></line>
                <line number="39" hits="26"></line>
                <line number="40" hits="26"></line>
                <line number="42" hits="795"></line>
                <line number="43" hits="795"></line>
                <line number="44" hits="795"></line>
                <line number="45" hits="795"></line>
                <line number="46" hits="795"></line>
                <line number="47" hits="795"></line>
                <line number="48" hits="795"></line>
                <line number="49" hits="795"></line>
                <line number="50" hits="795"></line>
                <line number="51" hits="795"></line>
                <line number="52" hits="795"></line>
                <line number="53" hits="795"></line>
                <line number="54" hits="795"></line>
                <line number="56" hits="795"></line>
                <line number="58" hits="20"></line>
                <line number="60" hits="121"></line>
                <line number="62" hits="654"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="35" hits="336"></line>
            <line number="36" hits="821"></line>
            <line number="37" hits="26"></line>
            <line number="38" hits="26"></line>
            <line number="39" hits="26"></line>
            <line number="40" hits="26"></line>
            <line number="42" hits="795"></line>
            <line number="43" hits="795"></line>
            <line number="44" hits="795"></line>
            <line number="45" hits="795"></line>
            <line number="46" hits="795"></line>
            <line number="47" hits="795"></line>
            <line number="48" hits="795"></line>
            <line number="49" hits="795"></line>
            <line number="50" hits="795"></line>
            <line number="51" hits="795"></line>
            <line number="52" hits="795"></line>
            <line number="53" hits="795"></line>
            <line number="54" hits="795"></line>
            <line number="56" hits="795"></line>
            <line number="58" hits="20"></line>
            <line number="60" hits="121"></line>
            <line number="62" hits="654"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/mcp.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="newMCPHandler" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="48" hits="336"></line>
                <line number="49" hits="336"></line>
                <line number="50" hits="336"></line>
                <line number="51" hits="336"></line>
                <line number="52" hits="336"></line>
                <line number="53" hits="336"></line>
                <line number="54" hits="336"></line>
                <line number="55" hits="336"></line>
                <line number="56" hits="336"></line>
                <line number="57" hits="336"></line>
                <line number="58" hits="336"></line>
                <line number="59" hits="336"></line>
                <line number="60" hits="336"></line>
                <line number="61" hits="336"></line>
                <line number="62" hits="336"></line>
                <line number="63" hits="336"></line>
                <line number="64" hits="336"></line>
                <line number="65" hits="336"></line>
                <line number="66" hits="336"></line>
                <line number="67" hits="336"></line>
                <line number="68" hits="336"></line>
                <line number="69" hits="336"></line>
                <line number="70" hits="336"></line>
                <line number="71" hits="336"></line>
                <line number="72" hits="336"></line>
                <line number="73" hits="336"></line>
                <line number="74" hits="336"></line>
                <line number="75" hits="336"></line>
                <line number="76" hits="336"></line>
                <line number="77" hits="336"></line>
                <line number="78" hits="336"></line>
                <line number="79" hits="336"></line>
                <line number="80" hits="336"></line>
                <line number="81" hits="336"></line>
                <line number="82" hits="336"></line>
                <line number="83" hits="336"></line>
                <line number="84" hits="336"></line>
                <line number="85" hits="336"></line>
                <line number="86" hits="336"></line>
                <line number="87" hits="336"></line>
                <line number="88" hits="336"></line>
                <line number="89" hits="336"></line>
                <line number="90" hits="336"></line>
                <line number="91" hits="336"></line>
                <line number="92" hits="336"></line>
                <line number="93" hits="336"></line>
                <line number="94" hits="336"></line>
                <line number="95" hits="336"></line>
                <line number="96" hits="336"></line>
                <line number="97" hits="336"></line>
                <line number="98" hits="394"></line>
                <line number="99" hits="394"></line>
              </lines>
            </method>
            <method name="requireToolSession" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="481" hits="23"></line>
                <line number="482" hits="19"></line>
                <line number="483" hits="19"></line>
                <line number="485" hits="4"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="48" hits="336"></line>
            <line number="49" hits="336"></line>
            <line number="50" hits="336"></line>
            <line number="51" hits="336"></line>
            <line number="52" hits="336"></line>
            <line number="53" hits="336"></line>
            <line number="54" hits="336"></line>
            <line number="55" hits="336"></line>
            <line number="56" hits="336"></line>
            <line number="57" hits="336"></line>
            <line number="58" hits="336"></line>
            <line number="59" hits="336"></line>
            <line number="60" hits="336"></line>
            <line number="61" hits="336"></line>
            <line number="62" hits="336"></line>
            <line number="63" hits="336"></line>
            <line number="64" hits="336"></line>
            <line number="65" hits="336"></line>
            <line number="66" hits="336"></line>
            <line number="67" hits="336"></line>
            <line number="68" hits="336"></line>
            <line number="69" hits="336"></line>
            <line number="70" hits="336"></line>
            <line number="71" hits="336"></line>
            <line number="72" hits="336"></line>
            <line number="73" hits="336"></line>
            <line number="74" hits="336"></line>
            <line number="75" hits="336"></line>
            <line number="76" hits="336"></line>
            <line number="77" hits="336"></line>
            <line number="78" hits="336"></line>
            <line number="79" hits="336"></line>
            <line number="80" hits="336"></line>
            <line number="81" hits="336"></line>
            <line number="82" hits="336"></line>
            <line number="83" hits="336"></line>
            <line number="84" hits="336"></line>
            <line number="85" hits="336"></line>
            <line number="86" hits="336"></line>
            <line number="87" hits="336"></line>
            <line number="88" hits="336"></line>
            <line number="89" hits="336"></line>
            <line number="90" hits="336"></line>
            <line number="91" hits="336"></line>
            <line number="92" hits="336"></line>
            <line number="93" hits="336"></line>
            <line number="94" hits="336"></line>
            <line number="95" hits="336"></line>
            <line number="96" hits="336"></line>
            <line number="97" hits="336"></line>
            <line number="98" hits="394"></line>
            <line number="99" hits="394"></line>
            <line number="481" hits="23"></line>
            <line number="482" hits="19"></line>
            <line number="483" hits="19"></line>
            <line number="485" hits="4"></line>
          </lines>
        </class>
        <class name="mcpHandler" filename="internal/httpserver/mcp.go" line-rate="0.86934674" branch-rate="0" complexity="0">
          <methods>
            <method name="addRunTools" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="104" hits="336"></line>
                <line number="105" hits="336"></line>
                <line number="106" hits="336"></line>
                <line number="107" hits="336"></line>
                <line number="108" hits="336"></line>
                <line number="109" hits="336"></line>
                <line number="110" hits="336"></line>
                <line number="111" hits="336"></line>
                <line number="112" hits="336"></line>
                <line number="113" hits="336"></line>
                <line number="114" hits="336"></line>
                <line number="115" hits="336"></line>
                <line number="116" hits="336"></line>
                <line number="117" hits="336"></line>
                <line number="118" hits="336"></line>
                <line number="119" hits="336"></line>
                <line number="120" hits="336"></line>
                <line number="121" hits="336"></line>
                <line number="122" hits="336"></line>
                <line number="123" hits="336"></line>
                <line number="124" hits="336"></line>
                <line number="125" hits="336"></line>
                <line number="126" hits="336"></line>
                <line number="127" hits="336"></line>
                <line number="128" hits="336"></line>
              </lines>
            </method>
            <method name="listPipelines" signature="" line-rate="0.84615386" branch-rate="0" complexity="0">
              <lines>
                <line number="141" hits="8"></line>
                <line number="142" hits="8"></line>
                <line number="143" hits="8"></line>
                <line number="144" hits="8"></line>
                <line number="145" hits="1"></line>
                <line number="146" hits="1"></line>
                <line number="148" hits="7"></line>
                <line number="149" hits="7"></line>
                <line number="150" hits="0"></line>
                <line number="151" hits="0"></line>
                <line number="153" hits="7"></line>
                <line number="154" hits="7"></line>
                <line number="155" hits="7"></line>
                <line number="156" hits="7"></line>
                <line number="157" hits="7"></line>
                <line number="158" hits="7"></line>
                <line number="159" hits="7"></line>
                <line number="160" hits="7"></line>
                <line number="161" hits="7"></line>
                <line number="162" hits="0"></line>
                <line number="163" hits="0"></line>
                <line number="165" hits="7"></line>
                <line number="166" hits="7"></line>
                <line number="167" hits="7"></line>
                <line number="168" hits="7"></line>
                <line number="170" hits="7"></line>
              </lines>
            </method>
            <method name="getPipeline" signature="" line-rate="0.9230769" branch-rate="0" complexity="0">
              <lines>
                <line number="182" hits="2"></line>
                <line number="183" hits="2"></line>
                <line number="184" hits="2"></line>
                <line number="185" hits="2"></line>
                <line number="186" hits="1"></line>
                <line number="187" hits="1"></line>
                <line number="188" hits="1"></line>
                <line number="190" hits="0"></line>
                <line number="193" hits="1"></line>
                <line number="194" hits="1"></line>
                <line number="195" hits="1"></line>
                <line number="196" hits="1"></line>
                <line number="197" hits="1"></line>
              </lines>
            </method>
            <method name="listPipelineSteps" signature="" line-rate="0.6923077" branch-rate="0" complexity="0">
              <lines>
                <line number="208" hits="1"></line>
                <line number="209" hits="1"></line>
                <line number="210" hits="1"></line>
                <line number="211" hits="1"></line>
                <line number="212" hits="0"></line>
                <line number="213" hits="0"></line>
                <line number="214" hits="0"></line>
                <line number="216" hits="0"></line>
                <line number="219" hits="1"></line>
                <line number="220" hits="1"></line>
                <line number="221" hits="1"></line>
                <line number="222" hits="1"></line>
                <line number="224" hits="1"></line>
              </lines>
            </method>
            <method name="listPipelineFlakyRuns" signature="" line-rate="0.6923077" branch-rate="0" complexity="0">
              <lines>
                <line number="238" hits="1"></line>
                <line number="239" hits="1"></line>
                <line number="240" hits="1"></line>
                <line number="241" hits="1"></line>
                <line number="242" hits="0"></line>
                <line number="243" hits="0"></line>
                <line number="244" hits="0"></line>
                <line number="246" hits="0"></line>
                <line number="249" hits="1"></line>
                <line number="250" hits="1"></line>
                <line number="251" hits="1"></line>
                <line number="252" hits="1"></line>
                <line number="254" hits="1"></line>
              </lines>
            </method>
            <method name="getRepoUsage" signature="" line-rate="0.85714287" branch-rate="0" complexity="0">
              <lines>
                <line number="267" hits="3"></line>
                <line number="268" hits="2"></line>
                <line number="269" hits="2"></line>
                <line number="271" hits="1"></line>
                <line number="272" hits="1"></line>
                <line number="273" hits="1"></line>
                <line number="274" hits="1"></line>
                <line number="275" hits="0"></line>
                <line number="276" hits="0"></line>
                <line number="278" hits="1"></line>
                <line number="279" hits="1"></line>
                <line number="280" hits="1"></line>
                <line number="281" hits="1"></line>
                <line number="283" hits="1"></line>
              </lines>
            </method>
            <method name="listUnhealthySteps" signature="" line-rate="0.9" branch-rate="0" complexity="0">
              <lines>
                <line number="293" hits="1"></line>
                <line number="294" hits="1"></line>
                <line number="295" hits="1"></line>
                <line number="296" hits="1"></line>
                <line number="297" hits="0"></line>
                <line number="298" hits="0"></line>
                <line number="300" hits="1"></line>
                <line number="301" hits="1"></line>
                <line number="302" hits="1"></line>
                <line number="303" hits="1"></line>
                <line number="304" hits="1"></line>
                <line number="305" hits="1"></line>
                <line number="306" hits="1"></line>
                <line number="308" hits="1"></line>
                <line number="309" hits="1"></line>
                <line number="310" hits="1"></line>
                <line number="311" hits="1"></line>
                <line number="312" hits="1"></line>
                <line number="313" hits="1"></line>
                <line number="316" hits="1"></line>
              </lines>
            </method>
            <method name="getFailureInsights" signature="" line-rate="0.8" branch-rate="0" complexity="0">
              <lines>
                <line number="327" hits="2"></line>
                <line number="328" hits="2"></line>
                <line number="329" hits="2"></line>
                <line number="330" hits="2"></line>
                <line number="331" hits="2"></line>
                <line number="332" hits="2"></line>
                <line number="333" hits="2"></line>
                <line number="334" hits="0"></line>
                <line number="335" hits="0"></line>
                <line number="337" hits="2"></line>
              </lines>
            </method>
            <method name="listRuns" signature="" line-rate="0.9" branch-rate="0" complexity="0">
              <lines>
                <line number="350" hits="3"></line>
                <line number="351" hits="3"></line>
                <line number="352" hits="1"></line>
                <line number="353" hits="1"></line>
                <line number="355" hits="2"></line>
                <line number="356" hits="2"></line>
                <line number="357" hits="2"></line>
                <line number="358" hits="2"></line>
                <line number="359" hits="2"></line>
                <line number="360" hits="2"></line>
                <line number="361" hits="2"></line>
                <line number="362" hits="2"></line>
                <line number="363" hits="2"></line>
                <line number="364" hits="0"></line>
                <line number="365" hits="0"></line>
                <line number="367" hits="2"></line>
                <line number="368" hits="2"></line>
                <line number="369" hits="3"></line>
                <line number="370" hits="3"></line>
                <line number="372" hits="2"></line>
              </lines>
            </method>
            <method name="getRunSteps" signature="" line-rate="0.90909094" branch-rate="0" complexity="0">
              <lines>
                <line number="380" hits="2"></line>
                <line number="381" hits="2"></line>
                <line number="382" hits="1"></line>
                <line number="383" hits="1"></line>
                <line number="384" hits="1"></line>
                <line number="386" hits="0"></line>
                <line number="389" hits="1"></line>
                <line number="390" hits="1"></line>
                <line number="391" hits="2"></line>
                <line number="392" hits="2"></line>
                <line number="394" hits="1"></line>
              </lines>
            </method>
            <method name="getJobLog" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="404" hits="6"></line>
                <line number="405" hits="1"></line>
                <line number="406" hits="1"></line>
                <line number="408" hits="5"></line>
                <line number="409" hits="1"></line>
                <line number="410" hits="1"></line>
                <line number="412" hits="4"></line>
                <line number="413" hits="4"></line>
                <line number="414" hits="2"></line>
                <line number="415" hits="1"></line>
                <line number="416" hits="1"></line>
                <line number="418" hits="1"></line>
                <line number="421" hits="2"></line>
              </lines>
            </method>
            <method name="listBranches" signature="" line-rate="0.71428573" branch-rate="0" complexity="0">
              <lines>
                <line number="431" hits="1"></line>
                <line number="432" hits="1"></line>
                <line number="433" hits="1"></line>
                <line number="434" hits="1"></line>
                <line number="435" hits="0"></line>
                <line number="436" hits="0"></line>
                <line number="438" hits="1"></line>
              </lines>
            </method>
            <method name="listFlakySteps" signature="" line-rate="0.85714287" branch-rate="0" complexity="0">
              <lines>
                <line number="451" hits="1"></line>
                <line number="452" hits="1"></line>
                <line number="453" hits="1"></line>
                <line number="454" hits="1"></line>
                <line number="455" hits="1"></line>
                <line number="456" hits="1"></line>
                <line number="457" hits="1"></line>
                <line number="458" hits="1"></line>
                <line number="459" hits="1"></line>
                <line number="460" hits="1"></line>
                <line number="461" hits="1"></line>
                <line number="462" hits="0"></line>
                <line number="463" hits="0"></line>
                <line number="465" hits="1"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="104" hits="336"></line>
            <line number="105" hits="336"></line>
            <line number="106" hits="336"></line>
            <line number="107" hits="336"></line>
            <line number="108" hits="336"></line>
            <line number="109" hits="336"></line>
            <line number="110" hits="336"></line>
            <line number="111" hits="336"></line>
            <line number="112" hits="336"></line>
            <line number="113" hits="336"></line>
            <line number="114" hits="336"></line>
            <line number="115" hits="336"></line>
            <line number="116" hits="336"></line>
            <line number="117" hits="336"></line>
            <line number="118" hits="336"></line>
            <line number="119" hits="336"></line>
            <line number="120" hits="336"></line>
            <line number="121" hits="336"></line>
            <line number="122" hits="336"></line>
            <line number="123" hits="336"></line>
            <line number="124" hits="336"></line>
            <line number="125" hits="336"></line>
            <line number="126" hits="336"></line>
            <line number="127" hits="336"></line>
            <line number="128" hits="336"></line>
            <line number="141" hits="8"></line>
            <line number="142" hits="8"></line>
            <line number="143" hits="8"></line>
            <line number="144" hits="8"></line>
            <line number="145" hits="1"></line>
            <line number="146" hits="1"></line>
            <line number="148" hits="7"></line>
            <line number="149" hits="7"></line>
            <line number="150" hits="0"></line>
            <line number="151" hits="0"></line>
            <line number="153" hits="7"></line>
            <line number="154" hits="7"></line>
            <line number="155" hits="7"></line>
            <line number="156" hits="7"></line>
            <line number="157" hits="7"></line>
            <line number="158" hits="7"></line>
            <line number="159" hits="7"></line>
            <line number="160" hits="7"></line>
            <line number="161" hits="7"></line>
            <line number="162" hits="0"></line>
            <line number="163" hits="0"></line>
            <line number="165" hits="7"></line>
            <line number="166" hits="7"></line>
            <line number="167" hits="7"></line>
            <line number="168" hits="7"></line>
            <line number="170" hits="7"></line>
            <line number="182" hits="2"></line>
            <line number="183" hits="2"></line>
            <line number="184" hits="2"></line>
            <line number="185" hits="2"></line>
            <line number="186" hits="1"></line>
            <line number="187" hits="1"></line>
            <line number="188" hits="1"></line>
            <line number="190" hits="0"></line>
            <line number="193" hits="1"></line>
            <line number="194" hits="1"></line>
            <line number="195" hits="1"></line>
            <line number="196" hits="1"></line>
            <line number="197" hits="1"></line>
            <line number="208" hits="1"></line>
            <line number="209" hits="1"></line>
            <line number="210" hits="1"></line>
            <line number="211" hits="1"></line>
            <line number="212" hits="0"></line>
            <line number="213" hits="0"></line>
            <line number="214" hits="0"></line>
            <line number="216" hits="0"></line>
            <line number="219" hits="1"></line>
            <line number="220" hits="1"></line>
            <line number="221" hits="1"></line>
            <line number="222" hits="1"></line>
            <line number="224" hits="1"></line>
            <line number="238" hits="1"></line>
            <line number="239" hits="1"></line>
            <line number="240" hits="1"></line>
            <line number="241" hits="1"></line>
            <line number="242" hits="0"></line>
            <line number="243" hits="0"></line>
            <line number="244" hits="0"></line>
            <line number="246" hits="0"></line>
            <line number="249" hits="1"></line>
            <line number="250" hits="1"></line>
            <line number="251" hits="1"></line>
            <line number="252" hits="1"></line>
            <line number="254" hits="1"></line>
            <line number="267" hits="3"></line>
            <line number="268" hits="2"></line>
            <line number="269" hits="2"></line>
            <line number="271" hits="1"></line>
            <line number="272" hits="1"></line>
            <line number="273" hits="1"></line>
            <line number="274" hits="1"></line>
            <line number="275" hits="0"></line>
            <line number="276" hits="0"></line>
            <line number="278" hits="1"></line>
            <line number="279" hits="1"></line>
            <line number="280" hits="1"></line>
            <line number="281" hits="1"></line>
            <line number="283" hits="1"></line>
            <line number="293" hits="1"></line>
            <line number="294" hits="1"></line>
            <line number="295" hits="1"></line>
            <line number="296" hits="1"></line>
            <line number="297" hits="0"></line>
            <line number="298" hits="0"></line>
            <line number="300" hits="1"></line>
            <line number="301" hits="1"></line>
            <line number="302" hits="1"></line>
            <line number="303" hits="1"></line>
            <line number="304" hits="1"></line>
            <line number="305" hits="1"></line>
            <line number="306" hits="1"></line>
            <line number="308" hits="1"></line>
            <line number="309" hits="1"></line>
            <line number="310" hits="1"></line>
            <line number="311" hits="1"></line>
            <line number="312" hits="1"></line>
            <line number="313" hits="1"></line>
            <line number="316" hits="1"></line>
            <line number="327" hits="2"></line>
            <line number="328" hits="2"></line>
            <line number="329" hits="2"></line>
            <line number="330" hits="2"></line>
            <line number="331" hits="2"></line>
            <line number="332" hits="2"></line>
            <line number="333" hits="2"></line>
            <line number="334" hits="0"></line>
            <line number="335" hits="0"></line>
            <line number="337" hits="2"></line>
            <line number="350" hits="3"></line>
            <line number="351" hits="3"></line>
            <line number="352" hits="1"></line>
            <line number="353" hits="1"></line>
            <line number="355" hits="2"></line>
            <line number="356" hits="2"></line>
            <line number="357" hits="2"></line>
            <line number="358" hits="2"></line>
            <line number="359" hits="2"></line>
            <line number="360" hits="2"></line>
            <line number="361" hits="2"></line>
            <line number="362" hits="2"></line>
            <line number="363" hits="2"></line>
            <line number="364" hits="0"></line>
            <line number="365" hits="0"></line>
            <line number="367" hits="2"></line>
            <line number="368" hits="2"></line>
            <line number="369" hits="3"></line>
            <line number="370" hits="3"></line>
            <line number="372" hits="2"></line>
            <line number="380" hits="2"></line>
            <line number="381" hits="2"></line>
            <line number="382" hits="1"></line>
            <line number="383" hits="1"></line>
            <line number="384" hits="1"></line>
            <line number="386" hits="0"></line>
            <line number="389" hits="1"></line>
            <line number="390" hits="1"></line>
            <line number="391" hits="2"></line>
            <line number="392" hits="2"></line>
            <line number="394" hits="1"></line>
            <line number="404" hits="6"></line>
            <line number="405" hits="1"></line>
            <line number="406" hits="1"></line>
            <line number="408" hits="5"></line>
            <line number="409" hits="1"></line>
            <line number="410" hits="1"></line>
            <line number="412" hits="4"></line>
            <line number="413" hits="4"></line>
            <line number="414" hits="2"></line>
            <line number="415" hits="1"></line>
            <line number="416" hits="1"></line>
            <line number="418" hits="1"></line>
            <line number="421" hits="2"></line>
            <line number="431" hits="1"></line>
            <line number="432" hits="1"></line>
            <line number="433" hits="1"></line>
            <line number="434" hits="1"></line>
            <line number="435" hits="0"></line>
            <line number="436" hits="0"></line>
            <line number="438" hits="1"></line>
            <line number="451" hits="1"></line>
            <line number="452" hits="1"></line>
            <line number="453" hits="1"></line>
            <line number="454" hits="1"></line>
            <line number="455" hits="1"></line>
            <line number="456" hits="1"></line>
            <line number="457" hits="1"></line>
            <line number="458" hits="1"></line>
            <line number="459" hits="1"></line>
            <line number="460" hits="1"></line>
            <line number="461" hits="1"></line>
            <line number="462" hits="0"></line>
            <line number="463" hits="0"></line>
            <line number="465" hits="1"></line>
          </lines>
        </class>
        <class name="mcpToolError" filename="internal/httpserver/mcp.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="Error" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="475" hits="27"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="475" hits="27"></line>
          </lines>
        </class>
        <class name="mcpHandler" filename="internal/httpserver/mcp_quarantine.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="addQuarantineTools" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="16" hits="336"></line>
                <line number="17" hits="336"></line>
                <line number="18" hits="336"></line>
                <line number="19" hits="336"></line>
                <line number="20" hits="336"></line>
                <line number="21" hits="336"></line>
                <line number="22" hits="336"></line>
                <line number="23" hits="336"></line>
                <line number="24" hits="336"></line>
                <line number="25" hits="336"></line>
              </lines>
            </method>
            <method name="quarantineStep" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="49" hits="9"></line>
                <line number="50" hits="1"></line>
                <line number="51" hits="1"></line>
                <line number="53" hits="8"></line>
                <line number="54" hits="1"></line>
                <line number="55" hits="1"></line>
                <line number="57" hits="7"></line>
                <line number="58" hits="7"></line>
                <line number="59" hits="2"></line>
                <line number="60" hits="2"></line>
                <line number="61" hits="2"></line>
                <line number="62" hits="2"></line>
                <line number="64" hits="5"></line>
              </lines>
            </method>
            <method name="unquarantineStep" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="68" hits="5"></line>
                <line number="69" hits="1"></line>
                <line number="70" hits="1"></line>
                <line number="72" hits="4"></line>
                <line number="73" hits="1"></line>
                <line number="74" hits="1"></line>
                <line number="76" hits="3"></line>
                <line number="77" hits="1"></line>
                <line number="78" hits="1"></line>
                <line number="79" hits="1"></line>
                <line number="80" hits="1"></line>
                <line number="82" hits="2"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="16" hits="336"></line>
            <line number="17" hits="336"></line>
            <line number="18" hits="336"></line>
            <line number="19" hits="336"></line>
            <line number="20" hits="336"></line>
            <line number="21" hits="336"></line>
            <line number="22" hits="336"></line>
            <line number="23" hits="336"></line>
            <line number="24" hits="336"></line>
            <line number="25" hits="336"></line>
            <line number="49" hits="9"></line>
            <line number="50" hits="1"></line>
            <line number="51" hits="1"></line>
            <line number="53" hits="8"></line>
            <line number="54" hits="1"></line>
            <line number="55" hits="1"></line>
            <line number="57" hits="7"></line>
            <line number="58" hits="7"></line>
            <line number="59" hits="2"></line>
            <line number="60" hits="2"></line>
            <line number="61" hits="2"></line>
            <line number="62" hits="2"></line>
            <line number="64" hits="5"></line>
            <line number="68" hits="5"></line>
            <line number="69" hits="1"></line>
            <line number="70" hits="1"></line>
            <line number="72" hits="4"></line>
            <line number="73" hits="1"></line>
            <line number="74" hits="1"></line>
            <line number="76" hits="3"></line>
            <line number="77" hits="1"></line>
            <line number="78" hits="1"></line>
            <line number="79" hits="1"></line>
            <line number="80" hits="1"></line>
            <line number="82" hits="2"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/mcp_quarantine.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="checkStepInput" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="41" hits="12"></line>
                <line number="42" hits="2"></line>
                <line number="43" hits="2"></line>
                <line number="45" hits="10"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="41" hits="12"></line>
            <line number="42" hits="2"></line>
            <line number="43" hits="2"></line>
            <line number="45" hits="10"></line>
          </lines>
        </class>
        <class name="mcpHandler" filename="internal/httpserver/mcp_repo_writes.go" line-rate="0.84210527" branch-rate="0" complexity="0">
          <methods>
            <method name="addRepoWriteTools" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="22" hits="336"></line>
                <line number="23" hits="336"></line>
                <line number="24" hits="336"></line>
                <line number="25" hits="336"></line>
                <line number="26" hits="336"></line>
                <line number="27" hits="336"></line>
                <line number="28" hits="336"></line>
                <line number="29" hits="336"></line>
                <line number="30" hits="336"></line>
                <line number="31" hits="336"></line>
                <line number="32" hits="336"></line>
                <line number="33" hits="336"></line>
                <line number="34" hits="336"></line>
                <line number="35" hits="336"></line>
                <line number="36" hits="336"></line>
              </lines>
            </method>
            <method name="registerRepoTool" signature="" line-rate="0.75" branch-rate="0" complexity="0">
              <lines>
                <line number="50" hits="10"></line>
                <line number="51" hits="0"></line>
                <line number="52" hits="0"></line>
                <line number="54" hits="10"></line>
                <line number="55" hits="10"></line>
                <line number="56" hits="5"></line>
                <line number="57" hits="5"></line>
                <line number="59" hits="5"></line>
              </lines>
            </method>
            <method name="discoverReposTool" signature="" line-rate="0.75" branch-rate="0" complexity="0">
              <lines>
                <line number="69" hits="4"></line>
                <line number="70" hits="0"></line>
                <line number="71" hits="0"></line>
                <line number="73" hits="4"></line>
                <line number="74" hits="4"></line>
                <line number="75" hits="2"></line>
                <line number="76" hits="2"></line>
                <line number="78" hits="2"></line>
              </lines>
            </method>
            <method name="untrackRepoTool" signature="" line-rate="0.71428573" branch-rate="0" complexity="0">
              <lines>
                <line number="91" hits="4"></line>
                <line number="92" hits="0"></line>
                <line number="93" hits="0"></line>
                <line number="95" hits="4"></line>
                <line number="96" hits="2"></line>
                <line number="97" hits="2"></line>
                <line number="99" hits="2"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="22" hits="336"></line>
            <line number="23" hits="336"></line>
            <line number="24" hits="336"></line>
            <line number="25" hits="336"></line>
            <line number="26" hits="336"></line>
            <line number="27" hits="336"></line>
            <line number="28" hits="336"></line>
            <line number="29" hits="336"></line>
            <line number="30" hits="336"></line>
            <line number="31" hits="336"></line>
            <line number="32" hits="336"></line>
            <line number="33" hits="336"></line>
            <line number="34" hits="336"></line>
            <line number="35" hits="336"></line>
            <line number="36" hits="336"></line>
            <line number="50" hits="10"></line>
            <line number="51" hits="0"></line>
            <line number="52" hits="0"></line>
            <line number="54" hits="10"></line>
            <line number="55" hits="10"></line>
            <line number="56" hits="5"></line>
            <line number="57" hits="5"></line>
            <line number="59" hits="5"></line>
            <line number="69" hits="4"></line>
            <line number="70" hits="0"></line>
            <line number="71" hits="0"></line>
            <line number="73" hits="4"></line>
            <line number="74" hits="4"></line>
            <line number="75" hits="2"></line>
            <line number="76" hits="2"></line>
            <line number="78" hits="2"></line>
            <line number="91" hits="4"></line>
            <line number="92" hits="0"></line>
            <line number="93" hits="0"></line>
            <line number="95" hits="4"></line>
            <line number="96" hits="2"></line>
            <line number="97" hits="2"></line>
            <line number="99" hits="2"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/mcp_repo_writes.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="problemError" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="39" hits="13"></line>
                <line number="40" hits="13"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="39" hits="13"></line>
            <line number="40" hits="13"></line>
          </lines>
        </class>
        <class name="mcpHandler" filename="internal/httpserver/mcp_repos.go" line-rate="0.8857143" branch-rate="0" complexity="0">
          <methods>
            <method name="addRepoTools" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="17" hits="336"></line>
                <line number="18" hits="336"></line>
                <line number="19" hits="336"></line>
                <line number="20" hits="336"></line>
                <line number="21" hits="336"></line>
                <line number="22" hits="336"></line>
                <line number="23" hits="336"></line>
                <line number="24" hits="336"></line>
                <line number="25" hits="336"></line>
                <line number="26" hits="336"></line>
                <line number="27" hits="336"></line>
                <line number="28" hits="336"></line>
                <line number="29" hits="336"></line>
                <line number="30" hits="336"></line>
                <line number="31" hits="336"></line>
                <line number="32" hits="336"></line>
                <line number="33" hits="336"></line>
                <line number="34" hits="336"></line>
                <line number="35" hits="336"></line>
                <line number="36" hits="336"></line>
                <line number="37" hits="336"></line>
                <line number="38" hits="336"></line>
                <line number="39" hits="336"></line>
                <line number="40" hits="336"></line>
                <line number="41" hits="336"></line>
                <line number="42" hits="336"></line>
                <line number="43" hits="336"></line>
                <line number="44" hits="336"></line>
                <line number="45" hits="336"></line>
                <line number="46" hits="336"></line>
              </lines>
            </method>
            <method name="getVersion" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="51" hits="1"></line>
                <line number="52" hits="1"></line>
              </lines>
            </method>
            <method name="listRepos" signature="" line-rate="0.7777778" branch-rate="0" complexity="0">
              <lines>
                <line number="61" hits="5"></line>
                <line number="62" hits="5"></line>
                <line number="63" hits="5"></line>
                <line number="64" hits="5"></line>
                <line number="65" hits="5"></line>
                <line number="66" hits="5"></line>
                <line number="67" hits="0"></line>
                <line number="68" hits="0"></line>
                <line number="70" hits="5"></line>
              </lines>
            </method>
            <method name="getRepo" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="78" hits="3"></line>
                <line number="79" hits="3"></line>
                <line number="80" hits="2"></line>
                <line number="81" hits="2"></line>
                <line number="83" hits="1"></line>
              </lines>
            </method>
            <method name="listRepoIdentifiers" signature="" line-rate="0.75" branch-rate="0" complexity="0">
              <lines>
                <line number="92" hits="3"></line>
                <line number="93" hits="2"></line>
                <line number="94" hits="2"></line>
                <line number="96" hits="1"></line>
                <line number="97" hits="1"></line>
                <line number="98" hits="0"></line>
                <line number="99" hits="0"></line>
                <line number="101" hits="1"></line>
              </lines>
            </method>
            <method name="getGitHubRateLimit" signature="" line-rate="0.71428573" branch-rate="0" complexity="0">
              <lines>
                <line number="111" hits="2"></line>
                <line number="112" hits="2"></line>
                <line number="113" hits="2"></line>
                <line number="114" hits="2"></line>
                <line number="115" hits="0"></line>
                <line number="116" hits="0"></line>
                <line number="118" hits="2"></line>
              </lines>
            </method>
            <method name="getSettings" signature="" line-rate="0.7777778" branch-rate="0" complexity="0">
              <lines>
                <line number="122" hits="5"></line>
                <line number="123" hits="5"></line>
                <line number="124" hits="1"></line>
                <line number="125" hits="1"></line>
                <line number="127" hits="4"></line>
                <line number="128" hits="4"></line>
                <line number="129" hits="0"></line>
                <line number="130" hits="0"></line>
                <line number="132" hits="4"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="17" hits="336"></line>
            <line number="18" hits="336"></line>
            <line number="19" hits="336"></line>
            <line number="20" hits="336"></line>
            <line number="21" hits="336"></line>
            <line number="22" hits="336"></line>
            <line number="23" hits="336"></line>
            <line number="24" hits="336"></line>
            <line number="25" hits="336"></line>
            <line number="26" hits="336"></line>
            <line number="27" hits="336"></line>
            <line number="28" hits="336"></line>
            <line number="29" hits="336"></line>
            <line number="30" hits="336"></line>
            <line number="31" hits="336"></line>
            <line number="32" hits="336"></line>
            <line number="33" hits="336"></line>
            <line number="34" hits="336"></line>
            <line number="35" hits="336"></line>
            <line number="36" hits="336"></line>
            <line number="37" hits="336"></line>
            <line number="38" hits="336"></line>
            <line number="39" hits="336"></line>
            <line number="40" hits="336"></line>
            <line number="41" hits="336"></line>
            <line number="42" hits="336"></line>
            <line number="43" hits="336"></line>
            <line number="44" hits="336"></line>
            <line number="45" hits="336"></line>
            <line number="46" hits="336"></line>
            <line number="51" hits="1"></line>
            <line number="52" hits="1"></line>
            <line number="61" hits="5"></line>
            <line number="62" hits="5"></line>
            <line number="63" hits="5"></line>
            <line number="64" hits="5"></line>
            <line number="65" hits="5"></line>
            <line number="66" hits="5"></line>
            <line number="67" hits="0"></line>
            <line number="68" hits="0"></line>
            <line number="70" hits="5"></line>
            <line number="78" hits="3"></line>
            <line number="79" hits="3"></line>
            <line number="80" hits="2"></line>
            <line number="81" hits="2"></line>
            <line number="83" hits="1"></line>
            <line number="92" hits="3"></line>
            <line number="93" hits="2"></line>
            <line number="94" hits="2"></line>
            <line number="96" hits="1"></line>
            <line number="97" hits="1"></line>
            <line number="98" hits="0"></line>
            <line number="99" hits="0"></line>
            <line number="101" hits="1"></line>
            <line number="111" hits="2"></line>
            <line number="112" hits="2"></line>
            <line number="113" hits="2"></line>
            <line number="114" hits="2"></line>
            <line number="115" hits="0"></line>
            <line number="116" hits="0"></line>
            <line number="118" hits="2"></line>
            <line number="122" hits="5"></line>
            <line number="123" hits="5"></line>
            <line number="124" hits="1"></line>
            <line number="125" hits="1"></line>
            <line number="127" hits="4"></line>
            <line number="128" hits="4"></line>
            <line number="129" hits="0"></line>
            <line number="130" hits="0"></line>
            <line number="132" hits="4"></line>
          </lines>
        </class>
        <class name="mcpHandler" filename="internal/httpserver/mcp_run_actions.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="addRunActionTools" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="20" hits="336"></line>
                <line number="21" hits="336"></line>
                <line number="22" hits="336"></line>
                <line number="23" hits="4"></line>
                <line number="25" hits="336"></line>
                <line number="26" hits="336"></line>
                <line number="27" hits="336"></line>
                <line number="28" hits="3"></line>
              </lines>
            </method>
            <method name="act" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="45" hits="672"></line>
                <line number="46" hits="11"></line>
                <line number="47" hits="2"></line>
                <line number="48" hits="2"></line>
                <line number="50" hits="9"></line>
                <line number="51" hits="2"></line>
                <line number="52" hits="2"></line>
                <line number="54" hits="7"></line>
                <line number="55" hits="5"></line>
                <line number="56" hits="5"></line>
                <line number="57" hits="5"></line>
                <line number="58" hits="5"></line>
                <line number="60" hits="2"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="20" hits="336"></line>
            <line number="21" hits="336"></line>
            <line number="22" hits="336"></line>
            <line number="23" hits="4"></line>
            <line number="25" hits="336"></line>
            <line number="26" hits="336"></line>
            <line number="27" hits="336"></line>
            <line number="28" hits="3"></line>
            <line number="45" hits="672"></line>
            <line number="46" hits="11"></line>
            <line number="47" hits="2"></line>
            <line number="48" hits="2"></line>
            <line number="50" hits="9"></line>
            <line number="51" hits="2"></line>
            <line number="52" hits="2"></line>
            <line number="54" hits="7"></line>
            <line number="55" hits="5"></line>
            <line number="56" hits="5"></line>
            <line number="57" hits="5"></line>
            <line number="58" hits="5"></line>
            <line number="60" hits="2"></line>
          </lines>
        </class>
        <class name="mcpHandler" filename="internal/httpserver/mcp_settings_update.go" line-rate="0.7647059" branch-rate="0" complexity="0">
          <methods>
            <method name="addSettingsUpdateTool" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="19" hits="336"></line>
                <line number="20" hits="336"></line>
                <line number="21" hits="336"></line>
                <line number="22" hits="336"></line>
                <line number="23" hits="336"></line>
                <line number="24" hits="336"></line>
              </lines>
            </method>
            <method name="updateSettings" signature="" line-rate="0.6363636" branch-rate="0" complexity="0">
              <lines>
                <line number="60" hits="7"></line>
                <line number="61" hits="7"></line>
                <line number="62" hits="1"></line>
                <line number="63" hits="1"></line>
                <line number="65" hits="6"></line>
                <line number="66" hits="6"></line>
                <line number="67" hits="0"></line>
                <line number="68" hits="0"></line>
                <line number="69" hits="0"></line>
                <line number="70" hits="0"></line>
                <line number="72" hits="6"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="19" hits="336"></line>
            <line number="20" hits="336"></line>
            <line number="21" hits="336"></line>
            <line number="22" hits="336"></line>
            <line number="23" hits="336"></line>
            <line number="24" hits="336"></line>
            <line number="60" hits="7"></line>
            <line number="61" hits="7"></line>
            <line number="62" hits="1"></line>
            <line number="63" hits="1"></line>
            <line number="65" hits="6"></line>
            <line number="66" hits="6"></line>
            <line number="67" hits="0"></line>
            <line number="68" hits="0"></line>
            <line number="69" hits="0"></line>
            <line number="70" hits="0"></line>
            <line number="72" hits="6"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/mcp_settings_update.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="settingsUpdateSchema" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="30" hits="336"></line>
                <line number="31" hits="336"></line>
                <line number="32" hits="336"></line>
                <line number="33" hits="2016"></line>
                <line number="34" hits="2016"></line>
                <line number="35" hits="2016"></line>
                <line number="36" hits="1680"></line>
                <line number="37" hits="1680"></line>
                <line number="38" hits="4704"></line>
                <line number="39" hits="4704"></line>
                <line number="41" hits="1680"></line>
                <line number="44" hits="2016"></line>
                <line number="45" hits="336"></line>
                <line number="46" hits="336"></line>
                <line number="47" hits="336"></line>
                <line number="49" hits="2016"></line>
                <line number="52" hits="336"></line>
                <line number="53" hits="336"></line>
                <line number="54" hits="336"></line>
                <line number="55" hits="336"></line>
                <line number="56" hits="336"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="30" hits="336"></line>
            <line number="31" hits="336"></line>
            <line number="32" hits="336"></line>
            <line number="33" hits="2016"></line>
            <line number="34" hits="2016"></line>
            <line number="35" hits="2016"></line>
            <line number="36" hits="1680"></line>
            <line number="37" hits="1680"></line>
            <line number="38" hits="4704"></line>
            <line number="39" hits="4704"></line>
            <line number="41" hits="1680"></line>
            <line number="44" hits="2016"></line>
            <line number="45" hits="336"></line>
            <line number="46" hits="336"></line>
            <line number="47" hits="336"></line>
            <line number="49" hits="2016"></line>
            <line number="52" hits="336"></line>
            <line number="53" hits="336"></line>
            <line number="54" hits="336"></line>
            <line number="55" hits="336"></line>
            <line number="56" hits="336"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/noindex.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="noindex" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="12" hits="336"></line>
                <line number="13" hits="821"></line>
                <line number="14" hits="821"></line>
                <line number="15" hits="821"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="12" hits="336"></line>
            <line number="13" hits="821"></line>
            <line number="14" hits="821"></line>
            <line number="15" hits="821"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/pipelines.go" line-rate="0.95" branch-rate="0" complexity="0">
          <methods>
            <method name="toPipelineSummaryDTO" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="23" hits="33"></line>
                <line number="24" hits="33"></line>
                <line number="25" hits="15"></line>
                <line number="26" hits="15"></line>
                <line number="28" hits="33"></line>
                <line number="29" hits="33"></line>
                <line number="30" hits="33"></line>
                <line number="31" hits="33"></line>
                <line number="32" hits="33"></line>
                <line number="33" hits="33"></line>
                <line number="34" hits="33"></line>
                <line number="35" hits="33"></line>
              </lines>
            </method>
            <method name="toTrendDTO" signature="" line-rate="0.6" branch-rate="0" complexity="0">
              <lines>
                <line number="51" hits="10"></line>
                <line number="52" hits="10"></line>
                <line number="53" hits="0"></line>
                <line number="54" hits="0"></line>
                <line number="56" hits="10"></line>
              </lines>
            </method>
            <method name="toStepDTO" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="82" hits="8"></line>
                <line number="83" hits="8"></line>
                <line number="84" hits="8"></line>
                <line number="85" hits="8"></line>
                <line number="86" hits="8"></line>
                <line number="87" hits="8"></line>
                <line number="88" hits="8"></line>
                <line number="89" hits="8"></line>
                <line number="90" hits="8"></line>
                <line number="91" hits="8"></line>
                <line number="92" hits="8"></line>
                <line number="93" hits="8"></line>
                <line number="94" hits="8"></line>
              </lines>
            </method>
            <method name="toFlakyRunDTO" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="104" hits="3"></line>
                <line number="105" hits="3"></line>
              </lines>
            </method>
            <method name="toRunStepDTO" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="117" hits="25"></line>
                <line number="118" hits="25"></line>
                <line number="119" hits="25"></line>
                <line number="120" hits="25"></line>
                <line number="121" hits="25"></line>
                <line number="122" hits="25"></line>
                <line number="123" hits="25"></line>
                <line number="124" hits="25"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="23" hits="33"></line>
            <line number="24" hits="33"></line>
            <line number="25" hits="15"></line>
            <line number="26" hits="15"></line>
            <line number="28" hits="33"></line>
            <line number="29" hits="33"></line>
            <line number="30" hits="33"></line>
            <line number="31" hits="33"></line>
            <line number="32" hits="33"></line>
            <line number="33" hits="33"></line>
            <line number="34" hits="33"></line>
            <line number="35" hits="33"></line>
            <line number="51" hits="10"></line>
            <line number="52" hits="10"></line>
            <line number="53" hits="0"></line>
            <line number="54" hits="0"></line>
            <line number="56" hits="10"></line>
            <line number="82" hits="8"></line>
            <line number="83" hits="8"></line>
            <line number="84" hits="8"></line>
            <line number="85" hits="8"></line>
            <line number="86" hits="8"></line>
            <line number="87" hits="8"></line>
            <line number="88" hits="8"></line>
            <line number="89" hits="8"></line>
            <line number="90" hits="8"></line>
            <line number="91" hits="8"></line>
            <line number="92" hits="8"></line>
            <line number="93" hits="8"></line>
            <line number="94" hits="8"></line>
            <line number="104" hits="3"></line>
            <line number="105" hits="3"></line>
            <line number="117" hits="25"></line>
            <line number="118" hits="25"></line>
            <line number="119" hits="25"></line>
            <line number="120" hits="25"></line>
            <line number="121" hits="25"></line>
            <line number="122" hits="25"></line>
            <line number="123" hits="25"></line>
            <line number="124" hits="25"></line>
          </lines>
        </class>
        <class name="pipelinesHandler" filename="internal/httpserver/pipelines.go" line-rate="0.7580645" branch-rate="0" complexity="0">
          <methods>
            <method name="list" signature="" line-rate="0.88235295" branch-rate="0" complexity="0">
              <lines>
                <line number="138" hits="20"></line>
                <line number="139" hits="20"></line>
                <line number="140" hits="20"></line>
                <line number="141" hits="20"></line>
                <line number="142" hits="20"></line>
                <line number="143" hits="20"></line>
                <line number="144" hits="1"></line>
                <line number="145" hits="1"></line>
                <line number="146" hits="1"></line>
                <line number="147" hits="1"></line>
                <line number="149" hits="19"></line>
                <line number="150" hits="19"></line>
                <line number="151" hits="1"></line>
                <line number="152" hits="1"></line>
                <line number="153" hits="1"></line>
                <line number="154" hits="1"></line>
                <line number="156" hits="18"></line>
                <line number="157" hits="18"></line>
                <line number="158" hits="18"></line>
                <line number="159" hits="18"></line>
                <line number="160" hits="18"></line>
                <line number="161" hits="18"></line>
                <line number="162" hits="18"></line>
                <line number="163" hits="18"></line>
                <line number="164" hits="18"></line>
                <line number="165" hits="0"></line>
                <line number="166" hits="0"></line>
                <line number="167" hits="0"></line>
                <line number="168" hits="0"></line>
                <line number="170" hits="18"></line>
                <line number="171" hits="18"></line>
                <line number="172" hits="21"></line>
                <line number="173" hits="21"></line>
                <line number="175" hits="18"></line>
              </lines>
            </method>
            <method name="get" signature="" line-rate="0.8235294" branch-rate="0" complexity="0">
              <lines>
                <line number="179" hits="5"></line>
                <line number="180" hits="5"></line>
                <line number="181" hits="5"></line>
                <line number="182" hits="5"></line>
                <line number="183" hits="1"></line>
                <line number="184" hits="1"></line>
                <line number="185" hits="1"></line>
                <line number="186" hits="1"></line>
                <line number="187" hits="1"></line>
                <line number="189" hits="0"></line>
                <line number="190" hits="0"></line>
                <line number="191" hits="0"></line>
                <line number="194" hits="4"></line>
                <line number="195" hits="4"></line>
                <line number="196" hits="4"></line>
                <line number="197" hits="4"></line>
                <line number="198" hits="4"></line>
              </lines>
            </method>
            <method name="steps" signature="" line-rate="0.5294118" branch-rate="0" complexity="0">
              <lines>
                <line number="206" hits="2"></line>
                <line number="207" hits="2"></line>
                <line number="208" hits="2"></line>
                <line number="209" hits="2"></line>
                <line number="210" hits="0"></line>
                <line number="211" hits="0"></line>
                <line number="212" hits="0"></line>
                <line number="213" hits="0"></line>
                <line number="214" hits="0"></line>
                <line number="216" hits="0"></line>
                <line number="217" hits="0"></line>
                <line number="218" hits="0"></line>
                <line number="221" hits="2"></line>
                <line number="222" hits="2"></line>
                <line number="223" hits="3"></line>
                <line number="224" hits="3"></line>
                <line number="226" hits="2"></line>
              </lines>
            </method>
            <method name="flakyRuns" signature="" line-rate="0.5294118" branch-rate="0" complexity="0">
              <lines>
                <line number="233" hits="2"></line>
                <line number="234" hits="2"></line>
                <line number="235" hits="2"></line>
                <line number="236" hits="2"></line>
                <line number="237" hits="0"></line>
                <line number="238" hits="0"></line>
                <line number="239" hits="0"></line>
                <line number="240" hits="0"></line>
                <line number="241" hits="0"></line>
                <line number="243" hits="0"></line>
                <line number="244" hits="0"></line>
                <line number="245" hits="0"></line>
                <line number="248" hits="2"></line>
                <line number="249" hits="2"></line>
                <line number="250" hits="2"></line>
                <line number="251" hits="2"></line>
                <line number="253" hits="2"></line>
              </lines>
            </method>
            <method name="runSteps" signature="" line-rate="0.8" branch-rate="0" complexity="0">
              <lines>
                <line number="259" hits="16"></line>
                <line number="260" hits="16"></line>
                <line number="261" hits="1"></line>
                <line number="262" hits="1"></line>
                <line number="263" hits="1"></line>
                <line number="264" hits="1"></line>
                <line number="265" hits="1"></line>
                <line number="267" hits="0"></line>
                <line number="268" hits="0"></line>
                <line number="269" hits="0"></line>
                <line number="272" hits="15"></line>
                <line number="273" hits="15"></line>
                <line number="274" hits="17"></line>
                <line number="275" hits="17"></line>
                <line number="277" hits="15"></line>
              </lines>
            </method>
            <method name="unhealthySteps" signature="" line-rate="0.8333333" branch-rate="0" complexity="0">
              <lines>
                <line number="296" hits="4"></line>
                <line number="297" hits="4"></line>
                <line number="298" hits="4"></line>
                <line number="299" hits="4"></line>
                <line number="300" hits="4"></line>
                <line number="301" hits="4"></line>
                <line number="302" hits="0"></line>
                <line number="303" hits="0"></line>
                <line number="304" hits="0"></line>
                <line number="305" hits="0"></line>
                <line number="307" hits="4"></line>
                <line number="308" hits="4"></line>
                <line number="309" hits="4"></line>
                <line number="310" hits="3"></line>
                <line number="311" hits="3"></line>
                <line number="312" hits="3"></line>
                <line number="313" hits="3"></line>
                <line number="315" hits="3"></line>
                <line number="316" hits="3"></line>
                <line number="317" hits="3"></line>
                <line number="318" hits="3"></line>
                <line number="319" hits="3"></line>
                <line number="320" hits="3"></line>
                <line number="323" hits="4"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="138" hits="20"></line>
            <line number="139" hits="20"></line>
            <line number="140" hits="20"></line>
            <line number="141" hits="20"></line>
            <line number="142" hits="20"></line>
            <line number="143" hits="20"></line>
            <line number="144" hits="1"></line>
            <line number="145" hits="1"></line>
            <line number="146" hits="1"></line>
            <line number="147" hits="1"></line>
            <line number="149" hits="19"></line>
            <line number="150" hits="19"></line>
            <line number="151" hits="1"></line>
            <line number="152" hits="1"></line>
            <line number="153" hits="1"></line>
            <line number="154" hits="1"></line>
            <line number="156" hits="18"></line>
            <line number="157" hits="18"></line>
            <line number="158" hits="18"></line>
            <line number="159" hits="18"></line>
            <line number="160" hits="18"></line>
            <line number="161" hits="18"></line>
            <line number="162" hits="18"></line>
            <line number="163" hits="18"></line>
            <line number="164" hits="18"></line>
            <line number="165" hits="0"></line>
            <line number="166" hits="0"></line>
            <line number="167" hits="0"></line>
            <line number="168" hits="0"></line>
            <line number="170" hits="18"></line>
            <line number="171" hits="18"></line>
            <line number="172" hits="21"></line>
            <line number="173" hits="21"></line>
            <line number="175" hits="18"></line>
            <line number="179" hits="5"></line>
            <line number="180" hits="5"></line>
            <line number="181" hits="5"></line>
            <line number="182" hits="5"></line>
            <line number="183" hits="1"></line>
            <line number="184" hits="1"></line>
            <line number="185" hits="1"></line>
            <line number="186" hits="1"></line>
            <line number="187" hits="1"></line>
            <line number="189" hits="0"></line>
            <line number="190" hits="0"></line>
            <line number="191" hits="0"></line>
            <line number="194" hits="4"></line>
            <line number="195" hits="4"></line>
            <line number="196" hits="4"></line>
            <line number="197" hits="4"></line>
            <line number="198" hits="4"></line>
            <line number="206" hits="2"></line>
            <line number="207" hits="2"></line>
            <line number="208" hits="2"></line>
            <line number="209" hits="2"></line>
            <line number="210" hits="0"></line>
            <line number="211" hits="0"></line>
            <line number="212" hits="0"></line>
            <line number="213" hits="0"></line>
            <line number="214" hits="0"></line>
            <line number="216" hits="0"></line>
            <line number="217" hits="0"></line>
            <line number="218" hits="0"></line>
            <line number="221" hits="2"></line>
            <line number="222" hits="2"></line>
            <line number="223" hits="3"></line>
            <line number="224" hits="3"></line>
            <line number="226" hits="2"></line>
            <line number="233" hits="2"></line>
            <line number="234" hits="2"></line>
            <line number="235" hits="2"></line>
            <line number="236" hits="2"></line>
            <line number="237" hits="0"></line>
            <line number="238" hits="0"></line>
            <line number="239" hits="0"></line>
            <line number="240" hits="0"></line>
            <line number="241" hits="0"></line>
            <line number="243" hits="0"></line>
            <line number="244" hits="0"></line>
            <line number="245" hits="0"></line>
            <line number="248" hits="2"></line>
            <line number="249" hits="2"></line>
            <line number="250" hits="2"></line>
            <line number="251" hits="2"></line>
            <line number="253" hits="2"></line>
            <line number="259" hits="16"></line>
            <line number="260" hits="16"></line>
            <line number="261" hits="1"></line>
            <line number="262" hits="1"></line>
            <line number="263" hits="1"></line>
            <line number="264" hits="1"></line>
            <line number="265" hits="1"></line>
            <line number="267" hits="0"></line>
            <line number="268" hits="0"></line>
            <line number="269" hits="0"></line>
            <line number="272" hits="15"></line>
            <line number="273" hits="15"></line>
            <line number="274" hits="17"></line>
            <line number="275" hits="17"></line>
            <line number="277" hits="15"></line>
            <line number="296" hits="4"></line>
            <line number="297" hits="4"></line>
            <line number="298" hits="4"></line>
            <line number="299" hits="4"></line>
            <line number="300" hits="4"></line>
            <line number="301" hits="4"></line>
            <line number="302" hits="0"></line>
            <line number="303" hits="0"></line>
            <line number="304" hits="0"></line>
            <line number="305" hits="0"></line>
            <line number="307" hits="4"></line>
            <line number="308" hits="4"></line>
            <line number="309" hits="4"></line>
            <line number="310" hits="3"></line>
            <line number="311" hits="3"></line>
            <line number="312" hits="3"></line>
            <line number="313" hits="3"></line>
            <line number="315" hits="3"></line>
            <line number="316" hits="3"></line>
            <line number="317" hits="3"></line>
            <line number="318" hits="3"></line>
            <line number="319" hits="3"></line>
            <line number="320" hits="3"></line>
            <line number="323" hits="4"></line>
          </lines>
        </class>
        <class name="usageHandler" filename="internal/httpserver/pipelines.go" line-rate="0.8" branch-rate="0" complexity="0">
          <methods>
            <method name="get" signature="" line-rate="0.8" branch-rate="0" complexity="0">
              <lines>
                <line number="337" hits="3"></line>
                <line number="338" hits="3"></line>
                <line number="339" hits="3"></line>
                <line number="340" hits="2"></line>
                <line number="341" hits="2"></line>
                <line number="342" hits="2"></line>
                <line number="343" hits="2"></line>
                <line number="345" hits="1"></line>
                <line number="346" hits="1"></line>
                <line number="347" hits="1"></line>
                <line number="348" hits="1"></line>
                <line number="349" hits="0"></line>
                <line number="350" hits="0"></line>
                <line number="351" hits="0"></line>
                <line number="352" hits="0"></line>
                <line number="354" hits="1"></line>
                <line number="355" hits="1"></line>
                <line number="356" hits="1"></line>
                <line number="357" hits="1"></line>
                <line number="359" hits="1"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="337" hits="3"></line>
            <line number="338" hits="3"></line>
            <line number="339" hits="3"></line>
            <line number="340" hits="2"></line>
            <line number="341" hits="2"></line>
            <line number="342" hits="2"></line>
            <line number="343" hits="2"></line>
            <line number="345" hits="1"></line>
            <line number="346" hits="1"></line>
            <line number="347" hits="1"></line>
            <line number="348" hits="1"></line>
            <line number="349" hits="0"></line>
            <line number="350" hits="0"></line>
            <line number="351" hits="0"></line>
            <line number="352" hits="0"></line>
            <line number="354" hits="1"></line>
            <line number="355" hits="1"></line>
            <line number="356" hits="1"></line>
            <line number="357" hits="1"></line>
            <line number="359" hits="1"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/quarantine.go" line-rate="0.6956522" branch-rate="0" complexity="0">
          <methods>
            <method name="toQuarantineDTO" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="22" hits="62"></line>
                <line number="23" hits="41"></line>
                <line number="24" hits="41"></line>
                <line number="26" hits="21"></line>
              </lines>
            </method>
            <method name="mountQuarantine" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="50" hits="336"></line>
                <line number="51" hits="336"></line>
                <line number="52" hits="336"></line>
                <line number="53" hits="336"></line>
              </lines>
            </method>
            <method name="writeQuarantineError" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="93" hits="3"></line>
                <line number="94" hits="3"></line>
                <line number="95" hits="3"></line>
              </lines>
            </method>
            <method name="classifyQuarantineError" signature="" line-rate="0.75" branch-rate="0" complexity="0">
              <lines>
                <line number="101" hits="6"></line>
                <line number="103" hits="4"></line>
                <line number="105" hits="2"></line>
                <line number="107" hits="0"></line>
              </lines>
            </method>
            <method name="readOptionalJSON" signature="" line-rate="0.25" branch-rate="0" complexity="0">
              <lines>
                <line number="114" hits="19"></line>
                <line number="115" hits="0"></line>
                <line number="116" hits="0"></line>
                <line number="117" hits="0"></line>
                <line number="118" hits="0"></line>
                <line number="119" hits="0"></line>
                <line number="121" hits="0"></line>
                <line number="124" hits="19"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="22" hits="62"></line>
            <line number="23" hits="41"></line>
            <line number="24" hits="41"></line>
            <line number="26" hits="21"></line>
            <line number="50" hits="336"></line>
            <line number="51" hits="336"></line>
            <line number="52" hits="336"></line>
            <line number="53" hits="336"></line>
            <line number="93" hits="3"></line>
            <line number="94" hits="3"></line>
            <line number="95" hits="3"></line>
            <line number="101" hits="6"></line>
            <line number="103" hits="4"></line>
            <line number="105" hits="2"></line>
            <line number="107" hits="0"></line>
            <line number="114" hits="19"></line>
            <line number="115" hits="0"></line>
            <line number="116" hits="0"></line>
            <line number="117" hits="0"></line>
            <line number="118" hits="0"></line>
            <line number="119" hits="0"></line>
            <line number="121" hits="0"></line>
            <line number="124" hits="19"></line>
          </lines>
        </class>
        <class name="quarantineHandler" filename="internal/httpserver/quarantine.go" line-rate="0.9130435" branch-rate="0" complexity="0">
          <methods>
            <method name="quarantine" signature="" line-rate="0.85714287" branch-rate="0" complexity="0">
              <lines>
                <line number="58" hits="12"></line>
                <line number="59" hits="1"></line>
                <line number="60" hits="1"></line>
                <line number="62" hits="11"></line>
                <line number="63" hits="11"></line>
                <line number="64" hits="0"></line>
                <line number="65" hits="0"></line>
                <line number="67" hits="11"></line>
                <line number="68" hits="11"></line>
                <line number="69" hits="2"></line>
                <line number="70" hits="2"></line>
                <line number="71" hits="2"></line>
                <line number="72" hits="2"></line>
                <line number="74" hits="9"></line>
              </lines>
            </method>
            <method name="unquarantine" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="79" hits="4"></line>
                <line number="80" hits="1"></line>
                <line number="81" hits="1"></line>
                <line number="83" hits="3"></line>
                <line number="84" hits="1"></line>
                <line number="85" hits="1"></line>
                <line number="86" hits="1"></line>
                <line number="87" hits="1"></line>
                <line number="89" hits="2"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="58" hits="12"></line>
            <line number="59" hits="1"></line>
            <line number="60" hits="1"></line>
            <line number="62" hits="11"></line>
            <line number="63" hits="11"></line>
            <line number="64" hits="0"></line>
            <line number="65" hits="0"></line>
            <line number="67" hits="11"></line>
            <line number="68" hits="11"></line>
            <line number="69" hits="2"></line>
            <line number="70" hits="2"></line>
            <line number="71" hits="2"></line>
            <line number="72" hits="2"></line>
            <line number="74" hits="9"></line>
            <line number="79" hits="4"></line>
            <line number="80" hits="1"></line>
            <line number="81" hits="1"></line>
            <line number="83" hits="3"></line>
            <line number="84" hits="1"></line>
            <line number="85" hits="1"></line>
            <line number="86" hits="1"></line>
            <line number="87" hits="1"></line>
            <line number="89" hits="2"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/repos.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="toRepoDTO" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="48" hits="210"></line>
                <line number="49" hits="210"></line>
                <line number="50" hits="210"></line>
                <line number="51" hits="210"></line>
                <line number="52" hits="210"></line>
                <line number="53" hits="210"></line>
                <line number="54" hits="210"></line>
                <line number="55" hits="210"></line>
                <line number="56" hits="210"></line>
              </lines>
            </method>
            <method name="toRepoListDTO" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="86" hits="19"></line>
                <line number="87" hits="19"></line>
                <line number="88" hits="13"></line>
                <line number="89" hits="13"></line>
                <line number="91" hits="19"></line>
              </lines>
            </method>
            <method name="isTrackedForge" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="97" hits="5"></line>
                <line number="98" hits="5"></line>
              </lines>
            </method>
            <method name="registrationConflict" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="169" hits="10"></line>
                <line number="171" hits="4"></line>
                <line number="173" hits="2"></line>
                <line number="175" hits="1"></line>
                <line number="177" hits="1"></line>
                <line number="179" hits="2"></line>
              </lines>
            </method>
            <method name="writeJSON" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="301" hits="550"></line>
                <line number="302" hits="550"></line>
                <line number="303" hits="550"></line>
                <line number="304" hits="550"></line>
              </lines>
            </method>
            <method name="writeError" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="307" hits="140"></line>
                <line number="308" hits="140"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="48" hits="210"></line>
            <line number="49" hits="210"></line>
            <line number="50" hits="210"></line>
            <line number="51" hits="210"></line>
            <line number="52" hits="210"></line>
            <line number="53" hits="210"></line>
            <line number="54" hits="210"></line>
            <line number="55" hits="210"></line>
            <line number="56" hits="210"></line>
            <line number="86" hits="19"></line>
            <line number="87" hits="19"></line>
            <line number="88" hits="13"></line>
            <line number="89" hits="13"></line>
            <line number="91" hits="19"></line>
            <line number="97" hits="5"></line>
            <line number="98" hits="5"></line>
            <line number="169" hits="10"></line>
            <line number="171" hits="4"></line>
            <line number="173" hits="2"></line>
            <line number="175" hits="1"></line>
            <line number="177" hits="1"></line>
            <line number="179" hits="2"></line>
            <line number="301" hits="550"></line>
            <line number="302" hits="550"></line>
            <line number="303" hits="550"></line>
            <line number="304" hits="550"></line>
            <line number="307" hits="140"></line>
            <line number="308" hits="140"></line>
          </lines>
        </class>
        <class name="reposHandler" filename="internal/httpserver/repos.go" line-rate="0.92" branch-rate="0" complexity="0">
          <methods>
            <method name="list" signature="" line-rate="0.71428573" branch-rate="0" complexity="0">
              <lines>
                <line number="66" hits="14"></line>
                <line number="67" hits="14"></line>
                <line number="68" hits="14"></line>
                <line number="69" hits="14"></line>
                <line number="70" hits="14"></line>
                <line number="71" hits="14"></line>
                <line number="72" hits="14"></line>
                <line number="73" hits="14"></line>
                <line number="74" hits="14"></line>
                <line number="75" hits="0"></line>
                <line number="76" hits="0"></line>
                <line number="77" hits="0"></line>
                <line number="78" hits="0"></line>
                <line number="80" hits="14"></line>
              </lines>
            </method>
            <method name="register" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="109" hits="205"></line>
                <line number="110" hits="205"></line>
                <line number="111" hits="1"></line>
                <line number="112" hits="1"></line>
                <line number="114" hits="204"></line>
                <line number="115" hits="204"></line>
                <line number="116" hits="15"></line>
                <line number="117" hits="15"></line>
                <line number="118" hits="15"></line>
                <line number="119" hits="15"></line>
                <line number="121" hits="189"></line>
              </lines>
            </method>
            <method name="registerRepo" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="127" hits="214"></line>
                <line number="128" hits="3"></line>
                <line number="129" hits="3"></line>
                <line number="131" hits="211"></line>
                <line number="132" hits="4"></line>
                <line number="133" hits="4"></line>
                <line number="135" hits="207"></line>
                <line number="136" hits="207"></line>
                <line number="137" hits="3"></line>
                <line number="138" hits="3"></line>
                <line number="140" hits="204"></line>
                <line number="141" hits="204"></line>
                <line number="142" hits="204"></line>
                <line number="143" hits="204"></line>
                <line number="144" hits="204"></line>
                <line number="145" hits="204"></line>
                <line number="146" hits="204"></line>
                <line number="147" hits="10"></line>
                <line number="148" hits="8"></line>
                <line number="149" hits="8"></line>
                <line number="150" hits="8"></line>
                <line number="151" hits="8"></line>
                <line number="152" hits="8"></line>
                <line number="154" hits="2"></line>
                <line number="155" hits="2"></line>
                <line number="156" hits="2"></line>
                <line number="157" hits="2"></line>
                <line number="160" hits="194"></line>
              </lines>
            </method>
            <method name="identifiers" signature="" line-rate="0.6923077" branch-rate="0" complexity="0">
              <lines>
                <line number="188" hits="2"></line>
                <line number="189" hits="2"></line>
                <line number="190" hits="1"></line>
                <line number="191" hits="1"></line>
                <line number="192" hits="1"></line>
                <line number="193" hits="1"></line>
                <line number="195" hits="1"></line>
                <line number="196" hits="1"></line>
                <line number="197" hits="0"></line>
                <line number="198" hits="0"></line>
                <line number="199" hits="0"></line>
                <line number="200" hits="0"></line>
                <line number="202" hits="1"></line>
              </lines>
            </method>
            <method name="discover" signature="" line-rate="0.8181818" branch-rate="0" complexity="0">
              <lines>
                <line number="206" hits="11"></line>
                <line number="207" hits="11"></line>
                <line number="208" hits="0"></line>
                <line number="209" hits="0"></line>
                <line number="211" hits="11"></line>
                <line number="212" hits="11"></line>
                <line number="213" hits="8"></line>
                <line number="214" hits="8"></line>
                <line number="215" hits="8"></line>
                <line number="216" hits="8"></line>
                <line number="218" hits="3"></line>
              </lines>
            </method>
            <method name="discoverRepos" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="223" hits="15"></line>
                <line number="224" hits="1"></line>
                <line number="225" hits="1"></line>
                <line number="227" hits="14"></line>
                <line number="228" hits="1"></line>
                <line number="229" hits="1"></line>
                <line number="231" hits="13"></line>
                <line number="232" hits="13"></line>
                <line number="233" hits="6"></line>
                <line number="234" hits="6"></line>
                <line number="236" hits="7"></line>
                <line number="237" hits="7"></line>
                <line number="238" hits="2"></line>
                <line number="239" hits="2"></line>
                <line number="241" hits="5"></line>
              </lines>
            </method>
            <method name="get" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="245" hits="6"></line>
                <line number="246" hits="6"></line>
                <line number="247" hits="4"></line>
                <line number="248" hits="4"></line>
                <line number="249" hits="4"></line>
                <line number="250" hits="4"></line>
                <line number="252" hits="2"></line>
              </lines>
            </method>
            <method name="trackedRepo" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="259" hits="15"></line>
                <line number="260" hits="15"></line>
                <line number="261" hits="4"></line>
                <line number="262" hits="4"></line>
                <line number="264" hits="11"></line>
                <line number="265" hits="6"></line>
                <line number="266" hits="6"></line>
                <line number="267" hits="6"></line>
                <line number="268" hits="6"></line>
                <line number="270" hits="5"></line>
              </lines>
            </method>
            <method name="untrack" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="274" hits="3"></line>
                <line number="275" hits="2"></line>
                <line number="276" hits="2"></line>
                <line number="277" hits="2"></line>
                <line number="278" hits="2"></line>
                <line number="280" hits="1"></line>
              </lines>
            </method>
            <method name="untrackRepo" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="286" hits="7"></line>
                <line number="287" hits="7"></line>
                <line number="288" hits="2"></line>
                <line number="289" hits="2"></line>
                <line number="291" hits="5"></line>
                <line number="292" hits="2"></line>
                <line number="293" hits="2"></line>
                <line number="294" hits="2"></line>
                <line number="295" hits="2"></line>
                <line number="297" hits="3"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="66" hits="14"></line>
            <line number="67" hits="14"></line>
            <line number="68" hits="14"></line>
            <line number="69" hits="14"></line>
            <line number="70" hits="14"></line>
            <line number="71" hits="14"></line>
            <line number="72" hits="14"></line>
            <line number="73" hits="14"></line>
            <line number="74" hits="14"></line>
            <line number="75" hits="0"></line>
            <line number="76" hits="0"></line>
            <line number="77" hits="0"></line>
            <line number="78" hits="0"></line>
            <line number="80" hits="14"></line>
            <line number="109" hits="205"></line>
            <line number="110" hits="205"></line>
            <line number="111" hits="1"></line>
            <line number="112" hits="1"></line>
            <line number="114" hits="204"></line>
            <line number="115" hits="204"></line>
            <line number="116" hits="15"></line>
            <line number="117" hits="15"></line>
            <line number="118" hits="15"></line>
            <line number="119" hits="15"></line>
            <line number="121" hits="189"></line>
            <line number="127" hits="214"></line>
            <line number="128" hits="3"></line>
            <line number="129" hits="3"></line>
            <line number="131" hits="211"></line>
            <line number="132" hits="4"></line>
            <line number="133" hits="4"></line>
            <line number="135" hits="207"></line>
            <line number="136" hits="207"></line>
            <line number="137" hits="3"></line>
            <line number="138" hits="3"></line>
            <line number="140" hits="204"></line>
            <line number="141" hits="204"></line>
            <line number="142" hits="204"></line>
            <line number="143" hits="204"></line>
            <line number="144" hits="204"></line>
            <line number="145" hits="204"></line>
            <line number="146" hits="204"></line>
            <line number="147" hits="10"></line>
            <line number="148" hits="8"></line>
            <line number="149" hits="8"></line>
            <line number="150" hits="8"></line>
            <line number="151" hits="8"></line>
            <line number="152" hits="8"></line>
            <line number="154" hits="2"></line>
            <line number="155" hits="2"></line>
            <line number="156" hits="2"></line>
            <line number="157" hits="2"></line>
            <line number="160" hits="194"></line>
            <line number="188" hits="2"></line>
            <line number="189" hits="2"></line>
            <line number="190" hits="1"></line>
            <line number="191" hits="1"></line>
            <line number="192" hits="1"></line>
            <line number="193" hits="1"></line>
            <line number="195" hits="1"></line>
            <line number="196" hits="1"></line>
            <line number="197" hits="0"></line>
            <line number="198" hits="0"></line>
            <line number="199" hits="0"></line>
            <line number="200" hits="0"></line>
            <line number="202" hits="1"></line>
            <line number="206" hits="11"></line>
            <line number="207" hits="11"></line>
            <line number="208" hits="0"></line>
            <line number="209" hits="0"></line>
            <line number="211" hits="11"></line>
            <line number="212" hits="11"></line>
            <line number="213" hits="8"></line>
            <line number="214" hits="8"></line>
            <line number="215" hits="8"></line>
            <line number="216" hits="8"></line>
            <line number="218" hits="3"></line>
            <line number="223" hits="15"></line>
            <line number="224" hits="1"></line>
            <line number="225" hits="1"></line>
            <line number="227" hits="14"></line>
            <line number="228" hits="1"></line>
            <line number="229" hits="1"></line>
            <line number="231" hits="13"></line>
            <line number="232" hits="13"></line>
            <line number="233" hits="6"></line>
            <line number="234" hits="6"></line>
            <line number="236" hits="7"></line>
            <line number="237" hits="7"></line>
            <line number="238" hits="2"></line>
            <line number="239" hits="2"></line>
            <line number="241" hits="5"></line>
            <line number="245" hits="6"></line>
            <line number="246" hits="6"></line>
            <line number="247" hits="4"></line>
            <line number="248" hits="4"></line>
            <line number="249" hits="4"></line>
            <line number="250" hits="4"></line>
            <line number="252" hits="2"></line>
            <line number="259" hits="15"></line>
            <line number="260" hits="15"></line>
            <line number="261" hits="4"></line>
            <line number="262" hits="4"></line>
            <line number="264" hits="11"></line>
            <line number="265" hits="6"></line>
            <line number="266" hits="6"></line>
            <line number="267" hits="6"></line>
            <line number="268" hits="6"></line>
            <line number="270" hits="5"></line>
            <line number="274" hits="3"></line>
            <line number="275" hits="2"></line>
            <line number="276" hits="2"></line>
            <line number="277" hits="2"></line>
            <line number="278" hits="2"></line>
            <line number="280" hits="1"></line>
            <line number="286" hits="7"></line>
            <line number="287" hits="7"></line>
            <line number="288" hits="2"></line>
            <line number="289" hits="2"></line>
            <line number="291" hits="5"></line>
            <line number="292" hits="2"></line>
            <line number="293" hits="2"></line>
            <line number="294" hits="2"></line>
            <line number="295" hits="2"></line>
            <line number="297" hits="3"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/routes.go" line-rate="0.9047619" branch-rate="0" complexity="0">
          <methods>
            <method name="loadRoutes" signature="" line-rate="0.875" branch-rate="0" complexity="0">
              <lines>
                <line number="24" hits="336"></line>
                <line number="25" hits="10"></line>
                <line number="26" hits="10"></line>
                <line number="28" hits="326"></line>
                <line number="29" hits="326"></line>
                <line number="30" hits="314"></line>
                <line number="31" hits="314"></line>
                <line number="33" hits="12"></line>
                <line number="34" hits="12"></line>
                <line number="35" hits="0"></line>
                <line number="36" hits="0"></line>
                <line number="38" hits="12"></line>
                <line number="39" hits="12"></line>
                <line number="40" hits="48"></line>
                <line number="41" hits="48"></line>
                <line number="43" hits="12"></line>
              </lines>
            </method>
            <method name="segments" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="71" hits="58"></line>
                <line number="72" hits="58"></line>
                <line number="73" hits="13"></line>
                <line number="74" hits="13"></line>
                <line number="76" hits="45"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="24" hits="336"></line>
            <line number="25" hits="10"></line>
            <line number="26" hits="10"></line>
            <line number="28" hits="326"></line>
            <line number="29" hits="326"></line>
            <line number="30" hits="314"></line>
            <line number="31" hits="314"></line>
            <line number="33" hits="12"></line>
            <line number="34" hits="12"></line>
            <line number="35" hits="0"></line>
            <line number="36" hits="0"></line>
            <line number="38" hits="12"></line>
            <line number="39" hits="12"></line>
            <line number="40" hits="48"></line>
            <line number="41" hits="48"></line>
            <line number="43" hits="12"></line>
            <line number="71" hits="58"></line>
            <line number="72" hits="58"></line>
            <line number="73" hits="13"></line>
            <line number="74" hits="13"></line>
            <line number="76" hits="45"></line>
          </lines>
        </class>
        <class name="routeSet" filename="internal/httpserver/routes.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="match" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="48" hits="10"></line>
                <line number="49" hits="10"></line>
                <line number="50" hits="10"></line>
                <line number="51" hits="10"></line>
                <line number="52" hits="30"></line>
                <line number="53" hits="23"></line>
                <line number="56" hits="7"></line>
                <line number="57" hits="7"></line>
                <line number="58" hits="7"></line>
                <line number="59" hits="1"></line>
                <line number="63" hits="6"></line>
                <line number="66" hits="4"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="48" hits="10"></line>
            <line number="49" hits="10"></line>
            <line number="50" hits="10"></line>
            <line number="51" hits="10"></line>
            <line number="52" hits="30"></line>
            <line number="53" hits="23"></line>
            <line number="56" hits="7"></line>
            <line number="57" hits="7"></line>
            <line number="58" hits="7"></line>
            <line number="59" hits="1"></line>
            <line number="63" hits="6"></line>
            <line number="66" hits="4"></line>
          </lines>
        </class>
        <class name="runActionsHandler" filename="internal/httpserver/run_actions.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="rerun" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="17" hits="9"></line>
                <line number="18" hits="9"></line>
              </lines>
            </method>
            <method name="cancel" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="23" hits="4"></line>
                <line number="24" hits="4"></line>
              </lines>
            </method>
            <method name="do" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="29" hits="13"></line>
                <line number="30" hits="13"></line>
                <line number="31" hits="2"></line>
                <line number="32" hits="2"></line>
                <line number="33" hits="2"></line>
                <line number="34" hits="2"></line>
                <line number="36" hits="11"></line>
                <line number="37" hits="11"></line>
                <line number="38" hits="3"></line>
                <line number="39" hits="3"></line>
                <line number="40" hits="3"></line>
                <line number="41" hits="3"></line>
                <line number="43" hits="8"></line>
                <line number="44" hits="8"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="17" hits="9"></line>
            <line number="18" hits="9"></line>
            <line number="23" hits="4"></line>
            <line number="24" hits="4"></line>
            <line number="29" hits="13"></line>
            <line number="30" hits="13"></line>
            <line number="31" hits="2"></line>
            <line number="32" hits="2"></line>
            <line number="33" hits="2"></line>
            <line number="34" hits="2"></line>
            <line number="36" hits="11"></line>
            <line number="37" hits="11"></line>
            <line number="38" hits="3"></line>
            <line number="39" hits="3"></line>
            <line number="40" hits="3"></line>
            <line number="41" hits="3"></line>
            <line number="43" hits="8"></line>
            <line number="44" hits="8"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/run_actions.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="classifyRunActionError" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="56" hits="13"></line>
                <line number="58" hits="2"></line>
                <line number="60" hits="4"></line>
                <line number="62" hits="2"></line>
                <line number="64" hits="3"></line>
                <line number="66" hits="1"></line>
                <line number="68" hits="1"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="56" hits="13"></line>
            <line number="58" hits="2"></line>
            <line number="60" hits="4"></line>
            <line number="62" hits="2"></line>
            <line number="64" hits="3"></line>
            <line number="66" hits="1"></line>
            <line number="68" hits="1"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/run_list.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="toRunSummaryDTO" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="42" hits="30"></line>
                <line number="43" hits="30"></line>
                <line number="44" hits="30"></line>
                <line number="45" hits="30"></line>
                <line number="46" hits="30"></line>
                <line number="47" hits="30"></line>
                <line number="48" hits="30"></line>
                <line number="49" hits="30"></line>
                <line number="50" hits="30"></line>
                <line number="51" hits="30"></line>
                <line number="52" hits="30"></line>
                <line number="53" hits="30"></line>
                <line number="54" hits="30"></line>
                <line number="55" hits="30"></line>
                <line number="56" hits="30"></line>
                <line number="57" hits="30"></line>
                <line number="58" hits="30"></line>
                <line number="60" hits="30"></line>
                <line number="61" hits="23"></line>
                <line number="62" hits="23"></line>
                <line number="64" hits="30"></line>
                <line number="65" hits="6"></line>
                <line number="66" hits="6"></line>
                <line number="68" hits="30"></line>
              </lines>
            </method>
            <method name="actionNames" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="72" hits="30"></line>
                <line number="73" hits="30"></line>
                <line number="74" hits="28"></line>
                <line number="75" hits="28"></line>
                <line number="77" hits="30"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="42" hits="30"></line>
            <line number="43" hits="30"></line>
            <line number="44" hits="30"></line>
            <line number="45" hits="30"></line>
            <line number="46" hits="30"></line>
            <line number="47" hits="30"></line>
            <line number="48" hits="30"></line>
            <line number="49" hits="30"></line>
            <line number="50" hits="30"></line>
            <line number="51" hits="30"></line>
            <line number="52" hits="30"></line>
            <line number="53" hits="30"></line>
            <line number="54" hits="30"></line>
            <line number="55" hits="30"></line>
            <line number="56" hits="30"></line>
            <line number="57" hits="30"></line>
            <line number="58" hits="30"></line>
            <line number="60" hits="30"></line>
            <line number="61" hits="23"></line>
            <line number="62" hits="23"></line>
            <line number="64" hits="30"></line>
            <line number="65" hits="6"></line>
            <line number="66" hits="6"></line>
            <line number="68" hits="30"></line>
            <line number="72" hits="30"></line>
            <line number="73" hits="30"></line>
            <line number="74" hits="28"></line>
            <line number="75" hits="28"></line>
            <line number="77" hits="30"></line>
          </lines>
        </class>
        <class name="runListHandler" filename="internal/httpserver/run_list.go" line-rate="0.8787879" branch-rate="0" complexity="0">
          <methods>
            <method name="list" signature="" line-rate="0.8787879" branch-rate="0" complexity="0">
              <lines>
                <line number="88" hits="24"></line>
                <line number="89" hits="24"></line>
                <line number="90" hits="24"></line>
                <line number="91" hits="24"></line>
                <line number="92" hits="1"></line>
                <line number="93" hits="1"></line>
                <line number="94" hits="1"></line>
                <line number="95" hits="1"></line>
                <line number="97" hits="23"></line>
                <line number="98" hits="23"></line>
                <line number="99" hits="1"></line>
                <line number="100" hits="1"></line>
                <line number="102" hits="22"></line>
                <line number="103" hits="22"></line>
                <line number="104" hits="22"></line>
                <line number="105" hits="22"></line>
                <line number="106" hits="22"></line>
                <line number="107" hits="22"></line>
                <line number="108" hits="22"></line>
                <line number="109" hits="22"></line>
                <line number="110" hits="22"></line>
                <line number="111" hits="22"></line>
                <line number="112" hits="22"></line>
                <line number="113" hits="22"></line>
                <line number="114" hits="0"></line>
                <line number="115" hits="0"></line>
                <line number="116" hits="0"></line>
                <line number="117" hits="0"></line>
                <line number="119" hits="22"></line>
                <line number="120" hits="22"></line>
                <line number="121" hits="27"></line>
                <line number="122" hits="27"></line>
                <line number="124" hits="22"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="88" hits="24"></line>
            <line number="89" hits="24"></line>
            <line number="90" hits="24"></line>
            <line number="91" hits="24"></line>
            <line number="92" hits="1"></line>
            <line number="93" hits="1"></line>
            <line number="94" hits="1"></line>
            <line number="95" hits="1"></line>
            <line number="97" hits="23"></line>
            <line number="98" hits="23"></line>
            <line number="99" hits="1"></line>
            <line number="100" hits="1"></line>
            <line number="102" hits="22"></line>
            <line number="103" hits="22"></line>
            <line number="104" hits="22"></line>
            <line number="105" hits="22"></line>
            <line number="106" hits="22"></line>
            <line number="107" hits="22"></line>
            <line number="108" hits="22"></line>
            <line number="109" hits="22"></line>
            <line number="110" hits="22"></line>
            <line number="111" hits="22"></line>
            <line number="112" hits="22"></line>
            <line number="113" hits="22"></line>
            <line number="114" hits="0"></line>
            <line number="115" hits="0"></line>
            <line number="116" hits="0"></line>
            <line number="117" hits="0"></line>
            <line number="119" hits="22"></line>
            <line number="120" hits="22"></line>
            <line number="121" hits="27"></line>
            <line number="122" hits="27"></line>
            <line number="124" hits="22"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/server.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="mountTelemetry" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="68" hits="336"></line>
                <line number="69" hits="336"></line>
                <line number="70" hits="336"></line>
                <line number="71" hits="336"></line>
              </lines>
            </method>
            <method name="mountForgeTokens" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="76" hits="336"></line>
                <line number="77" hits="319"></line>
                <line number="78" hits="319"></line>
                <line number="80" hits="17"></line>
                <line number="81" hits="17"></line>
                <line number="82" hits="17"></line>
                <line number="83" hits="17"></line>
              </lines>
            </method>
            <method name="mountRunActions" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="89" hits="336"></line>
                <line number="90" hits="314"></line>
                <line number="91" hits="314"></line>
                <line number="93" hits="22"></line>
                <line number="94" hits="22"></line>
                <line number="95" hits="22"></line>
              </lines>
            </method>
            <method name="New" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="100" hits="336"></line>
                <line number="101" hits="336"></line>
                <line number="102" hits="6"></line>
                <line number="103" hits="6"></line>
                <line number="104" hits="6"></line>
                <line number="105" hits="336"></line>
                <line number="106" hits="336"></line>
                <line number="107" hits="336"></line>
                <line number="108" hits="336"></line>
                <line number="109" hits="336"></line>
                <line number="110" hits="336"></line>
                <line number="111" hits="336"></line>
                <line number="112" hits="336"></line>
                <line number="113" hits="336"></line>
                <line number="114" hits="336"></line>
                <line number="115" hits="336"></line>
                <line number="116" hits="336"></line>
                <line number="117" hits="336"></line>
                <line number="118" hits="336"></line>
                <line number="119" hits="336"></line>
                <line number="120" hits="336"></line>
                <line number="121" hits="336"></line>
                <line number="122" hits="336"></line>
                <line number="123" hits="336"></line>
                <line number="124" hits="336"></line>
                <line number="125" hits="336"></line>
                <line number="126" hits="336"></line>
                <line number="127" hits="336"></line>
                <line number="128" hits="12"></line>
                <line number="129" hits="12"></line>
                <line number="131" hits="336"></line>
                <line number="132" hits="336"></line>
                <line number="133" hits="336"></line>
                <line number="134" hits="336"></line>
                <line number="135" hits="336"></line>
                <line number="136" hits="336"></line>
                <line number="137" hits="336"></line>
                <line number="138" hits="336"></line>
                <line number="139" hits="336"></line>
                <line number="140" hits="336"></line>
                <line number="141" hits="336"></line>
                <line number="142" hits="336"></line>
                <line number="143" hits="336"></line>
                <line number="144" hits="336"></line>
                <line number="145" hits="336"></line>
                <line number="146" hits="336"></line>
                <line number="147" hits="336"></line>
                <line number="148" hits="336"></line>
                <line number="149" hits="336"></line>
                <line number="150" hits="336"></line>
                <line number="151" hits="336"></line>
                <line number="152" hits="336"></line>
                <line number="153" hits="336"></line>
                <line number="154" hits="336"></line>
                <line number="155" hits="336"></line>
                <line number="156" hits="336"></line>
                <line number="157" hits="336"></line>
                <line number="158" hits="336"></line>
                <line number="159" hits="336"></line>
              </lines>
            </method>
            <method name="registerAuthRoutes" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="166" hits="336"></line>
                <line number="167" hits="336"></line>
                <line number="168" hits="336"></line>
                <line number="169" hits="336"></line>
                <line number="170" hits="336"></line>
                <line number="171" hits="336"></line>
                <line number="172" hits="336"></line>
                <line number="173" hits="336"></line>
                <line number="174" hits="336"></line>
                <line number="175" hits="336"></line>
                <line number="176" hits="336"></line>
                <line number="177" hits="336"></line>
              </lines>
            </method>
            <method name="readyzHandler" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="194" hits="336"></line>
                <line number="195" hits="334"></line>
                <line number="196" hits="334"></line>
                <line number="198" hits="336"></line>
                <line number="199" hits="336"></line>
                <line number="200" hits="336"></line>
                <line number="201" hits="336"></line>
                <line number="202" hits="336"></line>
                <line number="203" hits="336"></line>
                <line number="206" hits="336"></line>
                <line number="207" hits="15"></line>
                <line number="208" hits="15"></line>
                <line number="209" hits="15"></line>
                <line number="210" hits="15"></line>
                <line number="211" hits="6"></line>
                <line number="212" hits="6"></line>
                <line number="214" hits="9"></line>
                <line number="215" hits="9"></line>
                <line number="216" hits="9"></line>
                <line number="217" hits="9"></line>
                <line number="220" hits="336"></line>
                <line number="221" hits="20"></line>
                <line number="222" hits="2"></line>
                <line number="223" hits="2"></line>
                <line number="224" hits="2"></line>
                <line number="225" hits="2"></line>
                <line number="227" hits="18"></line>
                <line number="231" hits="15"></line>
                <line number="232" hits="15"></line>
                <line number="233" hits="15"></line>
                <line number="234" hits="15"></line>
                <line number="235" hits="5"></line>
                <line number="236" hits="5"></line>
                <line number="237" hits="5"></line>
                <line number="238" hits="5"></line>
                <line number="239" hits="5"></line>
                <line number="242" hits="13"></line>
                <line number="243" hits="13"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="68" hits="336"></line>
            <line number="69" hits="336"></line>
            <line number="70" hits="336"></line>
            <line number="71" hits="336"></line>
            <line number="76" hits="336"></line>
            <line number="77" hits="319"></line>
            <line number="78" hits="319"></line>
            <line number="80" hits="17"></line>
            <line number="81" hits="17"></line>
            <line number="82" hits="17"></line>
            <line number="83" hits="17"></line>
            <line number="89" hits="336"></line>
            <line number="90" hits="314"></line>
            <line number="91" hits="314"></line>
            <line number="93" hits="22"></line>
            <line number="94" hits="22"></line>
            <line number="95" hits="22"></line>
            <line number="100" hits="336"></line>
            <line number="101" hits="336"></line>
            <line number="102" hits="6"></line>
            <line number="103" hits="6"></line>
            <line number="104" hits="6"></line>
            <line number="105" hits="336"></line>
            <line number="106" hits="336"></line>
            <line number="107" hits="336"></line>
            <line number="108" hits="336"></line>
            <line number="109" hits="336"></line>
            <line number="110" hits="336"></line>
            <line number="111" hits="336"></line>
            <line number="112" hits="336"></line>
            <line number="113" hits="336"></line>
            <line number="114" hits="336"></line>
            <line number="115" hits="336"></line>
            <line number="116" hits="336"></line>
            <line number="117" hits="336"></line>
            <line number="118" hits="336"></line>
            <line number="119" hits="336"></line>
            <line number="120" hits="336"></line>
            <line number="121" hits="336"></line>
            <line number="122" hits="336"></line>
            <line number="123" hits="336"></line>
            <line number="124" hits="336"></line>
            <line number="125" hits="336"></line>
            <line number="126" hits="336"></line>
            <line number="127" hits="336"></line>
            <line number="128" hits="12"></line>
            <line number="129" hits="12"></line>
            <line number="131" hits="336"></line>
            <line number="132" hits="336"></line>
            <line number="133" hits="336"></line>
            <line number="134" hits="336"></line>
            <line number="135" hits="336"></line>
            <line number="136" hits="336"></line>
            <line number="137" hits="336"></line>
            <line number="138" hits="336"></line>
            <line number="139" hits="336"></line>
            <line number="140" hits="336"></line>
            <line number="141" hits="336"></line>
            <line number="142" hits="336"></line>
            <line number="143" hits="336"></line>
            <line number="144" hits="336"></line>
            <line number="145" hits="336"></line>
            <line number="146" hits="336"></line>
            <line number="147" hits="336"></line>
            <line number="148" hits="336"></line>
            <line number="149" hits="336"></line>
            <line number="150" hits="336"></line>
            <line number="151" hits="336"></line>
            <line number="152" hits="336"></line>
            <line number="153" hits="336"></line>
            <line number="154" hits="336"></line>
            <line number="155" hits="336"></line>
            <line number="156" hits="336"></line>
            <line number="157" hits="336"></line>
            <line number="158" hits="336"></line>
            <line number="159" hits="336"></line>
            <line number="166" hits="336"></line>
            <line number="167" hits="336"></line>
            <line number="168" hits="336"></line>
            <line number="169" hits="336"></line>
            <line number="170" hits="336"></line>
            <line number="171" hits="336"></line>
            <line number="172" hits="336"></line>
            <line number="173" hits="336"></line>
            <line number="174" hits="336"></line>
            <line number="175" hits="336"></line>
            <line number="176" hits="336"></line>
            <line number="177" hits="336"></line>
            <line number="194" hits="336"></line>
            <line number="195" hits="334"></line>
            <line number="196" hits="334"></line>
            <line number="198" hits="336"></line>
            <line number="199" hits="336"></line>
            <line number="200" hits="336"></line>
            <line number="201" hits="336"></line>
            <line number="202" hits="336"></line>
            <line number="203" hits="336"></line>
            <line number="206" hits="336"></line>
            <line number="207" hits="15"></line>
            <line number="208" hits="15"></line>
            <line number="209" hits="15"></line>
            <line number="210" hits="15"></line>
            <line number="211" hits="6"></line>
            <line number="212" hits="6"></line>
            <line number="214" hits="9"></line>
            <line number="215" hits="9"></line>
            <line number="216" hits="9"></line>
            <line number="217" hits="9"></line>
            <line number="220" hits="336"></line>
            <line number="221" hits="20"></line>
            <line number="222" hits="2"></line>
            <line number="223" hits="2"></line>
            <line number="224" hits="2"></line>
            <line number="225" hits="2"></line>
            <line number="227" hits="18"></line>
            <line number="231" hits="15"></line>
            <line number="232" hits="15"></line>
            <line number="233" hits="15"></line>
            <line number="234" hits="15"></line>
            <line number="235" hits="5"></line>
            <line number="236" hits="5"></line>
            <line number="237" hits="5"></line>
            <line number="238" hits="5"></line>
            <line number="239" hits="5"></line>
            <line number="242" hits="13"></line>
            <line number="243" hits="13"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/session.go" line-rate="0.95652175" branch-rate="0" complexity="0">
          <methods>
            <method name="withAuthInfo" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="23" hits="692"></line>
                <line number="24" hits="692"></line>
              </lines>
            </method>
            <method name="authInfoFromContext" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="31" hits="95"></line>
                <line number="32" hits="95"></line>
              </lines>
            </method>
            <method name="authInfoFrom" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="37" hits="130"></line>
                <line number="38" hits="130"></line>
                <line number="39" hits="130"></line>
                <line number="40" hits="130"></line>
              </lines>
            </method>
            <method name="requireSession" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="50" hits="336"></line>
                <line number="51" hits="814"></line>
                <line number="52" hits="91"></line>
                <line number="53" hits="91"></line>
                <line number="54" hits="91"></line>
                <line number="55" hits="91"></line>
                <line number="57" hits="723"></line>
                <line number="58" hits="664"></line>
                <line number="59" hits="662"></line>
                <line number="60" hits="662"></line>
                <line number="61" hits="662"></line>
                <line number="62" hits="662"></line>
                <line number="65" hits="61"></line>
                <line number="66" hits="33"></line>
                <line number="67" hits="30"></line>
                <line number="68" hits="30"></line>
                <line number="69" hits="30"></line>
                <line number="70" hits="30"></line>
                <line number="73" hits="31"></line>
              </lines>
            </method>
            <method name="bearerToken" signature="" line-rate="0.8181818" branch-rate="0" complexity="0">
              <lines>
                <line number="78" hits="61"></line>
                <line number="79" hits="61"></line>
                <line number="80" hits="61"></line>
                <line number="81" hits="61"></line>
                <line number="82" hits="28"></line>
                <line number="83" hits="28"></line>
                <line number="85" hits="33"></line>
                <line number="86" hits="33"></line>
                <line number="87" hits="0"></line>
                <line number="88" hits="0"></line>
                <line number="90" hits="33"></line>
              </lines>
            </method>
            <method name="isPublicPath" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="94" hits="814"></line>
                <line number="96" hits="31"></line>
                <line number="98" hits="12"></line>
                <line number="100" hits="11"></line>
                <line number="102" hits="11"></line>
                <line number="104" hits="14"></line>
                <line number="106" hits="35"></line>
                <line number="108" hits="700"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="23" hits="692"></line>
            <line number="24" hits="692"></line>
            <line number="31" hits="95"></line>
            <line number="32" hits="95"></line>
            <line number="37" hits="130"></line>
            <line number="38" hits="130"></line>
            <line number="39" hits="130"></line>
            <line number="40" hits="130"></line>
            <line number="50" hits="336"></line>
            <line number="51" hits="814"></line>
            <line number="52" hits="91"></line>
            <line number="53" hits="91"></line>
            <line number="54" hits="91"></line>
            <line number="55" hits="91"></line>
            <line number="57" hits="723"></line>
            <line number="58" hits="664"></line>
            <line number="59" hits="662"></line>
            <line number="60" hits="662"></line>
            <line number="61" hits="662"></line>
            <line number="62" hits="662"></line>
            <line number="65" hits="61"></line>
            <line number="66" hits="33"></line>
            <line number="67" hits="30"></line>
            <line number="68" hits="30"></line>
            <line number="69" hits="30"></line>
            <line number="70" hits="30"></line>
            <line number="73" hits="31"></line>
            <line number="78" hits="61"></line>
            <line number="79" hits="61"></line>
            <line number="80" hits="61"></line>
            <line number="81" hits="61"></line>
            <line number="82" hits="28"></line>
            <line number="83" hits="28"></line>
            <line number="85" hits="33"></line>
            <line number="86" hits="33"></line>
            <line number="87" hits="0"></line>
            <line number="88" hits="0"></line>
            <line number="90" hits="33"></line>
            <line number="94" hits="814"></line>
            <line number="96" hits="31"></line>
            <line number="98" hits="12"></line>
            <line number="100" hits="11"></line>
            <line number="102" hits="11"></line>
            <line number="104" hits="14"></line>
            <line number="106" hits="35"></line>
            <line number="108" hits="700"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/settings.go" line-rate="0.9285714" branch-rate="0" complexity="0">
          <methods>
            <method name="toSettingsDTO" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="28" hits="23"></line>
                <line number="29" hits="23"></line>
              </lines>
            </method>
            <method name="toSettingsValuesDTO" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="32" hits="46"></line>
                <line number="33" hits="46"></line>
                <line number="34" hits="46"></line>
                <line number="35" hits="46"></line>
                <line number="36" hits="46"></line>
                <line number="37" hits="46"></line>
                <line number="38" hits="46"></line>
                <line number="39" hits="46"></line>
              </lines>
            </method>
            <method name="classifySettingsError" signature="" line-rate="0.75" branch-rate="0" complexity="0">
              <lines>
                <line number="106" hits="2"></line>
                <line number="107" hits="2"></line>
                <line number="108" hits="2"></line>
                <line number="110" hits="0"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="28" hits="23"></line>
            <line number="29" hits="23"></line>
            <line number="32" hits="46"></line>
            <line number="33" hits="46"></line>
            <line number="34" hits="46"></line>
            <line number="35" hits="46"></line>
            <line number="36" hits="46"></line>
            <line number="37" hits="46"></line>
            <line number="38" hits="46"></line>
            <line number="39" hits="46"></line>
            <line number="106" hits="2"></line>
            <line number="107" hits="2"></line>
            <line number="108" hits="2"></line>
            <line number="110" hits="0"></line>
          </lines>
        </class>
        <class name="settingsHandler" filename="internal/httpserver/settings.go" line-rate="0.6571429" branch-rate="0" complexity="0">
          <methods>
            <method name="get" signature="" line-rate="0.3846154" branch-rate="0" complexity="0">
              <lines>
                <line number="49" hits="4"></line>
                <line number="50" hits="4"></line>
                <line number="51" hits="0"></line>
                <line number="52" hits="0"></line>
                <line number="53" hits="0"></line>
                <line number="54" hits="0"></line>
                <line number="56" hits="4"></line>
                <line number="57" hits="4"></line>
                <line number="58" hits="0"></line>
                <line number="59" hits="0"></line>
                <line number="60" hits="0"></line>
                <line number="61" hits="0"></line>
                <line number="63" hits="4"></line>
              </lines>
            </method>
            <method name="patch" signature="" line-rate="0.8181818" branch-rate="0" complexity="0">
              <lines>
                <line number="72" hits="12"></line>
                <line number="73" hits="12"></line>
                <line number="74" hits="0"></line>
                <line number="75" hits="0"></line>
                <line number="76" hits="0"></line>
                <line number="77" hits="0"></line>
                <line number="79" hits="12"></line>
                <line number="80" hits="12"></line>
                <line number="81" hits="1"></line>
                <line number="82" hits="1"></line>
                <line number="84" hits="11"></line>
                <line number="85" hits="11"></line>
                <line number="86" hits="2"></line>
                <line number="87" hits="2"></line>
                <line number="88" hits="2"></line>
                <line number="89" hits="2"></line>
                <line number="90" hits="2"></line>
                <line number="91" hits="2"></line>
                <line number="93" hits="2"></line>
                <line number="94" hits="2"></line>
                <line number="95" hits="2"></line>
                <line number="98" hits="9"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="49" hits="4"></line>
            <line number="50" hits="4"></line>
            <line number="51" hits="0"></line>
            <line number="52" hits="0"></line>
            <line number="53" hits="0"></line>
            <line number="54" hits="0"></line>
            <line number="56" hits="4"></line>
            <line number="57" hits="4"></line>
            <line number="58" hits="0"></line>
            <line number="59" hits="0"></line>
            <line number="60" hits="0"></line>
            <line number="61" hits="0"></line>
            <line number="63" hits="4"></line>
            <line number="72" hits="12"></line>
            <line number="73" hits="12"></line>
            <line number="74" hits="0"></line>
            <line number="75" hits="0"></line>
            <line number="76" hits="0"></line>
            <line number="77" hits="0"></line>
            <line number="79" hits="12"></line>
            <line number="80" hits="12"></line>
            <line number="81" hits="1"></line>
            <line number="82" hits="1"></line>
            <line number="84" hits="11"></line>
            <line number="85" hits="11"></line>
            <line number="86" hits="2"></line>
            <line number="87" hits="2"></line>
            <line number="88" hits="2"></line>
            <line number="89" hits="2"></line>
            <line number="90" hits="2"></line>
            <line number="91" hits="2"></line>
            <line number="93" hits="2"></line>
            <line number="94" hits="2"></line>
            <line number="95" hits="2"></line>
            <line number="98" hits="9"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/static.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="staticHandler" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="51" hits="336"></line>
                <line number="52" hits="336"></line>
                <line number="53" hits="336"></line>
                <line number="54" hits="336"></line>
                <line number="57" hits="39"></line>
                <line number="58" hits="3"></line>
                <line number="59" hits="3"></line>
                <line number="60" hits="3"></line>
                <line number="61" hits="3"></line>
                <line number="63" hits="36"></line>
                <line number="64" hits="36"></line>
                <line number="67" hits="27"></line>
                <line number="68" hits="1"></line>
                <line number="69" hits="1"></line>
                <line number="70" hits="1"></line>
                <line number="71" hits="1"></line>
                <line number="72" hits="1"></line>
                <line number="74" hits="26"></line>
                <line number="75" hits="4"></line>
                <line number="76" hits="4"></line>
                <line number="77" hits="4"></line>
                <line number="78" hits="4"></line>
                <line number="80" hits="22"></line>
                <line number="83" hits="31"></line>
                <line number="84" hits="31"></line>
                <line number="85" hits="31"></line>
                <line number="86" hits="31"></line>
                <line number="87" hits="1"></line>
                <line number="88" hits="1"></line>
                <line number="89" hits="1"></line>
                <line number="90" hits="1"></line>
                <line number="91" hits="1"></line>
                <line number="93" hits="30"></line>
                <line number="94" hits="30"></line>
              </lines>
            </method>
            <method name="serveError" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="117" hits="5"></line>
                <line number="118" hits="5"></line>
                <line number="119" hits="5"></line>
                <line number="120" hits="7"></line>
                <line number="121" hits="7"></line>
                <line number="122" hits="7"></line>
                <line number="123" hits="7"></line>
                <line number="124" hits="3"></line>
                <line number="127" hits="4"></line>
                <line number="128" hits="4"></line>
                <line number="129" hits="4"></line>
                <line number="130" hits="4"></line>
                <line number="131" hits="4"></line>
                <line number="132" hits="4"></line>
                <line number="133" hits="4"></line>
                <line number="134" hits="4"></line>
                <line number="136" hits="4"></line>
                <line number="139" hits="1"></line>
                <line number="140" hits="1"></line>
              </lines>
            </method>
            <method name="assetLoader" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="146" hits="336"></line>
                <line number="147" hits="336"></line>
                <line number="148" hits="336"></line>
                <line number="149" hits="38"></line>
                <line number="150" hits="1"></line>
                <line number="151" hits="1"></line>
                <line number="152" hits="1"></line>
                <line number="153" hits="1"></line>
                <line number="155" hits="37"></line>
                <line number="156" hits="37"></line>
                <line number="157" hits="4"></line>
                <line number="158" hits="4"></line>
                <line number="160" hits="33"></line>
                <line number="161" hits="33"></line>
                <line number="162" hits="33"></line>
                <line number="163" hits="33"></line>
                <line number="164" hits="33"></line>
              </lines>
            </method>
            <method name="negotiate" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="171" hits="38"></line>
                <line number="172" hits="72"></line>
                <line number="173" hits="65"></line>
                <line number="175" hits="7"></line>
                <line number="176" hits="5"></line>
                <line number="177" hits="5"></line>
                <line number="180" hits="33"></line>
              </lines>
            </method>
            <method name="setAssetHeaders" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="184" hits="34"></line>
                <line number="185" hits="34"></line>
                <line number="186" hits="34"></line>
                <line number="187" hits="34"></line>
                <line number="188" hits="6"></line>
                <line number="189" hits="6"></line>
                <line number="190" hits="34"></line>
                <line number="191" hits="34"></line>
                <line number="192" hits="34"></line>
                <line number="193" hits="34"></line>
                <line number="194" hits="5"></line>
                <line number="195" hits="5"></line>
              </lines>
            </method>
            <method name="acceptsEncoding" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="202" hits="72"></line>
                <line number="203" hits="74"></line>
                <line number="204" hits="74"></line>
                <line number="205" hits="67"></line>
                <line number="208" hits="7"></line>
                <line number="211" hits="65"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="51" hits="336"></line>
            <line number="52" hits="336"></line>
            <line number="53" hits="336"></line>
            <line number="54" hits="336"></line>
            <line number="57" hits="39"></line>
            <line number="58" hits="3"></line>
            <line number="59" hits="3"></line>
            <line number="60" hits="3"></line>
            <line number="61" hits="3"></line>
            <line number="63" hits="36"></line>
            <line number="64" hits="36"></line>
            <line number="67" hits="27"></line>
            <line number="68" hits="1"></line>
            <line number="69" hits="1"></line>
            <line number="70" hits="1"></line>
            <line number="71" hits="1"></line>
            <line number="72" hits="1"></line>
            <line number="74" hits="26"></line>
            <line number="75" hits="4"></line>
            <line number="76" hits="4"></line>
            <line number="77" hits="4"></line>
            <line number="78" hits="4"></line>
            <line number="80" hits="22"></line>
            <line number="83" hits="31"></line>
            <line number="84" hits="31"></line>
            <line number="85" hits="31"></line>
            <line number="86" hits="31"></line>
            <line number="87" hits="1"></line>
            <line number="88" hits="1"></line>
            <line number="89" hits="1"></line>
            <line number="90" hits="1"></line>
            <line number="91" hits="1"></line>
            <line number="93" hits="30"></line>
            <line number="94" hits="30"></line>
            <line number="117" hits="5"></line>
            <line number="118" hits="5"></line>
            <line number="119" hits="5"></line>
            <line number="120" hits="7"></line>
            <line number="121" hits="7"></line>
            <line number="122" hits="7"></line>
            <line number="123" hits="7"></line>
            <line number="124" hits="3"></line>
            <line number="127" hits="4"></line>
            <line number="128" hits="4"></line>
            <line number="129" hits="4"></line>
            <line number="130" hits="4"></line>
            <line number="131" hits="4"></line>
            <line number="132" hits="4"></line>
            <line number="133" hits="4"></line>
            <line number="134" hits="4"></line>
            <line number="136" hits="4"></line>
            <line number="139" hits="1"></line>
            <line number="140" hits="1"></line>
            <line number="146" hits="336"></line>
            <line number="147" hits="336"></line>
            <line number="148" hits="336"></line>
            <line number="149" hits="38"></line>
            <line number="150" hits="1"></line>
            <line number="151" hits="1"></line>
            <line number="152" hits="1"></line>
            <line number="153" hits="1"></line>
            <line number="155" hits="37"></line>
            <line number="156" hits="37"></line>
            <line number="157" hits="4"></line>
            <line number="158" hits="4"></line>
            <line number="160" hits="33"></line>
            <line number="161" hits="33"></line>
            <line number="162" hits="33"></line>
            <line number="163" hits="33"></line>
            <line number="164" hits="33"></line>
            <line number="171" hits="38"></line>
            <line number="172" hits="72"></line>
            <line number="173" hits="65"></line>
            <line number="175" hits="7"></line>
            <line number="176" hits="5"></line>
            <line number="177" hits="5"></line>
            <line number="180" hits="33"></line>
            <line number="184" hits="34"></line>
            <line number="185" hits="34"></line>
            <line number="186" hits="34"></line>
            <line number="187" hits="34"></line>
            <line number="188" hits="6"></line>
            <line number="189" hits="6"></line>
            <line number="190" hits="34"></line>
            <line number="191" hits="34"></line>
            <line number="192" hits="34"></line>
            <line number="193" hits="34"></line>
            <line number="194" hits="5"></line>
            <line number="195" hits="5"></line>
            <line number="202" hits="72"></line>
            <line number="203" hits="74"></line>
            <line number="204" hits="74"></line>
            <line number="205" hits="67"></line>
            <line number="208" hits="7"></line>
            <line number="211" hits="65"></line>
          </lines>
        </class>
        <class name="-" filename="internal/httpserver/version.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="versionHandler" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="10" hits="336"></line>
                <line number="11" hits="5"></line>
                <line number="12" hits="5"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="10" hits="336"></line>
            <line number="11" hits="5"></line>
            <line number="12" hits="5"></line>
          </lines>
        </class>
        <class name="webhooksHandler" filename="internal/httpserver/webhooks.go" line-rate="0.82758623" branch-rate="0" complexity="0">
          <methods>
            <method name="github" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="19" hits="9"></line>
                <line number="20" hits="9"></line>
                <line number="21" hits="5"></line>
                <line number="22" hits="5"></line>
              </lines>
            </method>
            <method name="forgejo" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="26" hits="4"></line>
                <line number="27" hits="4"></line>
                <line number="28" hits="4"></line>
                <line number="29" hits="4"></line>
              </lines>
            </method>
            <method name="receive" signature="" line-rate="0.8" branch-rate="0" complexity="0">
              <lines>
                <line number="40" hits="13"></line>
                <line number="41" hits="13"></line>
                <line number="42" hits="13"></line>
                <line number="43" hits="13"></line>
                <line number="44" hits="13"></line>
                <line number="45" hits="13"></line>
                <line number="46" hits="13"></line>
                <line number="47" hits="0"></line>
                <line number="48" hits="0"></line>
                <line number="49" hits="0"></line>
                <line number="50" hits="0"></line>
                <line number="51" hits="0"></line>
                <line number="52" hits="0"></line>
                <line number="54" hits="0"></line>
                <line number="55" hits="0"></line>
                <line number="56" hits="0"></line>
                <line number="57" hits="0"></line>
                <line number="60" hits="13"></line>
                <line number="61" hits="13"></line>
                <line number="62" hits="13"></line>
                <line number="63" hits="13"></line>
                <line number="64" hits="13"></line>
                <line number="66" hits="13"></line>
                <line number="67" hits="1"></line>
                <line number="68" hits="1"></line>
                <line number="69" hits="1"></line>
                <line number="70" hits="1"></line>
                <line number="71" hits="1"></line>
                <line number="73" hits="12"></line>
                <line number="74" hits="12"></line>
                <line number="75" hits="2"></line>
                <line number="76" hits="2"></line>
                <line number="77" hits="2"></line>
                <line number="78" hits="2"></line>
                <line number="79" hits="2"></line>
                <line number="81" hits="10"></line>
                <line number="82" hits="1"></line>
                <line number="83" hits="1"></line>
                <line number="84" hits="1"></line>
                <line number="85" hits="1"></line>
                <line number="86" hits="1"></line>
                <line number="88" hits="9"></line>
                <line number="89" hits="1"></line>
                <line number="90" hits="1"></line>
                <line number="91" hits="1"></line>
                <line number="92" hits="1"></line>
                <line number="93" hits="1"></line>
                <line number="95" hits="8"></line>
                <line number="96" hits="8"></line>
                <line number="97" hits="8"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="19" hits="9"></line>
            <line number="20" hits="9"></line>
            <line number="21" hits="5"></line>
            <line number="22" hits="5"></line>
            <line number="26" hits="4"></line>
            <line number="27" hits="4"></line>
            <line number="28" hits="4"></line>
            <line number="29" hits="4"></line>
            <line number="40" hits="13"></line>
            <line number="41" hits="13"></line>
            <line number="42" hits="13"></line>
            <line number="43" hits="13"></line>
            <line number="44" hits="13"></line>
            <line number="45" hits="13"></line>
            <line number="46" hits="13"></line>
            <line number="47" hits="0"></line>
            <line number="48" hits="0"></line>
            <line number="49" hits="0"></line>
            <line number="50" hits="0"></line>
            <line number="51" hits="0"></line>
            <line number="52" hits="0"></line>
            <line number="54" hits="0"></line>
            <line number="55" hits="0"></line>
            <line number="56" hits="0"></line>
            <line number="57" hits="0"></line>
            <line number="60" hits="13"></line>
            <line number="61" hits="13"></line>
            <line number="62" hits="13"></line>
            <line number="63" hits="13"></line>
            <line number="64" hits="13"></line>
            <line number="66" hits="13"></line>
            <line number="67" hits="1"></line>
            <line number="68" hits="1"></line>
            <line number="69" hits="1"></line>
            <line number="70" hits="1"></line>
            <line number="71" hits="1"></line>
            <line number="73" hits="12"></line>
            <line number="74" hits="12"></line>
            <line number="75" hits="2"></line>
            <line number="76" hits="2"></line>
            <line number="77" hits="2"></line>
            <line number="78" hits="2"></line>
            <line number="79" hits="2"></line>
            <line number="81" hits="10"></line>
            <line number="82" hits="1"></line>
            <line number="83" hits="1"></line>
            <line number="84" hits="1"></line>
            <line number="85" hits="1"></line>
            <line number="86" hits="1"></line>
            <line number="88" hits="9"></line>
            <line number="89" hits="1"></line>
            <line number="90" hits="1"></line>
            <line number="91" hits="1"></line>
            <line number="92" hits="1"></line>
            <line number="93" hits="1"></line>
            <line number="95" hits="8"></line>
            <line number="96" hits="8"></line>
            <line number="97" hits="8"></line>
          </lines>
        </class>
      </classes>
    </package>
    <package name="github.com/alrayyes/pipeline-analytics/internal/ingestion/forgejo" line-rate="0.8789238" branch-rate="0" complexity="0">
      <classes>
        <class name="-" filename="internal/ingestion/forgejo/client.go" line-rate="0.81707317" branch-rate="0" complexity="0">
          <methods>
            <method name="NewClient" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="41" hits="33"></line>
                <line number="42" hits="33"></line>
              </lines>
            </method>
            <method name="fetchWorkflowJobs" signature="" line-rate="0.64285713" branch-rate="0" complexity="0">
              <lines>
                <line number="264" hits="12"></line>
                <line number="265" hits="12"></line>
                <line number="266" hits="12"></line>
                <line number="267" hits="12"></line>
                <line number="268" hits="0"></line>
                <line number="269" hits="0"></line>
                <line number="271" hits="12"></line>
                <line number="272" hits="12"></line>
                <line number="273" hits="12"></line>
                <line number="274" hits="12"></line>
                <line number="275" hits="0"></line>
                <line number="276" hits="0"></line>
                <line number="277" hits="12"></line>
                <line number="279" hits="12"></line>
                <line number="280" hits="1"></line>
                <line number="281" hits="1"></line>
                <line number="283" hits="11"></line>
                <line number="284" hits="11"></line>
                <line number="285" hits="0"></line>
                <line number="286" hits="0"></line>
                <line number="288" hits="11"></line>
                <line number="289" hits="0"></line>
                <line number="290" hits="0"></line>
                <line number="292" hits="11"></line>
                <line number="293" hits="11"></line>
                <line number="294" hits="0"></line>
                <line number="295" hits="0"></line>
                <line number="297" hits="11"></line>
              </lines>
            </method>
            <method name="parseWorkflowJobs" signature="" line-rate="0.7777778" branch-rate="0" complexity="0">
              <lines>
                <line number="305" hits="11"></line>
                <line number="306" hits="11"></line>
                <line number="307" hits="5"></line>
                <line number="308" hits="5"></line>
                <line number="310" hits="6"></line>
                <line number="311" hits="6"></line>
                <line number="312" hits="0"></line>
                <line number="313" hits="0"></line>
                <line number="315" hits="6"></line>
              </lines>
            </method>
            <method name="convertWorkflowJob" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="319" hits="8"></line>
                <line number="320" hits="8"></line>
                <line number="321" hits="8"></line>
                <line number="322" hits="2"></line>
                <line number="325" hits="6"></line>
                <line number="326" hits="6"></line>
                <line number="327" hits="6"></line>
                <line number="328" hits="6"></line>
                <line number="329" hits="6"></line>
                <line number="330" hits="6"></line>
                <line number="331" hits="6"></line>
                <line number="332" hits="6"></line>
                <line number="335" hits="8"></line>
                <line number="336" hits="8"></line>
                <line number="337" hits="8"></line>
                <line number="338" hits="8"></line>
                <line number="339" hits="8"></line>
                <line number="340" hits="8"></line>
                <line number="341" hits="8"></line>
                <line number="342" hits="8"></line>
                <line number="343" hits="8"></line>
                <line number="344" hits="8"></line>
                <line number="345" hits="8"></line>
              </lines>
            </method>
            <method name="workflowNameFromPath" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="352" hits="12"></line>
                <line number="353" hits="12"></line>
                <line number="354" hits="12"></line>
                <line number="355" hits="12"></line>
              </lines>
            </method>
            <method name="nonZeroTime" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="358" hits="60"></line>
                <line number="359" hits="18"></line>
                <line number="360" hits="18"></line>
                <line number="362" hits="42"></line>
              </lines>
            </method>
            <method name="splitIdentifier" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="366" hits="28"></line>
                <line number="367" hits="28"></line>
                <line number="368" hits="3"></line>
                <line number="369" hits="3"></line>
                <line number="371" hits="25"></line>
              </lines>
            </method>
            <method name="actorName" signature="" line-rate="0.5714286" branch-rate="0" complexity="0">
              <lines>
                <line number="377" hits="12"></line>
                <line number="378" hits="0"></line>
                <line number="379" hits="0"></line>
                <line number="381" hits="12"></line>
                <line number="382" hits="12"></line>
                <line number="383" hits="12"></line>
                <line number="385" hits="0"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="41" hits="33"></line>
            <line number="42" hits="33"></line>
            <line number="264" hits="12"></line>
            <line number="265" hits="12"></line>
            <line number="266" hits="12"></line>
            <line number="267" hits="12"></line>
            <line number="268" hits="0"></line>
            <line number="269" hits="0"></line>
            <line number="271" hits="12"></line>
            <line number="272" hits="12"></line>
            <line number="273" hits="12"></line>
            <line number="274" hits="12"></line>
            <line number="275" hits="0"></line>
            <line number="276" hits="0"></line>
            <line number="277" hits="12"></line>
            <line number="279" hits="12"></line>
            <line number="280" hits="1"></line>
            <line number="281" hits="1"></line>
            <line number="283" hits="11"></line>
            <line number="284" hits="11"></line>
            <line number="285" hits="0"></line>
            <line number="286" hits="0"></line>
            <line number="288" hits="11"></line>
            <line number="289" hits="0"></line>
            <line number="290" hits="0"></line>
            <line number="292" hits="11"></line>
            <line number="293" hits="11"></line>
            <line number="294" hits="0"></line>
            <line number="295" hits="0"></line>
            <line number="297" hits="11"></line>
            <line number="305" hits="11"></line>
            <line number="306" hits="11"></line>
            <line number="307" hits="5"></line>
            <line number="308" hits="5"></line>
            <line number="310" hits="6"></line>
            <line number="311" hits="6"></line>
            <line number="312" hits="0"></line>
            <line number="313" hits="0"></line>
            <line number="315" hits="6"></line>
            <line number="319" hits="8"></line>
            <line number="320" hits="8"></line>
            <line number="321" hits="8"></line>
            <line number="322" hits="2"></line>
            <line number="325" hits="6"></line>
            <line number="326" hits="6"></line>
            <line number="327" hits="6"></line>
            <line number="328" hits="6"></line>
            <line number="329" hits="6"></line>
            <line number="330" hits="6"></line>
            <line number="331" hits="6"></line>
            <line number="332" hits="6"></line>
            <line number="335" hits="8"></line>
            <line number="336" hits="8"></line>
            <line number="337" hits="8"></line>
            <line number="338" hits="8"></line>
            <line number="339" hits="8"></line>
            <line number="340" hits="8"></line>
            <line number="341" hits="8"></line>
            <line number="342" hits="8"></line>
            <line number="343" hits="8"></line>
            <line number="344" hits="8"></line>
            <line number="345" hits="8"></line>
            <line number="352" hits="12"></line>
            <line number="353" hits="12"></line>
            <line number="354" hits="12"></line>
            <line number="355" hits="12"></line>
            <line number="358" hits="60"></line>
            <line number="359" hits="18"></line>
            <line number="360" hits="18"></line>
            <line number="362" hits="42"></line>
            <line number="366" hits="28"></line>
            <line number="367" hits="28"></line>
            <line number="368" hits="3"></line>
            <line number="369" hits="3"></line>
            <line number="371" hits="25"></line>
            <line number="377" hits="12"></line>
            <line number="378" hits="0"></line>
            <line number="379" hits="0"></line>
            <line number="381" hits="12"></line>
            <line number="382" hits="12"></line>
            <line number="383" hits="12"></line>
            <line number="385" hits="0"></line>
          </lines>
        </class>
        <class name="Client" filename="internal/ingestion/forgejo/client.go" line-rate="0.91366905" branch-rate="0" complexity="0">
          <methods>
            <method name="CreateWebhook" signature="" line-rate="0.95238096" branch-rate="0" complexity="0">
              <lines>
                <line number="46" hits="4"></line>
                <line number="47" hits="4"></line>
                <line number="48" hits="1"></line>
                <line number="49" hits="1"></line>
                <line number="51" hits="3"></line>
                <line number="52" hits="3"></line>
                <line number="53" hits="3"></line>
                <line number="54" hits="3"></line>
                <line number="55" hits="3"></line>
                <line number="56" hits="3"></line>
                <line number="57" hits="0"></line>
                <line number="58" hits="0"></line>
                <line number="60" hits="3"></line>
                <line number="61" hits="3"></line>
                <line number="62" hits="3"></line>
                <line number="63" hits="3"></line>
                <line number="64" hits="3"></line>
                <line number="65" hits="3"></line>
                <line number="66" hits="3"></line>
                <line number="67" hits="3"></line>
                <line number="68" hits="3"></line>
                <line number="69" hits="3"></line>
                <line number="70" hits="3"></line>
                <line number="71" hits="3"></line>
                <line number="72" hits="3"></line>
                <line number="73" hits="3"></line>
                <line number="74" hits="3"></line>
                <line number="75" hits="3"></line>
                <line number="76" hits="3"></line>
                <line number="77" hits="3"></line>
                <line number="78" hits="3"></line>
                <line number="79" hits="3"></line>
                <line number="80" hits="3"></line>
                <line number="81" hits="3"></line>
                <line number="82" hits="3"></line>
                <line number="83" hits="3"></line>
                <line number="84" hits="3"></line>
                <line number="85" hits="3"></line>
                <line number="86" hits="3"></line>
                <line number="87" hits="1"></line>
                <line number="88" hits="1"></line>
                <line number="90" hits="2"></line>
              </lines>
            </method>
            <method name="ListAccessibleRepos" signature="" line-rate="0.9166667" branch-rate="0" complexity="0">
              <lines>
                <line number="99" hits="4"></line>
                <line number="100" hits="4"></line>
                <line number="101" hits="4"></line>
                <line number="102" hits="4"></line>
                <line number="103" hits="4"></line>
                <line number="104" hits="4"></line>
                <line number="105" hits="0"></line>
                <line number="106" hits="0"></line>
                <line number="108" hits="4"></line>
                <line number="109" hits="4"></line>
                <line number="110" hits="4"></line>
                <line number="111" hits="4"></line>
                <line number="112" hits="5"></line>
                <line number="113" hits="5"></line>
                <line number="114" hits="1"></line>
                <line number="115" hits="1"></line>
                <line number="117" hits="4"></line>
                <line number="118" hits="8"></line>
                <line number="119" hits="3"></line>
                <line number="122" hits="5"></line>
                <line number="125" hits="4"></line>
                <line number="126" hits="3"></line>
                <line number="127" hits="3"></line>
                <line number="129" hits="1"></line>
              </lines>
            </method>
            <method name="GetRepo" signature="" line-rate="0.9047619" branch-rate="0" complexity="0">
              <lines>
                <line number="139" hits="6"></line>
                <line number="140" hits="6"></line>
                <line number="141" hits="1"></line>
                <line number="142" hits="1"></line>
                <line number="144" hits="5"></line>
                <line number="145" hits="5"></line>
                <line number="146" hits="5"></line>
                <line number="147" hits="5"></line>
                <line number="148" hits="5"></line>
                <line number="149" hits="5"></line>
                <line number="150" hits="0"></line>
                <line number="151" hits="0"></line>
                <line number="153" hits="5"></line>
                <line number="154" hits="5"></line>
                <line number="155" hits="1"></line>
                <line number="156" hits="1"></line>
                <line number="158" hits="4"></line>
                <line number="159" hits="4"></line>
                <line number="160" hits="4"></line>
                <line number="161" hits="4"></line>
                <line number="162" hits="4"></line>
              </lines>
            </method>
            <method name="ListRecentRuns" signature="" line-rate="0.9047619" branch-rate="0" complexity="0">
              <lines>
                <line number="170" hits="18"></line>
                <line number="171" hits="18"></line>
                <line number="172" hits="1"></line>
                <line number="173" hits="1"></line>
                <line number="175" hits="17"></line>
                <line number="176" hits="17"></line>
                <line number="177" hits="17"></line>
                <line number="178" hits="17"></line>
                <line number="179" hits="17"></line>
                <line number="180" hits="17"></line>
                <line number="181" hits="0"></line>
                <line number="182" hits="0"></line>
                <line number="184" hits="17"></line>
                <line number="185" hits="17"></line>
                <line number="194" hits="3"></line>
                <line number="195" hits="1"></line>
                <line number="196" hits="1"></line>
                <line number="198" hits="2"></line>
                <line number="201" hits="14"></line>
                <line number="202" hits="14"></line>
                <line number="203" hits="14"></line>
                <line number="206" hits="14"></line>
                <line number="207" hits="2"></line>
                <line number="210" hits="12"></line>
                <line number="211" hits="12"></line>
                <line number="212" hits="0"></line>
                <line number="213" hits="0"></line>
                <line number="215" hits="12"></line>
                <line number="216" hits="12"></line>
                <line number="217" hits="12"></line>
                <line number="218" hits="12"></line>
                <line number="219" hits="12"></line>
                <line number="220" hits="12"></line>
                <line number="221" hits="12"></line>
                <line number="222" hits="12"></line>
                <line number="223" hits="12"></line>
                <line number="224" hits="12"></line>
                <line number="225" hits="12"></line>
                <line number="226" hits="12"></line>
                <line number="227" hits="12"></line>
                <line number="228" hits="12"></line>
                <line number="231" hits="14"></line>
              </lines>
            </method>
            <method name="listWorkflowJobs" signature="" line-rate="0.8" branch-rate="0" complexity="0">
              <lines>
                <line number="246" hits="12"></line>
                <line number="247" hits="12"></line>
                <line number="248" hits="0"></line>
                <line number="249" hits="0"></line>
                <line number="251" hits="12"></line>
                <line number="252" hits="12"></line>
                <line number="253" hits="10"></line>
                <line number="254" hits="2"></line>
                <line number="257" hits="8"></line>
                <line number="260" hits="12"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="46" hits="4"></line>
            <line number="47" hits="4"></line>
            <line number="48" hits="1"></line>
            <line number="49" hits="1"></line>
            <line number="51" hits="3"></line>
            <line number="52" hits="3"></line>
            <line number="53" hits="3"></line>
            <line number="54" hits="3"></line>
            <line number="55" hits="3"></line>
            <line number="56" hits="3"></line>
            <line number="57" hits="0"></line>
            <line number="58" hits="0"></line>
            <line number="60" hits="3"></line>
            <line number="61" hits="3"></line>
            <line number="62" hits="3"></line>
            <line number="63" hits="3"></line>
            <line number="64" hits="3"></line>
            <line number="65" hits="3"></line>
            <line number="66" hits="3"></line>
            <line number="67" hits="3"></line>
            <line number="68" hits="3"></line>
            <line number="69" hits="3"></line>
            <line number="70" hits="3"></line>
            <line number="71" hits="3"></line>
            <line number="72" hits="3"></line>
            <line number="73" hits="3"></line>
            <line number="74" hits="3"></line>
            <line number="75" hits="3"></line>
            <line number="76" hits="3"></line>
            <line number="77" hits="3"></line>
            <line number="78" hits="3"></line>
            <line number="79" hits="3"></line>
            <line number="80" hits="3"></line>
            <line number="81" hits="3"></line>
            <line number="82" hits="3"></line>
            <line number="83" hits="3"></line>
            <line number="84" hits="3"></line>
            <line number="85" hits="3"></line>
            <line number="86" hits="3"></line>
            <line number="87" hits="1"></line>
            <line number="88" hits="1"></line>
            <line number="90" hits="2"></line>
            <line number="99" hits="4"></line>
            <line number="100" hits="4"></line>
            <line number="101" hits="4"></line>
            <line number="102" hits="4"></line>
            <line number="103" hits="4"></line>
            <line number="104" hits="4"></line>
            <line number="105" hits="0"></line>
            <line number="106" hits="0"></line>
            <line number="108" hits="4"></line>
            <line number="109" hits="4"></line>
            <line number="110" hits="4"></line>
            <line number="111" hits="4"></line>
            <line number="112" hits="5"></line>
            <line number="113" hits="5"></line>
            <line number="114" hits="1"></line>
            <line number="115" hits="1"></line>
            <line number="117" hits="4"></line>
            <line number="118" hits="8"></line>
            <line number="119" hits="3"></line>
            <line number="122" hits="5"></line>
            <line number="125" hits="4"></line>
            <line number="126" hits="3"></line>
            <line number="127" hits="3"></line>
            <line number="129" hits="1"></line>
            <line number="139" hits="6"></line>
            <line number="140" hits="6"></line>
            <line number="141" hits="1"></line>
            <line number="142" hits="1"></line>
            <line number="144" hits="5"></line>
            <line number="145" hits="5"></line>
            <line number="146" hits="5"></line>
            <line number="147" hits="5"></line>
            <line number="148" hits="5"></line>
            <line number="149" hits="5"></line>
            <line number="150" hits="0"></line>
            <line number="151" hits="0"></line>
            <line number="153" hits="5"></line>
            <line number="154" hits="5"></line>
            <line number="155" hits="1"></line>
            <line number="156" hits="1"></line>
            <line number="158" hits="4"></line>
            <line number="159" hits="4"></line>
            <line number="160" hits="4"></line>
            <line number="161" hits="4"></line>
            <line number="162" hits="4"></line>
            <line number="170" hits="18"></line>
            <line number="171" hits="18"></line>
            <line number="172" hits="1"></line>
            <line number="173" hits="1"></line>
            <line number="175" hits="17"></line>
            <line number="176" hits="17"></line>
            <line number="177" hits="17"></line>
            <line number="178" hits="17"></line>
            <line number="179" hits="17"></line>
            <line number="180" hits="17"></line>
            <line number="181" hits="0"></line>
            <line number="182" hits="0"></line>
            <line number="184" hits="17"></line>
            <line number="185" hits="17"></line>
            <line number="194" hits="3"></line>
            <line number="195" hits="1"></line>
            <line number="196" hits="1"></line>
            <line number="198" hits="2"></line>
            <line number="201" hits="14"></line>
            <line number="202" hits="14"></line>
            <line number="203" hits="14"></line>
            <line number="206" hits="14"></line>
            <line number="207" hits="2"></line>
            <line number="210" hits="12"></line>
            <line number="211" hits="12"></line>
            <line number="212" hits="0"></line>
            <line number="213" hits="0"></line>
            <line number="215" hits="12"></line>
            <line number="216" hits="12"></line>
            <line number="217" hits="12"></line>
            <line number="218" hits="12"></line>
            <line number="219" hits="12"></line>
            <line number="220" hits="12"></line>
            <line number="221" hits="12"></line>
            <line number="222" hits="12"></line>
            <line number="223" hits="12"></line>
            <line number="224" hits="12"></line>
            <line number="225" hits="12"></line>
            <line number="226" hits="12"></line>
            <line number="227" hits="12"></line>
            <line number="228" hits="12"></line>
            <line number="231" hits="14"></line>
            <line number="246" hits="12"></line>
            <line number="247" hits="12"></line>
            <line number="248" hits="0"></line>
            <line number="249" hits="0"></line>
            <line number="251" hits="12"></line>
            <line number="252" hits="12"></line>
            <line number="253" hits="10"></line>
            <line number="254" hits="2"></line>
            <line number="257" hits="8"></line>
            <line number="260" hits="12"></line>
          </lines>
        </class>
        <class name="Client" filename="internal/ingestion/forgejo/joblog.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="JobLogTail" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="17" hits="1"></line>
                <line number="18" hits="1"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="17" hits="1"></line>
            <line number="18" hits="1"></line>
          </lines>
        </class>
      </classes>
    </package>
    <package name="github.com/alrayyes/pipeline-analytics/internal/ingestion/github" line-rate="0.9476584" branch-rate="0" complexity="0">
      <classes>
        <class name="-" filename="internal/ingestion/github/client.go" line-rate="0.8857143" branch-rate="0" complexity="0">
          <methods>
            <method name="NewClient" signature="" line-rate="0.75" branch-rate="0" complexity="0">
              <lines>
                <line number="56" hits="53"></line>
                <line number="57" hits="4"></line>
                <line number="58" hits="4"></line>
                <line number="60" hits="49"></line>
                <line number="61" hits="49"></line>
                <line number="62" hits="0"></line>
                <line number="63" hits="0"></line>
                <line number="65" hits="49"></line>
              </lines>
            </method>
            <method name="newHTTPClient" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="72" hits="53"></line>
                <line number="73" hits="53"></line>
                <line number="74" hits="53"></line>
                <line number="75" hits="53"></line>
                <line number="76" hits="53"></line>
                <line number="77" hits="53"></line>
                <line number="78" hits="53"></line>
                <line number="79" hits="53"></line>
                <line number="80" hits="53"></line>
                <line number="81" hits="53"></line>
                <line number="82" hits="53"></line>
                <line number="83" hits="53"></line>
              </lines>
            </method>
            <method name="runIsUpToDate" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="289" hits="9"></line>
                <line number="290" hits="9"></line>
              </lines>
            </method>
            <method name="parseGitHubTime" signature="" line-rate="0.75" branch-rate="0" complexity="0">
              <lines>
                <line number="444" hits="51"></line>
                <line number="445" hits="18"></line>
                <line number="446" hits="18"></line>
                <line number="448" hits="33"></line>
                <line number="449" hits="33"></line>
                <line number="450" hits="0"></line>
                <line number="451" hits="0"></line>
                <line number="453" hits="33"></line>
              </lines>
            </method>
            <method name="splitIdentifier" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="457" hits="50"></line>
                <line number="458" hits="50"></line>
                <line number="459" hits="5"></line>
                <line number="460" hits="5"></line>
                <line number="462" hits="45"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="56" hits="53"></line>
            <line number="57" hits="4"></line>
            <line number="58" hits="4"></line>
            <line number="60" hits="49"></line>
            <line number="61" hits="49"></line>
            <line number="62" hits="0"></line>
            <line number="63" hits="0"></line>
            <line number="65" hits="49"></line>
            <line number="72" hits="53"></line>
            <line number="73" hits="53"></line>
            <line number="74" hits="53"></line>
            <line number="75" hits="53"></line>
            <line number="76" hits="53"></line>
            <line number="77" hits="53"></line>
            <line number="78" hits="53"></line>
            <line number="79" hits="53"></line>
            <line number="80" hits="53"></line>
            <line number="81" hits="53"></line>
            <line number="82" hits="53"></line>
            <line number="83" hits="53"></line>
            <line number="289" hits="9"></line>
            <line number="290" hits="9"></line>
            <line number="444" hits="51"></line>
            <line number="445" hits="18"></line>
            <line number="446" hits="18"></line>
            <line number="448" hits="33"></line>
            <line number="449" hits="33"></line>
            <line number="450" hits="0"></line>
            <line number="451" hits="0"></line>
            <line number="453" hits="33"></line>
            <line number="457" hits="50"></line>
            <line number="458" hits="50"></line>
            <line number="459" hits="5"></line>
            <line number="460" hits="5"></line>
            <line number="462" hits="45"></line>
          </lines>
        </class>
        <class name="Client" filename="internal/ingestion/github/client.go" line-rate="0.95132744" branch-rate="0" complexity="0">
          <methods>
            <method name="CreateWebhook" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="88" hits="3"></line>
                <line number="89" hits="3"></line>
                <line number="90" hits="1"></line>
                <line number="91" hits="1"></line>
                <line number="93" hits="2"></line>
                <line number="94" hits="2"></line>
                <line number="95" hits="2"></line>
                <line number="96" hits="2"></line>
                <line number="98" hits="2"></line>
                <line number="99" hits="2"></line>
                <line number="100" hits="2"></line>
                <line number="101" hits="2"></line>
                <line number="102" hits="2"></line>
                <line number="103" hits="2"></line>
                <line number="104" hits="2"></line>
                <line number="105" hits="2"></line>
                <line number="106" hits="2"></line>
                <line number="108" hits="2"></line>
                <line number="109" hits="1"></line>
                <line number="110" hits="1"></line>
                <line number="112" hits="1"></line>
              </lines>
            </method>
            <method name="ListAccessibleRepos" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="121" hits="4"></line>
                <line number="122" hits="4"></line>
                <line number="123" hits="4"></line>
                <line number="124" hits="4"></line>
                <line number="126" hits="4"></line>
                <line number="127" hits="4"></line>
                <line number="128" hits="4"></line>
                <line number="129" hits="4"></line>
                <line number="131" hits="4"></line>
                <line number="132" hits="4"></line>
                <line number="133" hits="4"></line>
                <line number="134" hits="5"></line>
                <line number="135" hits="5"></line>
                <line number="136" hits="1"></line>
                <line number="137" hits="1"></line>
                <line number="139" hits="4"></line>
                <line number="140" hits="8"></line>
                <line number="141" hits="3"></line>
                <line number="144" hits="5"></line>
                <line number="147" hits="4"></line>
                <line number="148" hits="3"></line>
                <line number="149" hits="3"></line>
                <line number="151" hits="1"></line>
              </lines>
            </method>
            <method name="GetRepo" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="159" hits="6"></line>
                <line number="160" hits="6"></line>
                <line number="161" hits="1"></line>
                <line number="162" hits="1"></line>
                <line number="164" hits="5"></line>
                <line number="165" hits="5"></line>
                <line number="166" hits="5"></line>
                <line number="167" hits="5"></line>
                <line number="169" hits="5"></line>
                <line number="170" hits="5"></line>
                <line number="171" hits="1"></line>
                <line number="172" hits="1"></line>
                <line number="174" hits="4"></line>
                <line number="175" hits="4"></line>
                <line number="176" hits="4"></line>
                <line number="177" hits="4"></line>
                <line number="178" hits="4"></line>
              </lines>
            </method>
            <method name="ListRecentRuns" signature="" line-rate="0.92" branch-rate="0" complexity="0">
              <lines>
                <line number="194" hits="14"></line>
                <line number="195" hits="14"></line>
                <line number="196" hits="1"></line>
                <line number="197" hits="1"></line>
                <line number="199" hits="13"></line>
                <line number="200" hits="13"></line>
                <line number="201" hits="13"></line>
                <line number="203" hits="13"></line>
                <line number="204" hits="13"></line>
                <line number="205" hits="13"></line>
                <line number="206" hits="13"></line>
                <line number="207" hits="2"></line>
                <line number="208" hits="2"></line>
                <line number="210" hits="11"></line>
                <line number="211" hits="1"></line>
                <line number="212" hits="1"></line>
                <line number="214" hits="10"></line>
                <line number="215" hits="10"></line>
                <line number="216" hits="10"></line>
                <line number="217" hits="9"></line>
                <line number="218" hits="9"></line>
                <line number="219" hits="0"></line>
                <line number="220" hits="0"></line>
                <line number="222" hits="9"></line>
                <line number="225" hits="10"></line>
              </lines>
            </method>
            <method name="snapshotRun" signature="" line-rate="0.9310345" branch-rate="0" complexity="0">
              <lines>
                <line number="250" hits="9"></line>
                <line number="251" hits="9"></line>
                <line number="252" hits="9"></line>
                <line number="253" hits="9"></line>
                <line number="254" hits="9"></line>
                <line number="255" hits="8"></line>
                <line number="256" hits="8"></line>
                <line number="257" hits="8"></line>
                <line number="258" hits="8"></line>
                <line number="259" hits="0"></line>
                <line number="260" hits="0"></line>
                <line number="263" hits="9"></line>
                <line number="264" hits="9"></line>
                <line number="265" hits="7"></line>
                <line number="266" hits="7"></line>
                <line number="268" hits="9"></line>
                <line number="269" hits="9"></line>
                <line number="270" hits="9"></line>
                <line number="271" hits="9"></line>
                <line number="272" hits="9"></line>
                <line number="273" hits="9"></line>
                <line number="274" hits="9"></line>
                <line number="275" hits="9"></line>
                <line number="276" hits="9"></line>
                <line number="277" hits="9"></line>
                <line number="278" hits="9"></line>
                <line number="279" hits="9"></line>
                <line number="280" hits="9"></line>
                <line number="281" hits="9"></line>
              </lines>
            </method>
            <method name="listWorkflowJobs" signature="" line-rate="0.9607843" branch-rate="0" complexity="0">
              <lines>
                <line number="293" hits="8"></line>
                <line number="294" hits="8"></line>
                <line number="295" hits="8"></line>
                <line number="296" hits="8"></line>
                <line number="297" hits="8"></line>
                <line number="298" hits="8"></line>
                <line number="299" hits="8"></line>
                <line number="300" hits="8"></line>
                <line number="301" hits="8"></line>
                <line number="302" hits="8"></line>
                <line number="303" hits="8"></line>
                <line number="304" hits="8"></line>
                <line number="305" hits="8"></line>
                <line number="306" hits="8"></line>
                <line number="307" hits="8"></line>
                <line number="308" hits="8"></line>
                <line number="309" hits="8"></line>
                <line number="310" hits="8"></line>
                <line number="311" hits="8"></line>
                <line number="312" hits="8"></line>
                <line number="314" hits="8"></line>
                <line number="315" hits="8"></line>
                <line number="316" hits="8"></line>
                <line number="317" hits="0"></line>
                <line number="318" hits="0"></line>
                <line number="320" hits="8"></line>
                <line number="321" hits="8"></line>
                <line number="322" hits="8"></line>
                <line number="323" hits="7"></line>
                <line number="324" hits="7"></line>
                <line number="325" hits="7"></line>
                <line number="326" hits="7"></line>
                <line number="327" hits="7"></line>
                <line number="328" hits="7"></line>
                <line number="329" hits="7"></line>
                <line number="330" hits="7"></line>
                <line number="331" hits="7"></line>
                <line number="332" hits="7"></line>
                <line number="333" hits="7"></line>
                <line number="335" hits="7"></line>
                <line number="336" hits="7"></line>
                <line number="337" hits="7"></line>
                <line number="338" hits="7"></line>
                <line number="339" hits="7"></line>
                <line number="340" hits="7"></line>
                <line number="341" hits="7"></line>
                <line number="342" hits="7"></line>
                <line number="343" hits="7"></line>
                <line number="344" hits="7"></line>
                <line number="345" hits="7"></line>
                <line number="348" hits="8"></line>
              </lines>
            </method>
            <method name="conditionalGet" signature="" line-rate="0.8518519" branch-rate="0" complexity="0">
              <lines>
                <line number="355" hits="21"></line>
                <line number="356" hits="21"></line>
                <line number="357" hits="0"></line>
                <line number="358" hits="0"></line>
                <line number="360" hits="21"></line>
                <line number="361" hits="21"></line>
                <line number="362" hits="21"></line>
                <line number="363" hits="21"></line>
                <line number="364" hits="1"></line>
                <line number="365" hits="1"></line>
                <line number="367" hits="21"></line>
                <line number="368" hits="21"></line>
                <line number="369" hits="0"></line>
                <line number="370" hits="0"></line>
                <line number="371" hits="21"></line>
                <line number="373" hits="21"></line>
                <line number="374" hits="21"></line>
                <line number="375" hits="21"></line>
                <line number="376" hits="1"></line>
                <line number="377" hits="1"></line>
                <line number="379" hits="20"></line>
                <line number="380" hits="1"></line>
                <line number="381" hits="1"></line>
                <line number="383" hits="19"></line>
                <line number="384" hits="1"></line>
                <line number="385" hits="1"></line>
                <line number="387" hits="18"></line>
              </lines>
            </method>
            <method name="RateLimitFor" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="392" hits="2"></line>
                <line number="393" hits="2"></line>
                <line number="394" hits="2"></line>
                <line number="395" hits="2"></line>
                <line number="396" hits="2"></line>
                <line number="397" hits="2"></line>
                <line number="398" hits="2"></line>
              </lines>
            </method>
            <method name="recordRateLimit" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="408" hits="44"></line>
                <line number="409" hits="44"></line>
                <line number="410" hits="44"></line>
                <line number="411" hits="44"></line>
                <line number="412" hits="44"></line>
                <line number="413" hits="44"></line>
                <line number="414" hits="42"></line>
                <line number="415" hits="42"></line>
                <line number="417" hits="2"></line>
                <line number="418" hits="2"></line>
                <line number="419" hits="2"></line>
                <line number="420" hits="2"></line>
                <line number="421" hits="2"></line>
                <line number="422" hits="2"></line>
                <line number="423" hits="2"></line>
                <line number="425" hits="2"></line>
                <line number="426" hits="2"></line>
                <line number="427" hits="2"></line>
                <line number="428" hits="2"></line>
                <line number="429" hits="1"></line>
                <line number="430" hits="1"></line>
                <line number="432" hits="2"></line>
              </lines>
            </method>
            <method name="baseURLString" signature="" line-rate="0.75" branch-rate="0" complexity="0">
              <lines>
                <line number="436" hits="32"></line>
                <line number="437" hits="32"></line>
                <line number="438" hits="32"></line>
                <line number="440" hits="0"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="88" hits="3"></line>
            <line number="89" hits="3"></line>
            <line number="90" hits="1"></line>
            <line number="91" hits="1"></line>
            <line number="93" hits="2"></line>
            <line number="94" hits="2"></line>
            <line number="95" hits="2"></line>
            <line number="96" hits="2"></line>
            <line number="98" hits="2"></line>
            <line number="99" hits="2"></line>
            <line number="100" hits="2"></line>
            <line number="101" hits="2"></line>
            <line number="102" hits="2"></line>
            <line number="103" hits="2"></line>
            <line number="104" hits="2"></line>
            <line number="105" hits="2"></line>
            <line number="106" hits="2"></line>
            <line number="108" hits="2"></line>
            <line number="109" hits="1"></line>
            <line number="110" hits="1"></line>
            <line number="112" hits="1"></line>
            <line number="121" hits="4"></line>
            <line number="122" hits="4"></line>
            <line number="123" hits="4"></line>
            <line number="124" hits="4"></line>
            <line number="126" hits="4"></line>
            <line number="127" hits="4"></line>
            <line number="128" hits="4"></line>
            <line number="129" hits="4"></line>
            <line number="131" hits="4"></line>
            <line number="132" hits="4"></line>
            <line number="133" hits="4"></line>
            <line number="134" hits="5"></line>
            <line number="135" hits="5"></line>
            <line number="136" hits="1"></line>
            <line number="137" hits="1"></line>
            <line number="139" hits="4"></line>
            <line number="140" hits="8"></line>
            <line number="141" hits="3"></line>
            <line number="144" hits="5"></line>
            <line number="147" hits="4"></line>
            <line number="148" hits="3"></line>
            <line number="149" hits="3"></line>
            <line number="151" hits="1"></line>
            <line number="159" hits="6"></line>
            <line number="160" hits="6"></line>
            <line number="161" hits="1"></line>
            <line number="162" hits="1"></line>
            <line number="164" hits="5"></line>
            <line number="165" hits="5"></line>
            <line number="166" hits="5"></line>
            <line number="167" hits="5"></line>
            <line number="169" hits="5"></line>
            <line number="170" hits="5"></line>
            <line number="171" hits="1"></line>
            <line number="172" hits="1"></line>
            <line number="174" hits="4"></line>
            <line number="175" hits="4"></line>
            <line number="176" hits="4"></line>
            <line number="177" hits="4"></line>
            <line number="178" hits="4"></line>
            <line number="194" hits="14"></line>
            <line number="195" hits="14"></line>
            <line number="196" hits="1"></line>
            <line number="197" hits="1"></line>
            <line number="199" hits="13"></line>
            <line number="200" hits="13"></line>
            <line number="201" hits="13"></line>
            <line number="203" hits="13"></line>
            <line number="204" hits="13"></line>
            <line number="205" hits="13"></line>
            <line number="206" hits="13"></line>
            <line number="207" hits="2"></line>
            <line number="208" hits="2"></line>
            <line number="210" hits="11"></line>
            <line number="211" hits="1"></line>
            <line number="212" hits="1"></line>
            <line number="214" hits="10"></line>
            <line number="215" hits="10"></line>
            <line number="216" hits="10"></line>
            <line number="217" hits="9"></line>
            <line number="218" hits="9"></line>
            <line number="219" hits="0"></line>
            <line number="220" hits="0"></line>
            <line number="222" hits="9"></line>
            <line number="225" hits="10"></line>
            <line number="250" hits="9"></line>
            <line number="251" hits="9"></line>
            <line number="252" hits="9"></line>
            <line number="253" hits="9"></line>
            <line number="254" hits="9"></line>
            <line number="255" hits="8"></line>
            <line number="256" hits="8"></line>
            <line number="257" hits="8"></line>
            <line number="258" hits="8"></line>
            <line number="259" hits="0"></line>
            <line number="260" hits="0"></line>
            <line number="263" hits="9"></line>
            <line number="264" hits="9"></line>
            <line number="265" hits="7"></line>
            <line number="266" hits="7"></line>
            <line number="268" hits="9"></line>
            <line number="269" hits="9"></line>
            <line number="270" hits="9"></line>
            <line number="271" hits="9"></line>
            <line number="272" hits="9"></line>
            <line number="273" hits="9"></line>
            <line number="274" hits="9"></line>
            <line number="275" hits="9"></line>
            <line number="276" hits="9"></line>
            <line number="277" hits="9"></line>
            <line number="278" hits="9"></line>
            <line number="279" hits="9"></line>
            <line number="280" hits="9"></line>
            <line number="281" hits="9"></line>
            <line number="293" hits="8"></line>
            <line number="294" hits="8"></line>
            <line number="295" hits="8"></line>
            <line number="296" hits="8"></line>
            <line number="297" hits="8"></line>
            <line number="298" hits="8"></line>
            <line number="299" hits="8"></line>
            <line number="300" hits="8"></line>
            <line number="301" hits="8"></line>
            <line number="302" hits="8"></line>
            <line number="303" hits="8"></line>
            <line number="304" hits="8"></line>
            <line number="305" hits="8"></line>
            <line number="306" hits="8"></line>
            <line number="307" hits="8"></line>
            <line number="308" hits="8"></line>
            <line number="309" hits="8"></line>
            <line number="310" hits="8"></line>
            <line number="311" hits="8"></line>
            <line number="312" hits="8"></line>
            <line number="314" hits="8"></line>
            <line number="315" hits="8"></line>
            <line number="316" hits="8"></line>
            <line number="317" hits="0"></line>
            <line number="318" hits="0"></line>
            <line number="320" hits="8"></line>
            <line number="321" hits="8"></line>
            <line number="322" hits="8"></line>
            <line number="323" hits="7"></line>
            <line number="324" hits="7"></line>
            <line number="325" hits="7"></line>
            <line number="326" hits="7"></line>
            <line number="327" hits="7"></line>
            <line number="328" hits="7"></line>
            <line number="329" hits="7"></line>
            <line number="330" hits="7"></line>
            <line number="331" hits="7"></line>
            <line number="332" hits="7"></line>
            <line number="333" hits="7"></line>
            <line number="335" hits="7"></line>
            <line number="336" hits="7"></line>
            <line number="337" hits="7"></line>
            <line number="338" hits="7"></line>
            <line number="339" hits="7"></line>
            <line number="340" hits="7"></line>
            <line number="341" hits="7"></line>
            <line number="342" hits="7"></line>
            <line number="343" hits="7"></line>
            <line number="344" hits="7"></line>
            <line number="345" hits="7"></line>
            <line number="348" hits="8"></line>
            <line number="355" hits="21"></line>
            <line number="356" hits="21"></line>
            <line number="357" hits="0"></line>
            <line number="358" hits="0"></line>
            <line number="360" hits="21"></line>
            <line number="361" hits="21"></line>
            <line number="362" hits="21"></line>
            <line number="363" hits="21"></line>
            <line number="364" hits="1"></line>
            <line number="365" hits="1"></line>
            <line number="367" hits="21"></line>
            <line number="368" hits="21"></line>
            <line number="369" hits="0"></line>
            <line number="370" hits="0"></line>
            <line number="371" hits="21"></line>
            <line number="373" hits="21"></line>
            <line number="374" hits="21"></line>
            <line number="375" hits="21"></line>
            <line number="376" hits="1"></line>
            <line number="377" hits="1"></line>
            <line number="379" hits="20"></line>
            <line number="380" hits="1"></line>
            <line number="381" hits="1"></line>
            <line number="383" hits="19"></line>
            <line number="384" hits="1"></line>
            <line number="385" hits="1"></line>
            <line number="387" hits="18"></line>
            <line number="392" hits="2"></line>
            <line number="393" hits="2"></line>
            <line number="394" hits="2"></line>
            <line number="395" hits="2"></line>
            <line number="396" hits="2"></line>
            <line number="397" hits="2"></line>
            <line number="398" hits="2"></line>
            <line number="408" hits="44"></line>
            <line number="409" hits="44"></line>
            <line number="410" hits="44"></line>
            <line number="411" hits="44"></line>
            <line number="412" hits="44"></line>
            <line number="413" hits="44"></line>
            <line number="414" hits="42"></line>
            <line number="415" hits="42"></line>
            <line number="417" hits="2"></line>
            <line number="418" hits="2"></line>
            <line number="419" hits="2"></line>
            <line number="420" hits="2"></line>
            <line number="421" hits="2"></line>
            <line number="422" hits="2"></line>
            <line number="423" hits="2"></line>
            <line number="425" hits="2"></line>
            <line number="426" hits="2"></line>
            <line number="427" hits="2"></line>
            <line number="428" hits="2"></line>
            <line number="429" hits="1"></line>
            <line number="430" hits="1"></line>
            <line number="432" hits="2"></line>
            <line number="436" hits="32"></line>
            <line number="437" hits="32"></line>
            <line number="438" hits="32"></line>
            <line number="440" hits="0"></line>
          </lines>
        </class>
        <class name="Client" filename="internal/ingestion/github/joblog.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="JobLogTail" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="32" hits="15"></line>
                <line number="33" hits="15"></line>
                <line number="34" hits="1"></line>
                <line number="35" hits="1"></line>
                <line number="37" hits="14"></line>
                <line number="38" hits="14"></line>
                <line number="39" hits="14"></line>
                <line number="40" hits="14"></line>
                <line number="42" hits="14"></line>
                <line number="43" hits="14"></line>
                <line number="44" hits="14"></line>
                <line number="45" hits="14"></line>
                <line number="46" hits="1"></line>
                <line number="47" hits="1"></line>
                <line number="49" hits="13"></line>
                <line number="50" hits="13"></line>
                <line number="51" hits="13"></line>
                <line number="52" hits="13"></line>
                <line number="53" hits="13"></line>
                <line number="54" hits="1"></line>
                <line number="55" hits="1"></line>
                <line number="56" hits="12"></line>
                <line number="58" hits="12"></line>
                <line number="59" hits="12"></line>
                <line number="60" hits="12"></line>
                <line number="62" hits="7"></line>
                <line number="64" hits="2"></line>
                <line number="66" hits="2"></line>
                <line number="68" hits="1"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="32" hits="15"></line>
            <line number="33" hits="15"></line>
            <line number="34" hits="1"></line>
            <line number="35" hits="1"></line>
            <line number="37" hits="14"></line>
            <line number="38" hits="14"></line>
            <line number="39" hits="14"></line>
            <line number="40" hits="14"></line>
            <line number="42" hits="14"></line>
            <line number="43" hits="14"></line>
            <line number="44" hits="14"></line>
            <line number="45" hits="14"></line>
            <line number="46" hits="1"></line>
            <line number="47" hits="1"></line>
            <line number="49" hits="13"></line>
            <line number="50" hits="13"></line>
            <line number="51" hits="13"></line>
            <line number="52" hits="13"></line>
            <line number="53" hits="13"></line>
            <line number="54" hits="1"></line>
            <line number="55" hits="1"></line>
            <line number="56" hits="12"></line>
            <line number="58" hits="12"></line>
            <line number="59" hits="12"></line>
            <line number="60" hits="12"></line>
            <line number="62" hits="7"></line>
            <line number="64" hits="2"></line>
            <line number="66" hits="2"></line>
            <line number="68" hits="1"></line>
          </lines>
        </class>
        <class name="-" filename="internal/ingestion/github/joblog.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="tailLines" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="74" hits="7"></line>
                <line number="75" hits="1"></line>
                <line number="76" hits="1"></line>
                <line number="78" hits="7"></line>
                <line number="79" hits="7"></line>
                <line number="80" hits="7"></line>
                <line number="81" hits="7"></line>
                <line number="82" hits="7"></line>
                <line number="83" hits="20"></line>
                <line number="84" hits="20"></line>
                <line number="85" hits="7"></line>
                <line number="86" hits="6"></line>
                <line number="89" hits="1"></line>
                <line number="92" hits="13"></line>
                <line number="93" hits="13"></line>
                <line number="94" hits="13"></line>
                <line number="95" hits="3"></line>
                <line number="96" hits="3"></line>
                <line number="97" hits="3"></line>
                <line number="99" hits="13"></line>
                <line number="102" hits="6"></line>
              </lines>
            </method>
            <method name="readLine" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="108" hits="20"></line>
                <line number="109" hits="20"></line>
                <line number="110" hits="20"></line>
                <line number="111" hits="20"></line>
                <line number="112" hits="20"></line>
                <line number="113" hits="7"></line>
                <line number="114" hits="7"></line>
                <line number="116" hits="13"></line>
                <line number="117" hits="13"></line>
                <line number="118" hits="13"></line>
                <line number="120" hits="13"></line>
                <line number="121" hits="13"></line>
                <line number="122" hits="13"></line>
              </lines>
            </method>
            <method name="finishLine" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="127" hits="13"></line>
                <line number="128" hits="13"></line>
                <line number="129" hits="13"></line>
                <line number="130" hits="1"></line>
                <line number="131" hits="1"></line>
                <line number="133" hits="13"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="74" hits="7"></line>
            <line number="75" hits="1"></line>
            <line number="76" hits="1"></line>
            <line number="78" hits="7"></line>
            <line number="79" hits="7"></line>
            <line number="80" hits="7"></line>
            <line number="81" hits="7"></line>
            <line number="82" hits="7"></line>
            <line number="83" hits="20"></line>
            <line number="84" hits="20"></line>
            <line number="85" hits="7"></line>
            <line number="86" hits="6"></line>
            <line number="89" hits="1"></line>
            <line number="92" hits="13"></line>
            <line number="93" hits="13"></line>
            <line number="94" hits="13"></line>
            <line number="95" hits="3"></line>
            <line number="96" hits="3"></line>
            <line number="97" hits="3"></line>
            <line number="99" hits="13"></line>
            <line number="102" hits="6"></line>
            <line number="108" hits="20"></line>
            <line number="109" hits="20"></line>
            <line number="110" hits="20"></line>
            <line number="111" hits="20"></line>
            <line number="112" hits="20"></line>
            <line number="113" hits="7"></line>
            <line number="114" hits="7"></line>
            <line number="116" hits="13"></line>
            <line number="117" hits="13"></line>
            <line number="118" hits="13"></line>
            <line number="120" hits="13"></line>
            <line number="121" hits="13"></line>
            <line number="122" hits="13"></line>
            <line number="127" hits="13"></line>
            <line number="128" hits="13"></line>
            <line number="129" hits="13"></line>
            <line number="130" hits="1"></line>
            <line number="131" hits="1"></line>
            <line number="133" hits="13"></line>
          </lines>
        </class>
        <class name="Client" filename="internal/ingestion/github/run_actions.go" line-rate="0.8787879" branch-rate="0" complexity="0">
          <methods>
            <method name="RerunRun" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="17" hits="8"></line>
                <line number="18" hits="8"></line>
                <line number="19" hits="1"></line>
                <line number="20" hits="1"></line>
                <line number="22" hits="8"></line>
              </lines>
            </method>
            <method name="CancelRun" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="27" hits="4"></line>
                <line number="28" hits="4"></line>
              </lines>
            </method>
            <method name="postRunAction" signature="" line-rate="0.84615386" branch-rate="0" complexity="0">
              <lines>
                <line number="31" hits="12"></line>
                <line number="32" hits="12"></line>
                <line number="33" hits="1"></line>
                <line number="34" hits="1"></line>
                <line number="36" hits="11"></line>
                <line number="37" hits="11"></line>
                <line number="38" hits="11"></line>
                <line number="39" hits="11"></line>
                <line number="40" hits="0"></line>
                <line number="41" hits="0"></line>
                <line number="43" hits="11"></line>
                <line number="44" hits="11"></line>
                <line number="45" hits="11"></line>
                <line number="46" hits="11"></line>
                <line number="47" hits="11"></line>
                <line number="48" hits="0"></line>
                <line number="49" hits="0"></line>
                <line number="50" hits="11"></line>
                <line number="52" hits="11"></line>
                <line number="53" hits="11"></line>
                <line number="54" hits="11"></line>
                <line number="56" hits="5"></line>
                <line number="58" hits="3"></line>
                <line number="61" hits="1"></line>
                <line number="63" hits="1"></line>
                <line number="65" hits="1"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="17" hits="8"></line>
            <line number="18" hits="8"></line>
            <line number="19" hits="1"></line>
            <line number="20" hits="1"></line>
            <line number="22" hits="8"></line>
            <line number="27" hits="4"></line>
            <line number="28" hits="4"></line>
            <line number="31" hits="12"></line>
            <line number="32" hits="12"></line>
            <line number="33" hits="1"></line>
            <line number="34" hits="1"></line>
            <line number="36" hits="11"></line>
            <line number="37" hits="11"></line>
            <line number="38" hits="11"></line>
            <line number="39" hits="11"></line>
            <line number="40" hits="0"></line>
            <line number="41" hits="0"></line>
            <line number="43" hits="11"></line>
            <line number="44" hits="11"></line>
            <line number="45" hits="11"></line>
            <line number="46" hits="11"></line>
            <line number="47" hits="11"></line>
            <line number="48" hits="0"></line>
            <line number="49" hits="0"></line>
            <line number="50" hits="11"></line>
            <line number="52" hits="11"></line>
            <line number="53" hits="11"></line>
            <line number="54" hits="11"></line>
            <line number="56" hits="5"></line>
            <line number="58" hits="3"></line>
            <line number="61" hits="1"></line>
            <line number="63" hits="1"></line>
            <line number="65" hits="1"></line>
          </lines>
        </class>
      </classes>
    </package>
    <package name="github.com/alrayyes/pipeline-analytics/internal/ingestion" line-rate="0.8994845" branch-rate="0" complexity="0">
      <classes>
        <class name="-" filename="internal/ingestion/ingestion.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="MaskToken" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="276" hits="16"></line>
                <line number="277" hits="16"></line>
                <line number="278" hits="9"></line>
                <line number="279" hits="9"></line>
                <line number="281" hits="7"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="276" hits="16"></line>
            <line number="277" hits="16"></line>
            <line number="278" hits="9"></line>
            <line number="279" hits="9"></line>
            <line number="281" hits="7"></line>
          </lines>
        </class>
        <class name="-" filename="internal/ingestion/joblog_service.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="NewJobLogService" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="69" hits="13"></line>
                <line number="70" hits="13"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="69" hits="13"></line>
            <line number="70" hits="13"></line>
          </lines>
        </class>
        <class name="JobLogService" filename="internal/ingestion/joblog_service.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="Tail" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="77" hits="14"></line>
                <line number="78" hits="1"></line>
                <line number="79" hits="1"></line>
                <line number="81" hits="14"></line>
                <line number="82" hits="14"></line>
                <line number="83" hits="14"></line>
                <line number="84" hits="14"></line>
                <line number="85" hits="1"></line>
                <line number="86" hits="1"></line>
                <line number="88" hits="13"></line>
                <line number="89" hits="5"></line>
                <line number="90" hits="5"></line>
                <line number="92" hits="13"></line>
                <line number="93" hits="13"></line>
                <line number="94" hits="1"></line>
                <line number="95" hits="1"></line>
                <line number="97" hits="12"></line>
                <line number="98" hits="2"></line>
                <line number="99" hits="2"></line>
                <line number="101" hits="10"></line>
                <line number="102" hits="10"></line>
                <line number="103" hits="1"></line>
                <line number="104" hits="1"></line>
                <line number="106" hits="9"></line>
                <line number="107" hits="9"></line>
                <line number="108" hits="1"></line>
                <line number="109" hits="1"></line>
                <line number="111" hits="8"></line>
                <line number="112" hits="8"></line>
                <line number="113" hits="8"></line>
                <line number="114" hits="8"></line>
                <line number="115" hits="8"></line>
                <line number="116" hits="8"></line>
                <line number="117" hits="8"></line>
                <line number="118" hits="8"></line>
                <line number="119" hits="8"></line>
                <line number="121" hits="3"></line>
                <line number="123" hits="1"></line>
                <line number="125" hits="1"></line>
                <line number="127" hits="1"></line>
                <line number="129" hits="1"></line>
                <line number="131" hits="1"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="77" hits="14"></line>
            <line number="78" hits="1"></line>
            <line number="79" hits="1"></line>
            <line number="81" hits="14"></line>
            <line number="82" hits="14"></line>
            <line number="83" hits="14"></line>
            <line number="84" hits="14"></line>
            <line number="85" hits="1"></line>
            <line number="86" hits="1"></line>
            <line number="88" hits="13"></line>
            <line number="89" hits="5"></line>
            <line number="90" hits="5"></line>
            <line number="92" hits="13"></line>
            <line number="93" hits="13"></line>
            <line number="94" hits="1"></line>
            <line number="95" hits="1"></line>
            <line number="97" hits="12"></line>
            <line number="98" hits="2"></line>
            <line number="99" hits="2"></line>
            <line number="101" hits="10"></line>
            <line number="102" hits="10"></line>
            <line number="103" hits="1"></line>
            <line number="104" hits="1"></line>
            <line number="106" hits="9"></line>
            <line number="107" hits="9"></line>
            <line number="108" hits="1"></line>
            <line number="109" hits="1"></line>
            <line number="111" hits="8"></line>
            <line number="112" hits="8"></line>
            <line number="113" hits="8"></line>
            <line number="114" hits="8"></line>
            <line number="115" hits="8"></line>
            <line number="116" hits="8"></line>
            <line number="117" hits="8"></line>
            <line number="118" hits="8"></line>
            <line number="119" hits="8"></line>
            <line number="121" hits="3"></line>
            <line number="123" hits="1"></line>
            <line number="125" hits="1"></line>
            <line number="127" hits="1"></line>
            <line number="129" hits="1"></line>
            <line number="131" hits="1"></line>
          </lines>
        </class>
        <class name="-" filename="internal/ingestion/reconcile.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="NewReconciler" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="22" hits="7"></line>
                <line number="23" hits="7"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="22" hits="7"></line>
            <line number="23" hits="7"></line>
          </lines>
        </class>
        <class name="Reconciler" filename="internal/ingestion/reconcile.go" line-rate="0.8245614" branch-rate="0" complexity="0">
          <methods>
            <method name="Run" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="28" hits="1"></line>
                <line number="29" hits="1"></line>
                <line number="30" hits="1"></line>
                <line number="31" hits="1"></line>
                <line number="32" hits="1"></line>
                <line number="33" hits="1"></line>
                <line number="34" hits="3"></line>
                <line number="36" hits="1"></line>
                <line number="38" hits="2"></line>
              </lines>
            </method>
            <method name="ReconcileAll" signature="" line-rate="0.6666667" branch-rate="0" complexity="0">
              <lines>
                <line number="46" hits="4"></line>
                <line number="47" hits="4"></line>
                <line number="48" hits="0"></line>
                <line number="49" hits="0"></line>
                <line number="50" hits="0"></line>
                <line number="51" hits="0"></line>
                <line number="53" hits="4"></line>
                <line number="54" hits="4"></line>
                <line number="55" hits="4"></line>
                <line number="56" hits="5"></line>
                <line number="57" hits="1"></line>
                <line number="58" hits="1"></line>
              </lines>
            </method>
            <method name="ReconcileRepo" signature="" line-rate="0.8" branch-rate="0" complexity="0">
              <lines>
                <line number="67" hits="10"></line>
                <line number="68" hits="10"></line>
                <line number="69" hits="1"></line>
                <line number="70" hits="1"></line>
                <line number="72" hits="9"></line>
                <line number="73" hits="9"></line>
                <line number="74" hits="0"></line>
                <line number="75" hits="0"></line>
                <line number="77" hits="9"></line>
                <line number="78" hits="9"></line>
                <line number="79" hits="0"></line>
                <line number="80" hits="0"></line>
                <line number="82" hits="9"></line>
                <line number="83" hits="9"></line>
                <line number="84" hits="9"></line>
                <line number="85" hits="9"></line>
                <line number="86" hits="9"></line>
                <line number="87" hits="9"></line>
                <line number="88" hits="9"></line>
                <line number="89" hits="9"></line>
                <line number="90" hits="1"></line>
                <line number="91" hits="1"></line>
                <line number="93" hits="8"></line>
                <line number="94" hits="6"></line>
                <line number="95" hits="6"></line>
                <line number="96" hits="6"></line>
                <line number="97" hits="6"></line>
                <line number="99" hits="2"></line>
                <line number="100" hits="2"></line>
                <line number="101" hits="2"></line>
                <line number="102" hits="2"></line>
                <line number="103" hits="0"></line>
                <line number="104" hits="0"></line>
                <line number="107" hits="2"></line>
                <line number="108" hits="1"></line>
                <line number="109" hits="1"></line>
                <line number="111" hits="1"></line>
                <line number="112" hits="0"></line>
                <line number="113" hits="0"></line>
                <line number="115" hits="1"></line>
              </lines>
            </method>
            <method name="storeRunSnapshot" signature="" line-rate="0.8333333" branch-rate="0" complexity="0">
              <lines>
                <line number="119" hits="2"></line>
                <line number="120" hits="2"></line>
                <line number="121" hits="2"></line>
                <line number="122" hits="2"></line>
                <line number="123" hits="2"></line>
                <line number="124" hits="2"></line>
                <line number="125" hits="2"></line>
                <line number="126" hits="2"></line>
                <line number="127" hits="2"></line>
                <line number="128" hits="2"></line>
                <line number="129" hits="2"></line>
                <line number="130" hits="2"></line>
                <line number="131" hits="2"></line>
                <line number="132" hits="2"></line>
                <line number="133" hits="2"></line>
                <line number="134" hits="0"></line>
                <line number="135" hits="0"></line>
                <line number="137" hits="2"></line>
                <line number="138" hits="2"></line>
                <line number="139" hits="2"></line>
                <line number="140" hits="1"></line>
                <line number="141" hits="0"></line>
                <line number="142" hits="0"></line>
                <line number="145" hits="2"></line>
              </lines>
            </method>
            <method name="storeJobSnapshot" signature="" line-rate="0.86206895" branch-rate="0" complexity="0">
              <lines>
                <line number="149" hits="1"></line>
                <line number="150" hits="1"></line>
                <line number="151" hits="1"></line>
                <line number="152" hits="1"></line>
                <line number="153" hits="1"></line>
                <line number="154" hits="1"></line>
                <line number="155" hits="1"></line>
                <line number="156" hits="1"></line>
                <line number="157" hits="1"></line>
                <line number="158" hits="1"></line>
                <line number="159" hits="1"></line>
                <line number="160" hits="1"></line>
                <line number="161" hits="0"></line>
                <line number="162" hits="0"></line>
                <line number="164" hits="1"></line>
                <line number="165" hits="1"></line>
                <line number="166" hits="1"></line>
                <line number="167" hits="1"></line>
                <line number="168" hits="1"></line>
                <line number="169" hits="1"></line>
                <line number="170" hits="1"></line>
                <line number="171" hits="1"></line>
                <line number="172" hits="1"></line>
                <line number="173" hits="1"></line>
                <line number="174" hits="1"></line>
                <line number="176" hits="1"></line>
                <line number="177" hits="0"></line>
                <line number="178" hits="0"></line>
                <line number="180" hits="1"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="28" hits="1"></line>
            <line number="29" hits="1"></line>
            <line number="30" hits="1"></line>
            <line number="31" hits="1"></line>
            <line number="32" hits="1"></line>
            <line number="33" hits="1"></line>
            <line number="34" hits="3"></line>
            <line number="36" hits="1"></line>
            <line number="38" hits="2"></line>
            <line number="46" hits="4"></line>
            <line number="47" hits="4"></line>
            <line number="48" hits="0"></line>
            <line number="49" hits="0"></line>
            <line number="50" hits="0"></line>
            <line number="51" hits="0"></line>
            <line number="53" hits="4"></line>
            <line number="54" hits="4"></line>
            <line number="55" hits="4"></line>
            <line number="56" hits="5"></line>
            <line number="57" hits="1"></line>
            <line number="58" hits="1"></line>
            <line number="67" hits="10"></line>
            <line number="68" hits="10"></line>
            <line number="69" hits="1"></line>
            <line number="70" hits="1"></line>
            <line number="72" hits="9"></line>
            <line number="73" hits="9"></line>
            <line number="74" hits="0"></line>
            <line number="75" hits="0"></line>
            <line number="77" hits="9"></line>
            <line number="78" hits="9"></line>
            <line number="79" hits="0"></line>
            <line number="80" hits="0"></line>
            <line number="82" hits="9"></line>
            <line number="83" hits="9"></line>
            <line number="84" hits="9"></line>
            <line number="85" hits="9"></line>
            <line number="86" hits="9"></line>
            <line number="87" hits="9"></line>
            <line number="88" hits="9"></line>
            <line number="89" hits="9"></line>
            <line number="90" hits="1"></line>
            <line number="91" hits="1"></line>
            <line number="93" hits="8"></line>
            <line number="94" hits="6"></line>
            <line number="95" hits="6"></line>
            <line number="96" hits="6"></line>
            <line number="97" hits="6"></line>
            <line number="99" hits="2"></line>
            <line number="100" hits="2"></line>
            <line number="101" hits="2"></line>
            <line number="102" hits="2"></line>
            <line number="103" hits="0"></line>
            <line number="104" hits="0"></line>
            <line number="107" hits="2"></line>
            <line number="108" hits="1"></line>
            <line number="109" hits="1"></line>
            <line number="111" hits="1"></line>
            <line number="112" hits="0"></line>
            <line number="113" hits="0"></line>
            <line number="115" hits="1"></line>
            <line number="119" hits="2"></line>
            <line number="120" hits="2"></line>
            <line number="121" hits="2"></line>
            <line number="122" hits="2"></line>
            <line number="123" hits="2"></line>
            <line number="124" hits="2"></line>
            <line number="125" hits="2"></line>
            <line number="126" hits="2"></line>
            <line number="127" hits="2"></line>
            <line number="128" hits="2"></line>
            <line number="129" hits="2"></line>
            <line number="130" hits="2"></line>
            <line number="131" hits="2"></line>
            <line number="132" hits="2"></line>
            <line number="133" hits="2"></line>
            <line number="134" hits="0"></line>
            <line number="135" hits="0"></line>
            <line number="137" hits="2"></line>
            <line number="138" hits="2"></line>
            <line number="139" hits="2"></line>
            <line number="140" hits="1"></line>
            <line number="141" hits="0"></line>
            <line number="142" hits="0"></line>
            <line number="145" hits="2"></line>
            <line number="149" hits="1"></line>
            <line number="150" hits="1"></line>
            <line number="151" hits="1"></line>
            <line number="152" hits="1"></line>
            <line number="153" hits="1"></line>
            <line number="154" hits="1"></line>
            <line number="155" hits="1"></line>
            <line number="156" hits="1"></line>
            <line number="157" hits="1"></line>
            <line number="158" hits="1"></line>
            <line number="159" hits="1"></line>
            <line number="160" hits="1"></line>
            <line number="161" hits="0"></line>
            <line number="162" hits="0"></line>
            <line number="164" hits="1"></line>
            <line number="165" hits="1"></line>
            <line number="166" hits="1"></line>
            <line number="167" hits="1"></line>
            <line number="168" hits="1"></line>
            <line number="169" hits="1"></line>
            <line number="170" hits="1"></line>
            <line number="171" hits="1"></line>
            <line number="172" hits="1"></line>
            <line number="173" hits="1"></line>
            <line number="174" hits="1"></line>
            <line number="176" hits="1"></line>
            <line number="177" hits="0"></line>
            <line number="178" hits="0"></line>
            <line number="180" hits="1"></line>
          </lines>
        </class>
        <class name="-" filename="internal/ingestion/registrar.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="NewRegistrar" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="27" hits="12"></line>
                <line number="28" hits="12"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="27" hits="12"></line>
            <line number="28" hits="12"></line>
          </lines>
        </class>
        <class name="Registrar" filename="internal/ingestion/registrar.go" line-rate="0.89830506" branch-rate="0" complexity="0">
          <methods>
            <method name="Register" signature="" line-rate="0.8888889" branch-rate="0" complexity="0">
              <lines>
                <line number="43" hits="9"></line>
                <line number="44" hits="9"></line>
                <line number="45" hits="8"></line>
                <line number="46" hits="8"></line>
                <line number="47" hits="8"></line>
                <line number="48" hits="8"></line>
                <line number="49" hits="8"></line>
                <line number="50" hits="8"></line>
                <line number="51" hits="6"></line>
                <line number="53" hits="1"></line>
                <line number="55" hits="1"></line>
                <line number="57" hits="1"></line>
                <line number="65" hits="6"></line>
                <line number="66" hits="6"></line>
                <line number="67" hits="0"></line>
                <line number="68" hits="0"></line>
                <line number="70" hits="6"></line>
                <line number="71" hits="1"></line>
                <line number="72" hits="1"></line>
                <line number="74" hits="5"></line>
                <line number="75" hits="5"></line>
                <line number="76" hits="5"></line>
                <line number="77" hits="5"></line>
                <line number="78" hits="5"></line>
                <line number="79" hits="5"></line>
                <line number="80" hits="5"></line>
                <line number="81" hits="5"></line>
                <line number="82" hits="2"></line>
                <line number="83" hits="2"></line>
                <line number="85" hits="3"></line>
                <line number="86" hits="0"></line>
                <line number="87" hits="0"></line>
                <line number="89" hits="3"></line>
                <line number="90" hits="3"></line>
                <line number="91" hits="3"></line>
                <line number="92" hits="3"></line>
              </lines>
            </method>
            <method name="Discover" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="98" hits="3"></line>
                <line number="99" hits="3"></line>
                <line number="100" hits="3"></line>
                <line number="101" hits="3"></line>
                <line number="102" hits="1"></line>
                <line number="103" hits="1"></line>
                <line number="105" hits="2"></line>
                <line number="106" hits="2"></line>
                <line number="107" hits="2"></line>
                <line number="108" hits="2"></line>
                <line number="109" hits="2"></line>
                <line number="110" hits="1"></line>
                <line number="111" hits="1"></line>
                <line number="113" hits="1"></line>
                <line number="114" hits="1"></line>
                <line number="115" hits="1"></line>
              </lines>
            </method>
            <method name="degrade" signature="" line-rate="0.71428573" branch-rate="0" complexity="0">
              <lines>
                <line number="119" hits="3"></line>
                <line number="120" hits="0"></line>
                <line number="121" hits="0"></line>
                <line number="123" hits="3"></line>
                <line number="124" hits="3"></line>
                <line number="125" hits="3"></line>
                <line number="126" hits="3"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="43" hits="9"></line>
            <line number="44" hits="9"></line>
            <line number="45" hits="8"></line>
            <line number="46" hits="8"></line>
            <line number="47" hits="8"></line>
            <line number="48" hits="8"></line>
            <line number="49" hits="8"></line>
            <line number="50" hits="8"></line>
            <line number="51" hits="6"></line>
            <line number="53" hits="1"></line>
            <line number="55" hits="1"></line>
            <line number="57" hits="1"></line>
            <line number="65" hits="6"></line>
            <line number="66" hits="6"></line>
            <line number="67" hits="0"></line>
            <line number="68" hits="0"></line>
            <line number="70" hits="6"></line>
            <line number="71" hits="1"></line>
            <line number="72" hits="1"></line>
            <line number="74" hits="5"></line>
            <line number="75" hits="5"></line>
            <line number="76" hits="5"></line>
            <line number="77" hits="5"></line>
            <line number="78" hits="5"></line>
            <line number="79" hits="5"></line>
            <line number="80" hits="5"></line>
            <line number="81" hits="5"></line>
            <line number="82" hits="2"></line>
            <line number="83" hits="2"></line>
            <line number="85" hits="3"></line>
            <line number="86" hits="0"></line>
            <line number="87" hits="0"></line>
            <line number="89" hits="3"></line>
            <line number="90" hits="3"></line>
            <line number="91" hits="3"></line>
            <line number="92" hits="3"></line>
            <line number="98" hits="3"></line>
            <line number="99" hits="3"></line>
            <line number="100" hits="3"></line>
            <line number="101" hits="3"></line>
            <line number="102" hits="1"></line>
            <line number="103" hits="1"></line>
            <line number="105" hits="2"></line>
            <line number="106" hits="2"></line>
            <line number="107" hits="2"></line>
            <line number="108" hits="2"></line>
            <line number="109" hits="2"></line>
            <line number="110" hits="1"></line>
            <line number="111" hits="1"></line>
            <line number="113" hits="1"></line>
            <line number="114" hits="1"></line>
            <line number="115" hits="1"></line>
            <line number="119" hits="3"></line>
            <line number="120" hits="0"></line>
            <line number="121" hits="0"></line>
            <line number="123" hits="3"></line>
            <line number="124" hits="3"></line>
            <line number="125" hits="3"></line>
            <line number="126" hits="3"></line>
          </lines>
        </class>
        <class name="-" filename="internal/ingestion/run_actions.go" line-rate="0.9375" branch-rate="0" complexity="0">
          <methods>
            <method name="ActionsFor" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="37" hits="3"></line>
                <line number="38" hits="1"></line>
                <line number="39" hits="1"></line>
                <line number="41" hits="2"></line>
                <line number="42" hits="1"></line>
                <line number="43" hits="1"></line>
                <line number="45" hits="1"></line>
              </lines>
            </method>
            <method name="NewRunActionService" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="90" hits="12"></line>
                <line number="91" hits="12"></line>
              </lines>
            </method>
            <method name="outcome" signature="" line-rate="0.85714287" branch-rate="0" complexity="0">
              <lines>
                <line number="160" hits="11"></line>
                <line number="162" hits="3"></line>
                <line number="164" hits="2"></line>
                <line number="166" hits="1"></line>
                <line number="168" hits="1"></line>
                <line number="170" hits="0"></line>
                <line number="172" hits="4"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="37" hits="3"></line>
            <line number="38" hits="1"></line>
            <line number="39" hits="1"></line>
            <line number="41" hits="2"></line>
            <line number="42" hits="1"></line>
            <line number="43" hits="1"></line>
            <line number="45" hits="1"></line>
            <line number="90" hits="12"></line>
            <line number="91" hits="12"></line>
            <line number="160" hits="11"></line>
            <line number="162" hits="3"></line>
            <line number="164" hits="2"></line>
            <line number="166" hits="1"></line>
            <line number="168" hits="1"></line>
            <line number="170" hits="0"></line>
            <line number="172" hits="4"></line>
          </lines>
        </class>
        <class name="RunActionService" filename="internal/ingestion/run_actions.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="Rerun" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="96" hits="10"></line>
                <line number="97" hits="10"></line>
              </lines>
            </method>
            <method name="Cancel" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="101" hits="2"></line>
                <line number="102" hits="2"></line>
              </lines>
            </method>
            <method name="act" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="105" hits="12"></line>
                <line number="106" hits="12"></line>
                <line number="107" hits="1"></line>
                <line number="108" hits="1"></line>
                <line number="110" hits="11"></line>
                <line number="112" hits="11"></line>
                <line number="113" hits="11"></line>
                <line number="115" hits="11"></line>
                <line number="116" hits="2"></line>
                <line number="117" hits="2"></line>
                <line number="119" hits="9"></line>
                <line number="120" hits="9"></line>
                <line number="121" hits="1"></line>
                <line number="122" hits="1"></line>
                <line number="124" hits="8"></line>
                <line number="125" hits="2"></line>
                <line number="126" hits="2"></line>
                <line number="128" hits="6"></line>
                <line number="129" hits="6"></line>
                <line number="130" hits="1"></line>
                <line number="131" hits="1"></line>
                <line number="133" hits="5"></line>
                <line number="134" hits="5"></line>
                <line number="135" hits="1"></line>
                <line number="136" hits="1"></line>
                <line number="138" hits="4"></line>
                <line number="139" hits="4"></line>
                <line number="140" hits="4"></line>
                <line number="141" hits="4"></line>
                <line number="142" hits="4"></line>
                <line number="143" hits="4"></line>
                <line number="144" hits="4"></line>
                <line number="146" hits="4"></line>
                <line number="147" hits="1"></line>
                <line number="148" hits="1"></line>
                <line number="149" hits="3"></line>
                <line number="150" hits="3"></line>
                <line number="152" hits="4"></line>
                <line number="153" hits="1"></line>
                <line number="154" hits="1"></line>
                <line number="156" hits="3"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="96" hits="10"></line>
            <line number="97" hits="10"></line>
            <line number="101" hits="2"></line>
            <line number="102" hits="2"></line>
            <line number="105" hits="12"></line>
            <line number="106" hits="12"></line>
            <line number="107" hits="1"></line>
            <line number="108" hits="1"></line>
            <line number="110" hits="11"></line>
            <line number="112" hits="11"></line>
            <line number="113" hits="11"></line>
            <line number="115" hits="11"></line>
            <line number="116" hits="2"></line>
            <line number="117" hits="2"></line>
            <line number="119" hits="9"></line>
            <line number="120" hits="9"></line>
            <line number="121" hits="1"></line>
            <line number="122" hits="1"></line>
            <line number="124" hits="8"></line>
            <line number="125" hits="2"></line>
            <line number="126" hits="2"></line>
            <line number="128" hits="6"></line>
            <line number="129" hits="6"></line>
            <line number="130" hits="1"></line>
            <line number="131" hits="1"></line>
            <line number="133" hits="5"></line>
            <line number="134" hits="5"></line>
            <line number="135" hits="1"></line>
            <line number="136" hits="1"></line>
            <line number="138" hits="4"></line>
            <line number="139" hits="4"></line>
            <line number="140" hits="4"></line>
            <line number="141" hits="4"></line>
            <line number="142" hits="4"></line>
            <line number="143" hits="4"></line>
            <line number="144" hits="4"></line>
            <line number="146" hits="4"></line>
            <line number="147" hits="1"></line>
            <line number="148" hits="1"></line>
            <line number="149" hits="3"></line>
            <line number="150" hits="3"></line>
            <line number="152" hits="4"></line>
            <line number="153" hits="1"></line>
            <line number="154" hits="1"></line>
            <line number="156" hits="3"></line>
          </lines>
        </class>
        <class name="-" filename="internal/ingestion/webhook.go" line-rate="0.8811881" branch-rate="0" complexity="0">
          <methods>
            <method name="VerifySignature" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="22" hits="9"></line>
                <line number="23" hits="9"></line>
                <line number="24" hits="9"></line>
                <line number="25" hits="9"></line>
                <line number="26" hits="2"></line>
                <line number="27" hits="2"></line>
                <line number="29" hits="7"></line>
                <line number="30" hits="7"></line>
                <line number="31" hits="7"></line>
                <line number="32" hits="7"></line>
                <line number="33" hits="7"></line>
              </lines>
            </method>
            <method name="ProcessGitHubEvent" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="42" hits="10"></line>
                <line number="44" hits="5"></line>
                <line number="46" hits="3"></line>
                <line number="48" hits="2"></line>
              </lines>
            </method>
            <method name="ProcessForgejoEvent" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="62" hits="3"></line>
                <line number="63" hits="1"></line>
                <line number="64" hits="1"></line>
                <line number="66" hits="2"></line>
                <line number="67" hits="1"></line>
                <line number="68" hits="1"></line>
                <line number="70" hits="1"></line>
              </lines>
            </method>
            <method name="processGitHubWorkflowRun" signature="" line-rate="0.9166667" branch-rate="0" complexity="0">
              <lines>
                <line number="94" hits="5"></line>
                <line number="95" hits="5"></line>
                <line number="96" hits="1"></line>
                <line number="97" hits="1"></line>
                <line number="99" hits="4"></line>
                <line number="100" hits="4"></line>
                <line number="101" hits="4"></line>
                <line number="102" hits="4"></line>
                <line number="103" hits="4"></line>
                <line number="104" hits="4"></line>
                <line number="105" hits="4"></line>
                <line number="106" hits="4"></line>
                <line number="107" hits="4"></line>
                <line number="108" hits="4"></line>
                <line number="109" hits="4"></line>
                <line number="110" hits="4"></line>
                <line number="111" hits="4"></line>
                <line number="113" hits="4"></line>
                <line number="114" hits="4"></line>
                <line number="115" hits="4"></line>
                <line number="117" hits="4"></line>
                <line number="118" hits="0"></line>
                <line number="119" hits="0"></line>
                <line number="121" hits="4"></line>
              </lines>
            </method>
            <method name="processGitHubWorkflowJob" signature="" line-rate="0.81395346" branch-rate="0" complexity="0">
              <lines>
                <line number="150" hits="3"></line>
                <line number="151" hits="3"></line>
                <line number="152" hits="0"></line>
                <line number="153" hits="0"></line>
                <line number="158" hits="3"></line>
                <line number="159" hits="3"></line>
                <line number="160" hits="3"></line>
                <line number="161" hits="3"></line>
                <line number="162" hits="3"></line>
                <line number="163" hits="3"></line>
                <line number="164" hits="3"></line>
                <line number="165" hits="0"></line>
                <line number="166" hits="0"></line>
                <line number="168" hits="3"></line>
                <line number="169" hits="3"></line>
                <line number="170" hits="3"></line>
                <line number="171" hits="3"></line>
                <line number="172" hits="3"></line>
                <line number="173" hits="3"></line>
                <line number="174" hits="3"></line>
                <line number="175" hits="3"></line>
                <line number="176" hits="3"></line>
                <line number="177" hits="3"></line>
                <line number="178" hits="3"></line>
                <line number="180" hits="3"></line>
                <line number="181" hits="3"></line>
                <line number="182" hits="0"></line>
                <line number="183" hits="0"></line>
                <line number="185" hits="3"></line>
                <line number="186" hits="3"></line>
                <line number="187" hits="5"></line>
                <line number="188" hits="5"></line>
                <line number="189" hits="5"></line>
                <line number="190" hits="5"></line>
                <line number="191" hits="5"></line>
                <line number="192" hits="5"></line>
                <line number="193" hits="5"></line>
                <line number="194" hits="5"></line>
                <line number="195" hits="5"></line>
                <line number="197" hits="3"></line>
                <line number="198" hits="0"></line>
                <line number="199" hits="0"></line>
                <line number="201" hits="3"></line>
              </lines>
            </method>
            <method name="parseTime" signature="" line-rate="0.75" branch-rate="0" complexity="0">
              <lines>
                <line number="205" hits="27"></line>
                <line number="206" hits="7"></line>
                <line number="207" hits="7"></line>
                <line number="209" hits="20"></line>
                <line number="210" hits="20"></line>
                <line number="211" hits="0"></line>
                <line number="212" hits="0"></line>
                <line number="214" hits="20"></line>
              </lines>
            </method>
            <method name="FirstLine" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="220" hits="5"></line>
                <line number="221" hits="5"></line>
                <line number="222" hits="5"></line>
                <line number="223" hits="5"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="22" hits="9"></line>
            <line number="23" hits="9"></line>
            <line number="24" hits="9"></line>
            <line number="25" hits="9"></line>
            <line number="26" hits="2"></line>
            <line number="27" hits="2"></line>
            <line number="29" hits="7"></line>
            <line number="30" hits="7"></line>
            <line number="31" hits="7"></line>
            <line number="32" hits="7"></line>
            <line number="33" hits="7"></line>
            <line number="42" hits="10"></line>
            <line number="44" hits="5"></line>
            <line number="46" hits="3"></line>
            <line number="48" hits="2"></line>
            <line number="62" hits="3"></line>
            <line number="63" hits="1"></line>
            <line number="64" hits="1"></line>
            <line number="66" hits="2"></line>
            <line number="67" hits="1"></line>
            <line number="68" hits="1"></line>
            <line number="70" hits="1"></line>
            <line number="94" hits="5"></line>
            <line number="95" hits="5"></line>
            <line number="96" hits="1"></line>
            <line number="97" hits="1"></line>
            <line number="99" hits="4"></line>
            <line number="100" hits="4"></line>
            <line number="101" hits="4"></line>
            <line number="102" hits="4"></line>
            <line number="103" hits="4"></line>
            <line number="104" hits="4"></line>
            <line number="105" hits="4"></line>
            <line number="106" hits="4"></line>
            <line number="107" hits="4"></line>
            <line number="108" hits="4"></line>
            <line number="109" hits="4"></line>
            <line number="110" hits="4"></line>
            <line number="111" hits="4"></line>
            <line number="113" hits="4"></line>
            <line number="114" hits="4"></line>
            <line number="115" hits="4"></line>
            <line number="117" hits="4"></line>
            <line number="118" hits="0"></line>
            <line number="119" hits="0"></line>
            <line number="121" hits="4"></line>
            <line number="150" hits="3"></line>
            <line number="151" hits="3"></line>
            <line number="152" hits="0"></line>
            <line number="153" hits="0"></line>
            <line number="158" hits="3"></line>
            <line number="159" hits="3"></line>
            <line number="160" hits="3"></line>
            <line number="161" hits="3"></line>
            <line number="162" hits="3"></line>
            <line number="163" hits="3"></line>
            <line number="164" hits="3"></line>
            <line number="165" hits="0"></line>
            <line number="166" hits="0"></line>
            <line number="168" hits="3"></line>
            <line number="169" hits="3"></line>
            <line number="170" hits="3"></line>
            <line number="171" hits="3"></line>
            <line number="172" hits="3"></line>
            <line number="173" hits="3"></line>
            <line number="174" hits="3"></line>
            <line number="175" hits="3"></line>
            <line number="176" hits="3"></line>
            <line number="177" hits="3"></line>
            <line number="178" hits="3"></line>
            <line number="180" hits="3"></line>
            <line number="181" hits="3"></line>
            <line number="182" hits="0"></line>
            <line number="183" hits="0"></line>
            <line number="185" hits="3"></line>
            <line number="186" hits="3"></line>
            <line number="187" hits="5"></line>
            <line number="188" hits="5"></line>
            <line number="189" hits="5"></line>
            <line number="190" hits="5"></line>
            <line number="191" hits="5"></line>
            <line number="192" hits="5"></line>
            <line number="193" hits="5"></line>
            <line number="194" hits="5"></line>
            <line number="195" hits="5"></line>
            <line number="197" hits="3"></line>
            <line number="198" hits="0"></line>
            <line number="199" hits="0"></line>
            <line number="201" hits="3"></line>
            <line number="205" hits="27"></line>
            <line number="206" hits="7"></line>
            <line number="207" hits="7"></line>
            <line number="209" hits="20"></line>
            <line number="210" hits="20"></line>
            <line number="211" hits="0"></line>
            <line number="212" hits="0"></line>
            <line number="214" hits="20"></line>
            <line number="220" hits="5"></line>
            <line number="221" hits="5"></line>
            <line number="222" hits="5"></line>
            <line number="223" hits="5"></line>
          </lines>
        </class>
      </classes>
    </package>
    <package name="github.com/alrayyes/pipeline-analytics/internal/ingestion/sqlite" line-rate="0.7817746" branch-rate="0" complexity="0">
      <classes>
        <class name="Store" filename="internal/ingestion/sqlite/runs.go" line-rate="0.76811594" branch-rate="0" complexity="0">
          <methods>
            <method name="RepoByIdentifier" signature="" line-rate="0.84615386" branch-rate="0" complexity="0">
              <lines>
                <line number="15" hits="2"></line>
                <line number="16" hits="2"></line>
                <line number="17" hits="2"></line>
                <line number="18" hits="2"></line>
                <line number="19" hits="2"></line>
                <line number="20" hits="2"></line>
                <line number="21" hits="2"></line>
                <line number="22" hits="1"></line>
                <line number="23" hits="1"></line>
                <line number="25" hits="1"></line>
                <line number="26" hits="0"></line>
                <line number="27" hits="0"></line>
                <line number="29" hits="1"></line>
              </lines>
            </method>
            <method name="RunStates" signature="" line-rate="0.73913044" branch-rate="0" complexity="0">
              <lines>
                <line number="34" hits="3"></line>
                <line number="35" hits="3"></line>
                <line number="36" hits="0"></line>
                <line number="37" hits="0"></line>
                <line number="38" hits="3"></line>
                <line number="40" hits="3"></line>
                <line number="41" hits="3"></line>
                <line number="42" hits="3"></line>
                <line number="43" hits="4"></line>
                <line number="44" hits="4"></line>
                <line number="45" hits="4"></line>
                <line number="46" hits="4"></line>
                <line number="47" hits="4"></line>
                <line number="48" hits="4"></line>
                <line number="49" hits="4"></line>
                <line number="50" hits="0"></line>
                <line number="51" hits="0"></line>
                <line number="53" hits="4"></line>
                <line number="54" hits="4"></line>
                <line number="57" hits="3"></line>
                <line number="58" hits="0"></line>
                <line number="59" hits="0"></line>
                <line number="61" hits="3"></line>
              </lines>
            </method>
            <method name="UpsertRun" signature="" line-rate="0.8" branch-rate="0" complexity="0">
              <lines>
                <line number="66" hits="13"></line>
                <line number="67" hits="13"></line>
                <line number="68" hits="0"></line>
                <line number="69" hits="0"></line>
                <line number="71" hits="13"></line>
                <line number="72" hits="2"></line>
                <line number="73" hits="2"></line>
                <line number="74" hits="2"></line>
                <line number="75" hits="2"></line>
                <line number="76" hits="2"></line>
                <line number="77" hits="2"></line>
                <line number="78" hits="2"></line>
                <line number="79" hits="2"></line>
                <line number="80" hits="2"></line>
                <line number="81" hits="2"></line>
                <line number="82" hits="0"></line>
                <line number="83" hits="0"></line>
                <line number="85" hits="2"></line>
                <line number="88" hits="11"></line>
                <line number="89" hits="11"></line>
                <line number="90" hits="11"></line>
                <line number="91" hits="11"></line>
                <line number="92" hits="11"></line>
                <line number="93" hits="11"></line>
                <line number="94" hits="11"></line>
                <line number="95" hits="11"></line>
                <line number="96" hits="11"></line>
                <line number="97" hits="0"></line>
                <line number="98" hits="0"></line>
                <line number="100" hits="11"></line>
              </lines>
            </method>
            <method name="UpsertJob" signature="" line-rate="0.76" branch-rate="0" complexity="0">
              <lines>
                <line number="105" hits="4"></line>
                <line number="106" hits="4"></line>
                <line number="107" hits="0"></line>
                <line number="108" hits="0"></line>
                <line number="110" hits="4"></line>
                <line number="111" hits="1"></line>
                <line number="112" hits="1"></line>
                <line number="113" hits="1"></line>
                <line number="114" hits="1"></line>
                <line number="115" hits="1"></line>
                <line number="116" hits="1"></line>
                <line number="117" hits="1"></line>
                <line number="118" hits="0"></line>
                <line number="119" hits="0"></line>
                <line number="121" hits="1"></line>
                <line number="124" hits="3"></line>
                <line number="125" hits="3"></line>
                <line number="126" hits="3"></line>
                <line number="127" hits="3"></line>
                <line number="128" hits="3"></line>
                <line number="129" hits="3"></line>
                <line number="130" hits="3"></line>
                <line number="131" hits="0"></line>
                <line number="132" hits="0"></line>
                <line number="134" hits="3"></line>
              </lines>
            </method>
            <method name="ReplaceSteps" signature="" line-rate="0.6" branch-rate="0" complexity="0">
              <lines>
                <line number="139" hits="2"></line>
                <line number="140" hits="2"></line>
                <line number="141" hits="0"></line>
                <line number="142" hits="0"></line>
                <line number="143" hits="2"></line>
                <line number="145" hits="2"></line>
                <line number="146" hits="0"></line>
                <line number="147" hits="0"></line>
                <line number="149" hits="2"></line>
                <line number="150" hits="4"></line>
                <line number="151" hits="4"></line>
                <line number="152" hits="4"></line>
                <line number="153" hits="4"></line>
                <line number="154" hits="4"></line>
                <line number="155" hits="0"></line>
                <line number="156" hits="0"></line>
                <line number="159" hits="2"></line>
                <line number="160" hits="0"></line>
                <line number="161" hits="0"></line>
                <line number="163" hits="2"></line>
              </lines>
            </method>
            <method name="findID" signature="" line-rate="0.8" branch-rate="0" complexity="0">
              <lines>
                <line number="169" hits="17"></line>
                <line number="170" hits="17"></line>
                <line number="171" hits="17"></line>
                <line number="172" hits="17"></line>
                <line number="173" hits="14"></line>
                <line number="174" hits="14"></line>
                <line number="176" hits="3"></line>
                <line number="177" hits="0"></line>
                <line number="178" hits="0"></line>
                <line number="180" hits="3"></line>
              </lines>
            </method>
            <method name="RunByID" signature="" line-rate="0.88235295" branch-rate="0" complexity="0">
              <lines>
                <line number="186" hits="2"></line>
                <line number="187" hits="2"></line>
                <line number="188" hits="2"></line>
                <line number="189" hits="2"></line>
                <line number="190" hits="2"></line>
                <line number="191" hits="2"></line>
                <line number="192" hits="2"></line>
                <line number="193" hits="2"></line>
                <line number="194" hits="2"></line>
                <line number="195" hits="1"></line>
                <line number="196" hits="1"></line>
                <line number="198" hits="1"></line>
                <line number="199" hits="0"></line>
                <line number="200" hits="0"></line>
                <line number="202" hits="1"></line>
                <line number="203" hits="1"></line>
                <line number="204" hits="1"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="15" hits="2"></line>
            <line number="16" hits="2"></line>
            <line number="17" hits="2"></line>
            <line number="18" hits="2"></line>
            <line number="19" hits="2"></line>
            <line number="20" hits="2"></line>
            <line number="21" hits="2"></line>
            <line number="22" hits="1"></line>
            <line number="23" hits="1"></line>
            <line number="25" hits="1"></line>
            <line number="26" hits="0"></line>
            <line number="27" hits="0"></line>
            <line number="29" hits="1"></line>
            <line number="34" hits="3"></line>
            <line number="35" hits="3"></line>
            <line number="36" hits="0"></line>
            <line number="37" hits="0"></line>
            <line number="38" hits="3"></line>
            <line number="40" hits="3"></line>
            <line number="41" hits="3"></line>
            <line number="42" hits="3"></line>
            <line number="43" hits="4"></line>
            <line number="44" hits="4"></line>
            <line number="45" hits="4"></line>
            <line number="46" hits="4"></line>
            <line number="47" hits="4"></line>
            <line number="48" hits="4"></line>
            <line number="49" hits="4"></line>
            <line number="50" hits="0"></line>
            <line number="51" hits="0"></line>
            <line number="53" hits="4"></line>
            <line number="54" hits="4"></line>
            <line number="57" hits="3"></line>
            <line number="58" hits="0"></line>
            <line number="59" hits="0"></line>
            <line number="61" hits="3"></line>
            <line number="66" hits="13"></line>
            <line number="67" hits="13"></line>
            <line number="68" hits="0"></line>
            <line number="69" hits="0"></line>
            <line number="71" hits="13"></line>
            <line number="72" hits="2"></line>
            <line number="73" hits="2"></line>
            <line number="74" hits="2"></line>
            <line number="75" hits="2"></line>
            <line number="76" hits="2"></line>
            <line number="77" hits="2"></line>
            <line number="78" hits="2"></line>
            <line number="79" hits="2"></line>
            <line number="80" hits="2"></line>
            <line number="81" hits="2"></line>
            <line number="82" hits="0"></line>
            <line number="83" hits="0"></line>
            <line number="85" hits="2"></line>
            <line number="88" hits="11"></line>
            <line number="89" hits="11"></line>
            <line number="90" hits="11"></line>
            <line number="91" hits="11"></line>
            <line number="92" hits="11"></line>
            <line number="93" hits="11"></line>
            <line number="94" hits="11"></line>
            <line number="95" hits="11"></line>
            <line number="96" hits="11"></line>
            <line number="97" hits="0"></line>
            <line number="98" hits="0"></line>
            <line number="100" hits="11"></line>
            <line number="105" hits="4"></line>
            <line number="106" hits="4"></line>
            <line number="107" hits="0"></line>
            <line number="108" hits="0"></line>
            <line number="110" hits="4"></line>
            <line number="111" hits="1"></line>
            <line number="112" hits="1"></line>
            <line number="113" hits="1"></line>
            <line number="114" hits="1"></line>
            <line number="115" hits="1"></line>
            <line number="116" hits="1"></line>
            <line number="117" hits="1"></line>
            <line number="118" hits="0"></line>
            <line number="119" hits="0"></line>
            <line number="121" hits="1"></line>
            <line number="124" hits="3"></line>
            <line number="125" hits="3"></line>
            <line number="126" hits="3"></line>
            <line number="127" hits="3"></line>
            <line number="128" hits="3"></line>
            <line number="129" hits="3"></line>
            <line number="130" hits="3"></line>
            <line number="131" hits="0"></line>
            <line number="132" hits="0"></line>
            <line number="134" hits="3"></line>
            <line number="139" hits="2"></line>
            <line number="140" hits="2"></line>
            <line number="141" hits="0"></line>
            <line number="142" hits="0"></line>
            <line number="143" hits="2"></line>
            <line number="145" hits="2"></line>
            <line number="146" hits="0"></line>
            <line number="147" hits="0"></line>
            <line number="149" hits="2"></line>
            <line number="150" hits="4"></line>
            <line number="151" hits="4"></line>
            <line number="152" hits="4"></line>
            <line number="153" hits="4"></line>
            <line number="154" hits="4"></line>
            <line number="155" hits="0"></line>
            <line number="156" hits="0"></line>
            <line number="159" hits="2"></line>
            <line number="160" hits="0"></line>
            <line number="161" hits="0"></line>
            <line number="163" hits="2"></line>
            <line number="169" hits="17"></line>
            <line number="170" hits="17"></line>
            <line number="171" hits="17"></line>
            <line number="172" hits="17"></line>
            <line number="173" hits="14"></line>
            <line number="174" hits="14"></line>
            <line number="176" hits="3"></line>
            <line number="177" hits="0"></line>
            <line number="178" hits="0"></line>
            <line number="180" hits="3"></line>
            <line number="186" hits="2"></line>
            <line number="187" hits="2"></line>
            <line number="188" hits="2"></line>
            <line number="189" hits="2"></line>
            <line number="190" hits="2"></line>
            <line number="191" hits="2"></line>
            <line number="192" hits="2"></line>
            <line number="193" hits="2"></line>
            <line number="194" hits="2"></line>
            <line number="195" hits="1"></line>
            <line number="196" hits="1"></line>
            <line number="198" hits="1"></line>
            <line number="199" hits="0"></line>
            <line number="200" hits="0"></line>
            <line number="202" hits="1"></line>
            <line number="203" hits="1"></line>
            <line number="204" hits="1"></line>
          </lines>
        </class>
        <class name="-" filename="internal/ingestion/sqlite/store.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="NewStore" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="28" hits="29"></line>
                <line number="29" hits="29"></line>
              </lines>
            </method>
            <method name="isUniqueConstraintErr" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="82" hits="2"></line>
                <line number="83" hits="2"></line>
                <line number="84" hits="2"></line>
                <line number="85" hits="2"></line>
              </lines>
            </method>
            <method name="scanRepo" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="295" hits="15"></line>
                <line number="296" hits="15"></line>
                <line number="297" hits="15"></line>
                <line number="298" hits="15"></line>
                <line number="299" hits="15"></line>
                <line number="300" hits="15"></line>
                <line number="301" hits="15"></line>
                <line number="302" hits="15"></line>
                <line number="303" hits="15"></line>
                <line number="304" hits="15"></line>
                <line number="305" hits="15"></line>
                <line number="306" hits="15"></line>
                <line number="307" hits="15"></line>
                <line number="308" hits="2"></line>
                <line number="309" hits="2"></line>
                <line number="311" hits="13"></line>
                <line number="312" hits="13"></line>
                <line number="313" hits="13"></line>
                <line number="314" hits="13"></line>
                <line number="315" hits="13"></line>
                <line number="316" hits="13"></line>
              </lines>
            </method>
            <method name="nullable" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="320" hits="130"></line>
                <line number="321" hits="130"></line>
              </lines>
            </method>
            <method name="tokenScope" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="329" hits="15"></line>
                <line number="330" hits="12"></line>
                <line number="331" hits="12"></line>
                <line number="333" hits="3"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="28" hits="29"></line>
            <line number="29" hits="29"></line>
            <line number="82" hits="2"></line>
            <line number="83" hits="2"></line>
            <line number="84" hits="2"></line>
            <line number="85" hits="2"></line>
            <line number="295" hits="15"></line>
            <line number="296" hits="15"></line>
            <line number="297" hits="15"></line>
            <line number="298" hits="15"></line>
            <line number="299" hits="15"></line>
            <line number="300" hits="15"></line>
            <line number="301" hits="15"></line>
            <line number="302" hits="15"></line>
            <line number="303" hits="15"></line>
            <line number="304" hits="15"></line>
            <line number="305" hits="15"></line>
            <line number="306" hits="15"></line>
            <line number="307" hits="15"></line>
            <line number="308" hits="2"></line>
            <line number="309" hits="2"></line>
            <line number="311" hits="13"></line>
            <line number="312" hits="13"></line>
            <line number="313" hits="13"></line>
            <line number="314" hits="13"></line>
            <line number="315" hits="13"></line>
            <line number="316" hits="13"></line>
            <line number="320" hits="130"></line>
            <line number="321" hits="130"></line>
            <line number="329" hits="15"></line>
            <line number="330" hits="12"></line>
            <line number="331" hits="12"></line>
            <line number="333" hits="3"></line>
          </lines>
        </class>
        <class name="Store" filename="internal/ingestion/sqlite/store.go" line-rate="0.7601626" branch-rate="0" complexity="0">
          <methods>
            <method name="DB" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="34" hits="4"></line>
                <line number="35" hits="4"></line>
              </lines>
            </method>
            <method name="CreateRepo" signature="" line-rate="0.83870965" branch-rate="0" complexity="0">
              <lines>
                <line number="39" hits="53"></line>
                <line number="40" hits="53"></line>
                <line number="41" hits="0"></line>
                <line number="42" hits="0"></line>
                <line number="44" hits="53"></line>
                <line number="45" hits="53"></line>
                <line number="46" hits="0"></line>
                <line number="47" hits="0"></line>
                <line number="49" hits="53"></line>
                <line number="50" hits="53"></line>
                <line number="51" hits="53"></line>
                <line number="52" hits="53"></line>
                <line number="53" hits="53"></line>
                <line number="54" hits="53"></line>
                <line number="55" hits="53"></line>
                <line number="56" hits="53"></line>
                <line number="57" hits="53"></line>
                <line number="58" hits="53"></line>
                <line number="60" hits="53"></line>
                <line number="61" hits="53"></line>
                <line number="62" hits="53"></line>
                <line number="63" hits="53"></line>
                <line number="64" hits="53"></line>
                <line number="65" hits="53"></line>
                <line number="66" hits="53"></line>
                <line number="67" hits="53"></line>
                <line number="68" hits="2"></line>
                <line number="69" hits="2"></line>
                <line number="70" hits="2"></line>
                <line number="72" hits="0"></line>
                <line number="75" hits="51"></line>
              </lines>
            </method>
            <method name="ListRepoIdentifiers" signature="" line-rate="0.7" branch-rate="0" complexity="0">
              <lines>
                <line number="89" hits="3"></line>
                <line number="90" hits="3"></line>
                <line number="91" hits="3"></line>
                <line number="92" hits="3"></line>
                <line number="93" hits="3"></line>
                <line number="94" hits="0"></line>
                <line number="95" hits="0"></line>
                <line number="96" hits="3"></line>
                <line number="98" hits="3"></line>
                <line number="99" hits="3"></line>
                <line number="100" hits="3"></line>
                <line number="101" hits="26"></line>
                <line number="102" hits="26"></line>
                <line number="103" hits="0"></line>
                <line number="104" hits="0"></line>
                <line number="106" hits="26"></line>
                <line number="109" hits="3"></line>
                <line number="110" hits="0"></line>
                <line number="111" hits="0"></line>
                <line number="113" hits="3"></line>
              </lines>
            </method>
            <method name="ListRepos" signature="" line-rate="0.8378378" branch-rate="0" complexity="0">
              <lines>
                <line number="118" hits="5"></line>
                <line number="119" hits="5"></line>
                <line number="120" hits="5"></line>
                <line number="121" hits="5"></line>
                <line number="122" hits="5"></line>
                <line number="123" hits="5"></line>
                <line number="124" hits="5"></line>
                <line number="125" hits="1"></line>
                <line number="126" hits="1"></line>
                <line number="127" hits="1"></line>
                <line number="129" hits="5"></line>
                <line number="130" hits="5"></line>
                <line number="133" hits="5"></line>
                <line number="134" hits="2"></line>
                <line number="135" hits="2"></line>
                <line number="136" hits="2"></line>
                <line number="138" hits="5"></line>
                <line number="139" hits="5"></line>
                <line number="140" hits="0"></line>
                <line number="141" hits="0"></line>
                <line number="142" hits="5"></line>
                <line number="144" hits="5"></line>
                <line number="145" hits="5"></line>
                <line number="146" hits="5"></line>
                <line number="147" hits="9"></line>
                <line number="148" hits="9"></line>
                <line number="149" hits="0"></line>
                <line number="150" hits="0"></line>
                <line number="152" hits="9"></line>
                <line number="155" hits="5"></line>
                <line number="156" hits="0"></line>
                <line number="157" hits="0"></line>
                <line number="159" hits="5"></line>
                <line number="160" hits="5"></line>
                <line number="161" hits="1"></line>
                <line number="162" hits="1"></line>
                <line number="164" hits="5"></line>
              </lines>
            </method>
            <method name="GetRepo" signature="" line-rate="0.84615386" branch-rate="0" complexity="0">
              <lines>
                <line number="169" hits="4"></line>
                <line number="170" hits="4"></line>
                <line number="171" hits="4"></line>
                <line number="172" hits="4"></line>
                <line number="173" hits="4"></line>
                <line number="174" hits="4"></line>
                <line number="175" hits="4"></line>
                <line number="176" hits="1"></line>
                <line number="177" hits="1"></line>
                <line number="179" hits="3"></line>
                <line number="180" hits="0"></line>
                <line number="181" hits="0"></line>
                <line number="183" hits="3"></line>
              </lines>
            </method>
            <method name="LocateJob" signature="" line-rate="0.8666667" branch-rate="0" complexity="0">
              <lines>
                <line number="189" hits="3"></line>
                <line number="190" hits="3"></line>
                <line number="191" hits="3"></line>
                <line number="192" hits="3"></line>
                <line number="193" hits="3"></line>
                <line number="194" hits="3"></line>
                <line number="195" hits="3"></line>
                <line number="196" hits="3"></line>
                <line number="197" hits="3"></line>
                <line number="198" hits="2"></line>
                <line number="199" hits="2"></line>
                <line number="201" hits="1"></line>
                <line number="202" hits="0"></line>
                <line number="203" hits="0"></line>
                <line number="205" hits="1"></line>
              </lines>
            </method>
            <method name="DeleteRepo" signature="" line-rate="0.6666667" branch-rate="0" complexity="0">
              <lines>
                <line number="211" hits="2"></line>
                <line number="212" hits="2"></line>
                <line number="213" hits="0"></line>
                <line number="214" hits="0"></line>
                <line number="216" hits="2"></line>
                <line number="217" hits="2"></line>
                <line number="218" hits="0"></line>
                <line number="219" hits="0"></line>
                <line number="221" hits="2"></line>
                <line number="222" hits="1"></line>
                <line number="223" hits="1"></line>
                <line number="225" hits="1"></line>
              </lines>
            </method>
            <method name="SetReconcileETag" signature="" line-rate="0.6666667" branch-rate="0" complexity="0">
              <lines>
                <line number="230" hits="2"></line>
                <line number="231" hits="2"></line>
                <line number="232" hits="0"></line>
                <line number="233" hits="0"></line>
                <line number="235" hits="2"></line>
                <line number="236" hits="2"></line>
                <line number="237" hits="0"></line>
                <line number="238" hits="0"></line>
                <line number="240" hits="2"></line>
                <line number="241" hits="1"></line>
                <line number="242" hits="1"></line>
                <line number="244" hits="1"></line>
              </lines>
            </method>
            <method name="SetIngestionStatus" signature="" line-rate="0.6" branch-rate="0" complexity="0">
              <lines>
                <line number="249" hits="1"></line>
                <line number="250" hits="1"></line>
                <line number="251" hits="1"></line>
                <line number="252" hits="1"></line>
                <line number="253" hits="1"></line>
                <line number="254" hits="0"></line>
                <line number="255" hits="0"></line>
                <line number="257" hits="1"></line>
                <line number="258" hits="1"></line>
                <line number="259" hits="0"></line>
                <line number="260" hits="0"></line>
                <line number="262" hits="1"></line>
                <line number="263" hits="0"></line>
                <line number="264" hits="0"></line>
                <line number="266" hits="1"></line>
              </lines>
            </method>
            <method name="RepoToken" signature="" line-rate="0.5714286" branch-rate="0" complexity="0">
              <lines>
                <line number="271" hits="2"></line>
                <line number="272" hits="2"></line>
                <line number="273" hits="2"></line>
                <line number="274" hits="2"></line>
                <line number="275" hits="0"></line>
                <line number="276" hits="0"></line>
                <line number="278" hits="2"></line>
                <line number="279" hits="0"></line>
                <line number="280" hits="0"></line>
                <line number="282" hits="2"></line>
                <line number="283" hits="2"></line>
                <line number="284" hits="0"></line>
                <line number="285" hits="0"></line>
                <line number="287" hits="2"></line>
              </lines>
            </method>
            <method name="SaveForgeToken" signature="" line-rate="0.8333333" branch-rate="0" complexity="0">
              <lines>
                <line number="338" hits="9"></line>
                <line number="339" hits="9"></line>
                <line number="340" hits="0"></line>
                <line number="341" hits="0"></line>
                <line number="343" hits="9"></line>
                <line number="344" hits="9"></line>
                <line number="345" hits="9"></line>
                <line number="346" hits="9"></line>
                <line number="347" hits="9"></line>
                <line number="348" hits="9"></line>
                <line number="349" hits="9"></line>
                <line number="353" hits="9"></line>
                <line number="354" hits="9"></line>
                <line number="355" hits="9"></line>
                <line number="356" hits="9"></line>
                <line number="357" hits="9"></line>
                <line number="358" hits="9"></line>
                <line number="359" hits="9"></line>
                <line number="360" hits="9"></line>
                <line number="361" hits="9"></line>
                <line number="362" hits="9"></line>
                <line number="363" hits="0"></line>
                <line number="364" hits="0"></line>
                <line number="366" hits="9"></line>
              </lines>
            </method>
            <method name="ListForgeTokens" signature="" line-rate="0.72727275" branch-rate="0" complexity="0">
              <lines>
                <line number="371" hits="2"></line>
                <line number="372" hits="2"></line>
                <line number="373" hits="0"></line>
                <line number="374" hits="0"></line>
                <line number="375" hits="2"></line>
                <line number="377" hits="2"></line>
                <line number="378" hits="2"></line>
                <line number="379" hits="2"></line>
                <line number="380" hits="3"></line>
                <line number="381" hits="3"></line>
                <line number="382" hits="3"></line>
                <line number="383" hits="3"></line>
                <line number="384" hits="3"></line>
                <line number="385" hits="3"></line>
                <line number="386" hits="0"></line>
                <line number="387" hits="0"></line>
                <line number="389" hits="3"></line>
                <line number="390" hits="3"></line>
                <line number="393" hits="2"></line>
                <line number="394" hits="0"></line>
                <line number="395" hits="0"></line>
                <line number="397" hits="2"></line>
              </lines>
            </method>
            <method name="DeleteForgeToken" signature="" line-rate="0.6666667" branch-rate="0" complexity="0">
              <lines>
                <line number="402" hits="3"></line>
                <line number="403" hits="3"></line>
                <line number="404" hits="0"></line>
                <line number="405" hits="0"></line>
                <line number="407" hits="3"></line>
                <line number="408" hits="3"></line>
                <line number="409" hits="0"></line>
                <line number="410" hits="0"></line>
                <line number="412" hits="3"></line>
                <line number="413" hits="1"></line>
                <line number="414" hits="1"></line>
                <line number="416" hits="2"></line>
              </lines>
            </method>
            <method name="ForgeToken" signature="" line-rate="0.7647059" branch-rate="0" complexity="0">
              <lines>
                <line number="421" hits="6"></line>
                <line number="422" hits="6"></line>
                <line number="423" hits="6"></line>
                <line number="424" hits="6"></line>
                <line number="425" hits="6"></line>
                <line number="426" hits="6"></line>
                <line number="427" hits="6"></line>
                <line number="428" hits="2"></line>
                <line number="429" hits="2"></line>
                <line number="431" hits="4"></line>
                <line number="432" hits="0"></line>
                <line number="433" hits="0"></line>
                <line number="435" hits="4"></line>
                <line number="436" hits="4"></line>
                <line number="437" hits="0"></line>
                <line number="438" hits="0"></line>
                <line number="440" hits="4"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="34" hits="4"></line>
            <line number="35" hits="4"></line>
            <line number="39" hits="53"></line>
            <line number="40" hits="53"></line>
            <line number="41" hits="0"></line>
            <line number="42" hits="0"></line>
            <line number="44" hits="53"></line>
            <line number="45" hits="53"></line>
            <line number="46" hits="0"></line>
            <line number="47" hits="0"></line>
            <line number="49" hits="53"></line>
            <line number="50" hits="53"></line>
            <line number="51" hits="53"></line>
            <line number="52" hits="53"></line>
            <line number="53" hits="53"></line>
            <line number="54" hits="53"></line>
            <line number="55" hits="53"></line>
            <line number="56" hits="53"></line>
            <line number="57" hits="53"></line>
            <line number="58" hits="53"></line>
            <line number="60" hits="53"></line>
            <line number="61" hits="53"></line>
            <line number="62" hits="53"></line>
            <line number="63" hits="53"></line>
            <line number="64" hits="53"></line>
            <line number="65" hits="53"></line>
            <line number="66" hits="53"></line>
            <line number="67" hits="53"></line>
            <line number="68" hits="2"></line>
            <line number="69" hits="2"></line>
            <line number="70" hits="2"></line>
            <line number="72" hits="0"></line>
            <line number="75" hits="51"></line>
            <line number="89" hits="3"></line>
            <line number="90" hits="3"></line>
            <line number="91" hits="3"></line>
            <line number="92" hits="3"></line>
            <line number="93" hits="3"></line>
            <line number="94" hits="0"></line>
            <line number="95" hits="0"></line>
            <line number="96" hits="3"></line>
            <line number="98" hits="3"></line>
            <line number="99" hits="3"></line>
            <line number="100" hits="3"></line>
            <line number="101" hits="26"></line>
            <line number="102" hits="26"></line>
            <line number="103" hits="0"></line>
            <line number="104" hits="0"></line>
            <line number="106" hits="26"></line>
            <line number="109" hits="3"></line>
            <line number="110" hits="0"></line>
            <line number="111" hits="0"></line>
            <line number="113" hits="3"></line>
            <line number="118" hits="5"></line>
            <line number="119" hits="5"></line>
            <line number="120" hits="5"></line>
            <line number="121" hits="5"></line>
            <line number="122" hits="5"></line>
            <line number="123" hits="5"></line>
            <line number="124" hits="5"></line>
            <line number="125" hits="1"></line>
            <line number="126" hits="1"></line>
            <line number="127" hits="1"></line>
            <line number="129" hits="5"></line>
            <line number="130" hits="5"></line>
            <line number="133" hits="5"></line>
            <line number="134" hits="2"></line>
            <line number="135" hits="2"></line>
            <line number="136" hits="2"></line>
            <line number="138" hits="5"></line>
            <line number="139" hits="5"></line>
            <line number="140" hits="0"></line>
            <line number="141" hits="0"></line>
            <line number="142" hits="5"></line>
            <line number="144" hits="5"></line>
            <line number="145" hits="5"></line>
            <line number="146" hits="5"></line>
            <line number="147" hits="9"></line>
            <line number="148" hits="9"></line>
            <line number="149" hits="0"></line>
            <line number="150" hits="0"></line>
            <line number="152" hits="9"></line>
            <line number="155" hits="5"></line>
            <line number="156" hits="0"></line>
            <line number="157" hits="0"></line>
            <line number="159" hits="5"></line>
            <line number="160" hits="5"></line>
            <line number="161" hits="1"></line>
            <line number="162" hits="1"></line>
            <line number="164" hits="5"></line>
            <line number="169" hits="4"></line>
            <line number="170" hits="4"></line>
            <line number="171" hits="4"></line>
            <line number="172" hits="4"></line>
            <line number="173" hits="4"></line>
            <line number="174" hits="4"></line>
            <line number="175" hits="4"></line>
            <line number="176" hits="1"></line>
            <line number="177" hits="1"></line>
            <line number="179" hits="3"></line>
            <line number="180" hits="0"></line>
            <line number="181" hits="0"></line>
            <line number="183" hits="3"></line>
            <line number="189" hits="3"></line>
            <line number="190" hits="3"></line>
            <line number="191" hits="3"></line>
            <line number="192" hits="3"></line>
            <line number="193" hits="3"></line>
            <line number="194" hits="3"></line>
            <line number="195" hits="3"></line>
            <line number="196" hits="3"></line>
            <line number="197" hits="3"></line>
            <line number="198" hits="2"></line>
            <line number="199" hits="2"></line>
            <line number="201" hits="1"></line>
            <line number="202" hits="0"></line>
            <line number="203" hits="0"></line>
            <line number="205" hits="1"></line>
            <line number="211" hits="2"></line>
            <line number="212" hits="2"></line>
            <line number="213" hits="0"></line>
            <line number="214" hits="0"></line>
            <line number="216" hits="2"></line>
            <line number="217" hits="2"></line>
            <line number="218" hits="0"></line>
            <line number="219" hits="0"></line>
            <line number="221" hits="2"></line>
            <line number="222" hits="1"></line>
            <line number="223" hits="1"></line>
            <line number="225" hits="1"></line>
            <line number="230" hits="2"></line>
            <line number="231" hits="2"></line>
            <line number="232" hits="0"></line>
            <line number="233" hits="0"></line>
            <line number="235" hits="2"></line>
            <line number="236" hits="2"></line>
            <line number="237" hits="0"></line>
            <line number="238" hits="0"></line>
            <line number="240" hits="2"></line>
            <line number="241" hits="1"></line>
            <line number="242" hits="1"></line>
            <line number="244" hits="1"></line>
            <line number="249" hits="1"></line>
            <line number="250" hits="1"></line>
            <line number="251" hits="1"></line>
            <line number="252" hits="1"></line>
            <line number="253" hits="1"></line>
            <line number="254" hits="0"></line>
            <line number="255" hits="0"></line>
            <line number="257" hits="1"></line>
            <line number="258" hits="1"></line>
            <line number="259" hits="0"></line>
            <line number="260" hits="0"></line>
            <line number="262" hits="1"></line>
            <line number="263" hits="0"></line>
            <line number="264" hits="0"></line>
            <line number="266" hits="1"></line>
            <line number="271" hits="2"></line>
            <line number="272" hits="2"></line>
            <line number="273" hits="2"></line>
            <line number="274" hits="2"></line>
            <line number="275" hits="0"></line>
            <line number="276" hits="0"></line>
            <line number="278" hits="2"></line>
            <line number="279" hits="0"></line>
            <line number="280" hits="0"></line>
            <line number="282" hits="2"></line>
            <line number="283" hits="2"></line>
            <line number="284" hits="0"></line>
            <line number="285" hits="0"></line>
            <line number="287" hits="2"></line>
            <line number="338" hits="9"></line>
            <line number="339" hits="9"></line>
            <line number="340" hits="0"></line>
            <line number="341" hits="0"></line>
            <line number="343" hits="9"></line>
            <line number="344" hits="9"></line>
            <line number="345" hits="9"></line>
            <line number="346" hits="9"></line>
            <line number="347" hits="9"></line>
            <line number="348" hits="9"></line>
            <line number="349" hits="9"></line>
            <line number="353" hits="9"></line>
            <line number="354" hits="9"></line>
            <line number="355" hits="9"></line>
            <line number="356" hits="9"></line>
            <line number="357" hits="9"></line>
            <line number="358" hits="9"></line>
            <line number="359" hits="9"></line>
            <line number="360" hits="9"></line>
            <line number="361" hits="9"></line>
            <line number="362" hits="9"></line>
            <line number="363" hits="0"></line>
            <line number="364" hits="0"></line>
            <line number="366" hits="9"></line>
            <line number="371" hits="2"></line>
            <line number="372" hits="2"></line>
            <line number="373" hits="0"></line>
            <line number="374" hits="0"></line>
            <line number="375" hits="2"></line>
            <line number="377" hits="2"></line>
            <line number="378" hits="2"></line>
            <line number="379" hits="2"></line>
            <line number="380" hits="3"></line>
            <line number="381" hits="3"></line>
            <line number="382" hits="3"></line>
            <line number="383" hits="3"></line>
            <line number="384" hits="3"></line>
            <line number="385" hits="3"></line>
            <line number="386" hits="0"></line>
            <line number="387" hits="0"></line>
            <line number="389" hits="3"></line>
            <line number="390" hits="3"></line>
            <line number="393" hits="2"></line>
            <line number="394" hits="0"></line>
            <line number="395" hits="0"></line>
            <line number="397" hits="2"></line>
            <line number="402" hits="3"></line>
            <line number="403" hits="3"></line>
            <line number="404" hits="0"></line>
            <line number="405" hits="0"></line>
            <line number="407" hits="3"></line>
            <line number="408" hits="3"></line>
            <line number="409" hits="0"></line>
            <line number="410" hits="0"></line>
            <line number="412" hits="3"></line>
            <line number="413" hits="1"></line>
            <line number="414" hits="1"></line>
            <line number="416" hits="2"></line>
            <line number="421" hits="6"></line>
            <line number="422" hits="6"></line>
            <line number="423" hits="6"></line>
            <line number="424" hits="6"></line>
            <line number="425" hits="6"></line>
            <line number="426" hits="6"></line>
            <line number="427" hits="6"></line>
            <line number="428" hits="2"></line>
            <line number="429" hits="2"></line>
            <line number="431" hits="4"></line>
            <line number="432" hits="0"></line>
            <line number="433" hits="0"></line>
            <line number="435" hits="4"></line>
            <line number="436" hits="4"></line>
            <line number="437" hits="0"></line>
            <line number="438" hits="0"></line>
            <line number="440" hits="4"></line>
          </lines>
        </class>
      </classes>
    </package>
    <package name="github.com/alrayyes/pipeline-analytics/internal/metrics" line-rate="0.8713789" branch-rate="0" complexity="0">
      <classes>
        <class name="Service" filename="internal/metrics/branches.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="ListBranches" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="12" hits="2"></line>
                <line number="13" hits="2"></line>
                <line number="14" hits="2"></line>
                <line number="15" hits="2"></line>
                <line number="16" hits="2"></line>
                <line number="17" hits="2"></line>
                <line number="18" hits="2"></line>
                <line number="19" hits="1"></line>
                <line number="20" hits="1"></line>
                <line number="22" hits="1"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="12" hits="2"></line>
            <line number="13" hits="2"></line>
            <line number="14" hits="2"></line>
            <line number="15" hits="2"></line>
            <line number="16" hits="2"></line>
            <line number="17" hits="2"></line>
            <line number="18" hits="2"></line>
            <line number="19" hits="1"></line>
            <line number="20" hits="1"></line>
            <line number="22" hits="1"></line>
          </lines>
        </class>
        <class name="-" filename="internal/metrics/category.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="CategorizeFailure" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="40" hits="69"></line>
                <line number="41" hits="7"></line>
                <line number="42" hits="7"></line>
                <line number="44" hits="62"></line>
                <line number="45" hits="542"></line>
                <line number="46" hits="542"></line>
                <line number="48" hits="62"></line>
                <line number="49" hits="159"></line>
                <line number="50" hits="833"></line>
                <line number="51" hits="1303"></line>
                <line number="52" hits="45"></line>
                <line number="53" hits="45"></line>
                <line number="58" hits="17"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="40" hits="69"></line>
            <line number="41" hits="7"></line>
            <line number="42" hits="7"></line>
            <line number="44" hits="62"></line>
            <line number="45" hits="542"></line>
            <line number="46" hits="542"></line>
            <line number="48" hits="62"></line>
            <line number="49" hits="159"></line>
            <line number="50" hits="833"></line>
            <line number="51" hits="1303"></line>
            <line number="52" hits="45"></line>
            <line number="53" hits="45"></line>
            <line number="58" hits="17"></line>
          </lines>
        </class>
        <class name="Service" filename="internal/metrics/flaky.go" line-rate="0.8717949" branch-rate="0" complexity="0">
          <methods>
            <method name="ListFlakySteps" signature="" line-rate="0.8717949" branch-rate="0" complexity="0">
              <lines>
                <line number="42" hits="11"></line>
                <line number="43" hits="11"></line>
                <line number="44" hits="0"></line>
                <line number="45" hits="0"></line>
                <line number="47" hits="11"></line>
                <line number="48" hits="11"></line>
                <line number="49" hits="11"></line>
                <line number="50" hits="11"></line>
                <line number="52" hits="11"></line>
                <line number="53" hits="11"></line>
                <line number="54" hits="11"></line>
                <line number="55" hits="94"></line>
                <line number="56" hits="0"></line>
                <line number="59" hits="94"></line>
                <line number="60" hits="94"></line>
                <line number="63" hits="11"></line>
                <line number="64" hits="11"></line>
                <line number="65" hits="0"></line>
                <line number="66" hits="0"></line>
                <line number="68" hits="11"></line>
                <line number="69" hits="11"></line>
                <line number="70" hits="11"></line>
                <line number="71" hits="20"></line>
                <line number="72" hits="18"></line>
                <line number="73" hits="1"></line>
                <line number="74" hits="1"></line>
                <line number="76" hits="18"></line>
                <line number="80" hits="11"></line>
                <line number="81" hits="12"></line>
                <line number="82" hits="12"></line>
                <line number="83" hits="12"></line>
                <line number="84" hits="12"></line>
                <line number="85" hits="12"></line>
                <line number="86" hits="12"></line>
                <line number="87" hits="12"></line>
                <line number="88" hits="12"></line>
                <line number="90" hits="11"></line>
                <line number="91" hits="11"></line>
                <line number="92" hits="11"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="42" hits="11"></line>
            <line number="43" hits="11"></line>
            <line number="44" hits="0"></line>
            <line number="45" hits="0"></line>
            <line number="47" hits="11"></line>
            <line number="48" hits="11"></line>
            <line number="49" hits="11"></line>
            <line number="50" hits="11"></line>
            <line number="52" hits="11"></line>
            <line number="53" hits="11"></line>
            <line number="54" hits="11"></line>
            <line number="55" hits="94"></line>
            <line number="56" hits="0"></line>
            <line number="59" hits="94"></line>
            <line number="60" hits="94"></line>
            <line number="63" hits="11"></line>
            <line number="64" hits="11"></line>
            <line number="65" hits="0"></line>
            <line number="66" hits="0"></line>
            <line number="68" hits="11"></line>
            <line number="69" hits="11"></line>
            <line number="70" hits="11"></line>
            <line number="71" hits="20"></line>
            <line number="72" hits="18"></line>
            <line number="73" hits="1"></line>
            <line number="74" hits="1"></line>
            <line number="76" hits="18"></line>
            <line number="80" hits="11"></line>
            <line number="81" hits="12"></line>
            <line number="82" hits="12"></line>
            <line number="83" hits="12"></line>
            <line number="84" hits="12"></line>
            <line number="85" hits="12"></line>
            <line number="86" hits="12"></line>
            <line number="87" hits="12"></line>
            <line number="88" hits="12"></line>
            <line number="90" hits="11"></line>
            <line number="91" hits="11"></line>
            <line number="92" hits="11"></line>
          </lines>
        </class>
        <class name="-" filename="internal/metrics/flaky.go" line-rate="0.90625" branch-rate="0" complexity="0">
          <methods>
            <method name="flakyStep" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="98" hits="20"></line>
                <line number="99" hits="470"></line>
                <line number="100" hits="470"></line>
                <line number="102" hits="20"></line>
                <line number="103" hits="20"></line>
                <line number="104" hits="20"></line>
                <line number="105" hits="94"></line>
                <line number="107" hits="72"></line>
                <line number="109" hits="21"></line>
                <line number="113" hits="20"></line>
                <line number="114" hits="2"></line>
                <line number="115" hits="2"></line>
                <line number="117" hits="18"></line>
                <line number="118" hits="18"></line>
                <line number="119" hits="1"></line>
                <line number="120" hits="1"></line>
                <line number="122" hits="18"></line>
                <line number="123" hits="18"></line>
                <line number="124" hits="80"></line>
                <line number="125" hits="80"></line>
                <line number="127" hits="18"></line>
                <line number="128" hits="18"></line>
                <line number="129" hits="18"></line>
                <line number="130" hits="18"></line>
                <line number="131" hits="18"></line>
                <line number="132" hits="18"></line>
                <line number="133" hits="18"></line>
              </lines>
            </method>
            <method name="startedAtCompare" signature="" line-rate="0.4" branch-rate="0" complexity="0">
              <lines>
                <line number="139" hits="470"></line>
                <line number="141" hits="0"></line>
                <line number="143" hits="0"></line>
                <line number="145" hits="0"></line>
                <line number="147" hits="470"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="98" hits="20"></line>
            <line number="99" hits="470"></line>
            <line number="100" hits="470"></line>
            <line number="102" hits="20"></line>
            <line number="103" hits="20"></line>
            <line number="104" hits="20"></line>
            <line number="105" hits="94"></line>
            <line number="107" hits="72"></line>
            <line number="109" hits="21"></line>
            <line number="113" hits="20"></line>
            <line number="114" hits="2"></line>
            <line number="115" hits="2"></line>
            <line number="117" hits="18"></line>
            <line number="118" hits="18"></line>
            <line number="119" hits="1"></line>
            <line number="120" hits="1"></line>
            <line number="122" hits="18"></line>
            <line number="123" hits="18"></line>
            <line number="124" hits="80"></line>
            <line number="125" hits="80"></line>
            <line number="127" hits="18"></line>
            <line number="128" hits="18"></line>
            <line number="129" hits="18"></line>
            <line number="130" hits="18"></line>
            <line number="131" hits="18"></line>
            <line number="132" hits="18"></line>
            <line number="133" hits="18"></line>
            <line number="139" hits="470"></line>
            <line number="141" hits="0"></line>
            <line number="143" hits="0"></line>
            <line number="145" hits="0"></line>
            <line number="147" hits="470"></line>
          </lines>
        </class>
        <class name="-" filename="internal/metrics/insights.go" line-rate="0.9786096" branch-rate="0" complexity="0">
          <methods>
            <method name="ParseInsightWindow" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="27" hits="17"></line>
                <line number="29" hits="4"></line>
                <line number="31" hits="3"></line>
                <line number="33" hits="3"></line>
                <line number="35" hits="7"></line>
              </lines>
            </method>
            <method name="isFailed" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="247" hits="1612"></line>
                <line number="248" hits="1612"></line>
              </lines>
            </method>
            <method name="passRate" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="253" hits="70"></line>
                <line number="254" hits="70"></line>
                <line number="255" hits="70"></line>
                <line number="256" hits="1036"></line>
                <line number="258" hits="822"></line>
                <line number="259" hits="822"></line>
                <line number="261" hits="210"></line>
                <line number="262" hits="210"></line>
                <line number="266" hits="70"></line>
                <line number="267" hits="56"></line>
                <line number="268" hits="56"></line>
                <line number="270" hits="14"></line>
                <line number="271" hits="14"></line>
                <line number="272" hits="14"></line>
              </lines>
            </method>
            <method name="topFailingPipelines" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="276" hits="35"></line>
                <line number="277" hits="35"></line>
                <line number="278" hits="35"></line>
                <line number="279" hits="536"></line>
                <line number="280" hits="536"></line>
                <line number="281" hits="516"></line>
                <line number="282" hits="516"></line>
                <line number="283" hits="516"></line>
                <line number="285" hits="536"></line>
                <line number="286" hits="536"></line>
                <line number="287" hits="536"></line>
                <line number="288" hits="123"></line>
                <line number="289" hits="123"></line>
                <line number="292" hits="35"></line>
                <line number="293" hits="35"></line>
                <line number="294" hits="35"></line>
                <line number="295" hits="516"></line>
                <line number="296" hits="120"></line>
                <line number="297" hits="120"></line>
                <line number="300" hits="35"></line>
                <line number="301" hits="735"></line>
                <line number="302" hits="735"></line>
                <line number="303" hits="735"></line>
                <line number="304" hits="735"></line>
                <line number="305" hits="735"></line>
                <line number="306" hits="735"></line>
                <line number="308" hits="35"></line>
              </lines>
            </method>
            <method name="meanTimeToRecovery" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="316" hits="35"></line>
                <line number="317" hits="35"></line>
                <line number="318" hits="35"></line>
                <line number="319" hits="536"></line>
                <line number="320" hits="532"></line>
                <line number="321" hits="532"></line>
                <line number="324" hits="35"></line>
                <line number="325" hits="35"></line>
                <line number="326" hits="35"></line>
                <line number="327" hits="35"></line>
                <line number="328" hits="35"></line>
                <line number="329" hits="35"></line>
                <line number="330" hits="515"></line>
                <line number="331" hits="21"></line>
                <line number="332" hits="21"></line>
                <line number="334" hits="515"></line>
                <line number="335" hits="515"></line>
                <line number="336" hits="515"></line>
                <line number="337" hits="532"></line>
                <line number="338" hits="532"></line>
                <line number="339" hits="532"></line>
                <line number="341" hits="120"></line>
                <line number="343" hits="9"></line>
                <line number="344" hits="9"></line>
                <line number="345" hits="9"></line>
                <line number="350" hits="35"></line>
                <line number="351" hits="27"></line>
                <line number="352" hits="27"></line>
                <line number="354" hits="8"></line>
                <line number="355" hits="8"></line>
                <line number="356" hits="8"></line>
              </lines>
            </method>
            <method name="finishedAt" signature="" line-rate="0.42857143" branch-rate="0" complexity="0">
              <lines>
                <line number="362" hits="574"></line>
                <line number="363" hits="574"></line>
                <line number="364" hits="574"></line>
                <line number="366" hits="0"></line>
                <line number="367" hits="0"></line>
                <line number="368" hits="0"></line>
                <line number="370" hits="0"></line>
              </lines>
            </method>
            <method name="isFailedStep" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="376" hits="165"></line>
                <line number="377" hits="165"></line>
              </lines>
            </method>
            <method name="stageDistribution" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="380" hits="35"></line>
                <line number="381" hits="35"></line>
                <line number="382" hits="35"></line>
                <line number="383" hits="55"></line>
                <line number="384" hits="37"></line>
                <line number="385" hits="37"></line>
                <line number="388" hits="35"></line>
                <line number="389" hits="35"></line>
                <line number="390" hits="25"></line>
                <line number="391" hits="25"></line>
                <line number="393" hits="35"></line>
                <line number="394" hits="35"></line>
                <line number="395" hits="25"></line>
                <line number="396" hits="25"></line>
                <line number="398" hits="35"></line>
                <line number="399" hits="11"></line>
                <line number="400" hits="11"></line>
                <line number="402" hits="35"></line>
              </lines>
            </method>
            <method name="failureGroups" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="406" hits="70"></line>
                <line number="407" hits="70"></line>
                <line number="408" hits="70"></line>
                <line number="409" hits="70"></line>
                <line number="410" hits="70"></line>
                <line number="412" hits="70"></line>
                <line number="413" hits="70"></line>
                <line number="414" hits="70"></line>
                <line number="415" hits="110"></line>
                <line number="416" hits="36"></line>
                <line number="419" hits="74"></line>
                <line number="420" hits="74"></line>
                <line number="421" hits="50"></line>
                <line number="422" hits="50"></line>
                <line number="423" hits="50"></line>
                <line number="425" hits="74"></line>
                <line number="426" hits="74"></line>
                <line number="427" hits="74"></line>
                <line number="430" hits="70"></line>
                <line number="431" hits="70"></line>
                <line number="432" hits="70"></line>
                <line number="433" hits="50"></line>
                <line number="434" hits="50"></line>
                <line number="435" hits="50"></line>
                <line number="436" hits="50"></line>
                <line number="437" hits="54"></line>
                <line number="438" hits="54"></line>
                <line number="440" hits="50"></line>
                <line number="441" hits="4"></line>
                <line number="442" hits="4"></line>
                <line number="444" hits="50"></line>
                <line number="445" hits="50"></line>
                <line number="446" hits="50"></line>
                <line number="447" hits="50"></line>
                <line number="448" hits="50"></line>
                <line number="449" hits="50"></line>
                <line number="450" hits="50"></line>
                <line number="453" hits="70"></line>
                <line number="454" hits="22"></line>
                <line number="455" hits="22"></line>
                <line number="457" hits="70"></line>
              </lines>
            </method>
            <method name="mostCommon" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="463" hits="50"></line>
                <line number="464" hits="50"></line>
                <line number="465" hits="50"></line>
                <line number="466" hits="50"></line>
                <line number="467" hits="50"></line>
                <line number="468" hits="50"></line>
                <line number="469" hits="52"></line>
                <line number="470" hits="50"></line>
                <line number="471" hits="50"></line>
                <line number="474" hits="50"></line>
              </lines>
            </method>
            <method name="flakyStepRatio" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="482" hits="35"></line>
                <line number="483" hits="35"></line>
                <line number="484" hits="55"></line>
                <line number="485" hits="55"></line>
                <line number="487" hits="35"></line>
                <line number="488" hits="35"></line>
                <line number="489" hits="35"></line>
                <line number="492" hits="20"></line>
                <line number="493" hits="37"></line>
                <line number="494" hits="37"></line>
                <line number="495" hits="37"></line>
                <line number="496" hits="3"></line>
                <line number="497" hits="3"></line>
                <line number="501" hits="35"></line>
              </lines>
            </method>
            <method name="categoryBreakdown" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="510" hits="35"></line>
                <line number="511" hits="35"></line>
                <line number="512" hits="35"></line>
                <line number="513" hits="35"></line>
                <line number="514" hits="35"></line>
                <line number="515" hits="25"></line>
                <line number="516" hits="25"></line>
                <line number="517" hits="25"></line>
                <line number="519" hits="35"></line>
                <line number="520" hits="35"></line>
                <line number="521" hits="19"></line>
                <line number="522" hits="19"></line>
                <line number="524" hits="35"></line>
                <line number="525" hits="4"></line>
                <line number="526" hits="4"></line>
                <line number="528" hits="35"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="27" hits="17"></line>
            <line number="29" hits="4"></line>
            <line number="31" hits="3"></line>
            <line number="33" hits="3"></line>
            <line number="35" hits="7"></line>
            <line number="247" hits="1612"></line>
            <line number="248" hits="1612"></line>
            <line number="253" hits="70"></line>
            <line number="254" hits="70"></line>
            <line number="255" hits="70"></line>
            <line number="256" hits="1036"></line>
            <line number="258" hits="822"></line>
            <line number="259" hits="822"></line>
            <line number="261" hits="210"></line>
            <line number="262" hits="210"></line>
            <line number="266" hits="70"></line>
            <line number="267" hits="56"></line>
            <line number="268" hits="56"></line>
            <line number="270" hits="14"></line>
            <line number="271" hits="14"></line>
            <line number="272" hits="14"></line>
            <line number="276" hits="35"></line>
            <line number="277" hits="35"></line>
            <line number="278" hits="35"></line>
            <line number="279" hits="536"></line>
            <line number="280" hits="536"></line>
            <line number="281" hits="516"></line>
            <line number="282" hits="516"></line>
            <line number="283" hits="516"></line>
            <line number="285" hits="536"></line>
            <line number="286" hits="536"></line>
            <line number="287" hits="536"></line>
            <line number="288" hits="123"></line>
            <line number="289" hits="123"></line>
            <line number="292" hits="35"></line>
            <line number="293" hits="35"></line>
            <line number="294" hits="35"></line>
            <line number="295" hits="516"></line>
            <line number="296" hits="120"></line>
            <line number="297" hits="120"></line>
            <line number="300" hits="35"></line>
            <line number="301" hits="735"></line>
            <line number="302" hits="735"></line>
            <line number="303" hits="735"></line>
            <line number="304" hits="735"></line>
            <line number="305" hits="735"></line>
            <line number="306" hits="735"></line>
            <line number="308" hits="35"></line>
            <line number="316" hits="35"></line>
            <line number="317" hits="35"></line>
            <line number="318" hits="35"></line>
            <line number="319" hits="536"></line>
            <line number="320" hits="532"></line>
            <line number="321" hits="532"></line>
            <line number="324" hits="35"></line>
            <line number="325" hits="35"></line>
            <line number="326" hits="35"></line>
            <line number="327" hits="35"></line>
            <line number="328" hits="35"></line>
            <line number="329" hits="35"></line>
            <line number="330" hits="515"></line>
            <line number="331" hits="21"></line>
            <line number="332" hits="21"></line>
            <line number="334" hits="515"></line>
            <line number="335" hits="515"></line>
            <line number="336" hits="515"></line>
            <line number="337" hits="532"></line>
            <line number="338" hits="532"></line>
            <line number="339" hits="532"></line>
            <line number="341" hits="120"></line>
            <line number="343" hits="9"></line>
            <line number="344" hits="9"></line>
            <line number="345" hits="9"></line>
            <line number="350" hits="35"></line>
            <line number="351" hits="27"></line>
            <line number="352" hits="27"></line>
            <line number="354" hits="8"></line>
            <line number="355" hits="8"></line>
            <line number="356" hits="8"></line>
            <line number="362" hits="574"></line>
            <line number="363" hits="574"></line>
            <line number="364" hits="574"></line>
            <line number="366" hits="0"></line>
            <line number="367" hits="0"></line>
            <line number="368" hits="0"></line>
            <line number="370" hits="0"></line>
            <line number="376" hits="165"></line>
            <line number="377" hits="165"></line>
            <line number="380" hits="35"></line>
            <line number="381" hits="35"></line>
            <line number="382" hits="35"></line>
            <line number="383" hits="55"></line>
            <line number="384" hits="37"></line>
            <line number="385" hits="37"></line>
            <line number="388" hits="35"></line>
            <line number="389" hits="35"></line>
            <line number="390" hits="25"></line>
            <line number="391" hits="25"></line>
            <line number="393" hits="35"></line>
            <line number="394" hits="35"></line>
            <line number="395" hits="25"></line>
            <line number="396" hits="25"></line>
            <line number="398" hits="35"></line>
            <line number="399" hits="11"></line>
            <line number="400" hits="11"></line>
            <line number="402" hits="35"></line>
            <line number="406" hits="70"></line>
            <line number="407" hits="70"></line>
            <line number="408" hits="70"></line>
            <line number="409" hits="70"></line>
            <line number="410" hits="70"></line>
            <line number="412" hits="70"></line>
            <line number="413" hits="70"></line>
            <line number="414" hits="70"></line>
            <line number="415" hits="110"></line>
            <line number="416" hits="36"></line>
            <line number="419" hits="74"></line>
            <line number="420" hits="74"></line>
            <line number="421" hits="50"></line>
            <line number="422" hits="50"></line>
            <line number="423" hits="50"></line>
            <line number="425" hits="74"></line>
            <line number="426" hits="74"></line>
            <line number="427" hits="74"></line>
            <line number="430" hits="70"></line>
            <line number="431" hits="70"></line>
            <line number="432" hits="70"></line>
            <line number="433" hits="50"></line>
            <line number="434" hits="50"></line>
            <line number="435" hits="50"></line>
            <line number="436" hits="50"></line>
            <line number="437" hits="54"></line>
            <line number="438" hits="54"></line>
            <line number="440" hits="50"></line>
            <line number="441" hits="4"></line>
            <line number="442" hits="4"></line>
            <line number="444" hits="50"></line>
            <line number="445" hits="50"></line>
            <line number="446" hits="50"></line>
            <line number="447" hits="50"></line>
            <line number="448" hits="50"></line>
            <line number="449" hits="50"></line>
            <line number="450" hits="50"></line>
            <line number="453" hits="70"></line>
            <line number="454" hits="22"></line>
            <line number="455" hits="22"></line>
            <line number="457" hits="70"></line>
            <line number="463" hits="50"></line>
            <line number="464" hits="50"></line>
            <line number="465" hits="50"></line>
            <line number="466" hits="50"></line>
            <line number="467" hits="50"></line>
            <line number="468" hits="50"></line>
            <line number="469" hits="52"></line>
            <line number="470" hits="50"></line>
            <line number="471" hits="50"></line>
            <line number="474" hits="50"></line>
            <line number="482" hits="35"></line>
            <line number="483" hits="35"></line>
            <line number="484" hits="55"></line>
            <line number="485" hits="55"></line>
            <line number="487" hits="35"></line>
            <line number="488" hits="35"></line>
            <line number="489" hits="35"></line>
            <line number="492" hits="20"></line>
            <line number="493" hits="37"></line>
            <line number="494" hits="37"></line>
            <line number="495" hits="37"></line>
            <line number="496" hits="3"></line>
            <line number="497" hits="3"></line>
            <line number="501" hits="35"></line>
            <line number="510" hits="35"></line>
            <line number="511" hits="35"></line>
            <line number="512" hits="35"></line>
            <line number="513" hits="35"></line>
            <line number="514" hits="35"></line>
            <line number="515" hits="25"></line>
            <line number="516" hits="25"></line>
            <line number="517" hits="25"></line>
            <line number="519" hits="35"></line>
            <line number="520" hits="35"></line>
            <line number="521" hits="19"></line>
            <line number="522" hits="19"></line>
            <line number="524" hits="35"></line>
            <line number="525" hits="4"></line>
            <line number="526" hits="4"></line>
            <line number="528" hits="35"></line>
          </lines>
        </class>
        <class name="InsightWindow" filename="internal/metrics/insights.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="Label" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="43" hits="9"></line>
                <line number="45" hits="2"></line>
                <line number="47" hits="2"></line>
                <line number="49" hits="5"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="43" hits="9"></line>
            <line number="45" hits="2"></line>
            <line number="47" hits="2"></line>
            <line number="49" hits="5"></line>
          </lines>
        </class>
        <class name="Service" filename="internal/metrics/insights.go" line-rate="0.852459" branch-rate="0" complexity="0">
          <methods>
            <method name="windowSteps" signature="" line-rate="0.8181818" branch-rate="0" complexity="0">
              <lines>
                <line number="165" hits="46"></line>
                <line number="166" hits="46"></line>
                <line number="167" hits="46"></line>
                <line number="168" hits="46"></line>
                <line number="169" hits="46"></line>
                <line number="170" hits="46"></line>
                <line number="171" hits="46"></line>
                <line number="172" hits="46"></line>
                <line number="173" hits="0"></line>
                <line number="174" hits="0"></line>
                <line number="176" hits="46"></line>
              </lines>
            </method>
            <method name="GetFailureInsights" signature="" line-rate="0.86" branch-rate="0" complexity="0">
              <lines>
                <line number="183" hits="35"></line>
                <line number="184" hits="35"></line>
                <line number="185" hits="35"></line>
                <line number="186" hits="35"></line>
                <line number="187" hits="35"></line>
                <line number="188" hits="35"></line>
                <line number="189" hits="35"></line>
                <line number="190" hits="35"></line>
                <line number="191" hits="35"></line>
                <line number="192" hits="35"></line>
                <line number="193" hits="0"></line>
                <line number="194" hits="0"></line>
                <line number="196" hits="35"></line>
                <line number="197" hits="35"></line>
                <line number="198" hits="35"></line>
                <line number="199" hits="1036"></line>
                <line number="200" hits="0"></line>
                <line number="203" hits="1036"></line>
                <line number="204" hits="500"></line>
                <line number="205" hits="500"></line>
                <line number="206" hits="536"></line>
                <line number="207" hits="536"></line>
                <line number="210" hits="35"></line>
                <line number="211" hits="35"></line>
                <line number="212" hits="0"></line>
                <line number="213" hits="0"></line>
                <line number="215" hits="35"></line>
                <line number="216" hits="35"></line>
                <line number="217" hits="0"></line>
                <line number="218" hits="0"></line>
                <line number="220" hits="35"></line>
                <line number="221" hits="35"></line>
                <line number="222" hits="35"></line>
                <line number="223" hits="35"></line>
                <line number="224" hits="35"></line>
                <line number="225" hits="35"></line>
                <line number="226" hits="35"></line>
                <line number="227" hits="35"></line>
                <line number="228" hits="35"></line>
                <line number="229" hits="35"></line>
                <line number="230" hits="35"></line>
                <line number="231" hits="35"></line>
                <line number="232" hits="35"></line>
                <line number="233" hits="35"></line>
                <line number="234" hits="35"></line>
                <line number="236" hits="35"></line>
                <line number="237" hits="1"></line>
                <line number="238" hits="1"></line>
                <line number="239" hits="1"></line>
                <line number="241" hits="35"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="165" hits="46"></line>
            <line number="166" hits="46"></line>
            <line number="167" hits="46"></line>
            <line number="168" hits="46"></line>
            <line number="169" hits="46"></line>
            <line number="170" hits="46"></line>
            <line number="171" hits="46"></line>
            <line number="172" hits="46"></line>
            <line number="173" hits="0"></line>
            <line number="174" hits="0"></line>
            <line number="176" hits="46"></line>
            <line number="183" hits="35"></line>
            <line number="184" hits="35"></line>
            <line number="185" hits="35"></line>
            <line number="186" hits="35"></line>
            <line number="187" hits="35"></line>
            <line number="188" hits="35"></line>
            <line number="189" hits="35"></line>
            <line number="190" hits="35"></line>
            <line number="191" hits="35"></line>
            <line number="192" hits="35"></line>
            <line number="193" hits="0"></line>
            <line number="194" hits="0"></line>
            <line number="196" hits="35"></line>
            <line number="197" hits="35"></line>
            <line number="198" hits="35"></line>
            <line number="199" hits="1036"></line>
            <line number="200" hits="0"></line>
            <line number="203" hits="1036"></line>
            <line number="204" hits="500"></line>
            <line number="205" hits="500"></line>
            <line number="206" hits="536"></line>
            <line number="207" hits="536"></line>
            <line number="210" hits="35"></line>
            <line number="211" hits="35"></line>
            <line number="212" hits="0"></line>
            <line number="213" hits="0"></line>
            <line number="215" hits="35"></line>
            <line number="216" hits="35"></line>
            <line number="217" hits="0"></line>
            <line number="218" hits="0"></line>
            <line number="220" hits="35"></line>
            <line number="221" hits="35"></line>
            <line number="222" hits="35"></line>
            <line number="223" hits="35"></line>
            <line number="224" hits="35"></line>
            <line number="225" hits="35"></line>
            <line number="226" hits="35"></line>
            <line number="227" hits="35"></line>
            <line number="228" hits="35"></line>
            <line number="229" hits="35"></line>
            <line number="230" hits="35"></line>
            <line number="231" hits="35"></line>
            <line number="232" hits="35"></line>
            <line number="233" hits="35"></line>
            <line number="234" hits="35"></line>
            <line number="236" hits="35"></line>
            <line number="237" hits="1"></line>
            <line number="238" hits="1"></line>
            <line number="239" hits="1"></line>
            <line number="241" hits="35"></line>
          </lines>
        </class>
        <class name="PipelineRef" filename="internal/metrics/metrics.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="ID" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="66" hits="101"></line>
                <line number="67" hits="101"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="66" hits="101"></line>
            <line number="67" hits="101"></line>
          </lines>
        </class>
        <class name="-" filename="internal/metrics/metrics.go" line-rate="0.93301433" branch-rate="0" complexity="0">
          <methods>
            <method name="ParsePipelineID" signature="" line-rate="0.7777778" branch-rate="0" complexity="0">
              <lines>
                <line number="75" hits="12"></line>
                <line number="76" hits="12"></line>
                <line number="77" hits="3"></line>
                <line number="78" hits="3"></line>
                <line number="80" hits="9"></line>
                <line number="81" hits="9"></line>
                <line number="82" hits="0"></line>
                <line number="83" hits="0"></line>
                <line number="85" hits="9"></line>
              </lines>
            </method>
            <method name="ParseWindow" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="103" hits="3"></line>
                <line number="104" hits="1"></line>
                <line number="105" hits="1"></line>
                <line number="107" hits="2"></line>
              </lines>
            </method>
            <method name="NewService" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="325" hits="90"></line>
                <line number="326" hits="90"></line>
              </lines>
            </method>
            <method name="compareStartedDesc" signature="" line-rate="0.4" branch-rate="0" complexity="0">
              <lines>
                <line number="477" hits="1"></line>
                <line number="479" hits="0"></line>
                <line number="481" hits="0"></line>
                <line number="483" hits="0"></line>
                <line number="485" hits="1"></line>
              </lines>
            </method>
            <method name="lastRunAt" signature="" line-rate="0.85714287" branch-rate="0" complexity="0">
              <lines>
                <line number="621" hits="83"></line>
                <line number="622" hits="12"></line>
                <line number="623" hits="12"></line>
                <line number="625" hits="71"></line>
                <line number="626" hits="71"></line>
                <line number="627" hits="71"></line>
                <line number="629" hits="0"></line>
              </lines>
            </method>
            <method name="anyFlaky" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="633" hits="83"></line>
                <line number="634" hits="83"></line>
              </lines>
            </method>
            <method name="unhealthyOf" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="640" hits="14"></line>
                <line number="641" hits="14"></line>
                <line number="642" hits="14"></line>
                <line number="643" hits="15"></line>
                <line number="644" hits="1"></line>
                <line number="647" hits="14"></line>
                <line number="648" hits="9"></line>
                <line number="649" hits="9"></line>
                <line number="652" hits="14"></line>
              </lines>
            </method>
            <method name="splitWindow" signature="" line-rate="0.84615386" branch-rate="0" complexity="0">
              <lines>
                <line number="659" hits="84"></line>
                <line number="660" hits="84"></line>
                <line number="661" hits="0"></line>
                <line number="662" hits="0"></line>
                <line number="664" hits="84"></line>
                <line number="665" hits="83"></line>
                <line number="666" hits="83"></line>
                <line number="668" hits="1"></line>
                <line number="669" hits="1"></line>
                <line number="670" hits="1"></line>
                <line number="671" hits="1"></line>
                <line number="672" hits="1"></line>
                <line number="673" hits="1"></line>
              </lines>
            </method>
            <method name="reversed" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="677" hits="1"></line>
                <line number="678" hits="1"></line>
                <line number="679" hits="3"></line>
                <line number="680" hits="3"></line>
                <line number="682" hits="1"></line>
              </lines>
            </method>
            <method name="computeHealth" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="686" hits="83"></line>
                <line number="687" hits="83"></line>
                <line number="688" hits="83"></line>
                <line number="689" hits="27"></line>
                <line number="690" hits="27"></line>
                <line number="692" hits="83"></line>
                <line number="693" hits="1"></line>
                <line number="694" hits="1"></line>
                <line number="696" hits="83"></line>
                <line number="697" hits="3"></line>
                <line number="698" hits="3"></line>
                <line number="700" hits="83"></line>
                <line number="701" hits="52"></line>
                <line number="702" hits="52"></line>
                <line number="704" hits="31"></line>
              </lines>
            </method>
            <method name="overallFailureRate" signature="" line-rate="0.90909094" branch-rate="0" complexity="0">
              <lines>
                <line number="708" hits="83"></line>
                <line number="709" hits="83"></line>
                <line number="710" hits="83"></line>
                <line number="711" hits="207"></line>
                <line number="712" hits="0"></line>
                <line number="715" hits="207"></line>
                <line number="716" hits="207"></line>
                <line number="717" hits="207"></line>
                <line number="718" hits="53"></line>
                <line number="719" hits="53"></line>
                <line number="722" hits="83"></line>
              </lines>
            </method>
            <method name="regressed" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="726" hits="83"></line>
                <line number="727" hits="83"></line>
                <line number="728" hits="83"></line>
                <line number="729" hits="83"></line>
                <line number="730" hits="82"></line>
                <line number="731" hits="82"></line>
                <line number="733" hits="1"></line>
              </lines>
            </method>
            <method name="runsP90Duration" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="737" hits="166"></line>
                <line number="738" hits="166"></line>
                <line number="739" hits="166"></line>
                <line number="740" hits="212"></line>
                <line number="741" hits="212"></line>
                <line number="742" hits="212"></line>
                <line number="745" hits="166"></line>
                <line number="746" hits="94"></line>
                <line number="747" hits="94"></line>
                <line number="749" hits="72"></line>
                <line number="750" hits="72"></line>
                <line number="751" hits="72"></line>
              </lines>
            </method>
            <method name="durationTrend" signature="" line-rate="0.95238096" branch-rate="0" complexity="0">
              <lines>
                <line number="758" hits="1"></line>
                <line number="759" hits="1"></line>
                <line number="760" hits="1"></line>
                <line number="761" hits="1"></line>
                <line number="762" hits="1"></line>
                <line number="763" hits="1"></line>
                <line number="764" hits="1"></line>
                <line number="765" hits="1"></line>
                <line number="766" hits="3"></line>
                <line number="767" hits="3"></line>
                <line number="768" hits="3"></line>
                <line number="770" hits="3"></line>
                <line number="771" hits="3"></line>
                <line number="772" hits="3"></line>
                <line number="775" hits="1"></line>
                <line number="776" hits="0"></line>
                <line number="779" hits="1"></line>
                <line number="780" hits="1"></line>
                <line number="781" hits="1"></line>
                <line number="782" hits="1"></line>
                <line number="785" hits="1"></line>
              </lines>
            </method>
            <method name="failureRateTrend" signature="" line-rate="0.90909094" branch-rate="0" complexity="0">
              <lines>
                <line number="789" hits="1"></line>
                <line number="790" hits="1"></line>
                <line number="791" hits="1"></line>
                <line number="792" hits="1"></line>
                <line number="793" hits="1"></line>
                <line number="794" hits="1"></line>
                <line number="795" hits="1"></line>
                <line number="796" hits="1"></line>
                <line number="797" hits="3"></line>
                <line number="798" hits="0"></line>
                <line number="801" hits="3"></line>
                <line number="802" hits="3"></line>
                <line number="803" hits="1"></line>
                <line number="804" hits="1"></line>
                <line number="806" hits="3"></line>
                <line number="807" hits="3"></line>
                <line number="808" hits="3"></line>
                <line number="811" hits="1"></line>
                <line number="812" hits="0"></line>
                <line number="815" hits="1"></line>
                <line number="816" hits="1"></line>
                <line number="819" hits="1"></line>
              </lines>
            </method>
            <method name="bucketRuns" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="823" hits="2"></line>
                <line number="824" hits="2"></line>
                <line number="825" hits="2"></line>
                <line number="826" hits="2"></line>
                <line number="827" hits="2"></line>
                <line number="828" hits="2"></line>
                <line number="830" hits="2"></line>
              </lines>
            </method>
            <method name="aggregateSteps" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="875" hits="121"></line>
                <line number="876" hits="121"></line>
                <line number="877" hits="121"></line>
                <line number="878" hits="121"></line>
                <line number="879" hits="121"></line>
                <line number="880" hits="92"></line>
                <line number="881" hits="92"></line>
                <line number="882" hits="63"></line>
                <line number="883" hits="63"></line>
                <line number="884" hits="63"></line>
                <line number="885" hits="63"></line>
                <line number="886" hits="63"></line>
                <line number="888" hits="92"></line>
                <line number="891" hits="121"></line>
                <line number="892" hits="121"></line>
                <line number="893" hits="121"></line>
                <line number="894" hits="63"></line>
                <line number="895" hits="63"></line>
                <line number="896" hits="63"></line>
                <line number="897" hits="63"></line>
                <line number="898" hits="63"></line>
                <line number="899" hits="63"></line>
                <line number="900" hits="63"></line>
                <line number="901" hits="63"></line>
                <line number="902" hits="63"></line>
                <line number="903" hits="63"></line>
                <line number="904" hits="63"></line>
                <line number="905" hits="63"></line>
                <line number="906" hits="63"></line>
                <line number="907" hits="63"></line>
                <line number="909" hits="121"></line>
                <line number="910" hits="20"></line>
                <line number="911" hits="20"></line>
                <line number="913" hits="121"></line>
              </lines>
            </method>
            <method name="durationSeconds" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="917" hits="402"></line>
                <line number="918" hits="148"></line>
                <line number="919" hits="148"></line>
                <line number="921" hits="254"></line>
              </lines>
            </method>
            <method name="average" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="925" hits="189"></line>
                <line number="926" hits="136"></line>
                <line number="927" hits="136"></line>
                <line number="929" hits="53"></line>
                <line number="930" hits="53"></line>
                <line number="931" hits="75"></line>
                <line number="932" hits="75"></line>
                <line number="934" hits="53"></line>
              </lines>
            </method>
            <method name="rate" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="938" hits="244"></line>
                <line number="939" hits="31"></line>
                <line number="940" hits="31"></line>
                <line number="942" hits="213"></line>
              </lines>
            </method>
            <method name="percentile" signature="" line-rate="0.75" branch-rate="0" complexity="0">
              <lines>
                <line number="948" hits="74"></line>
                <line number="949" hits="0"></line>
                <line number="950" hits="0"></line>
                <line number="952" hits="74"></line>
                <line number="953" hits="74"></line>
                <line number="954" hits="74"></line>
                <line number="955" hits="74"></line>
                <line number="956" hits="74"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="75" hits="12"></line>
            <line number="76" hits="12"></line>
            <line number="77" hits="3"></line>
            <line number="78" hits="3"></line>
            <line number="80" hits="9"></line>
            <line number="81" hits="9"></line>
            <line number="82" hits="0"></line>
            <line number="83" hits="0"></line>
            <line number="85" hits="9"></line>
            <line number="103" hits="3"></line>
            <line number="104" hits="1"></line>
            <line number="105" hits="1"></line>
            <line number="107" hits="2"></line>
            <line number="325" hits="90"></line>
            <line number="326" hits="90"></line>
            <line number="477" hits="1"></line>
            <line number="479" hits="0"></line>
            <line number="481" hits="0"></line>
            <line number="483" hits="0"></line>
            <line number="485" hits="1"></line>
            <line number="621" hits="83"></line>
            <line number="622" hits="12"></line>
            <line number="623" hits="12"></line>
            <line number="625" hits="71"></line>
            <line number="626" hits="71"></line>
            <line number="627" hits="71"></line>
            <line number="629" hits="0"></line>
            <line number="633" hits="83"></line>
            <line number="634" hits="83"></line>
            <line number="640" hits="14"></line>
            <line number="641" hits="14"></line>
            <line number="642" hits="14"></line>
            <line number="643" hits="15"></line>
            <line number="644" hits="1"></line>
            <line number="647" hits="14"></line>
            <line number="648" hits="9"></line>
            <line number="649" hits="9"></line>
            <line number="652" hits="14"></line>
            <line number="659" hits="84"></line>
            <line number="660" hits="84"></line>
            <line number="661" hits="0"></line>
            <line number="662" hits="0"></line>
            <line number="664" hits="84"></line>
            <line number="665" hits="83"></line>
            <line number="666" hits="83"></line>
            <line number="668" hits="1"></line>
            <line number="669" hits="1"></line>
            <line number="670" hits="1"></line>
            <line number="671" hits="1"></line>
            <line number="672" hits="1"></line>
            <line number="673" hits="1"></line>
            <line number="677" hits="1"></line>
            <line number="678" hits="1"></line>
            <line number="679" hits="3"></line>
            <line number="680" hits="3"></line>
            <line number="682" hits="1"></line>
            <line number="686" hits="83"></line>
            <line number="687" hits="83"></line>
            <line number="688" hits="83"></line>
            <line number="689" hits="27"></line>
            <line number="690" hits="27"></line>
            <line number="692" hits="83"></line>
            <line number="693" hits="1"></line>
            <line number="694" hits="1"></line>
            <line number="696" hits="83"></line>
            <line number="697" hits="3"></line>
            <line number="698" hits="3"></line>
            <line number="700" hits="83"></line>
            <line number="701" hits="52"></line>
            <line number="702" hits="52"></line>
            <line number="704" hits="31"></line>
            <line number="708" hits="83"></line>
            <line number="709" hits="83"></line>
            <line number="710" hits="83"></line>
            <line number="711" hits="207"></line>
            <line number="712" hits="0"></line>
            <line number="715" hits="207"></line>
            <line number="716" hits="207"></line>
            <line number="717" hits="207"></line>
            <line number="718" hits="53"></line>
            <line number="719" hits="53"></line>
            <line number="722" hits="83"></line>
            <line number="726" hits="83"></line>
            <line number="727" hits="83"></line>
            <line number="728" hits="83"></line>
            <line number="729" hits="83"></line>
            <line number="730" hits="82"></line>
            <line number="731" hits="82"></line>
            <line number="733" hits="1"></line>
            <line number="737" hits="166"></line>
            <line number="738" hits="166"></line>
            <line number="739" hits="166"></line>
            <line number="740" hits="212"></line>
            <line number="741" hits="212"></line>
            <line number="742" hits="212"></line>
            <line number="745" hits="166"></line>
            <line number="746" hits="94"></line>
            <line number="747" hits="94"></line>
            <line number="749" hits="72"></line>
            <line number="750" hits="72"></line>
            <line number="751" hits="72"></line>
            <line number="758" hits="1"></line>
            <line number="759" hits="1"></line>
            <line number="760" hits="1"></line>
            <line number="761" hits="1"></line>
            <line number="762" hits="1"></line>
            <line number="763" hits="1"></line>
            <line number="764" hits="1"></line>
            <line number="765" hits="1"></line>
            <line number="766" hits="3"></line>
            <line number="767" hits="3"></line>
            <line number="768" hits="3"></line>
            <line number="770" hits="3"></line>
            <line number="771" hits="3"></line>
            <line number="772" hits="3"></line>
            <line number="775" hits="1"></line>
            <line number="776" hits="0"></line>
            <line number="779" hits="1"></line>
            <line number="780" hits="1"></line>
            <line number="781" hits="1"></line>
            <line number="782" hits="1"></line>
            <line number="785" hits="1"></line>
            <line number="789" hits="1"></line>
            <line number="790" hits="1"></line>
            <line number="791" hits="1"></line>
            <line number="792" hits="1"></line>
            <line number="793" hits="1"></line>
            <line number="794" hits="1"></line>
            <line number="795" hits="1"></line>
            <line number="796" hits="1"></line>
            <line number="797" hits="3"></line>
            <line number="798" hits="0"></line>
            <line number="801" hits="3"></line>
            <line number="802" hits="3"></line>
            <line number="803" hits="1"></line>
            <line number="804" hits="1"></line>
            <line number="806" hits="3"></line>
            <line number="807" hits="3"></line>
            <line number="808" hits="3"></line>
            <line number="811" hits="1"></line>
            <line number="812" hits="0"></line>
            <line number="815" hits="1"></line>
            <line number="816" hits="1"></line>
            <line number="819" hits="1"></line>
            <line number="823" hits="2"></line>
            <line number="824" hits="2"></line>
            <line number="825" hits="2"></line>
            <line number="826" hits="2"></line>
            <line number="827" hits="2"></line>
            <line number="828" hits="2"></line>
            <line number="830" hits="2"></line>
            <line number="875" hits="121"></line>
            <line number="876" hits="121"></line>
            <line number="877" hits="121"></line>
            <line number="878" hits="121"></line>
            <line number="879" hits="121"></line>
            <line number="880" hits="92"></line>
            <line number="881" hits="92"></line>
            <line number="882" hits="63"></line>
            <line number="883" hits="63"></line>
            <line number="884" hits="63"></line>
            <line number="885" hits="63"></line>
            <line number="886" hits="63"></line>
            <line number="888" hits="92"></line>
            <line number="891" hits="121"></line>
            <line number="892" hits="121"></line>
            <line number="893" hits="121"></line>
            <line number="894" hits="63"></line>
            <line number="895" hits="63"></line>
            <line number="896" hits="63"></line>
            <line number="897" hits="63"></line>
            <line number="898" hits="63"></line>
            <line number="899" hits="63"></line>
            <line number="900" hits="63"></line>
            <line number="901" hits="63"></line>
            <line number="902" hits="63"></line>
            <line number="903" hits="63"></line>
            <line number="904" hits="63"></line>
            <line number="905" hits="63"></line>
            <line number="906" hits="63"></line>
            <line number="907" hits="63"></line>
            <line number="909" hits="121"></line>
            <line number="910" hits="20"></line>
            <line number="911" hits="20"></line>
            <line number="913" hits="121"></line>
            <line number="917" hits="402"></line>
            <line number="918" hits="148"></line>
            <line number="919" hits="148"></line>
            <line number="921" hits="254"></line>
            <line number="925" hits="189"></line>
            <line number="926" hits="136"></line>
            <line number="927" hits="136"></line>
            <line number="929" hits="53"></line>
            <line number="930" hits="53"></line>
            <line number="931" hits="75"></line>
            <line number="932" hits="75"></line>
            <line number="934" hits="53"></line>
            <line number="938" hits="244"></line>
            <line number="939" hits="31"></line>
            <line number="940" hits="31"></line>
            <line number="942" hits="213"></line>
            <line number="948" hits="74"></line>
            <line number="949" hits="0"></line>
            <line number="950" hits="0"></line>
            <line number="952" hits="74"></line>
            <line number="953" hits="74"></line>
            <line number="954" hits="74"></line>
            <line number="955" hits="74"></line>
            <line number="956" hits="74"></line>
          </lines>
        </class>
        <class name="Window" filename="internal/metrics/metrics.go" line-rate="0.6" branch-rate="0" complexity="0">
          <methods>
            <method name="doubled" signature="" line-rate="0.6" branch-rate="0" complexity="0">
              <lines>
                <line number="113" hits="84"></line>
                <line number="114" hits="84"></line>
                <line number="115" hits="0"></line>
                <line number="116" hits="0"></line>
                <line number="118" hits="84"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="113" hits="84"></line>
            <line number="114" hits="84"></line>
            <line number="115" hits="0"></line>
            <line number="116" hits="0"></line>
            <line number="118" hits="84"></line>
          </lines>
        </class>
        <class name="Service" filename="internal/metrics/metrics.go" line-rate="0.8111111" branch-rate="0" complexity="0">
          <methods>
            <method name="activeQuarantines" signature="" line-rate="0.6" branch-rate="0" complexity="0">
              <lines>
                <line number="315" hits="139"></line>
                <line number="316" hits="139"></line>
                <line number="317" hits="0"></line>
                <line number="318" hits="0"></line>
                <line number="320" hits="139"></line>
              </lines>
            </method>
            <method name="ListPipelines" signature="" line-rate="0.75" branch-rate="0" complexity="0">
              <lines>
                <line number="333" hits="23"></line>
                <line number="334" hits="11"></line>
                <line number="335" hits="11"></line>
                <line number="337" hits="12"></line>
                <line number="338" hits="12"></line>
                <line number="339" hits="0"></line>
                <line number="340" hits="0"></line>
                <line number="342" hits="12"></line>
                <line number="343" hits="12"></line>
                <line number="344" hits="12"></line>
                <line number="345" hits="22"></line>
                <line number="346" hits="22"></line>
                <line number="347" hits="0"></line>
                <line number="348" hits="0"></line>
                <line number="350" hits="22"></line>
                <line number="353" hits="12"></line>
              </lines>
            </method>
            <method name="GetPipeline" signature="" line-rate="0.82608694" branch-rate="0" complexity="0">
              <lines>
                <line number="359" hits="3"></line>
                <line number="360" hits="3"></line>
                <line number="361" hits="1"></line>
                <line number="362" hits="1"></line>
                <line number="364" hits="2"></line>
                <line number="365" hits="2"></line>
                <line number="366" hits="0"></line>
                <line number="367" hits="0"></line>
                <line number="369" hits="2"></line>
                <line number="370" hits="1"></line>
                <line number="371" hits="1"></line>
                <line number="373" hits="1"></line>
                <line number="374" hits="1"></line>
                <line number="375" hits="0"></line>
                <line number="376" hits="0"></line>
                <line number="378" hits="1"></line>
                <line number="379" hits="1"></line>
                <line number="380" hits="1"></line>
                <line number="381" hits="1"></line>
                <line number="382" hits="1"></line>
                <line number="383" hits="1"></line>
                <line number="384" hits="1"></line>
                <line number="385" hits="1"></line>
              </lines>
            </method>
            <method name="GetPipelineSteps" signature="" line-rate="0.53846157" branch-rate="0" complexity="0">
              <lines>
                <line number="391" hits="4"></line>
                <line number="392" hits="4"></line>
                <line number="393" hits="0"></line>
                <line number="394" hits="0"></line>
                <line number="396" hits="4"></line>
                <line number="397" hits="4"></line>
                <line number="398" hits="0"></line>
                <line number="399" hits="0"></line>
                <line number="401" hits="4"></line>
                <line number="402" hits="4"></line>
                <line number="403" hits="0"></line>
                <line number="404" hits="0"></line>
                <line number="406" hits="4"></line>
              </lines>
            </method>
            <method name="ListFlakyRuns" signature="" line-rate="0.90909094" branch-rate="0" complexity="0">
              <lines>
                <line number="413" hits="3"></line>
                <line number="414" hits="3"></line>
                <line number="415" hits="1"></line>
                <line number="416" hits="1"></line>
                <line number="418" hits="2"></line>
                <line number="419" hits="2"></line>
                <line number="420" hits="0"></line>
                <line number="421" hits="0"></line>
                <line number="423" hits="2"></line>
                <line number="424" hits="2"></line>
                <line number="425" hits="2"></line>
                <line number="426" hits="5"></line>
                <line number="427" hits="3"></line>
                <line number="430" hits="2"></line>
                <line number="431" hits="2"></line>
                <line number="432" hits="2"></line>
                <line number="433" hits="2"></line>
                <line number="434" hits="2"></line>
                <line number="437" hits="2"></line>
                <line number="438" hits="1"></line>
                <line number="439" hits="1"></line>
                <line number="441" hits="2"></line>
              </lines>
            </method>
            <method name="GetRunSteps" signature="" line-rate="0.90909094" branch-rate="0" complexity="0">
              <lines>
                <line number="447" hits="2"></line>
                <line number="448" hits="2"></line>
                <line number="449" hits="0"></line>
                <line number="450" hits="0"></line>
                <line number="452" hits="2"></line>
                <line number="453" hits="1"></line>
                <line number="454" hits="1"></line>
                <line number="456" hits="1"></line>
                <line number="457" hits="1"></line>
                <line number="458" hits="2"></line>
                <line number="459" hits="2"></line>
                <line number="460" hits="2"></line>
                <line number="461" hits="2"></line>
                <line number="462" hits="2"></line>
                <line number="463" hits="2"></line>
                <line number="464" hits="2"></line>
                <line number="465" hits="2"></line>
                <line number="467" hits="1"></line>
                <line number="468" hits="1"></line>
                <line number="469" hits="1"></line>
                <line number="470" hits="1"></line>
                <line number="471" hits="1"></line>
              </lines>
            </method>
            <method name="ListUnhealthySteps" signature="" line-rate="0.8181818" branch-rate="0" complexity="0">
              <lines>
                <line number="507" hits="6"></line>
                <line number="508" hits="6"></line>
                <line number="509" hits="0"></line>
                <line number="510" hits="0"></line>
                <line number="512" hits="6"></line>
                <line number="513" hits="6"></line>
                <line number="514" hits="0"></line>
                <line number="515" hits="0"></line>
                <line number="517" hits="6"></line>
                <line number="518" hits="6"></line>
                <line number="519" hits="6"></line>
                <line number="520" hits="14"></line>
                <line number="521" hits="14"></line>
                <line number="522" hits="0"></line>
                <line number="523" hits="0"></line>
                <line number="525" hits="14"></line>
                <line number="526" hits="14"></line>
                <line number="527" hits="14"></line>
                <line number="528" hits="5"></line>
                <line number="531" hits="9"></line>
                <line number="532" hits="9"></line>
                <line number="533" hits="9"></line>
                <line number="534" hits="9"></line>
                <line number="535" hits="9"></line>
                <line number="536" hits="9"></line>
                <line number="539" hits="6"></line>
                <line number="540" hits="4"></line>
                <line number="541" hits="4"></line>
                <line number="543" hits="2"></line>
                <line number="544" hits="2"></line>
                <line number="545" hits="2"></line>
                <line number="546" hits="2"></line>
                <line number="547" hits="2"></line>
              </lines>
            </method>
            <method name="GetRepoUsage" signature="" line-rate="0.9047619" branch-rate="0" complexity="0">
              <lines>
                <line number="553" hits="1"></line>
                <line number="554" hits="1"></line>
                <line number="555" hits="0"></line>
                <line number="556" hits="0"></line>
                <line number="558" hits="1"></line>
                <line number="559" hits="1"></line>
                <line number="560" hits="1"></line>
                <line number="561" hits="1"></line>
                <line number="562" hits="1"></line>
                <line number="563" hits="3"></line>
                <line number="564" hits="2"></line>
                <line number="565" hits="2"></line>
                <line number="567" hits="3"></line>
                <line number="570" hits="1"></line>
                <line number="571" hits="1"></line>
                <line number="572" hits="2"></line>
                <line number="573" hits="2"></line>
                <line number="575" hits="1"></line>
                <line number="576" hits="1"></line>
                <line number="577" hits="1"></line>
                <line number="579" hits="1"></line>
              </lines>
            </method>
            <method name="summarize" signature="" line-rate="0.6" branch-rate="0" complexity="0">
              <lines>
                <line number="583" hits="82"></line>
                <line number="584" hits="82"></line>
                <line number="585" hits="0"></line>
                <line number="586" hits="0"></line>
                <line number="588" hits="82"></line>
              </lines>
            </method>
            <method name="summarizeFromRuns" signature="" line-rate="0.8" branch-rate="0" complexity="0">
              <lines>
                <line number="592" hits="83"></line>
                <line number="593" hits="83"></line>
                <line number="594" hits="83"></line>
                <line number="595" hits="83"></line>
                <line number="596" hits="0"></line>
                <line number="597" hits="0"></line>
                <line number="599" hits="83"></line>
                <line number="600" hits="83"></line>
                <line number="601" hits="0"></line>
                <line number="602" hits="0"></line>
                <line number="604" hits="83"></line>
                <line number="605" hits="83"></line>
                <line number="606" hits="83"></line>
                <line number="607" hits="83"></line>
                <line number="608" hits="83"></line>
                <line number="609" hits="83"></line>
                <line number="610" hits="83"></line>
                <line number="611" hits="83"></line>
                <line number="612" hits="83"></line>
                <line number="613" hits="83"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="315" hits="139"></line>
            <line number="316" hits="139"></line>
            <line number="317" hits="0"></line>
            <line number="318" hits="0"></line>
            <line number="320" hits="139"></line>
            <line number="333" hits="23"></line>
            <line number="334" hits="11"></line>
            <line number="335" hits="11"></line>
            <line number="337" hits="12"></line>
            <line number="338" hits="12"></line>
            <line number="339" hits="0"></line>
            <line number="340" hits="0"></line>
            <line number="342" hits="12"></line>
            <line number="343" hits="12"></line>
            <line number="344" hits="12"></line>
            <line number="345" hits="22"></line>
            <line number="346" hits="22"></line>
            <line number="347" hits="0"></line>
            <line number="348" hits="0"></line>
            <line number="350" hits="22"></line>
            <line number="353" hits="12"></line>
            <line number="359" hits="3"></line>
            <line number="360" hits="3"></line>
            <line number="361" hits="1"></line>
            <line number="362" hits="1"></line>
            <line number="364" hits="2"></line>
            <line number="365" hits="2"></line>
            <line number="366" hits="0"></line>
            <line number="367" hits="0"></line>
            <line number="369" hits="2"></line>
            <line number="370" hits="1"></line>
            <line number="371" hits="1"></line>
            <line number="373" hits="1"></line>
            <line number="374" hits="1"></line>
            <line number="375" hits="0"></line>
            <line number="376" hits="0"></line>
            <line number="378" hits="1"></line>
            <line number="379" hits="1"></line>
            <line number="380" hits="1"></line>
            <line number="381" hits="1"></line>
            <line number="382" hits="1"></line>
            <line number="383" hits="1"></line>
            <line number="384" hits="1"></line>
            <line number="385" hits="1"></line>
            <line number="391" hits="4"></line>
            <line number="392" hits="4"></line>
            <line number="393" hits="0"></line>
            <line number="394" hits="0"></line>
            <line number="396" hits="4"></line>
            <line number="397" hits="4"></line>
            <line number="398" hits="0"></line>
            <line number="399" hits="0"></line>
            <line number="401" hits="4"></line>
            <line number="402" hits="4"></line>
            <line number="403" hits="0"></line>
            <line number="404" hits="0"></line>
            <line number="406" hits="4"></line>
            <line number="413" hits="3"></line>
            <line number="414" hits="3"></line>
            <line number="415" hits="1"></line>
            <line number="416" hits="1"></line>
            <line number="418" hits="2"></line>
            <line number="419" hits="2"></line>
            <line number="420" hits="0"></line>
            <line number="421" hits="0"></line>
            <line number="423" hits="2"></line>
            <line number="424" hits="2"></line>
            <line number="425" hits="2"></line>
            <line number="426" hits="5"></line>
            <line number="427" hits="3"></line>
            <line number="430" hits="2"></line>
            <line number="431" hits="2"></line>
            <line number="432" hits="2"></line>
            <line number="433" hits="2"></line>
            <line number="434" hits="2"></line>
            <line number="437" hits="2"></line>
            <line number="438" hits="1"></line>
            <line number="439" hits="1"></line>
            <line number="441" hits="2"></line>
            <line number="447" hits="2"></line>
            <line number="448" hits="2"></line>
            <line number="449" hits="0"></line>
            <line number="450" hits="0"></line>
            <line number="452" hits="2"></line>
            <line number="453" hits="1"></line>
            <line number="454" hits="1"></line>
            <line number="456" hits="1"></line>
            <line number="457" hits="1"></line>
            <line number="458" hits="2"></line>
            <line number="459" hits="2"></line>
            <line number="460" hits="2"></line>
            <line number="461" hits="2"></line>
            <line number="462" hits="2"></line>
            <line number="463" hits="2"></line>
            <line number="464" hits="2"></line>
            <line number="465" hits="2"></line>
            <line number="467" hits="1"></line>
            <line number="468" hits="1"></line>
            <line number="469" hits="1"></line>
            <line number="470" hits="1"></line>
            <line number="471" hits="1"></line>
            <line number="507" hits="6"></line>
            <line number="508" hits="6"></line>
            <line number="509" hits="0"></line>
            <line number="510" hits="0"></line>
            <line number="512" hits="6"></line>
            <line number="513" hits="6"></line>
            <line number="514" hits="0"></line>
            <line number="515" hits="0"></line>
            <line number="517" hits="6"></line>
            <line number="518" hits="6"></line>
            <line number="519" hits="6"></line>
            <line number="520" hits="14"></line>
            <line number="521" hits="14"></line>
            <line number="522" hits="0"></line>
            <line number="523" hits="0"></line>
            <line number="525" hits="14"></line>
            <line number="526" hits="14"></line>
            <line number="527" hits="14"></line>
            <line number="528" hits="5"></line>
            <line number="531" hits="9"></line>
            <line number="532" hits="9"></line>
            <line number="533" hits="9"></line>
            <line number="534" hits="9"></line>
            <line number="535" hits="9"></line>
            <line number="536" hits="9"></line>
            <line number="539" hits="6"></line>
            <line number="540" hits="4"></line>
            <line number="541" hits="4"></line>
            <line number="543" hits="2"></line>
            <line number="544" hits="2"></line>
            <line number="545" hits="2"></line>
            <line number="546" hits="2"></line>
            <line number="547" hits="2"></line>
            <line number="553" hits="1"></line>
            <line number="554" hits="1"></line>
            <line number="555" hits="0"></line>
            <line number="556" hits="0"></line>
            <line number="558" hits="1"></line>
            <line number="559" hits="1"></line>
            <line number="560" hits="1"></line>
            <line number="561" hits="1"></line>
            <line number="562" hits="1"></line>
            <line number="563" hits="3"></line>
            <line number="564" hits="2"></line>
            <line number="565" hits="2"></line>
            <line number="567" hits="3"></line>
            <line number="570" hits="1"></line>
            <line number="571" hits="1"></line>
            <line number="572" hits="2"></line>
            <line number="573" hits="2"></line>
            <line number="575" hits="1"></line>
            <line number="576" hits="1"></line>
            <line number="577" hits="1"></line>
            <line number="579" hits="1"></line>
            <line number="583" hits="82"></line>
            <line number="584" hits="82"></line>
            <line number="585" hits="0"></line>
            <line number="586" hits="0"></line>
            <line number="588" hits="82"></line>
            <line number="592" hits="83"></line>
            <line number="593" hits="83"></line>
            <line number="594" hits="83"></line>
            <line number="595" hits="83"></line>
            <line number="596" hits="0"></line>
            <line number="597" hits="0"></line>
            <line number="599" hits="83"></line>
            <line number="600" hits="83"></line>
            <line number="601" hits="0"></line>
            <line number="602" hits="0"></line>
            <line number="604" hits="83"></line>
            <line number="605" hits="83"></line>
            <line number="606" hits="83"></line>
            <line number="607" hits="83"></line>
            <line number="608" hits="83"></line>
            <line number="609" hits="83"></line>
            <line number="610" hits="83"></line>
            <line number="611" hits="83"></line>
            <line number="612" hits="83"></line>
            <line number="613" hits="83"></line>
          </lines>
        </class>
        <class name="stepAcc" filename="internal/metrics/metrics.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="add" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="845" hits="92"></line>
                <line number="846" hits="37"></line>
                <line number="847" hits="37"></line>
                <line number="849" hits="92"></line>
                <line number="850" hits="1"></line>
                <line number="851" hits="1"></line>
                <line number="853" hits="92"></line>
                <line number="854" hits="92"></line>
                <line number="855" hits="92"></line>
                <line number="856" hits="92"></line>
                <line number="858" hits="35"></line>
                <line number="860" hits="52"></line>
                <line number="861" hits="52"></line>
                <line number="862" hits="52"></line>
                <line number="866" hits="92"></line>
                <line number="867" hits="92"></line>
                <line number="868" hits="92"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="845" hits="92"></line>
            <line number="846" hits="37"></line>
            <line number="847" hits="37"></line>
            <line number="849" hits="92"></line>
            <line number="850" hits="1"></line>
            <line number="851" hits="1"></line>
            <line number="853" hits="92"></line>
            <line number="854" hits="92"></line>
            <line number="855" hits="92"></line>
            <line number="856" hits="92"></line>
            <line number="858" hits="35"></line>
            <line number="860" hits="52"></line>
            <line number="861" hits="52"></line>
            <line number="862" hits="52"></line>
            <line number="866" hits="92"></line>
            <line number="867" hits="92"></line>
            <line number="868" hits="92"></line>
          </lines>
        </class>
        <class name="-" filename="internal/metrics/outcome.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="OutcomeOf" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="26" hits="100"></line>
                <line number="28" hits="62"></line>
                <line number="30" hits="25"></line>
                <line number="32" hits="1"></line>
                <line number="34" hits="1"></line>
                <line number="36" hits="3"></line>
                <line number="39" hits="8"></line>
                <line number="41" hits="1"></line>
                <line number="43" hits="4"></line>
                <line number="45" hits="3"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="26" hits="100"></line>
            <line number="28" hits="62"></line>
            <line number="30" hits="25"></line>
            <line number="32" hits="1"></line>
            <line number="34" hits="1"></line>
            <line number="36" hits="3"></line>
            <line number="39" hits="8"></line>
            <line number="41" hits="1"></line>
            <line number="43" hits="4"></line>
            <line number="45" hits="3"></line>
          </lines>
        </class>
        <class name="-" filename="internal/metrics/pipelinelist.go" line-rate="0.9" branch-rate="0" complexity="0">
          <methods>
            <method name="ParseHealthFilter" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="33" hits="7"></line>
                <line number="35" hits="3"></line>
                <line number="37" hits="4"></line>
              </lines>
            </method>
            <method name="ParsePipelineSort" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="44" hits="7"></line>
                <line number="46" hits="1"></line>
                <line number="48" hits="2"></line>
                <line number="50" hits="4"></line>
              </lines>
            </method>
            <method name="compareLastRunDesc" signature="" line-rate="0.6" branch-rate="0" complexity="0">
              <lines>
                <line number="99" hits="31"></line>
                <line number="101" hits="0"></line>
                <line number="103" hits="4"></line>
                <line number="105" hits="0"></line>
                <line number="107" hits="27"></line>
              </lines>
            </method>
            <method name="paginate" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="114" hits="22"></line>
                <line number="115" hits="22"></line>
                <line number="116" hits="22"></line>
                <line number="117" hits="12"></line>
                <line number="118" hits="12"></line>
                <line number="120" hits="10"></line>
                <line number="121" hits="10"></line>
                <line number="122" hits="10"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="33" hits="7"></line>
            <line number="35" hits="3"></line>
            <line number="37" hits="4"></line>
            <line number="44" hits="7"></line>
            <line number="46" hits="1"></line>
            <line number="48" hits="2"></line>
            <line number="50" hits="4"></line>
            <line number="99" hits="31"></line>
            <line number="101" hits="0"></line>
            <line number="103" hits="4"></line>
            <line number="105" hits="0"></line>
            <line number="107" hits="27"></line>
            <line number="114" hits="22"></line>
            <line number="115" hits="22"></line>
            <line number="116" hits="22"></line>
            <line number="117" hits="12"></line>
            <line number="118" hits="12"></line>
            <line number="120" hits="10"></line>
            <line number="121" hits="10"></line>
            <line number="122" hits="10"></line>
          </lines>
        </class>
        <class name="Service" filename="internal/metrics/pipelinelist.go" line-rate="0.8333333" branch-rate="0" complexity="0">
          <methods>
            <method name="listAcrossPipelines" signature="" line-rate="0.8333333" branch-rate="0" complexity="0">
              <lines>
                <line number="60" hits="11"></line>
                <line number="61" hits="11"></line>
                <line number="62" hits="11"></line>
                <line number="63" hits="11"></line>
                <line number="64" hits="11"></line>
                <line number="65" hits="0"></line>
                <line number="66" hits="0"></line>
                <line number="68" hits="11"></line>
                <line number="69" hits="11"></line>
                <line number="70" hits="11"></line>
                <line number="71" hits="60"></line>
                <line number="72" hits="60"></line>
                <line number="73" hits="0"></line>
                <line number="74" hits="0"></line>
                <line number="76" hits="60"></line>
                <line number="77" hits="22"></line>
                <line number="80" hits="38"></line>
                <line number="83" hits="11"></line>
                <line number="86" hits="4"></line>
                <line number="87" hits="31"></line>
                <line number="88" hits="31"></line>
                <line number="91" hits="11"></line>
                <line number="92" hits="11"></line>
                <line number="93" hits="11"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="60" hits="11"></line>
            <line number="61" hits="11"></line>
            <line number="62" hits="11"></line>
            <line number="63" hits="11"></line>
            <line number="64" hits="11"></line>
            <line number="65" hits="0"></line>
            <line number="66" hits="0"></line>
            <line number="68" hits="11"></line>
            <line number="69" hits="11"></line>
            <line number="70" hits="11"></line>
            <line number="71" hits="60"></line>
            <line number="72" hits="60"></line>
            <line number="73" hits="0"></line>
            <line number="74" hits="0"></line>
            <line number="76" hits="60"></line>
            <line number="77" hits="22"></line>
            <line number="80" hits="38"></line>
            <line number="83" hits="11"></line>
            <line number="86" hits="4"></line>
            <line number="87" hits="31"></line>
            <line number="88" hits="31"></line>
            <line number="91" hits="11"></line>
            <line number="92" hits="11"></line>
            <line number="93" hits="11"></line>
          </lines>
        </class>
        <class name="-" filename="internal/metrics/quarantine.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="countsAsFlaky" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="35" hits="42"></line>
                <line number="36" hits="42"></line>
              </lines>
            </method>
            <method name="withQuarantines" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="40" hits="121"></line>
                <line number="41" hits="63"></line>
                <line number="42" hits="5"></line>
                <line number="43" hits="5"></line>
                <line number="46" hits="121"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="35" hits="42"></line>
            <line number="36" hits="42"></line>
            <line number="40" hits="121"></line>
            <line number="41" hits="63"></line>
            <line number="42" hits="5"></line>
            <line number="43" hits="5"></line>
            <line number="46" hits="121"></line>
          </lines>
        </class>
        <class name="Service" filename="internal/metrics/quarantine.go" line-rate="0" branch-rate="0" complexity="0">
          <methods>
            <method name="QuarantineStep" signature="" line-rate="0" branch-rate="0" complexity="0">
              <lines>
                <line number="61" hits="0"></line>
                <line number="62" hits="0"></line>
                <line number="63" hits="0"></line>
                <line number="65" hits="0"></line>
                <line number="66" hits="0"></line>
                <line number="67" hits="0"></line>
                <line number="68" hits="0"></line>
                <line number="70" hits="0"></line>
                <line number="71" hits="0"></line>
                <line number="72" hits="0"></line>
                <line number="73" hits="0"></line>
                <line number="75" hits="0"></line>
              </lines>
            </method>
            <method name="UnquarantineStep" signature="" line-rate="0" branch-rate="0" complexity="0">
              <lines>
                <line number="81" hits="0"></line>
                <line number="82" hits="0"></line>
                <line number="83" hits="0"></line>
                <line number="84" hits="0"></line>
                <line number="86" hits="0"></line>
                <line number="87" hits="0"></line>
                <line number="88" hits="0"></line>
                <line number="90" hits="0"></line>
              </lines>
            </method>
            <method name="knownPipeline" signature="" line-rate="0" branch-rate="0" complexity="0">
              <lines>
                <line number="95" hits="0"></line>
                <line number="96" hits="0"></line>
                <line number="97" hits="0"></line>
                <line number="98" hits="0"></line>
                <line number="100" hits="0"></line>
                <line number="101" hits="0"></line>
                <line number="102" hits="0"></line>
                <line number="103" hits="0"></line>
                <line number="105" hits="0"></line>
                <line number="106" hits="0"></line>
                <line number="107" hits="0"></line>
                <line number="109" hits="0"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="61" hits="0"></line>
            <line number="62" hits="0"></line>
            <line number="63" hits="0"></line>
            <line number="65" hits="0"></line>
            <line number="66" hits="0"></line>
            <line number="67" hits="0"></line>
            <line number="68" hits="0"></line>
            <line number="70" hits="0"></line>
            <line number="71" hits="0"></line>
            <line number="72" hits="0"></line>
            <line number="73" hits="0"></line>
            <line number="75" hits="0"></line>
            <line number="81" hits="0"></line>
            <line number="82" hits="0"></line>
            <line number="83" hits="0"></line>
            <line number="84" hits="0"></line>
            <line number="86" hits="0"></line>
            <line number="87" hits="0"></line>
            <line number="88" hits="0"></line>
            <line number="90" hits="0"></line>
            <line number="95" hits="0"></line>
            <line number="96" hits="0"></line>
            <line number="97" hits="0"></line>
            <line number="98" hits="0"></line>
            <line number="100" hits="0"></line>
            <line number="101" hits="0"></line>
            <line number="102" hits="0"></line>
            <line number="103" hits="0"></line>
            <line number="105" hits="0"></line>
            <line number="106" hits="0"></line>
            <line number="107" hits="0"></line>
            <line number="109" hits="0"></line>
          </lines>
        </class>
        <class name="-" filename="internal/metrics/runs.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="ParseRunStatus" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="32" hits="9"></line>
                <line number="34" hits="1"></line>
                <line number="36" hits="4"></line>
                <line number="38" hits="4"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="32" hits="9"></line>
            <line number="34" hits="1"></line>
            <line number="36" hits="4"></line>
            <line number="38" hits="4"></line>
          </lines>
        </class>
        <class name="RunEntry" filename="internal/metrics/runs.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="DurationSeconds" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="76" hits="3"></line>
                <line number="77" hits="3"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="76" hits="3"></line>
            <line number="77" hits="3"></line>
          </lines>
        </class>
        <class name="Service" filename="internal/metrics/runs.go" line-rate="0.6" branch-rate="0" complexity="0">
          <methods>
            <method name="ListRuns" signature="" line-rate="0.6" branch-rate="0" complexity="0">
              <lines>
                <line number="81" hits="1"></line>
                <line number="82" hits="1"></line>
                <line number="83" hits="0"></line>
                <line number="84" hits="0"></line>
                <line number="86" hits="1"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="81" hits="1"></line>
            <line number="82" hits="1"></line>
            <line number="83" hits="0"></line>
            <line number="84" hits="0"></line>
            <line number="86" hits="1"></line>
          </lines>
        </class>
      </classes>
    </package>
    <package name="github.com/alrayyes/pipeline-analytics/internal/metrics/sqlite" line-rate="0.8198614" branch-rate="0" complexity="0">
      <classes>
        <class name="Store" filename="internal/metrics/sqlite/quarantine.go" line-rate="0.77272725" branch-rate="0" complexity="0">
          <methods>
            <method name="ActiveQuarantines" signature="" line-rate="0.76" branch-rate="0" complexity="0">
              <lines>
                <line number="14" hits="6"></line>
                <line number="15" hits="6"></line>
                <line number="16" hits="6"></line>
                <line number="17" hits="6"></line>
                <line number="18" hits="6"></line>
                <line number="19" hits="6"></line>
                <line number="20" hits="0"></line>
                <line number="21" hits="0"></line>
                <line number="22" hits="6"></line>
                <line number="24" hits="6"></line>
                <line number="25" hits="6"></line>
                <line number="26" hits="6"></line>
                <line number="27" hits="3"></line>
                <line number="28" hits="3"></line>
                <line number="29" hits="3"></line>
                <line number="30" hits="3"></line>
                <line number="31" hits="3"></line>
                <line number="32" hits="3"></line>
                <line number="33" hits="0"></line>
                <line number="34" hits="0"></line>
                <line number="36" hits="3"></line>
                <line number="39" hits="6"></line>
                <line number="40" hits="0"></line>
                <line number="41" hits="0"></line>
                <line number="43" hits="6"></line>
              </lines>
            </method>
            <method name="QuarantineStep" signature="" line-rate="0.8333333" branch-rate="0" complexity="0">
              <lines>
                <line number="48" hits="7"></line>
                <line number="49" hits="7"></line>
                <line number="50" hits="7"></line>
                <line number="51" hits="7"></line>
                <line number="52" hits="7"></line>
                <line number="53" hits="7"></line>
                <line number="54" hits="7"></line>
                <line number="55" hits="7"></line>
                <line number="56" hits="7"></line>
                <line number="57" hits="0"></line>
                <line number="58" hits="0"></line>
                <line number="60" hits="7"></line>
              </lines>
            </method>
            <method name="UnquarantineStep" signature="" line-rate="0.71428573" branch-rate="0" complexity="0">
              <lines>
                <line number="65" hits="2"></line>
                <line number="66" hits="2"></line>
                <line number="67" hits="2"></line>
                <line number="68" hits="2"></line>
                <line number="69" hits="0"></line>
                <line number="70" hits="0"></line>
                <line number="72" hits="2"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="14" hits="6"></line>
            <line number="15" hits="6"></line>
            <line number="16" hits="6"></line>
            <line number="17" hits="6"></line>
            <line number="18" hits="6"></line>
            <line number="19" hits="6"></line>
            <line number="20" hits="0"></line>
            <line number="21" hits="0"></line>
            <line number="22" hits="6"></line>
            <line number="24" hits="6"></line>
            <line number="25" hits="6"></line>
            <line number="26" hits="6"></line>
            <line number="27" hits="3"></line>
            <line number="28" hits="3"></line>
            <line number="29" hits="3"></line>
            <line number="30" hits="3"></line>
            <line number="31" hits="3"></line>
            <line number="32" hits="3"></line>
            <line number="33" hits="0"></line>
            <line number="34" hits="0"></line>
            <line number="36" hits="3"></line>
            <line number="39" hits="6"></line>
            <line number="40" hits="0"></line>
            <line number="41" hits="0"></line>
            <line number="43" hits="6"></line>
            <line number="48" hits="7"></line>
            <line number="49" hits="7"></line>
            <line number="50" hits="7"></line>
            <line number="51" hits="7"></line>
            <line number="52" hits="7"></line>
            <line number="53" hits="7"></line>
            <line number="54" hits="7"></line>
            <line number="55" hits="7"></line>
            <line number="56" hits="7"></line>
            <line number="57" hits="0"></line>
            <line number="58" hits="0"></line>
            <line number="60" hits="7"></line>
            <line number="65" hits="2"></line>
            <line number="66" hits="2"></line>
            <line number="67" hits="2"></line>
            <line number="68" hits="2"></line>
            <line number="69" hits="0"></line>
            <line number="70" hits="0"></line>
            <line number="72" hits="2"></line>
          </lines>
        </class>
        <class name="-" filename="internal/metrics/sqlite/store.go" line-rate="0.8942308" branch-rate="0" complexity="0">
          <methods>
            <method name="NewStore" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="21" hits="17"></line>
                <line number="22" hits="17"></line>
              </lines>
            </method>
            <method name="pipelineListQuery" signature="" line-rate="0.9310345" branch-rate="0" complexity="0">
              <lines>
                <line number="26" hits="6"></line>
                <line number="27" hits="6"></line>
                <line number="28" hits="6"></line>
                <line number="32" hits="6"></line>
                <line number="33" hits="1"></line>
                <line number="34" hits="1"></line>
                <line number="36" hits="6"></line>
                <line number="37" hits="6"></line>
                <line number="38" hits="6"></line>
                <line number="39" hits="1"></line>
                <line number="40" hits="1"></line>
                <line number="41" hits="1"></line>
                <line number="43" hits="6"></line>
                <line number="44" hits="1"></line>
                <line number="45" hits="0"></line>
                <line number="46" hits="0"></line>
                <line number="48" hits="1"></line>
                <line number="49" hits="1"></line>
                <line number="52" hits="6"></line>
                <line number="53" hits="2"></line>
                <line number="54" hits="2"></line>
                <line number="55" hits="2"></line>
                <line number="57" hits="6"></line>
                <line number="58" hits="6"></line>
                <line number="61" hits="6"></line>
                <line number="62" hits="2"></line>
                <line number="63" hits="2"></line>
                <line number="64" hits="2"></line>
                <line number="66" hits="6"></line>
              </lines>
            </method>
            <method name="appendRunScope" signature="" line-rate="0.7692308" branch-rate="0" complexity="0">
              <lines>
                <line number="298" hits="27"></line>
                <line number="299" hits="4"></line>
                <line number="300" hits="4"></line>
                <line number="301" hits="4"></line>
                <line number="303" hits="27"></line>
                <line number="304" hits="8"></line>
                <line number="305" hits="8"></line>
                <line number="306" hits="8"></line>
                <line number="308" hits="27"></line>
                <line number="309" hits="0"></line>
                <line number="310" hits="0"></line>
                <line number="311" hits="0"></line>
                <line number="313" hits="27"></line>
              </lines>
            </method>
            <method name="runListQuery" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="317" hits="13"></line>
                <line number="318" hits="13"></line>
                <line number="319" hits="13"></line>
                <line number="320" hits="13"></line>
                <line number="321" hits="13"></line>
                <line number="322" hits="13"></line>
                <line number="323" hits="13"></line>
                <line number="324" hits="13"></line>
                <line number="325" hits="13"></line>
                <line number="326" hits="13"></line>
                <line number="327" hits="13"></line>
                <line number="329" hits="3"></line>
                <line number="331" hits="1"></line>
                <line number="333" hits="3"></line>
                <line number="334" hits="6"></line>
                <line number="339" hits="13"></line>
                <line number="340" hits="13"></line>
                <line number="343" hits="13"></line>
                <line number="344" hits="2"></line>
                <line number="345" hits="2"></line>
                <line number="346" hits="2"></line>
                <line number="348" hits="13"></line>
              </lines>
            </method>
            <method name="scanRunEntry" signature="" line-rate="0.88235295" branch-rate="0" complexity="0">
              <lines>
                <line number="389" hits="28"></line>
                <line number="390" hits="28"></line>
                <line number="391" hits="28"></line>
                <line number="392" hits="28"></line>
                <line number="393" hits="28"></line>
                <line number="394" hits="28"></line>
                <line number="395" hits="28"></line>
                <line number="396" hits="28"></line>
                <line number="397" hits="28"></line>
                <line number="398" hits="28"></line>
                <line number="399" hits="0"></line>
                <line number="400" hits="0"></line>
                <line number="402" hits="28"></line>
                <line number="403" hits="28"></line>
                <line number="404" hits="28"></line>
                <line number="405" hits="28"></line>
                <line number="406" hits="28"></line>
              </lines>
            </method>
            <method name="scanStepOccurrences" signature="" line-rate="0.8095238" branch-rate="0" complexity="0">
              <lines>
                <line number="485" hits="3"></line>
                <line number="486" hits="3"></line>
                <line number="487" hits="3"></line>
                <line number="488" hits="2"></line>
                <line number="489" hits="2"></line>
                <line number="490" hits="2"></line>
                <line number="491" hits="2"></line>
                <line number="492" hits="2"></line>
                <line number="493" hits="2"></line>
                <line number="494" hits="2"></line>
                <line number="495" hits="2"></line>
                <line number="496" hits="2"></line>
                <line number="497" hits="2"></line>
                <line number="498" hits="0"></line>
                <line number="499" hits="0"></line>
                <line number="501" hits="2"></line>
                <line number="502" hits="2"></line>
                <line number="505" hits="3"></line>
                <line number="506" hits="0"></line>
                <line number="507" hits="0"></line>
                <line number="509" hits="3"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="21" hits="17"></line>
            <line number="22" hits="17"></line>
            <line number="26" hits="6"></line>
            <line number="27" hits="6"></line>
            <line number="28" hits="6"></line>
            <line number="32" hits="6"></line>
            <line number="33" hits="1"></line>
            <line number="34" hits="1"></line>
            <line number="36" hits="6"></line>
            <line number="37" hits="6"></line>
            <line number="38" hits="6"></line>
            <line number="39" hits="1"></line>
            <line number="40" hits="1"></line>
            <line number="41" hits="1"></line>
            <line number="43" hits="6"></line>
            <line number="44" hits="1"></line>
            <line number="45" hits="0"></line>
            <line number="46" hits="0"></line>
            <line number="48" hits="1"></line>
            <line number="49" hits="1"></line>
            <line number="52" hits="6"></line>
            <line number="53" hits="2"></line>
            <line number="54" hits="2"></line>
            <line number="55" hits="2"></line>
            <line number="57" hits="6"></line>
            <line number="58" hits="6"></line>
            <line number="61" hits="6"></line>
            <line number="62" hits="2"></line>
            <line number="63" hits="2"></line>
            <line number="64" hits="2"></line>
            <line number="66" hits="6"></line>
            <line number="298" hits="27"></line>
            <line number="299" hits="4"></line>
            <line number="300" hits="4"></line>
            <line number="301" hits="4"></line>
            <line number="303" hits="27"></line>
            <line number="304" hits="8"></line>
            <line number="305" hits="8"></line>
            <line number="306" hits="8"></line>
            <line number="308" hits="27"></line>
            <line number="309" hits="0"></line>
            <line number="310" hits="0"></line>
            <line number="311" hits="0"></line>
            <line number="313" hits="27"></line>
            <line number="317" hits="13"></line>
            <line number="318" hits="13"></line>
            <line number="319" hits="13"></line>
            <line number="320" hits="13"></line>
            <line number="321" hits="13"></line>
            <line number="322" hits="13"></line>
            <line number="323" hits="13"></line>
            <line number="324" hits="13"></line>
            <line number="325" hits="13"></line>
            <line number="326" hits="13"></line>
            <line number="327" hits="13"></line>
            <line number="329" hits="3"></line>
            <line number="331" hits="1"></line>
            <line number="333" hits="3"></line>
            <line number="334" hits="6"></line>
            <line number="339" hits="13"></line>
            <line number="340" hits="13"></line>
            <line number="343" hits="13"></line>
            <line number="344" hits="2"></line>
            <line number="345" hits="2"></line>
            <line number="346" hits="2"></line>
            <line number="348" hits="13"></line>
            <line number="389" hits="28"></line>
            <line number="390" hits="28"></line>
            <line number="391" hits="28"></line>
            <line number="392" hits="28"></line>
            <line number="393" hits="28"></line>
            <line number="394" hits="28"></line>
            <line number="395" hits="28"></line>
            <line number="396" hits="28"></line>
            <line number="397" hits="28"></line>
            <line number="398" hits="28"></line>
            <line number="399" hits="0"></line>
            <line number="400" hits="0"></line>
            <line number="402" hits="28"></line>
            <line number="403" hits="28"></line>
            <line number="404" hits="28"></line>
            <line number="405" hits="28"></line>
            <line number="406" hits="28"></line>
            <line number="485" hits="3"></line>
            <line number="486" hits="3"></line>
            <line number="487" hits="3"></line>
            <line number="488" hits="2"></line>
            <line number="489" hits="2"></line>
            <line number="490" hits="2"></line>
            <line number="491" hits="2"></line>
            <line number="492" hits="2"></line>
            <line number="493" hits="2"></line>
            <line number="494" hits="2"></line>
            <line number="495" hits="2"></line>
            <line number="496" hits="2"></line>
            <line number="497" hits="2"></line>
            <line number="498" hits="0"></line>
            <line number="499" hits="0"></line>
            <line number="501" hits="2"></line>
            <line number="502" hits="2"></line>
            <line number="505" hits="3"></line>
            <line number="506" hits="0"></line>
            <line number="507" hits="0"></line>
            <line number="509" hits="3"></line>
          </lines>
        </class>
        <class name="Store" filename="internal/metrics/sqlite/store.go" line-rate="0.8" branch-rate="0" complexity="0">
          <methods>
            <method name="ListPipelines" signature="" line-rate="0.73913044" branch-rate="0" complexity="0">
              <lines>
                <line number="71" hits="6"></line>
                <line number="72" hits="6"></line>
                <line number="73" hits="6"></line>
                <line number="74" hits="6"></line>
                <line number="75" hits="0"></line>
                <line number="76" hits="0"></line>
                <line number="77" hits="6"></line>
                <line number="79" hits="6"></line>
                <line number="80" hits="6"></line>
                <line number="81" hits="6"></line>
                <line number="82" hits="11"></line>
                <line number="83" hits="11"></line>
                <line number="84" hits="0"></line>
                <line number="85" hits="0"></line>
                <line number="87" hits="11"></line>
                <line number="90" hits="6"></line>
                <line number="91" hits="0"></line>
                <line number="92" hits="0"></line>
                <line number="94" hits="6"></line>
                <line number="95" hits="6"></line>
                <line number="96" hits="1"></line>
                <line number="97" hits="1"></line>
                <line number="99" hits="6"></line>
              </lines>
            </method>
            <method name="PipelineRuns" signature="" line-rate="0.78571427" branch-rate="0" complexity="0">
              <lines>
                <line number="104" hits="3"></line>
                <line number="105" hits="3"></line>
                <line number="106" hits="3"></line>
                <line number="107" hits="3"></line>
                <line number="108" hits="3"></line>
                <line number="109" hits="3"></line>
                <line number="110" hits="3"></line>
                <line number="111" hits="3"></line>
                <line number="112" hits="0"></line>
                <line number="113" hits="0"></line>
                <line number="114" hits="3"></line>
                <line number="116" hits="3"></line>
                <line number="117" hits="3"></line>
                <line number="118" hits="3"></line>
                <line number="119" hits="4"></line>
                <line number="120" hits="4"></line>
                <line number="121" hits="4"></line>
                <line number="122" hits="4"></line>
                <line number="123" hits="4"></line>
                <line number="124" hits="4"></line>
                <line number="125" hits="0"></line>
                <line number="126" hits="0"></line>
                <line number="128" hits="4"></line>
                <line number="129" hits="4"></line>
                <line number="132" hits="3"></line>
                <line number="133" hits="0"></line>
                <line number="134" hits="0"></line>
                <line number="136" hits="3"></line>
              </lines>
            </method>
            <method name="PipelineSteps" signature="" line-rate="0.85714287" branch-rate="0" complexity="0">
              <lines>
                <line number="141" hits="1"></line>
                <line number="142" hits="1"></line>
                <line number="143" hits="1"></line>
                <line number="144" hits="1"></line>
                <line number="145" hits="1"></line>
                <line number="146" hits="1"></line>
                <line number="147" hits="1"></line>
                <line number="148" hits="1"></line>
                <line number="149" hits="1"></line>
                <line number="150" hits="1"></line>
                <line number="151" hits="0"></line>
                <line number="152" hits="0"></line>
                <line number="153" hits="1"></line>
                <line number="155" hits="1"></line>
              </lines>
            </method>
            <method name="WindowRuns" signature="" line-rate="0.8235294" branch-rate="0" complexity="0">
              <lines>
                <line number="160" hits="5"></line>
                <line number="161" hits="5"></line>
                <line number="162" hits="5"></line>
                <line number="165" hits="5"></line>
                <line number="166" hits="2"></line>
                <line number="167" hits="2"></line>
                <line number="169" hits="5"></line>
                <line number="170" hits="5"></line>
                <line number="171" hits="5"></line>
                <line number="172" hits="5"></line>
                <line number="173" hits="5"></line>
                <line number="174" hits="5"></line>
                <line number="175" hits="5"></line>
                <line number="176" hits="0"></line>
                <line number="177" hits="0"></line>
                <line number="178" hits="5"></line>
                <line number="180" hits="5"></line>
                <line number="181" hits="5"></line>
                <line number="182" hits="5"></line>
                <line number="183" hits="7"></line>
                <line number="184" hits="7"></line>
                <line number="185" hits="7"></line>
                <line number="186" hits="7"></line>
                <line number="187" hits="7"></line>
                <line number="188" hits="7"></line>
                <line number="189" hits="7"></line>
                <line number="190" hits="0"></line>
                <line number="191" hits="0"></line>
                <line number="193" hits="7"></line>
                <line number="194" hits="7"></line>
                <line number="197" hits="5"></line>
                <line number="198" hits="0"></line>
                <line number="199" hits="0"></line>
                <line number="201" hits="5"></line>
              </lines>
            </method>
            <method name="WindowBranches" signature="" line-rate="0.7777778" branch-rate="0" complexity="0">
              <lines>
                <line number="206" hits="4"></line>
                <line number="207" hits="4"></line>
                <line number="208" hits="2"></line>
                <line number="209" hits="2"></line>
                <line number="211" hits="4"></line>
                <line number="212" hits="4"></line>
                <line number="213" hits="4"></line>
                <line number="214" hits="4"></line>
                <line number="215" hits="4"></line>
                <line number="216" hits="4"></line>
                <line number="217" hits="4"></line>
                <line number="218" hits="4"></line>
                <line number="219" hits="0"></line>
                <line number="220" hits="0"></line>
                <line number="221" hits="4"></line>
                <line number="223" hits="4"></line>
                <line number="224" hits="4"></line>
                <line number="225" hits="4"></line>
                <line number="226" hits="6"></line>
                <line number="227" hits="6"></line>
                <line number="228" hits="0"></line>
                <line number="229" hits="0"></line>
                <line number="231" hits="6"></line>
                <line number="234" hits="4"></line>
                <line number="235" hits="0"></line>
                <line number="236" hits="0"></line>
                <line number="238" hits="4"></line>
              </lines>
            </method>
            <method name="WindowSteps" signature="" line-rate="0.8604651" branch-rate="0" complexity="0">
              <lines>
                <line number="243" hits="5"></line>
                <line number="244" hits="5"></line>
                <line number="245" hits="5"></line>
                <line number="246" hits="5"></line>
                <line number="247" hits="5"></line>
                <line number="248" hits="5"></line>
                <line number="249" hits="5"></line>
                <line number="250" hits="5"></line>
                <line number="251" hits="5"></line>
                <line number="252" hits="2"></line>
                <line number="253" hits="2"></line>
                <line number="255" hits="5"></line>
                <line number="256" hits="5"></line>
                <line number="257" hits="5"></line>
                <line number="258" hits="5"></line>
                <line number="259" hits="5"></line>
                <line number="260" hits="5"></line>
                <line number="261" hits="5"></line>
                <line number="262" hits="0"></line>
                <line number="263" hits="0"></line>
                <line number="264" hits="5"></line>
                <line number="266" hits="5"></line>
                <line number="267" hits="5"></line>
                <line number="268" hits="5"></line>
                <line number="269" hits="7"></line>
                <line number="270" hits="7"></line>
                <line number="271" hits="7"></line>
                <line number="272" hits="7"></line>
                <line number="273" hits="7"></line>
                <line number="274" hits="7"></line>
                <line number="275" hits="7"></line>
                <line number="276" hits="7"></line>
                <line number="277" hits="7"></line>
                <line number="278" hits="7"></line>
                <line number="279" hits="7"></line>
                <line number="280" hits="0"></line>
                <line number="281" hits="0"></line>
                <line number="283" hits="7"></line>
                <line number="284" hits="7"></line>
                <line number="287" hits="5"></line>
                <line number="288" hits="0"></line>
                <line number="289" hits="0"></line>
                <line number="291" hits="5"></line>
              </lines>
            </method>
            <method name="ListRuns" signature="" line-rate="0.6923077" branch-rate="0" complexity="0">
              <lines>
                <line number="353" hits="13"></line>
                <line number="354" hits="13"></line>
                <line number="355" hits="13"></line>
                <line number="356" hits="13"></line>
                <line number="357" hits="0"></line>
                <line number="358" hits="0"></line>
                <line number="359" hits="13"></line>
                <line number="361" hits="13"></line>
                <line number="362" hits="13"></line>
                <line number="363" hits="13"></line>
                <line number="364" hits="28"></line>
                <line number="365" hits="28"></line>
                <line number="366" hits="0"></line>
                <line number="367" hits="0"></line>
                <line number="369" hits="28"></line>
                <line number="372" hits="13"></line>
                <line number="373" hits="0"></line>
                <line number="374" hits="0"></line>
                <line number="376" hits="13"></line>
                <line number="377" hits="13"></line>
                <line number="378" hits="1"></line>
                <line number="379" hits="1"></line>
                <line number="381" hits="13"></line>
                <line number="382" hits="0"></line>
                <line number="383" hits="0"></line>
                <line number="385" hits="13"></line>
              </lines>
            </method>
            <method name="attachSteps" signature="" line-rate="0.80487806" branch-rate="0" complexity="0">
              <lines>
                <line number="412" hits="13"></line>
                <line number="413" hits="2"></line>
                <line number="414" hits="2"></line>
                <line number="416" hits="11"></line>
                <line number="417" hits="11"></line>
                <line number="418" hits="11"></line>
                <line number="419" hits="11"></line>
                <line number="420" hits="27"></line>
                <line number="421" hits="27"></line>
                <line number="422" hits="27"></line>
                <line number="427" hits="11"></line>
                <line number="428" hits="11"></line>
                <line number="429" hits="0"></line>
                <line number="430" hits="0"></line>
                <line number="432" hits="11"></line>
                <line number="433" hits="11"></line>
                <line number="434" hits="11"></line>
                <line number="435" hits="11"></line>
                <line number="436" hits="11"></line>
                <line number="437" hits="11"></line>
                <line number="438" hits="11"></line>
                <line number="439" hits="11"></line>
                <line number="440" hits="0"></line>
                <line number="441" hits="0"></line>
                <line number="442" hits="11"></line>
                <line number="444" hits="11"></line>
                <line number="445" hits="10"></line>
                <line number="446" hits="10"></line>
                <line number="447" hits="10"></line>
                <line number="448" hits="10"></line>
                <line number="449" hits="10"></line>
                <line number="450" hits="10"></line>
                <line number="451" hits="10"></line>
                <line number="452" hits="0"></line>
                <line number="453" hits="0"></line>
                <line number="455" hits="10"></line>
                <line number="456" hits="10"></line>
                <line number="459" hits="11"></line>
                <line number="460" hits="0"></line>
                <line number="461" hits="0"></line>
                <line number="463" hits="11"></line>
              </lines>
            </method>
            <method name="RunSteps" signature="" line-rate="0.84615386" branch-rate="0" complexity="0">
              <lines>
                <line number="468" hits="2"></line>
                <line number="469" hits="2"></line>
                <line number="470" hits="2"></line>
                <line number="471" hits="2"></line>
                <line number="472" hits="2"></line>
                <line number="473" hits="2"></line>
                <line number="474" hits="2"></line>
                <line number="475" hits="2"></line>
                <line number="476" hits="2"></line>
                <line number="477" hits="0"></line>
                <line number="478" hits="0"></line>
                <line number="479" hits="2"></line>
                <line number="481" hits="2"></line>
              </lines>
            </method>
            <method name="RepoUsage" signature="" line-rate="0.8055556" branch-rate="0" complexity="0">
              <lines>
                <line number="516" hits="1"></line>
                <line number="517" hits="1"></line>
                <line number="518" hits="1"></line>
                <line number="519" hits="1"></line>
                <line number="520" hits="1"></line>
                <line number="521" hits="1"></line>
                <line number="522" hits="1"></line>
                <line number="523" hits="1"></line>
                <line number="524" hits="1"></line>
                <line number="525" hits="1"></line>
                <line number="526" hits="1"></line>
                <line number="527" hits="1"></line>
                <line number="528" hits="0"></line>
                <line number="529" hits="0"></line>
                <line number="530" hits="1"></line>
                <line number="532" hits="1"></line>
                <line number="533" hits="1"></line>
                <line number="534" hits="1"></line>
                <line number="535" hits="2"></line>
                <line number="536" hits="2"></line>
                <line number="537" hits="2"></line>
                <line number="538" hits="2"></line>
                <line number="539" hits="2"></line>
                <line number="540" hits="2"></line>
                <line number="541" hits="0"></line>
                <line number="542" hits="0"></line>
                <line number="544" hits="2"></line>
                <line number="545" hits="0"></line>
                <line number="548" hits="2"></line>
                <line number="549" hits="2"></line>
                <line number="550" hits="2"></line>
                <line number="551" hits="2"></line>
                <line number="554" hits="1"></line>
                <line number="555" hits="0"></line>
                <line number="556" hits="0"></line>
                <line number="558" hits="1"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="71" hits="6"></line>
            <line number="72" hits="6"></line>
            <line number="73" hits="6"></line>
            <line number="74" hits="6"></line>
            <line number="75" hits="0"></line>
            <line number="76" hits="0"></line>
            <line number="77" hits="6"></line>
            <line number="79" hits="6"></line>
            <line number="80" hits="6"></line>
            <line number="81" hits="6"></line>
            <line number="82" hits="11"></line>
            <line number="83" hits="11"></line>
            <line number="84" hits="0"></line>
            <line number="85" hits="0"></line>
            <line number="87" hits="11"></line>
            <line number="90" hits="6"></line>
            <line number="91" hits="0"></line>
            <line number="92" hits="0"></line>
            <line number="94" hits="6"></line>
            <line number="95" hits="6"></line>
            <line number="96" hits="1"></line>
            <line number="97" hits="1"></line>
            <line number="99" hits="6"></line>
            <line number="104" hits="3"></line>
            <line number="105" hits="3"></line>
            <line number="106" hits="3"></line>
            <line number="107" hits="3"></line>
            <line number="108" hits="3"></line>
            <line number="109" hits="3"></line>
            <line number="110" hits="3"></line>
            <line number="111" hits="3"></line>
            <line number="112" hits="0"></line>
            <line number="113" hits="0"></line>
            <line number="114" hits="3"></line>
            <line number="116" hits="3"></line>
            <line number="117" hits="3"></line>
            <line number="118" hits="3"></line>
            <line number="119" hits="4"></line>
            <line number="120" hits="4"></line>
            <line number="121" hits="4"></line>
            <line number="122" hits="4"></line>
            <line number="123" hits="4"></line>
            <line number="124" hits="4"></line>
            <line number="125" hits="0"></line>
            <line number="126" hits="0"></line>
            <line number="128" hits="4"></line>
            <line number="129" hits="4"></line>
            <line number="132" hits="3"></line>
            <line number="133" hits="0"></line>
            <line number="134" hits="0"></line>
            <line number="136" hits="3"></line>
            <line number="141" hits="1"></line>
            <line number="142" hits="1"></line>
            <line number="143" hits="1"></line>
            <line number="144" hits="1"></line>
            <line number="145" hits="1"></line>
            <line number="146" hits="1"></line>
            <line number="147" hits="1"></line>
            <line number="148" hits="1"></line>
            <line number="149" hits="1"></line>
            <line number="150" hits="1"></line>
            <line number="151" hits="0"></line>
            <line number="152" hits="0"></line>
            <line number="153" hits="1"></line>
            <line number="155" hits="1"></line>
            <line number="160" hits="5"></line>
            <line number="161" hits="5"></line>
            <line number="162" hits="5"></line>
            <line number="165" hits="5"></line>
            <line number="166" hits="2"></line>
            <line number="167" hits="2"></line>
            <line number="169" hits="5"></line>
            <line number="170" hits="5"></line>
            <line number="171" hits="5"></line>
            <line number="172" hits="5"></line>
            <line number="173" hits="5"></line>
            <line number="174" hits="5"></line>
            <line number="175" hits="5"></line>
            <line number="176" hits="0"></line>
            <line number="177" hits="0"></line>
            <line number="178" hits="5"></line>
            <line number="180" hits="5"></line>
            <line number="181" hits="5"></line>
            <line number="182" hits="5"></line>
            <line number="183" hits="7"></line>
            <line number="184" hits="7"></line>
            <line number="185" hits="7"></line>
            <line number="186" hits="7"></line>
            <line number="187" hits="7"></line>
            <line number="188" hits="7"></line>
            <line number="189" hits="7"></line>
            <line number="190" hits="0"></line>
            <line number="191" hits="0"></line>
            <line number="193" hits="7"></line>
            <line number="194" hits="7"></line>
            <line number="197" hits="5"></line>
            <line number="198" hits="0"></line>
            <line number="199" hits="0"></line>
            <line number="201" hits="5"></line>
            <line number="206" hits="4"></line>
            <line number="207" hits="4"></line>
            <line number="208" hits="2"></line>
            <line number="209" hits="2"></line>
            <line number="211" hits="4"></line>
            <line number="212" hits="4"></line>
            <line number="213" hits="4"></line>
            <line number="214" hits="4"></line>
            <line number="215" hits="4"></line>
            <line number="216" hits="4"></line>
            <line number="217" hits="4"></line>
            <line number="218" hits="4"></line>
            <line number="219" hits="0"></line>
            <line number="220" hits="0"></line>
            <line number="221" hits="4"></line>
            <line number="223" hits="4"></line>
            <line number="224" hits="4"></line>
            <line number="225" hits="4"></line>
            <line number="226" hits="6"></line>
            <line number="227" hits="6"></line>
            <line number="228" hits="0"></line>
            <line number="229" hits="0"></line>
            <line number="231" hits="6"></line>
            <line number="234" hits="4"></line>
            <line number="235" hits="0"></line>
            <line number="236" hits="0"></line>
            <line number="238" hits="4"></line>
            <line number="243" hits="5"></line>
            <line number="244" hits="5"></line>
            <line number="245" hits="5"></line>
            <line number="246" hits="5"></line>
            <line number="247" hits="5"></line>
            <line number="248" hits="5"></line>
            <line number="249" hits="5"></line>
            <line number="250" hits="5"></line>
            <line number="251" hits="5"></line>
            <line number="252" hits="2"></line>
            <line number="253" hits="2"></line>
            <line number="255" hits="5"></line>
            <line number="256" hits="5"></line>
            <line number="257" hits="5"></line>
            <line number="258" hits="5"></line>
            <line number="259" hits="5"></line>
            <line number="260" hits="5"></line>
            <line number="261" hits="5"></line>
            <line number="262" hits="0"></line>
            <line number="263" hits="0"></line>
            <line number="264" hits="5"></line>
            <line number="266" hits="5"></line>
            <line number="267" hits="5"></line>
            <line number="268" hits="5"></line>
            <line number="269" hits="7"></line>
            <line number="270" hits="7"></line>
            <line number="271" hits="7"></line>
            <line number="272" hits="7"></line>
            <line number="273" hits="7"></line>
            <line number="274" hits="7"></line>
            <line number="275" hits="7"></line>
            <line number="276" hits="7"></line>
            <line number="277" hits="7"></line>
            <line number="278" hits="7"></line>
            <line number="279" hits="7"></line>
            <line number="280" hits="0"></line>
            <line number="281" hits="0"></line>
            <line number="283" hits="7"></line>
            <line number="284" hits="7"></line>
            <line number="287" hits="5"></line>
            <line number="288" hits="0"></line>
            <line number="289" hits="0"></line>
            <line number="291" hits="5"></line>
            <line number="353" hits="13"></line>
            <line number="354" hits="13"></line>
            <line number="355" hits="13"></line>
            <line number="356" hits="13"></line>
            <line number="357" hits="0"></line>
            <line number="358" hits="0"></line>
            <line number="359" hits="13"></line>
            <line number="361" hits="13"></line>
            <line number="362" hits="13"></line>
            <line number="363" hits="13"></line>
            <line number="364" hits="28"></line>
            <line number="365" hits="28"></line>
            <line number="366" hits="0"></line>
            <line number="367" hits="0"></line>
            <line number="369" hits="28"></line>
            <line number="372" hits="13"></line>
            <line number="373" hits="0"></line>
            <line number="374" hits="0"></line>
            <line number="376" hits="13"></line>
            <line number="377" hits="13"></line>
            <line number="378" hits="1"></line>
            <line number="379" hits="1"></line>
            <line number="381" hits="13"></line>
            <line number="382" hits="0"></line>
            <line number="383" hits="0"></line>
            <line number="385" hits="13"></line>
            <line number="412" hits="13"></line>
            <line number="413" hits="2"></line>
            <line number="414" hits="2"></line>
            <line number="416" hits="11"></line>
            <line number="417" hits="11"></line>
            <line number="418" hits="11"></line>
            <line number="419" hits="11"></line>
            <line number="420" hits="27"></line>
            <line number="421" hits="27"></line>
            <line number="422" hits="27"></line>
            <line number="427" hits="11"></line>
            <line number="428" hits="11"></line>
            <line number="429" hits="0"></line>
            <line number="430" hits="0"></line>
            <line number="432" hits="11"></line>
            <line number="433" hits="11"></line>
            <line number="434" hits="11"></line>
            <line number="435" hits="11"></line>
            <line number="436" hits="11"></line>
            <line number="437" hits="11"></line>
            <line number="438" hits="11"></line>
            <line number="439" hits="11"></line>
            <line number="440" hits="0"></line>
            <line number="441" hits="0"></line>
            <line number="442" hits="11"></line>
            <line number="444" hits="11"></line>
            <line number="445" hits="10"></line>
            <line number="446" hits="10"></line>
            <line number="447" hits="10"></line>
            <line number="448" hits="10"></line>
            <line number="449" hits="10"></line>
            <line number="450" hits="10"></line>
            <line number="451" hits="10"></line>
            <line number="452" hits="0"></line>
            <line number="453" hits="0"></line>
            <line number="455" hits="10"></line>
            <line number="456" hits="10"></line>
            <line number="459" hits="11"></line>
            <line number="460" hits="0"></line>
            <line number="461" hits="0"></line>
            <line number="463" hits="11"></line>
            <line number="468" hits="2"></line>
            <line number="469" hits="2"></line>
            <line number="470" hits="2"></line>
            <line number="471" hits="2"></line>
            <line number="472" hits="2"></line>
            <line number="473" hits="2"></line>
            <line number="474" hits="2"></line>
            <line number="475" hits="2"></line>
            <line number="476" hits="2"></line>
            <line number="477" hits="0"></line>
            <line number="478" hits="0"></line>
            <line number="479" hits="2"></line>
            <line number="481" hits="2"></line>
            <line number="516" hits="1"></line>
            <line number="517" hits="1"></line>
            <line number="518" hits="1"></line>
            <line number="519" hits="1"></line>
            <line number="520" hits="1"></line>
            <line number="521" hits="1"></line>
            <line number="522" hits="1"></line>
            <line number="523" hits="1"></line>
            <line number="524" hits="1"></line>
            <line number="525" hits="1"></line>
            <line number="526" hits="1"></line>
            <line number="527" hits="1"></line>
            <line number="528" hits="0"></line>
            <line number="529" hits="0"></line>
            <line number="530" hits="1"></line>
            <line number="532" hits="1"></line>
            <line number="533" hits="1"></line>
            <line number="534" hits="1"></line>
            <line number="535" hits="2"></line>
            <line number="536" hits="2"></line>
            <line number="537" hits="2"></line>
            <line number="538" hits="2"></line>
            <line number="539" hits="2"></line>
            <line number="540" hits="2"></line>
            <line number="541" hits="0"></line>
            <line number="542" hits="0"></line>
            <line number="544" hits="2"></line>
            <line number="545" hits="0"></line>
            <line number="548" hits="2"></line>
            <line number="549" hits="2"></line>
            <line number="550" hits="2"></line>
            <line number="551" hits="2"></line>
            <line number="554" hits="1"></line>
            <line number="555" hits="0"></line>
            <line number="556" hits="0"></line>
            <line number="558" hits="1"></line>
          </lines>
        </class>
      </classes>
    </package>
    <package name="github.com/alrayyes/pipeline-analytics/internal/settings" line-rate="0.9245283" branch-rate="0" complexity="0">
      <classes>
        <class name="-" filename="internal/settings/service.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="NewService" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="17" hits="14"></line>
                <line number="18" hits="14"></line>
              </lines>
            </method>
            <method name="resolve" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="76" hits="22"></line>
                <line number="77" hits="22"></line>
                <line number="78" hits="22"></line>
                <line number="79" hits="22"></line>
                <line number="80" hits="22"></line>
                <line number="81" hits="22"></line>
                <line number="82" hits="22"></line>
                <line number="83" hits="22"></line>
                <line number="84" hits="22"></line>
                <line number="85" hits="22"></line>
              </lines>
            </method>
            <method name="valueOr" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="89" hits="132"></line>
                <line number="90" hits="23"></line>
                <line number="91" hits="23"></line>
                <line number="93" hits="109"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="17" hits="14"></line>
            <line number="18" hits="14"></line>
            <line number="76" hits="22"></line>
            <line number="77" hits="22"></line>
            <line number="78" hits="22"></line>
            <line number="79" hits="22"></line>
            <line number="80" hits="22"></line>
            <line number="81" hits="22"></line>
            <line number="82" hits="22"></line>
            <line number="83" hits="22"></line>
            <line number="84" hits="22"></line>
            <line number="85" hits="22"></line>
            <line number="89" hits="132"></line>
            <line number="90" hits="23"></line>
            <line number="91" hits="23"></line>
            <line number="93" hits="109"></line>
          </lines>
        </class>
        <class name="Service" filename="internal/settings/service.go" line-rate="0.8518519" branch-rate="0" complexity="0">
          <methods>
            <method name="Get" signature="" line-rate="0.6" branch-rate="0" complexity="0">
              <lines>
                <line number="23" hits="8"></line>
                <line number="24" hits="8"></line>
                <line number="25" hits="0"></line>
                <line number="26" hits="0"></line>
                <line number="28" hits="8"></line>
              </lines>
            </method>
            <method name="Update" signature="" line-rate="0.88235295" branch-rate="0" complexity="0">
              <lines>
                <line number="36" hits="22"></line>
                <line number="37" hits="29"></line>
                <line number="38" hits="1"></line>
                <line number="39" hits="1"></line>
                <line number="41" hits="28"></line>
                <line number="42" hits="4"></line>
                <line number="45" hits="24"></line>
                <line number="46" hits="6"></line>
                <line number="47" hits="6"></line>
                <line number="49" hits="18"></line>
                <line number="50" hits="1"></line>
                <line number="51" hits="1"></line>
                <line number="54" hits="14"></line>
                <line number="55" hits="14"></line>
                <line number="56" hits="0"></line>
                <line number="57" hits="0"></line>
                <line number="59" hits="14"></line>
              </lines>
            </method>
            <method name="ResetPipelinesFilters" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="67" hits="1"></line>
                <line number="68" hits="1"></line>
                <line number="69" hits="3"></line>
                <line number="70" hits="3"></line>
                <line number="72" hits="1"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="23" hits="8"></line>
            <line number="24" hits="8"></line>
            <line number="25" hits="0"></line>
            <line number="26" hits="0"></line>
            <line number="28" hits="8"></line>
            <line number="36" hits="22"></line>
            <line number="37" hits="29"></line>
            <line number="38" hits="1"></line>
            <line number="39" hits="1"></line>
            <line number="41" hits="28"></line>
            <line number="42" hits="4"></line>
            <line number="45" hits="24"></line>
            <line number="46" hits="6"></line>
            <line number="47" hits="6"></line>
            <line number="49" hits="18"></line>
            <line number="50" hits="1"></line>
            <line number="51" hits="1"></line>
            <line number="54" hits="14"></line>
            <line number="55" hits="14"></line>
            <line number="56" hits="0"></line>
            <line number="57" hits="0"></line>
            <line number="59" hits="14"></line>
            <line number="67" hits="1"></line>
            <line number="68" hits="1"></line>
            <line number="69" hits="3"></line>
            <line number="70" hits="3"></line>
            <line number="72" hits="1"></line>
          </lines>
        </class>
        <class name="-" filename="internal/settings/settings.go" line-rate="1" branch-rate="0" complexity="0">
          <methods>
            <method name="AllowedValues" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="76" hits="4"></line>
                <line number="77" hits="4"></line>
              </lines>
            </method>
            <method name="Defaults" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="106" hits="22"></line>
                <line number="107" hits="22"></line>
                <line number="108" hits="22"></line>
                <line number="109" hits="22"></line>
                <line number="110" hits="22"></line>
                <line number="111" hits="22"></line>
                <line number="112" hits="22"></line>
                <line number="113" hits="22"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="76" hits="4"></line>
            <line number="77" hits="4"></line>
            <line number="106" hits="22"></line>
            <line number="107" hits="22"></line>
            <line number="108" hits="22"></line>
            <line number="109" hits="22"></line>
            <line number="110" hits="22"></line>
            <line number="111" hits="22"></line>
            <line number="112" hits="22"></line>
            <line number="113" hits="22"></line>
          </lines>
        </class>
      </classes>
    </package>
    <package name="github.com/alrayyes/pipeline-analytics/internal/settings/sqlite" line-rate="0.69491524" branch-rate="0" complexity="0">
      <classes>
        <class name="-" filename="internal/settings/sqlite/store.go" line-rate="0.6923077" branch-rate="0" complexity="0">
          <methods>
            <method name="NewStore" signature="" line-rate="1" branch-rate="0" complexity="0">
              <lines>
                <line number="19" hits="6"></line>
                <line number="20" hits="6"></line>
              </lines>
            </method>
            <method name="decode" signature="" line-rate="0.6363636" branch-rate="0" complexity="0">
              <lines>
                <line number="90" hits="9"></line>
                <line number="91" hits="5"></line>
                <line number="92" hits="5"></line>
                <line number="94" hits="4"></line>
                <line number="95" hits="4"></line>
                <line number="96" hits="0"></line>
                <line number="97" hits="0"></line>
                <line number="99" hits="4"></line>
                <line number="100" hits="0"></line>
                <line number="101" hits="0"></line>
                <line number="103" hits="4"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="19" hits="6"></line>
            <line number="20" hits="6"></line>
            <line number="90" hits="9"></line>
            <line number="91" hits="5"></line>
            <line number="92" hits="5"></line>
            <line number="94" hits="4"></line>
            <line number="95" hits="4"></line>
            <line number="96" hits="0"></line>
            <line number="97" hits="0"></line>
            <line number="99" hits="4"></line>
            <line number="100" hits="0"></line>
            <line number="101" hits="0"></line>
            <line number="103" hits="4"></line>
          </lines>
        </class>
        <class name="Store" filename="internal/settings/sqlite/store.go" line-rate="0.6956522" branch-rate="0" complexity="0">
          <methods>
            <method name="Get" signature="" line-rate="0.8" branch-rate="0" complexity="0">
              <lines>
                <line number="24" hits="3"></line>
                <line number="25" hits="3"></line>
                <line number="26" hits="3"></line>
                <line number="27" hits="3"></line>
                <line number="28" hits="1"></line>
                <line number="29" hits="1"></line>
                <line number="31" hits="2"></line>
                <line number="32" hits="0"></line>
                <line number="33" hits="0"></line>
                <line number="35" hits="2"></line>
              </lines>
            </method>
            <method name="Patch" signature="" line-rate="0.6666667" branch-rate="0" complexity="0">
              <lines>
                <line number="40" hits="7"></line>
                <line number="41" hits="7"></line>
                <line number="42" hits="0"></line>
                <line number="43" hits="0"></line>
                <line number="44" hits="7"></line>
                <line number="46" hits="7"></line>
                <line number="47" hits="7"></line>
                <line number="48" hits="7"></line>
                <line number="49" hits="7"></line>
                <line number="50" hits="0"></line>
                <line number="51" hits="0"></line>
                <line number="53" hits="7"></line>
                <line number="54" hits="7"></line>
                <line number="55" hits="0"></line>
                <line number="56" hits="0"></line>
                <line number="58" hits="7"></line>
                <line number="59" hits="9"></line>
                <line number="60" hits="1"></line>
                <line number="61" hits="1"></line>
                <line number="62" hits="8"></line>
                <line number="63" hits="8"></line>
                <line number="66" hits="7"></line>
                <line number="67" hits="7"></line>
                <line number="68" hits="0"></line>
                <line number="69" hits="0"></line>
                <line number="71" hits="7"></line>
                <line number="72" hits="7"></line>
                <line number="73" hits="7"></line>
                <line number="74" hits="7"></line>
                <line number="75" hits="7"></line>
                <line number="76" hits="0"></line>
                <line number="77" hits="0"></line>
                <line number="79" hits="7"></line>
                <line number="80" hits="0"></line>
                <line number="81" hits="0"></line>
                <line number="83" hits="7"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="24" hits="3"></line>
            <line number="25" hits="3"></line>
            <line number="26" hits="3"></line>
            <line number="27" hits="3"></line>
            <line number="28" hits="1"></line>
            <line number="29" hits="1"></line>
            <line number="31" hits="2"></line>
            <line number="32" hits="0"></line>
            <line number="33" hits="0"></line>
            <line number="35" hits="2"></line>
            <line number="40" hits="7"></line>
            <line number="41" hits="7"></line>
            <line number="42" hits="0"></line>
            <line number="43" hits="0"></line>
            <line number="44" hits="7"></line>
            <line number="46" hits="7"></line>
            <line number="47" hits="7"></line>
            <line number="48" hits="7"></line>
            <line number="49" hits="7"></line>
            <line number="50" hits="0"></line>
            <line number="51" hits="0"></line>
            <line number="53" hits="7"></line>
            <line number="54" hits="7"></line>
            <line number="55" hits="0"></line>
            <line number="56" hits="0"></line>
            <line number="58" hits="7"></line>
            <line number="59" hits="9"></line>
            <line number="60" hits="1"></line>
            <line number="61" hits="1"></line>
            <line number="62" hits="8"></line>
            <line number="63" hits="8"></line>
            <line number="66" hits="7"></line>
            <line number="67" hits="7"></line>
            <line number="68" hits="0"></line>
            <line number="69" hits="0"></line>
            <line number="71" hits="7"></line>
            <line number="72" hits="7"></line>
            <line number="73" hits="7"></line>
            <line number="74" hits="7"></line>
            <line number="75" hits="7"></line>
            <line number="76" hits="0"></line>
            <line number="77" hits="0"></line>
            <line number="79" hits="7"></line>
            <line number="80" hits="0"></line>
            <line number="81" hits="0"></line>
            <line number="83" hits="7"></line>
          </lines>
        </class>
      </classes>
    </package>
    <package name="github.com/alrayyes/pipeline-analytics/internal/webassets" line-rate="0" branch-rate="0" complexity="0">
      <classes>
        <class name="-" filename="internal/webassets/webassets.go" line-rate="0" branch-rate="0" complexity="0">
          <methods>
            <method name="FS" signature="" line-rate="0" branch-rate="0" complexity="0">
              <lines>
                <line number="20" hits="0"></line>
                <line number="21" hits="0"></line>
                <line number="22" hits="0"></line>
                <line number="23" hits="0"></line>
                <line number="25" hits="0"></line>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="20" hits="0"></line>
            <line number="21" hits="0"></line>
            <line number="22" hits="0"></line>
            <line number="23" hits="0"></line>
            <line number="25" hits="0"></line>
          </lines>
        </class>
      </classes>
    </package>
  </packages>
</coverage>
