Lotsa typescript bullshit

This commit is contained in:
mrfry 2020-11-24 10:47:04 +01:00
parent b7ac485689
commit b927988017
65 changed files with 801 additions and 8447 deletions

View file

@ -19,6 +19,11 @@ module.exports = {
rules: {
'no-undef': ['error'],
eqeqeq: ['warn', 'smart'],
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/explicit-module-boundary-types': [
'error',
{ allowArgumentsExplicitlyTypedAsAny: true },
],
'no-unused-vars': 'warn',
'no-prototype-builtins': 'off',
'@typescript-eslint/ban-types': 'off',

115
package-lock.json generated
View file

@ -212,17 +212,79 @@
"fastq": "^1.6.0"
}
},
"@types/body-parser": {
"version": "1.19.0",
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz",
"integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==",
"requires": {
"@types/connect": "*",
"@types/node": "*"
}
},
"@types/connect": {
"version": "3.4.33",
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz",
"integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==",
"requires": {
"@types/node": "*"
}
},
"@types/express": {
"version": "4.17.9",
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.9.tgz",
"integrity": "sha512-SDzEIZInC4sivGIFY4Sz1GG6J9UObPwCInYJjko2jzOf/Imx/dlpume6Xxwj1ORL82tBbmN4cPDIDkLbWHk9hw==",
"requires": {
"@types/body-parser": "*",
"@types/express-serve-static-core": "*",
"@types/qs": "*",
"@types/serve-static": "*"
}
},
"@types/express-serve-static-core": {
"version": "4.17.13",
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.13.tgz",
"integrity": "sha512-RgDi5a4nuzam073lRGKTUIaL3eF2+H7LJvJ8eUnCI0wA6SNjXc44DCmWNiTLs/AZ7QlsFWZiw/gTG3nSQGL0fA==",
"requires": {
"@types/node": "*",
"@types/qs": "*",
"@types/range-parser": "*"
}
},
"@types/json-schema": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz",
"integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==",
"dev": true
},
"@types/mime": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz",
"integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q=="
},
"@types/node": {
"version": "14.14.9",
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.9.tgz",
"integrity": "sha512-JsoLXFppG62tWTklIoO4knA+oDTYsmqWxHRvd4lpmfQRNhX6osheUOWETP2jMoV/2bEHuMra8Pp3Dmo/stBFcw=="
},
"@types/qs": {
"version": "6.9.5",
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.5.tgz",
"integrity": "sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ=="
},
"@types/range-parser": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz",
"integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA=="
},
"@types/serve-static": {
"version": "1.13.8",
"resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.8.tgz",
"integrity": "sha512-MoJhSQreaVoL+/hurAZzIm8wafFR6ajiTM1m4A0kv6AGeVBl4r4pOV8bGFrjjq1sGxDTnCoF8i22o0/aE5XCyA==",
"requires": {
"@types/mime": "*",
"@types/node": "*"
}
},
"@typescript-eslint/eslint-plugin": {
"version": "4.8.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.8.1.tgz",
@ -447,6 +509,11 @@
"readable-stream": "^2.0.6"
}
},
"arg": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
"integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA=="
},
"argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
@ -622,6 +689,11 @@
"ieee754": "^1.1.4"
}
},
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
},
"busboy": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz",
@ -830,6 +902,11 @@
"streamsearch": "0.1.2"
}
},
"diff": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A=="
},
"dir-glob": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@ -1687,6 +1764,11 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
"integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
},
"make-error": {
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
},
"media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@ -2359,6 +2441,22 @@
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
},
"source-map-support": {
"version": "0.5.19",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
"integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
"requires": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
}
}
},
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
@ -2569,6 +2667,18 @@
"punycode": "^2.1.1"
}
},
"ts-node": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.0.0.tgz",
"integrity": "sha512-/TqB4SnererCDR/vb4S/QvSZvzQMJN8daAslg7MeaiHvD8rDZsSfXmNeNumyZZzMned72Xoq/isQljYSt8Ynfg==",
"requires": {
"arg": "^4.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.17",
"yn": "3.1.1"
}
},
"tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
@ -2747,6 +2857,11 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
},
"yn": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
"integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q=="
}
}
}

View file

