text:
<?xml version="1.0" encoding="utf-8"?>
<Abilities>
  <Ability Id="16141128508346170459" Status="Changed">
    <Fqn NodeId="16141128508346170459">abl.agent.diagnostic_scan</Fqn>
    <Name Id="1685950757339136">Diagnostic Scan</Name>
    <Description Id="1685950757339137">Heals a friendly target for <<1>> over 3 seconds.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_HealingPowerCoefficient OldValue="0.66667">0.24</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
  </Ability>
  <Ability Id="16141068440431636668" Status="Changed">
    <Fqn NodeId="16141068440431636668">abl.agent.kolto_infusion</Fqn>
    <Name Id="1014376786034688">Kolto Infusion</Name>
    <Description Id="1014376786034689">Executes your Tactical Advantage to heal the target immediately for <<1>> followed by <<2>> over <<3>> seconds. Requires and consumes Tactical Advantage.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.0845">0.104</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.0445">0.064</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="1.29">1.67</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
      <Token Id="2">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.0115">0.009</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.0115">0.009</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="0.23">0.17</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
  </Ability>
  <Ability Id="16140967935222461717" Status="Changed">
    <Fqn NodeId="16140967935222461717">abl.agent.kolto_probe</Fqn>
    <Name Id="814832605462528">Kolto Probe</Name>
    <Description Id="814832605462529">Summons a droid that heals a friendly target for <<1[%d/%d/%d]>> over <<2[%d/%d/%d]>> seconds. Stacks up to 2 times.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.0185">0.017</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.0185">0.017</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="0.37">0.34</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
    <EnergyCost OldValue="15">10</EnergyCost>
  </Ability>
  <Ability Id="16141031582853595036" Status="Changed">
    <Fqn NodeId="16141031582853595036">abl.agent.skill.medic.kolto_injection</Fqn>
    <Name Id="3401961990782976">Kolto Injection</Name>
    <Description Id="3401961990782977">Heals a friendly target for <<1>>.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.1475">0.156</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.1075">0.116</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="2.55">2.71</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
  </Ability>
  <Ability Id="16141178670272492575" Status="Changed">
    <Fqn NodeId="16141178670272492575">abl.agent.skill.medic.recuperative_nano_tech</Fqn>
    <Name Id="815232037421056">Recuperative Nanotech</Name>
    <Description Id="815232037421057">Heals the target and up to 3 allies within 10 meters for <<1[%d/%d/%d]>> over <<2[%d/%d/%d]>> seconds.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.016">0.014</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.016">0.014</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="0.32">0.28</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
    <EnergyCost OldValue="25">20</EnergyCost>
  </Ability>
  <Ability Id="16140907353328605820" Status="Changed">
    <Fqn NodeId="16140907353328605820">abl.bounty_hunter.advanced_targeting</Fqn>
    <Name Id="3402086544834560">Advanced Targeting</Name>
    <Description Id="3402086544834561" OldValue="Unload, Blazing Bolts, Rail Shot, and Mag Shot ignore 30% of the target's armor. In addition, the critical chance of Healing Scan and Emergency Scan are increased by 5%, and critical results with damage and healing abilities increase critical damage and healing by 10% for <<1[%d seconds/%d second/%d seconds]>>.">Unload, Blazing Bolts, Rail Shot, and Mag Shot ignore 30% of the target's armor. In addition, the critical chance of Rapid Scan and Emergency Scan are increased by 5%, and critical results with damage and healing abilities increase critical damage and healing by 10% for <<1[%d seconds/%d second/%d seconds]>>.</Description>
  </Ability>
  <Ability Id="16141054721972980023" Status="Changed">
    <Fqn NodeId="16141054721972980023">abl.bounty_hunter.kolto_shot</Fqn>
    <Name Id="3392096450904064">Kolto Shot</Name>
    <Description Id="3392096450904065">Heals a friendly target for <<1>>.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0">0.046</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0">0.006</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="1">0.52</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
  </Ability>
  <Ability Id="16141003354024328215" Status="Changed">
    <Fqn NodeId="16141003354024328215">abl.bounty_hunter.skill.arsenal.tracer_lock</Fqn>
    <Name Id="994022936018944">Tracer Lock</Name>
    <Description Id="994022936018945" OldValue="Tracer Missile grants Tracer Lock, increasing the damage dealt by the next Rail Shot by 6% or reducing the activation time of the next Healing Scan by 20%. Stacks up to 5 times.">Tracer Missile grants Tracer Lock, increasing the damage dealt by the next Rail Shot by 6% or reducing the activation time of the next Rapid Scan by 20%. Stacks up to 5 times.</Description>
  </Ability>
  <Ability Id="16141028848447411885" Status="Changed">
    <Fqn NodeId="16141028848447411885">abl.itm.setbonus.endgame.cheal1.light.03_02</Fqn>
    <Name Id="3443047647936512"></Name>
    <Description Id="3443047647936513" OldValue="Consumption or Noble Sacrifice no longer removes any health when used with a stack of Force Surge or Resplendence.">Consuming Darkness or Vindicate restore an additional 10 Force.</Description>
  </Ability>
  <Ability Id="16140917376018429864" Status="Changed">
    <Fqn NodeId="16140917376018429864">abl.itm.setbonus.endgame.theal1.medium.03_03</Fqn>
    <Name Id="3482230634577920"></Name>
    <Description Id="3482230634577921" OldValue="Reduces the cooldown of Kolto Waves by 1 second.">Reduces the cooldown of Recuperative Nanotech or Kolto Cloud by 3 seconds.</Description>
  </Ability>
  <Ability Id="16141086367684564115" Status="Changed">
    <Fqn NodeId="16141086367684564115">abl.itm.setbonus.endgame_pvp.cheal1.light.01_02</Fqn>
    <Name Id="2694984604057600"></Name>
    <Description Id="2694984604057601" OldValue="Consumption or Noble Sacrifice restore 3% of max health over 6 seconds.">Consuming Darkness or Vindicate restore 3% of max health over 6 seconds. This effect may not occur more than once every 10 seconds.</Description>
  </Ability>
  <Ability Id="16141075324073910328" Status="Changed">
    <Fqn NodeId="16141075324073910328">abl.itm.setbonus.endgame_pvp.cheal1.light.02_02</Fqn>
    <Name Id="3226117439750144"></Name>
    <Description Id="3226117439750145" OldValue="Consumption or Noble Sacrifice no longer removes any health when used with a stack of Force Surge or Resplendence.">Consuming Darkness or Vindicate restore an additional 10 Force.</Description>
  </Ability>
  <Ability Id="16141165451355282419" Status="Changed">
    <Fqn NodeId="16141165451355282419">abl.itm.setbonus.endgame_pvp.cheal1.light.03_02</Fqn>
    <Name Id="3443167907020800"></Name>
    <Description Id="3443167907020801" OldValue="Consumption or Noble Sacrifice restore 3% of max health over 6 seconds.">Consuming Darkness or Vindicate restore 3% of max health over 6 seconds. This effect may not occur more than once every 10 seconds.</Description>
  </Ability>
  <Ability Id="16140972679316748888" Status="Changed">
    <Fqn NodeId="16140972679316748888">abl.jedi_consular.benevolence</Fqn>
    <Name Id="812710891618304">Benevolence</Name>
    <Description Id="812710891618305">Heals a friendly target for <<1>> health.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.108">0.134</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.068">0.094</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="1.75">2.28</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
    <ForceCost OldValue="50">65</ForceCost>
  </Ability>
  <Ability Id="16141059242457548004" Status="Changed">
    <Fqn NodeId="16141059242457548004">abl.jedi_consular.rejuvenate</Fqn>
    <Name Id="812809675866112">Rejuvenate</Name>
    <Description Id="812809675866113">Immediately heals a target for a <<1>>, plus an additional <<2>> over <<3>> seconds.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.06">0.07</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.02">0.03</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="0.8">0.99</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
      <Token Id="2">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.013">0.016</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.013">0.016</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="0.27">0.32</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
    <ForceCost OldValue="30">45</ForceCost>
  </Ability>
  <Ability Id="16140973052868464274" Status="Changed">
    <Fqn NodeId="16140973052868464274">abl.jedi_consular.skill.seer.deliverance</Fqn>
    <Name Id="812951409786880">Deliverance</Name>
    <Description Id="812951409786881">Heals a friendly target for <<1>> health.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.1345">0.161</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.0945">0.121</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="2.29">2.82</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
    <ForceCost OldValue="30">45</ForceCost>
  </Ability>
  <Ability Id="16141138988703553639" Status="Changed">
    <Fqn NodeId="16141138988703553639">abl.jedi_consular.skill.seer.healing_trance</Fqn>
    <Name Id="812964294688768">Healing Trance</Name>
    <Description Id="812964294688769" OldValue="Heals a friendly target for <<1>> health and consumes 40 Force over the channel duration.">Heals a friendly target for <<1>> health and consumes 60 Force over the channel duration.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.046">0.058</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.046">0.058</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="0.92">1.15</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
  </Ability>
  <Ability Id="16141127572346183000" Status="Changed">
    <Fqn NodeId="16141127572346183000">abl.jedi_consular.skill.seer.renewal</Fqn>
    <Name Id="3428311615143936">Renewal</Name>
    <Description Id="3428311615143937"><<2[%d seconds/%d second/%d seconds]>> after refreshing your Rejuvenate on a target, the target will be healed for <<1>> health plus any healing that remained from the previous Rejuvenate.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.013">0.016</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.013">0.016</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="0.27">0.32</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
  </Ability>
  <Ability Id="16141124664572085544" Status="Changed">
    <Fqn NodeId="16141124664572085544">abl.jedi_consular.skill.seer.resplendence</Fqn>
    <Name Id="812985769525248">Resplendence</Name>
    <Description Id="812985769525249" OldValue="Healing Trance critical hits grant 1 charge of Resplendence, which improves the effectiveness of your next Noble Sacrifice or Salvation.
