<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1791276190">
  <project timestamp="1791276190">
    <file name="/workspace/src/extensions/UrlShortener/includes/ApiShortenUrl.php">
      <class name="MediaWiki\Extension\UrlShortener\ApiShortenUrl" namespace="global">
        <metrics complexity="21" methods="7" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="66" coveredstatements="51" elements="73" coveredelements="53"/>
      </class>
      <line num="29" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="36" type="stmt" count="2"/>
      <line num="38" type="stmt" count="2"/>
      <line num="39" type="stmt" count="2"/>
      <line num="40" type="stmt" count="2"/>
      <line num="41" type="stmt" count="2"/>
      <line num="44" type="method" name="execute" visibility="public" complexity="9" crap="9.17" count="2"/>
      <line num="45" type="stmt" count="2"/>
      <line num="47" type="stmt" count="2"/>
      <line num="49" type="stmt" count="2"/>
      <line num="51" type="stmt" count="2"/>
      <line num="52" type="stmt" count="2"/>
      <line num="53" type="stmt" count="0"/>
      <line num="56" type="stmt" count="2"/>
      <line num="57" type="stmt" count="2"/>
      <line num="58" type="stmt" count="2"/>
      <line num="60" type="stmt" count="2"/>
      <line num="61" type="stmt" count="0"/>
      <line num="63" type="stmt" count="2"/>
      <line num="64" type="stmt" count="2"/>
      <line num="65" type="stmt" count="0"/>
      <line num="67" type="stmt" count="2"/>
      <line num="68" type="stmt" count="2"/>
      <line num="69" type="stmt" count="2"/>
      <line num="70" type="stmt" count="2"/>
      <line num="71" type="stmt" count="2"/>
      <line num="75" type="stmt" count="2"/>
      <line num="76" type="stmt" count="1"/>
      <line num="77" type="stmt" count="1"/>
      <line num="78" type="stmt" count="0"/>
      <line num="80" type="stmt" count="1"/>
      <line num="81" type="stmt" count="1"/>
      <line num="82" type="stmt" count="1"/>
      <line num="83" type="stmt" count="1"/>
      <line num="87" type="stmt" count="2"/>
      <line num="90" type="stmt" count="2"/>
      <line num="91" type="stmt" count="2"/>
      <line num="93" type="stmt" count="2"/>
      <line num="99" type="method" name="recordInStats" visibility="private" complexity="4" crap="4.03" count="2"/>
      <line num="100" type="stmt" count="2"/>
      <line num="101" type="stmt" count="1"/>
      <line num="102" type="stmt" count="1"/>
      <line num="103" type="stmt" count="0"/>
      <line num="105" type="stmt" count="1"/>
      <line num="108" type="stmt" count="2"/>
      <line num="109" type="stmt" count="2"/>
      <line num="110" type="stmt" count="2"/>
      <line num="117" type="method" name="checkUserRights" visibility="public" complexity="2" crap="3.69" count="2"/>
      <line num="118" type="stmt" count="2"/>
      <line num="119" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="126" type="method" name="mustBePosted" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="127" type="stmt" count="0"/>
      <line num="143" type="method" name="getAllowedParams" visibility="protected" complexity="2" crap="2" count="2"/>
      <line num="144" type="stmt" count="2"/>
      <line num="145" type="stmt" count="2"/>
      <line num="146" type="stmt" count="2"/>
      <line num="147" type="stmt" count="2"/>
      <line num="148" type="stmt" count="2"/>
      <line num="149" type="stmt" count="2"/>
      <line num="150" type="stmt" count="2"/>
      <line num="151" type="stmt" count="2"/>
      <line num="152" type="stmt" count="2"/>
      <line num="153" type="stmt" count="2"/>
      <line num="155" type="stmt" count="2"/>
      <line num="161" type="method" name="getExamplesMessages" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="162" type="stmt" count="0"/>
      <line num="163" type="stmt" count="0"/>
      <line num="164" type="stmt" count="0"/>
      <line num="165" type="stmt" count="0"/>
      <line num="166" type="stmt" count="0"/>
      <line num="167" type="stmt" count="0"/>
      <metrics loc="170" ncloc="141" classes="1" methods="7" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="66" coveredstatements="51" elements="73" coveredelements="53"/>
    </file>
    <file name="/workspace/src/extensions/UrlShortener/includes/Hooks.php">
      <class name="MediaWiki\Extension\UrlShortener\Hooks" namespace="global">
        <metrics complexity="28" methods="7" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="54" coveredstatements="0" elements="61" coveredelements="0"/>
      </class>
      <line num="41" type="method" name="__construct" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="63" type="method" name="onWebRequestPathInfoRouter" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="77" type="method" name="onRegistration" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="104" type="method" name="onBeforePageDisplay" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="121" type="method" name="onSidebarBeforeOutput" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="123" type="stmt" count="0"/>
      <line num="126" type="stmt" count="0"/>
      <line num="127" type="stmt" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="129" type="stmt" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <line num="133" type="stmt" count="0"/>
      <line num="134" type="stmt" count="0"/>
      <line num="135" type="stmt" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="146" type="method" name="onSkinTemplateNavigation__Universal" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="147" type="stmt" count="0"/>
      <line num="148" type="stmt" count="0"/>
      <line num="151" type="stmt" count="0"/>
      <line num="153" type="stmt" count="0"/>
      <line num="155" type="stmt" count="0"/>
      <line num="157" type="stmt" count="0"/>
      <line num="158" type="stmt" count="0"/>
      <line num="159" type="stmt" count="0"/>
      <line num="160" type="stmt" count="0"/>
      <line num="164" type="method" name="getFullUrl" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="165" type="stmt" count="0"/>
      <line num="167" type="stmt" count="0"/>
      <line num="169" type="stmt" count="0"/>
      <metrics loc="172" ncloc="132" classes="1" methods="7" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="54" coveredstatements="0" elements="61" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/UrlShortener/includes/SchemaHooks.php">
      <class name="MediaWiki\Extension\UrlShortener\SchemaHooks" namespace="global">
        <metrics complexity="4" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="0" elements="16" coveredelements="0"/>
      </class>
      <line num="19" type="method" name="onLoadExtensionSchemaUpdates" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <metrics loc="43" ncloc="32" classes="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="0" elements="16" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/UrlShortener/includes/ServiceWiring.php">
      <line num="7" type="stmt" count="0"/>
      <line num="8" type="stmt" count="0"/>
      <line num="9" type="stmt" count="0"/>
      <line num="10" type="stmt" count="0"/>
      <line num="11" type="stmt" count="0"/>
      <line num="12" type="stmt" count="0"/>
      <line num="13" type="stmt" count="0"/>
      <line num="14" type="stmt" count="0"/>
      <line num="15" type="stmt" count="0"/>
      <metrics loc="16" ncloc="16" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="0" elements="9" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/UrlShortener/includes/SpecialLegacyShortUrl.php">
      <class name="MediaWiki\Extension\UrlShortener\SpecialLegacyShortUrl" namespace="global">
        <metrics complexity="9" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="30" coveredstatements="22" elements="34" coveredelements="22"/>
      </class>
      <line num="48" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="55" type="method" name="execute" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="81" type="method" name="decodeURL" visibility="public" complexity="5" crap="5" count="5"/>
      <line num="82" type="stmt" count="5"/>
      <line num="83" type="stmt" count="5"/>
      <line num="85" type="stmt" count="0"/>
      <line num="88" type="stmt" count="5"/>
      <line num="90" type="stmt" count="5"/>
      <line num="91" type="stmt" count="5"/>
      <line num="92" type="stmt" count="5"/>
      <line num="93" type="stmt" count="5"/>
      <line num="94" type="stmt" count="5"/>
      <line num="95" type="stmt" count="5"/>
      <line num="96" type="stmt" count="5"/>
      <line num="97" type="stmt" count="5"/>
      <line num="98" type="stmt" count="5"/>
      <line num="99" type="stmt" count="5"/>
      <line num="100" type="stmt" count="5"/>
      <line num="101" type="stmt" count="5"/>
      <line num="102" type="stmt" count="5"/>
      <line num="103" type="stmt" count="5"/>
      <line num="104" type="stmt" count="5"/>
      <line num="106" type="stmt" count="5"/>
      <line num="107" type="stmt" count="5"/>
      <line num="108" type="stmt" count="5"/>
      <line num="110" type="stmt" count="5"/>
      <line num="116" type="method" name="getGroupName" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <metrics loc="120" ncloc="63" classes="1" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="30" coveredstatements="22" elements="34" coveredelements="22"/>
    </file>
    <file name="/workspace/src/extensions/UrlShortener/includes/SpecialManageShortUrls.php">
      <class name="MediaWiki\Extension\UrlShortener\SpecialManageShortUrls" namespace="global">
        <metrics complexity="23" methods="11" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="71" coveredstatements="0" elements="82" coveredelements="0"/>
      </class>
      <line num="21" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="28" type="method" name="getRestriction" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="35" type="method" name="execute" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="50" type="method" name="getDisplayFormat" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="57" type="method" name="getFormFields" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="85" type="method" name="isListed" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="94" type="method" name="onSubmit" visibility="public" complexity="12" crap="156" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="110" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="123" type="stmt" count="0"/>
      <line num="127" type="stmt" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="129" type="stmt" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <line num="133" type="stmt" count="0"/>
      <line num="135" type="stmt" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="137" type="stmt" count="0"/>
      <line num="138" type="stmt" count="0"/>
      <line num="139" type="stmt" count="0"/>
      <line num="140" type="stmt" count="0"/>
      <line num="141" type="stmt" count="0"/>
      <line num="143" type="stmt" count="0"/>
      <line num="146" type="stmt" count="0"/>
      <line num="152" type="method" name="checkExecutePermissions" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="153" type="stmt" count="0"/>
      <line num="154" type="stmt" count="0"/>
      <line num="160" type="method" name="doesWrites" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="161" type="stmt" count="0"/>
      <line num="167" type="method" name="getGroupName" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="168" type="stmt" count="0"/>
      <line num="171" type="method" name="onSuccess" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="172" type="stmt" count="0"/>
      <line num="173" type="stmt" count="0"/>
      <metrics loc="176" ncloc="136" classes="1" methods="11" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="71" coveredstatements="0" elements="82" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/UrlShortener/includes/SpecialQrCode.php">
      <class name="MediaWiki\Extension\UrlShortener\SpecialQrCode" namespace="global">
        <metrics complexity="4" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="8" coveredstatements="0" elements="11" coveredelements="0"/>
      </class>
      <line num="18" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="30" type="method" name="execute" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="41" type="method" name="isListed" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <metrics loc="45" ncloc="33" classes="1" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="8" coveredstatements="0" elements="11" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/UrlShortener/includes/SpecialUrlRedirector.php">
      <class name="MediaWiki\Extension\UrlShortener\SpecialUrlRedirector" namespace="global">
        <metrics complexity="4" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="14" coveredstatements="0" elements="16" coveredelements="0"/>
      </class>
      <line num="10" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="13" type="stmt" count="0"/>
      <line num="19" type="method" name="execute" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <metrics loc="48" ncloc="37" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="14" coveredstatements="0" elements="16" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/UrlShortener/includes/SpecialUrlShortener.php">
      <class name="MediaWiki\Extension\UrlShortener\SpecialUrlShortener" namespace="global">
        <metrics complexity="31" methods="17" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="142" coveredstatements="0" elements="159" coveredelements="0"/>
      </class>
      <line num="35" type="method" name="__construct" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="47" type="method" name="getRestriction" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="54" type="method" name="execute" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="82" type="method" name="displayRestrictionError" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="89" type="method" name="getDisplayFormat" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="93" type="method" name="getApprovedDomainsMessage" visibility="protected" complexity="2" crap="6" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="111" type="method" name="alterForm" visibility="protected" complexity="4" crap="20" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="123" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="125" type="stmt" count="0"/>
      <line num="126" type="stmt" count="0"/>
      <line num="127" type="stmt" count="0"/>
      <line num="129" type="stmt" count="0"/>
      <line num="130" type="stmt" count="0"/>
      <line num="140" type="method" name="validateURL" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="142" type="stmt" count="0"/>
      <line num="144" type="stmt" count="0"/>
      <line num="146" type="stmt" count="0"/>
      <line num="147" type="stmt" count="0"/>
      <line num="148" type="stmt" count="0"/>
      <line num="150" type="stmt" count="0"/>
      <line num="157" type="method" name="getFormFields" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="158" type="stmt" count="0"/>
      <line num="159" type="stmt" count="0"/>
      <line num="160" type="stmt" count="0"/>
      <line num="161" type="stmt" count="0"/>
      <line num="162" type="stmt" count="0"/>
      <line num="163" type="stmt" count="0"/>
      <line num="164" type="stmt" count="0"/>
      <line num="165" type="stmt" count="0"/>
      <line num="166" type="stmt" count="0"/>
      <line num="167" type="stmt" count="0"/>
      <line num="168" type="stmt" count="0"/>
      <line num="169" type="stmt" count="0"/>
      <line num="170" type="stmt" count="0"/>
      <line num="171" type="stmt" count="0"/>
      <line num="172" type="stmt" count="0"/>
      <line num="173" type="stmt" count="0"/>
      <line num="174" type="stmt" count="0"/>
      <line num="175" type="stmt" count="0"/>
      <line num="181" type="method" name="getSubpageField" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="182" type="stmt" count="0"/>
      <line num="193" type="method" name="onSubmit" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="194" type="stmt" count="0"/>
      <line num="195" type="stmt" count="0"/>
      <line num="196" type="stmt" count="0"/>
      <line num="197" type="stmt" count="0"/>
      <line num="200" type="stmt" count="0"/>
      <line num="202" type="stmt" count="0"/>
      <line num="203" type="stmt" count="0"/>
      <line num="204" type="stmt" count="0"/>
      <line num="205" type="stmt" count="0"/>
      <line num="208" type="stmt" count="0"/>
      <line num="209" type="stmt" count="0"/>
      <line num="210" type="stmt" count="0"/>
      <line num="211" type="stmt" count="0"/>
      <line num="212" type="stmt" count="0"/>
      <line num="213" type="stmt" count="0"/>
      <line num="214" type="stmt" count="0"/>
      <line num="215" type="stmt" count="0"/>
      <line num="218" type="stmt" count="0"/>
      <line num="219" type="stmt" count="0"/>
      <line num="225" type="method" name="getQrCodeHtml" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="226" type="stmt" count="0"/>
      <line num="227" type="stmt" count="0"/>
      <line num="228" type="stmt" count="0"/>
      <line num="229" type="stmt" count="0"/>
      <line num="230" type="stmt" count="0"/>
      <line num="231" type="stmt" count="0"/>
      <line num="232" type="stmt" count="0"/>
      <line num="233" type="stmt" count="0"/>
      <line num="234" type="stmt" count="0"/>
      <line num="235" type="stmt" count="0"/>
      <line num="236" type="stmt" count="0"/>
      <line num="237" type="stmt" count="0"/>
      <line num="240" type="method" name="getDownloadButton" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="242" type="stmt" count="0"/>
      <line num="243" type="stmt" count="0"/>
      <line num="244" type="stmt" count="0"/>
      <line num="245" type="stmt" count="0"/>
      <line num="246" type="stmt" count="0"/>
      <line num="247" type="stmt" count="0"/>
      <line num="248" type="stmt" count="0"/>
      <line num="249" type="stmt" count="0"/>
      <line num="250" type="stmt" count="0"/>
      <line num="251" type="stmt" count="0"/>
      <line num="252" type="stmt" count="0"/>
      <line num="254" type="stmt" count="0"/>
      <line num="257" type="method" name="setShortenedUrlResultField" visibility="protected" complexity="2" crap="6" count="0"/>
      <line num="258" type="stmt" count="0"/>
      <line num="259" type="stmt" count="0"/>
      <line num="261" type="stmt" count="0"/>
      <line num="262" type="stmt" count="0"/>
      <line num="263" type="stmt" count="0"/>
      <line num="264" type="stmt" count="0"/>
      <line num="265" type="stmt" count="0"/>
      <line num="266" type="stmt" count="0"/>
      <line num="267" type="stmt" count="0"/>
      <line num="268" type="stmt" count="0"/>
      <line num="269" type="stmt" count="0"/>
      <line num="270" type="stmt" count="0"/>
      <line num="271" type="stmt" count="0"/>
      <line num="272" type="stmt" count="0"/>
      <line num="273" type="stmt" count="0"/>
      <line num="274" type="stmt" count="0"/>
      <line num="275" type="stmt" count="0"/>
      <line num="276" type="stmt" count="0"/>
      <line num="277" type="stmt" count="0"/>
      <line num="278" type="stmt" count="0"/>
      <line num="279" type="stmt" count="0"/>
      <line num="285" type="method" name="getGroupName" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="286" type="stmt" count="0"/>
      <line num="290" type="method" name="doesWrites" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="291" type="stmt" count="0"/>
      <line num="299" type="method" name="isListed" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="300" type="stmt" count="0"/>
      <metrics loc="303" ncloc="246" classes="1" methods="17" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="142" coveredstatements="0" elements="159" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/UrlShortener/includes/UrlShortenerUtils.php">
      <class name="MediaWiki\Extension\UrlShortener\UrlShortenerUtils" namespace="global">
        <metrics complexity="82" methods="23" coveredmethods="11" conditionals="0" coveredconditionals="0" statements="251" coveredstatements="213" elements="274" coveredelements="224"/>
      </class>
      <line num="32" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="47"/>
      <line num="37" type="stmt" count="47"/>
      <line num="67" type="method" name="maybeCreateShortCode" visibility="public" complexity="8" crap="10.37" count="9"/>
      <line num="68" type="stmt" count="9"/>
      <line num="70" type="stmt" count="9"/>
      <line num="71" type="stmt" count="1"/>
      <line num="74" type="stmt" count="8"/>
      <line num="77" type="stmt" count="0"/>
      <line num="80" type="stmt" count="8"/>
      <line num="81" type="stmt" count="8"/>
      <line num="82" type="stmt" count="1"/>
      <line num="83" type="stmt" count="1"/>
      <line num="84" type="stmt" count="1"/>
      <line num="87" type="stmt" count="7"/>
      <line num="88" type="stmt" count="0"/>
      <line num="91" type="stmt" count="7"/>
      <line num="92" type="stmt" count="7"/>
      <line num="93" type="stmt" count="7"/>
      <line num="94" type="stmt" count="7"/>
      <line num="95" type="stmt" count="7"/>
      <line num="96" type="stmt" count="7"/>
      <line num="97" type="stmt" count="7"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="107" type="stmt" count="7"/>
      <line num="108" type="stmt" count="7"/>
      <line num="109" type="stmt" count="7"/>
      <line num="110" type="stmt" count="7"/>
      <line num="111" type="stmt" count="7"/>
      <line num="112" type="stmt" count="7"/>
      <line num="114" type="stmt" count="7"/>
      <line num="115" type="stmt" count="7"/>
      <line num="118" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="123" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="128" type="stmt" count="7"/>
      <line num="130" type="stmt" count="7"/>
      <line num="131" type="stmt" count="7"/>
      <line num="132" type="stmt" count="7"/>
      <line num="133" type="stmt" count="7"/>
      <line num="144" type="method" name="normalizeUrl" visibility="public" complexity="6" crap="6" count="29"/>
      <line num="147" type="stmt" count="29"/>
      <line num="149" type="stmt" count="29"/>
      <line num="155" type="stmt" count="29"/>
      <line num="159" type="stmt" count="29"/>
      <line num="161" type="stmt" count="29"/>
      <line num="162" type="stmt" count="29"/>
      <line num="163" type="stmt" count="29"/>
      <line num="164" type="stmt" count="6"/>
      <line num="165" type="stmt" count="6"/>
      <line num="166" type="stmt" count="6"/>
      <line num="168" type="stmt" count="2"/>
      <line num="169" type="stmt" count="2"/>
      <line num="174" type="stmt" count="29"/>
      <line num="176" type="stmt" count="29"/>
      <line num="178" type="stmt" count="29"/>
      <line num="188" type="method" name="convertToProtocol" visibility="public" complexity="1" crap="1" count="35"/>
      <line num="189" type="stmt" count="35"/>
      <line num="190" type="stmt" count="35"/>
      <line num="191" type="stmt" count="35"/>
      <line num="193" type="stmt" count="35"/>
      <line num="203" type="method" name="getURL" visibility="public" complexity="3" crap="3.01" count="3"/>
      <line num="204" type="stmt" count="3"/>
      <line num="205" type="stmt" count="3"/>
      <line num="206" type="stmt" count="0"/>
      <line num="209" type="stmt" count="3"/>
      <line num="210" type="stmt" count="3"/>
      <line num="211" type="stmt" count="3"/>
      <line num="212" type="stmt" count="3"/>
      <line num="213" type="stmt" count="3"/>
      <line num="214" type="stmt" count="3"/>
      <line num="216" type="stmt" count="3"/>
      <line num="217" type="stmt" count="1"/>
      <line num="220" type="stmt" count="2"/>
      <line num="226" type="method" name="isURLDeleted" visibility="public" complexity="2" crap="2.00" count="1"/>
      <line num="227" type="stmt" count="1"/>
      <line num="228" type="stmt" count="1"/>
      <line num="229" type="stmt" count="0"/>
      <line num="232" type="stmt" count="1"/>
      <line num="233" type="stmt" count="1"/>
      <line num="234" type="stmt" count="1"/>
      <line num="235" type="stmt" count="1"/>
      <line num="236" type="stmt" count="1"/>
      <line num="237" type="stmt" count="1"/>
      <line num="239" type="stmt" count="1"/>
      <line num="248" type="method" name="deleteURL" visibility="public" complexity="2" crap="2.00" count="2"/>
      <line num="249" type="stmt" count="2"/>
      <line num="250" type="stmt" count="2"/>
      <line num="251" type="stmt" count="0"/>
      <line num="254" type="stmt" count="2"/>
      <line num="255" type="stmt" count="2"/>
      <line num="256" type="stmt" count="2"/>
      <line num="257" type="stmt" count="2"/>
      <line num="258" type="stmt" count="2"/>
      <line num="259" type="stmt" count="2"/>
      <line num="261" type="stmt" count="2"/>
      <line num="263" type="stmt" count="2"/>
      <line num="272" type="method" name="restoreURL" visibility="public" complexity="2" crap="2.00" count="1"/>
      <line num="273" type="stmt" count="1"/>
      <line num="274" type="stmt" count="1"/>
      <line num="275" type="stmt" count="0"/>
      <line num="278" type="stmt" count="1"/>
      <line num="279" type="stmt" count="1"/>
      <line num="280" type="stmt" count="1"/>
      <line num="281" type="stmt" count="1"/>
      <line num="282" type="stmt" count="1"/>
      <line num="283" type="stmt" count="1"/>
      <line num="285" type="stmt" count="1"/>
      <line num="287" type="stmt" count="1"/>
      <line num="296" type="method" name="cartesianProduct" visibility="public" complexity="4" crap="4" count="2"/>
      <line num="297" type="stmt" count="2"/>
      <line num="298" type="stmt" count="2"/>
      <line num="301" type="stmt" count="2"/>
      <line num="302" type="stmt" count="2"/>
      <line num="304" type="stmt" count="2"/>
      <line num="305" type="stmt" count="2"/>
      <line num="306" type="stmt" count="2"/>
      <line num="307" type="stmt" count="2"/>
      <line num="308" type="stmt" count="2"/>
      <line num="312" type="stmt" count="2"/>
      <line num="321" type="method" name="getShortcodeVariants" visibility="public" complexity="3" crap="3" count="1"/>
      <line num="323" type="stmt" count="1"/>
      <line num="326" type="stmt" count="1"/>
      <line num="327" type="stmt" count="1"/>
      <line num="328" type="stmt" count="1"/>
      <line num="332" type="stmt" count="1"/>
      <line num="333" type="stmt" count="1"/>
      <line num="334" type="stmt" count="1"/>
      <line num="335" type="stmt" count="1"/>
      <line num="336" type="stmt" count="1"/>
      <line num="337" type="stmt" count="1"/>
      <line num="341" type="stmt" count="1"/>
      <line num="344" type="stmt" count="1"/>
      <line num="350" type="method" name="purgeCdnId" visibility="public" complexity="3" crap="8.67" count="7"/>
      <line num="351" type="stmt" count="7"/>
      <line num="352" type="stmt" count="0"/>
      <line num="353" type="stmt" count="0"/>
      <line num="354" type="stmt" count="0"/>
      <line num="355" type="stmt" count="0"/>
      <line num="356" type="stmt" count="0"/>
      <line num="357" type="stmt" count="0"/>
      <line num="365" type="method" name="purgeCdn" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="366" type="stmt" count="0"/>
      <line num="367" type="stmt" count="0"/>
      <line num="368" type="stmt" count="0"/>
      <line num="372" type="method" name="getPrimaryDB" visibility="public" complexity="1" crap="1" count="7"/>
      <line num="373" type="stmt" count="7"/>
      <line num="374" type="stmt" count="7"/>
      <line num="377" type="method" name="getReplicaDB" visibility="public" complexity="1" crap="1" count="7"/>
      <line num="378" type="stmt" count="7"/>
      <line num="379" type="stmt" count="7"/>
      <line num="388" type="method" name="makeUrl" visibility="public" complexity="3" crap="3.01" count="4"/>
      <line num="389" type="stmt" count="4"/>
      <line num="390" type="stmt" count="4"/>
      <line num="391" type="stmt" count="0"/>
      <line num="394" type="stmt" count="4"/>
      <line num="395" type="stmt" count="4"/>
      <line num="396" type="stmt" count="1"/>
      <line num="399" type="stmt" count="1"/>
      <line num="400" type="stmt" count="1"/>
      <line num="402" type="stmt" count="3"/>
      <line num="405" type="stmt" count="4"/>
      <line num="408" type="stmt" count="4"/>
      <line num="416" type="method" name="getAllowedDomainsRegex" visibility="public" complexity="2" crap="2" count="3"/>
      <line num="417" type="stmt" count="3"/>
      <line num="418" type="stmt" count="3"/>
      <line num="420" type="stmt" count="2"/>
      <line num="422" type="stmt" count="2"/>
      <line num="425" type="stmt" count="1"/>
      <line num="436" type="method" name="validateUrl" visibility="public" complexity="12" crap="12.07" count="3"/>
      <line num="437" type="stmt" count="3"/>
      <line num="438" type="stmt" count="3"/>
      <line num="439" type="stmt" count="0"/>
      <line num="442" type="stmt" count="3"/>
      <line num="443" type="stmt" count="3"/>
      <line num="444" type="stmt" count="3"/>
      <line num="447" type="stmt" count="3"/>
      <line num="448" type="stmt" count="3"/>
      <line num="450" type="stmt" count="3"/>
      <line num="451" type="stmt" count="3"/>
      <line num="452" type="stmt" count="3"/>
      <line num="454" type="stmt" count="3"/>
      <line num="455" type="stmt" count="3"/>
      <line num="456" type="stmt" count="3"/>
      <line num="457" type="stmt" count="3"/>
      <line num="458" type="stmt" count="3"/>
      <line num="459" type="stmt" count="3"/>
      <line num="460" type="stmt" count="3"/>
      <line num="461" type="stmt" count="3"/>
      <line num="462" type="stmt" count="3"/>
      <line num="463" type="stmt" count="3"/>
      <line num="465" type="stmt" count="3"/>
      <line num="468" type="stmt" count="3"/>
      <line num="469" type="stmt" count="0"/>
      <line num="472" type="stmt" count="3"/>
      <line num="483" type="method" name="encodeId" visibility="public" complexity="4" crap="4" count="9"/>
      <line num="484" type="stmt" count="9"/>
      <line num="485" type="stmt" count="9"/>
      <line num="486" type="stmt" count="9"/>
      <line num="487" type="stmt" count="9"/>
      <line num="488" type="stmt" count="9"/>
      <line num="489" type="stmt" count="9"/>
      <line num="490" type="stmt" count="9"/>
      <line num="492" type="stmt" count="9"/>
      <line num="498" type="method" name="decodeId" visibility="public" complexity="12" crap="12" count="6"/>
      <line num="500" type="stmt" count="6"/>
      <line num="501" type="stmt" count="2"/>
      <line num="504" type="stmt" count="5"/>
      <line num="505" type="stmt" count="5"/>
      <line num="506" type="stmt" count="5"/>
      <line num="507" type="stmt" count="1"/>
      <line num="508" type="stmt" count="1"/>
      <line num="511" type="stmt" count="5"/>
      <line num="512" type="stmt" count="5"/>
      <line num="513" type="stmt" count="5"/>
      <line num="514" type="stmt" count="2"/>
      <line num="516" type="stmt" count="2"/>
      <line num="517" type="stmt" count="2"/>
      <line num="518" type="stmt" count="2"/>
      <line num="519" type="stmt" count="0"/>
      <line num="521" type="stmt" count="2"/>
      <line num="525" type="stmt" count="5"/>
      <line num="526" type="stmt" count="5"/>
      <line num="527" type="stmt" count="5"/>
      <line num="529" type="stmt" count="5"/>
      <line num="530" type="stmt" count="1"/>
      <line num="532" type="stmt" count="5"/>
      <line num="533" type="stmt" count="5"/>
      <line num="534" type="stmt" count="1"/>
      <line num="535" type="stmt" count="5"/>
      <line num="537" type="stmt" count="5"/>
      <line num="548" type="method" name="shouldShortenUrl" visibility="public" complexity="2" crap="2" count="8"/>
      <line num="549" type="stmt" count="8"/>
      <line num="562" type="method" name="getQrCode" visibility="public" complexity="5" crap="5.00" count="4"/>
      <line num="563" type="stmt" count="4"/>
      <line num="564" type="stmt" count="4"/>
      <line num="565" type="stmt" count="4"/>
      <line num="566" type="stmt" count="2"/>
      <line num="567" type="stmt" count="2"/>
      <line num="568" type="stmt" count="0"/>
      <line num="570" type="stmt" count="2"/>
      <line num="571" type="stmt" count="2"/>
      <line num="572" type="stmt" count="2"/>
      <line num="574" type="stmt" count="2"/>
      <line num="576" type="stmt" count="4"/>
      <line num="577" type="stmt" count="4"/>
      <line num="578" type="stmt" count="4"/>
      <line num="579" type="stmt" count="4"/>
      <line num="580" type="stmt" count="4"/>
      <line num="581" type="stmt" count="2"/>
      <line num="582" type="stmt" count="2"/>
      <line num="584" type="stmt" count="4"/>
      <line num="597" type="method" name="getQrCodeForShortCode" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="598" type="stmt" count="0"/>
      <line num="599" type="stmt" count="0"/>
      <line num="600" type="stmt" count="0"/>
      <line num="601" type="stmt" count="0"/>
      <line num="602" type="stmt" count="0"/>
      <line num="605" type="method" name="getQrCodeInternal" visibility="private" complexity="1" crap="1" count="4"/>
      <line num="606" type="stmt" count="4"/>
      <line num="607" type="stmt" count="4"/>
      <line num="608" type="stmt" count="4"/>
      <line num="609" type="stmt" count="4"/>
      <line num="610" type="stmt" count="4"/>
      <line num="611" type="stmt" count="4"/>
      <line num="612" type="stmt" count="4"/>
      <metrics loc="615" ncloc="444" classes="1" methods="23" coveredmethods="11" conditionals="0" coveredconditionals="0" statements="251" coveredstatements="213" elements="274" coveredelements="224"/>
    </file>
    <file name="/workspace/src/extensions/UrlShortener/maintenance/dumpURLs.php">
      <class name="DumpURLs" namespace="global">
        <metrics complexity="5" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="34" coveredstatements="33" elements="36" coveredelements="34"/>
      </class>
      <line num="20" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="21" type="stmt" count="1"/>
      <line num="22" type="stmt" count="1"/>
      <line num="23" type="stmt" count="1"/>
      <line num="24" type="stmt" count="1"/>
      <line num="25" type="stmt" count="1"/>
      <line num="26" type="stmt" count="1"/>
      <line num="29" type="method" name="execute" visibility="public" complexity="4" crap="4" count="1"/>
      <line num="30" type="stmt" count="1"/>
      <line num="31" type="stmt" count="1"/>
      <line num="32" type="stmt" count="1"/>
      <line num="33" type="stmt" count="1"/>
      <line num="34" type="stmt" count="1"/>
      <line num="35" type="stmt" count="1"/>
      <line num="36" type="stmt" count="0"/>
      <line num="38" type="stmt" count="1"/>
      <line num="40" type="stmt" count="1"/>
      <line num="41" type="stmt" count="1"/>
      <line num="42" type="stmt" count="1"/>
      <line num="43" type="stmt" count="1"/>
      <line num="44" type="stmt" count="1"/>
      <line num="45" type="stmt" count="1"/>
      <line num="46" type="stmt" count="1"/>
      <line num="47" type="stmt" count="1"/>
      <line num="48" type="stmt" count="1"/>
      <line num="49" type="stmt" count="1"/>
      <line num="50" type="stmt" count="1"/>
      <line num="51" type="stmt" count="1"/>
      <line num="52" type="stmt" count="1"/>
      <line num="54" type="stmt" count="1"/>
      <line num="55" type="stmt" count="1"/>
      <line num="56" type="stmt" count="1"/>
      <line num="57" type="stmt" count="1"/>
      <line num="59" type="stmt" count="1"/>
      <line num="61" type="stmt" count="1"/>
      <line num="62" type="stmt" count="1"/>
      <metrics loc="71" ncloc="63" classes="1" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="34" coveredstatements="33" elements="36" coveredelements="34"/>
    </file>
    <metrics files="11" loc="1779" ncloc="1343" classes="10" methods="77" coveredmethods="14" conditionals="0" coveredconditionals="0" statements="694" coveredstatements="319" elements="771" coveredelements="333"/>
  </project>
</coverage>