@ -2,6 +2,7 @@
"name": "node-ejs",
"main": "src/server.js",
"dependencies": {
"@types/express": "^4.17.9",
"@types/node": "^14.14.9",
"babel-eslint": "^10.1.0",
"better-sqlite3": "^6.0.1",
@ -13,6 +14,7 @@
"express": "^4.6.1",
"express-ejs-layouts": "^1.1.0",
"sqlite3": "^4.1.1",
"ts-node": "^9.0.0",
"typescript": "^4.1.2",
"typescript-eslint": "0.0.1-alpha.0",
"url": "^0.11.0",

209
scripts/serverStats.js Normal file
View file

@ -0,0 +1,209 @@
// -----------------------------------------------------------------
// CONFIG
// -----------------------------------------------------------------
const maxStatLength = 15
const statNameSpacing = 5
const coloredWords = {
red: ['lred'],
}
// -----------------------------------------------------------------
const fs = require('fs')
const dir = process.argv[2]
if (!dir) {
console.log('No params')
process.exit()
}
function getDayIndex(offset) {
if (!offset) {
offset = 0
}
let date = new Date()
if (offset) {
date.setDate(date.getDate() + offset)
}
return (
date.getFullYear() +
'/' +
('0' + (date.getMonth() + 1)).slice(-2) +
'/' +
('0' + date.getDate()).slice(-2)
)
}
function C(color) {
if (color !== undefined) {
color = color.toLowerCase()
}
if (color === 'redbg') {
return '\x1b[41m'
}
if (color === 'bluebg') {
return '\x1b[44m'
}
if (color === 'green') {
return '\x1b[32m'
}
if (color === 'red') {
return '\x1b[31m'
}
if (color === 'yellow') {
return '\x1b[33m'
}
if (color === 'blue') {
return '\x1b[34m'
}
if (color === 'magenta') {
return '\x1b[35m'
}
if (color === 'cyan') {
return '\x1b[36m'
}
return '\x1b[0m'
}
function readJSON(name) {
return JSON.parse(fs.readFileSync(name, 'utf8'))
}
function tail(text, number) {
let splitedText = text.split('\n')
return splitedText.slice(Math.max(splitedText.length - number, 1)).join('\n')
}
function head(text, number) {
return text
.split('\n')
.slice(0, number)
.join('\n')
}
function readFile(name) {
return fs.readFileSync(name, 'utf8')
}
function getLetterNTimes(letter, number) {
let res = ''
while (res.length < number) {
res += letter
}
return res
}
function pCols() {
// console.log(arguments)
let maxLength = 0
Object.keys(arguments).forEach((key) => {
if (arguments[key].length > maxLength) {
maxLength = arguments[key].length
}
})
for (let i = 0; i < maxLength; i++) {
let row = []
Object.keys(arguments)
.reverse()
.forEach((key) => {
const val = arguments[key]
if (!val[i]) {
return
}
const keyName = val[i].name || ''
let slicedName = keyName.slice(0, maxStatLength)
let toColor = Object.keys(coloredWords).reduce((acc, key) => {
const colorArray = coloredWords[key]
const includes = colorArray.some((colorableIdName) => {
return keyName.includes(colorableIdName)
})
if (includes) {
return key
}
return acc
}, '')
while (slicedName.length < maxStatLength) {
slicedName = ' ' + slicedName
}
let ammount = val[i].val ? val[i].val.toString() : 0
while (ammount.length < 4) {
ammount = ammount + ' '
}
if (toColor) {
row.push(C(toColor) + slicedName + ': ' + ammount + C())
} else {
row.push(slicedName + ' ' + ammount)
}
})
console.log(row.join(getLetterNTimes(' ', statNameSpacing)))
}
}
// ------------------------------------------------------------------------------
const dailyStats = readJSON(`${dir}stats/vstats`)
function preProcessDailyStats(obj) {
return Object.keys(obj).map((key) => {
return { name: key, val: obj[key] }
})
}
pCols(
preProcessDailyStats(dailyStats[getDayIndex()]),
preProcessDailyStats(dailyStats[getDayIndex(-1)]),
preProcessDailyStats(dailyStats[getDayIndex(-2)])
)
// ------------------------------------------------------------------------------
const userIdTestSolving = readJSON(`${dir}stats/idvstats`)
function preProcessUIdTestSolving(obj) {
if (!obj) {
return [{ val: 0 }]
}
return [{ val: Object.keys(obj).length }]
}
pCols(
preProcessUIdTestSolving(userIdTestSolving[getDayIndex()]),
preProcessUIdTestSolving(userIdTestSolving[getDayIndex(-1)]),
preProcessUIdTestSolving(userIdTestSolving[getDayIndex(-2)])
)
// ------------------------------------------------------------------------------
const clientIdTestSolving = readJSON(`${dir}stats/uvstats`)
pCols(
preProcessUIdTestSolving(clientIdTestSolving[getDayIndex()]),
preProcessUIdTestSolving(clientIdTestSolving[getDayIndex(-1)]),
preProcessUIdTestSolving(clientIdTestSolving[getDayIndex(-2)])
)
// ------------------------------------------------------------------------------
const dailyDataCount = readFile(`${dir}stats/dailyDataCount`)
printLastDataCount([
JSON.parse(head(tail(dailyDataCount, 1), 1)),
JSON.parse(head(tail(dailyDataCount, 2), 1)),
JSON.parse(head(tail(dailyDataCount, 3), 1)),
])
function printLastDataCount(data) {
const res = [[], [], []]
data.forEach((dataCount, i) => {
res[i].push({ val: dataCount.userCount })
res[i].push({ val: dataCount.subjectCount })
res[i].push({ val: dataCount.questionCount })
})
pCols(...res)
}

View file

@ -1,8 +1,14 @@
const logger = require('../utils/logger.js')
const utils = require('../utils/utils.js')
const dbtools = require('../utils/dbtools.js')
import logger from '../utils/logger'
import utils from '../utils/utils'
import dbtools from '../utils/dbtools'
module.exports = function(options) {
interface Options {
userDB: any
jsonResponse: boolean
exceptions: Array<string>
}
export default function(options: Options): any {
const { userDB, jsonResponse, exceptions } = options
const renderLogin = (req, res) => {
@ -60,7 +66,7 @@ module.exports = function(options) {
return
}
const user = GetUserBySessionID(userDB, sessionID, req)
const user = GetUserBySessionID(userDB, sessionID)
if (!user) {
if (isException) {
@ -127,7 +133,7 @@ function UpdateAccess(db, user, ip, sessionID) {
}
}
function GetUserBySessionID(db, sessionID, req) {
function GetUserBySessionID(db: any, sessionID: string) {
logger.DebugLog(`Getting user from db`, 'auth', 2)
const session = dbtools.Select(db, 'sessions', {

View file

@ -1,6 +1,11 @@
const logger = require('../utils/logger.js')
import logger from '../utils/logger'
module.exports = function(options) {
interface Options {
loggableKeywords: Array<string>
loggableModules: Array<string>
}
export default function(options: Options): any {
const loggableKeywords = options ? options.loggableKeywords : undefined
const loggableModules = options ? options.loggableModules : undefined
@ -24,13 +29,13 @@ module.exports = function(options) {
// fixme: regexp includes checking
const hasLoggableKeyword =
loggableKeywords &&
loggableKeywords.some((x) => {
return req.url.includes(x)
loggableKeywords.some((keyword) => {
return req.url.includes(keyword)
})
const hasLoggableModule =
loggableModules &&
loggableModules.some((x) => {
return hostname.includes(x)
loggableModules.some((keyword) => {
return hostname.includes(keyword)
})
const toLog = hasLoggableModule || hasLoggableKeyword

View file

@ -22,17 +22,20 @@
import express from 'express'
import bodyParser from 'body-parser'
import busboy from 'connect-busboy'
import { uuidv4 } from 'uuid'
import { v4 as uuidv4 } from 'uuid'
import fs from 'fs'
// other requires
import logger from '../../utils/logger.js'
import utils from '../../utils/utils.js'
import logger from '../../utils/logger'
import utils from '../../utils/utils'
import actions from '../../utils/actions'
import dbtools from '../../utils/dbtools.js'
import auth from '../../middlewares/auth.middleware.js'
import { dataToString, searchData } from '../../utils/classes.js'
import dbtools from '../../utils/dbtools'
import auth from '../../middlewares/auth.middleware'
import { dataToString, searchData } from '../../utils/classes'
import { SetupData } from '../../server'
import { ModuleType, User } from '../../types/basicTypes'
// files
const msgFile = 'stats/msgs'
@ -64,7 +67,7 @@ export interface DataFile {
name: string
}
function GetApp() {
function GetApp(): ModuleType {
const app = express()
const publicDir = publicdirs[0]
@ -79,6 +82,7 @@ function GetApp() {
{ path: `${publicDir}oldData.json`, name: 'oldData' },
{ path: `${publicDir}data.json`, name: 'newData' },
]
const data: any = {} // TODO: remove
const motdFile = publicDir + 'motd'
const userSpecificMotdFile = publicDir + 'userSpecificMotd.json'
const versionFile = publicDir + 'version'
@ -124,10 +128,11 @@ function GetApp() {
)
const questionDbs = actions.LoadJSON(dataFiles)
const version = ''
const motd = ''
const userSpecificMotd = {}
const testUsers = []
let version = ''
let motd = ''
let userSpecificMotd = {}
// FIXME: check type from file
let testUsers: any = []
function mergeObjSum(a, b) {
const res = { ...b }
@ -226,7 +231,7 @@ function GetApp() {
// -------------------------------------------------------------
app.get('/updateTodo', (req, res) => {
app.get('/updateTodo', (req: any, res: any) => {
const userId = req.session.user.id
const id = req.query.id
const todos = utils.ReadJSON(todosFile)
@ -265,7 +270,7 @@ function GetApp() {
})
})
app.get('/todos', (req, res) => {
app.get('/todos', (req: any, res: any) => {
logger.LogReq(req)
const userId = req.session.user.id
const todos = utils.ReadJSON(todosFile)
@ -277,18 +282,18 @@ function GetApp() {
})
})
app.get('/ranklist', (req, res) => {
app.get('/ranklist', (req: any, res: any) => {
logger.LogReq(req)
let result
let since = req.query.since
const user = req.session.user
const user: User = req.session.user
if (!since) {
result = utils.ReadJSON(idStatFile)
} else {
try {
since = new Date(since)
if (!(since instanceof Date) || isNaN(since)) {
if (!(since instanceof Date) || isNaN(since.getTime())) {
throw new Error('Not a date')
}
const data = utils.ReadJSON(idvStatFile)
@ -354,10 +359,10 @@ function GetApp() {
})
})
app.get('/quickvote', (req, res) => {
app.get('/quickvote', (req: any, res: any) => {
const key = req.query.key
const val = req.query.val
const user = req.session.user
const user: User = req.session.user
if (!key || !val) {
res.render('votethank', {
@ -367,7 +372,8 @@ function GetApp() {
return
}
let votes = {}
// FIXME: check vote type in file
let votes: any = {}
if (utils.FileExists(quickVotes)) {
votes = utils.ReadJSON(quickVotes)
} else {
@ -429,10 +435,10 @@ function GetApp() {
utils.WriteFile(JSON.stringify(voteData), voteFile)
})
app.get('/avaiblePWS', (req, res) => {
app.get('/avaiblePWS', (req: any, res: any) => {
logger.LogReq(req)
const user = req.session.user
const user: User = req.session.user
res.json({
result: 'success',
@ -447,7 +453,7 @@ function GetApp() {
})
})
app.post('/getpw', function(req, res) {
app.post('/getpw', function(req: any, res: any) {
logger.LogReq(req)
const requestingUser = req.session.user
@ -497,7 +503,7 @@ function GetApp() {
})
})
app.post('/getveteranpw', function(req, res) {
app.post('/getveteranpw', function(req: any, res: any) {
logger.LogReq(req)
const ip = req.headers['cf-connecting-ip'] || req.connection.remoteAddress
const tries = dbtools.Select(userDB, 'veteranPWRequests', {
@ -546,7 +552,7 @@ function GetApp() {
return
}
const user = dbtools.Select(userDB, 'users', {
const user: User = dbtools.Select(userDB, 'users', {
oldCID: oldUserID,
})[0]
@ -593,7 +599,7 @@ function GetApp() {
}
})
app.post('/login', (req, res) => {
app.post('/login', (req: any, res: any) => {
logger.LogReq(req)
const pw = req.body.pw
? req.body.pw
@ -604,7 +610,7 @@ function GetApp() {
const cid = req.body.cid
const isScript = req.body.script
const ip = req.headers['cf-connecting-ip'] || req.connection.remoteAddress
const user = dbtools.Select(userDB, 'users', {
const user: User = dbtools.Select(userDB, 'users', {
pw: pw,
})[0]
@ -695,7 +701,7 @@ function GetApp() {
}
})
app.post('/logout', (req, res) => {
app.post('/logout', (req: any, res: any) => {
logger.LogReq(req)
const sessionID = req.cookies.sessionID
@ -711,38 +717,36 @@ function GetApp() {
// --------------------------------------------------------------
app.get('/', function(req, res) {
app.get('/', function(req: any, res: any) {
logger.LogReq(req)
res.redirect('https://www.youtube.com/watch?v=ieqGJgqiXFk')
})
app.post('/postfeedbackfile', function(req, res) {
app.post('/postfeedbackfile', function(req: any, res: any) {
UploadFile(req, res, uloadFiles, () => {
res.json({ success: true })
})
logger.LogReq(req)
logger.Log('New feedback file', logger.GetColor('bluebg'), true)
logger.Log('New feedback file', logger.GetColor('bluebg'))
})
app.post('/postfeedback', function(req, res) {
app.post('/postfeedback', function(req: any, res: any) {
logger.LogReq(req)
if (req.body.fromLogin) {
logger.Log(
'New feedback message from Login page',
logger.GetColor('bluebg'),
true
logger.GetColor('bluebg')
)
} else {
logger.Log(
'New feedback message from feedback page',
logger.GetColor('bluebg'),
true
logger.GetColor('bluebg')
)
}
const ip = req.headers['cf-connecting-ip'] || req.connection.remoteAddress
const user = req.session.user
const user: User = req.session.user
utils.AppendToFile(
utils.GetDateString() +
@ -757,9 +761,8 @@ function GetApp() {
res.json({ success: true })
})
function UploadFile(req, res, path, next) {
function UploadFile(req: any, res: any, path, next) {
try {
const fstream
req.pipe(req.busboy)
req.busboy.on('file', function(fieldname, file, filename) {
logger.Log('Uploading: ' + filename, logger.GetColor('blue'))
@ -775,7 +778,7 @@ function GetApp() {
'_' +
filename
fstream = fs.createWriteStream(path + '/' + fn)
const fstream = fs.createWriteStream(path + '/' + fn)
file.pipe(fstream)
fstream.on('close', function() {
logger.Log(
@ -795,20 +798,20 @@ function GetApp() {
}
}
app.route('/fosuploader').post(function(req, res) {
app.route('/fosuploader').post(function(req: any, res: any) {
UploadFile(req, res, uloadFiles, (fn) => {
res.redirect('/f/' + fn)
})
})
app.route('/badtestsender').post(function(req, res) {
app.route('/badtestsender').post(function(req: any, res: any) {
UploadFile(req, res, recivedFiles, () => {
res.redirect('back')
})
logger.LogReq(req)
})
app.get('/allqr.txt', function(req, res) {
app.get('/allqr.txt', function(req: any, res: any) {
res.set('Content-Type', 'text/plain')
const stringifiedData = questionDbs.map((qdb) => {
return dataToString(qdb.data)
@ -822,7 +825,7 @@ function GetApp() {
// -------------------------------------------------------------------------------------------
// API
app.post('/uploaddata', (req, res) => {
app.post('/uploaddata', (req: any, res: any) => {
// body: JSON.stringify({
// newData: data,
// count: getCount(data),
@ -848,11 +851,12 @@ function GetApp() {
try {
// finding user
const pwds = JSON.parse(utils.ReadFile(passwordFile))
let user = Object.keys(pwds).find((key) => {
const user = pwds[key]
return user.password === password
const userKey = Object.keys(pwds).find((key) => {
const userKey = pwds[key]
return userKey.password === password
})
user = pwds[user]
// FIXME: check user type in dataeditorPW-s json
const user: any = pwds[userKey]
// logging and stuff
logger.Log(`Data upload`, logger.GetColor('bluebg'))
@ -928,10 +932,10 @@ function GetApp() {
}
})
app.post('/isAdding', function(req, res) {
app.post('/isAdding', function(req: any, res: any) {
logger.LogReq(req)
const user = req.session.user
const user: User = req.session.user
const dryRun = testUsers.includes(user.id)
@ -944,10 +948,10 @@ function GetApp() {
dryRun,
user
)
.then((result) => {
.then((resultArray) => {
res.json({
success: result !== -1,
newQuestions: result,
success: resultArray.length > 0, // TODO check for -1s
newQuestions: resultArray,
})
})
.catch((err) => {
@ -959,7 +963,7 @@ function GetApp() {
})
})
app.get('/ask', function(req, res) {
app.get('/ask', function(req: any, res) {
if (Object.keys(req.query).length === 0) {
logger.DebugLog(`No query params`, 'ask', 1)
res.json({
@ -972,7 +976,7 @@ function GetApp() {
if (req.query.q && req.query.data) {
const subj = req.query.subj || ''
const question = req.query.q
let recData = {}
let recData: any = {}
try {
recData = JSON.parse(req.query.data)
} catch (error) {
@ -1035,7 +1039,7 @@ function GetApp() {
})
}
app.get('/datacount', function(req, res) {
app.get('/datacount', function(req: any, res: any) {
logger.LogReq(req)
if (req.query.detailed === 'all') {
res.json({
@ -1049,10 +1053,10 @@ function GetApp() {
}
})
app.get('/infos', function(req, res) {
const user = req.session.user
app.get('/infos', function(req: any, res) {
const user: User = req.session.user
const result = {
const result: any = {
result: 'success',
uid: user.id,
}
@ -1074,11 +1078,11 @@ function GetApp() {
// -------------------------------------------------------------------------------------------
app.get('*', function(req, res) {
app.get('*', function(req: any, res: any) {
res.status(404).render('404')
})
app.post('*', function(req, res) {
app.post('*', function(req: any, res: any) {
res.status(404).render('404')
})
@ -1116,14 +1120,14 @@ function GetApp() {
}
function getDayDiff(dateString) {
const msdiff = new Date() - new Date(dateString)
const msdiff = new Date().getTime() - new Date(dateString).getTime()
return Math.floor(msdiff / (1000 * 3600 * 24))
}
function IncrementAvaiblePWs() {
// FIXME: check this if this is legit and works
logger.Log('Incrementing avaible PW-s ...')
const users = dbtools.SelectAll(userDB, 'users')
const users: Array<User> = dbtools.SelectAll(userDB, 'users')
users.forEach((user) => {
if (user.avaiblePWRequests >= maxPWCount) {
@ -1173,10 +1177,12 @@ function GetApp() {
}
}
exports.name = 'API'
exports.getApp = GetApp
exports.setup = (data) => {
userDB = data.userDB
url = data.url // eslint-disable-line
publicdirs = data.publicdirs
export default {
name: 'API',
getApp: GetApp,
setup: (data: SetupData): void => {
userDB = data.userDB
url = data.url // eslint-disable-line
publicdirs = data.publicdirs
},
}

View file

@ -19,22 +19,24 @@
------------------------------------------------------------------------- */
// package requires
const express = require('express')
const bodyParser = require('body-parser')
const busboy = require('connect-busboy')
import express from 'express'
import bodyParser from 'body-parser'
import busboy from 'connect-busboy'
const app = express()
// other requires
const utils = require('../../utils/utils.js')
const logger = require('../../utils/logger.js')
const auth = require('../../middlewares/auth.middleware.js')
import utils from '../../utils/utils'
import logger from '../../utils/logger'
import auth from '../../middlewares/auth.middleware'
import { SetupData } from '../../server'
import { ModuleType } from '../../types/basicTypes'
// stuff gotten from server.js
let userDB
let publicdirs = []
let nextdir = ''
function GetApp() {
function GetApp(): ModuleType {
app.use(
bodyParser.urlencoded({
limit: '5mb',
@ -71,9 +73,9 @@ function GetApp() {
// --------------------------------------------------------------
function AddHtmlRoutes(files) {
const routes = files.reduce((acc, f) => {
if (f.includes('html')) {
acc.push(f.split('.')[0])
const routes = files.reduce((acc, file) => {
if (file.includes('html')) {
acc.push(file.split('.')[0])
return acc
}
return acc
@ -109,10 +111,12 @@ function GetApp() {
}
}
exports.name = 'Data editor'
exports.getApp = GetApp
exports.setup = (data) => {
userDB = data.userDB
publicdirs = data.publicdirs
nextdir = data.nextdir
export default {
name: 'Data editor',
getApp: GetApp,
setup: (data: SetupData): void => {
userDB = data.userDB
publicdirs = data.publicdirs
nextdir = data.nextdir
},
}

View file

@ -19,19 +19,21 @@
------------------------------------------------------------------------- */
// package requires
const express = require('express')
const bodyParser = require('body-parser')
const busboy = require('connect-busboy')
import express from 'express'
import bodyParser from 'body-parser'
import busboy from 'connect-busboy'
const app = express()
// other requires
const logger = require('../../utils/logger.js')
import logger from '../../utils/logger'
import { SetupData } from '../../server'
import { ModuleType } from '../../types/basicTypes'
// stuff gotten from server.js
let publicdirs = []
let url = '' // http(s)//asd.basd
function GetApp() {
function GetApp(): ModuleType {
app.set('view engine', 'ejs')
app.set('views', ['./src/modules/main/views', './src/sharedViews'])
publicdirs.forEach((pdir) => {
@ -79,9 +81,11 @@ function GetApp() {
}
}
exports.name = 'Main'
exports.getApp = GetApp
exports.setup = (data) => {
url = data.url
publicdirs = data.publicdirs
export default {
name: 'Main',
getApp: GetApp,
setup: (data: SetupData): void => {
url = data.url
publicdirs = data.publicdirs
},
}

View file

@ -1,338 +0,0 @@
/* ----------------------------------------------------------------------------
Question Server
GitLab: <https://gitlab.com/MrFry/mrfrys-node-server>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
------------------------------------------------------------------------- */
const express = require('express')
const bodyParser = require('body-parser')
const busboy = require('connect-busboy')
const cookieParser = require('cookie-parser')
const fs = require('fs')
const app = express()
let url = ''
const logger = require('../../utils/logger.js')
const utils = require('../../utils/utils.js')
// const actions = require('../utils/actions.js')
const listedFiles = './vids/p'
const userDataDirectory = './data/vidsData'
const passwordFile = 'data/vidsPasswords.json'
if (!utils.FileExists(userDataDirectory)) {
utils.CreatePath(userDataDirectory, true)
}
function GetApp() {
app.set('view engine', 'ejs')
app.set('views', ['./src/modules/pornvids/views', './sharedViews'])
app.use(express.static('p'))
app.use(
busboy({
limits: {
fileSize: 10000 * 1024 * 1024,
},
})
)
app.use(bodyParser.json())
app.use(
bodyParser.urlencoded({
limit: '5mb',
extended: true,
})
)
app.use(
bodyParser.json({
limit: '5mb',
})
)
app.use(cookieParser())
// --------------------------------------------------------------
app.get('/login', (req, res) => {
logger.LogReq(req)
// FIXME: redirect to original url
res.cookie('pw', req.query.pw).redirect('/')
})
app.get('/logout', (req, res) => {
logger.LogReq(req)
// FIXME: redirect to original url
res.clearCookie('pw').redirect('/')
})
// app, '/*.mp4', 'video/mp4', 'stuff/video'
function appGetFileType(app, wildcard, contentType, pageToRender) {
app.get(wildcard, function(req, res) {
const user = GetUserByPW(GetPw(req))
if (!user) {
logger.Log('Vids user: No user', logger.GetColor('blue'))
res.render('login')
return
}
let p = decodeURI(req.url)
let fp = p
if (p.includes('?')) {
fp = p.split('?')
fp.pop()
fp = fp.join('/')
}
const fpath = listedFiles + fp
if (!fs.existsSync(fpath)) {
res.render('nofile', {
missingFile: fpath,
url,
})
return
}
if (req.query.stream || !pageToRender) {
const stat = fs.statSync(fpath)
const fileSize = stat.size
const range = req.headers.range
if (range) {
const parts = range.replace(/bytes=/, '').split('-')
const start = parseInt(parts[0], 10)
const end = parts[1] ? parseInt(parts[1], 10) : fileSize - 1
const chunksize = end - start + 1
const file = fs.createReadStream(fpath, { start, end })
const head = {
'Content-Range': `bytes ${start}-${end}/${fileSize}`,
'Accept-Ranges': 'bytes',
'Content-Length': chunksize,
'Content-Type': contentType,
}
res.writeHead(206, head)
file.pipe(res)
} else {
const head = {
'Content-Length': fileSize,
'Content-Type': contentType,
}
res.writeHead(200, head)
fs.createReadStream(fpath).pipe(res)
}
} else {
logger.LogReq(req)
logger.Log(`Vids user: ${user.name}`, logger.GetColor('blue'))
AppendWatchedFileToUser(user, fp)
let fname = fpath.split('/')
fname = fname.pop()
res.render(pageToRender, {
path: fp,
fname,
url,
contentType,
albumArt: GetAlbumArt(p),
})
}
})
}
function WriteUserData(user, uData) {
const dataLoc = userDataDirectory + '/' + user.name + '.json'
utils.WriteFile(JSON.stringify(uData), dataLoc)
}
function GetUserData(user) {
try {
const dataLoc = userDataDirectory + '/' + user.name + '.json'
let uData = utils.ReadFile(dataLoc)
uData = JSON.parse(uData)
return uData
} catch (e) {
return {}
}
}
function AppendWatchedFileToUser(user, file) {
const uData = GetUserData(user)
if (uData) {
if (Array.isArray(uData.watched)) {
if (!uData.watched.includes(file)) {
uData.watched.push(file)
}
} else {
uData.watched = [file]
}
WriteUserData(user, uData)
} else {
logger.Log(
'Error appending to user data, no user data found',
logger.GetColor('redbg')
)
}
}
const fileTypes = [
['/*.mp4', 'video/mp4', 'video'],
['/*.mkv', 'audio/x-matroska', 'video'],
['/*.mp3', 'audio/mpeg', 'audio'],
['/*.pdf', 'application/pdf'],
['/*.zip', 'application/zip'],
]
function GetAlbumArt(path) {
let tmp = path.split('.')
tmp.pop()
tmp = tmp.join('.').split('/')
let last = tmp.pop()
return tmp.join('/') + '/.' + last + '.png'
}
fileTypes.forEach((t) => {
appGetFileType(app, t[0], t[1], t[2])
})
app.get('/*', function(req, res) {
logger.LogReq(req)
const user = GetUserByPW(GetPw(req))
let uData = {}
if (!user) {
logger.Log('Vids user: No user', logger.GetColor('blue'))
res.render('login')
return
} else {
logger.Log(`Vids user: ${user.name}`, logger.GetColor('blue'))
uData = GetUserData(user)
}
let parsedUrl = decodeURI(req.url)
let curr =
listedFiles +
'/' +
parsedUrl.substring('/'.length, parsedUrl.length).split('?')[0]
let relPath = curr.substring(listedFiles.length, curr.length)
if (relPath[relPath.length - 1] !== '/') {
relPath += '/'
}
let t = relPath.split('/')
let prevDir = ''
for (let i = 0; i < t.length - 2; i++) {
prevDir += t[i] + '/'
}
// curr = curr.replace(/\//g, "/");
// relPath = relPath.replace(/\//g, "/");
try {
const stat = fs.lstatSync(curr)
if (stat.isDirectory() || stat.isSymbolicLink()) {
if (curr[curr.length - 1] !== '/') {
curr += '/'
}
let f = []
fs.readdirSync(curr).forEach((item) => {
if (item[0] !== '.') {
let res = { name: item }
let stat = fs.statSync(curr + '/' + item)
let fileSizeInBytes = stat['size']
res.size = Math.round(fileSizeInBytes / 1000000)
res.path = relPath
if (res.path[res.path.length - 1] !== '/') {
res.path += '/'
}
res.path += item
res.mtime = stat['mtime'].toLocaleString()
res.isDir = stat.isDirectory()
if (uData && Array.isArray(uData.watched)) {
res.watched = uData.watched.includes(res.path)
} else {
res.watched = false
}
f.push(res)
}
})
res.render('folders', {
folders: f,
user: user,
dirname: relPath,
prevDir,
url,
})
} else {
let watchedFile = relPath
if (watchedFile.charAt(watchedFile.length - 1) === '/') {
watchedFile = watchedFile.substr(0, watchedFile.length - 1)
}
AppendWatchedFileToUser(user, watchedFile)
let fileStream = fs.createReadStream(curr)
fileStream.pipe(res)
}
} catch (e) {
res.render('nofile', {
missingFile: curr,
url,
})
}
})
function GetPw(req) {
return req.cookies.pw
}
function GetUserByPW(password) {
const pwds = JSON.parse(utils.ReadFile(passwordFile))
let user = Object.keys(pwds).find((key) => {
const u = pwds[key]
return u.password === password
})
user = pwds[user]
return user
}
// -----------------------------------------------------------------------------------------------
app.get('*', function(req, res) {
res.status(404).render('404')
})
app.post('*', function(req, res) {
res.status(404).render('404')
})
return {
app: app,
}
}
exports.name = 'Porn vids'
exports.getApp = GetApp
exports.setup = (data) => {
url = data.url
}

View file

@ -1,39 +0,0 @@
<html>
<body bgcolor="#212127">
<head>
<title><%= fname %></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=0.6" />
<style>
body {
font: normal 14px Verdana;
color: #999999;
}
video {
width: 100%
}
</style>
</head>
<center>
<h2>
<%= fname %>
</h2>
<img
id="coverArt"
style="width:auto; max-height: 100%;"
src="<%= url + albumArt %>"
alt=' '
/>
<audio id="audioPlayer" controls style="width:100%">
<source src="<%= url %><%= path %>?stream=true" type=<%= contentType %>>
</audio>
</center>
</body>
<script>
console.log('a')
document.getElementById('coverArt').style.height = window.innerHeight - 140
</script>
</html>

View file

@ -1,144 +0,0 @@
<html>
<body bgcolor="#ffeeee">
<head>
<title><%=dirname%></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=0.6" />
<style>
body {
font: normal 14px Verdana;
}
td {
vertical-align: top;
word-wrap: break-word;
word-break: break-all;
table-layout: fixed;
padding: 0;
vertical-align: middle;
}
a {
color: #0000ff;
}
.subtable {
border-collapse: collapse;
table-layout:fixed;
width:100%
}
.maintable {
border-collapse: collapse;
table-layout:fixed;
width:100%;
padding:0; margin:0;
border: none !important;
}
tr {
width:32%;
}
.butt td {
font: normal 24px Verdana;
font-weight: bold;
}
.watched {
color: #999999;
}
.butt {
cursor: pointer;
width: 100%;
border: none;
text-align: left;
}
.rainbow {
background: linear-gradient( 92deg, #ff0000, #00ffff);
background: -webkit-linear-gradient( 92deg, #ff0000, #00ffff);
background-size:600vw 600vw;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
animation: textAnimate 4s linear infinite alternate;
}
@keyframes textAnimate {
from {
filter: hue-rotate(0deg);
background-position-x: 0%;
}
to {
filter: hue-rotate(360deg);
background-position-x: 600vw;
}
}
</style>
</head>
<center>
<h1 class="rainbow">
<div>
Hi <%= user.name %> c:
</div>
<div>
gyerekkori videók <%=dirname%>
</div>
</h1>
</center>
<h2>
<a href="<%= url + prevDir%>" >Back</a>
</h2>
</p>
<table class="maintable">
<% for (var i = 0; i < folders.length; i++) { %>
<tr>
<td>
<a
href="<%= url + folders[i].path %>"
style="font-size: 0px"
>
<button
class="butt"
onmouseenter='mouseEnter(this, <%= i %>)'
onmouseleave='mouseLeave(this, <%= i %>)'
>
<table class="subtable <%= folders[i].watched ? 'watched' : '' %>">
<tr height="62">
<td style='width:85%;'>
<%=folders[i].name %>
</td>
<td style='width:15%;'>
<%
if (folders[i].isDir) {
%> <%= "Mappa" %> <%
} else {
if (folders[i].size === 0) {
%> <%= "~0 MB" %> <%
} else {
%> <%= folders[i].size + ' MB' %> <%
}
}
%>
</td>
</tr>
</table>
</button>
</a>
</td>
</tr>
<% } %>
</table>
<a href='/logout'>logout</a>
</body>
<script>
console.log('hi')
function mouseEnter (e, i) {
e.className += ' rainbow'
}
function mouseLeave (e, i) {
e.className = e.className.replace(/ rainbow/g, '')
}
</script>
</html>

View file

@ -1,63 +0,0 @@
<html>
<body bgcolor="#212127">
<head>
<title>login</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=0.6" />
<style>
video {
width: 100%
}
.rainbow {
background: linear-gradient( 92deg, #ff0000, #00ffff);
background: -webkit-linear-gradient( 92deg, #ff0000, #00ffff);
background-size:600vw 600vw;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
animation: textAnimate 4s linear infinite alternate;
}
@keyframes textAnimate {
from {
filter: hue-rotate(0deg);
background-position-x: 0%;
}
to {
filter: hue-rotate(360deg);
background-position-x: 600vw;
}
}
.text {
color: white;
}
.title {
font: normal 28px Verdana;
font-weight: bold;
color: white;
}
</style>
</head>
<center>
<h2 class='title'>
Login to Porn Vids
</h2>
<div class='text'>
Jelszó:
</div>
<input type='text' id='pw' />
<button onclick='login()'>
Login
</button>
</center>
</body>
<script>
function login () {
const pw = document.getElementById('pw').value
location.href = '/login/?pw=' + pw
}
</script>
</html>

View file

@ -1,94 +0,0 @@
<html>
<body bgcolor="#212127">
<head>
<title>No such file/folder</title>
<meta charset="UTF-8">
<style>
body {
font: normal 14px Verdana;
color: #999999;
}
td {
vertical-align: top
}
textarea {
font: normal 14px Verdana;
color: #999999;
background-color: #212127;
width: 100%;
height: 700;
}
a {
color: #9999ff;
}
.subtable {
border-collapse: collapse;
table-layout:fixed;
width:100%
}
.maintable {
border-collapse: collapse;
table-layout:fixed;
width:100%
padding:0; margin:0;
border: none !important;
}
tr {
line-height: 29px;
width:32%;
}
.butt {
background-color: #212127;
color: #999999;
cursor: pointer;
width: 100%;
border: none;
text-align: left;
outline: none;
font-size: 13px;
}
.active,
.butt:hover {
background-color: #555;
}
</style>
</head>
<center>
<h1>
No such file / folder:
</br>
<%= missingFile %>
</br>
<a href="<%= url %>" > Back to root </a>
</br>
<a
onclick='goBack("<%=missingFile%>")'
href="#"
>
Go back
</a>
</h1>
</center>
</body>
<script>
function goBack(path) {
path = path.replace('./public/files', '')
if (path[path.length - 1] == '/') {
path = path.substring(0, path.length -2)
}
let p = path.split('/')
p.pop()
if (p.length > 1) {
location.href = p.join('/')
} else {
location.href = '/'
}
}
</script>
</html>

View file

@ -1,57 +0,0 @@
<html>
<body bgcolor="#ffeeee">
<head>
<title><%= fname %></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=0.6" />
<style>
video {
width: 100%
}
.rainbow {
background: linear-gradient( 92deg, #ff0000, #00ffff);
background: -webkit-linear-gradient( 92deg, #ff0000, #00ffff);
background-size:600vw 600vw;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
animation: textAnimate 4s linear infinite alternate;
}
@keyframes textAnimate {
from {
filter: hue-rotate(0deg);
background-position-x: 0%;
}
to {
filter: hue-rotate(360deg);
background-position-x: 600vw;
}
}
.title {
font: normal 28px Verdana;
font-weight: bold;
}
</style>
</head>
<center>
<h2 class='rainbow title'>
<%= fname %>
</h2>
</center>
<video id="videoPlayer" controls>
<source src="<%= url %><%= path %>?stream=true" type="video/mp4">
</video>
</body>
<script>
var v = document.getElementsByTagName('video')[0]
v.style.maxHeight = window.innerHeight - 100
v.maxWidth = window.innerWidth
console.log('a')
</script>
</html>

View file

@ -19,23 +19,24 @@
------------------------------------------------------------------------- */
// package requires
const express = require('express')
const bodyParser = require('body-parser')
const busboy = require('connect-busboy')
const url = require('url')
import express from 'express'
import bodyParser from 'body-parser'
import busboy from 'connect-busboy'
const app = express()
// other requires
const utils = require('../../utils/utils.js')
const logger = require('../../utils/logger.js')
const auth = require('../../middlewares/auth.middleware.js')
import utils from '../../utils/utils'
import logger from '../../utils/logger'
import auth from '../../middlewares/auth.middleware'
import { SetupData } from '../../server'
import { ModuleType } from '../../types/basicTypes'
// stuff gotten from server.js
let publicdirs = []
let userDB
let nextdir = ''
function GetApp() {
function GetApp(): ModuleType {
app.use(
bodyParser.urlencoded({
limit: '5mb',
@ -180,7 +181,7 @@ function GetApp() {
let target = redirect.to
if (!redirect.to.includes('?')) {
target += url.format({ query: req.query })
target += utils.formatUrl({ query: req.query })
}
res.redirect(target)
@ -200,10 +201,10 @@ function GetApp() {
routes.forEach((route) => {
logger.DebugLog(`Added route /${route}`, 'Qmining routes', 1)
app.get(`/${route}`, function(req, res) {
app.get(`/${route}`, function(req: express.Request, res) {
logger.LogReq(req)
res.redirect(
url.format({
utils.formatUrl({
pathname: `${route}.html`,
query: req.query,
})
@ -241,10 +242,12 @@ function GetApp() {
}
}
exports.name = 'Qmining'
exports.getApp = GetApp
exports.setup = (data) => {
userDB = data.userDB
publicdirs = data.publicdirs
nextdir = data.nextdir
export default {
name: 'Qmining',
getApp: GetApp,
setup: (data: SetupData): void => {
userDB = data.userDB
publicdirs = data.publicdirs
nextdir = data.nextdir
},
}

View file

@ -19,27 +19,29 @@
------------------------------------------------------------------------- */
// package requires
const express = require('express')
const bodyParser = require('body-parser')
const busboy = require('connect-busboy')
const fs = require('fs')
import express from 'express'
import bodyParser from 'body-parser'
import busboy from 'connect-busboy'
import fs from 'fs'
const app = express()
// other requires
const logger = require('../../utils/logger.js')
const utils = require('../../utils/utils.js')
import logger from '../../utils/logger'
import utils from '../../utils/utils'
import { SetupData } from '../../server'
import { ModuleType } from '../../types/basicTypes'
// stuff gotten from server.js
let publicdirs = []
function GetApp() {
const p = publicdirs[0]
if (!p) {
function GetApp(): ModuleType {
const publicdir = publicdirs[0]
if (!publicdir) {
throw new Error(`No public dir! ( SIO )`)
}
// files in public dirs
const uloadFiles = p + 'f'
const uloadFiles = publicdir + 'f'
app.set('view engine', 'ejs')
app.set('views', ['./src/modules/sio/views', './src/sharedViews'])
@ -75,23 +77,22 @@ function GetApp() {
})
function UploadFile(req, res, path, next) {
var fstream
req.pipe(req.busboy)
req.busboy.on('file', function(fieldname, file, filename) {
logger.Log('Uploading: ' + filename, logger.GetColor('blue'))
utils.CreatePath(path, true)
let d = new Date()
let fn =
d.getHours() +
const date = new Date()
const fn =
date.getHours() +
'' +
d.getMinutes() +
date.getMinutes() +
'' +
d.getSeconds() +
date.getSeconds() +
'_' +
filename
fstream = fs.createWriteStream(path + '/' + fn)
const fstream = fs.createWriteStream(path + '/' + fn)
file.pipe(fstream)
fstream.on('close', function() {
logger.Log(
@ -107,7 +108,7 @@ function GetApp() {
})
}
app.route('/fosuploader').post(function(req, res, next) {
app.route('/fosuploader').post(function(req, res) {
UploadFile(req, res, uloadFiles, (fn) => {
res.redirect('/f/' + fn)
})
@ -125,8 +126,10 @@ function GetApp() {
}
}
exports.name = 'Sio'
exports.getApp = GetApp
exports.setup = (data) => {
publicdirs = data.publicdirs
export default {
name: 'Sio',
getApp: GetApp,
setup: (data: SetupData): void => {
publicdirs = data.publicdirs
},
}

View file

@ -19,27 +19,29 @@
------------------------------------------------------------------------- */
// package requires
const express = require('express')
const bodyParser = require('body-parser')
const busboy = require('connect-busboy')
const fs = require('fs')
import express from 'express'
import bodyParser from 'body-parser'
import busboy from 'connect-busboy'
import fs from 'fs'
const app = express()
// other requires
const logger = require('../../utils/logger.js')
import logger from '../../utils/logger'
import { SetupData } from '../../server'
import { ModuleType } from '../../types/basicTypes'
// stuff gotten from server.js
let publicdirs = []
let url = ''
function GetApp() {
const p = publicdirs[0]
if (!p) {
function GetApp(): ModuleType {
const publicDir = publicdirs[0]
if (!publicDir) {
throw new Error(`No public dir! ( Stuff )`)
}
// files in public dirs
const listedFiles = './' + p + 'files'
const listedFiles = './' + publicDir + 'files'
app.set('view engine', 'ejs')
app.set('views', ['./src/modules/stuff/views', './src/sharedViews'])
@ -72,10 +74,10 @@ function GetApp() {
// app, '/*.mp4', 'video/mp4', 'stuff/video'
function appGetFileType(app, wildcard, contentType, pageToRender) {
app.get(wildcard, function(req, res) {
let p = decodeURI(req.url)
let fp = p
if (p.includes('?')) {
fp = p.split('?')
const path = decodeURI(req.url)
let fp: any = path
if (path.includes('?')) {
fp = path.split('?')
fp.pop()
fp = fp.join('/')
}
@ -115,14 +117,13 @@ function GetApp() {
}
} else {
logger.LogReq(req)
let fname = fpath.split('/')
fname = fname.pop()
const fname = fpath.split('/').pop()
res.render(pageToRender, {
path: fp,
fname,
url,
contentType,
albumArt: GetAlbumArt(p),
albumArt: GetAlbumArt(path),
})
}
})
@ -140,7 +141,7 @@ function GetApp() {
let tmp = path.split('.')
tmp.pop()
tmp = tmp.join('.').split('/')
let last = tmp.pop()
const last = tmp.pop()
return tmp.join('/') + '/.' + last + '.png'
}
@ -150,7 +151,7 @@ function GetApp() {
})
app.get('/*', function(req, res) {
let parsedUrl = decodeURI(req.url)
const parsedUrl = decodeURI(req.url)
let curr =
listedFiles +
'/' +
@ -161,10 +162,10 @@ function GetApp() {
relPath += '/'
}
let t = relPath.split('/')
const temp = relPath.split('/')
let prevDir = ''
for (let i = 0; i < t.length - 2; i++) {
prevDir += t[i] + '/'
for (let i = 0; i < temp.length - 2; i++) {
prevDir += temp[i] + '/'
}
// curr = curr.replace(/\//g, "/");
@ -179,9 +180,9 @@ function GetApp() {
curr += '/'
}
let f = []
const folders = []
let files = fs.readdirSync(curr)
const files = fs.readdirSync(curr)
files.sort(function(a, b) {
return (
fs.statSync(curr + b).mtime.getTime() -
@ -191,10 +192,9 @@ function GetApp() {
files.forEach((item) => {
if (item[0] !== '.') {
let res = { name: item }
let stat = fs.statSync(curr + '/' + item)
let fileSizeInBytes = stat['size']
const res: any = { name: item }
const stat = fs.statSync(curr + '/' + item)
const fileSizeInBytes = stat['size']
res.size = Math.round(fileSizeInBytes / 1000000)
res.path = relPath
@ -206,21 +206,21 @@ function GetApp() {
res.mtime = stat['mtime'].toLocaleString()
res.isDir = stat.isDirectory()
f.push(res)
folders.push(res)
}
})
res.render('folders', {
folders: f,
folders: folders,
dirname: relPath,
prevDir,
url,
})
} else {
let fileStream = fs.createReadStream(curr)
const fileStream = fs.createReadStream(curr)
fileStream.pipe(res)
}
} catch (e) {
} catch (err) {
res.render('nofile', {
missingFile: curr,
url,
@ -243,9 +243,11 @@ function GetApp() {
}
}
exports.name = 'Stuff'
exports.getApp = GetApp
exports.setup = (data) => {
url = data.url
publicdirs = data.publicdirs
export default {
name: 'Stuff',
getApp: GetApp,
setup: (data: SetupData): void => {
url = data.url
publicdirs = data.publicdirs
},
}

View file

@ -28,21 +28,21 @@ const port = isRoot ? 80 : 8080
const httpsport = isRoot ? 443 : 5001
import express from 'express'
import logger from './utils/logger.js'
import vhost from 'vhost'
import utils from './utils/utils.js'
import http from 'http'
import https from 'https'
import cors from 'cors'
import cookieParser from 'cookie-parser'
import { uuidv4 } from 'uuid'
import { v4 as uuidv4 } from 'uuid'
import dbtools from './utils/dbtools.js'
import reqlogger from './middlewares/reqlogger.middleware.js'
import extraModulesFile from rc / extraModules.json
import modulesFile from rc / modules.json
import usersDBPath from ata / dbs / users.db
import idStats from './utils/ids.js'
import logger from './utils/logger'
import utils from './utils/utils'
import dbtools from './utils/dbtools'
import reqlogger from './middlewares/reqlogger.middleware'
import idStats from './utils/ids'
const extraModulesFile = './src/extraModules.json'
const modulesFile = './src/modules.json'
const usersDBPath = './data/dbs/users.db'
idStats.Load()
logger.Load()
@ -57,6 +57,16 @@ interface Module {
urls: Array<string>
nextdir?: string
isNextJs?: boolean
app: express.Application
dailyAction: Function
cleanup: Function
}
export interface SetupData {
url: string
publicdirs: Array<string>
userDB?: any
nextdir?: string
}
if (!utils.FileExists(usersDBPath)) {
@ -150,7 +160,7 @@ app.use(
Object.keys(modules).forEach(function(key) {
const module = modules[key]
try {
import mod from module.path
const mod = require(module.path).default // eslint-disable-line
// const mod = require(module.path)
logger.Log(`Loading ${mod.name} module`, logger.GetColor('yellow'))
@ -171,7 +181,6 @@ Object.keys(modules).forEach(function(key) {
module.app = modApp.app
module.dailyAction = modApp.dailyAction
module.cleanup = modApp.cleanup
module.urls.forEach((url) => {
app.use(vhost(url, module.app))
})

View file

@ -1,3 +1,5 @@
import express from 'express'
export interface QuestionData {
type: string
images?: Array<string>
@ -26,3 +28,18 @@ export interface User {
pw: string
created: Date
}
export interface ModuleType {
app: express.Application
dailyAction?: Function
}
// TODO: add more props based on db
export interface User {
id: number
pw: string
pwRequestCount: number
pwGotFromCID: number
avaiblePWRequests: number
loginCount: number
}

View file

@ -17,7 +17,7 @@ Question Server
------------------------------------------------------------------------- */
module.exports = {
export default {
ProcessIncomingRequest: ProcessIncomingRequest,
LoadJSON: LoadJSON,
backupData: backupData,
@ -26,11 +26,11 @@ module.exports = {
const recDataFile = './stats/recdata'
const dataLockFile = './data/lockData'
import logger from '../utils/logger.js'
import { searchData, createQuestion } from '../utils/classes.js'
import idStats from '../utils/ids.js'
import utils from '../utils/utils.js'
import { addQuestion, getSubjNameWithoutYear } from './classes.js'
import logger from '../utils/logger'
import { searchData, createQuestion } from '../utils/classes'
import idStats from '../utils/ids'
import utils from '../utils/utils'
import { addQuestion, getSubjNameWithoutYear } from './classes'
// types
import { QuestionDb, Question, User } from '../types/basicTypes'
@ -56,7 +56,7 @@ function ProcessIncomingRequest(
questionDbs: Array<QuestionDb>,
dryRun: boolean,
user: User
) {
): Promise<Array<number>> {
return Promise.all(
questionDbs.map((qdb) => {
return ProcessIncomingRequestUsingDb(recievedData, qdb, dryRun, user)
@ -69,7 +69,7 @@ function ProcessIncomingRequestUsingDb(
qdb: QuestionDb,
dryRun: boolean,
user: User
) {
): Promise<number> {
return new Promise((resolve, reject) => {
logger.DebugLog('Processing incoming request', 'actions', 1)
@ -92,7 +92,7 @@ function ProcessIncomingRequestUsingDb(
utils.AppendToFile(towrite, recDataFile)
logger.DebugLog('recDataFile written', 'actions', 1)
} catch (err) {
logger.log('Error writing recieved data.')
logger.Log('Error writing recieved data.')
}
if (utils.FileExists(dataLockFile)) {
@ -251,7 +251,7 @@ function LoadJSON(dataFiles: Array<DataFile>) {
}, [])
}
function backupData(questionDbs: Array<DataFile>) {
function backupData(questionDbs: Array<QuestionDb>) {
questionDbs.forEach((data) => {
const path = './publicDirs/qminingPublic/backs/'
utils.CreatePath(path)

View file

@ -1,31 +0,0 @@
const utils = require('../utils/utils.js')
const dataFile = '../public/data.json'
const versionFile = '../public/version'
var p = GetParams()
if (p.length <= 0) {
console.log('no params!')
process.exit(0)
}
var param = p.join(' ')
console.log('param: ' + param)
var d = utils.ReadFile(dataFile)
var parsed = JSON.parse(d)
console.log('Old version:')
console.log(parsed.version)
parsed.version = param
console.log('New version:')
console.log(parsed.version)
utils.WriteFile(JSON.stringify(parsed), dataFile)
utils.WriteFile(parsed.version, versionFile)
function GetParams() {
return process.argv.splice(2)
}

View file

@ -1,8 +1,13 @@
import { Worker, isMainThread, parentPort, workerData } from 'worker_threads'
import logger from './logger.js'
import logger from './logger'
import { Question, QuestionData, Subject } from '../types/basicTypes'
const searchDataWorkerFile = './src/utils/classes.js'
// TODO
interface SearchResultQuestion extends Question {
match: number
}
const searchDataWorkerFile = './src/utils/classes.ts'
const assert = (val) => {
if (!val) {
@ -37,7 +42,7 @@ const minMatchToNotSearchOtherSubjects = 90
// Exported
// ---------------------------------------------------------------------------------------------------------
function getSubjNameWithoutYear(subjName: string) {
function getSubjNameWithoutYear(subjName: string): string {
const t = subjName.split(' - ')
if (t[0].match(/^[0-9]{4}\/[0-9]{2}\/[0-9]{1}$/i)) {
return t[1] || subjName
@ -51,7 +56,7 @@ function getSubjNameWithoutYear(subjName: string) {
function removeStuff(
value: string,
removableStrings: Array<string>,
toReplace: string
toReplace?: string
) {
removableStrings.forEach((removableString) => {
const regex = new RegExp(removableString, 'g')
@ -92,24 +97,24 @@ function normalizeSpaces(input: string) {
return input.replace(/\s/g, ' ')
}
function compareString(s1: string, s2: string) {
if (!s1 || !s2) {
if (!s1 && !s2) {
function compareString(string1: string, string2: string) {
if (!string1 || !string2) {
if (!string1 && !string2) {
return 100
} else {
return 0
}
}
s1 = simplifyStringForComparison(s1).split(' ')
s2 = simplifyStringForComparison(s2).split(' ')
const s1 = simplifyStringForComparison(string1).split(' ')
const s2 = simplifyStringForComparison(string2).split(' ')
let match = 0
for (let i = 0; i < s1.length; i++) {
if (s2.includes(s1[i])) {
match++
}
}
let percent = Math.round(((match / s1.length) * 100).toFixed(2)) // matched words percent
let percent = Math.round(parseFloat(((match / s1.length) * 100).toFixed(2)))
const lengthDifference = Math.abs(s2.length - s1.length)
percent -= lengthDifference * lengthDiffMultiplier
if (percent < 0) {
@ -161,7 +166,7 @@ function simplifyAnswer(value: string) {
])
}
function simplifyQuestion(question: Question) {
function simplifyQuestion(question: Question | string) {
if (!question) {
return
}
@ -194,7 +199,11 @@ function simplifyQuestion(question: Question) {
// Question
// ---------------------------------------------------------------------------------------------------------
function createQuestion(question: string, answer: string, data: QuestionData) {
function createQuestion(
question: Question | string,
answer: string,
data: QuestionData
): Question {
return {
Q: simplifyQuestion(question),
A: simplifyAnswer(answer),
@ -313,7 +322,7 @@ function searchQuestion(
) {
assert(question)
const result = []
let result = []
subj.Questions.forEach((currentQuestion) => {
const percent = compareQuestionObj(
currentQuestion,
@ -359,7 +368,11 @@ function subjectToString(subj: Subject) {
// ---------------------------------------------------------------------------------------------------------
// QuestionDB
// ---------------------------------------------------------------------------------------------------------
function addQuestion(data: Array<Subject>, subj: string, question: Question) {
function addQuestion(
data: Array<Subject>,
subj: string,
question: Question
): void {
logger.DebugLog('Adding new question with subjName: ' + subj, 'qdb add', 1)
logger.DebugLog(question, 'qdb add', 3)
assert(data)
@ -389,12 +402,13 @@ function addQuestion(data: Array<Subject>, subj: string, question: Question) {
}
}
// TODO: remove questionData, make question only Question type
function searchData(
data: Array<Subject>,
question: Question,
question: any,
subjName: string,
questionData: QuestionData
) {
questionData?: QuestionData
): Promise<Array<SearchResultQuestion>> {
return new Promise((resolve, reject) => {
assert(data)
assert(question)
@ -414,7 +428,7 @@ function searchData(
}
question = simplifyQuestion(question)
const worker = new Worker(searchDataWorkerFile, {
const worker = workerTs(searchDataWorkerFile, {
workerData: { data, subjName, question, questionData },
})
@ -451,32 +465,7 @@ function searchData(
})
}
function addSubject(data: Array<Subject>, subj) {
assert(data)
assert(subj)
let i = 0
while (i < length && subj.Name !== data[i].Name) {
i++
}
if (i < length) {
return data.map((currSubj, j) => {
if (j === i) {
return {
...currSubj,
Questions: [...currSubj.Questions, ...subj.Questions],
}
} else {
return currSubj
}
})
} else {
return [...data, subj]
}
}
function dataToString(data: Array<Subject>) {
function dataToString(data: Array<Subject>): string {
const result = []
data.forEach((subj) => {
result.push(subjectToString(subj))
@ -485,9 +474,13 @@ function dataToString(data: Array<Subject>) {
}
// ------------------------------------------------------------------------
if (!isMainThread) {
logger.DebugLog(`Starting search worker ...`, 'worker', 1)
const { data, subjName, question, questionData } = workerData
function searchWorker(
data: any,
subjName: any,
question: any,
questionData: any
): any {
let result = []
data.forEach((subj) => {
@ -496,7 +489,7 @@ if (!isMainThread) {
.toLowerCase()
.includes(getSubjNameWithoutYear(subj.Name).toLowerCase())
) {
logger.DebugLog(`Searching in ${subj.Name} `, 2)
logger.DebugLog(`Searching in ${subj.Name} `, 'searchworker', 2)
result = result.concat(
searchQuestion(subj, question, questionData, subjName)
)
@ -512,7 +505,7 @@ if (!isMainThread) {
) {
logger.DebugLog(
'Reqults length is zero when comparing names, trying all subjects',
'qdb search',
'searchworker',
1
)
data.forEach((subj) => {
@ -523,7 +516,7 @@ if (!isMainThread) {
if (result.length > 0) {
logger.DebugLog(
`FIXME: '${subjName}' gave no result but '' did!`,
'qdb search',
'searchworker',
1
)
console.error(`FIXME: '${subjName}' gave no result but '' did!`)
@ -543,14 +536,37 @@ if (!isMainThread) {
parentPort.postMessage(result)
process.exit(0)
}
const workerTs = (file: string, wkOpts: any) => {
wkOpts.eval = true
if (!wkOpts.workerData) {
wkOpts.workerData = {}
}
wkOpts.workerData.__filename = file
return new Worker(
`
const wk = require('worker_threads');
require('ts-node').register();
let file = wk.workerData.__filename;
delete wk.workerData.__filename;
require(file);
`,
wkOpts
)
}
if (!isMainThread) {
logger.DebugLog(`Starting search worker ...`, 'searchworker', 1)
const { data, subjName, question, questionData } = workerData
searchWorker(data, subjName, question, questionData)
}
// ------------------------------------------------------------------------
module.exports = {
export {
minMatchAmmount,
getSubjNameWithoutYear,
createQuestion,
addQuestion,
addSubject,
searchData,
dataToString,
}

View file

@ -1,533 +0,0 @@
id pw oldCID lastIP notes loginCount created lastLogin lastAccess avaiblePWRequests pwRequestCount pwGotFromCID
---------- ------------------------------------ ------------- ---------------- ---------- ---------- ------------------- ------------------- ------------------- ----------------- -------------- ------------
1 6db3b190-68eb-4a03-bb57-a7f2daba0a28 1572270779259 ::ffff:127.0.0.1 1 2020-04-09 17:27:37 2020-04-13 14:45:04 2020-04-13 19:29:19 5 0 0
2 35ec8413-cfd4-4991-b921-a64257cc789a 1572281342041 ::ffff:127.0.0.1 1 2020-04-09 17:27:37 2020-04-14 10:13:53 2020-04-14 11:21:06 0 5 0
3 f05308dc-e44b-4e1c-b4ef-f450a6d71633 1572394794266 ::ffff:127.0.0.1 1 2020-04-09 17:27:37 2020-04-09 17:28:47 2020-04-09 17:30:28 5 0 1
4 3323377a-2c9a-4ef2-8b3f-b76a7203e293 1572603975179 0 2020-04-09 17:27:37 5 0 0
5 521906f9-cf0a-4e4d-a4fc-244a805cda33 1572612915747 0 2020-04-09 17:27:37 5 0 0
6 0dbf30ed-9956-4998-9062-e8a78ff35e77 1572621200346 ::ffff:127.0.0.1 1 2020-04-09 17:27:37 2020-04-15 15:33:00 2020-04-15 16:00:47 5 0 0
7 6b71d7d3-6c4a-4aa4-b3bc-0e22e3470990 1572703783416 ::ffff:127.0.0.1 1 2020-04-09 17:27:37 2020-04-13 09:32:53 2020-04-13 10:21:28 3 2 0
8 b4250eef-d4ce-47cb-ab51-fe14a17becc3 1572805169940 ::ffff:127.0.0.1 1 2020-04-09 17:27:37 2020-04-13 11:30:17 2020-04-13 11:37:41 5 0 1
9 9b7ef61b-9634-4e4a-b505-bc13e0013848 1572896358505 ::ffff:127.0.0.1 1 2020-04-09 17:27:37 2020-04-09 17:32:12 2020-04-09 17:32:15 5 0 1
10 be1004c2-5dd6-4f86-ac1a-6720aad7d04e 1572905784217 0 2020-04-09 17:27:37 5 0 0
11 01cb5b62-65e6-4f4d-9c99-c10fbc9557e0 1572909056982 0 2020-04-09 17:27:37 5 0 0
12 eac1260f-35a3-4c52-8471-1e581312244e 1572962332049 0 2020-04-09 17:27:37 5 0 0
13 7ab25783-4d05-41ed-968c-d6ceecbc9b29 1572985162947 0 2020-04-09 17:27:37 5 0 0
14 b4bbc80e-5f62-4436-b72d-22cc913062ac 1572996033475 0 2020-04-09 17:27:37 5 0 0
15 3e0c52d0-87dc-475d-a092-f8e712974e12 1573133044933 0 2020-04-09 17:27:37 5 0 0
16 7bec5c4a-a8f3-4360-8ee0-8c6458ba90c5 1573136314984 0 2020-04-09 17:27:37 5 0 0
17 efc53893-69fb-4d76-b8d6-0a32ee45e1e4 1573140815020 0 2020-04-09 17:27:37 5 0 0
18 35ae6766-966b-4007-aab9-e6fd18b2cf7b 1573228693011 0 2020-04-09 17:27:37 5 0 0
19 4b1423a8-a0b7-4d58-b106-ab05436e5b64 1573329941290 0 2020-04-09 17:27:37 5 0 0
20 64f8c3e2-cb9f-4f46-be3a-de2bc38cfa2b 1573396722168 0 2020-04-09 17:27:37 5 0 0
21 d04c48fe-6aaf-44ab-a2df-2dfe43e86534 1573396895820 0 2020-04-09 17:27:37 5 0 0
22 1c8c756e-38a8-4eff-8a7d-04b706f7d693 1573402341355 0 2020-04-09 17:27:37 5 0 0
23 66968293-200c-4903-8261-99a777a58b99 1573410711027 0 2020-04-09 17:27:37 5 0 0
24 94d4eeeb-c664-4cfa-847f-21199521ed16 1573424473939 0 2020-04-09 17:27:37 5 0 0
25 20947db8-2545-45c8-9470-193807faca6b 1573479972820 0 2020-04-09 17:27:37 5 0 0
26 f9900780-e240-46e2-94f9-7d1917a0a741 1573514811120 0 2020-04-09 17:27:37 5 0 0
27 305aff0b-fbb6-4fae-a983-a5b55a75c545 1573660950867 0 2020-04-09 17:27:37 5 0 0
28 321f99c7-4bff-4323-9462-da971e19a2f6 1573748376830 0 2020-04-09 17:27:37 5 0 0
29 ec977ab6-d0d6-408d-99db-99cf1add9b39 1573855439026 0 2020-04-09 17:27:37 5 0 0
30 da123e75-2b11-4291-ba25-5ef4b1b145b1 1574007410951 0 2020-04-09 17:27:37 5 0 0
31 aec07a74-94ea-4ed9-bc36-ef9615968a0f 1574033340418 0 2020-04-09 17:27:37 5 0 0
32 57413601-6c64-42e2-9865-b0431afc9b66 1574074087046 0 2020-04-09 17:27:37 5 0 0
33 3af73c35-9f87-424b-86b1-646ecf42ffa6 1574076814225 0 2020-04-09 17:27:37 5 0 0
34 da825f57-f318-4490-9bda-099cb1fb860e 1574076864353 0 2020-04-09 17:27:37 5 0 0
35 9d8c3d5b-da8d-48df-abdc-8523262fcf19 1574077272636 0 2020-04-09 17:27:37 5 0 0
36 19c09511-45bf-4206-9fb7-ca9e7518589c 1574078697615 0 2020-04-09 17:27:37 5 0 0
37 59011cc5-b63b-482e-854b-e7be30f8bdfc 1574078970482 0 2020-04-09 17:27:37 5 0 0
38 f153b5ee-494c-4398-a878-2af10ba7dcbc 1574082123907 0 2020-04-09 17:27:37 5 0 0
39 5de7ae2f-d842-4d3e-927f-7eb320a455c5 1574085823334 0 2020-04-09 17:27:37 5 0 0
40 c84cc259-480b-4763-a856-124b56dd3c08 1574089044482 0 2020-04-09 17:27:37 5 0 0
41 ec053668-f77a-4951-8737-dca81fc859cf 1574089379003 0 2020-04-09 17:27:37 5 0 0
42 4dea472e-9a3c-47c2-840d-79ce8fce4be3 1574090624141 0 2020-04-09 17:27:37 5 0 0
43 77b66f7e-cd83-4a36-a4ba-e881df3ca392 1574092371238 0 2020-04-09 17:27:37 5 0 0
44 44f12c37-fedb-413e-a973-a43b0ba049fe 1574101279997 0 2020-04-09 17:27:37 5 0 0
45 e5a8a983-a324-44cf-80e7-553023914433 1574124634646 0 2020-04-09 17:27:37 5 0 0
46 cf05c3d1-e8ab-40e0-9d2d-7c1f16cadeac 1574162935938 0 2020-04-09 17:27:37 5 0 0
47 9bfa9b39-038d-4e9a-b062-0841fdc67325 1574164858945 0 2020-04-09 17:27:37 5 0 0
48 70222414-f987-4978-816a-84f75d8a43df 1574166782425 0 2020-04-09 17:27:37 5 0 0
49 0fa43877-0445-442d-8eca-f84cc7998edb 1574182981119 0 2020-04-09 17:27:37 5 0 0
50 775263ef-59be-42f4-94dd-f9964171498d 1574186786069 0 2020-04-09 17:27:37 5 0 0
51 02fdec15-eac5-4dce-84f4-8725383d7474 1574197592300 0 2020-04-09 17:27:37 5 0 0
52 c8697337-c62b-4ce2-aec3-d131f0c79e94 1574253542100 0 2020-04-09 17:27:37 5 0 0
53 ecd975c8-b6cc-4eda-b3dd-94c363d5d4ad 1574261650379 0 2020-04-09 17:27:37 5 0 0
54 db2c18d6-0508-4d9c-9b80-5f7c5c03ae46 1574271939999 0 2020-04-09 17:27:37 5 0 0
55 d5447e49-68ad-4d3f-af67-15b6f27fdfdc 1574296313340 0 2020-04-09 17:27:37 5 0 0
56 b8534a39-c195-4877-bb8c-5d1437a353fa 1574332666655 0 2020-04-09 17:27:37 5 0 0
57 e7125dc9-4e15-4b12-a3a9-e5eb8cab879f 1574516495733 0 2020-04-09 17:27:37 5 0 0
58 05e95166-0385-4ffd-a5c5-4f27fb05026c 1574536274693 0 2020-04-09 17:27:37 5 0 0
59 c6ab601e-891b-4906-95ee-4a0950fbfdfd 1574546047670 0 2020-04-09 17:27:37 5 0 0
60 c5d9601c-a7aa-4106-b20a-e9a670c45cc0 1574549559072 0 2020-04-09 17:27:37 5 0 0
61 e0751ab5-040c-4aaa-bd8b-3640799b8555 1574619311351 0 2020-04-09 17:27:37 5 0 0
62 ae2d9979-dadb-44ec-8b09-542b4cdc0fa4 1574693821228 0 2020-04-09 17:27:37 5 0 0
63 9daa7734-1c1f-403b-8202-c34ce66c2713 1574701041941 0 2020-04-09 17:27:37 5 0 0
64 f8894edd-2325-4f6b-bfe0-93fb28bf36ca 1575043480252 0 2020-04-09 17:27:37 5 0 0
65 2ca39cf1-ebef-4a7c-82a5-c221d6ace949 1575043824428 0 2020-04-09 17:27:37 5 0 0
66 b7350d3a-0187-45a3-9c47-d555e4f5b1ef 1575059557969 0 2020-04-09 17:27:37 5 0 0
67 edc8ba18-3071-42d2-b172-7a222758fddf 1575237166613 0 2020-04-09 17:27:37 5 0 0
68 b85a064c-3d16-4d2d-ba05-129b236eaa54 1575309241351 0 2020-04-09 17:27:37 5 0 0
69 86efceb7-265e-4939-b02e-12aac69723f4 1575502840565 0 2020-04-09 17:27:37 5 0 0
70 5ed4edc5-688b-425e-a8c8-ff03095cea98 1575566700218 0 2020-04-09 17:27:37 5 0 0
71 636ef0f3-b138-4c00-91e5-9b9ae4beeaf2 1575645175090 0 2020-04-09 17:27:37 5 0 0
72 dbf8b312-3078-4d19-bf0c-278ea06251f7 1575727001238 0 2020-04-09 17:27:37 5 0 0
73 90daea95-b785-4000-9301-cdafaf3e6a79 1575731897377 0 2020-04-09 17:27:37 5 0 0
74 69ac176c-020d-486c-890d-102745d16474 1575811342547 0 2020-04-09 17:27:37 5 0 0
75 4ec71dff-3872-4610-b6b6-5103b79fe947 1575825001678 0 2020-04-09 17:27:37 5 0 0
76 35208d78-caea-43c1-b723-0a755443ad6f 1575851111714 0 2020-04-09 17:27:37 5 0 0
77 5df90f58-5781-4745-a271-4567dc617dff 1575988580003 0 2020-04-09 17:27:37 5 0 0
78 6419e18d-4bf3-4caf-bd83-243e9a6f39ed 1576008784558 0 2020-04-09 17:27:37 5 0 0
79 36086934-8b44-4d17-a4ff-8f8c5befb144 1576095955140 0 2020-04-09 17:27:37 5 0 0
80 4a86c716-ce67-4834-9916-974f96e8d5f9 1576110824780 0 2020-04-09 17:27:37 5 0 0
81 4309598f-b1d4-405d-8d3e-8857cd8b87e7 1576155714954 0 2020-04-09 17:27:37 5 0 0
82 1f4847e0-626f-45c4-9607-2b88028057bb 1576170697100 0 2020-04-09 17:27:37 5 0 0
83 86801984-2eeb-40fd-b5c0-cb2313fd7906 1576178942217 0 2020-04-09 17:27:37 5 0 0
84 ed6bbf57-7ee9-4296-a2e2-1fd63357b140 1576199121100 0 2020-04-09 17:27:37 5 0 0
85 881b8b8d-ced2-4d93-acf5-293af4e7d20f 1576285383104 0 2020-04-09 17:27:37 5 0 0
86 cdfc2f1a-637e-46e4-85d2-9d05870fdca9 1576433101578 0 2020-04-09 17:27:37 5 0 0
87 8ad5eec0-b167-4c75-8a15-e706c733a43a 1576594564269 0 2020-04-09 17:27:37 5 0 0
88 9eeac265-1d11-4c54-abcf-cff8587b2438 1576604050195 0 2020-04-09 17:27:37 5 0 0
89 2f0533a6-979f-408e-bc7f-1e68e7fe491d 1576663970202 0 2020-04-09 17:27:37 5 0 0
90 a4af4451-645e-48f4-9eb0-fea523b73bc6 1576745689670 0 2020-04-09 17:27:37 5 0 0
91 40fcc728-5384-499d-a0ad-9059de48db5d 1576883560968 0 2020-04-09 17:27:37 5 0 0
92 560ed2c5-cd66-4498-a054-c3e8a206151b 1577004560619 0 2020-04-09 17:27:37 5 0 0
93 55b46166-4abc-4973-ab78-fae999071e31 1577297334851 0 2020-04-09 17:27:37 5 0 0
94 72f6d758-ee3f-4110-a325-620ddd329573 1577299054872 0 2020-04-09 17:27:37 5 0 0
95 9627b910-8c41-44ab-b9ff-f358ae970a68 1577550024424 0 2020-04-09 17:27:37 5 0 0
96 7acaedbf-19f0-4f54-b686-28a05634ebf7 1577908652191 0 2020-04-09 17:27:37 5 0 0
97 6cd50d7d-dcdb-471e-b396-619a73e2e5ac 1577911620176 0 2020-04-09 17:27:37 5 0 0
98 ef6477e6-96ca-4b06-b32b-9dfb8363d07d 1577967339210 0 2020-04-09 17:27:37 5 0 0
99 662e56b1-54b6-4d01-b086-9445dcd707c4 1577974646965 0 2020-04-09 17:27:37 5 0 0
100 c605a0b3-ab09-4f0b-a875-96cb12068b03 1577991656395 0 2020-04-09 17:27:37 5 0 0
101 5671257e-3559-41a5-bd19-1342da75f373 1578001446771 0 2020-04-09 17:27:37 5 0 0
102 a38d5a25-3c0d-4635-a5a2-ffb1f73070e1 1578029505468 0 2020-04-09 17:27:37 5 0 0
103 f9efc196-9eec-4b21-b443-ab1f74659796 1578067960632 0 2020-04-09 17:27:37 5 0 0
104 5cfb3a91-a7a4-4b24-b0e8-3a52f5584bc5 1578075721685 0 2020-04-09 17:27:37 5 0 0
105 b5b7cffa-e60e-4ed0-b3a2-469a4423060b 1578082384610 0 2020-04-09 17:27:37 5 0 0
106 fdbe0bac-6a63-4c33-bd80-f3b1d40164f4 1578092298983 0 2020-04-09 17:27:37 5 0 0
107 0cbd06cf-0330-4679-bbb8-c91d0089f5af 1578154868110 0 2020-04-09 17:27:37 5 0 0
108 9881a9ef-6237-4745-aa83-f8dc9b607b5c 1578163736711 0 2020-04-09 17:27:37 5 0 0
109 5c12098d-d5b4-4d72-aef7-8b881e56df43 1578168007689 0 2020-04-09 17:27:37 5 0 0
110 e53d7f10-cc3f-4c59-8f99-2d4b4e0855f9 1578227715218 0 2020-04-09 17:27:37 5 0 0
111 4a29853e-cfb9-418b-9cf3-65e5d9302cc9 1578246872381 0 2020-04-09 17:27:37 5 0 0
112 1b3ae40d-8112-4e5e-9a05-b58b19d242ea 1578248410194 0 2020-04-09 17:27:37 5 0 0
113 d14e791d-d96d-46ed-a261-0c93189019fe 1578253148563 0 2020-04-09 17:27:37 5 0 0
114 4343efa3-30f8-4e3d-8eee-b5f8e516c662 1578254461549 0 2020-04-09 17:27:37 5 0 0
115 41668c6c-cc09-4b21-b7c2-00cd6bc06abc 1578395717132 0 2020-04-09 17:27:37 5 0 0
116 cc2d21a4-6256-4e98-b7de-94d479a0ad67 1579770952398 0 2020-04-09 17:27:37 5 0 0
117 01e79b50-3f62-46a0-8b8c-32862dc78ba9 1581390532439 0 2020-04-09 17:27:37 5 0 0
118 4be46a91-10ff-4c7d-af62-a40ede2c6e20 1581519515820 0 2020-04-09 17:27:37 5 0 0
119 cbdf34f1-8ab5-4135-ba0b-907c4be85964 1581549978663 0 2020-04-09 17:27:37 5 0 0
120 57d9d04f-191e-4b1a-89a8-3333c277f93e 1581596348450 0 2020-04-09 17:27:37 5 0 0
121 89b5f25a-7811-4fff-abd4-3f587bcd10ba 1581597551276 0 2020-04-09 17:27:37 5 0 0
122 7f75a1a9-3260-41cb-a519-1a12bb09f7fa 1581601838401 0 2020-04-09 17:27:37 5 0 0
123 a22dc84b-81d2-405d-8960-506da63aa4f8 1581603791197 0 2020-04-09 17:27:37 5 0 0
124 59b8b4c4-27b3-46f6-9a50-386adcb15bc9 1581781021841 0 2020-04-09 17:27:37 5 0 0
125 cd464f8c-d2a0-40db-9314-b594650d7b75 1581861008465 0 2020-04-09 17:27:37 5 0 0
126 0e4e335c-dcdf-4652-80fd-ce8b6c6d88bf 1581878147376 0 2020-04-09 17:27:37 5 0 0
127 a86bd4b6-deb5-4938-8e58-dcb5f77a1a2f 1581896184052 0 2020-04-09 17:27:37 5 0 0
128 230cc2df-fc92-47a7-a2bb-f257aa33a3c0 1581942075702 0 2020-04-09 17:27:37 5 0 0
129 10c8d683-932a-49c9-bff8-57cbfbd83b4c 1581957666672 0 2020-04-09 17:27:37 5 0 0
130 2d7101d7-ae07-4d4d-b29e-83647addd391 1581958676459 0 2020-04-09 17:27:37 5 0 0
131 8cb105df-ffb6-4dae-a02f-90178b5d9e4b 1581984049531 0 2020-04-09 17:27:37 5 0 0
132 468380ca-5c3d-418a-83af-e0ac82ce8853 1582023234165 0 2020-04-09 17:27:37 5 0 0
133 38a3251b-c803-45cb-81ac-37283cac9a32 1582027710125 0 2020-04-09 17:27:37 5 0 0
134 6fd0ceb9-3df2-400b-91e4-16c01642b54d 1582051392823 0 2020-04-09 17:27:37 5 0 0
135 1a398e9e-c513-4988-bc98-49a1a59edb75 1582062113009 0 2020-04-09 17:27:37 5 0 0
136 83dfdff6-435b-4443-8839-25df177ad534 1582063394328 0 2020-04-09 17:27:37 5 0 0
137 6549b6b2-2ccc-4272-b294-5bbd63491631 1582107947828 0 2020-04-09 17:27:37 5 0 0
138 2b34c283-3017-48af-bda8-bdf1588e5145 1582130108663 0 2020-04-09 17:27:37 5 0 0
139 fcec1b3e-4d72-4dc0-ac12-6f4e782b25f9 1582138883656 0 2020-04-09 17:27:37 5 0 0
140 831ad972-bd08-4b6d-abf8-4c4b8c835b64 1582153316114 0 2020-04-09 17:27:37 5 0 0
141 c4fdb68d-5b1f-484a-8221-0991f52c9a86 1582194817794 0 2020-04-09 17:27:37 5 0 0
142 beb4b009-d6a1-4188-93f6-6edf83f0b862 1582195200135 0 2020-04-09 17:27:37 5 0 0
143 d2fc88ae-f906-4b1d-95c8-fd0cce7224c7 1582196062056 0 2020-04-09 17:27:37 5 0 0
144 009f295f-7bf8-48d9-b607-374f057f951a 1582226390041 0 2020-04-09 17:27:37 5 0 0
145 2b07413c-e449-423b-9973-e030d8bc1103 1582226900127 0 2020-04-09 17:27:37 5 0 0
146 823cf61a-cffc-4efd-a27d-abf53e819b0c 1582233806767 0 2020-04-09 17:27:37 5 0 0
147 2c05ee23-255f-4352-959c-247ad0f868d8 1582291441711 0 2020-04-09 17:27:37 5 0 0
148 bece8c8d-65f4-4f15-ac71-f3f1aa95b571 1582296563420 0 2020-04-09 17:27:37 5 0 0
149 c211d68e-a48e-4dfb-924a-a326631c3931 1582311026147 0 2020-04-09 17:27:37 5 0 0
150 ec3343a6-e5a5-40e8-9fd6-d1d67059f028 1582330762497 0 2020-04-09 17:27:37 5 0 0
151 84a4d467-82f2-4a0e-9756-9f286e7db233 1582375033444 0 2020-04-09 17:27:37 5 0 0
152 8726d8bf-388e-4d4f-8195-fb3d56092e43 1582387766854 0 2020-04-09 17:27:37 5 0 0
153 58a39f11-3e82-4e6f-8064-09ed4997c658 1582390473317 0 2020-04-09 17:27:37 5 0 0
154 1f10ea56-8c0a-4f11-8979-60f76659bfe3 1582392619586 0 2020-04-09 17:27:37 5 0 0
155 0ba968ed-c0c5-47c0-ae7b-6526cc6de4a3 1582393433046 0 2020-04-09 17:27:37 5 0 0
156 3dda305c-2fba-4a60-9c8e-a998eb368355 1582399198100 0 2020-04-09 17:27:37 5 0 0
157 7eb58f1f-825e-4ca5-9f98-365ee1c36050 1582464931527 0 2020-04-09 17:27:37 5 0 0
158 3f249e81-f774-476a-9747-c6135064c27c 1582491086196 0 2020-04-09 17:27:37 5 0 0
159 f1dbbfaa-720c-4e6c-9773-23a580293b4a 1582547912034 0 2020-04-09 17:27:37 5 0 0
160 71f8579a-20cd-43ab-8c7f-a72e42b867c5 1582568768503 0 2020-04-09 17:27:37 5 0 0
161 cc540d4e-c8b8-4977-aa2c-7e799ccef0db 1582587514909 0 2020-04-09 17:27:37 5 0 0
162 5b58be2c-911c-4fac-9552-f385bd1db294 1582648026004 0 2020-04-09 17:27:37 5 0 0
163 e1400442-f434-4f0e-8dd3-24c677f6fb41 1582650387161 0 2020-04-09 17:27:37 5 0 0
164 0282e88e-5127-43cd-8ad3-b69c190153b6 1582652449982 0 2020-04-09 17:27:37 5 0 0
165 a6175b4e-cb72-445c-9b92-198c38cdb365 1582664369720 0 2020-04-09 17:27:37 5 0 0
166 83c58373-279d-42f2-840e-7b8164d06aee 1582670675636 0 2020-04-09 17:27:37 5 0 0
167 d5341867-7656-49d1-a34d-8df69aa950fe 1582815356529 0 2020-04-09 17:27:37 5 0 0
168 1dbdc840-f5e5-4bee-843e-da509c285aa1 1582841402446 0 2020-04-09 17:27:37 5 0 0
169 c01c84f5-0516-432a-a269-13220139d686 1582990834844 0 2020-04-09 17:27:37 5 0 0
170 d464ec55-8ffb-4ffd-87e9-c48ca469c44d 1583001904301 0 2020-04-09 17:27:37 5 0 0
171 e901bb01-37ca-4b16-ad85-ac8a9f7674ca 1583080582911 0 2020-04-09 17:27:37 5 0 0
172 ac661c3b-1d77-4e30-bd88-5f79dec2b8bd 1583142880954 0 2020-04-09 17:27:37 5 0 0
173 99f3a6cf-b582-47bf-94ec-6ea5ee0359ec 1583143200732 0 2020-04-09 17:27:37 5 0 0
174 94d129c1-7068-40a7-b7ae-57f4b7b6c69f 1583159163213 0 2020-04-09 17:27:37 5 0 0
175 5e3a37ab-9887-4aa6-8c43-fc6d910b2aca 1583160228550 0 2020-04-09 17:27:37 5 0 0
176 4df36648-2a8d-47b4-be45-4b2c7e332fa3 1583160306958 0 2020-04-09 17:27:37 5 0 0
177 180622ec-d440-434c-ba5d-554a076593a2 1583160695265 0 2020-04-09 17:27:37 5 0 0
178 718b1a83-1846-4132-aa75-efdf94e89c72 1583161372006 0 2020-04-09 17:27:37 5 0 0
179 8fd644fe-0dd9-4ede-8548-e68634e32383 1583172765342 0 2020-04-09 17:27:37 5 0 0
180 b8d18848-62b3-4018-b376-0097e1e3b624 1583183356082 0 2020-04-09 17:27:37 5 0 0
181 b1e9c38d-504e-48ec-bc6e-06effbeba310 1583186419728 0 2020-04-09 17:27:37 5 0 0
182 dc26769b-4764-4d94-b9c0-c164610ef373 1583226286797 0 2020-04-09 17:27:37 5 0 0
183 7b0a63d9-2571-4d0d-b334-c80d293caefb 1583247895934 0 2020-04-09 17:27:37 5 0 0
184 0d9d4803-a4fb-4ad5-96e4-96f3419c6cfc 1583251259038 0 2020-04-09 17:27:37 5 0 0
185 98da9332-13ff-49f2-9054-af1c359a0f38 1583251638590 0 2020-04-09 17:27:37 5 0 0
186 9be351b3-9212-4466-9212-84d889e9d19a 1583263737418 0 2020-04-09 17:27:37 5 0 0
187 65b34f25-52f2-4c5b-822d-29655b1427f6 1583268285208 0 2020-04-09 17:27:37 5 0 0
188 45109ed0-473d-4dec-9f26-c1a29fbe6161 1583270831300 0 2020-04-09 17:27:37 5 0 0
189 6fb8e4bb-4a48-4c1d-bca1-6871c15ae829 1583311961019 0 2020-04-09 17:27:37 5 0 0
190 1fc44bca-db11-4d00-a595-d8cf5f0a11dc 1583332004090 0 2020-04-09 17:27:37 5 0 0
191 87fc4782-6bb5-426d-852a-265d13be1025 1583349490158 0 2020-04-09 17:27:37 5 0 0
192 36384a34-6f24-45f0-bb9e-40bf3732f451 1583587913765 0 2020-04-09 17:27:37 5 0 0
193 a584e3df-81b4-4d22-8b44-3fe68730fe8f 1583590529228 0 2020-04-09 17:27:37 5 0 0
194 6d35c44b-3281-4dac-926e-3bbc88a54320 1583591489687 0 2020-04-09 17:27:37 5 0 0
195 699cf937-7f66-4a79-9002-54b355fd5b7e 1583595744779 0 2020-04-09 17:27:37 5 0 0
196 ae0585c5-f191-425a-9231-32de43f15e0e 1583595850732 0 2020-04-09 17:27:37 5 0 0
197 535aded5-8136-40ee-9309-a8bb63db20b0 1583614332843 0 2020-04-09 17:27:37 5 0 0
198 caba66a3-8400-41db-803f-b29df6b56c38 1583667551584 0 2020-04-09 17:27:37 5 0 0
199 bbcb1b2d-d15c-4bba-bc3c-4f59580e572a 1583674836966 0 2020-04-09 17:27:37 5 0 0
200 1aa723ec-ad43-4329-8ffd-0b975c24f1be 1583679823286 0 2020-04-09 17:27:37 5 0 0
201 99eb6d22-4447-4428-bd86-69df5015533d 1583680240161 0 2020-04-09 17:27:37 5 0 0
202 c8fceaa0-f1a4-4808-b921-7b6620cec939 1583685754617 0 2020-04-09 17:27:37 5 0 0
203 d2fffd85-a006-4e65-bbbb-cf0bf72d09f0 1583693216866 0 2020-04-09 17:27:37 5 0 0
204 43f1ec1a-077c-4a29-a921-78d4ae134e9b 1583700140002 0 2020-04-09 17:27:37 5 0 0
205 f17cbc91-df8f-4160-83f5-fea851f8464b 1583755699256 0 2020-04-09 17:27:37 5 0 0
206 676bfa45-1157-48fa-ae06-db6ea55850cd 1583758800572 0 2020-04-09 17:27:37 5 0 0
207 6f896d6b-e60b-42f6-971d-c5f904d782fa 1583762870257 0 2020-04-09 17:27:37 5 0 0
208 4b62235e-0c43-403a-acfa-284bb0730d92 1583775336546 0 2020-04-09 17:27:37 5 0 0
209 5ae815c7-fd8a-46a5-ae10-1a9edf5cd6cb 1583788723637 0 2020-04-09 17:27:37 5 0 0
210 175df197-c222-4075-b5b1-f1ffa10a4683 1583792065582 0 2020-04-09 17:27:37 5 0 0
211 73aaef6e-9e28-4041-90e7-b32f82adf64e 1583802516411 0 2020-04-09 17:27:37 5 0 0
212 fb99f476-b6fe-48a8-b161-2538158ab01a 1583837948384 0 2020-04-09 17:27:37 5 0 0
213 3f89d5fb-9d96-4ee0-a9cb-06ac14c09509 1583838417493 0 2020-04-09 17:27:37 5 0 0
214 e09bc3ae-8f25-4d0b-82ff-0f8b76580916 1583852501375 0 2020-04-09 17:27:37 5 0 0
215 b6d1b398-a3a8-4896-9e52-cdcf0823b037 1583858232460 0 2020-04-09 17:27:37 5 0 0
216 58b5141e-c97f-4aee-85a3-bd54f5b7288e 1583863517432 0 2020-04-09 17:27:37 5 0 0
217 550387b5-507e-4818-a962-c38b5413e8c0 1583868577224 0 2020-04-09 17:27:37 5 0 0
218 58dc22bd-574d-470b-a75c-88b15a57cdd5 1583876790752 0 2020-04-09 17:27:37 5 0 0
219 b8d9af0a-d0e6-440a-b09a-4f7083b57c70 1583921143466 0 2020-04-09 17:27:37 5 0 0
220 35c10a41-4e1f-4b6a-a5ec-b1945bfce262 1583924243856 0 2020-04-09 17:27:37 5 0 0
221 2a0f2429-b0a1-4be8-b66a-869923ab35ed 1583930295622 0 2020-04-09 17:27:37 5 0 0
222 83f7d7f3-93a3-4d75-bf0d-fb5215164d94 1583942274269 0 2020-04-09 17:27:37 5 0 0
223 9bd8afe0-a399-4e51-b3c0-f3df07234a14 1583956760515 0 2020-04-09 17:27:37 5 0 0
224 2207f30d-fdac-4c3b-8164-abc2a3dd8508 1584013349557 0 2020-04-09 17:27:37 5 0 0
225 1f1eaf09-98e0-4c3e-ba91-1f3c0881ede2 1584062028841 0 2020-04-09 17:27:37 5 0 0
226 44266797-585e-455e-bfe0-b58f5d6f4b1b 1584106231314 0 2020-04-09 17:27:37 5 0 0
227 f34db24f-ed55-4cc4-b22a-02352ca8c004 1584110068199 0 2020-04-09 17:27:37 5 0 0
228 ae100d72-85a0-4438-b407-7d47ab055134 1584126993751 0 2020-04-09 17:27:37 5 0 0
229 90fdfdf7-32b6-4b68-86c6-aab6b57f366f 1584136283851 0 2020-04-09 17:27:37 5 0 0
230 92f768d7-afd6-4132-b82f-1a70cba952f5 1584152746993 0 2020-04-09 17:27:37 5 0 0
231 56a4f728-0b08-4f77-b62c-ce44c0f5fc53 1584171033582 0 2020-04-09 17:27:37 5 0 0
232 2d157b2a-c983-4d10-b5d4-d67c52a19b69 1584179808101 0 2020-04-09 17:27:37 5 0 0
233 2890aa46-28f3-4b55-85d1-2ede281413a1 1584206136834 0 2020-04-09 17:27:37 5 0 0
234 f3167f5b-0fd8-4593-a798-36742f75f6b5 1584225446271 0 2020-04-09 17:27:37 5 0 0
235 3444f6b0-2479-470c-9f4e-ddd628b63db4 1584233410734 0 2020-04-09 17:27:37 5 0 0
236 6cc14569-a13d-4f72-ab5e-f4552a7ff6ef 1584233555804 0 2020-04-09 17:27:37 5 0 0
237 51762c3b-ff25-4d86-8f00-64cbf06ea942 1584263816308 0 2020-04-09 17:27:37 5 0 0
238 f576d15b-38a1-4b84-91b8-4357d918caed 1584299288304 0 2020-04-09 17:27:37 5 0 0
239 9d4641e8-1609-4e82-8ea0-e3646161aa4e 1584310411671 0 2020-04-09 17:27:37 5 0 0
240 2832c035-461b-46c6-8e31-64e1233bf68b 1584318028312 0 2020-04-09 17:27:37 5 0 0
241 4da13526-556d-48a9-90ce-c2dff0ec9c99 1584328010598 0 2020-04-09 17:27:37 5 0 0
242 41ee1144-a1fa-4168-aaae-97198cadbb64 1584492643275 0 2020-04-09 17:27:37 5 0 0
243 a74231f2-e334-4077-80a3-8788f6469121 1584501460982 0 2020-04-09 17:27:37 5 0 0
244 9733704a-8145-4d3a-b63b-826f29848e13 1584521753537 0 2020-04-09 17:27:37 5 0 0
245 003230f6-d83e-4c98-b2bf-b17535be38e3 1584524244329 0 2020-04-09 17:27:37 5 0 0
246 42f8f68b-5d58-484a-a57c-3c9b922442b4 1584528900083 0 2020-04-09 17:27:37 5 0 0
247 3b2e13fa-f20a-494f-841d-4654ddb6e821 1584532738475 0 2020-04-09 17:27:37 5 0 0
248 e6f0538d-502b-414b-a385-2bd713e1e62d 1584536840452 0 2020-04-09 17:27:37 5 0 0
249 7e55ca75-6671-4311-9be1-5c18928f175a 1584537023268 0 2020-04-09 17:27:37 5 0 0
250 5d21d8b3-0a56-464b-9e90-69933f739a02 1584556276285 0 2020-04-09 17:27:37 5 0 0
251 ca61eafa-cd2f-4437-8680-bd60f3515bb3 1584558443780 0 2020-04-09 17:27:37 5 0 0
252 3b562ebd-c718-4abe-a509-08198cb3f2a8 1584563231194 0 2020-04-09 17:27:37 5 0 0
253 ba38aed1-e8a6-486b-a29b-653431eb7459 1584608453274 0 2020-04-09 17:27:37 5 0 0
254 ce794912-760e-47d3-bd83-8bfb06932c2d 1584612759150 0 2020-04-09 17:27:37 5 0 0
255 b27aa0fe-4399-4f24-ae56-03e7672bbd96 1584624097128 0 2020-04-09 17:27:37 5 0 0
256 7384dac7-61bc-41d2-a458-30a4770adc69 1584635316060 0 2020-04-09 17:27:37 5 0 0
257 91d4cd74-b52d-45f8-b911-cfdce14e1e7f 1584639897191 0 2020-04-09 17:27:37 5 0 0
258 a8220e6c-b908-4234-a66f-2e750143e8b6 1584640843070 0 2020-04-09 17:27:37 5 0 0
259 5b01b426-a6df-4f56-82b8-4be5af5856fc 1584645879448 0 2020-04-09 17:27:37 5 0 0
260 4e8aa8d2-d40a-4a46-8ce6-83d15d63d526 1584702612348 0 2020-04-09 17:27:37 5 0 0
261 7301efb9-09d8-4a7a-b007-9fcfc1ca2080 1584740084804 0 2020-04-09 17:27:37 5 0 0
262 be5365c3-f113-4069-b141-17612c58e538 1584795181001 0 2020-04-09 17:27:37 5 0 0
263 b654bdb5-9259-4005-99af-ebf9cb4de9d6 1584795467261 0 2020-04-09 17:27:37 5 0 0
264 8ac11fee-937d-4a41-a1a6-39a77ef5e8d7 1584808124327 0 2020-04-09 17:27:37 5 0 0
265 8408ad59-23d1-458a-858f-c0a4121b15ed 1584816212127 0 2020-04-09 17:27:37 5 0 0
266 d8e35c97-d4f7-4ec0-94fb-d912c2085ed0 1584822316309 0 2020-04-09 17:27:37 5 0 0
267 0b87ec30-4cc9-469c-ad52-00c30c8e1a3a 1584872148042 0 2020-04-09 17:27:37 5 0 0
268 bb056969-e66d-43bc-8cfe-0ca7cf73e424 1584884660250 0 2020-04-09 17:27:37 5 0 0
269 82ad5dd8-0e3d-42ae-8b09-06f48c2f5f7b 1584886531320 0 2020-04-09 17:27:37 5 0 0
270 0dd9a13d-d8e9-49b1-9dc9-76ac6da14870 1584896547056 0 2020-04-09 17:27:37 5 0 0
271 76892328-0f0c-4b51-879f-4ae3b42994af 1584898876764 0 2020-04-09 17:27:37 5 0 0
272 3c61f01a-0f08-4d83-af18-1444c28bed3a 1584909497670 0 2020-04-09 17:27:37 5 0 0
273 e8dbd49d-0756-41aa-ac15-816711d11527 1584918347573 0 2020-04-09 17:27:37 5 0 0
274 3e495660-e179-4f91-9400-69ef57cbe5c0 1584951294406 0 2020-04-09 17:27:37 5 0 0
275 ce2156c2-9936-4fc2-90d0-7f11453ee0f9 1584964512645 0 2020-04-09 17:27:37 5 0 0
276 30936326-64fe-4ff3-a660-5993b64549d7 1584967858937 0 2020-04-09 17:27:37 5 0 0
277 a3a2d78e-6889-4492-9a58-c006c3f2c1e6 1584970556126 0 2020-04-09 17:27:37 5 0 0
278 71149af2-3e62-49d3-8709-17aa0bad61cc 1584970897771 0 2020-04-09 17:27:37 5 0 0
279 a1df967c-f707-4360-a754-592c8fa52b15 1584971888059 0 2020-04-09 17:27:37 5 0 0
280 05bea4e7-4536-44bd-ac9e-bf65b18b4696 1584972919248 0 2020-04-09 17:27:37 5 0 0
281 7c6374d8-f547-4e6e-9991-9f646d6c368d 1584974208228 0 2020-04-09 17:27:37 5 0 0
282 a04fc901-a0cb-4f9e-a7fc-8b2686402b1a 1584974347976 0 2020-04-09 17:27:37 5 0 0
283 49bef579-f2fa-4dc8-8604-034fda13d30c 1584977367480 0 2020-04-09 17:27:37 5 0 0
284 2514ce99-c9db-4679-a3ca-23876e6a5fc3 1584980780571 0 2020-04-09 17:27:37 5 0 0
285 7b7aaccb-b560-4775-a4f9-9accbce2ecd3 1584987497504 0 2020-04-09 17:27:37 5 0 0
286 b1614200-4d86-438e-93dc-4214f3344e85 1584988073137 0 2020-04-09 17:27:37 5 0 0
287 ff7a34e1-c312-4f9f-b03f-2261fc747e8d 1584990182513 0 2020-04-09 17:27:37 5 0 0
288 12877ddd-3479-4368-87c2-7e385678ef0c 1584991806849 0 2020-04-09 17:27:37 5 0 0
289 025ee7f7-a191-46c2-89b7-ebba77d94b29 1584995012552 0 2020-04-09 17:27:37 5 0 0
290 9484619d-d442-4598-a928-5df086344404 1584999685062 0 2020-04-09 17:27:37 5 0 0
291 bb3a50c4-4bde-48b9-a0aa-5e61e69f2b39 1585000590422 0 2020-04-09 17:27:37 5 0 0
292 e826df1e-db02-4e62-a885-a2b8c06f3741 1585048696136 0 2020-04-09 17:27:37 5 0 0
293 633156f2-240e-49ea-84a4-27ee2f903927 1585051967470 0 2020-04-09 17:27:37 5 0 0
294 adfdfa06-d3d0-4bb3-bb4a-c9af47a40e34 1585057266828 0 2020-04-09 17:27:37 5 0 0
295 62f632fa-fac6-4a51-a0a1-3089a98d3a1e 1585057823026 0 2020-04-09 17:27:37 5 0 0
296 5587d633-b9bf-4843-8740-20b912c9e9f7 1585072254158 0 2020-04-09 17:27:37 5 0 0
297 bb73efb6-e6c8-46ac-aa9f-f4b42c71eae5 1585129488741 0 2020-04-09 17:27:37 5 0 0
298 d8104dac-f357-4874-b0fc-b2d560ec93fd 1585136127734 0 2020-04-09 17:27:37 5 0 0
299 f443fd02-57d0-4fee-b2c1-2b97e2a70392 1585136727600 0 2020-04-09 17:27:37 5 0 0
300 853a2f10-c421-4918-928f-3fc2179f42c0 1585143211102 0 2020-04-09 17:27:37 5 0 0
301 582c1971-d6af-4545-88ca-019a927016c8 1585149117463 0 2020-04-09 17:27:37 5 0 0
302 ed51ee0a-0034-460e-8fed-a6eb7677c279 1585150875300 0 2020-04-09 17:27:37 5 0 0
303 90d46a01-dab8-4ff9-8bab-3c8fef9cc2f8 1585153667693 0 2020-04-09 17:27:37 5 0 0
304 db3a634d-c821-4bd3-bf94-7c1885070c1a 1585155635457 0 2020-04-09 17:27:37 5 0 0
305 62c90fb6-60f7-4f27-a698-1ae77b983294 1585155641104 0 2020-04-09 17:27:37 5 0 0
306 99a7620c-c64c-496f-bd21-08f79d881d7c 1585158017175 0 2020-04-09 17:27:37 5 0 0
307 4b5b52a6-b4e9-4858-a7af-8da4e75fd380 1585169475036 0 2020-04-09 17:27:37 5 0 0
308 5d29b1f6-8455-4335-8638-9054a5919ca2 1585177116158 0 2020-04-09 17:27:37 5 0 0
309 ab3a1eff-5f35-4bc3-bd54-0907073f2598 1585213755386 0 2020-04-09 17:27:37 5 0 0
310 b910bdf7-9f58-444d-aa82-337dc4d1a606 1585215049331 0 2020-04-09 17:27:37 5 0 0
311 5d5bb9bd-265a-45f4-a99b-d8e9c3787bb3 1585219084293 0 2020-04-09 17:27:37 5 0 0
312 0161c886-fc1b-4081-8935-9668d824c622 1585219576010 0 2020-04-09 17:27:37 5 0 0
313 41c79796-d555-4b66-a583-a153d2305b39 1585223896460 0 2020-04-09 17:27:37 5 0 0
314 52e8da41-84ac-4109-872b-9bd8a831c6b4 1585227683685 0 2020-04-09 17:27:37 5 0 0
315 16fc3e4c-61d9-4979-be8b-aa79287bcc96 1585227777536 0 2020-04-09 17:27:37 5 0 0
316 0e5480f3-e2cd-4eea-bf82-951bcfdae196 1585231464979 0 2020-04-09 17:27:37 5 0 0
317 73811062-1cc9-4fbb-8944-3303309c8c37 1585231653190 0 2020-04-09 17:27:37 5 0 0
318 8256d4c0-4af1-421c-8dda-367549d5c242 1585234641716 0 2020-04-09 17:27:37 5 0 0
319 343eac76-964e-4d9e-921c-81224f1d447b 1585237227144 0 2020-04-09 17:27:37 5 0 0
320 86982460-f59d-4fbd-af94-f1fbbc215d5a 1585250402823 0 2020-04-09 17:27:37 5 0 0
321 9811597f-03e3-4c00-96b7-183929f7e660 1585256176534 0 2020-04-09 17:27:37 5 0 0
322 d56a57b8-b26e-4816-8238-f8dadd6f2117 1585307276235 0 2020-04-09 17:27:37 5 0 0
323 5028cf70-0b1e-41a8-aa99-2935f4d3b2f6 1585307657547 0 2020-04-09 17:27:37 5 0 0
324 40ae2dec-4481-46af-9d7c-75744d1a4136 1585310657648 0 2020-04-09 17:27:37 5 0 0
325 cd035caa-69db-436c-9aeb-22cf32c9bd5c 1585311633320 0 2020-04-09 17:27:37 5 0 0
326 f21a3d73-f0a2-42b5-b954-f1faa1d7c691 1585321281164 0 2020-04-09 17:27:37 5 0 0
327 2afee096-9ee6-4dd9-8ca9-abccfc37bb71 1585388975837 0 2020-04-09 17:27:37 5 0 0
328 576c02f6-6df4-4d5d-a74f-6c2787cb49ac 1585401709382 0 2020-04-09 17:27:37 5 0 0
329 af29f242-88d4-404f-937a-ac21167b21a6 1585418050715 0 2020-04-09 17:27:37 5 0 0
330 12cf0614-b606-4a4f-9cc9-fa0a1e85aa0c 1585422857540 0 2020-04-09 17:27:37 5 0 0
331 cd0a9219-5cfc-427b-b13d-3f285e37dc6f 1585424670902 0 2020-04-09 17:27:37 5 0 0
332 0b7d1a12-0efb-4cc1-a0e0-48de0e9a3b25 1585436920327 0 2020-04-09 17:27:37 5 0 0
333 e1ab89d4-f98b-4b1b-b302-698d923c32af 1585438327028 0 2020-04-09 17:27:37 5 0 0
334 b3735a53-e8cd-4b56-8465-f78df03287d0 1585445773796 0 2020-04-09 17:27:37 5 0 0
335 a301f309-9ac6-4926-93ac-9f197440ea17 1585482778210 0 2020-04-09 17:27:37 5 0 0
336 94e99d2d-b42b-41ff-aacc-e798c64887f1 1585489642569 0 2020-04-09 17:27:37 5 0 0
337 afcb2294-75fa-408d-b962-d234245406c9 1585491887693 0 2020-04-09 17:27:37 5 0 0
338 63e2545b-7887-4487-a415-ef74a4bfd625 1585496721341 0 2020-04-09 17:27:37 5 0 0
339 4aec6c6f-6f47-4290-8d11-2ed85883e41d 1585500059799 0 2020-04-09 17:27:37 5 0 0
340 dd465c7d-51e5-4196-aba6-017cdfd2e5b2 1585500061855 0 2020-04-09 17:27:37 5 0 0
341 3ed5e9ab-af08-4b60-9560-15926785b4e7 1585501980548 0 2020-04-09 17:27:37 5 0 0
342 2012646d-e52d-4af2-94ad-973d0d50bd25 1585503827982 0 2020-04-09 17:27:37 5 0 0
343 9ae0ca1a-b6fa-4c18-bf07-c5afcb7097f8 1585506396741 0 2020-04-09 17:27:37 5 0 0
344 a3f70496-15a6-437b-b4fa-58c32be5abc3 1585507376889 0 2020-04-09 17:27:37 5 0 0
345 29d59762-cfb5-438c-97f4-b7526082b9f6 1585517188028 0 2020-04-09 17:27:37 5 0 0
346 4225639c-9bc5-477e-9c4f-6925ba588c81 1585518462567 0 2020-04-09 17:27:37 5 0 0
347 8a894ebc-1c4b-4144-8b82-d0b531911ccb 1585519589761 0 2020-04-09 17:27:37 5 0 0
348 3dbf7b98-17a0-4fb5-9701-74e739ff92d9 1585523305166 0 2020-04-09 17:27:37 5 0 0
349 367e75db-541b-48ab-b0fd-6903bba6dd47 1585531272187 0 2020-04-09 17:27:37 5 0 0
350 a0de6f57-767c-429c-ab52-99c215e62fd5 1585554409104 0 2020-04-09 17:27:37 5 0 0
351 fc953e10-7fa6-4d1d-8032-b5eb282dec14 1585555718412 0 2020-04-09 17:27:37 5 0 0
352 c5233f4c-a5b8-44c4-9c03-e702bc9b0508 1585556545929 0 2020-04-09 17:27:37 5 0 0
353 c2cf32f5-6a7b-43b0-85f2-3d924a341a62 1585557389780 0 2020-04-09 17:27:37 5 0 0
354 d004db4b-5ed6-4d00-b938-987412b9c619 1585559252518 0 2020-04-09 17:27:37 5 0 0
355 d7ce3860-3766-4309-86f6-5ccab20fafb9 1585559805077 0 2020-04-09 17:27:37 5 0 0
356 08cb2036-8f0d-40c1-a922-bb9f892106f8 1585562006110 0 2020-04-09 17:27:37 5 0 0
357 db47b586-c5ca-4842-a04f-3cf62c51de5c 1585566176504 0 2020-04-09 17:27:37 5 0 0
358 d0c65fd2-f9c0-4773-998a-0e40e14d3823 1585566995599 0 2020-04-09 17:27:37 5 0 0
359 d3347775-b176-4ef8-9396-a9f84287d3e6 1585571720030 0 2020-04-09 17:27:37 5 0 0
360 50825a1a-b77f-4463-9e05-7252ab728962 1585573841968 0 2020-04-09 17:27:37 5 0 0
361 e8067d2a-896c-4f7f-836e-c69bbc16283b 1585578710500 0 2020-04-09 17:27:37 5 0 0
362 b7e1a835-e681-4fe0-a74a-bddbb24887c0 1585584802502 0 2020-04-09 17:27:37 5 0 0
363 72700a52-f94b-42a8-b29a-f014752f69cc 1585585998646 0 2020-04-09 17:27:37 5 0 0
364 aaabc40b-f334-4c9c-8fff-ccc93e2c1559 1585589408386 0 2020-04-09 17:27:37 5 0 0
365 7757854d-0bfc-430c-af4c-fead0695a9af 1585591395074 0 2020-04-09 17:27:37 5 0 0
366 17d36cac-6fa4-4cbe-adbb-79d09a6e8205 1585591401052 0 2020-04-09 17:27:37 5 0 0
367 b93e6639-bfe6-4c34-a74d-875f167b1d77 1585595412917 0 2020-04-09 17:27:37 5 0 0
368 530b6455-cbc3-40e6-a4e0-33c1019d0f02 1585598610827 0 2020-04-09 17:27:37 5 0 0
369 6bee265c-1472-426a-a747-96d79772c6c0 1585666806593 0 2020-04-09 17:27:37 5 0 0
370 46baad89-f684-45ce-8a6a-f8a14105df0d 1585668264250 0 2020-04-09 17:27:37 5 0 0
371 67ac1ec6-ce6b-4da6-aed5-7d43719293ac 1585670351545 0 2020-04-09 17:27:37 5 0 0
372 eca2dd6b-ed4a-48d5-9b42-38a368b34ee4 1585688996412 0 2020-04-09 17:27:37 5 0 0
373 b809b3fc-8582-4fef-b750-a90a91573b0a 1585701259430 0 2020-04-09 17:27:37 5 0 0
374 8133c076-340c-4269-a7af-f809e7718517 1585728869632 0 2020-04-09 17:27:37 5 0 0
375 a94ed0d9-42a4-4b8e-b898-5a1f8493d8d3 1585730980019 0 2020-04-09 17:27:37 5 0 0
376 377ffe43-f9d0-48a9-9488-b9a11b627afb 1585735533377 0 2020-04-09 17:27:37 5 0 0
377 ac2b86e9-c21f-475d-b4ce-9c024ebc85eb 1585736476320 0 2020-04-09 17:27:37 5 0 0
378 ed6050ce-620b-408d-8da2-7e96be617313 1585736904119 0 2020-04-09 17:27:37 5 0 0
379 13c2543e-ef5e-4a63-a803-e79405d92f17 1585737647436 0 2020-04-09 17:27:37 5 0 0
380 21e02127-6603-42fb-b43a-77cda5098eed 1585740296499 0 2020-04-09 17:27:37 5 0 0
381 18d66cc4-d1db-47d4-8f13-d48c006722e9 1585740541583 0 2020-04-09 17:27:37 5 0 0
382 58fb41be-4c7b-45e6-94e1-2539789323c0 1585741850375 0 2020-04-09 17:27:37 5 0 0
383 9db89253-c76a-4335-81b7-16a7c05c3e20 1585742413020 0 2020-04-09 17:27:37 5 0 0
384 f4cd90f0-472b-4b99-8966-8b12eafa495c 1585744182991 0 2020-04-09 17:27:37 5 0 0
385 f7d33dd3-1e78-44e6-9b4a-0e53a867b310 1585745021146 0 2020-04-09 17:27:37 5 0 0
386 42d02bb6-5e96-45c7-8036-886c39a8ac1c 1585745201057 0 2020-04-09 17:27:37 5 0 0
387 abdf3363-09f7-4b92-9fb5-ab946ff43839 1585748050386 0 2020-04-09 17:27:37 5 0 0
388 d9f02aea-bc03-4f96-b289-5d38be9fad42 1585749101602 0 2020-04-09 17:27:37 5 0 0
389 cdf80ac8-c85b-43be-8c0a-01b3558426ba 1585755422160 0 2020-04-09 17:27:37 5 0 0
390 9e4f61a2-98cb-4a42-9a02-47c8c2139db9 1585759101563 0 2020-04-09 17:27:37 5 0 0
391 704ada4b-6e46-4c4a-9bc7-a0cb8f13c18b 1585760066353 0 2020-04-09 17:27:37 5 0 0
392 3d8aa5a1-2aae-45e0-8181-b672004e2ebe 1585767948385 0 2020-04-09 17:27:37 5 0 0
393 40e73947-b624-443a-8ac0-c205ab7a92d6 1585769837970 0 2020-04-09 17:27:37 5 0 0
394 988bc803-fc7e-464b-a1a9-c5d72b4bc82b 1585778716215 0 2020-04-09 17:27:37 5 0 0
395 78f7c7ab-5787-4df0-827b-30154a25713e 1585823123245 0 2020-04-09 17:27:37 5 0 0
396 5c3adacc-6e2d-4270-8e76-f7ae9cc39a1e 1585824106911 0 2020-04-09 17:27:37 5 0 0
397 cb29cf39-0b2d-40db-aa68-75065085f717 1585826299686 0 2020-04-09 17:27:37 5 0 0
398 8e0da5dd-da86-4a7c-a77f-c095535b11a7 1585828123510 0 2020-04-09 17:27:37 5 0 0
399 a32185c4-6136-4bd1-baf3-7d53ad7b69fe 1585829811184 0 2020-04-09 17:27:37 5 0 0
400 41c82b27-e8e1-4792-849a-a9a39e4b85c7 1585830652968 0 2020-04-09 17:27:37 5 0 0
401 0e0050d5-216b-4f03-bfdd-c23eb1c0c3dd 1585833443154 0 2020-04-09 17:27:37 5 0 0
402 d55b99ef-56dc-4282-9570-2ab12dd038ca 1585834176116 0 2020-04-09 17:27:37 5 0 0
403 7ca4528f-160f-4824-af30-0cd3475e0075 1585840388140 0 2020-04-09 17:27:37 5 0 0
404 9bbc9458-c03b-4bf0-a54c-6210cb01e0b7 1585841351257 0 2020-04-09 17:27:37 5 0 0
405 76bb77c9-41e4-4cf6-97d4-467d226896b8 1585856239202 0 2020-04-09 17:27:37 5 0 0
406 06965ace-d8ed-4ca8-bd13-78f8616b3b71 1585862988493 0 2020-04-09 17:27:37 5 0 0
407 220e8a4d-f266-4cb0-8742-6c225e4871cb 1585871928037 0 2020-04-09 17:27:37 5 0 0
408 994a4f31-465b-483a-b4b1-ccf6c153bb21 1585905206088 0 2020-04-09 17:27:37 5 0 0
409 9da88b33-3209-4272-945a-960c90f34ff9 1585912371965 0 2020-04-09 17:27:37 5 0 0
410 4dd8a4be-921d-486a-82b8-ecc05dcceb76 1585912460337 0 2020-04-09 17:27:37 5 0 0
411 3e0446f1-d30e-4633-bf98-3c687cc26438 1585913135436 0 2020-04-09 17:27:37 5 0 0
412 774efa3a-2f1b-430a-863a-4380d1610e93 1585913444621 0 2020-04-09 17:27:37 5 0 0
413 9960abc1-b91f-4bad-88e1-d6708294aa68 1585914143202 0 2020-04-09 17:27:37 5 0 0
414 4d5caf50-31e2-4361-b9fc-ae588c569ed1 1585914752752 0 2020-04-09 17:27:37 5 0 0
415 886ac239-e528-4532-ba45-8ca4d8232d42 1585915196335 0 2020-04-09 17:27:37 5 0 0
416 774bd158-ced3-40e7-ade6-2452857a7ff2 1585916033191 0 2020-04-09 17:27:37 5 0 0
417 c276334a-ccc0-479d-8bda-fdde9d098c2f 1585916508756 0 2020-04-09 17:27:37 5 0 0
418 72e29b1b-ef83-4b9c-bdb1-6617abd5a9f7 1585917397147 0 2020-04-09 17:27:37 5 0 0
419 5f5a3f20-d506-44d3-95a0-7eb533fc84b4 1585917624356 0 2020-04-09 17:27:37 5 0 0
420 410118ab-07ce-464f-baf8-f0c6c8bb7311 1585919794898 0 2020-04-09 17:27:37 5 0 0
421 b61abbfd-6985-4654-b5b1-08bbbeac2a98 1585920724262 0 2020-04-09 17:27:37 5 0 0
422 c87ec377-5829-48c2-9f65-fa56d07add8e 1585923154928 0 2020-04-09 17:27:37 5 0 0
423 964a30a0-abd4-472e-9991-15f59e7cb123 1585927022895 0 2020-04-09 17:27:37 5 0 0
424 ce20f1cd-ab59-4364-9dee-c883ade21bf4 1585948263565 0 2020-04-09 17:27:37 5 0 0
425 9dfebe2a-44ec-407a-af85-5074ced3cd5b 1585948778800 0 2020-04-09 17:27:37 5 0 0
426 aa0c2af3-e7a3-4dda-9902-84ee60cb264c 1585986348126 0 2020-04-09 17:27:37 5 0 0
427 fd2934f1-411e-4149-aaca-9803408a7eb2 1585994315563 0 2020-04-09 17:27:37 5 0 0
428 5915c323-66df-4622-ba59-51bc51307b75 1585997804444 0 2020-04-09 17:27:37 5 0 0
429 7cc697c0-93a4-4bc8-8c20-ced0d56f7b3b 1586000700613 0 2020-04-09 17:27:37 5 0 0
430 96cc3001-e31a-4879-8645-dd312112d468 1586010600961 0 2020-04-09 17:27:37 5 0 0
431 ba3de216-bcc1-424d-9c6b-cf2fd8f90415 1586013473984 0 2020-04-09 17:27:37 5 0 0
432 df47f836-d9ce-4aeb-8bd9-e2335cb99580 1586016882017 0 2020-04-09 17:27:37 5 0 0
433 dee002bd-97d9-4ef4-9b22-71c7c33793a9 1586017104899 0 2020-04-09 17:27:37 5 0 0
434 bf565a83-3b52-4042-aec9-5b47e1ce0f41 1586017584568 0 2020-04-09 17:27:37 5 0 0
435 e11ca99d-a443-49de-87b6-08cc625c52eb 1586018930461 0 2020-04-09 17:27:37 5 0 0
436 18b38ebe-f23c-436b-8379-88f4c994afee 1586020080690 0 2020-04-09 17:27:37 5 0 0
437 e163cfeb-ad7c-485d-aeb3-c4e81e1f376e 1586040441726 0 2020-04-09 17:27:37 5 0 0
438 1d0c5b48-733e-4dce-b68b-92cd6abaf566 1586081990928 0 2020-04-09 17:27:37 5 0 0
439 f6f0df01-b1fd-4f5e-a953-aed3749b8127 1586097122374 0 2020-04-09 17:27:37 5 0 0
440 e1b503b8-c88a-43a4-ac64-2bc3e427b793 1586103127003 0 2020-04-09 17:27:37 5 0 0
441 155e6050-0e5d-46ab-a414-e1d7dcb1b44b 1586105166170 0 2020-04-09 17:27:37 5 0 0
442 8b990462-88db-4ac1-9457-9124583840bd 1586109823256 0 2020-04-09 17:27:37 5 0 0
443 cc3ee244-2fa7-42f2-88b5-d9b3bdcc0af0 1586113332662 0 2020-04-09 17:27:37 5 0 0
444 0cecf027-50a5-413a-afe7-95a8222ab7b0 1586119029414 0 2020-04-09 17:27:37 5 0 0
445 e8208c60-0629-4ff4-9caf-69a303114b35 1586119648767 0 2020-04-09 17:27:37 5 0 0
446 7ea3c319-427e-44a0-90b1-51fcbcdbb5ed 1586123653971 0 2020-04-09 17:27:37 5 0 0
447 80833a8f-283c-4f12-a095-9a6671a8f5d9 1586164913411 0 2020-04-09 17:27:37 5 0 0
448 5592645e-4188-498c-990c-83f64e8adc53 1586169082603 0 2020-04-09 17:27:37 5 0 0
449 c9f95ad8-daa1-40a0-8741-c423771c6126 1586172250252 0 2020-04-09 17:27:37 5 0 0
450 ef7bfb28-f2ad-4a7a-868a-8492cc523e58 1586172793081 0 2020-04-09 17:27:37 5 0 0
451 38a94cd7-fe95-437c-be1f-48953e7d6d75 1586174925437 0 2020-04-09 17:27:37 5 0 0
452 8409ee4c-755d-4416-926c-b4b5038660ad 1586176307990 0 2020-04-09 17:27:37 5 0 0
453 0a24916c-4a3a-41be-ae3b-1a7f0feb99e2 1586178600601 0 2020-04-09 17:27:37 5 0 0
454 898a070f-39dc-4e2b-9827-4e800491e7fc 1586188353993 0 2020-04-09 17:27:37 5 0 0
455 81b6240d-4dd9-4819-9deb-677d94f7b5c2 1586202966729 0 2020-04-09 17:27:37 5 0 0
456 aeacf6c8-dc9b-402f-951c-27918931b218 1586206160610 0 2020-04-09 17:27:37 5 0 0
457 41e58cec-0286-4e50-a2a2-e800630021fe 1586211444938 0 2020-04-09 17:27:37 5 0 0
458 0b700663-88db-4095-86df-d8bd70b84d1a 1586212473060 0 2020-04-09 17:27:37 5 0 0
459 8d811586-0b01-4960-abc9-ace24c214c7c 1586250716464 0 2020-04-09 17:27:37 5 0 0
460 85576357-d736-4317-86f3-4ad5d8a346c6 1586258423684 0 2020-04-09 17:27:37 5 0 0
461 4dfc1db9-c52f-4935-a1e6-b644d77c0f26 1586259214124 0 2020-04-09 17:27:37 5 0 0
462 05ae01a4-109d-4be4-908c-18c1c29fcb7b 1586260095934 0 2020-04-09 17:27:37 5 0 0
463 8fcb35ab-1f17-499c-8070-211d83f07d2a 1586260602412 0 2020-04-09 17:27:37 5 0 0
464 d865e495-3d48-4fe6-b3ae-56c1e08978dd 1586271055617 0 2020-04-09 17:27:37 5 0 0
465 e0f76582-c4cd-4b9a-ad2c-2f752a5e445a 1586278951426 0 2020-04-09 17:27:37 5 0 0
466 2f224680-fde7-4b8e-939c-207fe2942b57 1586280264442 0 2020-04-09 17:27:37 5 0 0
467 c46cf6b6-4e5c-4604-84f7-a60f4c031c76 1586281268199 0 2020-04-09 17:27:37 5 0 0
468 67068925-9586-4cad-aa74-cf1d30236527 1586281712612 0 2020-04-09 17:27:37 5 0 0
469 23c81b21-f724-4452-84da-e8325c4a54a2 1586282330634 0 2020-04-09 17:27:37 5 0 0
470 5392567a-c1ee-48f7-892e-3a8dc83b96e2 1586284501030 0 2020-04-09 17:27:37 5 0 0
471 18a3c9c8-5d81-48c9-a305-d47c6a633b6e 1586284817429 0 2020-04-09 17:27:37 5 0 0
472 75658dd2-d4fd-44ed-83a2-08c02c29be78 1586285785447 0 2020-04-09 17:27:37 5 0 0
473 0f9dd80e-8d94-410a-a913-1a92542c3522 1586289130058 0 2020-04-09 17:27:37 5 0 0
474 b5ce8ccc-2cb8-41c9-903e-a800a430e25f 1586294493249 0 2020-04-09 17:27:37 5 0 0
475 85dfa8b7-017d-4ce7-afc5-64de56f7ed06 1586295858814 0 2020-04-09 17:27:37 5 0 0
476 2ac75025-fcb9-44bb-8ced-00e90efd2c80 1586300163456 0 2020-04-09 17:27:37 5 0 0
477 0dae4606-f1f4-4bff-acfc-c247dd782a2c 1586335033362 0 2020-04-09 17:27:37 5 0 0
478 874eeb4f-b0a5-4949-b0e4-418961cf9e8c 1586337718368 0 2020-04-09 17:27:37 5 0 0
479 1218e12f-fbfa-43f8-9e8e-d4ae61783cbe 1586342849742 0 2020-04-09 17:27:37 5 0 0
480 bb3b9bc2-6d68-466c-9db0-4692d07bd61c 1586345840498 0 2020-04-09 17:27:37 5 0 0
481 3996872b-3ea9-4d6e-9f82-751478b2082c 1586346906209 0 2020-04-09 17:27:37 5 0 0
482 de5c9362-096d-4eb0-9dc8-fc01b9e7a8ac 1586347791766 0 2020-04-09 17:27:37 5 0 0
483 794d0762-faca-4825-b9bb-f7b20844ea6b 1586350295953 0 2020-04-09 17:27:37 5 0 0
484 9851d252-01c4-49e8-90a9-c810d77d3a31 1586351409125 0 2020-04-09 17:27:37 5 0 0
485 ce374cb8-9aca-4ad0-9373-31c3922bf6f6 1586351747318 0 2020-04-09 17:27:37 5 0 0
486 57672c73-aff2-4db7-a227-6cca0e31dc82 1586353523457 0 2020-04-09 17:27:37 5 0 0
487 088ab91d-a9c5-4eaf-96ba-dba53a21aada 1586354612521 0 2020-
04-09 17:27:37 5 0 0
488 9401b88c-5f88-403a-b7de-d6d05299b699 1586357515388 0 2020-04-09 17:27:37 5 0 0
489 f20bd1e0-aef5-4479-aa75-a8f5d4b540ab 1586358260587 0 2020-04-09 17:27:37 5 0 0
490 af3f7b70-6c1a-4800-b6a7-6adf6e371520 1586358923465 0 2020-04-09 17:27:37 5 0 0
491 aa7a2278-ea93-4dec-a705-3c97f614b89b 1586359608551 0 2020-04-09 17:27:37 5 0 0
492 eec2d3dd-a1d9-4b7c-9c1e-ad08f8a2cf3d 1586364579361 0 2020-04-09 17:27:37 5 0 0
493 958c8711-cd5d-404d-aa52-f86f2761153d 1586364708939 0 2020-04-09 17:27:37 5 0 0
494 3b25878e-2ecd-43f9-a4b3-3a5b70c24065 1586365564943 0 2020-04-09 17:27:37 5 0 0
495 55bfa25d-e21d-40b1-9245-6057d1963577 1586416768134 0 2020-04-09 17:27:37 5 0 0
496 2cfd6522-990e-4fac-9957-6a2181e75feb 0 2020-04-13 09:53:17 2 0 0
497 393fab79-072d-4065-b2f5-63e1433fe487 0 2020-04-13 09:53:18 2 0 0
498 8fa74e63-29c3-43c9-9ba9-d1caa12eac1c 0 2020-04-14 10:49:56 0 0 0
499 a12bd6b4-0af9-4b0f-b5eb-e23dec552225 0 2020-04-14 10:50:24 0 0 0
500 3f28dffd-eb87-43c4-8a48-e2b0fe92d3f2 0 2020-04-14 10:50:26 0 0 0
501 baec10b1-a758-4bf1-ba90-fca66fe8dedf 0 2020-04-14 10:50:27 0 0 0
502 6598fdee-2505-41fd-b611-ccc9615506b8 0 2020-04-14 10:50:28 0 0 0
id ip userID createDate lastAccess isScript
------------------------------------ ---------------- ---------- ------------------- ------------------- ----------
de88a6c9-10b1-415d-99a8-0a35af22ab3a ::ffff:127.0.0.1 3 2020-04-09 17:28:47 2020-04-09 17:30:28 1
0b65d71e-c494-4995-a94b-95dc040c4e44 ::ffff:127.0.0.1 9 2020-04-09 17:32:12 2020-04-09 17:32:15 1
e52883e1-d2ca-4e75-8917-521a1f873d47 ::ffff:127.0.0.1 7 2020-04-13 09:32:53 2020-04-13 10:21:28 0
1d73e2ef-1669-4de5-877b-6d3382706342 ::ffff:127.0.0.1 8 2020-04-13 11:30:17 2020-04-13 11:37:41 0
5de14b32-8fe0-4a05-8f1e-b113d10f4ae7 ::ffff:127.0.0.1 1 2020-04-13 14:45:04 2020-04-13 19:29:19 0
dcc18733-7cf9-4078-acbe-cdc8b8a1e01c ::ffff:127.0.0.1 2 2020-04-14 10:13:53 2020-04-14 11:21:06 0
5d8a00b5-9949-4003-b10a-f84b930602ba ::ffff:127.0.0.1 6 2020-04-15 15:33:00 2020-04-15 16:00:47 0
id ip count lastDate
---------- ---------------- ---------- -------------------
1 ::ffff:127.0.0.1 2 2020-04-09 17:32:09
accessID userID ip date sessionID
---------- ---------- ---------------- ------------------- ------------------------------------
1 3 ::ffff:127.0.0.1 2020-04-09 17:28:47 de88a6c9-10b1-415d-99a8-0a35af22ab3a
2 9 ::ffff:127.0.0.1 2020-04-09 17:32:12 0b65d71e-c494-4995-a94b-95dc040c4e44
3 7 ::ffff:127.0.0.1 2020-04-13 09:32:54 e52883e1-d2ca-4e75-8917-521a1f873d47
4 8 ::ffff:127.0.0.1 2020-04-13 11:30:17 1d73e2ef-1669-4de5-877b-6d3382706342
5 1 ::ffff:127.0.0.1 2020-04-13 14:45:04 5de14b32-8fe0-4a05-8f1e-b113d10f4ae7
6 2 ::ffff:127.0.0.1 2020-04-14 10:13:53 dcc18733-7cf9-4078-acbe-cdc8b8a1e01c
7 6 ::ffff:127.0.0.1 2020-04-15 15:33:00 5d8a00b5-9949-4003-b10a-f84b930602ba
accesses sessions users veteranPWRequests

File diff suppressed because one or more lines are too long

View file

@ -1,7 +1,7 @@
// https://www.sqlitetutorial.net/sqlite-nodejs/
// https://github.com/JoshuaWise/better-sqlite3/blob/HEAD/docs/api.md
module.exports = {
export default {
GetDB,
AddColumn,
TableInfo,
@ -14,9 +14,9 @@ module.exports = {
CloseDB,
}
const Sqlite = require('better-sqlite3')
const logger = require('../utils/logger.js')
const utils = require('../utils/utils.js')
import Sqlite from 'better-sqlite3'
import logger from '../utils/logger'
import utils from '../utils/utils'
const debugLog = process.env.NS_SQL_DEBUG_LOG
@ -40,7 +40,7 @@ function GetSqlQuerry(conditions, type) {
// -------------------------------------------------------------------------
function GetDB(path) {
function GetDB(path: string): any {
utils.CreatePath(path)
const res = new Sqlite(path)
res.pragma('synchronous = OFF')
@ -53,67 +53,70 @@ function DebugLog(msg) {
}
}
function AddColumn(db, table, col) {
function AddColumn(db: any, table: any, col: any): any {
try {
const colName = Object.keys(col)[0]
const colType = col.type
const s = `ALTER TABLE ${table} ADD COLUMN ${colName} ${colType}`
const stmt = PrepareStatement(db, s)
const command = `ALTER TABLE ${table} ADD COLUMN ${colName} ${colType}`
const stmt = PrepareStatement(db, command)
return stmt.run()
} catch (e) {
console.error(e)
} catch (err) {
console.error(err)
}
}
function TableInfo(db, table) {
function TableInfo(db: any, table: any): any {
try {
} catch (e) {
console.error(e)
}
const s = `PRAGMA table_info(${table})`
const stmt = PrepareStatement(db, s)
const command = `PRAGMA table_info(${table})`
const stmt = PrepareStatement(db, command)
const infoRes = stmt.all()
const infoRes = stmt.all()
const s2 = `SELECT COUNT(*) FROM ${table}`
const stmt2 = PrepareStatement(db, s2)
const s2 = `SELECT COUNT(*) FROM ${table}`
const stmt2 = PrepareStatement(db, s2)
const countRes = stmt2.get()
const countRes = stmt2.get()
return {
columns: infoRes,
dataCount: countRes[Object.keys(countRes)[0]],
return {
columns: infoRes,
dataCount: countRes[Object.keys(countRes)[0]],
}
} catch (err) {
console.error(err)
}
}
function Update(db, table, newData, conditions) {
function Update(db: any, table: any, newData: any, conditions: any): any {
try {
const s = `UPDATE ${table} SET ${GetSqlQuerry(
const command = `UPDATE ${table} SET ${GetSqlQuerry(
newData,
'set'
)} WHERE ${GetSqlQuerry(conditions, 'where')}`
const stmt = PrepareStatement(db, s)
const stmt = PrepareStatement(db, command)
return stmt.run()
} catch (e) {
console.error(e)
} catch (err) {
console.error(err)
}
}
function Delete(db, table, conditions) {
function Delete(db: any, table: any, conditions: any): any {
try {
const s = `DELETE FROM ${table} WHERE ${GetSqlQuerry(conditions, 'where')}`
const stmt = PrepareStatement(db, s)
const command = `DELETE FROM ${table} WHERE ${GetSqlQuerry(
conditions,
'where'
)}`
const stmt = PrepareStatement(db, command)
return stmt.run()
} catch (e) {
console.error(e)
} catch (err) {
console.error(err)
}
}
function CreateTable(db, name, columns, foreignKeys) {
function CreateTable(db: any, name: any, columns: any, foreignKeys: any): any {
// CREATE TABLE users(pw text PRIMARY KEY NOT NULL, id number, lastIP text, notes text, loginCount
// number, lastLogin text, lastAccess text
//
@ -143,10 +146,10 @@ function CreateTable(db, name, columns, foreignKeys) {
}, [])
.join(', ')
let fKeys = []
const fKeys = []
if (foreignKeys) {
foreignKeys.forEach((f) => {
const { keysFrom, table, keysTo } = f
foreignKeys.forEach((foreignKey) => {
const { keysFrom, table, keysTo } = foreignKey
fKeys.push(
`, FOREIGN KEY(${keysFrom.join(
', '
@ -156,37 +159,40 @@ function CreateTable(db, name, columns, foreignKeys) {
}
// IF NOT EXISTS
const s = `CREATE TABLE ${name}(${cols}${fKeys.join(', ')})`
const stmt = PrepareStatement(db, s)
const command = `CREATE TABLE ${name}(${cols}${fKeys.join(', ')})`
const stmt = PrepareStatement(db, command)
return stmt.run()
} catch (e) {
console.error(e)
} catch (err) {
console.error(err)
}
}
function SelectAll(db, from) {
function SelectAll(db: any, from: any): any {
try {
const s = `SELECT * from ${from}`
const command = `SELECT * from ${from}`
const stmt = PrepareStatement(db, s)
const stmt = PrepareStatement(db, command)
return stmt.all()
} catch (e) {
console.error(e)
} catch (err) {
console.error(err)
}
}
function Select(db, from, conditions) {
function Select(db: any, from: any, conditions: any): any {
try {
const s = `SELECT * from ${from} WHERE ${GetSqlQuerry(conditions, 'where')}`
const command = `SELECT * from ${from} WHERE ${GetSqlQuerry(
conditions,
'where'
)}`
const stmt = PrepareStatement(db, s)
const stmt = PrepareStatement(db, command)
return stmt.all()
} catch (e) {
console.error(e)
} catch (err) {
console.error(err)
}
}
function Insert(db, table, data) {
function Insert(db: any, table: any, data: any): any {
try {
const cols = Object.keys(data)
.reduce((acc, key) => {
@ -207,16 +213,16 @@ function Insert(db, table, data) {
}, [])
.join(', ')
const s = `INSERT INTO ${table} (${cols}) VALUES (${values})`
const stmt = PrepareStatement(db, s)
const command = `INSERT INTO ${table} (${cols}) VALUES (${values})`
const stmt = PrepareStatement(db, command)
return stmt.run()
} catch (e) {
console.error(e)
} catch (err) {
console.error(err)
}
}
function CloseDB(db) {
function CloseDB(db: any): void {
db.close((err) => {
if (err) {
return console.error(err.message)
@ -227,12 +233,12 @@ function CloseDB(db) {
// -------------------------------------------------------------------------
function PrepareStatement(db, s) {
function PrepareStatement(db, command) {
if (!db) {
throw new Error(
'DB is undefined in prepare statement! DB action called with undefined db'
)
}
DebugLog(s)
return db.prepare(s)
DebugLog(command)
return db.prepare(command)
}

View file

@ -1,496 +0,0 @@
1572270779259
1572281342041
1572394794266
1572603975179
1572612915747
1572621200346
1572703783416
1572805169940
1572896358505
1572905784217
1572909056982
1572962332049
1572985162947
1572996033475
1573133044933
1573136314984
1573140815020
1573228693011
1573329941290
1573396722168
1573396895820
1573402341355
1573410711027
1573424473939
1573479972820
1573514811120
1573660950867
1573748376830
1573855439026
1574007410951
1574033340418
1574074087046
1574076814225
1574076864353
1574077272636
1574078697615
1574078970482
1574082123907
1574085823334
1574089044482
1574089379003
1574090624141
1574092371238
1574101279997
1574124634646
1574162935938
1574164858945
1574166782425
1574182981119
1574186786069
1574197592300
1574253542100
1574261650379
1574271939999
1574296313340
1574332666655
1574516495733
1574536274693
1574546047670
1574549559072
1574619311351
1574693821228
1574701041941
1575043480252
1575043824428
1575059557969
1575237166613
1575309241351
1575502840565
1575566700218
1575645175090
1575727001238
1575731897377
1575811342547
1575825001678
1575851111714
1575988580003
1576008784558
1576095955140
1576110824780
1576155714954
1576170697100
1576178942217
1576199121100
1576285383104
1576433101578
1576594564269
1576604050195
1576663970202
1576745689670
1576883560968
1577004560619
1577297334851
1577299054872
1577550024424
1577908652191
1577911620176
1577967339210
1577974646965
1577991656395
1578001446771
1578029505468
1578067960632
1578075721685
1578082384610
1578092298983
1578154868110
1578163736711
1578168007689
1578227715218
1578246872381
1578248410194
1578253148563
1578254461549
1578395717132
1579770952398
1581390532439
1581519515820
1581549978663
1581596348450
1581597551276
1581601838401
1581603791197
1581781021841
1581861008465
1581878147376
1581896184052
1581942075702
1581957666672
1581958676459
1581984049531
1582023234165
1582027710125
1582051392823
1582062113009
1582063394328
1582107947828
1582130108663
1582138883656
1582153316114
1582194817794
1582195200135
1582196062056
1582226390041
1582226900127
1582233806767
1582291441711
1582296563420
1582311026147
1582330762497
1582375033444
1582387766854
1582390473317
1582392619586
1582393433046
1582399198100
1582464931527
1582491086196
1582547912034
1582568768503
1582587514909
1582648026004
1582650387161
1582652449982
1582664369720
1582670675636
1582815356529
1582841402446
1582990834844
1583001904301
1583080582911
1583142880954
1583143200732
1583159163213
1583160228550
1583160306958
1583160695265
1583161372006
1583172765342
1583183356082
1583186419728
1583226286797
1583247895934
1583251259038
1583251638590
1583263737418
1583268285208
1583270831300
1583311961019
1583332004090
1583349490158
1583587913765
1583590529228
1583591489687
1583595744779
1583595850732
1583614332843
1583667551584
1583674836966
1583679823286
1583680240161
1583685754617
1583693216866
1583700140002
1583755699256
1583758800572
1583762870257
1583775336546
1583788723637
1583792065582
1583802516411
1583837948384
1583838417493
1583852501375
1583858232460
1583863517432
1583868577224
1583876790752
1583921143466
1583924243856
1583930295622
1583942274269
1583956760515
1584013349557
1584062028841
1584106231314
1584110068199
1584126993751
1584136283851
1584152746993
1584171033582
1584179808101
1584206136834
1584225446271
1584233410734
1584233555804
1584263816308
1584299288304
1584310411671
1584318028312
1584328010598
1584492643275
1584501460982
1584521753537
1584524244329
1584528900083
1584532738475
1584536840452
1584537023268
1584556276285
1584558443780
1584563231194
1584608453274
1584612759150
1584624097128
1584635316060
1584639897191
1584640843070
1584645879448
1584702612348
1584740084804
1584795181001
1584795467261
1584808124327
1584816212127
1584822316309
1584872148042
1584884660250
1584886531320
1584896547056
1584898876764
1584909497670
1584918347573
1584951294406
1584964512645
1584967858937
1584970556126
1584970897771
1584971888059
1584972919248
1584974208228
1584974347976
1584977367480
1584980780571
1584987497504
1584988073137
1584990182513
1584991806849
1584995012552
1584999685062
1585000590422
1585048696136
1585051967470
1585057266828
1585057823026
1585072254158
1585129488741
1585136127734
1585136727600
1585143211102
1585149117463
1585150875300
1585153667693
1585155635457
1585155641104
1585158017175
1585169475036
1585177116158
1585213755386
1585215049331
1585219084293
1585219576010
1585223896460
1585227683685
1585227777536
1585231464979
1585231653190
1585234641716
1585237227144
1585237227144
1585250402823
1585256176534
1585307276235
1585307657547
1585310657648
1585311633320
1585321281164
1585388975837
1585401709382
1585418050715
1585422857540
1585424670902
1585436920327
1585438327028
1585445773796
1585482778210
1585489642569
1585491887693
1585496721341
1585500059799
1585500061855
1585501980548
1585503827982
1585506396741
1585507376889
1585517188028
1585518462567
1585519589761
1585523305166
1585531272187
1585554409104
1585555718412
1585556545929
1585557389780
1585559252518
1585559805077
1585562006110
1585566176504
1585566995599
1585571720030
1585573841968
1585578710500
1585584802502
1585585998646
1585589408386
1585591395074
1585591401052
1585595412917
1585598610827
1585666806593
1585668264250
1585670351545
1585688996412
1585701259430
1585728869632
1585730980019
1585735533377
1585736476320
1585736904119
1585737647436
1585740296499
1585740541583
1585741850375
1585742413020
1585744182991
1585745021146
1585745201057
1585748050386
1585749101602
1585755422160
1585759101563
1585760066353
1585767948385
1585769837970
1585778716215
1585823123245
1585824106911
1585826299686
1585828123510
1585829811184
1585830652968
1585833443154
1585834176116
1585840388140
1585841351257
1585856239202
1585862988493
1585871928037
1585905206088
1585912371965
1585912460337
1585913135436
1585913444621
1585914143202
1585914752752
1585915196335
1585916033191
1585916508756
1585917397147
1585917624356
1585919794898
1585920724262
1585923154928
1585927022895
1585948263565
1585948778800
1585986348126
1585994315563
1585997804444
1586000700613
1586010600961
1586013473984
1586016882017
1586017104899
1586017584568
1586018930461
1586020080690
1586040441726
1586081990928
1586097122374
1586103127003
1586105166170
1586109823256
1586113332662
1586119029414
1586119648767
1586123653971
1586164913411
1586169082603
1586172250252
1586172793081
1586174925437
1586176307990
1586178600601
1586188353993
1586202966729
1586206160610
1586211444938
1586212473060
1586250716464
1586258423684
1586259214124
1586260095934
1586260602412
1586271055617
1586278951426
1586280264442
1586281268199
1586281712612
1586282330634
1586284501030
1586284817429
1586285785447
1586289130058
1586294493249
1586295858814
1586300163456
1586335033362
1586337718368
1586342849742
1586345840498
1586346906209
1586347791766
1586350295953
1586351409125
1586351747318
1586353523457
1586354612521
1586357515388
1586358260587
1586358923465
1586359608551
1586364579361
1586364708939
1586365564943
1586416768134

View file

@ -18,13 +18,13 @@
------------------------------------------------------------------------- */
module.exports = {
export default {
LogId: LogId,
Load: Load,
}
import utils from '../utils/utils.js'
import logger from '../utils/logger.js'
import utils from '../utils/utils'
import logger from '../utils/logger'
const idStatFile = 'stats/idstats'
const idVStatFile = 'stats/idvstats'
@ -34,7 +34,7 @@ let idStatsData = {}
let idvStatsData = {}
let writes = 0
function Load() {
function Load(): void {
try {
idStatsData = utils.ReadJSON(idStatFile)
} catch (err) {
@ -62,7 +62,7 @@ function LogId(
subj: string,
newQuestions: number,
allQuestions: number
) {
): void {
Inc(id, subj, newQuestions, allQuestions)
AddVisitStat(id, subj, newQuestions, allQuestions)
Save()
@ -76,7 +76,7 @@ function AddSubjToList(list: Array<string>, subj: string) {
}
function Inc(
value: string,
value: number,
subj: string,
newQuestions: number,
allQuestions: number
@ -96,7 +96,7 @@ function Inc(
}
function AddVisitStat(
name: string,
name: number,
subj: string,
newQuestions: number,
allQuestions: number

View file

@ -21,7 +21,7 @@
const hr =
'---------------------------------------------------------------------------------'
module.exports = {
export default {
GetDateString: GetDateString,
Log: Log,
DebugLog: DebugLog,
@ -37,6 +37,7 @@ module.exports = {
const DELIM = C('green') + '|' + C()
// import express from 'express'
import utils from '../utils/utils'
const vlogDir = './stats/vlogs/'
const logDir = './stats/logs/'
@ -65,17 +66,17 @@ let writes = 0
let noLogips = []
function setNewLogfileName() {
function setNewLogfileName(): void {
logFileName = utils.GetDateString(true)
}
function GetDateString() {
function GetDateString(): string {
const date = new Date()
const dateString = utils.GetDateString()
return GetRandomColor(date.getHours().toString()) + dateString + C()
}
function DebugLog(msg, name, lvl) {
function DebugLog(msg: string | object, name: string, lvl: number): void {
if (lvl <= debugLevel) {
if (msg === 'hr') {
msg = hr
@ -94,18 +95,26 @@ function DebugLog(msg, name, lvl) {
}
}
function Log(msg, color) {
function Log(msg: string | object, color?: string): void {
let log = msg
if (typeof s !== 'object') {
if (typeof msg !== 'object') {
const delimiter = DELIM + C(color)
log = C(color) + GetDateString() + delimiter + msg + C()
}
console.log(log)
utils.AppendToFile(log, logDir + logFileName)
utils.AppendToFile(
typeof log === 'string' ? log : JSON.stringify(log),
logDir + logFileName
)
}
function LogReq(req, toFile, sc) {
// FIXME: express.Request type, but with .cookies and .session
function LogReq(
req: any /*express.Request*/,
toFile?: boolean,
sc?: string
): void {
try {
const ip = req.headers['cf-connecting-ip'] || req.connection.remoteAddress
@ -159,7 +168,7 @@ function LogReq(req, toFile, sc) {
}
} catch (err) {
console.log(err)
Log('Error at logging lol', GetColor('redbg'), true)
Log('Error at logging lol', GetColor('redbg'))
}
}
@ -182,7 +191,7 @@ function setNoLogReadInterval() {
parseNoLogFile(utils.ReadFile(nologFile))
}
function Load() {
function Load(): void {
Log('Loading logger...')
try {
uvData = JSON.parse(utils.ReadFile(uStatsFile))
@ -217,7 +226,12 @@ function Load() {
setNoLogReadInterval()
}
function LogStat(url, ip, hostname, userId) {
function LogStat(
url: string,
ip: string,
hostname: string,
userId: number
): void {
const nolog = noLogips.some((noLogips) => {
return ip.includes(noLogips)
})
@ -327,11 +341,11 @@ function Save() {
}
}
function logHashed(msg) {
function logHashed(msg: string): string {
return GetRandomColor(msg.toString()) + msg + C()
}
function GetRandomColor(msg) {
function GetRandomColor(msg): string {
if (!msg) {
return 'red'
}
@ -342,11 +356,11 @@ function GetRandomColor(msg) {
return C(colors[res % colors.length])
}
function GetColor(color) {
function GetColor(color: string): string {
return color
}
function C(color?: string) {
function C(color?: string): string {
if (color !== undefined) {
color = color.toLowerCase()
}

View file

@ -1,39 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "Az alábbi karakterisztikák",
"A": "→ p-csatornás növekményes MOSFET transzfer karakterisztikája, → p-csatornás növekményes MOSFET kimenő karakterisztikája.",
"data": {
"type": "image",
"images": [
"Screen Shot 2020-03-21 a",
"Screen Shot 2020-03-21 a"
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Az alábbi karakterisztikák",
"A": "→ p-csatornás növekményes MOSFET kimenő karakterisztikája, → p-csatornás növekményes MOSFET transzfer karakterisztikája.",
"data": {
"type": "image",
"images": [
"Screen Shot 2020-03-21 a",
"Screen Shot 2020-03-21 a"
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális technika II.",
"avg": 100
}
}
]

View file

@ -1,31 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "A technika és az orvostudomány fejlődése nem az ember teljesebb megismerését, hanem az orvos-beteg kapcsolat elszemélytelenedését szolgálta.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A technika és az orvostudomány fejlődése nem az ember teljesebb megismerését, hanem az orvos-beteg kapcsolat elszemélytelenedését szolgálta.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]

View file

@ -1,31 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "Zsugorfóliás gyűjtőcsomagolásokból képzett egységrakományok rögzítésére LDPE-PP társított fóliát alkalmaznak, hogy megakadályozzák a két fóliaréteg hő hatására bekövetkező összetapadását.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Zsugorfóliás gyűjtőcsomagolásokból képzett egységrakományok rögzítésére LDPE-PP társított fóliát alkalmaznak, hogy megakadályozzák a két fóliaréteg hő hatására bekövetkező összetapadását.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Csomagolásgépesítés (online6)",
"avg": 100
}
}
]

View file

@ -1,31 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "R S Qn 1 0 0 Qn 0 1 1 1 0 1 1 1 X",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "R S Qn 1 0 0 Qn 0 1 1 1 0 0 1 1 1",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Elektronika",
"avg": 100
}
}
]

View file

@ -1,841 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "Adott az alábbi állapottábla. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapottábla. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [nem teljesen] specifikált hálózat. A hálózat [Mealy] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"8Pk07dc4o6s0gAAAAASUVORK5CYII="
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Adott az alábbi állapottábla. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapottábla. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [nem teljesen] specifikált hálózat. A hálózat [Mealy] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"8Pk07dc4o6s0gAAAAASUVORK5CYII="
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Adott az alábbi állapottábla. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapottábla. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [nem teljesen] specifikált hálózat. A hálózat [Mealy] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"wAAAABJRU5ErkJggg=="
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Adott az alábbi állapottábla. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapottábla. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [nem teljesen] specifikált hálózat. A hálózat [Mealy] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"wAAAABJRU5ErkJggg=="
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [nem teljesen] specifikált hálózat. A hálózat [Mealy] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"wdddZO0ue28OQAAAABJRU5ErkJggg="
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [nem teljesen] specifikált hálózat. A hálózat [Mealy] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"wdddZO0ue28OQAAAABJRU5ErkJggg="
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [nem teljesen] specifikált hálózat. A hálózat [Mealy] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"4fRJy0Gzh9rbQAAAAASUVORK5CYII="
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [nem teljesen] specifikált hálózat. A hálózat [Mealy] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"4fRJy0Gzh9rbQAAAAASUVORK5CYII="
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [teljesen] specifikált hálózat. A hálózat [Moore] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"OBNAAAAAElFTkSuQmCC"
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [teljesen] specifikált hálózat. A hálózat [Moore] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"OBNAAAAAElFTkSuQmCC"
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [nem teljesen] specifikált hálózat. A hálózat [Mealy] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"RhROWBwgAAAABJRU5ErkJggg=="
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [nem teljesen] specifikált hálózat. A hálózat [Mealy] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"RhROWBwgAAAABJRU5ErkJggg=="
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Adott az alábbi állapottábla. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapottábla. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [teljesen] specifikált hálózat. A hálózat [Moore] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"XRgToK5AAAAABJRU5ErkJggg=="
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Adott az alábbi állapottábla. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapottábla. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [teljesen] specifikált hálózat. A hálózat [Moore] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"XRgToK5AAAAABJRU5ErkJggg=="
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [teljesen] specifikált hálózat. A hálózat [Moore] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"kuejL9jFGGEAAAAASUVORK5CYII="
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [teljesen] specifikált hálózat. A hálózat [Moore] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"kuejL9jFGGEAAAAASUVORK5CYII="
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [nem teljesen] specifikált hálózat. A hálózat [Mealy] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"Fes5JSlCKvYPokA5I9VD5CS0XB9KCL"
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [nem teljesen] specifikált hálózat. A hálózat [Mealy] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"Fes5JSlCKvYPokA5I9VD5CS0XB9KCL"
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [teljesen] specifikált hálózat. A hálózat [Moore] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"3Yh0VGDDjrooAE6atBBBx00QEcNOui"
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [teljesen] specifikált hálózat. A hálózat [Moore] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"3Yh0VGDDjrooAE6atBBBx00QEcNOui"
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [teljesen] specifikált hálózat. A hálózat [Moore] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"w9brcUztv2TFAAAAABJRU5ErkJggg="
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapotgráf. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [teljesen] specifikált hálózat. A hálózat [Moore] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"w9brcUztv2TFAAAAABJRU5ErkJggg="
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Adott az alábbi állapottábla. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapottábla. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [nem teljesen] specifikált hálózat. A hálózat [Mealy] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"wPU5mq9ONxwQMAAAAASUVORK5CYII="
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Adott az alábbi állapottábla. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat üres specifikált hálózat. A hálózat üres modell szerint van megadva.",
"A": "Adott az alábbi állapottábla. Mit tudunk a hálózatról? Egészítse ki az alábbi mondatokat! A hálózat [nem teljesen] specifikált hálózat. A hálózat [Mealy] modell szerint van megadva.",
"data": {
"type": "image",
"images": [
"wPU5mq9ONxwQMAAAAASUVORK5CYII="
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A memóriában tárolt adatok kiválasztását végző vezetékek a címek.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A memóriában tárolt adatok kiválasztását végző vezetékek a címek.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! A bejárt állapotok sorozata: RES/NRES → üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres és újra üres",
"A": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! A bejárt állapotok sorozata: RES/NRES → [Eh], [Ch], [9h], [2h], [5h], [Ah], [4h], [8h], [Bh], [6h], [7h] és újra [Eh]",
"data": {
"type": "image",
"images": [
"A++xsaOCma24AAAAAElFTkSuQmCC"
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! A bejárt állapotok sorozata: RES/NRES → üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres és újra üres",
"A": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! A bejárt állapotok sorozata: RES/NRES → [Eh], [Ch], [9h], [2h], [5h], [Ah], [4h], [8h], [Bh], [6h], [7h] és újra [Eh]",
"data": {
"type": "image",
"images": [
"A++xsaOCma24AAAAAElFTkSuQmCC"
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! üres , üres törlésű számlálóval felépített hálózat. A bejárt állapotok sorozata: RES/NRES → üres , üres , üres , üres , üres , üres , üres , üres és újra üres",
"A": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! [Decimális], [szinkron] törlésű számlálóval felépített hálózat. A bejárt állapotok sorozata: RES/NRES → [2h], [3h], [4h], [6h], [7h], [8h], [0h], [1h] és újra [3h]",
"data": {
"type": "image",
"images": [
"wBHsxffDSYvEQAAAABJRU5ErkJggg="
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! üres , üres törlésű számlálóval felépített hálózat. A bejárt állapotok sorozata: RES/NRES → üres , üres , üres , üres , üres , üres , üres , üres és újra üres",
"A": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! [Decimális], [szinkron] törlésű számlálóval felépített hálózat. A bejárt állapotok sorozata: RES/NRES → [2h], [3h], [4h], [6h], [7h], [8h], [0h], [1h] és újra [3h]",
"data": {
"type": "image",
"images": [
"wBHsxffDSYvEQAAAABJRU5ErkJggg="
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! üres , üres törlésű számlálóval felépített hálózat. A bejárt állapotok sorozata: RES/NRES → üres , üres , üres , üres , üres , üres , üres , üres és újra üres",
"A": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! [Decimális], [aszinkron] törlésű számlálóval felépített hálózat. A bejárt állapotok sorozata: RES/NRES → [0h], [1h], [2h], [3h], [5h], [7h], [8h], [9h] és újra [3h]",
"data": {
"type": "image",
"images": [
"T4fYb28dxaIAAAAASUVORK5CYII="
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! üres , üres törlésű számlálóval felépített hálózat. A bejárt állapotok sorozata: RES/NRES → üres , üres , üres , üres , üres , üres , üres , üres és újra üres",
"A": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! [Decimális], [aszinkron] törlésű számlálóval felépített hálózat. A bejárt állapotok sorozata: RES/NRES → [0h], [1h], [2h], [3h], [5h], [7h], [8h], [9h] és újra [3h]",
"data": {
"type": "image",
"images": [
"T4fYb28dxaIAAAAASUVORK5CYII="
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A memóriában tárolt adatok kiválasztását végző vezetékek a címek.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A memóriában tárolt adatok kiválasztását végző vezetékek a címek.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! A bejárt állapotok sorozata: RES/NRES → üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres és újra üres",
"A": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! A bejárt állapotok sorozata: RES/NRES → [0h], [1h], [2h], [4h], [8h], [9h], [3h], [7h], [Eh], [Dh], [Ah], [Bh], [5h], [6h], [Ch] és újra [8h]",
"data": {
"type": "image",
"images": [
"GEogvyoJwnMAAAAASUVORK5CYII="
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! A bejárt állapotok sorozata: RES/NRES → üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres és újra üres",
"A": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! A bejárt állapotok sorozata: RES/NRES → [0h], [1h], [2h], [4h], [8h], [9h], [3h], [7h], [Eh], [Dh], [Ah], [Bh], [5h], [6h], [Ch] és újra [8h]",
"data": {
"type": "image",
"images": [
"GEogvyoJwnMAAAAASUVORK5CYII="
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! üres , üres törlésű számlálóval felépített hálózat. A bejárt állapotok sorozata: RES/NRES → üres , üres , üres , üres , üres , üres , üres és újra üres",
"A": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! [Decimális], [szinkron] törlésű számlálóval felépített hálózat. A bejárt állapotok sorozata: RES/NRES → [0h], [1h], [2h], [3h], [5h], [6h], [8h] és újra [0h]",
"data": {
"type": "image",
"images": [
"Omes8AAAAAElFTkSuQmCC"
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! üres , üres törlésű számlálóval felépített hálózat. A bejárt állapotok sorozata: RES/NRES → üres , üres , üres , üres , üres , üres , üres és újra üres",
"A": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! [Decimális], [szinkron] törlésű számlálóval felépített hálózat. A bejárt állapotok sorozata: RES/NRES → [0h], [1h], [2h], [3h], [5h], [6h], [8h] és újra [0h]",
"data": {
"type": "image",
"images": [
"Omes8AAAAAElFTkSuQmCC"
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! A bejárt állapotok sorozata: RES/NRES → üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres és újra üres",
"A": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! A bejárt állapotok sorozata: RES/NRES → [0h], [1h], [2h], [4h], [8h], [9h], [3h], [7h], [Eh], [Dh], [Ah], [Bh], [5h], [6h], [Ch] és újra [8h]",
"data": {
"type": "image",
"images": [
"2WGWf6YcjNEAAAAASUVORK5CYII="
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! A bejárt állapotok sorozata: RES/NRES → üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres , üres és újra üres",
"A": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! A bejárt állapotok sorozata: RES/NRES → [0h], [1h], [2h], [4h], [8h], [9h], [3h], [7h], [Eh], [Dh], [Ah], [Bh], [5h], [6h], [Ch] és újra [8h]",
"data": {
"type": "image",
"images": [
"2WGWf6YcjNEAAAAASUVORK5CYII="
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! üres , üres törlésű számlálóval felépített hálózat. A bejárt állapotok sorozata: RES/NRES → üres , üres , üres , üres , üres , üres , üres és újra üres",
"A": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! [Decimális], [aszinkron] törlésű számlálóval felépített hálózat. A bejárt állapotok sorozata: RES/NRES → [0h], [1h], [2h], [3h], [5h], [6h], [8h] és újra [0h]",
"data": {
"type": "image",
"images": [
"A+wU9Tp8XAvKwAAAABJRU5ErkJggg="
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! üres , üres törlésű számlálóval felépített hálózat. A bejárt állapotok sorozata: RES/NRES → üres , üres , üres , üres , üres , üres , üres és újra üres",
"A": "Adott az alábbi kapcsolás. Határozza meg, hogy milyen állapotokat jár be a hálózat! [Decimális], [aszinkron] törlésű számlálóval felépített hálózat. A bejárt állapotok sorozata: RES/NRES → [0h], [1h], [2h], [3h], [5h], [6h], [8h] és újra [0h]",
"data": {
"type": "image",
"images": [
"A+wU9Tp8XAvKwAAAABJRU5ErkJggg="
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A több bemenetről 1 kimenetre választó adatirányítókat multiplexereknek nevezzük.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A több bemenetről 1 kimenetre választó adatirányítókat multiplexereknek nevezzük.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Az egy bemenetről több kimenetre választó adatirányítókat demultiplexereknek nevezzük.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Az egy bemenetről több kimenetre választó adatirányítókat demultiplexereknek nevezzük.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Digitális rendszerek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Melyik áramkör kapcsolási rajzát látja az alábbi ábrán?",
"A": "Kódoló, dekódoló",
"data": {
"type": "image",
"images": [
"gAAAABJRU5ErkJggg=="
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Melyik áramkör kapcsolási rajzát látja az alábbi ábrán?",
"A": "Kódoló, dekódoló",
"data": {
"type": "image",
"images": [
"gAAAABJRU5ErkJggg=="
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Digitális technika I.",
"avg": 100
}
}
]

View file

@ -1,31 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "Az EU egyebek mellett ezt a felvételi kritériumokat határozta meg a közép- és kelet-európai országok csatlakozására vonatkozóan",
"A": "Az EK is legyen alkalmas új tagok befogadására",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Az EU egyebek mellett ezt a felvételi kritériumokat határozta meg a közép- és kelet-európai országok csatlakozására vonatkozóan",
"A": "Az EK is legyen alkalmas új tagok befogadására",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "EU Ismeretek",
"avg": 100
}
}
]

View file

@ -1,31 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "A vízszintes eltérítő rendszer a megjelenítő eszköz (katódsugárcső) elektron nyalábjának függőleges irányú eltérítését valósítja meg.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A függőleges eltérítő rendszer a megjelenítő eszköz (katódsugárcső) elektron nyalábjának vízszintes irányú eltérítését valósítja meg.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Elektronika",
"avg": 100
}
}
]

View file

@ -1,181 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "A Lorentz-transzformációk v << c esetén is működnek. Ez estben a Galilei-féle relativitási elvet és a Galilei-transzformációkat adják vissza.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A Lorentz-transzformációk v << c esetén is működnek. Ez estben a Galilei-féle relativitási elvet és a Galilei-transzformációkat adják vissza.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Fizika II.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Az egymáshoz képest nyugalomban lévő és egyenesvonalú egyenletesen változó mozgást végző vonatkoztatási rendszerek a mechanikai jelenségek szempontjából egyenértékűek vagy ekvivalensek.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Az egymáshoz képest nyugalomban lévő és egyenesvonalú egyenletesen változó mozgást végző vonatkoztatási rendszerek a mechanikai jelenségek szempontjából egyenértékűek vagy ekvivalensek.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Fizika II.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Az egymáshoz képest nyugalomban lévő és egyenesvonalú egyenletes mozgást végző vonatkoztatási rendszerek a mechanikai jelenségek szempontjából egyenértékűek vagy ekvivalensek.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Az egymáshoz képest nyugalomban lévő és egyenesvonalú egyenletes mozgást végző vonatkoztatási rendszerek a mechanikai jelenségek szempontjából egyenértékűek vagy ekvivalensek.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Fizika II.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A fényév időtartam jellegű mennyiség.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A fényév időtartam jellegű mennyiség.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Fizika II.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A Michelson-Morley interferencia kísérlettel a fénynek és a forgó Földnek az egymáshoz viszonyított sebességét próbálták megmérni.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A Michelson-Morley interferencia kísérlettel a fénynek és a forgó Földnek az egymáshoz viszonyított sebességét próbálták megmérni.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Fizika II.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Amennyiben egy kört fénysebesség-közeli sebességgel mozgatunk, úgy nyugvó megfigyelő számára a kör ellipszissé torzul.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Amennyiben egy kört fénysebesség-közeli sebességgel mozgatunk, úgy nyugvó megfigyelő számára a kör ellipszissé torzul.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Fizika II.",
"avg": 100
}
}
]

View file

@ -1,781 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "9. Párosítsa a funkciókat!A.) BÍRÓSÁGOK",
"A": "8 HA TÖRVÉNY MÁSKÉPPEN NEM RENDELKEZIK - TANÁCSBAN ÍTÉLKEZIK",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "9. Párosítsa a funkciókat!A.) BÍRÓSÁGOK",
"A": "8 HA TÖRVÉNY MÁSKÉPPEN NEM RENDELKEZIK - TANÁCSBAN ÍTÉLKEZIK",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány főből áll az Alkotmánybíróság testülete?",
"A": "15",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány főből áll az Alkotmánybíróság testülete?",
"A": "15",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány főből áll az Alkotmánybíróság testülete?",
"A": "15",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány főből áll az Alkotmánybíróság testülete?",
"A": "15",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány főből áll az Alkotmánybíróság testülete?",
"A": "15",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány főből áll az Alkotmánybíróság testülete?",
"A": "15",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány éves életkortól lehet valaki köztársasági elnök?",
"A": "35",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány éves életkortól lehet valaki köztársasági elnök?",
"A": "35",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány éves életkortól lehet valaki köztársasági elnök?",
"A": "35",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány éves életkortól lehet valaki köztársasági elnök?",
"A": "35",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány évre nevezik ki az MNB elnökét?",
"A": "6",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány évre nevezik ki az MNB elnökét?",
"A": "6",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány évre nevezik ki az MNB elnökét?",
"A": "6",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány évre nevezik ki az MNB elnökét?",
"A": "6",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány évre választja az Országgyűlés a köztársasági elnököt?",
"A": "5",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány évre választja az Országgyűlés a köztársasági elnököt?",
"A": "5",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány évre választja az Országgyűlés a köztársasági elnököt?",
"A": "5",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány évre választja az Országgyűlés a köztársasági elnököt?",
"A": "5",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány évre választja az Országgyűlés az ÁSZ elnökét?",
"A": "12",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány évre választja az Országgyűlés az ÁSZ elnökét?",
"A": "12",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány évre választják a Kúria elnökét?",
"A": "9",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány évre választják a Kúria elnökét?",
"A": "9",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány évre választják a helyi önkormányzati képviselőket és polgármestereket?",
"A": "5",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány évre választják a helyi önkormányzati képviselőket és polgármestereket?",
"A": "5",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány évre választják a helyi önkormányzati képviselőket és polgármestereket?",
"A": "5",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány évre választják a helyi önkormányzati képviselőket és polgármestereket?",
"A": "5",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány évre választják az alapvető jogi biztost?",
"A": "6",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány évre választják az alapvető jogi biztost?",
"A": "6",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány évre választják meg a legfőbb ügyészt?",
"A": "9",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány évre választják meg a legfőbb ügyészt?",
"A": "9",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány évre választják meg a legfőbb ügyészt?",
"A": "9",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány évre választják meg a legfőbb ügyészt?",
"A": "9",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Ki nem a Költségvetési Tanács tagja?",
"A": "Pénzügyminiszter",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Ki nem a Költségvetési Tanács tagja?",
"A": "Pénzügyminiszter",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Ki nem a Költségvetési Tanács tagja?",
"A": "Pénzügyminiszter",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Ki nem a Költségvetési Tanács tagja?",
"A": "Pénzügyminiszter",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Melyik nem önkormányzati feladatkör?",
"A": "alapfokú iskolai oktatás megszervezése",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Melyik nem önkormányzati feladatkör?",
"A": "alapfokú iskolai oktatás megszervezése",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Melyik város nem ítélőtáblai székhely?",
"A": "Veszprém",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Melyik város nem ítélőtáblai székhely?",
"A": "Veszprém",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Melyik város nem ítélőtáblai székhely?",
"A": "Miskolc",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Melyik város nem ítélőtáblai székhely?",
"A": "Miskolc",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány éves koráig cselekvőképtelen a kiskorú személy?",
"A": "14",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány éves koráig cselekvőképtelen a kiskorú személy?",
"A": "14",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A személy eltűnésétől fogva hány évnek kell eltelnie ahhoz, hogy holttá lehessen nyilvánítani?",
"A": "5",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A személy eltűnésétől fogva hány évnek kell eltelnie ahhoz, hogy holttá lehessen nyilvánítani?",
"A": "5",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány éves korától tekinthető az emberi személy cselekvőképesnek?",
"A": "18",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány éves korától tekinthető az emberi személy cselekvőképesnek?",
"A": "18",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány év alatt évülnek el a kötelmi követelések?",
"A": "5",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány év alatt évülnek el a kötelmi követelések?",
"A": "5",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Jogi ismeretek",
"avg": 100
}
}
]

View file

@ -1,61 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "Expanzív költségvetési politika esetén a kamatláb emelkedik, mivel",
"A": "a megnövekvő jövedelem miatt növekszik a pénzkereslet s a változatlan pénzkínálat mellett nő a kamatláb",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Expanzív költségvetési politika esetén a kamatláb emelkedik, mivel",
"A": "a megnövekvő jövedelem miatt növekszik a pénzkereslet s a változatlan pénzkínálat mellett nő a kamatláb",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Makroökonómia",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A nyitott gazdaság IS görbéje balra tolódik, ha ceteris paribus",
"A": "az ország fő külkereskedelmi partnereinél recesszió következik be és így visszaesik az export.",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A nyitott gazdaság IS görbéje balra tolódik, ha ceteris paribus",
"A": "az ország fő külkereskedelmi partnereinél recesszió következik be és így visszaesik az export",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Makroökonómia",
"avg": 100
}
}
]

View file

@ -1,61 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "Ha egy fogyasztó reáljövedelme megnövekszik, akkor különböző mértékben, de minden jószágból növeli a fogyasztását",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Ha egy fogyasztó reáljövedelme megnövekszik, akkor különböző mértékben, de minden jószágból növeli a fogyasztását",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Mikroökonómia",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Az alternatív költségek olyan költségek, amelyek a múltban merültek fel, ezért már nem változtathatók meg",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Az alternatív költségek olyan költségek, amelyek a múltban merültek fel, ezért már nem változtathatók meg.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Mikroökonómia",
"avg": 100
}
}
]

View file

@ -1,31 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "A 2006/42/EK rendelet írja elő a gépek CE jelölését.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A 2006/42/EK rendelet írja elő a gépek CE jelölését.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Gépek CE jelölése, műszaki-jogi megfelelősége",
"avg": 100
}
}
]

View file

@ -1,61 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "A villamos feszültség az SI alapegységének tekinthető?",
"A": "nem",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A villamos feszültség az SI alapegységének tekinthető?",
"A": "nem",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Méréstechnika I.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Pneumatikus finomtapintókat csekély számú mérések esetén alkalmazunk laboratóriumban.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Pneumatikus finomtapintókat csekély számú mérések esetén alkalmazunk laboratóriumban.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Méréstechnika I.",
"avg": 100
}
}
]

View file

@ -1,69 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"A": "Igaz",
"data": {
"type": "image",
"images": [
"image1.png"
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"A": "Igaz",
"data": {
"type": "image",
"images": [
"image1.png"
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Műszaki mechanika",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"A": "Igaz",
"data": {
"type": "image",
"images": [
"image1.png"
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"A": "Igaz",
"data": {
"type": "image",
"images": [
"image1.png"
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Műszaki mechanika",
"avg": 100
}
}
]

View file

@ -1,391 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "„Egy kereskedő 3 Škoda autót vett egy nap.” Mi ebben az autókra vonatkozó ismérv?",
"A": "az eladott mennyiség (gyártmány)",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "„Egy kereskedő 3 Škoda autót vett egy nap.” Mi ebben az autókra vonatkozó ismérv?",
"A": "az eladott mennyiség (gyártmány)",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika I.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "„Egy kereskedő 8 kék autót adott el 1 nap alatt.” Mi ebben az autókra vonatkozó ismérv?",
"A": "a szín",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "„Egy kereskedő 8 kék autót adott el 1 nap alatt.” Mi ebben az autókra vonatkozó ismérv?",
"A": "a szín",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika I.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A szórás értéke soha nem lehet kisebb az átlagos eltérés mutatónál.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A szórás értéke soha nem lehet kisebb az átlagos eltérés mutatónál.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika I.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A dinamikus viszonyszám az összehasonlító viszonyszámok közé tartozik.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A dinamikus viszonyszám az összehasonlító viszonyszámok közé tartozik.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika I.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A gyakorisági poligon tulajdonképpen azonos az (empirikus) eloszlásfüggvénnyel.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A gyakorisági poligon tulajdonképpen azonos az (empirikus) eloszlásfüggvénnyel.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika I.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Három vállalat esetében a munkavállalók életkorára vonatkozó adatok: Vállalat Átlagos életkor (év) Módusz (év) Medián (év) Az eloszlás típusa A 35 Amo Ame szimmetrikus B 35 Bmo 30 bal oldali aszimmetria C 40 45 Cme jobb oldali aszimmetria Adjon meg olyan értéket, ami megfelelnek a feltételnek, és a következő jel helyébe írható: Amo",
"A": "35.",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Három vállalat esetében a munkavállalók életkorára vonatkozó adatok: Vállalat Átlagos életkor (év) Módusz (év) Medián (év) Az eloszlás típusa A 35 Amo Ame szimmetrikus B 35 Bmo 30 bal oldali aszimmetria C 40 45 Cme jobb oldali aszimmetria Adjon meg olyan értéket, ami megfelelnek a feltételnek, és a következő jel helyébe írható: Ame",
"A": "35.",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Az adatgyűjtés egyik célja a politikai tervezések, döntések megalapozottságának biztosítása.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Az adatgyűjtés egyik célja a politikai tervezések, döntések megalapozottságának biztosítása.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika I.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A szórás értéke soha nem lehet nagyobb az átlagos eltérés mutatónál.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A szórás értéke soha nem lehet nagyobb az átlagos eltérés mutatónál.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika I.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A gyakorisági poligon negatív értékek felett nem \"rajzolható\".",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A gyakorisági poligon negatív értékek felett nem \"rajzolható\".",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika I.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Az intervallumskála nulla értéke a tulajdonság hiányát jelenti.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Az intervallumskála nulla értéke a tulajdonság hiányát jelenti.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika I.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A tartamidősor adatai összegezhetőek, az így kapott adat értelmezhető.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A tartamidősor adatai összegezhetőek, az így kapott adat értelmezhető.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika I.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A kombinációs és a kontingencia tábla jelentése azonos.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A kombinációs és a kontingencia tábla jelentése azonos.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika I.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A gyűjtött statisztikai adatok döntő többsége ingyenesen hozzáférhető.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A gyűjtött statisztikai adatok döntő többsége ingyenesen hozzáférhető.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika I.",
"avg": 100
}
}
]

View file

@ -1,61 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "Egyaránt független azonos eloszlású mintát eredményez, ha homogén, végtelen elemszámú sokaságból akár visszatevéses, akár visszatevés nélküli véletlen mintát veszünk",
"A": "igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Egyaránt független azonos eloszlású mintát eredményez, ha homogén, végtelen elemszámú sokaságból akár visszatevéses, akár visszatevés nélküli véletlen mintát veszünk",
"A": "igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika II.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A rétegzett minta arányos elosztású, ha NjN≠njnNjN≠njn",
"A": "hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A rétegzett minta arányos elosztású, ha NjN≠njnNjN≠njn",
"A": "hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika II.",
"avg": 100
}
}
]

View file

@ -1,31 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "Az analitikus tevékenységeken belül mit takar a dimenzionálás?",
"A": "Tulajdonságok meghatározását",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Az analitikus tevékenységeken belül mit takar a dimenzionálás?",
"A": "Tulajdonságok meghatározását",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztikai elemzések informatikai támogatása",
"avg": 100
}
}
]

View file

@ -1,151 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "Igaz vagy hamis az alábbi állítás? A fast fashion cégek pl.: H M, Zara... azért nem preferálja a környezettudatos gyártást, mert a vásárlói kereslet megköveteli az évszakonkénti új kollekciót.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Igaz vagy hamis az alábbi állítás? A fast fashion cégek pl.: H M, Zara... azért nem preferálja a környezettudatos gyártást, mert a vásárlói kereslet megköveteli az évszakonkénti új kollekciót.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Szakmai környezetvédelem (online 6)",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Igaz, vagy hamis az alábbi állítás? A nagy méretű elektromos munkaeszközök munka és tűzvédelmi szempontból veszélyesek.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Igaz, vagy hamis az alábbi állítás? A nagy méretű elektromos munkaeszközök munka és tűzvédelmi szempontból veszélyesek.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Szakmai környezetvédelem (online 6)",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Igaz, vagy hamis az alábbi állítás? A gyalogos és gépjármű forgalmat csak külső területeken kell elkülöníteni, fizikailag fagy felfestéssel jelezni kell a kettő határát!",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Igaz, vagy hamis az alábbi állítás? A gyalogos és gépjármű forgalmat csak külső területeken kell elkülöníteni, fizikailag fagy felfestéssel jelezni kell a kettő határát!",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Szakmai környezetvédelem (online 6)",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A fonalak egyszeresen sodrott elemiszálakból álló képződmények.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A fonalak egyszeresen sodrott elemiszálakból álló képződmények.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Szakmai környezetvédelem (online 6)",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A '*', amelyek könnyen komposztálhatók és viszonylag gyorsan lebomlanak.",
"A": "Természetes szálas anyagok.",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A '*', amelyek könnyen komposztálhatók és viszonylag gyorsan lebomlanak.",
"A": "Természetes szálas anyagok.",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Szakmai környezetvédelem (online 6)",
"avg": 100
}
}
]

View file

@ -1,361 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "A 256-QAM egyetlen jelváltozással 16 bitet kódol.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A 256-QAM egyetlen jelváltozással 16 bitet kódol.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A p-perzisztens CSMA szabad csatorna esetén azonnal adni kezd.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A p-perzisztens CSMA szabad csatorna esetén azonnal adni kezd",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "ALOHA rendszerek esetén a nyugtázó csatornákban is lehet ütközés.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "ALOHA rendszerek esetén a nyugtázó csatornákban is lehet ütközés.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Az 1-perzisztens CSMA nem vizsgálja a csatorna foglaltságát.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Az 1-perzisztens CSMA nem vizsgálja a csatorna foglaltságát.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A WEP titkosítás b/g/n szabványoknak egyaránt része.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A WEP titkosítás b/g/n szabványoknak egyaránt része.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A nem perzisztens CSMA szabad csatorna esetén azonnal adni kezd.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A nem perzisztens CSMA szabad csatorna esetén azonnal adni kezd.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A Shannon tétel az ideális átviteli csatornával kapcsolatos",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A Shannon tétel az ideális átviteli csatornával kapcsolatos.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A „T-568A” és „T-568B” bekötése 50%-ba megegyezik",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A „T-568A” és „T-568B” bekötése 50%-ba megegyezik",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A Nyquist tétel az ideális átviteli csatornával kapcsolatos.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A Nyquist tétel az ideális átviteli csatornával kapcsolatos.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "RNC jelentése „Radio Network Controller”.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "RNC jelentése „Radio Network Controller”.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A WEP az ”n”szabványnak már nem része.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A WEP az ”n”szabványnak már nem része.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Az IEEE 802.11 három féle keretosztállyaldolgozik.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Az IEEE 802.11 három féle keretosztállyaldolgozik.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Statisztika",
"avg": 100
}
}
]

View file

@ -1,181 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "A szimmetrikus kriptográfia titkos matematikai algoritmusokat használ.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A szimmetrikus kriptográfia titkos matematikai algoritmusokat használ.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Távközlési informatika II.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Előfordulhat, hogy a hálózati jellemzők romlása miatt az RTP csökkenti az adatsebességet.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Előfordulhat, hogy a hálózati jellemzők romlása miatt az RTP csökkenti az adatsebességet.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Távközlési informatika II.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A szimmetrikus kriptográfia titkos matematikai algoritmusokat használ.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A szimmetrikus kriptográfia titkos matematikai algoritmusokat használ.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Távközlési informatika II.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Digitális aláírás esetén minden résztvevő saját titkos hash függvénnyel rendelkezik.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Digitális aláírás esetén minden résztvevő saját titkos hash függvénnyel rendelkezik.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Távközlési informatika II.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A dns szerverek cache-elik (egy ideig tárolják) a rajtuk áthaladó dns adatokat.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A dns szerverek cache-elik (egy ideig tárolják) a rajtuk áthaladó dns adatokat.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Távközlési informatika II.",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A dns-ben az MX rekord tipikusan naponta változik.",
"A": "Hamis",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A dns-ben az MX rekord tipikusan naponta változik.",
"A": "Hamis",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Távközlési informatika II.",
"avg": 100
}
}
]

View file

@ -1,181 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány gramm réz nyerhető ki 25,5 gramm CuO redukciója során? MCu= 63,54g/mol MO= 16 g/mol",
"A": "20,37.",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány gramm réz nyerhető ki 25,5 gramm CuO redukciója során? MCu= 63,54g/mol MO= 16 g/mol",
"A": "20,37.",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Villamosipari anyagismeret",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány gramm réz nyerhető ki 94,1 gramm CuO redukciója során? MCu= 63,54g/mol MO= 16 g/mol",
"A": "75,17.",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány gramm réz nyerhető ki 94,1 gramm CuO redukciója során? MCu= 63,54g/mol MO= 16 g/mol",
"A": "75,17.",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Villamosipari anyagismeret",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány gramm réz nyerhető ki 94,8 gramm CuO redukciója során? MCu= 63,54g/mol MO= 16 g/mol",
"A": "75,73.",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány gramm réz nyerhető ki 94,8 gramm CuO redukciója során? MCu= 63,54g/mol MO= 16 g/mol",
"A": "75,73.",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Villamosipari anyagismeret",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány gramm réz nyerhető ki 77,2 gramm CuO redukciója során? MCu= 63,54g/mol MO= 16 g/mol",
"A": "61,67.",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány gramm réz nyerhető ki 77,2 gramm CuO redukciója során? MCu= 63,54g/mol MO= 16 g/mol",
"A": "61,67.",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Villamosipari anyagismeret",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány gramm réz nyerhető ki 35,1 gramm CuO redukciója során? MCu= 63,54g/mol MO= 16 g/mol",
"A": "28,04.",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány gramm réz nyerhető ki 35,1 gramm CuO redukciója során? MCu= 63,54g/mol MO= 16 g/mol",
"A": "28,04.",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Villamosipari anyagismeret",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Hány gramm oxigén fejlődik 94,1 gramm víz bontása során?",
"A": "83,64.",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Hány gramm oxigén fejlődik 94,1 gramm víz bontása során?",
"A": "83,64.",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Villamosipari anyagismeret",
"avg": 100
}
}
]

View file

@ -1,127 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"Q": "Jelölje ki azon címkéket, amely a HTML5 szabványban jelentek meg először!",
"A": "video, audio, nav, article, aside",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Jelölje ki azon címkéket, amely a HTML5 szabványban jelentek meg először!",
"A": "video, audio, nav, article, aside",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Webprogramozás",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Igaz-e a következő állítás? A rendezett listában a lista elem értékét a \"value\" attribútummal állíthatjuk.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Igaz-e a következő állítás? A rendezett listában a lista elem értékét a \"value\" attribútummal állíthatjuk.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Webprogramozás (PHP)",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Igaz-e a következő állítás? A táblázatban nincs kötött sorrendje a <thead>, a <tbody> és a <tfoot> címkéknek.",
"A": "Igaz",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Igaz-e a következő állítás? A táblázatban nincs kötött sorrendje a <thead>, a <tbody> és a <tfoot> címkéknek.",
"A": "Igaz",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Webprogramozás (PHP)",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "Mi a kódja a következő listának?",
"A": "<dl> <dt>Coffee</dt> <dd>Black hot drink</dd> <dt>Milk</dt> <dd>White cold drink</dd> </dl>",
"data": {
"type": "image",
"images": [
"definition_list.png"
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "Mi a kódja a következő listának?",
"A": "<dl> <dt>Coffee</dt> <dd>Black hot drink</dd> <dt>Milk</dt> <dd>White cold drink</dd> </dl>",
"data": {
"type": "image",
"images": [
"definition_list.png"
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Webprogramozás (PHP)",
"avg": 100
}
}
]

View file

@ -1,65 +0,0 @@
###################################################################################################################################################################################
QUESTION
{
"A": "3.",
"data": {
"type": "image",
"images": [
"capture-20150905-110748.jpg"
]
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"A": "3.",
"data": {
"type": "image",
"images": [
"capture-20150905-110748.jpg"
]
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": 100,
"matchedSubjName": "Általános géptan",
"avg": 100
}
}
]
###################################################################################################################################################################################
QUESTION
{
"Q": "A törtrészt jelölő prefixumok:",
"A": "nano, femto, atto.",
"data": {
"type": "simple"
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SAMES
[
{
"q": {
"Q": "A törtrészt jelölő prefixumok:",
"A": "nano, femto, atto.",
"data": {
"type": "simple"
}
},
"match": 100,
"detailedMatch": {
"qMatch": 100,
"aMatch": 100,
"dMatch": -1,
"matchedSubjName": "Általános géptan",
"avg": 100
}
}
]

View file

@ -1,22 +0,0 @@
const utils = require('../utils/utils.js')
const dataFile = '../public/data.json'
const motdFile = '../public/motd'
var p = GetParams()
if (p.length <= 0) {
console.log('no params!')
process.exit(0)
}
var param = p.join(' ')
console.log('param: ' + param)
var d = utils.ReadFile(dataFile)
var parsed = JSON.parse(d)
parsed.motd = param
utils.WriteFile(JSON.stringify(parsed), dataFile)
utils.WriteFile(parsed.motd, motdFile)
function GetParams() {
return process.argv.splice(2)
}

File diff suppressed because one or more lines are too long

View file

@ -1,3 +0,0 @@
2020-10-15 12:18:46|Search Data Worker error!
2020-10-15 12:18:46|Search Data Worker error! Exit code is not 0

View file

@ -1,21 +1,33 @@
module.exports = {
ReadFile: ReadFile,
ReadJSON: ReadJSON,
WriteFile: WriteFile,
writeFileAsync: WriteFileAsync,
AppendToFile: AppendToFile,
FileExists: FileExists,
CreatePath: CreatePath,
WatchFile: WatchFile,
ReadDir: ReadDir,
CopyFile: CopyFile,
GetDateString: GetDateString,
export default {
ReadFile,
ReadJSON,
WriteFile,
writeFileAsync,
AppendToFile,
FileExists,
CreatePath,
WatchFile,
ReadDir,
CopyFile,
GetDateString,
formatUrl,
}
import fs from 'fs'
import logger from '../utils/logger.js'
import logger from '../utils/logger'
function GetDateString(noTime) {
interface URLFormatOptions {
query: any
pathname?: string
}
// TODO
function formatUrl(options: URLFormatOptions): string {
console.log(options.pathname, options.query)
return options.pathname + JSON.stringify(options.query)
}
function GetDateString(noTime?: boolean): string {
const date = new Date()
if (noTime) {
@ -43,16 +55,16 @@ function GetDateString(noTime) {
}
}
function CopyFile(from, to) {
function CopyFile(from: string, to: string): void {
CreatePath(to)
fs.copyFileSync(from, to)
}
function ReadDir(path) {
function ReadDir(path: string): Array<string> {
return fs.readdirSync(path)
}
function ReadJSON(name) {
function ReadJSON(name: string): any {
try {
return JSON.parse(ReadFile(name))
} catch (err) {
@ -61,18 +73,18 @@ function ReadJSON(name) {
}
}
function ReadFile(name) {
function ReadFile(name: string): string {
if (!FileExists(name)) {
throw new Error('No such file: ' + name)
}
return fs.readFileSync(name, 'utf8')
}
function FileExists(path) {
function FileExists(path: string): boolean {
return fs.existsSync(path)
}
function WatchFile(file, callback) {
function WatchFile(file: string, callback: Function): void {
if (FileExists(file)) {
fs.watchFile(file, () => {
fs.readFile(file, 'utf8', (err, data) => {
@ -84,14 +96,11 @@ function WatchFile(file, callback) {
})
})
} else {
console.log(file + ' does not eadjsalék')
setTimeout(() => {
WatchFile(file)
}, 1000)
throw new Error(`${file} does not exits to watch`)
}
}
function CreatePath(path, onlyPath) {
function CreatePath(path: string, onlyPath?: boolean): void {
if (FileExists(path)) {
return
}
@ -114,12 +123,12 @@ function CreatePath(path, onlyPath) {
}
}
function WriteFile(content, path) {
function WriteFile(content: string, path: string): void {
CreatePath(path)
fs.writeFileSync(path, content)
}
function WriteFileAsync(content, path) {
function writeFileAsync(content: string, path: string): void {
CreatePath(path)
fs.writeFile(path, content, function(err) {
if (err) {
@ -131,7 +140,7 @@ function WriteFileAsync(content, path) {
})
}
function AppendToFile(data, file) {
function AppendToFile(data: string, file: string): void {
CreatePath(file)
try {
fs.appendFileSync(file, '\n' + data)

View file

@ -23,6 +23,7 @@
"exclude": [
"node_modules",
"submodules",
"devel"
"devel",
"src/standaloneUtils"
]
}