Noble Sacrifice: Activates without degenerating your Force or causing a global cooldown and consumes 1 charge.
Salvation: Consumes 5 less Force per charge and reduces activation time by 0.25 seconds for each of the first two charges, or makes it activate instantly with the third charge. Consumes all charges.">Healing Trance critical hits grant 1 charge of Resplendence, which improves the effectiveness of your next Vindicate or Salvation.
Vindicate: Restores 5 additional Force and reduces activation time by 0.25 seconds for each of the first two charges, or makes it activate instantly with the third charge. Consumes all charges.
Salvation: Consumes 5 less Force per charge and reduces activation time by 0.25 seconds for each of the first two charges, or makes it activate instantly with the third charge. Consumes all charges.</Description>
  </Ability>
  <Ability Id="16140940771676259787" Status="Changed">
    <Fqn NodeId="16140940771676259787">abl.jedi_consular.skill.seer.salvation</Fqn>
    <Name Id="812990064492544">Salvation</Name>
    <Description Id="812990064492545">Applies a periodic healing effect to up to 8 allies within 8 meters of the targeted area, which heals for <<1>> over <<2>> seconds. Once a target has received the periodic healing effect, the target may leave the area and will continue to be healed by the effect.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_HealingPowerCoefficient OldValue="0.2">0.21</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
    <ForceCost OldValue="60">75</ForceCost>
  </Ability>
  <Ability Id="16141082962393902841" Status="Changed">
    <Fqn NodeId="16141082962393902841">abl.jedi_consular.skill.seer.wandering_mend</Fqn>
    <Name Id="3347287057104896">Wandering Mend</Name>
    <Description Id="3347287057104897">Places a mending Force on a friendly target that heals them for <<1>> health the next time they take damage. After healing the target, Wandering Mend travels to another friendly target within 20 meters. Wandering Mend lasts up to <<2>> seconds on each target and travels up to 3 times, healing up to 4 targets. Wandering Mend can only be placed on one target at a time.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.125">0.14</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.085">0.1</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="2.1">2.4</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
    <ForceCost OldValue="50">60</ForceCost>
  </Ability>
  <Ability Id="16140983605411272190" Status="Changed">
    <Fqn NodeId="16140983605411272190">abl.placeables.pvp.voidstar.defuse_bomb</Fqn>
    <Name Id="2694052596154368">Defusing the Bomb</Name>
    <Description Id="2694052596154369"></Description>
    <CastingTime OldValue="3">6</CastingTime>
  </Ability>
  <Ability Id="16141180040611708977" Status="Changed">
    <Fqn NodeId="16141180040611708977">abl.placeables.qtr.1x2.raid.denova.enemy.boss.puzzle.activate_probe_scanner</Fqn>
    <Name Id="2835876711235584">Launching Probe</Name>
    <Description Id="2835876711235585"></Description>
    <Icon OldValue="genericdatadisc">remotecontrol</Icon>
    <CooldownTime Status="New">1.5</CooldownTime>
    <SharedCooldown Status="New">16141180040611708977</SharedCooldown>
    <CastingTime Status="Removed">7</CastingTime>
  </Ability>
  <Ability Id="16141177761697288857" Status="Changed">
    <Fqn NodeId="16141177761697288857">abl.sith_inquisitor.dark_heal</Fqn>
    <Name Id="808218355826688">Dark Heal</Name>
    <Description Id="808218355826689">Heals a friendly target for <<1>> health.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.108">0.134</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.068">0.094</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="1.75">2.28</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
    <ForceCost OldValue="50">65</ForceCost>
  </Ability>
  <Ability Id="16140915821216130380" Status="Changed">
    <Fqn NodeId="16140915821216130380">abl.sith_inquisitor.resurgence</Fqn>
    <Name Id="3412162538110976">Resurgence</Name>
    <Description Id="3412162538110977">Immediately heals the target for <<1>>, plus an additional <<2>> over <<3>> seconds.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.06">0.07</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.02">0.03</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="0.8">0.99</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
      <Token Id="2">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.013">0.016</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.013">0.016</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="0.27">0.32</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
    <ForceCost OldValue="30">45</ForceCost>
  </Ability>
  <Ability Id="16141017099704152675" Status="Changed">
    <Fqn NodeId="16141017099704152675">abl.sith_inquisitor.skill.corruption.dark_infusion</Fqn>
    <Name Id="3411032961712128">Dark Infusion</Name>
    <Description Id="3411032961712129">Heals a friendly target for <<1>> health.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.1345">0.161</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.0945">0.121</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="2.29">2.82</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
    <ForceCost OldValue="30">45</ForceCost>
  </Ability>
  <Ability Id="16141061930666388872" Status="Changed">
    <Fqn NodeId="16141061930666388872">abl.sith_inquisitor.skill.corruption.force_surge</Fqn>
    <Name Id="808677917327360">Force Surge</Name>
    <Description Id="808677917327361" OldValue="Innervate critical heals grant 1 charge of Force Surge, which improves the effectiveness of your next Consumption or Revivification.
