<template>
  <div class="counter">
    <button @click="subtract()">-</button>
    <pre>{{ count }}</pre>
    <button @click="add()">+</button>
  </div>
  <div class="children">
    <slot />
  </div>
</template>

<script>
import { ref } from 'vue';
export default {
  setup() {
    const count = ref(0);
    const add = () => (count.value = count.value + 1);
    const subtract = () => (count.value = count.value - 1);

    return {
      count,
      add,
      subtract,
    };
  },
};
</script>
lass='main'><a href='/'>index</a> : <a href='/ansg191/it-tools/'>it-tools</a></td><td class='form'><form method='get'>
<input type='hidden' name='id' value='2c2fb216e36e5c4be0a6f6e2977da7a7363535f7'/><input type='hidden' name='showmsg' value='1'/><select name='h' onchange='this.form.submit();'>
<option value='argon2'>argon2</option>
<option value='card-hover'>card-hover</option>
<option value='dev'>dev</option>
<option value='dev-backup'>dev-backup</option>
<option value='docker-run-to-docker-compose-converter'>docker-run-to-docker-compose-converter</option>
<option value='ed25519-key-pair-generator'>ed25519-key-pair-generator</option>
<option value='feat/jwt-parser'>feat/jwt-parser</option>
<option value='landing-page'>landing-page</option>
<option value='main' selected='selected'>main</option>
<option value='master'>master</option>
<option value='ssg'>ssg</option>
<option value='svg-mesh-gradient-generator'>svg-mesh-gradient-generator</option>
<option value='update-dependencies'>update-dependencies</option>
<option value='update-deps'>update-deps</option>
</select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>Unnamed repository; edit this file 'description' to name the repository.</td><td class='sub right'></td></tr></table>
<table class='tabs'><tr><td>
<a href='/ansg191/it-tools/about/'>about</a><a href='/ansg191/it-tools/'>summary</a><a href='/ansg191/it-tools/refs/?id=2c2fb216e36e5c4be0a6f6e2977da7a7363535f7'>refs</a><a class='active' href='/ansg191/it-tools/log/src/tools/json-diff/json-diff.e2e.spec.ts?showmsg=1&amp;follow=1'>log</a><a href='/ansg191/it-tools/tree/src/tools/json-diff/json-diff.e2e.spec.ts?id=2c2fb216e36e5c4be0a6f6e2977da7a7363535f7'>tree</a><a href='/ansg191/it-tools/commit/src/tools/json-diff/json-diff.e2e.spec.ts?id=2c2fb216e36e5c4be0a6f6e2977da7a7363535f7&amp;follow=1'>commit</a><a href='/ansg191/it-tools/diff/src/tools/json-diff/json-diff.e2e.spec.ts?id=2c2fb216e36e5c4be0a6f6e2977da7a7363535f7&amp;follow=1'>diff</a></td><td class='form'><form class='right' method='get' action='/ansg191/it-tools/log/src/tools/json-diff/json-diff.e2e.spec.ts'>
<input type='hidden' name='id' value='2c2fb216e36e5c4be0a6f6e2977da7a7363535f7'/><input type='hidden' name='showmsg' value='1'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/ansg191/it-tools/log/?id=2c2fb216e36e5c4be0a6f6e2977da7a7363535f7&amp;showmsg=1&amp;follow=1'>root</a>/<a href='/ansg191/it-tools/log/src?id=2c2fb216e36e5c4be0a6f6e2977da7a7363535f7&amp;showmsg=1&amp;follow=1'>src</a>/<a href='/ansg191/it-tools/log/src/tools?id=2c2fb216e36e5c4be0a6f6e2977da7a7363535f7&amp;showmsg=1&amp;follow=1'>tools</a>/<a href='/ansg191/it-tools/log/src/tools/json-diff?id=2c2fb216e36e5c4be0a6f6e2977da7a7363535f7&amp;showmsg=1&amp;follow=1'>json-diff</a>/<a href='/ansg191/it-tools/log/src/tools/json-diff/json-diff.e2e.spec.ts?id=2c2fb216e36e5c4be0a6f6e2977da7a7363535f7&amp;showmsg=1&amp;follow=1'>json-diff.e2e.spec.ts</a> (<a href='/ansg191/it-tools/log/src/tools/json-diff/json-diff.e2e.spec.ts?id=2c2fb216e36e5c4be0a6f6e2977da7a7363535f7&amp;showmsg=1'>unfollow</a>)</div><div class='content'><table class='list nowrap'><tr class='nohover'><th class='left'>Age</th><th class='left'>Commit message (<a href='/ansg191/it-tools/log/src/tools/json-diff/json-diff.e2e.spec.ts?id=2c2fb216e36e5c4be0a6f6e2977da7a7363535f7&amp;follow=1'>Collapse</a>)</th><th class='left'>Author</th><th class='left'>Files</th><th class='left'>Lines</th></tr>
<tr class='logheader'><td><span title='2024-05-05 18:49:31 +0200'>2024-05-05</span></td><td class='logsubject'><a href='/ansg191/it-tools/commit/locales/en.yml?id=221ddfa75c5731d7a5dc1f0b03663ba4fd9e7965&amp;follow=1'>fix(language): English language cleanup (#1036)</a></td><td><img src='//www.gravatar.com/avatar/dea90dc264e1e29a82bd478f421c97f3?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Christopher Conley
</td><td>1</td><td><span class='deletions'>-45</span>/<span class='insertions'>+45</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
Fix possessive vs. contraction form of "it," clarification, and some general cleanup

</td></tr>
<tr class='logheader'><td><span title='2024-04-29 11:58:08 +0200'>2024-04-29</span></td><td class='logsubject'><a href='/ansg191/it-tools/commit/src/tools/url-encoder/url-encoder.vue?id=cb5b462e119d4231b5c07b4ef0ca24ec84ceee8b&amp;follow=1'>fix(url-encoder, validation): typo in validation of url-encoder.vue #1024</a></td><td><img src='//www.gravatar.com/avatar/1b68cde2b99e61bdd22498a48c420fd6?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Pavel Gordon
</td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2024-04-22 08:45:51 +0200'>2024-04-22</span></td><td class='logsubject'><a href='/ansg191/it-tools/commit/src/tools/integer-base-converter/integer-base-converter.model.ts?id=9eac9cb2a9d23619b0d3c044f1bc1385aab427e4&amp;follow=1'>fix(integer base converter): support bigint (#872)</a></td><td><img src='//www.gravatar.com/avatar/2f1de1fd1b3f8e6593aa8f516122f985?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> sharevb
</td><td>2</td><td><span class='deletions'>-5</span>/<span class='insertions'>+8</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2024-04-15 09:43:12 +0200'>2024-04-15</span></td><td class='logsubject'><a href='/ansg191/it-tools/commit/src/tools/bcrypt/bcrypt.vue?id=23f82d956a8af21e176f7268c9414244168bd4eb&amp;follow=1'>fix(bcrypt tool): allow salt rounds up to 100 (#987)</a></td><td><img src='//www.gravatar.com/avatar/2f1de1fd1b3f8e6593aa8f516122f985?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> sharevb
</td><td>4</td><td><span class='deletions'>-5</span>/<span class='insertions'>+5</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
* fix(bcrypt tool): allow salt rounds up to 100

Previously max salt rounds was 10

* chore(github workflows): ci and e2e tests: try updating to node 20

</td></tr>
<tr class='logheader'><td><span title='2024-03-11 10:19:32 +0000'>2024-03-11</span></td><td class='logsubject'><a href='/ansg191/it-tools/commit/src/tools/safelink-decoder/safelink-decoder.vue?id=d3b32cc14ee127f2a996c5ab0957e20ddc36dd5e&amp;follow=1'>feat(new tool): Outlook Safelink Decoder (#911)</a></td><td><img src='//www.gravatar.com/avatar/2f1de1fd1b3f8e6593aa8f516122f985?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> sharevb
</td><td>5</td><td><span class='deletions'>-1</span>/<span class='insertions'>+74</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
* feat(new tool): Outlook Safelink Decoder

Fix #897

* Use native URL parsing

Co-authored-by: Corentin THOMASSET &lt;corentin.thomasset74@gmail.com&gt;

* Update src/tools/safelink-decoder/index.ts

---------

Co-authored-by: Corentin THOMASSET &lt;corentin.thomasset74@gmail.com&gt;

</td></tr>
<tr class='logheader'><td><span title='2024-03-03 10:37:09 +0000'>2024-03-03</span></td><td class='logsubject'><a href='/ansg191/it-tools/commit/src/tools/index.ts?id=fe349ad69b6a14e0f4b56bef12a6d800c7e6fa1f&amp;follow=1'>feat(new tool): ascii art generator (#886)</a></td><td><img src='//www.gravatar.com/avatar/2f1de1fd1b3f8e6593aa8f516122f985?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> sharevb
</td><td>6</td><td><span class='deletions'>-28</span>/<span class='insertions'>+139</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
* feat(new tool): ascii art generator

Fix #829 ; Text ASCII Art Generator (using figlet)

* fix: make fonts list searchable

* refactor(ascii-generator): updated tool definition

* refactor(ascii-generator): equilibrate ui

---------

Co-authored-by: Corentin Thomasset &lt;corentin.thomasset74@gmail.com&gt;

</td></tr>
<tr class='logheader'><td><span title='2024-02-12 13:31:21 +0000'>2024-02-12</span></td><td class='logsubject'><a href='/ansg191/it-tools/commit/src/components/ToolCard.vue?id=a07806cd15fdbd24c88afaf618a2d0c16d66bb3f&amp;follow=1'>refactor(home): lightened tool cards (#882)</a></td><td><img src='//www.gravatar.com/avatar/54f6060db8779300271f0e188f0de9b1?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Corentin THOMASSET
</td><td>1</td><td><span class='deletions'>-53</span>/<span class='insertions'>+16</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2024-02-12 09:30:41 +0000'>2024-02-12</span></td><td class='logsubject'><a href='/ansg191/it-tools/commit/src/pages/Home.page.vue?id=10e56b35bb1bb96549be6ea2ad120525ed373e01&amp;follow=1'>refactor(home): removed n-grid to prevent layout shift (#881)</a></td><td><img src='//www.gravatar.com/avatar/54f6060db8779300271f0e188f0de9b1?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Corentin THOMASSET
</td><td>1</td><td><span class='deletions'>-55</span>/<span class='insertions'>+39</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2024-02-11 00:33:52 +0100'>2024-02-11</span></td><td class='logsubject'><a href='/ansg191/it-tools/commit/vite.config.ts?id=dc0461595f1c3de0c475424a9f6e1a72fe4f11aa&amp;follow=1'>feat(i18n): get locales on build (#880)</a></td><td><img src='//www.gravatar.com/avatar/54f6060db8779300271f0e188f0de9b1?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Corentin THOMASSET
</td><td>478</td><td><span class='deletions'>-1143</span>/<span class='insertions'>+1027</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2024-02-05 10:09:07 +0000'>2024-02-05</span></td><td class='logsubject'><a href='/ansg191/it-tools/commit/src/tools/yaml-viewer/locales/vi.yml?id=079aa2164c3836fce38ddeab7e79c2d51e0595b3&amp;follow=1'>feat(i18n): added vi tools translations (#876)</a></td><td><img src='//www.gravatar.com/avatar/9828da2ddc10ec85f64902788c97c8e6?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> David Nguyen
</td><td>79</td><td><span class='deletions'>-3</span>/<span class='insertions'>+326</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
* Update Vietnamese translations in vi.yml file

* Add Vietnamese translations for various tools

</td></tr>
<tr class='logheader'><td><span title='2024-02-05 11:06:36 +0100'>2024-02-05</span></td><td class='logsubject'><a href='/ansg191/it-tools/commit/src/tools/yaml-viewer/locales/zh.yml?id=9c6b12225e5e18a92442a079ff1f4776f14db188&amp;follow=1'>feat(i18n): added zh tools translations (#874)</a></td><td><img src='//www.gravatar.com/avatar/bf473c0eff08eda8664783306cfc5b2a?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> QingFeng
</td><td>78</td><td><span class='deletions'>-0</span>/<span class='insertions'>+323</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2024-02-01 17:05:05 +0000'>2024-02-01</span></td><td class='logsubject'><a href='/ansg191/it-tools/commit/src/tools/yaml-viewer/locales/zh.yml?id=7f5fa001473bca4c2a7cf7952c7586546e9da9a8&amp;follow=1'>feat(i18n): added missing locale files in tools (#863)</a></td><td><img src='//www.gravatar.com/avatar/54f6060db8779300271f0e188f0de9b1?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Corentin THOMASSET
</td><td>312</td><td><span class='deletions'>-0</span>/<span class='insertions'>+61</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2024-02-01 14:47:09 +0100'>2024-02-01</span></td><td class='logsubject'><a href='/ansg191/it-tools/commit/src/tools/text-to-unicode/text-to-unicode.vue?id=1334bff30a8ce3fbd269438de774b5569dbee6ef&amp;follow=1'>feat(i18n): added vietnamese language (#859)</a></td><td><img src='//www.gravatar.com/avatar/f7ed1b3759e432d35aa87068812dbe74?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> hieudt-2054
</td><td>3</td><td><span class='deletions'>-2</span>/<span class='insertions'>+74</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2024-02-01 14:05:54 +0100'>2024-02-01</span></td><td class='logsubject'><a href='/ansg191/it-tools/commit/src/tools/yaml-viewer/locales/en.yml?id=95698cb9380d541b86144df4ee5fae310c234f20&amp;follow=1'>refactor(i18n): added locales per tool (#861)</a></td><td><img src='//www.gravatar.com/avatar/54f6060db8779300271f0e188f0de9b1?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Corentin THOMASSET
</td><td>154</td><td><span class='deletions'>-168</span>/<span class='insertions'>+539</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2024-01-31 10:10:21 +0000'>2024-01-31</span></td><td class='logsubject'><a href='/ansg191/it-tools/commit/src/tools/token-generator/locales/es.yaml?id=85b50bb8f0effc7de7f3050ee51b6e1d3b5acbf5&amp;follow=1'>feat(i18n): added spanish language (#854)</a></td><td><img src='//www.gravatar.com/avatar/3ed1a9dbb8ffd03237612023ba31e814?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Raúl Mora
</td><td>2</td><td><span class='deletions'>-0</span>/<span class='insertions'>+86</span></td></tr>
<tr class='nohover-highlight'><td/><td colspan='5' class='logmsg'>
* spanish

translation

* Create es.yaml

</td></tr>
