<?xml version="1.0"?>
<puzzles xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.0pdd.com/puzzles.xsd" date="2019-08-21T09:11:51+00:00" version="0.30.18">
  <puzzle alive="false">
    <issue href="https://github.com/g4s8/ghman/issues/2" closed="2019-06-16T20:05:39+00:00">2</issue>
    <ticket>1</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1-b3595789</id>
    <lines>57-59</lines>
    <body>Refactor this class: move actual logic to separate takes and keep only composition structure in this class.</body>
    <file>src/main/java/com/g4s8/ghman/bot/BotApp.java</file>
    <author>@g4s8</author>
    <email>g4s8.public@gmail.com</email>
    <time>2019-05-22T18:42:07Z</time>
    <children>
      <puzzle alive="true">
        <issue href="https://github.com/g4s8/ghman/issues/34">34</issue>
        <ticket>2</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2-96a53d17</id>
        <lines>41-42</lines>
        <body>Implement Unit tests for TkThread class * use JUNIT and cactoos-matchers wrapper.</body>
        <file>src/main/java/com/g4s8/ghman/bot/TkThread.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2019-06-15T17:43:07Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/g4s8/ghman/issues/35" closed="2019-07-30T07:50:56+00:00">35</issue>
        <ticket>2</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2-553fe7c5</id>
        <lines>43-44</lines>
        <body>Fix the ClassDataAbstractionCouplingCheck rule exclusion in TkThread class. This class is too complex.</body>
        <file>src/main/java/com/g4s8/ghman/bot/TkThread.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2019-06-15T17:43:07Z</time>
        <children>
          <puzzle alive="true">
            <issue href="https://github.com/g4s8/ghman/issues/82">82</issue>
            <ticket>35</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>35-3f32769a</id>
            <lines>30-31</lines>
            <body>Implement Unit tests for this class using junit, cactoos-matchers and fake class (no mocks).</body>
            <file>src/main/java/com/g4s8/ghman/bot/ThreadIssueButtons.java</file>
            <author>Victor No&#xEB;l</author>
            <email>victor.noel@crazydwarves.org</email>
            <time>2019-07-21T15:08:38Z</time>
            <children/>
          </puzzle>
          <puzzle alive="true">
            <issue href="https://github.com/g4s8/ghman/issues/83">83</issue>
            <ticket>35</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>35-959a3c21</id>
            <lines>33-34</lines>
            <body>Implement Unit tests for this class, use junit, cactoos-matchers and fake class (no mocks).</body>
            <file>src/main/java/com/g4s8/ghman/bot/ThreadIssueText.java</file>
            <author>Victor No&#xEB;l</author>
            <email>victor.noel@crazydwarves.org</email>
            <time>2019-07-29T18:38:18Z</time>
            <children/>
          </puzzle>
          <puzzle alive="true">
            <issue href="https://github.com/g4s8/ghman/issues/84">84</issue>
            <ticket>35</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>35-c5a279fc</id>
            <lines>40-42</lines>
            <body>Fix the ClassDataAbstractionCouplingCheck rule exclusion in this class. It is too complex, some more abstraction should be brought outside of it.</body>
            <file>src/main/java/com/g4s8/ghman/bot/TkThread.java</file>
            <author>Victor No&#xEB;l</author>
            <email>victor.noel@crazydwarves.org</email>
            <time>2019-07-29T18:40:42Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/g4s8/ghman/issues/36" closed="2019-08-06T14:20:15+00:00">36</issue>
        <ticket>2</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2-3058e513</id>
        <lines>37-38</lines>
        <body>Fix the ClassDataAbstractionCouplingCheck &amp; PMD rule exclusions in BotApp class</body>
        <file>src/main/java/com/g4s8/ghman/bot/BotApp.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2019-06-15T17:43:07Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/g4s8/ghman/issues/37" closed="2019-07-17T15:45:19+00:00">37</issue>
        <ticket>2</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2-b383a27b</id>
        <lines>31-32</lines>
        <body>Implement Unit tests for FbUnauthorized class use JUNIT and cactoos-matchers wrapper.</body>
        <file>src/main/java/com/g4s8/ghman/bot/FbUnauthorized.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2019-06-15T17:43:07Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/g4s8/ghman/issues/38" closed="2019-07-17T15:27:10+00:00">38</issue>
        <ticket>2</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2-1a5a79e9</id>
        <lines>40-41</lines>
        <body>Implement Unit tests for TkNotifications class. Refer to takes framework Unit testing guide @ https://github.com/yegor256/takes#unit-testing</body>
        <file>src/main/java/com/g4s8/ghman/bot/TkNotifications.java</file>
        <author>Samih Omer</author>
        <email>samihomer3@hotmail.com</email>
        <time>2019-06-16T17:48:08Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/g4s8/ghman/issues/3">3</issue>
    <ticket>1</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1-16f6d808</id>
    <lines>32-33</lines>
    <body>Move this class to g4s8/teletakes library: submit PR, merge it and update dependency then.</body>
    <file>src/main/java/com/g4s8/ghman/bot/TkMarkdown.java</file>
    <author>@g4s8</author>
    <email>g4s8.public@gmail.com</email>
    <time>2019-05-22T18:42:07Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/g4s8/ghman/issues/4" closed="2019-06-16T20:05:41+00:00">4</issue>
    <ticket>1</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1-ba24450c</id>
    <lines>54-57</lines>
    <body>Refactor this class: extract additional classes for takes and pass, move actual logic to these classes, keep only composition structure in TkApp.</body>
    <file>src/main/java/com/g4s8/ghman/web/TkApp.java</file>
    <author>@g4s8</author>
    <email>g4s8.public@gmail.com</email>
    <time>2019-05-22T18:42:07Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/g4s8/ghman/issues/39" closed="2019-07-17T11:30:36+00:00">39</issue>
        <ticket>4</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>4-0806f129</id>
        <lines>30-31</lines>
        <body>Implement unit tests for PsUserById. Refer to takes framework Unit testing guide @ https://github.com/yegor256/takes#unit-testing</body>
        <file>src/main/java/com/g4s8/ghman/web/PsUserById.java</file>
        <author>Samih Omer</author>
        <email>samihomer3@hotmail.com</email>
        <time>2019-06-16T17:48:08Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/g4s8/ghman/issues/40" closed="2019-07-11T15:25:35+00:00">40</issue>
        <ticket>4</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>4-ff388267</id>
        <lines>33-34</lines>
        <body>Replace the call to static method String.format with the use of cactoos' text.Formatted class in all files.</body>
        <file>src/main/java/com/g4s8/ghman/web/FkGitHubAuthRedirection.java</file>
        <author>Samih Omer</author>
        <email>samihomer3@hotmail.com</email>
        <time>2019-06-08T15:28:16Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/g4s8/ghman/issues/41" closed="2019-07-12T07:19:13+00:00">41</issue>
        <ticket>4</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>4-05012186</id>
        <lines>35-36</lines>
        <body>Implement unit tests for FkGitHubAuthRedirection. Refer to takes framework Unit testing guide @ https://github.com/yegor256/takes#unit-testing</body>
        <file>src/main/java/com/g4s8/ghman/web/FkGitHubAuthRedirection.java</file>
        <author>Samih Omer</author>
        <email>samihomer3@hotmail.com</email>
        <time>2019-06-16T17:48:08Z</time>
        <children>
          <puzzle alive="true">
            <issue href="https://github.com/g4s8/ghman/issues/62">62</issue>
            <ticket>41</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>41-a6560248</id>
            <lines>36-38</lines>
            <body>Extract into a separate object the behaviour of creating the redirect URI and test that exact complete string of the redirect uri is correct. After that unit test for FkGitHubAuthRedirection can be replaced with integration one.</body>
            <file>src/main/java/com/g4s8/ghman/web/FkGitHubAuthRedirection.java</file>
            <author>olenagerasimova</author>
            <email>olena.gerasimova@gmail.com</email>
            <time>2019-07-08T14:23:13Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/g4s8/ghman/issues/42" closed="2019-08-06T14:05:25+00:00">42</issue>
        <ticket>4</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>4-c1ef585e</id>
        <lines>36-38</lines>
        <body>replace those static loggers with something more OO (Related with https://www.yegor256.com/2019/03/19/logging-without-static-logger.html)</body>
        <file>src/main/java/com/g4s8/ghman/web/TkGitHubAuthorization.java</file>
        <author>Samih Omer</author>
        <email>samihomer3@hotmail.com</email>
        <time>2019-06-08T15:28:16Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/g4s8/ghman/issues/43" closed="2019-07-19T11:32:09+00:00">43</issue>
        <ticket>4</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>4-6f9220be</id>
        <lines>39-40</lines>
        <body>Implement unit tests for TkGitHubAuthorization. Refer to takes framework Unit testing guide @ https://github.com/yegor256/takes#unit-testing</body>
        <file>src/main/java/com/g4s8/ghman/web/TkGitHubAuthorization.java</file>
        <author>Samih Omer</author>
        <email>samihomer3@hotmail.com</email>
        <time>2019-06-16T17:48:08Z</time>
        <children>
          <puzzle alive="true">
            <issue href="https://github.com/g4s8/ghman/issues/75">75</issue>
            <ticket>43</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>43-326a137a</id>
            <lines>56-59</lines>
            <body>Introduce a meaningful abstraction for this. The current implementation in the secondary constructor should reside in its own class and there should be a Fake implementation for use in the tests. Do not forget to correct unit test accordingly.</body>
            <file>src/main/java/com/g4s8/ghman/web/TkGitHubAuthorization.java</file>
            <author>olenagerasimova</author>
            <email>olena.gerasimova@gmail.com</email>
            <time>2019-07-07T15:27:20Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/g4s8/ghman/issues/5" closed="2019-06-12T07:53:25+00:00">5</issue>
    <ticket>1</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1-41b37148</id>
    <lines>58-60</lines>
    <body>Refactor environment usage like APP_HOST, GH_CLIENT, GH_SECRET, etc, in this class and telegram classes, find a way to better configure these variables.</body>
    <file>src/main/java/com/g4s8/ghman/web/TkApp.java</file>
    <author>@g4s8</author>
    <email>g4s8.public@gmail.com</email>
    <time>2019-05-22T18:42:07Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/g4s8/ghman/issues/6">6</issue>
    <ticket>1</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1-1f46d7fc</id>
    <lines>31-33</lines>
    <body>Create new library with different data sources, move this class and other DataSource implementations and add it as dependency.</body>
    <file>src/main/java/com/g4s8/ghman/data/FlywayDataSource.java</file>
    <author>@g4s8</author>
    <email>g4s8.public@gmail.com</email>
    <time>2019-05-22T18:42:07Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/g4s8/ghman/issues/7" closed="2019-06-07T15:57:02+00:00">7</issue>
    <ticket>1</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1-134b4230</id>
    <lines>36-37</lines>
    <body>Extract interfaces and implement unit tests with fake objects and integration tests with embedded postgres.</body>
    <file>src/main/java/com/g4s8/ghman/user/Users.java</file>
    <author>@g4s8</author>
    <email>g4s8.public@gmail.com</email>
    <time>2019-05-22T18:42:07Z</time>
    <children>
      <puzzle alive="true">
        <issue href="https://github.com/g4s8/ghman/issues/17">17</issue>
        <ticket>7</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>7-4fac29c9</id>
        <lines>37-38</lines>
        <body>Create integration test: check all methods of this class and do not forget about all possible exceptions.</body>
        <file>src/main/java/com/g4s8/ghman/data/PgUsers.java</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2019-06-07T15:55:48Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/g4s8/ghman/issues/18" closed="2019-06-25T18:36:49+00:00">18</issue>
        <ticket>7</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>7-2fb4e7d6</id>
        <lines>105-108</lines>
        <body>Replace this static method with an inner class that implements/extends JsonObject (depending on what is possible to do) and that is responsible of doing what is done here. Do not forget about unit test.</body>
        <file>src/main/java/com/g4s8/ghman/data/PgUsers.java</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2019-06-07T15:55:48Z</time>
        <children>
          <puzzle alive="true">
            <issue href="https://github.com/g4s8/ghman/issues/53">53</issue>
            <ticket>18</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>18-891197cc</id>
            <lines>106-112</lines>
            <body>This class represents details about a user stored in the database. Callers of PgUser.telegram relies on the datastructure defined here and must know how it is structured to exploit the information. Instead, extract interface from it and use it everywhere it is needed instead of exposing this data. One implementation is maybe based on Chat and another would be based on a pg request for example. Add unit tests for both when it's done.</body>
            <file>src/main/java/com/g4s8/ghman/data/PgUsers.java</file>
            <author>@rultor</author>
            <email>me@rultor.com</email>
            <time>2019-06-25T18:35:28Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/g4s8/ghman/issues/19" closed="2019-06-29T14:44:34+00:00">19</issue>
        <ticket>7</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>7-5d7508dd</id>
        <lines>28-30</lines>
        <body>Continue implement this integration test: add cases for all methods of {@link com.g4s8.ghman.data.PgUser} class. Do not forget about all possible exceptions.</body>
        <file>src/test/java/com/g4s8/ghman/data/PgUserITCase.java</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2019-06-07T15:55:48Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/g4s8/ghman/issues/20" closed="2019-06-26T08:08:36+00:00">20</issue>
        <ticket>7</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>7-0543293b</id>
        <lines>34-37</lines>
        <body>Find a way to get rid of static field and method of this class. Note that this class is JUnit 5 Extension and is used to prepare database to integration tests. See https://junit.org/junit5/docs/current/user-guide/#extensions-registration-declarative</body>
        <file>src/test/java/com/g4s8/ghman/data/DatabaseExtension.java</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2019-06-07T15:55:48Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/g4s8/ghman/issues/8" closed="2019-06-17T13:58:21+00:00">8</issue>
    <ticket>1</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1-da473f23</id>
    <lines>168-170</lines>
    <body>Configure qulice plugin and test coverage. Don't forget to exclude Cactoos compat classes, we need to remove them after Takes fixes.</body>
    <file>pom.xml</file>
    <author>@g4s8</author>
    <email>g4s8.public@gmail.com</email>
    <time>2019-05-22T18:42:07Z</time>
    <children>
      <puzzle alive="true">
        <issue href="https://github.com/g4s8/ghman/issues/44">44</issue>
        <ticket>8</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>8-ac152f30</id>
        <lines>284-288</lines>
        <body>Increase code coverage by writing unit tests. All coverage ratio minimums are supposed to be greater than 0.60. Classes missed count maximum is 8. When this goal is achieved ask ARC whether these minimums are enough.</body>
        <file>pom.xml</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2019-06-17T13:56:33Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/g4s8/ghman/issues/29" closed="2019-07-19T11:27:27+00:00">29</issue>
    <ticket>9</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>9-ed24d84f</id>
    <lines>43-48</lines>
    <body>Continue implement notifications for user when new messages (unread github notification) arrive. To do that we need to monitor unread notifications by constantly checking `threads` table for unread threads. Schedule java thread (or any other synchronization process) to periodically call `PgThreads#unread()` to retrieve unread messages and use `Notification.UnreadThreads()` to send them.</body>
    <file>src/main/java/com/g4s8/ghman/bot/Notification.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2019-06-15T16:08:08Z</time>
    <children>
      <puzzle alive="true">
        <issue href="https://github.com/g4s8/ghman/issues/73">73</issue>
        <ticket>29</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>29-b004b0ba</id>
        <lines>33-37</lines>
        <body>Instantiate this class and pass it to `TkSync` (currently in `TkApp`) so that the behaviour of this class is executed every 10 minutes when Heroku ntofify the app. Note that this involves sharing the instance of BotSimple between `TkApp` and `BotApp`.</body>
        <file>src/main/java/com/g4s8/ghman/bot/UnreadThreadsSync.java</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2019-07-19T11:25:59Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/g4s8/ghman/issues/30">30</issue>
    <ticket>9</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>9-bc8289a7</id>
    <lines>49-52</lines>
    <body>Now this class send only github subject title as notification. Please aks ARC what exactly we want to send to user and create a class to extract and format this information from `JsonObject` (github subject) accordingly.</body>
    <file>src/main/java/com/g4s8/ghman/bot/Notification.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2019-06-15T16:08:08Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/g4s8/ghman/issues/31" closed="2019-08-06T14:11:21+00:00">31</issue>
    <ticket>9</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>9-965770b0</id>
    <lines>53-56</lines>
    <body>Test for `Notification.UnreadThreads` should be implemented after https://github.com/g4s8/teletakes/issues/14 is resolved. Please, while implementing try to avoid using mocked objects, use fake implementations instead.</body>
    <file>src/main/java/com/g4s8/ghman/bot/Notification.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2019-06-15T16:08:08Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/g4s8/ghman/issues/54">54</issue>
    <ticket>11</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>11-457109ce</id>
    <lines>39-44</lines>
    <body>Patterns in callback queries chains are distributed in multiple classes: for example, pattern for close issue is given here and in TkCloseIssue. Find a way to avoid this by maybe having string pattern representation here and passing Matcher to telegram takes (TkCloseIssue) or by having one class implementing Fork and containing both the current code of TkCloseIssue and the creation of the FkCallbackQuery.</body>
    <file>src/main/java/com/g4s8/ghman/bot/BotApp.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2019-06-26T08:00:10Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/g4s8/ghman/issues/55" closed="2019-08-21T09:11:51+00:00">55</issue>
    <ticket>11</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>11-b8952b84</id>
    <lines>35-39</lines>
    <body>1) find a way to avoid using static method Integer.parseInt() 2) there too much method chaining in Issue.Smart() instance creation. It's hard to read and not very good in term of OO practice: we depend here on many objects and we want to promote loose coupling usually. Find a way to avoid it.</body>
    <file>src/main/java/com/g4s8/ghman/bot/TkCloseIssue.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2019-06-26T08:00:10Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/g4s8/ghman/issues/74">74</issue>
    <ticket>26</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>26-e5ebe138</id>
    <lines>28-31</lines>
    <body>In case `Sync.sync` throws an exception, this class should log it instead of failing the whole synchronization process. Some thought must be taken to apply the same principle to instances of `Sync` in case they do multiple tasks.</body>
    <file>src/main/java/com/g4s8/ghman/web/TkSync.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2019-07-19T11:25:59Z</time>
    <children/>
  </puzzle>
</puzzles>