Consumption: Activates without degenerating your Force or causing a global cooldown and consumes 1 charge.
Revivification: Consumes 5 less Force per charge and reduces activation time by 0.25 seconds for each of the first two charges, or makes it activate instantly with the third charge. Consumes all charges.">Innervate critical heals grant 1 charge of Force Surge, which improves the effectiveness of your next Consuming Darkness or Revivification.
Consuming Darkness: Restores 5 additional Force and reduces activation time by 0.25 seconds for each of the first two charges, or makes it activate instantly with the third charge. Consumes all charges.
Revivification: Consumes 5 less Force per charge and reduces activation time by 0.25 seconds for each of the first two charges, or makes it activate instantly with the third charge. Consumes all charges.</Description>
  </Ability>
  <Ability Id="16141143145991194120" Status="Changed">
    <Fqn NodeId="16141143145991194120">abl.sith_inquisitor.skill.corruption.innervate</Fqn>
    <Name Id="1104395005591552">Innervate</Name>
    <Description Id="1104395005591553" OldValue="Heals a friendly target for <<1>> health and consumes 40 Force over the channel duration.">Heals a friendly target for <<1>> health and consumes 60 Force over the channel duration.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.046">0.058</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.046">0.058</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="0.92">1.15</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
  </Ability>
  <Ability Id="16141174887030241144" Status="Changed">
    <Fqn NodeId="16141174887030241144">abl.sith_inquisitor.skill.corruption.renewal</Fqn>
    <Name Id="3415246324629504">Renewal</Name>
    <Description Id="3415246324629505"><<2[%d seconds/%d second/%d seconds]>> after refreshing your Resurgence on a target, the target will be healed for <<1>> health plus any healing that remained from the previous Resurgence.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.013">0.016</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.013">0.016</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="0.27">0.32</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
  </Ability>
  <Ability Id="16141012138626181515" Status="Changed">
    <Fqn NodeId="16141012138626181515">abl.sith_inquisitor.skill.corruption.revivification</Fqn>
    <Name Id="808703687131136">Revivification</Name>
    <Description Id="808703687131137">Applies a periodic healing effect to up to 8 allies within 8 meters of the targeted area, which heals for <<1>> over <<2>> seconds. Once a target has received the periodic healing effect, the target may leave the area and will continue to be healed by the effect.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_HealingPowerCoefficient OldValue="0.2">0.21</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
    <ForceCost OldValue="60">75</ForceCost>
  </Ability>
  <Ability Id="16141141796785834825" Status="Changed">
    <Fqn NodeId="16141141796785834825">abl.sith_inquisitor.skill.corruption.roaming_mend</Fqn>
    <Name Id="3401283385950208">Roaming Mend</Name>
    <Description Id="3401283385950209">Places a mending Force on a friendly target that heals them for <<1>> health the next time they take damage. After healing the target, Roaming Mend travels to another friendly target within 20 meters. Roaming Mend lasts up to <<2>> seconds on each target and travels up to 3 times, healing up to 4 targets. Roaming Mend can only be placed on one target at a time.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.125">0.14</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.085">0.1</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="2.1">2.4</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
    <ForceCost OldValue="50">60</ForceCost>
  </Ability>
  <Ability Id="16141156779318208682" Status="Changed">
    <Fqn NodeId="16141156779318208682">abl.smuggler.diagnostic_scan</Fqn>
    <Name Id="1701352510062592">Diagnostic Scan</Name>
    <Description Id="1701352510062593">Heals a friendly target for <<1>> over 3 seconds.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_HealingPowerCoefficient OldValue="0.66667">0.24</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
  </Ability>
  <Ability Id="16140989587431467006" Status="Changed">
    <Fqn NodeId="16140989587431467006">abl.smuggler.kolto_pack</Fqn>
    <Name Id="3470823201439744">Kolto Pack</Name>
    <Description Id="3470823201439745">Exploits your Upper Hand to heal the target immediately for <<1>> followed by <<2>> over <<3>> seconds. Requires and consumes Upper Hand.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.0845">0.104</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.0445">0.064</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="1.29">1.67</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
      <Token Id="2">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.0115">0.009</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.0115">0.009</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="0.23">0.17</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
  </Ability>
  <Ability Id="16141040506483181958" Status="Changed">
    <Fqn NodeId="16141040506483181958">abl.smuggler.skill.sawbones.kolto_cloud</Fqn>
    <Name Id="1147159994957824">Kolto Cloud</Name>
    <Description Id="1147159994957825">Heals the target and up to 3 allies within 10 meters for <<1[%d/%d/%d]>> over <<2[%d/%d/%d]>> seconds.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.016">0.014</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.016">0.014</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="0.32">0.28</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
    <EnergyCost OldValue="25">20</EnergyCost>
  </Ability>
  <Ability Id="16140912584609837665" Status="Changed">
    <Fqn NodeId="16140912584609837665">abl.smuggler.skill.sawbones.underworld_medicine</Fqn>
    <Name Id="3406424461803520">Underworld Medicine</Name>
    <Description Id="3406424461803521">Heals a friendly target for <<1>>.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.1475">0.156</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.1075">0.116</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="2.55">2.71</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
  </Ability>
  <Ability Id="16141171674478100600" Status="Changed">
    <Fqn NodeId="16141171674478100600">abl.smuggler.slow_release_medpac</Fqn>
    <Name Id="3406415871868928">Slow-release Medpac</Name>
    <Description Id="3406415871868929">Injects the target with slow-release medicine that heals for <<1[%d/%d/%d]>> over <<2[%d/%d/%d]>> seconds. Stacks up to 2 times.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0.0185">0.017</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0.0185">0.017</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="0.37">0.34</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
    <EnergyCost OldValue="15">10</EnergyCost>
    <TargetArc Status="New">360</TargetArc>
  </Ability>
  <Ability Id="16141067618737264747" Status="Changed">
    <Fqn NodeId="16141067618737264747">abl.trooper.med_shot</Fqn>
    <Name Id="3408262707806208">Med Shot</Name>
    <Description Id="3408262707806209">Fires a quick stream of bolts, causing <<1>> healing.</Description>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_StandardHealthPercentMax OldValue="0">0.046</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin OldValue="0">0.006</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient OldValue="1">0.52</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
      </Token>
    </Tokens>
  </Ability>
  <Ability Id="16140952257753990220" Status="Changed">
    <Fqn NodeId="16140952257753990220">abl.trooper.skill.gunnery.charged_barrel</Fqn>
    <Name Id="998219119067136">Charged Barrel</Name>
    <Description Id="998219119067137" OldValue="Grav Round grants Charged Barrel, increasing the damage dealt by the next High Impact Bolt by 6% and reducing the activation time of the next Advanced Medical Probe by 20%. Stacks up to 5 times.">Grav Round grants Charged Barrel, increasing the damage dealt by the next High Impact Bolt by 6% and reducing the activation time of the next Medical Probe by 20%. Stacks up to 5 times.</Description>
  </Ability>
  <Ability Id="16141155868401186052" Status="Changed">
    <Fqn NodeId="16141155868401186052">abl.trooper.target_lock</Fqn>
    <Name Id="3514618982957056">Target Lock</Name>
    <Description Id="3514618982957057" OldValue="Full Auto, Boltstorm, High Impact Bolt, and Mag Bolt ignore 30% of the target's armor. In addition, the critical chance of Advanced Medical Probe and Bacta Infusion are increased by 5%, and critical results with damage and healing abilities increase critical damage and healing by 10% for <<1[%d seconds/%d second/%d seconds]>>.">Full Auto, Boltstorm, High Impact Bolt, and Mag Bolt ignore 30% of the target's armor. In addition, the critical chance of Medical Probe and Bacta Infusion are increased by 5%, and critical results with damage and healing abilities increase critical damage and healing by 10% for <<1[%d seconds/%d second/%d seconds]>>.</Description>
  </Ability>
  <Ability Id="16141155277639998280" Status="New">
    <Fqn NodeId="16141155277639998280">abl.bounty_hunter.rapid_scan</Fqn>
    <Name Id="3394085020762112">Rapid Scan</Name>
    <Description Id="3394085020762113">Heals a friendly target for <<1>>.</Description>
    <IsPassive>false</IsPassive>
    <IsHidden>false</IsHidden>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_SpellType>2</effParam_SpellType>
            <effParam_AmountMax>0</effParam_AmountMax>
            <effParam_AmountMin>0</effParam_AmountMin>
            <effParam_AmountPercent>0</effParam_AmountPercent>
            <effParam_ThreatPercent>0</effParam_ThreatPercent>
            <effParam_StandardHealthPercentMax>0.102</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin>0.062</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient>1.63</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
        <ablDescriptionTokenMultiplier>1</ablDescriptionTokenMultiplier>
        <ablDescriptionTokenType>ablDescriptionTokenTypeHealing</ablDescriptionTokenType>
        <ablDescriptionTokenEffect>1</ablDescriptionTokenEffect>
        <ablDescriptionTokenSubEffect>-1</ablDescriptionTokenSubEffect>
      </Token>
    </Tokens>
    <Icon>diagnosticscan</Icon>
    <MaxRange>30</MaxRange>
    <EnergyCost>20</EnergyCost>
    <CastingTime>1.5</CastingTime>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <TargetArc>360</TargetArc>
    <TargetRule>Friendly</TargetRule>
  </Ability>
  <Ability Id="16141139537866833779" Status="New">
    <Fqn NodeId="16141139537866833779">abl.bounty_hunter.skill.bodyguard.healing_scan</Fqn>
    <Name Id="1416815221669888">Healing Scan</Name>
    <Description Id="1416815221669889">Heals a friendly target for <<1>>.</Description>
    <IsPassive>false</IsPassive>
    <IsHidden>false</IsHidden>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_SpellType>2</effParam_SpellType>
            <effParam_AmountMax>0</effParam_AmountMax>
            <effParam_AmountMin>0</effParam_AmountMin>
            <effParam_AmountPercent>0</effParam_AmountPercent>
            <effParam_ThreatPercent>0</effParam_ThreatPercent>
            <effParam_StandardHealthPercentMax>0.186</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin>0.146</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient>3.33</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
        <ablDescriptionTokenMultiplier>1</ablDescriptionTokenMultiplier>
        <ablDescriptionTokenType>ablDescriptionTokenTypeHealing</ablDescriptionTokenType>
        <ablDescriptionTokenEffect>1</ablDescriptionTokenEffect>
        <ablDescriptionTokenSubEffect>-1</ablDescriptionTokenSubEffect>
      </Token>
    </Tokens>
    <Icon>healingscan</Icon>
    <MaxRange>30</MaxRange>
    <EnergyCost>20</EnergyCost>
    <CastingTime>2</CastingTime>
    <CooldownTime>13.5</CooldownTime>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <SharedCooldown>16141139537866833779</SharedCooldown>
    <TargetArc>360</TargetArc>
    <TargetRule>Friendly</TargetRule>
  </Ability>
  <Ability Id="16140921094580461073" Status="New">
    <Fqn NodeId="16140921094580461073">abl.jedi_consular.skill.seer.amnesty</Fqn>
    <Name Id="3218098735808512">Amnesty</Name>
    <Description Id="3218098735808513">Vindicate grants Amnesty, healing the target for an additional <<1>> over 6 seconds. This can only occur once every 15 seconds.</Description>
    <IsPassive>true</IsPassive>
    <IsHidden>true</IsHidden>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_SpellType>1</effParam_SpellType>
            <effParam_AmountMax>0</effParam_AmountMax>
            <effParam_AmountMin>0</effParam_AmountMin>
            <effParam_AmountPercent>0</effParam_AmountPercent>
            <effParam_ThreatPercent>0</effParam_ThreatPercent>
            <effParam_StandardHealthPercentMax>0.009</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin>0.009</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient>0.17</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
        <ablDescriptionTokenMultiplier>1</ablDescriptionTokenMultiplier>
        <ablDescriptionTokenType>ablDescriptionTokenTypeHealing</ablDescriptionTokenType>
        <ablDescriptionTokenEffect>2</ablDescriptionTokenEffect>
        <ablDescriptionTokenSubEffect>-1</ablDescriptionTokenSubEffect>
      </Token>
    </Tokens>
    <Icon>energydrain</Icon>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <TargetRule>Friendly</TargetRule>
  </Ability>
  <Ability Id="16141016677326372106" Status="New">
    <Fqn NodeId="16141016677326372106">abl.jedi_consular.vindicate</Fqn>
    <Name Id="3613175597498368">Vindicate</Name>
    <Description Id="3613175597498369">Restores 30 Force and heals a friendly target for <<2>> health.</Description>
    <IsPassive>false</IsPassive>
    <IsHidden>false</IsHidden>
    <Tokens>
      <Token Id="1">
        <ablCoefficients />
        <ablDescriptionTokenMultiplier>1</ablDescriptionTokenMultiplier>
        <ablDescriptionTokenType>ablDescriptionTokenTypeDamage</ablDescriptionTokenType>
        <ablDescriptionTokenEffect>2</ablDescriptionTokenEffect>
        <ablDescriptionTokenSubEffect>-1</ablDescriptionTokenSubEffect>
      </Token>
      <Token Id="2">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_SpellType>1</effParam_SpellType>
            <effParam_AmountMax>0</effParam_AmountMax>
            <effParam_AmountMin>0</effParam_AmountMin>
            <effParam_AmountPercent>0</effParam_AmountPercent>
            <effParam_ThreatPercent>0</effParam_ThreatPercent>
            <effParam_StandardHealthPercentMax>0.011</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin>0.007</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient>0.17</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
        <ablDescriptionTokenMultiplier>1</ablDescriptionTokenMultiplier>
        <ablDescriptionTokenType>ablDescriptionTokenTypeHealing</ablDescriptionTokenType>
        <ablDescriptionTokenEffect>1</ablDescriptionTokenEffect>
        <ablDescriptionTokenSubEffect>-1</ablDescriptionTokenSubEffect>
      </Token>
    </Tokens>
    <Icon>energydrain</Icon>
    <CastingTime>2</CastingTime>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <TargetArc>360</TargetArc>
    <TargetRule>Friendly</TargetRule>
  </Ability>
  <Ability Id="16141072108466099380" Status="New">
    <Fqn NodeId="16141072108466099380">abl.sith_inquisitor.consuming_darkness</Fqn>
    <Name Id="3613119762923520">Consuming Darkness</Name>
    <Description Id="3613119762923521">Restores 30 Force and heals a friendly target for <<2>> health.</Description>
    <IsPassive>false</IsPassive>
    <IsHidden>false</IsHidden>
    <Tokens>
      <Token Id="1">
        <ablCoefficients />
        <ablDescriptionTokenMultiplier>1</ablDescriptionTokenMultiplier>
        <ablDescriptionTokenType>ablDescriptionTokenTypeDamage</ablDescriptionTokenType>
        <ablDescriptionTokenEffect>2</ablDescriptionTokenEffect>
        <ablDescriptionTokenSubEffect>-1</ablDescriptionTokenSubEffect>
      </Token>
      <Token Id="2">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_SpellType>1</effParam_SpellType>
            <effParam_AmountMax>0</effParam_AmountMax>
            <effParam_AmountMin>0</effParam_AmountMin>
            <effParam_AmountPercent>0</effParam_AmountPercent>
            <effParam_ThreatPercent>0</effParam_ThreatPercent>
            <effParam_StandardHealthPercentMax>0.011</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin>0.007</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient>0.17</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
        <ablDescriptionTokenMultiplier>1</ablDescriptionTokenMultiplier>
        <ablDescriptionTokenType>ablDescriptionTokenTypeHealing</ablDescriptionTokenType>
        <ablDescriptionTokenEffect>1</ablDescriptionTokenEffect>
        <ablDescriptionTokenSubEffect>-1</ablDescriptionTokenSubEffect>
      </Token>
    </Tokens>
    <Icon>consumption</Icon>
    <CastingTime>2</CastingTime>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <TargetArc>360</TargetArc>
    <TargetRule>Friendly</TargetRule>
  </Ability>
  <Ability Id="16140961276695748147" Status="New">
    <Fqn NodeId="16140961276695748147">abl.sith_inquisitor.skill.corruption.reverse_corruptions</Fqn>
    <Name Id="3210230355722240">Reverse Corruptions</Name>
    <Description Id="3210230355722241">Consuming Darkness grants Reverse Corruptions, healing the target for an additional <<1>> over 6 seconds. This can only occur once every 15 seconds.</Description>
    <IsPassive>true</IsPassive>
    <IsHidden>true</IsHidden>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_SpellType>1</effParam_SpellType>
            <effParam_AmountMax>0</effParam_AmountMax>
            <effParam_AmountMin>0</effParam_AmountMin>
            <effParam_AmountPercent>0</effParam_AmountPercent>
            <effParam_ThreatPercent>0</effParam_ThreatPercent>
            <effParam_StandardHealthPercentMax>0.009</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin>0.009</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient>0.17</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
        <ablDescriptionTokenMultiplier>1</ablDescriptionTokenMultiplier>
        <ablDescriptionTokenType>ablDescriptionTokenTypeHealing</ablDescriptionTokenType>
        <ablDescriptionTokenEffect>2</ablDescriptionTokenEffect>
        <ablDescriptionTokenSubEffect>-1</ablDescriptionTokenSubEffect>
      </Token>
    </Tokens>
    <Icon>consumption</Icon>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <TargetRule>Friendly</TargetRule>
  </Ability>
  <Ability Id="16141153407277728611" Status="New">
    <Fqn NodeId="16141153407277728611">abl.test.combat.mlaroe.flag_test2</Fqn>
    <Name Id="3547269324341248"></Name>
    <Description Id="3547269324341249"></Description>
    <IsPassive>false</IsPassive>
    <IsHidden>false</IsHidden>
    <Icon>imperialbanner</Icon>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <TargetRule>Self</TargetRule>
  </Ability>
  <Ability Id="16141147500466524050" Status="New">
    <Fqn NodeId="16141147500466524050">abl.test.jjary.alac_remove</Fqn>
    <Name Id="3649240437882880"></Name>
    <Description Id="3649240437882881"></Description>
    <IsPassive>false</IsPassive>
    <IsHidden>false</IsHidden>
    <Icon>stimpack</Icon>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <TargetRule>Self</TargetRule>
  </Ability>
  <Ability Id="16140916916599370326" Status="New">
    <Fqn NodeId="16140916916599370326">abl.test.jjary.force_gash</Fqn>
    <Name Id="3628925242572800">Force Rend</Name>
    <Description Id="3628925242572801">Summons dark Force power to rend the target, causing it to bleed for <<1>> internal damage over <<2[%d seconds/%d second/%d seconds]>>.</Description>
    <IsPassive>false</IsPassive>
    <IsHidden>false</IsHidden>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_SpellDamage">
            <effParam_DamageType>4</effParam_DamageType>
            <effParam_Slot>1</effParam_Slot>
            <effParam_SpellType>3</effParam_SpellType>
            <effParam_AmountMax>0</effParam_AmountMax>
            <effParam_AmountMin>0</effParam_AmountMin>
            <effParam_AmountPercent>0</effParam_AmountPercent>
            <effParam_ThreatPercent>0</effParam_ThreatPercent>
            <effParam_StandardHealthPercentMax>0.045</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin>0.045</effParam_StandardHealthPercentMin>
            <effParam_AmountModifierPercent>0</effParam_AmountModifierPercent>
            <effParam_Coefficient>0.452</effParam_Coefficient>
            <effParam_HealthStealPercentage>0</effParam_HealthStealPercentage>
          </Action>
        </ablCoefficients>
        <ablDescriptionTokenMultiplier>7</ablDescriptionTokenMultiplier>
        <ablDescriptionTokenType>ablDescriptionTokenTypeDamage</ablDescriptionTokenType>
        <ablDescriptionTokenEffect>1</ablDescriptionTokenEffect>
        <ablDescriptionTokenSubEffect>-1</ablDescriptionTokenSubEffect>
      </Token>
      <Token Id="2">
        <ablParsedDescriptionToken>18</ablParsedDescriptionToken>
        <ablDescriptionTokenMultiplier>1</ablDescriptionTokenMultiplier>
        <ablDescriptionTokenType>ablDescriptionTokenTypeDuration</ablDescriptionTokenType>
        <ablDescriptionTokenEffect>2</ablDescriptionTokenEffect>
        <ablDescriptionTokenSubEffect>-1</ablDescriptionTokenSubEffect>
      </Token>
    </Tokens>
    <Icon>abl_sw_ma_force_gash</Icon>
    <MaxRange>10</MaxRange>
    <AmmoHeatCost>3</AmmoHeatCost>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <TargetArc>270</TargetArc>
    <TargetRule>Attackable</TargetRule>
  </Ability>
  <Ability Id="16141002760491448206" Status="New">
    <Fqn NodeId="16141002760491448206">abl.trooper.medical_probe</Fqn>
    <Name Id="996904859074560">Medical Probe</Name>
    <Description Id="996904859074561">Summons a probe that heals for <<1>>.</Description>
    <IsPassive>false</IsPassive>
    <IsHidden>false</IsHidden>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_SpellType>2</effParam_SpellType>
            <effParam_AmountMax>0</effParam_AmountMax>
            <effParam_AmountMin>0</effParam_AmountMin>
            <effParam_AmountPercent>0</effParam_AmountPercent>
            <effParam_ThreatPercent>0</effParam_ThreatPercent>
            <effParam_StandardHealthPercentMax>0.102</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin>0.062</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient>1.63</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
        <ablDescriptionTokenMultiplier>1</ablDescriptionTokenMultiplier>
        <ablDescriptionTokenType>ablDescriptionTokenTypeHealing</ablDescriptionTokenType>
        <ablDescriptionTokenEffect>1</ablDescriptionTokenEffect>
        <ablDescriptionTokenSubEffect>-1</ablDescriptionTokenSubEffect>
      </Token>
    </Tokens>
    <Icon>resuscitationprobe</Icon>
    <MaxRange>30</MaxRange>
    <EnergyCost>20</EnergyCost>
    <CastingTime>1.5</CastingTime>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <TargetArc>360</TargetArc>
    <TargetRule>Friendly</TargetRule>
  </Ability>
  <Ability Id="16141175570821009605" Status="New">
    <Fqn NodeId="16141175570821009605">abl.trooper.skill.combat_medic.advanced_medical_probe</Fqn>
    <Name Id="1505974447767552">Advanced Medical Probe</Name>
    <Description Id="1505974447767553">Summons a probe that heals for <<1>>.</Description>
    <IsPassive>false</IsPassive>
    <IsHidden>false</IsHidden>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_SpellType>2</effParam_SpellType>
            <effParam_AmountMax>0</effParam_AmountMax>
            <effParam_AmountMin>0</effParam_AmountMin>
            <effParam_AmountPercent>0</effParam_AmountPercent>
            <effParam_ThreatPercent>0</effParam_ThreatPercent>
            <effParam_StandardHealthPercentMax>0.186</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin>0.146</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient>3.33</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
        <ablDescriptionTokenMultiplier>1</ablDescriptionTokenMultiplier>
        <ablDescriptionTokenType>ablDescriptionTokenTypeHealing</ablDescriptionTokenType>
        <ablDescriptionTokenEffect>1</ablDescriptionTokenEffect>
        <ablDescriptionTokenSubEffect>-1</ablDescriptionTokenSubEffect>
      </Token>
    </Tokens>
    <Icon>advancedmedicalprobe</Icon>
    <MaxRange>30</MaxRange>
    <EnergyCost>20</EnergyCost>
    <CastingTime>2</CastingTime>
    <CooldownTime>13.5</CooldownTime>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <SharedCooldown>16141175570821009605</SharedCooldown>
    <TargetArc>360</TargetArc>
    <TargetRule>Friendly</TargetRule>
  </Ability>
  <Ability Id="16140968531121379995" Status="Removed">
    <Fqn NodeId="16140968531121379995">abl.bounty_hunter.healing_scan</Fqn>
    <Name Id="984595482804224">Healing Scan</Name>
    <Description Id="984595482804225">Heals a friendly target for <<1>>.</Description>
    <IsPassive>false</IsPassive>
    <IsHidden>false</IsHidden>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_SpellType>2</effParam_SpellType>
            <effParam_AmountMax>0</effParam_AmountMax>
            <effParam_AmountMin>0</effParam_AmountMin>
            <effParam_AmountPercent>0</effParam_AmountPercent>
            <effParam_ThreatPercent>0</effParam_ThreatPercent>
            <effParam_StandardHealthPercentMax>0.165</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin>0.125</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient>2.898</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
        <ablDescriptionTokenMultiplier>1</ablDescriptionTokenMultiplier>
        <ablDescriptionTokenType>ablDescriptionTokenTypeHealing</ablDescriptionTokenType>
        <ablDescriptionTokenEffect>1</ablDescriptionTokenEffect>
        <ablDescriptionTokenSubEffect>-1</ablDescriptionTokenSubEffect>
      </Token>
    </Tokens>
    <Icon>healingscan</Icon>
    <MaxRange>30</MaxRange>
    <EnergyCost>20</EnergyCost>
    <CastingTime>2</CastingTime>
    <CooldownTime>13.5</CooldownTime>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <SharedCooldown>16140968531121379995</SharedCooldown>
    <TargetArc>360</TargetArc>
    <TargetRule>Friendly</TargetRule>
  </Ability>
  <Ability Id="16141108756614757758" Status="Removed">
    <Fqn NodeId="16141108756614757758">abl.bounty_hunter.skill.bodyguard.rapid_scan</Fqn>
    <Name Id="3401390760132608">Rapid Scan</Name>
    <Description Id="3401390760132609">Heals a friendly target for <<1>>.</Description>
    <IsPassive>false</IsPassive>
    <IsHidden>false</IsHidden>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_SpellType>2</effParam_SpellType>
            <effParam_AmountMax>0</effParam_AmountMax>
            <effParam_AmountMin>0</effParam_AmountMin>
            <effParam_AmountPercent>0</effParam_AmountPercent>
            <effParam_ThreatPercent>0</effParam_ThreatPercent>
            <effParam_StandardHealthPercentMax>0.114</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin>0.074</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient>1.873</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
        <ablDescriptionTokenMultiplier>1</ablDescriptionTokenMultiplier>
        <ablDescriptionTokenType>ablDescriptionTokenTypeHealing</ablDescriptionTokenType>
        <ablDescriptionTokenEffect>1</ablDescriptionTokenEffect>
        <ablDescriptionTokenSubEffect>-1</ablDescriptionTokenSubEffect>
      </Token>
    </Tokens>
    <Icon>diagnosticscan</Icon>
    <MaxRange>30</MaxRange>
    <EnergyCost>20</EnergyCost>
    <CastingTime>1.5</CastingTime>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <TargetArc>360</TargetArc>
    <TargetRule>Friendly</TargetRule>
  </Ability>
  <Ability Id="16140924432183218666" Status="Removed">
    <Fqn NodeId="16140924432183218666">abl.jedi_consular.noble_sacrifice</Fqn>
    <Name Id="960943097905152">Noble Sacrifice</Name>
    <Description Id="960943097905153">Sacrifices 15% of your maximum health to restore 8% of your maximum Force. Each time this ability is used, your Force regeneration rate is reduced by 25% for the next <<1>> seconds. Stacks up to 4 times.</Description>
    <IsPassive>false</IsPassive>
    <IsHidden>false</IsHidden>
    <Tokens>
      <Token Id="1">
        <ablParsedDescriptionToken>10</ablParsedDescriptionToken>
        <ablDescriptionTokenMultiplier>1</ablDescriptionTokenMultiplier>
        <ablDescriptionTokenType>ablDescriptionTokenTypeDuration</ablDescriptionTokenType>
        <ablDescriptionTokenEffect>2</ablDescriptionTokenEffect>
        <ablDescriptionTokenSubEffect>-1</ablDescriptionTokenSubEffect>
      </Token>
    </Tokens>
    <Icon>energydrain</Icon>
    <CooldownTime>1.5</CooldownTime>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <SharedCooldown>16140924432183218666</SharedCooldown>
    <TargetArc>360</TargetArc>
    <TargetRule>Self</TargetRule>
  </Ability>
  <Ability Id="16141162033473179128" Status="Removed">
    <Fqn NodeId="16141162033473179128">abl.pvp.ilum.kill_imp_bomber</Fqn>
    <Name Id="2814474889199616"></Name>
    <Description Id="2814474889199617"></Description>
    <IsPassive>false</IsPassive>
    <IsHidden>false</IsHidden>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <TargetRule>Any</TargetRule>
  </Ability>
  <Ability Id="16141109781418180381" Status="Removed">
    <Fqn NodeId="16141109781418180381">abl.pvp.ilum.kill_rep_bomber</Fqn>
    <Name Id="2814479184166912"></Name>
    <Description Id="2814479184166913"></Description>
    <IsPassive>false</IsPassive>
    <IsHidden>false</IsHidden>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <TargetRule>Any</TargetRule>
  </Ability>
  <Ability Id="16141106401919918224" Status="Removed">
    <Fqn NodeId="16141106401919918224">abl.sith_inquisitor.consumption</Fqn>
    <Name Id="808214060859392">Consumption</Name>
    <Description Id="808214060859393">Consumes 15% of your maximum health to restore 8% of your maximum Force. Each time this ability is used, your Force regeneration rate is reduced by 25% for the next <<1>> seconds. Stacks up to 4 times.</Description>
    <IsPassive>false</IsPassive>
    <IsHidden>false</IsHidden>
    <Tokens>
      <Token Id="1">
        <ablParsedDescriptionToken>10</ablParsedDescriptionToken>
        <ablDescriptionTokenMultiplier>1</ablDescriptionTokenMultiplier>
        <ablDescriptionTokenType>ablDescriptionTokenTypeDuration</ablDescriptionTokenType>
        <ablDescriptionTokenEffect>2</ablDescriptionTokenEffect>
        <ablDescriptionTokenSubEffect>-1</ablDescriptionTokenSubEffect>
      </Token>
    </Tokens>
    <Icon>consumption</Icon>
    <CooldownTime>1.5</CooldownTime>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <SharedCooldown>16141106401919918224</SharedCooldown>
    <TargetArc>360</TargetArc>
    <TargetRule>Self</TargetRule>
  </Ability>
  <Ability Id="16140931284913525218" Status="Removed">
    <Fqn NodeId="16140931284913525218">abl.test.jjary.restorphys</Fqn>
    <Name Id="3525626984136704">Restoration</Name>
    <Description Id="3525626984136705">Cleanses a friendly target of up to 2 negative mental or Force effects.</Description>
    <IsPassive>false</IsPassive>
    <IsHidden>false</IsHidden>
    <Icon>empire</Icon>
    <MaxRange>30</MaxRange>
    <ForceCost>15</ForceCost>
    <CooldownTime>12</CooldownTime>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <SharedCooldown>16140931284913525218</SharedCooldown>
    <TargetArc>360</TargetArc>
    <TargetRule>Friendly</TargetRule>
  </Ability>
  <Ability Id="16140908656658920239" Status="Removed">
    <Fqn NodeId="16140908656658920239">abl.test.jjary.saberoprah</Fqn>
    <Name Id="3521911837425664">Saber Throw</Name>
    <Description Id="3521911837425665">Throws the main hand lightsaber at a distant target, inflicting <<1>> weapon damage and building 3 rage.</Description>
    <IsPassive>false</IsPassive>
    <IsHidden>false</IsHidden>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_WeaponDamage">
            <effParam_IsSpecialAbility>True</effParam_IsSpecialAbility>
            <effParam_IgnoreDualWieldModifier>True</effParam_IgnoreDualWieldModifier>
            <effParam_FlurryBlowsMin>1</effParam_FlurryBlowsMin>
            <effParam_FlurryBlowsMax>1</effParam_FlurryBlowsMax>
            <effParam_ThreatPercent>0</effParam_ThreatPercent>
            <effParam_StandardHealthPercentMax>0.158</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin>0.158</effParam_StandardHealthPercentMin>
            <effParam_AmountModifierFixedMax>0</effParam_AmountModifierFixedMax>
            <effParam_AmountModifierFixedMin>0</effParam_AmountModifierFixedMin>
            <effParam_AmountModifierPercent>0.06</effParam_AmountModifierPercent>
            <effParam_Coefficient>1.58</effParam_Coefficient>
            <effParam_HealthStealPercentage>0</effParam_HealthStealPercentage>
          </Action>
        </ablCoefficients>
        <ablDescriptionTokenMultiplier>1</ablDescriptionTokenMultiplier>
        <ablDescriptionTokenType>ablDescriptionTokenTypeDamage</ablDescriptionTokenType>
        <ablDescriptionTokenEffect>2</ablDescriptionTokenEffect>
        <ablDescriptionTokenSubEffect>-1</ablDescriptionTokenSubEffect>
      </Token>
    </Tokens>
    <Icon>saberThrowSith</Icon>
    <MinRange>10</MinRange>
    <MaxRange>30</MaxRange>
    <CooldownTime>2</CooldownTime>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <SharedCooldown>16140908656658920239</SharedCooldown>
    <TargetArc>270</TargetArc>
    <TargetRule>Attackable</TargetRule>
  </Ability>
  <Ability Id="16141069425170611977" Status="Removed">
    <Fqn NodeId="16141069425170611977">abl.trooper.advanced_medical_probe</Fqn>
    <Name Id="997175442014208">Advanced Medical Probe</Name>
    <Description Id="997175442014209">Summons a probe that heals for <<1>>.</Description>
    <IsPassive>false</IsPassive>
    <IsHidden>false</IsHidden>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_SpellType>2</effParam_SpellType>
            <effParam_AmountMax>0</effParam_AmountMax>
            <effParam_AmountMin>0</effParam_AmountMin>
            <effParam_AmountPercent>0</effParam_AmountPercent>
            <effParam_ThreatPercent>0</effParam_ThreatPercent>
            <effParam_StandardHealthPercentMax>0.165</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin>0.125</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient>2.898</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
        <ablDescriptionTokenMultiplier>1</ablDescriptionTokenMultiplier>
        <ablDescriptionTokenType>ablDescriptionTokenTypeHealing</ablDescriptionTokenType>
        <ablDescriptionTokenEffect>1</ablDescriptionTokenEffect>
        <ablDescriptionTokenSubEffect>-1</ablDescriptionTokenSubEffect>
      </Token>
    </Tokens>
    <Icon>advancedmedicalprobe</Icon>
    <MaxRange>30</MaxRange>
    <EnergyCost>20</EnergyCost>
    <CastingTime>2</CastingTime>
    <CooldownTime>13.5</CooldownTime>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <SharedCooldown>16141069425170611977</SharedCooldown>
    <TargetArc>360</TargetArc>
    <TargetRule>Friendly</TargetRule>
  </Ability>
  <Ability Id="16141103729474213456" Status="Removed">
    <Fqn NodeId="16141103729474213456">abl.trooper.skill.combat_medic.medical_probe</Fqn>
    <Name Id="3393462250504192">Medical Probe</Name>
    <Description Id="3393462250504193">Summons a probe that heals for <<1>>.</Description>
    <IsPassive>false</IsPassive>
    <IsHidden>false</IsHidden>
    <Tokens>
      <Token Id="1">
        <ablCoefficients>
          <Action Name="effAction_Heal">
            <effParam_SpellType>2</effParam_SpellType>
            <effParam_AmountMax>0</effParam_AmountMax>
            <effParam_AmountMin>0</effParam_AmountMin>
            <effParam_AmountPercent>0</effParam_AmountPercent>
            <effParam_ThreatPercent>0</effParam_ThreatPercent>
            <effParam_StandardHealthPercentMax>0.114</effParam_StandardHealthPercentMax>
            <effParam_StandardHealthPercentMin>0.074</effParam_StandardHealthPercentMin>
            <effParam_HealingPowerCoefficient>1.873</effParam_HealingPowerCoefficient>
          </Action>
        </ablCoefficients>
        <ablDescriptionTokenMultiplier>1</ablDescriptionTokenMultiplier>
        <ablDescriptionTokenType>ablDescriptionTokenTypeHealing</ablDescriptionTokenType>
        <ablDescriptionTokenEffect>1</ablDescriptionTokenEffect>
        <ablDescriptionTokenSubEffect>-1</ablDescriptionTokenSubEffect>
      </Token>
    </Tokens>
    <Icon>resuscitationprobe</Icon>
    <MaxRange>30</MaxRange>
    <EnergyCost>20</EnergyCost>
    <CastingTime>1.5</CastingTime>
    <GCD>-1</GCD>
    <OverridesGCD>false</OverridesGCD>
    <UsesPushback>true</UsesPushback>
    <IgnoresAlacrity>false</IgnoresAlacrity>
    <LoSCheck>true</LoSCheck>
    <TargetArc>360</TargetArc>
    <TargetRule>Friendly</TargetRule>
  </Ability>
