*  @throws CredentialNotFoundException if page=Unwatchedpages and we cannot
     *  read it
     *  @since 0.28
     */
    public String[] queryPage(String page) throws IOException, CredentialNotFoundException
    {
        if (page.equals("Unwatchedpages") && (user == null || !user.isAllowedTo("unwatchedpages")))
            throw new CredentialNotFoundException("User does not have the \"unwatchedpages\" permission.");
        
        String url = query + "action=query&list=querypage&qplimit=max&qppage=" + page + "&qpcontinue=";
        String offset = "";
        ArrayList<String> pages = new ArrayList<String>(1333);
        
        do
        {
            String line = fetch(url + offset, "queryPage");
            if (line.contains("qpoffset"))
                offset = parseAttribute(line, "qpoffset", 0);
            else
                offset = null;
            
            // xml form: <page value="0" ns="0" title="Anorthosis Famagusta FC in European football" />
            for (int x = line.indexOf("<page "); x > 0; x = line.indexOf("<page ", ++x))
                pages.add(decode(parseAttribute(line, "title", x)));
        }
        while (offset != null);
        int temp = pages.size();
        log(Level.INFO, "Successfully retrieved [[Special:" + page + "]] (" + temp + " pages)", "queryPage");
        return pages.toArray(new String[temp]);
    }