</Abilities>


text:
package org.apache.druid.sql.calcite.rel;

import org.apache.druid.common.config.NullHandling;
import org.apache.druid.java.util.common.Intervals;
import org.apache.druid.java.util.common.Pair;
import org.apache.druid.math.expr.ExprMacroTable;
import org.apache.druid.query.DataSource;
import org.apache.druid.query.JoinDataSource;
import org.apache.druid.query.TableDataSource;
import org.apache.druid.query.filter.AndDimFilter;
import org.apache.druid.query.filter.BoundDimFilter;
import org.apache.druid.query.filter.DimFilter;
import org.apache.druid.query.filter.SelectorDimFilter;
import org.apache.druid.query.ordering.StringComparators;
import org.apache.druid.segment.column.RowSignature;
import org.apache.druid.segment.join.JoinType;
import org.apache.druid.sql.calcite.filtration.Filtration;
import org.joda.time.Interval;
import org.junit.Assert;
import org.junit.Test;

import java.util.Collections;

public class DruidQueryTest
{

  static {
    NullHandling.initializeForTests();
  }

  private final DimFilter selectorFilter = new SelectorDimFilter("column", "value", null);
  private final DimFilter otherFilter = new SelectorDimFilter("column_2", "value_2", null);
  private final DimFilter filterWithInterval = new AndDimFilter(
      selectorFilter,
      new BoundDimFilter("__time", "100", "200", false, true, null, null, StringComparators.NUMERIC)
  );

  @Test
  public void test_filtration_noJoinAndInterval()
  {
    DataSource dataSource = new TableDataSource("test");
    Pair<DataSource, Filtration> pair = DruidQuery.getFiltration(
        dataSource,
        selectorFilter,
        VirtualColumnRegistry.create(RowSignature.empty())
    );
    verify(pair, dataSource, selectorFilter, Intervals.ETERNITY);
  }

  @Test
  public void test_filtration_intervalInQueryFilter()
  {
    DataSource dataSource = new TableDataSource("test");
    Pair<DataSource, Filtration> pair = DruidQuery.getFiltration(
        dataSource,
        filterWithInterval,
        VirtualColumnRegistry.create(RowSignature.empty())
    );
    verify(pair, dataSource, selectorFilter, Intervals.utc(100, 200));
  }

  @Test
  public void test_filtration_joinDataSource_intervalInQueryFilter()
  {
    DataSource dataSource = join(JoinType.INNER, otherFilter);
    Pair<DataSource, Filtration> pair = DruidQuery.getFiltration(
        dataSource,
        filterWithInterval,
        VirtualColumnRegistry.create(RowSignature.empty())
    );
    verify(pair, dataSource, selectorFilter, Intervals.utc(100, 200));
  }

  @Test
  public void test_filtration_joinDataSource_intervalInBaseTableFilter_inner()
  {
    DataSource dataSource = join(JoinType.INNER, filterWithInterval);
    DataSource expectedDataSource = join(JoinType.INNER, selectorFilter);
    Pair<DataSource, Filtration> pair = DruidQuery.getFiltration(
        dataSource,
        otherFilter,
        VirtualColumnRegistry.create(RowSignature.empty())
    );
    verify(pair, expectedDataSource, otherFilter, Intervals.utc(100, 200));
  }

  @Test
  public void test_filtration_joinDataSource_intervalInBaseTableFilter_left()
  {
    DataSource dataSource = join(JoinType.LEFT, filterWithInterval);
    DataSource expectedDataSource = join(JoinType.LEFT, selectorFilter);
    Pair<DataSource, Filtration> pair = DruidQuery.getFiltration(
        dataSource,
        otherFilter,
        VirtualColumnRegistry.create(RowSignature.empty())
    );
    verify(pair, expectedDataSource, otherFilter, Intervals.utc(100, 200));
  }

  @Test
  public void test_filtration_joinDataSource_intervalInBaseTableFilter_right()
  {
    DataSource dataSource = join(JoinType.RIGHT, filterWithInterval);
    DataSource expectedDataSource = join(JoinType.RIGHT, selectorFilter);
    Pair<DataSource, Filtration> pair = DruidQuery.getFiltration(
        dataSource,
        otherFilter,
        VirtualColumnRegistry.create(RowSignature.empty())
    );
    verify(pair, expectedDataSource, otherFilter, Intervals.utc(100, 200));
  }

  @Test
  public void test_filtration_joinDataSource_intervalInBaseTableFilter_full()
  {
    DataSource dataSource = join(JoinType.FULL, filterWithInterval);
    DataSource expectedDataSource = join(JoinType.FULL, selectorFilter);
    Pair<DataSource, Filtration> pair = DruidQuery.getFiltration(
        dataSource,
        otherFilter,
        VirtualColumnRegistry.create(RowSignature.empty())
    );
    verify(pair, expectedDataSource, otherFilter, Intervals.utc(100, 200));
  }

  @Test
  public void test_filtration_intervalsInBothFilters()
  {
    DataSource dataSource = join(JoinType.INNER, filterWithInterval);
    DataSource expectedDataSource = join(JoinType.INNER, selectorFilter);
    DimFilter queryFilter = new AndDimFilter(
        otherFilter,
        new BoundDimFilter("__time", "150", "250", false, true, null, null, StringComparators.NUMERIC)

    );
    Pair<DataSource, Filtration> pair = DruidQuery.getFiltration(
        dataSource,
        queryFilter,
        VirtualColumnRegistry.create(RowSignature.empty())
    );
    verify(pair, expectedDataSource, otherFilter, Intervals.utc(150, 200));
  }

  private JoinDataSource join(JoinType joinType, DimFilter filter)
  {
    return JoinDataSource.create(
        new TableDataSource("left"),
        new TableDataSource("right"),
        "r.",
        "c == \"r.c\"",
        joinType,
        filter,
        ExprMacroTable.nil()
    );
  }

  private void verify(
      Pair<DataSource, Filtration> pair,
      DataSource dataSource,
      DimFilter columnFilter,
      Interval interval
  )
  {
    Assert.assertEquals(dataSource, pair.lhs);
    Assert.assertEquals("dim-filter: " + pair.rhs.getDimFilter(), columnFilter, pair.rhs.getDimFilter());
    Assert.assertEquals(Collections.singletonList(interval), pair.rhs.getIntervals());
  }
}

redpajama_set_name: RedPajamaGithub


text:
$(document).ready(function()
{
    toastr.success('Congratulations','Password has been Changed');
});


text:
{% extends "layout.html" %}
{% load static %}
{% load humanize event_extras %}
{% load bootstrap4 %}
{# Load CSS and JavaScript #}
{% bootstrap_css %}
{% bootstrap_javascript %}
{% bootstrap_messages %}

{% block title%}Login | {{ block.super }}{% endblock %}

{% block content %}

Login

    <form method="POST">
        {% csrf_token %}
        {% bootstrap_form form %}
        <input type="submit" value="Login">
    </form>

{% endblock %}


text:
from django.conf.urls import url

from .views import (
    BookingDeleteView,
    BookingDetailView,
    BookingListMonthView,
    BookingListView,
    BookingUpdateNotesStaffView,
    BookingUpdateNotesUserView,
    CategoryCreateView,
    CategoryListView,
    CategoryUpdateView,
    download_calendar,
    LocationCreateView,
    LocationDetailView,
    LocationListView,
    LocationUpdateView,
    RotaCreateView,
    RotaDeleteView,
    RotaTypeCreateView,
    RotaTypeListView,
    RotaTypeUpdateView,
    RotaUpdateView,
)

urlpatterns = [
    url(regex=r'^$',
        view=BookingListView.as_view(),
        name='booking.list'
        ),
    url(regex=r'^(?P<pk>\d+)/$',
        view=BookingDetailView.as_view(),
        name='booking.detail'
        ),
    url(regex=r'^(?P<pk>\d+)/delete/$',
        view=BookingDeleteView.as_view(),
        name='booking.delete'
        ),
    url(regex=r'^(?P<year>\d{4})/(?P<month>\d+)/$',
        view=BookingListMonthView.as_view(),
        name='booking.list.month'
        ),
    url(regex=r'^(?P<pk>\d+)/update/notes/staff/$',
        view=BookingUpdateNotesStaffView.as_view(),
        name='booking.update.notes.staff'
        ),
    url(regex=r'^(?P<pk>\d+)/update/notes/user/$',
        view=BookingUpdateNotesUserView.as_view(),
        name='booking.update.notes.user'
        ),
    url(regex=r'^category/$',
        view=CategoryListView.as_view(),
        name='booking.category.list'
        ),
    url(regex=r'^category/create/$',
        view=CategoryCreateView.as_view(),
        name='booking.category.create'
        ),
    url(regex=r'^category/(?P<pk>\d+)/update/$',
        view=CategoryUpdateView.as_view(),
        name='booking.category.update'
        ),
    url(regex=r'^download/$',
        view=download_calendar,
        name='booking.download.calendar'
        ),
    url(regex=r'^location/$',
        view=LocationListView.as_view(),
        name='booking.location.list'
        ),
    url(regex=r'^location/create/$',
        view=LocationCreateView.as_view(),
        name='booking.location.create'
        ),
    url(regex=r'^location/(?P<pk>\d+)/$',
        view=LocationDetailView.as_view(),
        name='booking.location'
        ),
    url(regex=r'^location/(?P<pk>\d+)/update/$',
        view=LocationUpdateView.as_view(),
        name='booking.location.update'
        ),
    url(regex=r'^rota/(?P<pk>\d+)/create/$',
        view=RotaCreateView.as_view(),
        name='booking.rota.create'
        ),
    url(regex=r'^rota/(?P<pk>\d+)/delete/$',
        view=RotaDeleteView.as_view(),
        name='booking.rota.delete'
        ),
    url(regex=r'^rota/(?P<pk>\d+)/update/$',
        view=RotaUpdateView.as_view(),
        name='booking.rota.update'
        ),
    url(regex=r'^rota/type/$',
        view=RotaTypeListView.as_view(),
        name='booking.rota.type.list'
        ),
    url(regex=r'^rota/type/create/$',
        view=RotaTypeCreateView.as_view(),
        name='booking.rota.type.create'
        ),
    url(regex=r'^rota/type/(?P<pk>\d+)/update/$',
        view=RotaTypeUpdateView.as_view(),
        name='booking.rota.type.update'
        ),
]


text:
require 'rubygems'
require 'autotest'
require 'rbconfig'
require File.join(File.dirname(__FILE__), 'result')

##
# Autotest::Growl
#
# == FEATUERS:
# * Display autotest results as local or remote Growl notifications.
# * Clean the terminal on every test cycle while maintaining scrollback.
#
# == SYNOPSIS:
# ~/.autotest
#   require 'autotest/growl'
module Autotest::Growl

  GEM_PATH = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))

  @label = ''
  @modified_files = []
  @ran_tests = false
  @ran_features = false

  @@remote_notification = false
  @@one_notification_per_run = false
  @@sticky_failure_notifications = false
  @@custom_options = ''
  @@clear_terminal = true
  @@hide_label = false
  @@label_override = nil
  @@show_modified_files = false
  @@image_dir = File.join(GEM_PATH, 'img', 'ruby')

  ##
  # Whether to use remote or local notificaton (default).
  def self.remote_notification=(boolean)
    @@remote_notification = boolean
  end

  ##
  # Whether to limit the number of notifications per run to one or not (default).
  def self.one_notification_per_run=(boolean)
    @@one_notification_per_run = boolean
  end

  ##
  # Whether to make failure and error notifications sticky.
  def self.sticky_failure_notifications=(boolean)
    @@sticky_failure_notifications = boolean
  end

  ##
  # Custom options passed to the notification binary
  def self.custom_options=(options)
    @@custom_options = options
  end

  ##
  # Whether to clear the terminal before running tests (default) or not.
  def self.clear_terminal=(boolean)
    @@clear_terminal = boolean
  end

  ##
  # Whether to display the label (default) or not.
  def self.hide_label=(boolean)
    @@hide_label = boolean
  end

  ##
  # Set the label to be shown.
  def self.label=(string)
    @@label_override = string
  end

  ##
  # Whether to display the modified files or not (default).
  def self.show_modified_files=(boolean)
    @@show_modified_files = boolean
  end

  ##
  # Directory where notification icons can be found
  def self.image_dir=(path)
    if File.directory?(File.join(GEM_PATH, 'img', path))
      @@image_dir = File.join(GEM_PATH, 'img', path)
    else
      @@image_dir = path
    end
  end

  ##
  # Display a message through Growl.
  def self.growl(title, message, icon, priority=0, sticky=false)
    growl = File.join(GEM_PATH, 'growl', 'growlnotify')
    sender = 'Autotest'
    image = File.join(@@image_dir, "#{icon}.png")
    case RbConfig::CONFIG['host_os']
    when /mac os|darwin/i
      options = %(-n "#{sender}" --image "#{image}" -p #{priority} -m "#{message}" "#{title}" #{'-s' if sticky} #{@@custom_options})
      options << " -H localhost" if @@remote_notification
      system %(#{growl} #{options} &)
    when /linux|bsd/i
      growl = 'notify-send'
      options = %("#{title}" "#{message}" -i #{image} -t 5000 #{@@custom_options})
      system %(#{growl} #{options})
    when /windows|mswin|mingw|cygwin/i
      growl += '.com'
			image = `cygpath -w #{image}` if RbConfig::CONFIG['host_os'] =~ /cygwin/i
      options = %(/a:"#{sender}" /n:"#{sender}-#{icon}" /i:"#{image}" /p:#{priority} /t:"#{title}" /s:#{sticky} /silent:true)
      options << %( /r:"#{sender}-failed","#{sender}-passed","#{sender}-pending","#{sender}-error","#{sender}-info")
      system %(#{growl} #{message.inspect} #{options})
    else
      raise "#{RbConfig::CONFIG['host_os']} is not supported by autotest-growl (feel free to submit a patch)"
    end
  end

  ##
  # Display the modified files.
  Autotest.add_hook :updated do |autotest, modified|
    @ran_tests = @ran_features = false
    if @@show_modified_files
      if modified != @last_modified
        growl @label + 'Modifications detected.', modified.collect {|m| m[0]}.join(', '), 'info', 0
        @last_modified = modified
      end
    end
    false
  end

  ##
  # Set the label and clear the terminal.
  Autotest.add_hook :run_command do
    @label = (@@label_override || File.basename(Dir.pwd).upcase)  + ': ' if !@@hide_label
    print "\n"*2 + '-'*80 + "\n"*2
    print "\e[2J\e[f" if @@clear_terminal
    false
  end

  ##
  # Parse the RSpec and Test::Unit results and send them to Growl.
  Autotest.add_hook :ran_command do |autotest|
    unless @@one_notification_per_run && @ran_tests
      result = Autotest::Result.new(autotest)
      if result.exists?
        case result.framework
        when 'test-unit'
          if result.has?('test-error')
            growl @label + 'Cannot run some unit tests.', "#{result.get('test-error')} in #{result.get('test')}", 'error', 2, @@sticky_failure_notifications
          elsif result.has?('test-failed')
            growl @label + 'Some unit tests failed.', "#{result['test-failed']} of #{result.get('test-assertion')} in #{result.get('test')} failed", 'failed', 2, @@sticky_failure_notifications
          else
            growl @label + 'All unit tests passed.', "#{result.get('test-assertion')} in #{result.get('test')}", 'passed', -2
          end
        when 'rspec'
          if result.has?('example-failed')
            growl @label + 'Some RSpec examples failed.', "#{result['example-failed']} of #{result.get('example')} failed", 'failed', 2, @@sticky_failure_notifications
          elsif result.has?('example-pending')
            growl @label + 'Some RSpec examples are pending.', "#{result['example-pending']} of #{result.get('example')} pending", 'pending', -1
          else
            growl @label + 'All RSpec examples passed.', "#{result.get('example')}", 'passed', -2
          end
        end
      else
        growl @label + 'Could not run tests.', '', 'error', 2, @@sticky_failure_notifications
      end
      @ran_tests = true
    end
    false
  end

  ##
  # Parse the Cucumber results and sent them to Growl.
  Autotest.add_hook :ran_features do |autotest|
    unless @@one_notification_per_run && @ran_features
      result = Autotest::Result.new(autotest)
      if result.exists?
        case result.framework
        when 'cucumber'
          explanation = []
          if result.has?('scenario-undefined') || result.has?('step-undefined')
            explanation << "#{result['scenario-undefined']} of #{result.get('scenario')} not defined" if result['scenario-undefined']
            explanation << "#{result['step-undefined']} of #{result.get('step')} not defined" if result['step-undefined']
            growl @label + 'Some Cucumber scenarios are not defined.', "#{explanation.join("\n")}", 'pending', -1
          elsif result.has?('scenario-failed') || result.has?('step-failed')
            explanation << "#{result['scenario-failed']} of #{result.get('scenario')} failed" if result['scenario-failed']
            explanation << "#{result['step-failed']} of #{result.get('step')} failed" if result['step-failed']
            growl @label + 'Some Cucumber scenarios failed.', "#{explanation.join("\n")}", 'failed', 2, @@sticky_failure_notifications
          elsif result.has?('scenario-pending') || result.has?('step-pending')
            explanation << "#{result['scenario-pending']} of #{result.get('scenario')} pending" if result['scenario-pending']
            explanation << "#{result['step-pending']} of #{result.get('step')} pending" if result['step-pending']
            growl @label + 'Some Cucumber scenarios are pending.', "#{explanation.join("\n")}", 'pending', -1
          else
            growl @label + 'All Cucumber features passed.', '', 'passed', -2
          end
        end
      else
        growl @label + 'Could not run features.', '', 'error', 2, @@sticky_failure_notifications
      end
      @ran_features = true
    end
    false
  end

end


text:
namespace ROCKSDB_NAMESPACE {

class SstFileDumper {
 public:
  explicit SstFileDumper(const Options& options, const std::string& file_name,
                         size_t readahead_size, bool verify_checksum,
                         bool output_hex, bool decode_blob_index);

  Status ReadSequential(bool print_kv, uint64_t read_num, bool has_from,
                        const std::string& from_key, bool has_to,
                        const std::string& to_key,
                        bool use_from_as_prefix = false);

  Status ReadTableProperties(
      std::shared_ptr<const TableProperties>* table_properties);
  uint64_t GetReadNumber() { return read_num_; }
  TableProperties* GetInitTableProperties() { return table_properties_.get(); }

  Status VerifyChecksum();
  Status DumpTable(const std::string& out_filename);
  Status getStatus() { return init_result_; }

  int ShowAllCompressionSizes(
      size_t block_size,
      const std::vector<std::pair<CompressionType, const char*>>&
        compression_types,
      int32_t compress_level_from,
      int32_t compress_level_to);

  int ShowCompressionSize(
      size_t block_size,
      CompressionType compress_type,
      const CompressionOptions& compress_opt);

 private:
  // Get the TableReader implementation for the sst file
  Status GetTableReader(const std::string& file_path);
  Status ReadTableProperties(uint64_t table_magic_number,
                             RandomAccessFileReader* file, uint64_t file_size,
                             FilePrefetchBuffer* prefetch_buffer);

  uint64_t CalculateCompressedTableSize(const TableBuilderOptions& tb_options,
                                        size_t block_size,
                                        uint64_t* num_data_blocks);

  Status SetTableOptionsByMagicNumber(uint64_t table_magic_number);
  Status SetOldTableOptions();

  // Helper function to call the factory with settings specific to the
  // factory implementation
  Status NewTableReader(const ImmutableCFOptions& ioptions,
                        const EnvOptions& soptions,
                        const InternalKeyComparator& internal_comparator,
                        uint64_t file_size,
                        std::unique_ptr<TableReader>* table_reader);

  std::string file_name_;
  uint64_t read_num_;
  bool output_hex_;
  bool decode_blob_index_;
  EnvOptions soptions_;

  // options_ and internal_comparator_ will also be used in
  // ReadSequential internally (specifically, seek-related operations)
  Options options_;

  Status init_result_;
  std::unique_ptr<TableReader> table_reader_;
  std::unique_ptr<RandomAccessFileReader> file_;

  const ImmutableCFOptions ioptions_;
  const MutableCFOptions moptions_;
  ReadOptions read_options_;
  InternalKeyComparator internal_comparator_;
  std::unique_ptr<TableProperties> table_properties_;
};

}  // namespace ROCKSDB_NAMESPACE

#endif  // ROCKSDB_LITE


text:
@interface MOBProjectionEPSG2491 : MOBProjection

@end


text:
<?php

use Codeception\Attribute\Group;

class TryToCest
{
    #[Group('ignore')]
    public function ignoreFailure(RetryTester $I)
    {
        $I->tryToFailAt(1);
    }
}


text:
//==============================================================================
//         Copyright 2003 - 2011   LASMEA UMR 6602 CNRS/Univ. Clermont II
//         Copyright 2009 - 2011   LRI    UMR 8623 CNRS/Univ Paris Sud XI
//
//          Distributed under the Boost Software License, Version 1.0.
//                 See accompanying file LICENSE.txt or copy at
//                     http://www.boost.org/LICENSE_1_0.txt
//==============================================================================
#ifndef NT2_IEEE_FUNCTIONS_EXPONENTBITS_HPP_INCLUDED
#define NT2_IEEE_FUNCTIONS_EXPONENTBITS_HPP_INCLUDED

#include <boost/simd/ieee/include/functions/exponentbits.hpp>
#include <nt2/include/functor.hpp>

/* Automatically generated for module core.base */

namespace nt2
{
  namespace tag
  {
    #ifdef DOXYGEN_ONLY
    /*! \brief Same as \classref{boost::simd::tag::exponentbits_} **/
    struct exponentbits_ {};
    #endif
    using boost::simd::tag::exponentbits_;
  }

  #ifdef DOXYGEN_ONLY
  /*! \brief Same as \funcref{boost::simd::exponentbits} **/
  template<class... Args>
  details::unspecified exponentbits(Args&&... args);
  #endif
  using boost::simd::exponentbits;
}

#endif


text:
package psidev.psi.mi.jami.enricher.listener.impl;

import psidev.psi.mi.jami.enricher.listener.OrganismEnricherListener;
import psidev.psi.mi.jami.model.Alias;
import psidev.psi.mi.jami.model.CvTerm;
import psidev.psi.mi.jami.model.Organism;

/**
 * A manager for listeners which holds a list of listeners.
 * Listener manager allows enrichers to send events to multiple listeners.
 * A listener itself, it implements all methods
 * which will then fire the corresponding method in each entry of the listener list.
 * No promise can be given to the order in which the listeners are fired.
 *
 * @author Gabriel Aldam (galdam@ebi.ac.uk)
 * @since 08/07/13

 */
public class OrganismEnricherListenerManager
        extends EnricherListenerManager<Organism, OrganismEnricherListener>
        implements OrganismEnricherListener{

    /**
     * A constructor to create a listener manager with no listeners.
     */
    public OrganismEnricherListenerManager(){}

    /**
     * A constructor to initiate a listener manager with as many listeners as required.
     *
     * @param listeners     The listeners to add.
     */
    public OrganismEnricherListenerManager(OrganismEnricherListener... listeners){
        super(listeners);
    }

    //===================================================================================================

    /** {@inheritDoc} */
    public void onCommonNameUpdate(Organism organism, String oldCommonName) {
        for(OrganismEnricherListener listener : getListenersList()){
            listener.onCommonNameUpdate(organism, oldCommonName);
        }
    }

    /** {@inheritDoc} */
    public void onScientificNameUpdate(Organism organism, String oldScientificName) {
        for(OrganismEnricherListener listener : getListenersList()){
            listener.onScientificNameUpdate(organism, oldScientificName);
        }
    }

    /** {@inheritDoc} */
    public void onTaxidUpdate(Organism organism, String oldTaxid) {
        for(OrganismEnricherListener listener : getListenersList()){
            listener.onTaxidUpdate(organism, oldTaxid);
        }
    }

    /** {@inheritDoc} */
    public void onCellTypeUpdate(Organism organism, CvTerm oldType) {
        for(OrganismEnricherListener listener : getListenersList()){
            listener.onCellTypeUpdate(organism, oldType);
        }
    }

    /** {@inheritDoc} */
    public void onTissueUpdate(Organism organism, CvTerm oldType) {
        for(OrganismEnricherListener listener : getListenersList()){
            listener.onTissueUpdate(organism, oldType);
        }
    }

    /** {@inheritDoc} */
    public void onCompartmentUpdate(Organism organism, CvTerm oldType) {
        for(OrganismEnricherListener listener : getListenersList()){
            listener.onCompartmentUpdate(organism, oldType);
        }
    }

    /** {@inheritDoc} */
    public void onAddedAlias(Organism organism, Alias added) {
        for(OrganismEnricherListener listener : getListenersList()){
            listener.onAddedAlias(organism, added);
        }
    }

    /** {@inheritDoc} */
    public void onRemovedAlias(Organism organism, Alias removed) {
        for(OrganismEnricherListener listener : getListenersList()){
            listener.onRemovedAlias(organism, removed);
        }
    }
}


text:
function onRequest(context) {
    var deviceTypes = context.unit.params.deviceTypes;
    var deviceType = "senseme";

    var deviceTypesList = [];
    if (deviceTypes) {
        for (var i = 0; i < deviceTypes.length; i++) {
            deviceTypesList.push(deviceTypes[i].type);
        }
    } else if (deviceType) {
        deviceTypesList.push(deviceType);
    }
    return {"deviceTypes": stringify(deviceTypesList)};
}