From f490b457cfffa7b94e87051ecfc697bfe2498ae0 Mon Sep 17 00:00:00 2001 From: jenz Date: Tue, 11 Aug 2026 13:31:08 +0200 Subject: [PATCH] initial repo creation --- .gitignore | 477 +++++++++++ README.md | 0 config.example.php | 33 + connect.php | 54 ++ css/style.css | 1274 ++++++++++++++++++++++++++++++ footer.php | 13 + functions_global.php | 917 +++++++++++++++++++++ functions_url.php | 236 ++++++ header.php | 177 +++++ images/banner.png | Bin 0 -> 51685 bytes images/country/ad.jpg | Bin 0 -> 504 bytes images/country/ae.jpg | Bin 0 -> 491 bytes images/country/af.jpg | Bin 0 -> 509 bytes images/country/ag.jpg | Bin 0 -> 522 bytes images/country/ai.jpg | Bin 0 -> 520 bytes images/country/al.jpg | Bin 0 -> 489 bytes images/country/am.jpg | Bin 0 -> 489 bytes images/country/an.jpg | Bin 0 -> 519 bytes images/country/ao.jpg | Bin 0 -> 492 bytes images/country/ar.jpg | Bin 0 -> 481 bytes images/country/as.jpg | Bin 0 -> 530 bytes images/country/at.jpg | Bin 0 -> 478 bytes images/country/au.jpg | Bin 0 -> 521 bytes images/country/aw.jpg | Bin 0 -> 487 bytes images/country/ax.jpg | Bin 0 -> 520 bytes images/country/az.jpg | Bin 0 -> 499 bytes images/country/ba.jpg | Bin 0 -> 529 bytes images/country/bb.jpg | Bin 0 -> 513 bytes images/country/bd.jpg | Bin 0 -> 506 bytes images/country/be.jpg | Bin 0 -> 492 bytes images/country/bf.jpg | Bin 0 -> 488 bytes images/country/bg.jpg | Bin 0 -> 479 bytes images/country/bh.jpg | Bin 0 -> 484 bytes images/country/bi.jpg | Bin 0 -> 535 bytes images/country/bj.jpg | Bin 0 -> 487 bytes images/country/bm.jpg | Bin 0 -> 502 bytes images/country/bn.jpg | Bin 0 -> 511 bytes images/country/bo.jpg | Bin 0 -> 480 bytes images/country/br.jpg | Bin 0 -> 535 bytes images/country/bs.jpg | Bin 0 -> 504 bytes images/country/bt.jpg | Bin 0 -> 502 bytes images/country/bv.jpg | Bin 0 -> 515 bytes images/country/bw.jpg | Bin 0 -> 482 bytes images/country/by.jpg | Bin 0 -> 502 bytes images/country/bz.jpg | Bin 0 -> 521 bytes images/country/ca.jpg | Bin 0 -> 504 bytes images/country/catalonia.jpg | Bin 0 -> 455 bytes images/country/cc.jpg | Bin 0 -> 507 bytes images/country/cd.jpg | Bin 0 -> 549 bytes images/country/cf.jpg | Bin 0 -> 513 bytes images/country/cg.jpg | Bin 0 -> 505 bytes images/country/ch.jpg | Bin 0 -> 508 bytes images/country/ci.jpg | Bin 0 -> 481 bytes images/country/ck.jpg | Bin 0 -> 516 bytes images/country/cl.jpg | Bin 0 -> 497 bytes images/country/cm.jpg | Bin 0 -> 488 bytes images/country/cn.jpg | Bin 0 -> 479 bytes images/country/co.jpg | Bin 0 -> 484 bytes images/country/cr.jpg | Bin 0 -> 497 bytes images/country/cs.jpg | Bin 0 -> 488 bytes images/country/cu.jpg | Bin 0 -> 520 bytes images/country/cv.jpg | Bin 0 -> 512 bytes images/country/cx.jpg | Bin 0 -> 523 bytes images/country/cy.jpg | Bin 0 -> 446 bytes images/country/cz.jpg | Bin 0 -> 497 bytes images/country/de.jpg | Bin 0 -> 486 bytes images/country/dj.jpg | Bin 0 -> 499 bytes images/country/dk.jpg | Bin 0 -> 489 bytes images/country/dm.jpg | Bin 0 -> 528 bytes images/country/do.jpg | Bin 0 -> 524 bytes images/country/dz.jpg | Bin 0 -> 482 bytes images/country/ec.jpg | Bin 0 -> 493 bytes images/country/ee.jpg | Bin 0 -> 480 bytes images/country/eg.jpg | Bin 0 -> 491 bytes images/country/eh.jpg | Bin 0 -> 517 bytes images/country/england.jpg | Bin 0 -> 493 bytes images/country/er.jpg | Bin 0 -> 520 bytes images/country/es.jpg | Bin 0 -> 489 bytes images/country/et.jpg | Bin 0 -> 505 bytes images/country/europeanunion.jpg | Bin 0 -> 462 bytes images/country/fam.jpg | Bin 0 -> 481 bytes images/country/fi.jpg | Bin 0 -> 500 bytes images/country/fj.jpg | Bin 0 -> 529 bytes images/country/fk.jpg | Bin 0 -> 507 bytes images/country/fm.jpg | Bin 0 -> 492 bytes images/country/fo.jpg | Bin 0 -> 502 bytes images/country/fr.jpg | Bin 0 -> 485 bytes images/country/ga.jpg | Bin 0 -> 501 bytes images/country/gb.jpg | Bin 0 -> 546 bytes images/country/gd.jpg | Bin 0 -> 515 bytes images/country/ge.jpg | Bin 0 -> 499 bytes images/country/gf.jpg | Bin 0 -> 485 bytes images/country/gh.jpg | Bin 0 -> 508 bytes images/country/gi.jpg | Bin 0 -> 491 bytes images/country/gl.jpg | Bin 0 -> 496 bytes images/country/gm.jpg | Bin 0 -> 496 bytes images/country/gn.jpg | Bin 0 -> 490 bytes images/country/gp.jpg | Bin 0 -> 483 bytes images/country/gq.jpg | Bin 0 -> 507 bytes images/country/gr.jpg | Bin 0 -> 498 bytes images/country/gs.jpg | Bin 0 -> 510 bytes images/country/gt.jpg | Bin 0 -> 496 bytes images/country/gu.jpg | Bin 0 -> 499 bytes images/country/gw.jpg | Bin 0 -> 494 bytes images/country/gy.jpg | Bin 0 -> 528 bytes images/country/hk.jpg | Bin 0 -> 496 bytes images/country/hm.jpg | Bin 0 -> 521 bytes images/country/hn.jpg | Bin 0 -> 491 bytes images/country/hr.jpg | Bin 0 -> 525 bytes images/country/ht.jpg | Bin 0 -> 488 bytes images/country/hu.jpg | Bin 0 -> 499 bytes images/country/id.jpg | Bin 0 -> 458 bytes images/country/ie.jpg | Bin 0 -> 488 bytes images/country/il.jpg | Bin 0 -> 494 bytes images/country/in.jpg | Bin 0 -> 494 bytes images/country/io.jpg | Bin 0 -> 521 bytes images/country/iq.jpg | Bin 0 -> 491 bytes images/country/ir.jpg | Bin 0 -> 488 bytes images/country/is.jpg | Bin 0 -> 526 bytes images/country/it.jpg | Bin 0 -> 481 bytes images/country/jm.jpg | Bin 0 -> 540 bytes images/country/jo.jpg | Bin 0 -> 509 bytes images/country/jp.jpg | Bin 0 -> 483 bytes images/country/ke.jpg | Bin 0 -> 510 bytes images/country/kg.jpg | Bin 0 -> 489 bytes images/country/kh.jpg | Bin 0 -> 514 bytes images/country/ki.jpg | Bin 0 -> 529 bytes images/country/km.jpg | Bin 0 -> 508 bytes images/country/kn.jpg | Bin 0 -> 525 bytes images/country/kp.jpg | Bin 0 -> 504 bytes images/country/kr.jpg | Bin 0 -> 492 bytes images/country/kw.jpg | Bin 0 -> 496 bytes images/country/ky.jpg | Bin 0 -> 503 bytes images/country/kz.jpg | Bin 0 -> 495 bytes images/country/la.jpg | Bin 0 -> 497 bytes images/country/lb.jpg | Bin 0 -> 498 bytes images/country/lc.jpg | Bin 0 -> 508 bytes images/country/li.jpg | Bin 0 -> 502 bytes images/country/lk.jpg | Bin 0 -> 492 bytes images/country/lr.jpg | Bin 0 -> 506 bytes images/country/ls.jpg | Bin 0 -> 512 bytes images/country/lt.jpg | Bin 0 -> 477 bytes images/country/lu.jpg | Bin 0 -> 488 bytes images/country/lv.jpg | Bin 0 -> 485 bytes images/country/ly.jpg | Bin 0 -> 468 bytes images/country/ma.jpg | Bin 0 -> 459 bytes images/country/mc.jpg | Bin 0 -> 471 bytes images/country/md.jpg | Bin 0 -> 509 bytes images/country/me.jpg | Bin 0 -> 513 bytes images/country/mg.jpg | Bin 0 -> 490 bytes images/country/mh.jpg | Bin 0 -> 518 bytes images/country/mk.jpg | Bin 0 -> 529 bytes images/country/ml.jpg | Bin 0 -> 485 bytes images/country/mm.jpg | Bin 0 -> 498 bytes images/country/mn.jpg | Bin 0 -> 494 bytes images/country/mo.jpg | Bin 0 -> 500 bytes images/country/mp.jpg | Bin 0 -> 520 bytes images/country/mq.jpg | Bin 0 -> 526 bytes images/country/mr.jpg | Bin 0 -> 500 bytes images/country/ms.jpg | Bin 0 -> 506 bytes images/country/mt.jpg | Bin 0 -> 455 bytes images/country/mu.jpg | Bin 0 -> 495 bytes images/country/mv.jpg | Bin 0 -> 489 bytes images/country/mw.jpg | Bin 0 -> 489 bytes images/country/mx.jpg | Bin 0 -> 488 bytes images/country/my.jpg | Bin 0 -> 498 bytes images/country/mz.jpg | Bin 0 -> 504 bytes images/country/na.jpg | Bin 0 -> 545 bytes images/country/nc.jpg | Bin 0 -> 520 bytes images/country/ne.jpg | Bin 0 -> 491 bytes images/country/nf.jpg | Bin 0 -> 504 bytes images/country/ng.jpg | Bin 0 -> 486 bytes images/country/ni.jpg | Bin 0 -> 500 bytes images/country/nl.jpg | Bin 0 -> 493 bytes images/country/no.jpg | Bin 0 -> 515 bytes images/country/np.jpg | Bin 0 -> 471 bytes images/country/nr.jpg | Bin 0 -> 497 bytes images/country/nu.jpg | Bin 0 -> 468 bytes images/country/nz.jpg | Bin 0 -> 497 bytes images/country/om.jpg | Bin 0 -> 504 bytes images/country/pa.jpg | Bin 0 -> 501 bytes images/country/pe.jpg | Bin 0 -> 479 bytes images/country/pf.jpg | Bin 0 -> 489 bytes images/country/pg.jpg | Bin 0 -> 520 bytes images/country/ph.jpg | Bin 0 -> 511 bytes images/country/pk.jpg | Bin 0 -> 490 bytes images/country/pl.jpg | Bin 0 -> 468 bytes images/country/pm.jpg | Bin 0 -> 525 bytes images/country/pn.jpg | Bin 0 -> 507 bytes images/country/pr.jpg | Bin 0 -> 518 bytes images/country/ps.jpg | Bin 0 -> 507 bytes images/country/pt.jpg | Bin 0 -> 499 bytes images/country/pw.jpg | Bin 0 -> 516 bytes images/country/py.jpg | Bin 0 -> 497 bytes images/country/qa.jpg | Bin 0 -> 501 bytes images/country/re.jpg | Bin 0 -> 485 bytes images/country/ro.jpg | Bin 0 -> 488 bytes images/country/rs.jpg | Bin 0 -> 496 bytes images/country/ru.jpg | Bin 0 -> 478 bytes images/country/rw.jpg | Bin 0 -> 496 bytes images/country/sa.jpg | Bin 0 -> 497 bytes images/country/sb.jpg | Bin 0 -> 532 bytes images/country/sc.jpg | Bin 0 -> 538 bytes images/country/scotland.jpg | Bin 0 -> 537 bytes images/country/sd.jpg | Bin 0 -> 497 bytes images/country/se.jpg | Bin 0 -> 525 bytes images/country/sg.jpg | Bin 0 -> 474 bytes images/country/sh.jpg | Bin 0 -> 500 bytes images/country/si.jpg | Bin 0 -> 489 bytes images/country/sj.jpg | Bin 0 -> 515 bytes images/country/sk.jpg | Bin 0 -> 512 bytes images/country/sl.jpg | Bin 0 -> 485 bytes images/country/sm.jpg | Bin 0 -> 500 bytes images/country/sn.jpg | Bin 0 -> 487 bytes images/country/so.jpg | Bin 0 -> 484 bytes images/country/sr.jpg | Bin 0 -> 503 bytes images/country/st.jpg | Bin 0 -> 513 bytes images/country/sv.jpg | Bin 0 -> 490 bytes images/country/sy.jpg | Bin 0 -> 478 bytes images/country/sz.jpg | Bin 0 -> 514 bytes images/country/tc.jpg | Bin 0 -> 511 bytes images/country/td.jpg | Bin 0 -> 497 bytes images/country/tf.jpg | Bin 0 -> 524 bytes images/country/tg.jpg | Bin 0 -> 495 bytes images/country/th.jpg | Bin 0 -> 479 bytes images/country/tj.jpg | Bin 0 -> 492 bytes images/country/tk.jpg | Bin 0 -> 517 bytes images/country/tl.jpg | Bin 0 -> 499 bytes images/country/tm.jpg | Bin 0 -> 508 bytes images/country/tn.jpg | Bin 0 -> 505 bytes images/country/to.jpg | Bin 0 -> 482 bytes images/country/tr.jpg | Bin 0 -> 498 bytes images/country/tt.jpg | Bin 0 -> 538 bytes images/country/tv.jpg | Bin 0 -> 528 bytes images/country/tw.jpg | Bin 0 -> 499 bytes images/country/tz.jpg | Bin 0 -> 539 bytes images/country/ua.jpg | Bin 0 -> 477 bytes images/country/ug.jpg | Bin 0 -> 503 bytes images/country/um.jpg | Bin 0 -> 509 bytes images/country/us.jpg | Bin 0 -> 504 bytes images/country/uy.jpg | Bin 0 -> 493 bytes images/country/uz.jpg | Bin 0 -> 515 bytes images/country/va.jpg | Bin 0 -> 472 bytes images/country/vc.jpg | Bin 0 -> 513 bytes images/country/ve.jpg | Bin 0 -> 507 bytes images/country/vg.jpg | Bin 0 -> 507 bytes images/country/vi.jpg | Bin 0 -> 488 bytes images/country/vn.jpg | Bin 0 -> 493 bytes images/country/vu.jpg | Bin 0 -> 507 bytes images/country/wales.jpg | Bin 0 -> 511 bytes images/country/wf.jpg | Bin 0 -> 502 bytes images/country/ws.jpg | Bin 0 -> 493 bytes images/country/ye.jpg | Bin 0 -> 480 bytes images/country/yt.jpg | Bin 0 -> 480 bytes images/country/za.jpg | Bin 0 -> 526 bytes images/country/zm.jpg | Bin 0 -> 506 bytes images/country/zw.jpg | Bin 0 -> 521 bytes images/country/zz.jpg | Bin 0 -> 492 bytes images/favicon.ico | Bin 0 -> 16958 bytes images/games/csource.png | Bin 0 -> 1314 bytes index.php | 315 ++++++++ js/kbans.js | 369 +++++++++ login-init.php | 16 + login-process.php | 111 +++ logout.php | 10 + logs.php | 200 +++++ manage.php | 234 ++++++ steam.php | 154 ++++ verify_steamid.php | 10 + 269 files changed, 4600 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 config.example.php create mode 100644 connect.php create mode 100644 css/style.css create mode 100644 footer.php create mode 100644 functions_global.php create mode 100644 functions_url.php create mode 100644 header.php create mode 100755 images/banner.png create mode 100644 images/country/ad.jpg create mode 100644 images/country/ae.jpg create mode 100644 images/country/af.jpg create mode 100644 images/country/ag.jpg create mode 100644 images/country/ai.jpg create mode 100644 images/country/al.jpg create mode 100644 images/country/am.jpg create mode 100644 images/country/an.jpg create mode 100644 images/country/ao.jpg create mode 100644 images/country/ar.jpg create mode 100644 images/country/as.jpg create mode 100644 images/country/at.jpg create mode 100644 images/country/au.jpg create mode 100644 images/country/aw.jpg create mode 100644 images/country/ax.jpg create mode 100644 images/country/az.jpg create mode 100644 images/country/ba.jpg create mode 100644 images/country/bb.jpg create mode 100644 images/country/bd.jpg create mode 100644 images/country/be.jpg create mode 100644 images/country/bf.jpg create mode 100644 images/country/bg.jpg create mode 100644 images/country/bh.jpg create mode 100644 images/country/bi.jpg create mode 100644 images/country/bj.jpg create mode 100644 images/country/bm.jpg create mode 100644 images/country/bn.jpg create mode 100644 images/country/bo.jpg create mode 100644 images/country/br.jpg create mode 100644 images/country/bs.jpg create mode 100644 images/country/bt.jpg create mode 100644 images/country/bv.jpg create mode 100644 images/country/bw.jpg create mode 100644 images/country/by.jpg create mode 100644 images/country/bz.jpg create mode 100644 images/country/ca.jpg create mode 100644 images/country/catalonia.jpg create mode 100644 images/country/cc.jpg create mode 100644 images/country/cd.jpg create mode 100644 images/country/cf.jpg create mode 100644 images/country/cg.jpg create mode 100644 images/country/ch.jpg create mode 100644 images/country/ci.jpg create mode 100644 images/country/ck.jpg create mode 100644 images/country/cl.jpg create mode 100644 images/country/cm.jpg create mode 100644 images/country/cn.jpg create mode 100644 images/country/co.jpg create mode 100644 images/country/cr.jpg create mode 100644 images/country/cs.jpg create mode 100644 images/country/cu.jpg create mode 100644 images/country/cv.jpg create mode 100644 images/country/cx.jpg create mode 100644 images/country/cy.jpg create mode 100644 images/country/cz.jpg create mode 100644 images/country/de.jpg create mode 100644 images/country/dj.jpg create mode 100644 images/country/dk.jpg create mode 100644 images/country/dm.jpg create mode 100644 images/country/do.jpg create mode 100644 images/country/dz.jpg create mode 100644 images/country/ec.jpg create mode 100644 images/country/ee.jpg create mode 100644 images/country/eg.jpg create mode 100644 images/country/eh.jpg create mode 100644 images/country/england.jpg create mode 100644 images/country/er.jpg create mode 100644 images/country/es.jpg create mode 100644 images/country/et.jpg create mode 100644 images/country/europeanunion.jpg create mode 100644 images/country/fam.jpg create mode 100644 images/country/fi.jpg create mode 100644 images/country/fj.jpg create mode 100644 images/country/fk.jpg create mode 100644 images/country/fm.jpg create mode 100644 images/country/fo.jpg create mode 100644 images/country/fr.jpg create mode 100644 images/country/ga.jpg create mode 100644 images/country/gb.jpg create mode 100644 images/country/gd.jpg create mode 100644 images/country/ge.jpg create mode 100644 images/country/gf.jpg create mode 100644 images/country/gh.jpg create mode 100644 images/country/gi.jpg create mode 100644 images/country/gl.jpg create mode 100644 images/country/gm.jpg create mode 100644 images/country/gn.jpg create mode 100644 images/country/gp.jpg create mode 100644 images/country/gq.jpg create mode 100644 images/country/gr.jpg create mode 100644 images/country/gs.jpg create mode 100644 images/country/gt.jpg create mode 100644 images/country/gu.jpg create mode 100644 images/country/gw.jpg create mode 100644 images/country/gy.jpg create mode 100644 images/country/hk.jpg create mode 100644 images/country/hm.jpg create mode 100644 images/country/hn.jpg create mode 100644 images/country/hr.jpg create mode 100644 images/country/ht.jpg create mode 100644 images/country/hu.jpg create mode 100644 images/country/id.jpg create mode 100644 images/country/ie.jpg create mode 100644 images/country/il.jpg create mode 100644 images/country/in.jpg create mode 100644 images/country/io.jpg create mode 100644 images/country/iq.jpg create mode 100644 images/country/ir.jpg create mode 100644 images/country/is.jpg create mode 100644 images/country/it.jpg create mode 100644 images/country/jm.jpg create mode 100644 images/country/jo.jpg create mode 100644 images/country/jp.jpg create mode 100644 images/country/ke.jpg create mode 100644 images/country/kg.jpg create mode 100644 images/country/kh.jpg create mode 100644 images/country/ki.jpg create mode 100644 images/country/km.jpg create mode 100644 images/country/kn.jpg create mode 100644 images/country/kp.jpg create mode 100644 images/country/kr.jpg create mode 100644 images/country/kw.jpg create mode 100644 images/country/ky.jpg create mode 100644 images/country/kz.jpg create mode 100644 images/country/la.jpg create mode 100644 images/country/lb.jpg create mode 100644 images/country/lc.jpg create mode 100644 images/country/li.jpg create mode 100644 images/country/lk.jpg create mode 100644 images/country/lr.jpg create mode 100644 images/country/ls.jpg create mode 100644 images/country/lt.jpg create mode 100644 images/country/lu.jpg create mode 100644 images/country/lv.jpg create mode 100644 images/country/ly.jpg create mode 100644 images/country/ma.jpg create mode 100644 images/country/mc.jpg create mode 100644 images/country/md.jpg create mode 100644 images/country/me.jpg create mode 100644 images/country/mg.jpg create mode 100644 images/country/mh.jpg create mode 100644 images/country/mk.jpg create mode 100644 images/country/ml.jpg create mode 100644 images/country/mm.jpg create mode 100644 images/country/mn.jpg create mode 100644 images/country/mo.jpg create mode 100644 images/country/mp.jpg create mode 100644 images/country/mq.jpg create mode 100644 images/country/mr.jpg create mode 100644 images/country/ms.jpg create mode 100644 images/country/mt.jpg create mode 100644 images/country/mu.jpg create mode 100644 images/country/mv.jpg create mode 100644 images/country/mw.jpg create mode 100644 images/country/mx.jpg create mode 100644 images/country/my.jpg create mode 100644 images/country/mz.jpg create mode 100644 images/country/na.jpg create mode 100644 images/country/nc.jpg create mode 100644 images/country/ne.jpg create mode 100644 images/country/nf.jpg create mode 100644 images/country/ng.jpg create mode 100644 images/country/ni.jpg create mode 100644 images/country/nl.jpg create mode 100644 images/country/no.jpg create mode 100644 images/country/np.jpg create mode 100644 images/country/nr.jpg create mode 100644 images/country/nu.jpg create mode 100644 images/country/nz.jpg create mode 100644 images/country/om.jpg create mode 100644 images/country/pa.jpg create mode 100644 images/country/pe.jpg create mode 100644 images/country/pf.jpg create mode 100644 images/country/pg.jpg create mode 100644 images/country/ph.jpg create mode 100644 images/country/pk.jpg create mode 100644 images/country/pl.jpg create mode 100644 images/country/pm.jpg create mode 100644 images/country/pn.jpg create mode 100644 images/country/pr.jpg create mode 100644 images/country/ps.jpg create mode 100644 images/country/pt.jpg create mode 100644 images/country/pw.jpg create mode 100644 images/country/py.jpg create mode 100644 images/country/qa.jpg create mode 100644 images/country/re.jpg create mode 100644 images/country/ro.jpg create mode 100644 images/country/rs.jpg create mode 100644 images/country/ru.jpg create mode 100644 images/country/rw.jpg create mode 100644 images/country/sa.jpg create mode 100644 images/country/sb.jpg create mode 100644 images/country/sc.jpg create mode 100644 images/country/scotland.jpg create mode 100644 images/country/sd.jpg create mode 100644 images/country/se.jpg create mode 100644 images/country/sg.jpg create mode 100644 images/country/sh.jpg create mode 100644 images/country/si.jpg create mode 100644 images/country/sj.jpg create mode 100644 images/country/sk.jpg create mode 100644 images/country/sl.jpg create mode 100644 images/country/sm.jpg create mode 100644 images/country/sn.jpg create mode 100644 images/country/so.jpg create mode 100644 images/country/sr.jpg create mode 100644 images/country/st.jpg create mode 100644 images/country/sv.jpg create mode 100644 images/country/sy.jpg create mode 100644 images/country/sz.jpg create mode 100644 images/country/tc.jpg create mode 100644 images/country/td.jpg create mode 100644 images/country/tf.jpg create mode 100644 images/country/tg.jpg create mode 100644 images/country/th.jpg create mode 100644 images/country/tj.jpg create mode 100644 images/country/tk.jpg create mode 100644 images/country/tl.jpg create mode 100644 images/country/tm.jpg create mode 100644 images/country/tn.jpg create mode 100644 images/country/to.jpg create mode 100644 images/country/tr.jpg create mode 100644 images/country/tt.jpg create mode 100644 images/country/tv.jpg create mode 100644 images/country/tw.jpg create mode 100644 images/country/tz.jpg create mode 100644 images/country/ua.jpg create mode 100644 images/country/ug.jpg create mode 100644 images/country/um.jpg create mode 100644 images/country/us.jpg create mode 100644 images/country/uy.jpg create mode 100644 images/country/uz.jpg create mode 100644 images/country/va.jpg create mode 100644 images/country/vc.jpg create mode 100644 images/country/ve.jpg create mode 100644 images/country/vg.jpg create mode 100644 images/country/vi.jpg create mode 100644 images/country/vn.jpg create mode 100644 images/country/vu.jpg create mode 100644 images/country/wales.jpg create mode 100644 images/country/wf.jpg create mode 100644 images/country/ws.jpg create mode 100644 images/country/ye.jpg create mode 100644 images/country/yt.jpg create mode 100644 images/country/za.jpg create mode 100644 images/country/zm.jpg create mode 100644 images/country/zw.jpg create mode 100644 images/country/zz.jpg create mode 100644 images/favicon.ico create mode 100644 images/games/csource.png create mode 100644 index.php create mode 100644 js/kbans.js create mode 100644 login-init.php create mode 100644 login-process.php create mode 100644 logout.php create mode 100644 logs.php create mode 100644 manage.php create mode 100644 steam.php create mode 100644 verify_steamid.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6c4723b --- /dev/null +++ b/.gitignore @@ -0,0 +1,477 @@ +##### Windows +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +##### Linux +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +##### MacOS +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +##### Backup +*.bak +*.gho +*.ori +*.orig +*.tmp + +##### GPG +secring.* + +##### Dropbox +# Dropbox settings and caches +.dropbox +.dropbox.attr +.dropbox.cache + +##### SynopsysVCS +# Waveform formats +*.vcd +*.vpd +*.evcd +*.fsdb + +# Default name of the simulation executable. A different name can be +# specified with this switch (the associated daidir database name is +# also taken from here): -o / +simv + +# Generated for Verilog and VHDL top configs +simv.daidir/ +simv.db.dir/ + +# Infrastructure necessary to co-simulate SystemC models with +# Verilog/VHDL models. An alternate directory may be specified with this +# switch: -Mdir= +csrc/ + +# Log file - the following switch allows to specify the file that will be +# used to write all messages from simulation: -l +*.log + +# Coverage results (generated with urg) and database location. The +# following switch can also be used: urg -dir .vdb +simv.vdb/ +urgReport/ + +# DVE and UCLI related files. +DVEfiles/ +ucli.key + +# When the design is elaborated for DirectC, the following file is created +# with declarations for C/C++ functions. +vc_hdrs.h + +##### SVN +.svn/ + +##### Mercurial +.hg/ +.hgignore +.hgsigs +.hgsub +.hgsubstate +.hgtags + +##### Bazaar +.bzr/ +.bzrignore + +##### CVS +/CVS/* +**/CVS/* +.cvsignore +*/.cvsignore + +##### TortoiseGit +# Project-level settings +/.tgitconfig + +##### PuTTY +# Private key +*.ppk + +##### Vim +# Swap +[._]*.s[a-v][a-z] +!*.svg # comment out if you don't need vector files +[._]*.sw[a-p] +[._]s[a-rt-v][a-z] +[._]ss[a-gi-z] +[._]sw[a-p] + +# Session +Session.vim +Sessionx.vim + +# Temporary +.netrwhist +*~ +# Auto-generated tag files +tags +# Persistent undo +[._]*.un~ + +##### Emacs +# -*- mode: gitignore; -*- +*~ +\#*\# +/.emacs.desktop +/.emacs.desktop.lock +*.elc +auto-save-list +tramp +.\#* + +# Org-mode +.org-id-locations +*_archive + +# flymake-mode +*_flymake.* + +# eshell files +/eshell/history +/eshell/lastdir + +# elpa packages +/elpa/ + +# reftex files +*.rel + +# AUCTeX auto folder +/auto/ + +# cask packages +.cask/ +dist/ + +# Flycheck +flycheck_*.el + +# server auth directory +/server/ + +# projectiles files +.projectile + +# directory configuration +.dir-locals.el + +# network security +/network-security.data + +##### SublimeText +# Cache files for Sublime Text +*.tmlanguage.cache +*.tmPreferences.cache +*.stTheme.cache + +# Workspace files are user-specific +*.sublime-workspace + +# Project files should be checked into the repository, unless a significant +# proportion of contributors will probably not be using Sublime Text +# *.sublime-project + +# SFTP configuration file +sftp-config.json +sftp-config-alt*.json + +# Package control specific files +Package Control.last-run +Package Control.ca-list +Package Control.ca-bundle +Package Control.system-ca-bundle +Package Control.cache/ +Package Control.ca-certs/ +Package Control.merged-ca-bundle +Package Control.user-ca-bundle +oscrypto-ca-bundle.crt +bh_unicode_properties.cache + +# Sublime-github package stores a github token in this file +# https://packagecontrol.io/packages/sublime-github +GitHub.sublime-settings + +##### Notepad++ +# Notepad++ backups # +*.bak + +##### TextMate +*.tmproj +*.tmproject +tmtags + +##### VisualStudioCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +##### NetBeans +**/nbproject/private/ +**/nbproject/Makefile-*.mk +**/nbproject/Package-*.bash +build/ +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ + +##### JetBrains +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +##### Eclipse +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# CDT- autotools +.autotools + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Annotation Processing +.apt_generated/ +.apt_generated_test/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +# Uncomment this line if you wish to ignore the project description file. +# Typically, this file would be tracked if it contains build/dependency configurations: +#.project + +##### Dreamweaver +# DW Dreamweaver added files +_notes +_compareTemp +configs/ +dwsync.xml +dw_php_codehinting.config +*.mno + +##### CodeKit +# General CodeKit files to ignore +config.codekit +config.codekit3 +/min + +##### Gradle +.gradle +**/build/ +!src/**/build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +# Cache of project +.gradletasknamecache + +# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 +# gradle/wrapper/gradle-wrapper.properties + +##### Composer +composer.phar +/vendor/ + +# Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control +# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file +composer.lock + +##### PHP CodeSniffer +# gitignore for the PHP Codesniffer framework +# website: https://github.com/squizlabs/PHP_CodeSniffer +# +# Recommended template: PHP.gitignore + +/wpcs/* + +##### SASS +.sass-cache/ +*.css.map +*.sass.map +*.scss.map + +##### Project related +config.php diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/config.example.php b/config.example.php new file mode 100644 index 0000000..7c17474 --- /dev/null +++ b/config.example.php @@ -0,0 +1,33 @@ + diff --git a/connect.php b/connect.php new file mode 100644 index 0000000..a9e125d --- /dev/null +++ b/connect.php @@ -0,0 +1,54 @@ + diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..fb5ba64 --- /dev/null +++ b/css/style.css @@ -0,0 +1,1274 @@ +@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;700;900&display=swap'); + +/** + * Variable + */ +:root { + --layout_main_code--color: 26, 122, 191; + --layout_main--color: rgb(var(--layout_main_code--color)); + --layout_main--color_0_3: rgba(var(--layout_main_code--color), 0.3); + --layout_main--color_0_15: rgba(var(--layout_main_code--color), 0.15); + + --theme-background: #0f1015; + --theme-link: var(--layout_main--color); + --theme-text: #efefef; + --theme-text_light: #bdbdbd; + --theme-text_light-hover: #fff; + --theme-area_background_light: rgba(19, 20, 27, 1); + + --box-shadow: none; + --box--backgroundColor: var(--theme-area_background_light); + --box-shadow--child: 0 0 0 1px rgba(147, 161, 181, 0.2), 0 0 40px 0 transparent; + + --backdrop-background: rgba(19, 20, 27, 0.65); + --backdrop-text_color: #ffffff; + + --input--desc: #98a3ad; + --input-disabled: rgba(26, 122, 191, 0.50); + + --button-infos: #e06d22; + --button-light: #22242f; + --button-success: #267b3c; + --button-important: #ca1e1e; + --button-light-text: #ffffff; + --button--background-hover: rgba(255, 255, 255, 0.08); + + --button-text-color: #edf0f1; + --button-background-color: rgba(0, 136, 169, 1); + --button-background-hover: rgba(87, 118, 126, 0.8); + + --color-expired-: 56, 122, 98; + --color-active-: 221, 107, 32; + --color-permanent-: 197, 48, 48; + + --container--width: 1830px; + --line-hr: rgba(255, 255, 255, 0.1); +} + +/** + * Global + */ +* { + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html { + height: 100%; + font-size: 10px; +} + +body { + font-family: 'Poppins', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, + 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; + font-size: 1.3rem; + line-height: 1.5; + height: 100%; + background-color: var(--theme-area_background_light); + margin: 0; + cursor: inherit !important; +} + +/** + * Header + */ +.header1 { + display: flex; + position: fixed; + top: 0; + width: 100%; + z-index: 1; + + justify-content: space-between; + align-items: center; + height: 60px; + padding: 17px; + background-color: rgba(0, 0, 0, 0.5); + border: none; +} + +.header1-icons { + display: inline-block; + order: 1; +} + +.header1-icons a:hover { + text-decoration: none; +} + +.header2 { + margin-top: 1.4cm; + display: flex; + width: 100%; + justify-content: space-between; + align-items: center; + height: 100px; + padding: 10px; + border: none; +} + +.header3 { + flex: 1 auto; + display: block; + height: 100%; + width: 20%; + padding: 2px; +} + +.header3 ul { + width: 100%; + height: 100%; + list-style: none; +} + +.header3 ul li { + margin-top: 8px; + position: relative; + width: 100%; + height: 46px; +} + +.header3 ul li a:hover, +.header3 ul li a:focus { + text-decoration: none; + box-shadow: inset 400px 0 0 0 rgba(0, 136, 169, 0.2); +} + +/** + * Login + */ +.login { + display: inline-block; + order: 2; +} + +.login p { + color: var(--theme-text); + font-size: 13px; + display: flex; + justify-content: space-between; + align-items: center; +} + +.login a { + display: inline-block; +} + +.logo { + cursor: pointer; + order: 1; + margin-right: auto; +} + +/** + * Search Bar + */ +.search_input { + cursor: pointer; + order: 2; + display: inline-block; + text-align: center; + vertical-align: middle; + background-color: var(--box--backgroundColor); + width: 30%; + height: 100%; +} + +.search_input p { + color: var(--theme-text); + font-size: 13px; +} + +.search_input::after { + content: ""; + clear: both; + display: table; +} + +.input-header-search { + width: 300px; + height: 40px; + margin-top: 0.4cm; +} + +.input { + border: 2px solid var(--button-light); + ; + border-radius: 4px; + font-size: 15px; + padding: 5px; + color: var(--theme-text); + background-color: var(--box--backgroundColor); +} + +.input:focus { + outline: none; + border-color: #008afc; + box-shadow: 0 0 15px #008afc; + transition: box-shadow 0.2s, border-color 0.2s; +} + +#search_icon { + cursor: pointer; + background-color: var(--button-background-color); + color: var(--theme-text); + width: 40px; + height: 40px; + border: 0; + border-radius: 3px; + font-size: 15px; +} + +.body_content { + width: 100%; + height: 100%; + display: flex; + + flex-wrap: wrap; + align-items: flex-start; +} + +.not-active { + display: block; + padding: 15px 25px; + color: var(--theme-text_light); + position: relative; + z-index: 1; + overflow: hidden; + font-size: 15px; + transition: all 0.5s ease 0s; +} + +.active { + display: block; + padding: 15px 25px; + color: var(--theme-text_light); + position: relative; + z-index: 1; + overflow: hidden; + font-size: 15px; + transition: all 0.5s ease 0s; + border: none; + border-left: 5px var(--button-background-color) solid; +} + +/** + * Breadcrumb + */ +.breadcrumb { + font-size: 13px; + font-weight: 400; + padding: 10px 0; + margin-bottom: 20px; + margin-left: 1.5%; +} + +.breadcrumb>*:last-child { + font-weight: bold; +} + +.fa-angle-right:before { + color: white; +} + +/** + * Container + */ +.container { + flex: 2 auto; + display: block; + justify-content: center; + align-items: center; + width: 80%; + height: auto; + background-color: var(--theme-background); +} + +.container-header { + margin-top: 10px; +} + +.container-header>h1 { + font-size: 24px; + font-weight: bold; + line-height: 1.2; + letter-spacing: -0.02em; + margin: 0; + margin-left: 1.5%; + color: var(--theme-text); +} + +.container-header p { + color: var(--theme-link); + font-weight: bold; + font-size: 25px; + margin-left: 1.5%; +} + +.container-box1 { + border-radius: 7px; + margin-top: 20px; + margin-left: 1.5%; + width: 97%; + height: 40px; + display: flex; + justify-content: space-between; + align-items: center; + background-color: var(--theme-area_background_light); +} + +.container-box1 .order1 { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + order: 1; + color: var(--theme-text); + font-size: 12px; +} + +.container-box1 .order2 { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + order: 2; + color: var(--theme-text); + font-size: 12px; + line-height: 26px; +} + +.container-search { + border-radius: 7px; + margin-top: 10px; + margin-left: 1.5%; + width: 97%; + height: 40px; + display: flex; + justify-content: space-between; + align-items: center; + background-color: var(--theme-area_background_light); +} + +.search-button { + text-align: center; + cursor: pointer; + width: 97%; + margin-left: 1.5%; + height: 25px; + background-color: var(--theme-area_background_light); + transition: all 0.5s ease 0s; +} + +.search-button p { + color: var(--theme-text); + font-size: 13.5px; + font-weight: bold; +} + +.search-button:hover { + background-color: rgba(0, 136, 169, 0.2); +} + +/* +.container-search .search-button p { + color: var(--theme-text); + font-size: 13px; +} +*/ + +/* ERROR BOX */ +.error-box { + border-radius: 7px; + margin-top: 20px; + margin-bottom: 20px; + margin-left: 1.5%; + width: 97%; + height: auto; + align-items: center; + background-color: var(--theme-area_background_light); + text-align: center; + color: red; + font-size: 25px; +} + +/* CONTAINER 2 */ +.container-box2 { + border-radius: 7px; + margin-top: 20px; + margin-bottom: 20px; + margin-left: 1.5%; + width: 97%; + height: auto; + display: flex; + justify-content: space-between; + align-items: center; + background-color: var(--theme-area_background_light); +} + +.container-box2-table { + margin-top: 20px; + margin-bottom: 20px; + margin-left: 1.5%; + width: 97%; + height: auto; +} + +a { + -webkit-transition: color 0.2s ease; + transition: color 0.2s ease; + color: var(--theme-link); + text-decoration: none; +} + +a:hover { + text-decoration: revert; +} + +/** + * Layout + */ +.layout_container { + max-width: var(--container--width); + padding: 0 15px; + margin: 0 auto; + position: relative; +} + +.layout_box { + -webkit-box-shadow: var(--box-shadow); + box-shadow: var(--box-shadow); + border-radius: var(--border--radius); + background-color: var(--box--backgroundColor); +} + +.layout_box_title { + background-color: var(--layout_main--color); + padding: 16px; + border-top-left-radius: inherit; + border-top-right-radius: inherit; + color: #fff; + border-radius: var(--border--radius); +} + +li.layout_box_title { + list-style-type: none; +} + +.layout_box_title h2, +.layout_box_title h3, +.layout_box_title h4 { + padding: 0; + margin: 0; + color: #fff; + font-size: 16px; + font-weight: bold; +} + +.layout_box_small { + width: 98%; + max-width: 450px; +} + +.layout_box_medium { + width: 98%; + max-width: 700px; +} + +.layout_box-child { + -webkit-box-shadow: var(--box-shadow--child); + box-shadow: var(--box-shadow--child); + border-radius: var(--radius-3); +} + +.layout_topBar { + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 1000; + background-color: var(--backdrop-background); + -webkit-backdrop-filter: var(--backdrop-filter-value); + backdrop-filter: var(--backdrop-filter-value); + color: var(--backdrop-text_color); + -webkit-box-shadow: 0 0 40px 0 rgba(56, 55, 93, 0.3); + box-shadow: 0 0 40px 0 rgba(56, 55, 93, 0.3); + padding: 10px 0; +} + +/** + * Footer + */ +.footer { + background-color: var(--box--backgroundColor); + color: var(--theme-text); + width: 100%; +} + +.footer>.layout_container { + padding: 20px 15px; +} + +.footer a { + font-weight: bold; +} + +/** + * Buttons + */ +.button, +.ok { + display: block; + font-size: 14px; + font-weight: 400; + text-align: center; + font-family: inherit; + padding: 10px 20px; + border: none; + border-radius: 6px; + color: #fff !important; + position: relative; + z-index: 1; + overflow: hidden; + cursor: pointer; + border: 0; +} + +.button a, +.ok a { + color: inherit; +} + +.button a:hover, +.ok a:hover { + text-decoration: none; +} + +.button:hover, +.ok:hover { + text-decoration: none; +} + +.button::after, +.ok::after { + content: ''; + position: absolute; + z-index: -1; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: var(--button--background-hover); + -webkit-transform: scaleX(0); + transform: scaleX(0); + height: 100%; + -webkit-transition-property: -webkit-transform; + transition-property: -webkit-transform; + transition-property: transform; + transition-property: transform, -webkit-transform; + -webkit-transition-duration: 0.7s; + transition-duration: 0.7s; + -webkit-transition-timing-function: ease-out; + transition-timing-function: ease-out; + -webkit-transform-origin: left; + transform-origin: left; +} + +.button:hover::after, +.ok:hover::after { + -webkit-transform: scaleX(1); + transform: scaleX(1); + -webkit-transition-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66); + transition-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66); +} + +.button-success, +.ok-success { + background-color: var(--button-success); +} + +.button-infos, +.ok-infos { + background-color: var(--button-infos); +} + +.button-important, +.ok-important { + background-color: var(--button-important); +} + +.button-primary, +.ok-primary { + background-color: var(--layout_main--color); +} + +.button-light, +.ok-light { + background-color: var(--button-light); + color: var(--button-light-text) !important; +} + +.button\:line, +.ok\:line { + display: inline-block; +} + +.button\:full, +.ok\:full { + width: 100%; +} + +.kban-buttons { + display: inline-block; + order: 1; +} + +.kban-buttons button { + margin-top: 10px; + display: block; + width: 170px; + position: relative; + z-index: 1; + overflow: hidden; + font-size: 14px; + font-weight: 400; + text-align: center; + font-family: inherit; +} + +.kban-form-button { + width: 100%; + margin-bottom: 10px; + margin-top: 20px; +} + +/** + * Table + */ +.table { + width: 100%; + height: 100%; +} + +.table table { + width: 100%; + border-spacing: 0; +} + +.table table thead { + text-align: left; + background-color: var(--layout_main--color); + font-weight: bold; + color: #fff; +} + +.table table thead th { + padding: 5px; +} + +.table table thead th:first-child { + border-top-left-radius: 5px; +} + +.table table thead th:last-child { + border-top-right-radius: 5px; +} + +.table table tbody { + font-size: 13px; + text-align: left; + cursor: pointer; + -webkit-transition: background-color 0.2s ease; + transition: background-color 0.2s ease; +} + +.table table tbody td { + padding: 10px; + color: var(--theme-text); +} + +.table_hide>td { + padding: 0 !important; +} + +/** + * Row + */ +.row-expired .row-length { + color: rgba(var(--color-expired-)); + background-color: rgba(var(--color-expired-), 0.1); +} + +.row-expired:hover { + background-color: rgba(var(--color-expired-), 0.3); + transition: background 1s, box-shadow 0.2s; +} + +.row-permanent .row-length { + color: rgba(var(--color-permanent-)); + background-color: rgba(var(--color-permanent-), 0.1); +} + +.row-permanent:hover { + background-color: rgba(var(--color-permanent-), 0.3); + transition: background 1s, box-shadow 0.2s; +} + +.row-active .row-length { + color: rgba(var(--color-active-)); + background-color: rgba(var(--color-active-), 0.1); +} + +.row-active:hover { + background-color: rgba(var(--color-active-), 0.3); + transition: background 1s, box-shadow 0.2s; +} + +.row-expired:active, +.row-active:active, +.row-permanent:active { + background-color: #1d307c; +} + +.row-block { + display: none; + width: 100%; + height: auto; + padding-bottom: 10px; + justify-content: space-between; +} + +/** + * kban Details + */ +.kban_details { + margin-top: 5px; + margin-left: 10px; + list-style: none; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + order: 2; +} + +.kban_details li { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 5px 0; + -webkit-box-flex: 0; + -ms-flex: 0 1 100%; + flex: 0 1 100%; + overflow: hidden; +} + +.kban_details li>span { + display: block; +} + +.kban_details li>span:first-child { + color: white; + -webkit-box-flex: 0; + -ms-flex: 0 0 200px; + flex: 0 0 200px; +} + +.kban_details li>span:last-child { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} + +.kban_details li>span:last-child>span { + -webkit-box-flex: 0; + -ms-flex: 0 1 99%; + flex: 0 1 99%; +} + +/** + * Form + */ +form { + width: 100%; + height: 100%; +} + +.kban-form { + background-color: var(--theme-background); + margin-top: 50px; + margin-bottom: 20px; + margin-left: 30%; + width: 40%; + height: 90%; + display: block; + border-radius: 7px; + + align-items: center; +} + +.kban-form .header { + background-color: var(--button-background-color); + width: 100%; + height: 10%; + display: flex; + justify-content: center; + align-items: center; + + border-top-left-radius: 7px; + border-top-right-radius: 7px; +} + +.kban-form .header p { + margin-left: 5px; + color: var(--theme-text); + font-weight: bold; + font-size: 22px; +} + +.kban-form .border { + margin-top: 6px; + width: 100%; + height: 4px; + background-color: var(--theme-area_background_light); +} + +.kban-form .input-group { + margin-top: 20px; + display: block; + width: 80%; + margin-left: 10%; + height: auto; +} + +.kban-form label { + color: var(--theme-text_light); + font-weight: bold; + font-size: 15px; + display: block; +} + +form[action="index.php"] p { + -webkit-transition: color 0.2s ease; + transition: color 0.2s ease; + color: var(--theme-link); + text-decoration: none; +} + +form[action="index.php"] p:hover { + text-decoration: underline; +} + +/** + * Add - Edit kban + */ +input[disabled] { + background-color: var(--theme-background); + opacity: 1; + color: var(--input-disabled); + border: none; +} + +.kban-input { + display: block; + height: 35px; + width: 100%; +} + +.add-select { + height: 35px; + width: 300px; +} + +.edit-select { + height: 35px; + width: 100px; + display: inline-block; +} + +.select { + border: 2px solid var(--button-light); + ; + border-radius: 4px; + font-size: 15px; + padding: 5px; + color: var(--theme-text); + background-color: var(--box--backgroundColor); +} + +.select:focus, +.select:hover { + outline: none; + border-color: #008afc; + box-shadow: 0 0 15px #008afc; + transition: box-shadow 0.2s, border-color 0.2s; +} + +.error { + margin-top: 10px; + width: 100%; + text-align: center; +} + +.error p { + text-align: center; + color: red; + font-size: 15px; + font-weight: bold; +} + +/** + * Search pop-up + */ +.search-modal-body { + display: none; + position: fixed; + z-index: 1; + left: 0; + top: 0; + height: 100%; + width: 100%; + overflow: auto; + background-color: rgba(0, 0, 0, 0.5); + + transition: all 0.4s ease 0s; +} + +.search-modal { + overflow: hidden; + margin: 10% auto; + width: 40%; + height: 275px; + box-shadow: 0 5px 8px 0 rgba(0, 0, 0, 0.2), 0 7px 20px 0 rgba(0, 0, 0, 0.17); + animation-name: modalopen; + animation-duration: 1s; + + background-color: var(--theme-area_background_light); +} + +.search-modal .header { + width: 100%; + height: 15%; + + border-top-left-radius: 7px; + border-top-right-radius: 7px; + + display: flex; + justify-content: space-between; + align-items: center; + background-color: var(--button-background-color); +} + +.search-modal .input-group { + margin-top: 20px; + display: block; + width: 80%; + height: auto; + margin-left: 10%; + } + +.search-modal .header p { + order: 1; + margin-left: 2.5%; + font-size: 20px; + font-weight: bold; + color: var(--theme-text); +} + +.search-modal .search-modal-btn-close { + order: 2; + margin-right: 2.5%; + cursor: pointer; + transition: all 0.5s ease 0s; +} + +.search-modal .search-modal-btn-close:hover { + color: var(--button-important); +} + +.search-modal-input { + display: block; + height: 35px; + width: 100%; +} + +.search-modal label { + display: block; + color: var(--theme-text_light); + font-weight: bold; + font-size: 15px; +} + +@keyframes modalopen { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} + +/** + * Fade Effect + */ +@-webkit-keyframes fadeIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +@keyframes fadeIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +/** + * Scrollbar + */ +::-webkit-scrollbar { + width: 10px; +} + +::-webkit-scrollbar-track { + background-color: var(--theme-area_background_light); +} + +::-webkit-scrollbar-thumb { + background: var(--button-background-color); +} + +/** + * Social Icons + */ +#steam_group { + padding: 5px; + border-radius: 1cm; + background-color: #1b2838 !important; + color: white; + font-size: 20px; + cursor: pointer; + transition: all 0.3s ease 0s; +} +#steam_group i { + margin-left: 5px; +} + +#discord { + margin-left: 10px; + border-radius: 1cm; + padding: 5px 5px; + background-color: #7289da !important; + color: white; + font-size: 20px; + border: none; + border-radius: 50px; + cursor: pointer; + text-align: center; + transition: all 0.3s ease 0s; +} + +/* TODO: Allow the user to change the theme +#user_action_change_dark { + color: yellow; + font-size: 20px; +} +*/ + +/** + * Flex + */ +.flex { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: space-evenly; + -ms-flex-pack: space-evenly; + justify-content: space-evenly; +} + +.flex-jc\:left { + justify-content: left; +} + +.flex-jc\:center { + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} + +.flex-jc\:right { + justify-content: right; +} + +.flex-jc\:space-between { + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} + +.flex-jc\:end { + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; +} + +.flex-jc\:start { + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.flex-ai\:center { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.flex-ai\:start { + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; +} + +.flex-ai\:end { + -webkit-box-align: end; + -ms-flex-align: end; + align-items: flex-end; +} + +.flex-fd\:column { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} + +.flex-wrap\:wrap { + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +.flex\:11 { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + width: 100%; +} + +/** + * Others - Misc + */ +div span.left, +div span.right { + display: inline-block; + width: 50%; +} + +span.left { + float: left; +} + +span.right { + float: right; + text-align: right; +} + +.text\:center { + text-align: center; +} + +.text\:left { + text-align: left; +} + +.text\:right { + text-align: right; +} + +.text\:italic { + font-style: italic; +} + +.text\:bold { + font-weight: bold; +} + +/* - Action Window - */ +.kban-action-window { + display: none; + position: fixed; + z-index: 1; + left: 0; + top: 1; + height: auto; + width: 30%; + margin-top: 60px; + margin-left: 35%; + overflow: hidden; + box-shadow: 0 5px 8px 0 rgba(0, 0, 0, 0.2), 0 7px 20px 0 rgba(0, 0, 0, 0.17); + animation-name: modalopen; + animation-duration: 1s; + background-color: var(--theme-area_background_light); + transition: all 0.4s ease 0s; +} + +.kban-action-window .header { + border-top-left-radius: 5px; + border-top-right-radius: 5px; + + width: 100%; + height: 18%; + background-color: var(--button-background-color); + display: block; + position: relative; + text-align: center; +} + +.kban-action-window .header p { + color: white; + font-size: 30px; +} + +.kban-action-window .info { + width: 100%; + height: auto; + display: block; + position: relative; +} + +.kban-action-window .info .kban_details span { + color: white; + font-weight: bold; +} + +.kban-action-window .info-footer { + width: 100%; + height: 30%; + background-color: var(--box--backgroundColor); + display: block; +} + +.kban-action-window .info-footer button { + float: right; + margin-right: 10px; +} diff --git a/footer.php b/footer.php new file mode 100644 index 0000000..8f5ac37 --- /dev/null +++ b/footer.php @@ -0,0 +1,13 @@ + + + diff --git a/functions_global.php b/functions_global.php new file mode 100644 index 0000000..3349d64 --- /dev/null +++ b/functions_global.php @@ -0,0 +1,917 @@ +", "<", "&", "%", "|", "^", "~", "(", ")"); + return str_replace($replacements, "", $input); + } + } + + class Admin { + public $adminID = -1; + public $adminGroupID = -1; + public $adminSteamID = ""; + public $adminUser = ""; + + public function IsLoginValid($steamID, $secret_key, $bInitialVerification) { + if (empty($steamID) || empty($secret_key) || $secret_key !== $GLOBALS['SECRET_KEY']) { + return false; + } + + $sql = "SELECT aid FROM sb_admins WHERE authid = ?"; + $stmt = $GLOBALS['SBPP']->prepare($sql); + $stmt->bind_param("s", $steamID); + $stmt->execute(); + $queryResult = $stmt->get_result(); + $stmt->close(); + + // Fetch the result from the query + $row = $queryResult->fetch_assoc(); + if ($row === null) { + return false; + } + $sbppaid = $row['aid']; + + // Compare the cookie 'aid' with the result from the query + if (!$bInitialVerification && !isset($_COOKIE['aid'])) { + return false; + } + + if (!$bInitialVerification && $sbppaid != $_COOKIE['aid']) { + return false; + } + + $sql = "SELECT * FROM `sb_admins` WHERE `authid`=?"; + $stmt = $GLOBALS['SBPP']->prepare($sql); + $stmt->bind_param("s", $steamID); + $stmt->execute(); + $queryResult = $stmt->get_result(); + $stmt->close(); + + if ($queryResult->num_rows <= 0) { + return false; + } + + $acceptableGroups = array_merge(GID_STAFF, GID_ADMIN); + $resultsAAA = $queryResult->fetch_all(MYSQLI_ASSOC); + foreach ($resultsAAA as $result) { + $gid = $result['gid']; + if (!in_array($gid, $acceptableGroups) || $gid == -1) { + return false; + } + } + + return true; + } + + public function UpdateAdminInfo($steamID) { + if (!isset($_COOKIE['secret_key'])) { + return false; + } + + $secret_key = $_COOKIE['secret_key']; + if (!$this->IsLoginValid($steamID, $secret_key, false)) { + return false; + } + + $sql = "SELECT `aid`, `gid`, `authid`, `user` FROM `sb_admins` WHERE `authid`=?"; + $stmt = $GLOBALS['SBPP']->prepare($sql); + $stmt->bind_param("s", $steamID); + $stmt->execute(); + $queryResult = $stmt->get_result(); + + if ($queryResult->num_rows <= 0) { + $stmt->close(); + return false; + } + + $result = $queryResult->fetch_assoc(); + $stmt->close(); + + $this->adminID = $result['aid']; + $this->adminGroupID = $result['gid']; + $this->adminSteamID = $result['authid']; + $this->adminUser = $result['user']; + + return true; + } + + public function GetAdminNameFromSteamID($steamID) { + $steamID = (string) ($steamID ?? ''); + if (!str_contains($steamID, "STEAM")) { + return "CONSOLE"; + } + + $sql = "SELECT * FROM `sb_admins` WHERE `authid`=?"; + $stmt = $GLOBALS['SBPP']->prepare($sql); + $stmt->bind_param("s", $steamID); + $stmt->execute(); + $queryResult = $stmt->get_result(); + $stmt->close(); + + $results = $queryResult->fetch_all(MYSQLI_ASSOC); + foreach ($results as $result) { + return $result['user']; + } + + return "Admin Deleted"; + } + + public function DoesHaveFullAccess() { + if (!isset($_COOKIE['steamID'])) { + return false; + } + + if (in_array($this->adminGroupID, GID_STAFF)) { + return true; + } + + return false; + } + + } + + class Kban { + public function UnbanByID($id, $reasonA) { + if (empty($reasonA)) { + $reasonA = "No Reason"; + } + + $reason = Utility::sanitizeInput($reasonA); + + if (!isset($_COOKIE['steamID'])) { + return false; // Should never happen but better be safe + } + + $admin = new Admin(); + if (!$admin->UpdateAdminInfo($_COOKIE['steamID'])) { + return false; + } + + $adminName = $admin->adminUser; + $adminSteamID = $admin->adminSteamID; + + $kban = new Kban(); + $resultsB = $kban->getKbanInfoFromID($id); + if ($resultsB === null) { + return false; + } + $length = $resultsB['length']; + + $time_removed = time(); + + $sql = "UPDATE `KbRestrict_CurrentBans` SET `is_expired`=1, `is_removed`=1, `web_unban_required`=1, + `admin_name_removed`=?, `admin_steamid_removed`=?, `reason_removed`=?, + `time_stamp_removed`=? WHERE `id`=?"; + $stmt = $GLOBALS['DB']->prepare($sql); + $stmt->bind_param("ssssi", $adminName, $adminSteamID, $reason, $time_removed, $id); + $stmt->execute(); + $stmt->close(); + + $results = $this->getKbanInfoFromID($id); + if ($results === null) { + return false; + } + $playerName = $results['client_name']; + $playerSteamID = $results['client_steamid']; + $message = "Kban Removed (was $length minutes. Reason: $reason)"; + $time_stamp_start = time(); + + GetRowInfo($id); + + $sql = "INSERT INTO `KbRestrict_weblogs` (`client_name`, `client_steamid`, `admin_name`, `admin_steamid`, `message`, `time_stamp`) "; + $sql .= "VALUES (?, ?, ?, ?, ?, ?)"; + + $stmt = $GLOBALS['DB']->prepare($sql); + $stmt->bind_param("sssssi", $playerName, $playerSteamID, $adminName, $adminSteamID, $message, $time_stamp_start); + $stmt->execute(); + $stmt->close(); + + //echo ""; + echo ""; + + return true; + } + + public function RemoveKbanFromDB($id) { + $admin = new Admin(); + $adminSteamID = isset($_COOKIE['steamID']) ? $_COOKIE['steamID'] : ""; + $admin->UpdateAdminInfo($adminSteamID); + if (!IsAdminLoggedIn() || !$admin->DoesHaveFullAccess()) { + return false; + } + + $resultsC = $this->getKbanInfoFromID($id); + if ($resultsC === null) { + return false; + } + $playerName = $resultsC['client_name']; + $playerSteamID = $resultsC['client_steamid']; + $length = $resultsC['length']; + $reason = $resultsC['reason']; + $isExpired = ($resultsC['is_expired'] == 1); + $isRemoved = ($resultsC['is_removed'] == 1); + $status = "Active"; + if ($isExpired && !$isRemoved) { + $status = "Expired"; + } + if ($isRemoved) { + $status = "Removed"; + } + + $message = "KBan Deleted (was $length minutes. Issued for: $reason. Kban was $status)"; + + $admin->UpdateAdminInfo($_COOKIE['steamID']); + $adminName = $admin->adminUser; + $adminSteamID = $admin->adminSteamID; + $time_stamp = time(); + + // No longer a hard DELETE — flag the row for the plugin to reconcile (pull the + // ban off disk if it's still active there) and delete once it's done. + $stmt = $GLOBALS['DB']->prepare("UPDATE `KbRestrict_CurrentBans` SET `web_ban_delete`=1 WHERE `id` = ?"); + $stmt->bind_param('i', $id); + $stmt->execute(); + $stmt->close(); + + $stmt = $GLOBALS['DB']->prepare("INSERT INTO `KbRestrict_weblogs` (`client_name`, `client_steamid`, `admin_name`, `admin_steamid`, `message`, `time_stamp`) VALUES (?, ?, ?, ?, ?, ?)"); + $stmt->bind_param('sssssi', $playerName, $playerSteamID, $adminName, $adminSteamID, $message, $time_stamp); + $stmt->execute(); + $stmt->close(); + + echo ""; + //echo ""; + return true; + } + + public function formatLength($seconds) { + /* if less than one minute */ + if ($seconds < 60) { + return "$seconds Seconds"; + } + + /* if one minute or more */ + if ($seconds >= 60 && $seconds < 3600) { + $minutes = ($seconds / 60); + $minutesPhrase = ($minutes > 1) ? "Minutes" : "Minute"; + return "$minutes $minutesPhrase"; + } + + /* If hour or more*/ + if ($seconds >= 3600 && $seconds < 86400) { + $hours = intval(($seconds / 3600)); + $minutes = intval((($seconds / 60) % 60)); + $hoursPhrase = ($hours > 1) ? "Hours" : "Hour"; + $minutesPhrase = ($minutes > 1) ? "Minutes" : "Minute"; + + if ($minutes <= 0) { + return "$hours $hoursPhrase"; + } + return "$hours $hoursPhrase, $minutes $minutesPhrase"; + } + + /* If day or more */ + if ($seconds >= 86400 && $seconds < 604800) { + $days = intval(($seconds / 86400)); + $hours = intval((($seconds / 3600) % 24)); + $daysPhrase = ($days > 1) ? "Days" : "Day"; + $hoursPhrase = ($hours > 1) ? "Hours" : "Hour"; + + if ($hours <= 0) { + return "$days $daysPhrase"; + } + return "$days $daysPhrase, $hours $hoursPhrase"; + } + + /* if week or more */ + if ($seconds >= 604800 && $seconds < 2592000) { + $weeks = intval(($seconds / 604800)); + $days = intval((($seconds / 86400) % 7)); + $weeksPhrase = ($weeks > 1) ? "Weeks" : "Week"; + $daysPhrase = ($days > 1) ? "Days" : "Day"; + + if ($days <= 0) { + return "$weeks $weeksPhrase"; + } + return "$weeks $weeksPhrase, $days $daysPhrase"; + } + + /* if month or more */ + if ($seconds >= 2592000) { + $months = intval(($seconds / 2592000)); + $days = intval((($seconds / 86400) % 30)); + $monthsPhrase = ($months > 1) ? "Months" : "Month"; + $daysPhrase = ($days > 1) ? "Days" : "Day"; + + if ($days <= 0) { + return "$months $monthsPhrase"; + } + return "$months $monthsPhrase, $days $daysPhrase"; + } + } + + public function formatPlaytime($minutes) { + $minutes = intval($minutes); + $hours = intval($minutes / 60); + $mins = $minutes % 60; + + $hoursPhrase = ($hours == 1) ? "Hour" : "Hours"; + $minsPhrase = ($mins == 1) ? "Minute" : "Minutes"; + + if ($hours <= 0) { + return "$mins $minsPhrase"; + } + if ($mins <= 0) { + return "$hours $hoursPhrase"; + } + return "$hours $hoursPhrase, $mins $minsPhrase"; + } + + // Looks up a player's total accumulated playtime (in minutes) from the + // separate playtime-stats database, so a web-created kban can be baselined + // against the same clock the sourcemod plugin uses. Returns 0 if the player + // has no playtime record (e.g. has never connected to the server). + public function GetPlaytimeMinutes($steamID) { + $stmt = $GLOBALS['DB_PLAYTIME']->prepare( + "SELECT SUM(ze_time) AS ze_time_total FROM player_time WHERE steam_id = ? GROUP BY steam_id ORDER BY ze_time_total DESC" + ); + $stmt->bind_param("s", $steamID); + $stmt->execute(); + $result = $stmt->get_result(); + $row = $result->fetch_assoc(); + $stmt->close(); + + return $row ? intval($row['ze_time_total']) : 0; + } + + public function getKbanInfoFromID($id) { + $stmt = $GLOBALS['DB']->prepare("SELECT * FROM `KbRestrict_CurrentBans` WHERE `id` = ? AND `web_ban_delete` = 0"); + $stmt->bind_param("i", $id); + $stmt->execute(); + $query = $stmt->get_result(); + $result = $query->fetch_assoc(); + $stmt->close(); + return $result ?: null; + } + + public function GetKbansNumber($steamID, $IP = "") { + $search = (empty($steamID)) ? $IP : $steamID; + $searchMethod = (empty($steamID)) ? "client_ip" : "client_steamid"; + + $stmt = $GLOBALS['DB']->prepare("SELECT COUNT(*) AS total FROM `KbRestrict_CurrentBans` WHERE `$searchMethod` = ? AND `web_ban_delete` = 0"); + $stmt->bind_param("s", $search); + $stmt->execute(); + $queryA = $stmt->get_result(); + $row = $queryA->fetch_assoc(); + $stmt->close(); + $rows = intval($row['total'] ?? 0); + return $rows; + } + + public function GetRealKbansNumber($steamID, $IP = "") { + $search = (empty($steamID)) ? $IP : $steamID; + $searchMethod = (empty($steamID)) ? "client_ip" : "client_steamid"; + + $stmt = $GLOBALS['DB']->prepare("SELECT COUNT(*) AS total FROM `KbRestrict_CurrentBans` WHERE `$searchMethod` = ? AND `is_removed` = 0 AND `web_ban_delete` = 0"); + $stmt->bind_param("s", $search); + $stmt->execute(); + $queryA = $stmt->get_result(); + $row = $queryA->fetch_assoc(); + $stmt->close(); + $rows = intval($row['total'] ?? 0); + return $rows; + } + + public function addNewKban($playerNameA, $playerSteamID, $length, $reasonA) { + $admin = new Admin(); + $admin->UpdateAdminInfo($_COOKIE['steamID']); + $adminName = $admin->adminUser; + $adminSteamID = $admin->adminSteamID; + + $playerName = Utility::sanitizeInput($playerNameA); + $reason = Utility::sanitizeInput($reasonA); + $lengthInMinutes = ($length / 60); + $time_stamp_start = time(); + $time_stamp_start_sql = date('Y-m-d H:i:s', $time_stamp_start); + + if ($length <= -1) { + $lengthInMinutes = 30; + } else if ($length == 0) { + $lengthInMinutes = 0; + } + + if ($this->IsSteamIDAlreadyBanned($playerSteamID)) { + die(); + } + + if ($lengthInMinutes == 0) { + // Permanent - no playtime baseline needed + $time_played_start = -1; + $time_played_end = -1; + } else { + $time_played_start = $this->GetPlaytimeMinutes($playerSteamID); + $time_played_end = ($time_played_start + $lengthInMinutes); + } + + // Use prepared statements for the insertion into `KbRestrict_CurrentBans` + $sql = "INSERT INTO `KbRestrict_CurrentBans` + (`client_name`, `client_steamid`, `client_ip`, `admin_name`, `admin_steamid`, `reason`, + `map`, `length`, `time_stamp_start`, `time_played_start`, `time_played_end`, `is_expired`, `is_removed`, + `admin_name_removed`, `admin_steamid_removed`, `time_stamp_removed`, `reason_removed`, `web_addban_required`) + VALUES (?, ?, 'Unknown', ?, ?, ?, 'Web Ban', ?, ?, ?, ?, 0, 0, 'null', 'null', '0', 'null', 1)"; + + $stmt = $GLOBALS['DB']->prepare($sql); + $stmt->bind_param("sssssisii", $playerName, $playerSteamID, $adminName, $adminSteamID, $reason, $lengthInMinutes, $time_stamp_start_sql, $time_played_start, $time_played_end); + $stmt->execute(); + $stmt->close(); + + $message = "Kban Added ("; + if ($lengthInMinutes >= 1) { + $message .= "$lengthInMinutes Minutes"; + } else if ($lengthInMinutes == 0) { + $message .= "Permanent"; + } else { + $message .= "Session"; + } + $message .= ")"; + + // Use prepared statements for the insertion into `KbRestrict_weblogs` + $sql = "INSERT INTO `KbRestrict_weblogs` + (`client_name`, `client_steamid`, `admin_name`, `admin_steamid`, `message`, `time_stamp`) + VALUES (?, ?, ?, ?, ?, ?)"; + + $stmt = $GLOBALS['DB']->prepare($sql); + $stmt->bind_param("sssssi", $playerName, $playerSteamID, $adminName, $adminSteamID, $message, $time_stamp_start); + $stmt->execute(); + $stmt->close(); + + echo ""; + //echo ""; + } + + public function EditKban($id, $playerNameA, $playerSteamID, $length, $reasonA) { + $admin = new Admin(); + $admin->UpdateAdminInfo($_COOKIE['steamID']); + $adminName = $admin->adminUser; + $adminSteamID = $admin->adminSteamID; + + $playerName = Utility::sanitizeInput($playerNameA); + $reason = Utility::sanitizeInput($reasonA); + $lengthInMinutes = ($length / 60); + + $info = $this->getKbanInfoFromID($id); + if ($info === null) { + return false; + } + + if ($length <= -1) { + $lengthInMinutes = -1; + } else if ($length == 0) { + $lengthInMinutes = 0; + } + + $time_played_start = intval($info['time_played_start']); + + if ($lengthInMinutes <= 0) { + // Permanent (or zero-length) - no expiry threshold + $time_played_end = -1; + } else if ($time_played_start == -1) { + // Not yet baselined by the plugin - leave as -1, the plugin computes a + // real end value once it establishes the player's actual playtime baseline. + $time_played_end = -1; + } else { + $time_played_end = ($time_played_start + $lengthInMinutes); + } + + // time_played_start is left untouched — it's the plugin's own baseline and + // must not be reset by an edit. Only the expiry threshold (time_played_end) + // is recalculated from it, along with is_expired being cleared so the ban + // becomes active again under its new duration. + $sql = "UPDATE `KbRestrict_CurrentBans` SET `client_name`=?, `client_steamid`=?, `reason`=?, `length`=?, `time_played_end`=?, `is_expired`=0, `web_edit_required`=1 WHERE `id`=?"; + $stmt = $GLOBALS['DB']->prepare($sql); + $stmt->bind_param("sssiii", $playerName, $playerSteamID, $reason, $lengthInMinutes, $time_played_end, $id); + $stmt->execute(); + $stmt->close(); + + $message = "Kban Edited ("; + if ($playerName != $info['client_name']) { + $message .= " New Name: $playerName"; + } + if ($playerSteamID != $info['client_steamid']) { + $message .= " New SteamID: $playerSteamID"; + } + if ($reason != $info['reason']) { + $message .= " New Reason: $reason"; + } + + if ($lengthInMinutes != $info['length']) { + if ($lengthInMinutes >= 1) { + $message .= " New Length: $lengthInMinutes Minutes"; + } else if ($lengthInMinutes == 0) { + $message .= " New Length: Permanent"; + } else { + $message .= " New Length: Session"; + } + } + + $message .= " )"; + + $playerNameOld = $info['client_name']; + $playerSteamIDOld = $info['client_steamid']; + $time = time(); + + // Use prepared statements for the INSERT query + $sql = "INSERT INTO `KbRestrict_weblogs` (`client_name`, `client_steamid`, `admin_name`, `admin_steamid`, `message`, `time_stamp`) VALUES (?, ?, ?, ?, ?, ?)"; + $stmt = $GLOBALS['DB']->prepare($sql); + $stmt->bind_param("sssssi", $playerNameOld, $playerSteamIDOld, $adminName, $adminSteamID, $message, $time); + $stmt->execute(); + $stmt->close(); + + echo ""; + //echo ""; + } + + public function IsSteamIDAlreadyBanned($steamID) { + $stmt = $GLOBALS['DB']->prepare("SELECT * FROM `KbRestrict_CurrentBans` WHERE `client_steamid` = ? AND `web_ban_delete` = 0"); + $stmt->bind_param("s", $steamID); + $stmt->execute(); + $query = $stmt->get_result(); + $results = $query->fetch_all(MYSQLI_ASSOC); + $stmt->close(); + + foreach ($results as $result) { + $isActive = ($result['is_expired'] == 0 && $result['is_removed'] == 0); + + if ($isActive) { + return true; // Early return when a matching active ban is found + } + } + + return false; + } + + } + + function IsAdminLoggedIn() { + if(!isset($_COOKIE['steamID']) || !isset($_COOKIE['secret_key'])) { + return false; + } + + $steamID = $_COOKIE['steamID']; + $secret_key = $_COOKIE['secret_key']; + + $admin = new Admin(); + if ($admin->IsLoginValid($steamID, $secret_key, false)) { + return true; + } + + return false; + } + + function EnsureCsrfToken() { + if (session_status() !== PHP_SESSION_ACTIVE) { + session_start(); + } + + if (empty($_SESSION['csrf_token'])) { + $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); + } + + return $_SESSION['csrf_token']; + } + + function ValidateCsrfToken($token) { + if (session_status() !== PHP_SESSION_ACTIVE) { + session_start(); + } + + $token = (string) ($token ?? ''); + + if (empty($_SESSION['csrf_token']) || empty($token)) { + return false; + } + + return hash_equals($_SESSION['csrf_token'], $token); + } + + function formatMethod(int $method) { + $methods = ["client_steamid", "client_name", "client_ip", "admin_name", "admin_steamid", "map", "length"]; + return $methods[$method-1] ?? $methods[0]; + } + + function GetRowInfo($id, $result2 = null) { + $admin = new Admin(); + $kban = new Kban(); + + if ($id != 0) { + $result2 = $kban->getKbanInfoFromID($id); + } else if ($result2 !== null) { + $id = $result2['id']; + } + + if ($result2 === null) { + return; + } + + $clientName = $result2['client_name']; + $clientSteamID = $result2['client_steamid']; + $clientIP = $result2['client_ip']; + $adminSteamID = $result2['admin_steamid']; + $reason = $result2['reason']; + $map = $result2['map']; + $time_stamp_start = strtotime($result2['time_stamp_start']); + $length_minutes = intval($result2['length']); + $time_played_start = intval($result2['time_played_start']); + $isExpired = ($result2['is_expired'] == 1); + $isRemoved = ($result2['is_removed'] == 1); + $adminNameRemoved = $result2['admin_name_removed']; + $time_stamp_removed = $result2['time_stamp_removed']; + $reason_removed = $result2['reason_removed']; + + $adminName = $admin->GetAdminNameFromSteamID($adminSteamID); + + $isPermanent = ($length_minutes == 0); + + if ($isPermanent) { + $length = "Permanent"; + $startedOn = "N/A"; + $expiresOn = "Never"; + } else { + $length = $kban->formatPlaytime($length_minutes); + $startedOn = $kban->formatPlaytime($time_played_start) . " played"; + $expiresOn = $kban->formatPlaytime($time_played_start + $length_minutes) . " played"; + } + + $status = "Kban Active"; + if ($isExpired && !$isRemoved) { + $status = "Kban Expired"; + } + + if ($isRemoved) { + $status = "Kban Removed"; + } + + echo "
"; + + $searchMethod = 1; + if (IsAdminLoggedIn()) { + if ($clientSteamID == "NO STEAMID") { + $href = "ViewPlayerHistory(\"$clientIP\", 3)"; + $searchMethod = 3; + } else { + $href = "ViewPlayerHistory(\"$clientSteamID\", 1);"; + $searchMethod = 1; + } + } else { + if ($clientSteamID != "NO STEAMID") { + $href = "ViewPlayerHistory(\"$clientSteamID\", 1);"; + $searchMethod = 1; + } else { + $searchMethod = 3; + } + } + + if (IsAdminLoggedIn() || ($searchMethod == 1 && !IsAdminLoggedIn())) { + echo ""; + } + + if (IsAdminLoggedIn()) { + $admin->UpdateAdminInfo($_COOKIE['steamID']); + + if ($isRemoved == false && $isExpired == false) { + + if ($admin->DoesHaveFullAccess() || $adminSteamID == $admin->adminSteamID) { + $editFunction = "EditFromID(\"$id\")"; + echo ""; + $unbanFunction = "ConfirmUnban($id, \"$clientName\", \"$clientSteamID\");"; + echo ""; + } + } else { + if ($clientSteamID != "NO STEAMID" && !$kban->IsSteamIDAlreadyBanned($clientSteamID)) { + $reBanFunction = "RebanFromID(\"$id\");"; + echo ""; + } + } + } + + if ($admin->DoesHaveFullAccess()) { + $deleteFunction = "RemoveKbanFromDBCheck($id);"; + echo ""; + } + + if (!IsAdminLoggedIn()) { + $href = "Login();"; + echo ""; + } + + echo "
"; + + $date = new DateTime("now", new DateTimeZone(DATE_TIME_ZONE)); + $date->setTimestamp($time_stamp_start); + $startDate = $date->format(DATE_TIME_FORMAT); + + echo "
    "; + + echo "
  • "; + echo " Player"; + echo "$clientName"; + echo "
  • "; + + $steam = new Steam(); + $clientSteamID3 = $steam->SteamID_To_SteamID3($clientSteamID); + $clientSteamID64 = $steam->SteamID_To_SteamID64($clientSteamID); + echo "
  • "; + echo " Steam ID"; + echo "$clientSteamID"; + echo "
  • "; + + echo "
  • "; + echo " Steam3 ID"; + echo "$clientSteamID3"; + echo "
  • "; + + echo "
  • "; + echo " Steam Community"; + echo "$clientSteamID64"; + echo "
  • "; + + if (IsAdminLoggedIn() && $admin->DoesHaveFullAccess()) { + echo "
  • "; + echo " IP address"; + if ($clientIP == "Unknown" || $clientIP == "unknown") { + echo "$clientIP"; + } else { + echo "$clientIP"; + } + echo "
  • "; + } + + echo "
  • "; + echo " Invoked on"; + echo "$startDate"; + echo "
  • "; + + echo "
  • "; + echo " KBan Duration"; + echo "$length"; + echo "
  • "; + + echo "
  • "; + echo " Started on"; + echo "$startedOn"; + echo "
  • "; + + echo "
  • "; + echo " Expires on"; + echo "$expiresOn"; + echo "
  • "; + + echo "
  • "; + echo " Reason"; + echo "$reason"; + echo "
  • "; + + echo "
  • "; + echo " Banned by Admin"; + echo "$adminName"; + echo "
  • "; + + echo "
  • "; + echo " KBan Status"; + echo "$status"; + echo "
  • "; + + if ($isRemoved) { + $date->setTimestamp($time_stamp_removed); + $removedDate = $date->format(DATE_TIME_FORMAT); + + echo "
  • "; + echo " Unbanned on"; + echo "$removedDate"; + echo "
  • "; + + echo "
  • "; + echo " Unbanned By Admin"; + echo "$adminNameRemoved"; + echo "
  • "; + + echo "
  • "; + echo " Unban Reason"; + echo "$reason_removed"; + echo "
  • "; + } + + echo "
  • "; + echo " Map"; + if ($map != "Web Ban" && $map != "From Web") { + $fastdl = $GLOBALS['SERVER_FASTDL']; + echo "$map"; + } else { + echo "$map"; + } + echo "
  • "; + + echo "
"; + + } + + function GetKbanLengths($addTag = true) { + if($addTag == true) { + echo ""; + } + } + + function GetKbanLengthTypes() { + echo ""; + } +?> diff --git a/functions_url.php b/functions_url.php new file mode 100644 index 0000000..0aaeff6 --- /dev/null +++ b/functions_url.php @@ -0,0 +1,236 @@ +", "<", "&", "%", "|", "^", "~", "(", ")"); + $sanitized = str_replace($replacements, "", $input); + return htmlspecialchars($sanitized, ENT_QUOTES, 'UTF-8'); // Escape HTML entities + } + + if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['id']) && !isset($_GET['reban']) && !isset($_GET['edit'])) { + $id = (int) filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT); + showKbanInfo($id); + } + + if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['oldid']) && !isset($_POST['reban']) && !isset($_POST['edit'])) { + if (!ValidateCsrfToken(filter_input(INPUT_POST, 'csrf_token', FILTER_UNSAFE_RAW))) { + http_response_code(403); + die(); + } + + if (!isset($_COOKIE['steamID'])) { + die(); + } + + $admin = new Admin(); + $admin->UpdateAdminInfo($_COOKIE['steamID']); + + $id = (int) filter_input(INPUT_POST, 'oldid', FILTER_SANITIZE_NUMBER_INT); + + $kban = new Kban(); + $info = $kban->getKbanInfoFromID($id); + if ($info === null || !IsAdminLoggedIn() || (!$admin->DoesHaveFullAccess() && $info['admin_steamid'] != $admin->adminSteamID)) { + die(); + } + + $reason = sanitizeString(filter_input(INPUT_POST, 'reason', FILTER_UNSAFE_RAW)); + + if (!$kban->UnbanByID($id, $reason)) { + die(); + } + + die(); + } + + function showKbanInfo(int $id) { + GetRowInfo($id); + } + + if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['add']) && isset($_POST['playerName'])) { + if (!ValidateCsrfToken(filter_input(INPUT_POST, 'csrf_token', FILTER_UNSAFE_RAW))) { + http_response_code(403); + die(); + } + + if (!IsAdminLoggedIn()) { + die(); + } + + $playerName = sanitizeString(filter_input(INPUT_POST, 'playerName', FILTER_UNSAFE_RAW)); + $playerSteamID = sanitizeString(filter_input(INPUT_POST, 'playerSteamID', FILTER_UNSAFE_RAW)); + $length = (int) filter_input(INPUT_POST, 'length', FILTER_SANITIZE_NUMBER_INT); + $reason = sanitizeString(filter_input(INPUT_POST, 'reason', FILTER_UNSAFE_RAW)); + + $icon = " "; + if (empty($playerName)) { + echo "

$icon Player name cannot be empty!

"; + die(); + } + + if (empty($playerSteamID)) { + echo "

$icon Player SteamID cannot be empty!

"; + die(); + } + + if (!preg_match("/^STEAM_[0-5]:[01]:\d+$/", $playerSteamID)) { + echo "

$icon Invalid SteamID Format

"; + die(); + } + + if (empty($reason)) { + echo "

$icon Reason cannot be empty!

"; + die(); + } + + if (str_contains($playerName, "'") || str_contains($playerName, "\"")) { + echo "

$icon ' and \" characters cannot be used for Player Name!

"; + die(); + } + + if (str_contains($reason, "'") || str_contains($reason, "\"")) { + echo "

$icon ' and \" characters cannot be used for Reason!

"; + die(); + } + + $kban = new Kban(); + if ($kban->IsSteamIDAlreadyBanned($playerSteamID)) { + echo "

$icon $playerSteamID is already kbanned!

"; + die(); + } + + $kban->addNewKban($playerName, $playerSteamID, $length, $reason); + } + + if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['edit']) && isset($_POST['playerName'])) { + if (!ValidateCsrfToken(filter_input(INPUT_POST, 'csrf_token', FILTER_UNSAFE_RAW))) { + http_response_code(403); + echo "

Security token expired or invalid. Please refresh the page and try again.

"; + die(); + } + + if (!isset($_COOKIE['steamID'])) { + echo "

You are not logged in. Please log in again.

"; + die(); + } + + $id = (int) filter_input(INPUT_POST, 'id', FILTER_SANITIZE_NUMBER_INT); + $playerName = sanitizeString(filter_input(INPUT_POST, 'playerName', FILTER_UNSAFE_RAW)); + $playerSteamID = sanitizeString(filter_input(INPUT_POST, 'playerSteamID', FILTER_UNSAFE_RAW)); + $length = filter_input(INPUT_POST, 'length', FILTER_SANITIZE_NUMBER_INT); + $reason = sanitizeString(filter_input(INPUT_POST, 'reason', FILTER_UNSAFE_RAW)); + + $icon = " "; + if (empty($playerName)) { + echo "

$icon Player name cannot be empty!

"; + die(); + } + + if (empty($playerSteamID)) { + echo "

$icon Player SteamID cannot be empty!

"; + die(); + } + + if (!preg_match("/^STEAM_[0-5]:[01]:\d+$/", $playerSteamID)) { + echo "

$icon Invalid SteamID Format

"; + die(); + } + + if (empty($reason)) { + echo "

$icon Reason cannot be empty!

"; + die(); + } + + if (str_contains($playerName, "'") || str_contains($playerName, "\"")) { + echo "

$icon ' and \" characters cannot be used for Player Name!

"; + die(); + } + + if (str_contains($reason, "'") || str_contains($reason, "\"")) { + echo "

$icon ' and \" characters cannot be used for Reason!

"; + die(); + } + + $admin = new Admin(); + $admin->UpdateAdminInfo($_COOKIE['steamID']); + + if ($length === null && !$admin->DoesHaveFullAccess()) { + echo "

$icon You do not have permission for Permanent bans!

"; + die(); + } + + if (empty($reason)) { + $reason = "NO REASON"; + } + + if ($length === null) { + $length = 0; + } + $length = (int) $length; + + if ($length < 0) { + $length = 30; + } + + $kban = new Kban(); + + $info = $kban->getKbanInfoFromID($id); + + if ($info === null) { + echo "

$icon Kban not found (it may have already been removed or is pending deletion).

"; + die(); + } + + if (!IsAdminLoggedIn()) { + echo "

$icon You are not logged in.

"; + die(); + } + + if (!$admin->DoesHaveFullAccess() && $info['admin_steamid'] != $admin->adminSteamID) { + echo "

$icon You do not have permission to edit a kban issued by another admin.

"; + die(); + } + + if ($playerName == $info['client_name'] && $playerSteamID == $info['client_steamid'] && $reason == $info['reason'] && $length == ($info['length'] * 60)) { + echo "

$icon Cannot detect any changes to edit!

"; + die(); + } + + if (!$kban->IsSteamIDAlreadyBanned($playerSteamID)) { + echo "

$icon The edited steamid is already kbanned and cannot be edited from here

"; + die(); + } + + // Note: there's no longer a way to validate "is this duration already in the + // past" here — expiry is playtime-based and only the sourcemod plugin knows a + // player's current playtime, so that check has been removed rather than guessed at. + $kban->EditKban($id, $playerName, $playerSteamID, $length, $reason); + } + + if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete'])) { + if (!ValidateCsrfToken(filter_input(INPUT_POST, 'csrf_token', FILTER_UNSAFE_RAW))) { + http_response_code(403); + die(); + } + + if (!isset($_COOKIE['steamID'])) { + die(); + } + + $admin = new Admin(); + $admin->UpdateAdminInfo($_COOKIE['steamID']); + if (!IsAdminLoggedIn() || !$admin->DoesHaveFullAccess()) { + die(); + } + + $id = (int) filter_input(INPUT_POST, 'deleteid', FILTER_SANITIZE_NUMBER_INT); + $kban = new Kban(); + if (!$kban->RemoveKbanFromDB($id)) { + http_response_code(400); + echo "Delete failed"; + } + die(); + } +?> diff --git a/header.php b/header.php new file mode 100644 index 0000000..bd36e3d --- /dev/null +++ b/header.php @@ -0,0 +1,177 @@ +UpdateAdminInfo($_COOKIE['steamID']); + $adminName = $admin->adminUser; + + $steam = new Steam(); + $steamID64 = $steam->SteamID_To_SteamID64($GLOBALS['steamID']); + $adminURL = "https://steamcommunity.com/profiles/$steamID64"; + } else { + setcookie("steamID", "", 1, "/", $_SERVER['SERVER_NAME'], true, true); + setcookie("secret_key", "", 1, "/", $_SERVER['SERVER_NAME'], true, true); + setcookie("aid", "", 1, "/", $_SERVER['SERVER_NAME'], true, true); + } + + $csrfToken = EnsureCsrfToken(); +?> + + + KnockBack Bans + + + + + + + + + + + + + + +
+
+

+
+
+
    + +
+
+ +
+
+
+
+

Advanced Search

+

+
+
+ +
+ + +
+
+ + +
+ + +
+
+
+
+
+
+ ' + ?> + + + + + +
+ +
+
+ ' + ?> + logo + +
+
+ + + + +
+
+
+
+
+
+ +
+ + diff --git a/images/banner.png b/images/banner.png new file mode 100755 index 0000000000000000000000000000000000000000..ceb4fb219b009ee9043d1a16b9ae1ab2b1ff357f GIT binary patch literal 51685 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 literal 0 HcmV?d00001 diff --git a/images/country/ad.jpg b/images/country/ad.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5478f59dea53d49787ac6ce89c96018df7fa0548 GIT binary patch literal 504 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<dsnPXu~ zr*i&eEWFjRWg+X94@?)>P1F15l*%Rl`*p}%Mdh%^g2u;1|26{MAR`EL12foTP*(um zz$(a~WS9u?4I|L%IYH6WbtZ0Qt_wE?YLNtLK{y$ti;;nenXM75o*ATm&4ib2>;K;b E0RF3PHUIzs literal 0 HcmV?d00001 diff --git a/images/country/ae.jpg b/images/country/ae.jpg new file mode 100644 index 0000000000000000000000000000000000000000..055d833f66b5af0d67e4fadedd6c13ecff7bc14f GIT binary patch literal 491 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<@+oU=f0NfDvfn)mb*b ml^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<{Z#nf&J8>!R)cZCbnrM?y@n73{0p# zW)xyzW-)~LhY@J~1*xO5AWzExRWh<72M*B546K4eicMg}%pk?{*t3<*?x^ro$*%u@ F69AxuY}Nn( literal 0 HcmV?d00001 diff --git a/images/country/ag.jpg b/images/country/ag.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8da68281b65def0c3de368db938131e3856a10e0 GIT binary patch literal 522 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<GmL!eUB}PJxL~ zYZ>hsmag8$ovSkO!Xe3(j|={>)a>l3>QuI$`TqUtr}MLavOSF0vSoE~RArTDg5#yb z7C$~zRlZ-mXZ;12DIc#hig>K(O6YmOz#yr;YVP%_m2DoWtHb(SH4ZpRoKR+;u-`o% z=p0!=pch!-ZUHeEnFI}4gcThZLVU&ubVjV{^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<lt--8@2MKC0WM$R~f6vVQkS z!NcZNatMdWk@iPyhS#qxy}RzDpxe}nsag)b?rW0e+V%sj7Z+p%0+6*Zz$nDP1h$ij s5oqVeN6z&?WzvESOpL5BB_JB;N(L5T#XyK}KuXOfsr>YQJ@x-h0Jy+sN&o-= literal 0 HcmV?d00001 diff --git a/images/country/am.jpg b/images/country/am.jpg new file mode 100644 index 0000000000000000000000000000000000000000..576d9830fe401192b6aa8218815b6589eef95f4b GIT binary patch literal 489 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VJSpVN*;DCrm&zZ&#R3(C@ zhJk?ztcFPds4*U^0*E2ZAO-F~1u6mzOpGi{4D4{r7@1g@S=j^`gxG}@l?s;MDt1XH@-ppFB^=XT3N34w2gIQ_NZXH})KSezHc1Bdgg*tBI-coB8MY zKnF<+0v*JP;XnpvLBm3b&lrL3D4m{|9F)Els9Hvlfsq+SwUD5qAp?`JXdqZQ SGf4T-x-BPr1(yId+ynsh`f_go literal 0 HcmV?d00001 diff --git a/images/country/ao.jpg b/images/country/ao.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ef4cec6c0aae1b6950557e930e0a32c8be726e78 GIT binary patch literal 492 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<)t9w-`7;&Szkd+;Vu5Hdan|aSOT=}Rf zywvT;T=`w!`C8m{8JV4?7k#=UwDbfMLx1CsSwKr=1c8^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VKSpVN*;DCt6b^O)_suDp{ z!@vMh!z2LISdCQy8`uzLkOF<60u=!UCPrpvW>&aOj7-c7EUbdUifo2XLQ0N>jZj+| z?HMezS+;~RcpPN!npE*?^}M;q&L(T-`=lJZr@{5{eyrAO<9ZIk;}#tIE|^{UV6XMq ze8SWy^En~~p>4N%9p8V92U;g92y`OCE|8^6EUZF6+X5GY?O|dB+M``G^VB<2zkZ+w bNkIliRP~HN*9i$jd;wByl^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<R>LF!)EJIc0W(+uGe`l*1Qh`WCPrpvW>&aOj7-cdtbz<|LW)X`!lGh^flyl+ z?HO)gvlczq)~K~?>*Y_&I%k~rYMn8KWzN)3HIqzBZcaPJ;-A0uc53gH&vOn-PL_$@ zSzXaM!QMZ%rtO(RpL{G&;R07S5etR{o{z6Dhgjb)yl`s5~ bR5V-&@h?c*mYI^*Oe8iw$gl0s{(lny(RO!5 literal 0 HcmV?d00001 diff --git a/images/country/at.jpg b/images/country/at.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eac7d5846c8d54290058d74349f7b19fdc7ff0db GIT binary patch literal 478 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!)F_Qr0mKkykOEJj0#yM9MkW?ECT6%zj6gPvpdy=)u&9!uvLmbNL8!Hi z_6*rfi67NY++E_|YjfIH=9>80+V8?U#2=W%{(dR;C+q353#XIojtB1YW4m;3RnbyK z1+hyxI=0S}`_~AB%RQ_ZSv{FKl0m(YBy^PGlP7sGP0&Ur4-V9VGB?ycpR=Bf( a3`Q1U_=rvfD`W;Kyym<0wCcn7|2F~N@n87> literal 0 HcmV?d00001 diff --git a/images/country/au.jpg b/images/country/au.jpg new file mode 100644 index 0000000000000000000000000000000000000000..595b2b12408472414fd4d100ab0546b5823e666b GIT binary patch literal 521 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<V}S^nQ*;DCr;h*8-OR3(C@ zhJk?RB1(pVPCAfNz1tyPfXIUuDc%^av{)h)$!C72W`zww{rNZo-5Zxg;})Lo*nV4Q*DE7g>x9`$ z6TT-GZeP3}=qzbL1|~*UB;PYIG6^y;D+VS){Kp7%3)i$1&hw@5K-E$})lAGNs+k!C VnG_+4nL&!PB`)!Wt_%5p69C(kaa{la literal 0 HcmV?d00001 diff --git a/images/country/aw.jpg b/images/country/aw.jpg new file mode 100644 index 0000000000000000000000000000000000000000..321883f9f413f49eab22b946fb2b15d1e1d79aa9 GIT binary patch literal 487 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<Fo_O#s>`W~cxF literal 0 HcmV?d00001 diff --git a/images/country/ax.jpg b/images/country/ax.jpg new file mode 100644 index 0000000000000000000000000000000000000000..58be385db777472257b26708e6ebe878fbd13728 GIT binary patch literal 520 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<( zOSWIW70RKg*BvVR=IfIG44R(`mH1ia`B^^?U+p?`ifG}lY`eCk#E=I^-r6)t&a=L{ z`lQ~WizV@=q%*H6EeK`a!m?X_&KK*e?i253DVlCure@sP)8NDAC}GQ64|I#PAR_}4 z6El);KrRzxP*j3=iV^6BuB}aHZcJ9Pczf~w+|NKgG9W#StjKzpn1z8_91|fP1!^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<pc0%ni`eV_s*0R|=}26hH!xMhsYOe_qnY=T0Hh9ZuEg-|;g?HNuh z`(5=4ELx>Kx5Ce7(xU1I{P*ro{^h>!aR66oXlh2UdVjxWo327m#pJ(t5^psd2TfTK z$t2h>z_p-Cn(@WaxsEe;nEGrK=InH6Si#rtey|^Cy`&%m6T)hcZyA{wSXdPyzF-8} x>dVbzajYJwR7Q}2k(m{w1O`|bnS>aa1p^;}RWpNBZwv4%nGkYp>Dl`KHv!*OX2Jjf literal 0 HcmV?d00001 diff --git a/images/country/ba.jpg b/images/country/ba.jpg new file mode 100644 index 0000000000000000000000000000000000000000..797fc185854ac95e297ba211f27eb2998118add9 GIT binary patch literal 529 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<NA^9_TJvL7=->k%NGVk(q^oO;9oMBE*Y~K^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<OBcmB!Z@d zfq@yUgh>FX&mNBgW{?7ZpaNw921XV}W)^0+MT|_$EP|{I?81u5hJ|cGVo*C7?HPV( zCd-R>ce5!@=n0aEeB_}myJ@vTq-pxS?NZLgA!j-T7A<{V*i~q9%hO{!SH{)5f#27z zJ(m)5Zoh1P)8&XyQ}|52Fy=O1TYqeOyteU|z*|rKFBSxe-u9gk_P{plPd3msGJ*_@ z%&c&y02z!7Ow6o8iiV94e=!1`F)3`*z9_fc`{FO?5M%S$iyNjB^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!)F_Ts0W(+uGf06yP=TTV0}~K1vchd*WMXDv6=YCk6A~6tHiTNqXwR@T zT;|5AoG)3%QWp(%nS?wYH~HB%j%}0Ss<$+3>nGw!pU=RelRM;_)K}bXq;!I|c`s_y!E_hs8XuXc}n3Y_7{QsK( DR3K;X literal 0 HcmV?d00001 diff --git a/images/country/be.jpg b/images/country/be.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d9db8685b0efaa732a767bae9528863075f74920 GIT binary patch literal 492 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<W{?7BpaN9^1|~)(R%TYXO^i&;EP@QI?81s{qJ}~uN{)$8YZ>hs zF8)}leD?9}rOQ3}f|kxr3OM6;(cEn3^Ep}3NAF$q35>s4si9|Czb9i`ZnSz>h|_0g znaXTd>FfgLW9(-8d$MwK-RoOxla6)fe-M8<|Fb;Meknl)26njJU^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<FXj~}Z77O(FP&G^JGQfG4}cmuhB^wUUAiOh|SD9mB}Pz$~Z;aXll@!l=1@%_o5> jWq>Lf*pY$(tdf;YXyQePPe6*NmxbKi#As42|NkZcJW6D7 literal 0 HcmV?d00001 diff --git a/images/country/bg.jpg b/images/country/bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..40dc5d546f26db4b61e912f4677144f5a1abd8bf GIT binary patch literal 479 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!6q3fOfDNpG8KfW(s6a!2fr*icg_#p>1|t(Q0}H#LkfCT$BCD{X zvayL{;6bR(jP?vZUSV6>@+9SFO6_0&jq&O0@EfZ(-1d9CN!dy%{kvoi=hK%lK_A>U zeqX&bM1#%rM()R;IKKyNsUIa}Cb~bZ2ihnh$N;nf1u%;QZiKj-5op7-+lPV5qy-rm eSy0q5GBC5S87{gA@c>Ar$?;<;udMd}zX<>*$YXl| literal 0 HcmV?d00001 diff --git a/images/country/bh.jpg b/images/country/bh.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c335d64a15b5d1ef9f30c18292774c591d18718a GIT binary patch literal 484 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<g)apFO!wT$)* zudgcn$~L>ac7}*g+6tZY{mN#)L0G5tnX8-^I literal 0 HcmV?d00001 diff --git a/images/country/bi.jpg b/images/country/bi.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2c8bbfa4220887e16d4a08c265bdf977cd5a0232 GIT binary patch literal 535 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VJSpVN*;DCr`&r#C{suDp{ z!@vMh!z2LIXpKh!Ge|)&P=Sg710xF)6B8pV%qm7EW)?wKHU>i>MPU(9CFMe>t&H{z zN0L9@W+@Y$cx=1kN7`t3|~;1f&9tBaCmGG^Fm zvFgqjd>neeWc|Zu?>DCzT66EH5ayQnp}2loD(|uhbtbcSZOWOSGWq?iZKtQ7O1s=K z*I++WMS*8(?y~8>uH?Nsw3q)x;Me>1K!=J8GBBeC2!oJgAlPk8j6k<_mH-vW2r@7- k!+iqsksu?hAp?uBq9a%(Ge~9F>nr(|JKP?**8jf=0FCW?djJ3c literal 0 HcmV?d00001 diff --git a/images/country/bj.jpg b/images/country/bj.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b25820dc78c03071a9ceecbdf04d43c65fdab398 GIT binary patch literal 487 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rV3h821zzSBt3{nseRG=!rz{JSH$jAvdgOQ1ufrV92QJ7swM9I)G zu;?JvT1I<@qn^nrhS&WwIbW&-ZRVJ=@j{S?y=mbsI}z=E{_+h=K1x;dZ#An{>6P7e zhi_6tgT#cN?o#)*zYL1=d+>c`rIeMc{8XTw5`qjsJCFf03j?Dd#N~`YYf=s6btVH9 m$^aEIup=vEWM*JuVP$jN2=N6-@!_|ftDV)-I-b=3zX^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<@H|AYf#L+r`Ml%pxen!0O1RsHDq_B$-xb5?0w!hqb7Q7>270@aa(-jUop@HQi4DiFeCYsfsu)U*>K}U zh))=SHfMJ~$=?iADl5pq$c%6)P!FS`p(6tmi=eO(ST!?9wMEUI*rhC+8U?=ozX<^D CM{6$t literal 0 HcmV?d00001 diff --git a/images/country/bn.jpg b/images/country/bn.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c528ed129349b651aa2c7b808449138e10e100a1 GIT binary patch literal 511 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<xtBLd+d zseveA5&#PEVpYHjHiH?YAQ-4XMSy{knVE%=6>bJ26Eh2|pb&$ip(C4!QDD$SsHKed z4C$vf_Ds39C&`7=E5Rb{kn@?=Bu+^c>HOL?es?FCa;e!vxN5DgO|kIZ z$@!i4mxBDnK`~Tkr0N_S$%m4rY literal 0 HcmV?d00001 diff --git a/images/country/bo.jpg b/images/country/bo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6284991a04d887ca2d3c72244d2d4e3d839bd5d8 GIT binary patch literal 480 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<B!VxbPvw3m~^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<&9p80YeHj%xsxJIx2*K?U~E1x z(IWeliu{5(Onk@M+4J{Dd!3c7^qDAew5V(0j0VG=$5q$$Z1?>xPIXzGeR|1*q?4Wj zXBs7r75-dT4|JHEAkbmVtVmu1h7ALAqmZJZV-UoXj6hd$t2i>tY+w2Hsp|Chy&!!u gf()qIfHBR)ETri8@B_r>AYFY{vlFbX;{V?S01qsBqyPW_ literal 0 HcmV?d00001 diff --git a/images/country/bs.jpg b/images/country/bs.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed1f105e7a1d93b7020417c1533c0d4202da1f3c GIT binary patch literal 504 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<ZwtNS76wjcb3%GLI}=5{nC+xj+CXDt$#;JEnf8k6S_zr3^E z@ybgmB4<{v+K>L==vQuG$*mc|i%%_dZ*n`5|8YIga%n-J<;-xKfeaR)?Sc$}2O+*- z1X`)U^rXnjNVId+zUM$4GC&>7tjIbTnOFoFSQQN+T9`pv#MK;A#12N@InG=E|0V!_ CziZO~ literal 0 HcmV?d00001 diff --git a/images/country/bt.jpg b/images/country/bt.jpg new file mode 100644 index 0000000000000000000000000000000000000000..980bb47c7a54ad8bafa7b06e3a3bab0972b80a7d GIT binary patch literal 502 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VK+5X>R;DCq*o|iuiR3(C@ zhJgX1hDiXZQ5BB@W{`qXpaLZU1|~*k7A9u6O^i&;EUbbI!it7$fl7{zP&*mz8Tu^F z2u>79f5fS?c%JFAsT19^Cj{jl-_5dy$62w#?{IDLYx}v<>!;qkv}>8_y4)R0D=wB@ z=31=Xx3_TR`s?1>;G>803?EG%>V!Z literal 0 HcmV?d00001 diff --git a/images/country/bv.jpg b/images/country/bv.jpg new file mode 100644 index 0000000000000000000000000000000000000000..105b23a4eaefca4c123d7a409e99cbf5bd71da5f GIT binary patch literal 515 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rV3W;M?zy?;p3{sE|RG=onz{JSR%)|~h7Gw}36ALq|AOoABvZIi&qLNeN z#Dh?K8SNRmGqzp0b(%4*`}j)NnNLOgLS&As+Xn4hDsK1A>vPYmyjz=Qi8kF;Vt%@f zNynhL`FKpdDc@_;GM*Mu_tqc>hDCp}9Jp_9NdCQQ^OGwq#_J>m3c4(RT?e{DN|1qx zi5X-+3@|b=2QnxoLj1!Bw0o8dSIdGMo6~m!mCFh;FtVVi2P$U~WKa|`bcA>iq@z>F S-F)RE&GaL0F5Hj&e-i*hx^ZCu literal 0 HcmV?d00001 diff --git a/images/country/bw.jpg b/images/country/bw.jpg new file mode 100644 index 0000000000000000000000000000000000000000..776b327f8a22ade1186d8693441d513b537cce1e GIT binary patch literal 482 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<vVG;lex#Cg43{s#BRG=cjz{JSR%*+ZmgOQ1ufrXV_P?$}zQAkPI&=G1Wqdh~+ z(+`^(`{t!~n|Pezn&ha($?~E0>id8c9%GHmF(-c9zO%~hc=GRqL8^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<V}S^wW+;DCr;RV=6nsuDp{ z!@vMh!z2LID33=0Ge|))P=SH~0}~S?3p2tlMkZ!K76w*DLpC8{6{wAj_6(o$yPrIs z-Xs~5?4EOCU8Pv1&fm$kvv+UXUv@UbCFoy80LPshovr~kceBrz_x#blso1R05<1m= zSG&nhV}+-U=3YAAd?%+&D*FESTxi98MXw!N2V9yCKKNn^@~j}bXPFoj!B#Ud0|2F}|=5F)= literal 0 HcmV?d00001 diff --git a/images/country/bz.jpg b/images/country/bz.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3aef4da6d326205d12d605f60b70f23b403d7296 GIT binary patch literal 521 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<@!OV#JPQ$dv~*u=aHnR}6xI_;cmJ6J9U?Etz`)E2 zcLj*SB*e(VDl8J%xbPyxSByX>=)@jdS0puCW$(Fmpe|WK21X`!WL->*LJZ8TY=VIh VJQuFjcxyL;mQn*fq)b9(>) literal 0 HcmV?d00001 diff --git a/images/country/ca.jpg b/images/country/ca.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bb1fd53757894f004453aa170c57c44b850ade50 GIT binary patch literal 504 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!6ynFK0AdI;NI@u2fwBMt6C*PVGXpcs5Jo0u7FIz9AtggLc16d9 z2cecS+B1B-bu%MJv{dYu>7-; z<$0FEljmQ@t=}DXn)jUgY)zp99cKDR8IM{0zHoh8o~diDM~X!1Tz}RVZ_YoC2f9O2 zkb#jE<^%}MEM#c(0pcA-pzWLZF4Y4S$^aEIqo`zLU{+)m6gF%Et7QhMZF{w&WA^*j G|2F|uw{STC literal 0 HcmV?d00001 diff --git a/images/country/catalonia.jpg b/images/country/catalonia.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4f85bbde734bd7a223f96ddb21ad4d8e1f0404df GIT binary patch literal 455 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<^=@rbnC@+GNv^}+^6e&%hXJd!u3g)DL*P%!#{;KAuB=?f zBJVdp5@@`HAOpyBB*4hTz-$O{BqPw&?0^UJ!RmlMK~V@&CkR%@3{p2e;Om_KHvvDS BTRi{( literal 0 HcmV?d00001 diff --git a/images/country/cc.jpg b/images/country/cc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..86271f0eed14cd96c7cf2186ee9151c464c51a78 GIT binary patch literal 507 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VJSpVN*;DCs(cwuuNs7eG) z4FdxUSPhc^P$N551rS4+K?>}F3X}yHn3$LtnOWhMF)}f;unID;DH#fjh&l!qLM>&q zXIL1`UM||X{^QppZ&`faWgp*EYq)`Lcenhu50!J9MdghC6kc5~8MWEEIn3bWuGOpo zC7jmRzW)7t`Kw==L{g`2L&ri9iGUZ33(UeNmxd)B)m(i#Q_8YBrn=&wLX%DFjZc+8 z_ecsdFfqg30`fj169bE)A;epZKv#G@UsY5OQOU>(QUC``48Xus1gm5Qsg&q>`LX{0 FO#n`yZ^8fo literal 0 HcmV?d00001 diff --git a/images/country/cd.jpg b/images/country/cd.jpg new file mode 100644 index 0000000000000000000000000000000000000000..549ac9818bd8cdcdfcf948e83d5fad8f78800bde GIT binary patch literal 549 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<R;DCr;X^F81suDp{ z!@$4LF!)L4&I0V`MmGf06oP=Sg70}~@NGczmPCPpR}W>!H4Aw^+BM-fq_#73yC zjP?vW@;LBb#Tb+@6A~k(ukBKj{%W=JBBLc4*$^EM?^|)=003mje&} zxej!YoFD@uGYd1^Il#DLVpe2e5p-l#f;feV5$KeykLT^m)UG_&=HzH?IVt_*v5xgX z&GI14NPYopHe_K{WDpcmQik{(q`U69dv>Kyz}8pIM|LdWypz15<;auQ|8D{S literal 0 HcmV?d00001 diff --git a/images/country/cf.jpg b/images/country/cf.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7b01cb7e0d802b1270bd1fa25ccc2c3a08a5236f GIT binary patch literal 513 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<V}S^wW+;DCs__biGBsuDp{ z!@$4>R>LF!)M$uR0W(+uGe|)_P=T@l0}~@NGYd1^CPro^7C|8fRyIXtLq}neMyREX z_6#fHxu?rIcr91c>fow0np!^bxW-JGnmb?rUJcqIvQ2E()P1J*K|%S4y*9XfP&Cbp&m%V*hVI^CTj@Rq{=mYWB_5)oZE6Bje#13}? zkip0#$iTv;Y}mLE;vq(${l2kA-79!vH*dayT?>OC6N`vZU}7P}iy$qFdQKU4Z(O(j G|4jh>K5qj6 literal 0 HcmV?d00001 diff --git a/images/country/cg.jpg b/images/country/cg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ba7e59cad153e01939191bcee994096d9e5ea97b GIT binary patch literal 505 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<UW@aXKxJ`^q%q*;m3~Yizfx;q6hE9nGq1H0m zGi<*3c&Do$tBI1Kkfe&C=8yh0bMyY5ba(gEope#gYqj*6NlN{Gd?MeU-+A@DX!X`N z%Rd?YuoZM$73!`awBSkK@u0AC555{bDX4Ijp9QpBMv#G#nH6p`kip2rBFG?Y6qpF{ x1|!hUY`&?55larp-dvAW2QvdBo1n^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<gar+ zG7$(5Nf|3x4U+&+h#RW{h#|}%1))F%iUJIbER3v-2!j}zm{|lB8Ccnb43z>Kp;j{5 zGd$W8o;d%g&q_D0`5_^bLR#(wU-`S*a@X5gpJQ65CB46_e7tbGWNvN1V+WQs40a6? zi{F3u`NVrmr}TKg>9LuGj9V9qFkND0Sd$WH_wVKPu+Oc>c~|_(+6r`ogdiiDZy6bw zm<1s|VFX%z*(<6+#uKPgR*->-k%bw_zsxK^wL%{h4Fkc-nL)|}-53sXIHii0%H@5I H|9=wz4YqH< literal 0 HcmV?d00001 diff --git a/images/country/ci.jpg b/images/country/ci.jpg new file mode 100644 index 0000000000000000000000000000000000000000..50374e96281f913437780f9db4fabbb7c3754fc1 GIT binary patch literal 481 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<V}*#F;R;DCr;@ws^(s7eG) z4FdxkSPhc^P@^qY1&m+?%pe8!Kn1D-z@T7aVP%Ee#K^?V!oVsh#Kx|uWGE~mYUBvD zmeHQ!VaG*1r70^X<+hg1+8^N|1qp9c~?%!N|-is2B)wIwQ~?r`xAY>LE%Q cSy6(4iGh)sO)wGS36Rn)ZqAGT#Q(nu0OwX?h5!Hn literal 0 HcmV?d00001 diff --git a/images/country/ck.jpg b/images/country/ck.jpg new file mode 100644 index 0000000000000000000000000000000000000000..127ac279a12d4b5f1296376ad455948f62596e43 GIT binary patch literal 516 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<Ueng8En;DCs>9!v!)5B#}BgN7T;ZVbh_lHf1LG;IIggnIHFkoZ`28|-bbBsWzm_>czeFIb}4OGd<3Q_?BV3k6OjSzo= P)TZWSN=C=b|9=wzW;Sq1 literal 0 HcmV?d00001 diff --git a/images/country/cl.jpg b/images/country/cl.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fae3579dcec03d364fc58744ec57712d9c97f628 GIT binary patch literal 497 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<{zt$Ak=0?dxnSIOK05@_rEU(m$e^y7;Ub5X!0A+ z4|cmgdmWTI{%Cz^hz6VK6SJ2qwbcupjouj)blJ}WS}ZLHw3rpi3{0#-3ok-^ wzzDRf^y0eJN^HOFfy!kBf%2%z8JLBbSlA|Bf_Mm|KAV3_id$$-(f^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<V~*#6&Q;DCtkU9l=3s7eG) z4Fdy24U+&+qc~OttYAZ!K?;(A3X}vGn3$LtnOWgBF)}f;FbFELvI(&pnm7eQ?PRoP zSR2(cHDk%dD;=IPbwMY&=H|Mcv^saeL*b=(QsaV(OP3o}JVc|t_WVwG9sX_WnFmK2 zw3?;nGMHFi`+WIyvG?t5HZy9L$!N&C{E-COD=Emph_Dl6IU@rLt0BZXCPtujGgQp? n!~<2z2m*b@40j%g!NkleC?u+A2=NL?ahA^w?Q?4n{=W$T0BdEo literal 0 HcmV?d00001 diff --git a/images/country/cn.jpg b/images/country/cn.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e3cc2cd00b79aec9e05c32392ba11ced41b91d61 GIT binary patch literal 479 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<~xe9{$O%@ z@6+C7VSSN+RXkY*?1^tzmUA01NnYpSu;_J9{<j}$o&$6 WjA+V$d|^k3A3(~q&W3OPe-i+K{9RK3 literal 0 HcmV?d00001 diff --git a/images/country/co.jpg b/images/country/co.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0ac03e11db4b1bd515e963a921cb8cf7a84fca20 GIT binary patch literal 484 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!6q3fOfDNpG8KfW{s6bJGfr*iYiHR9*1|t(Q3#*_a1DlXzP~t?W zm5lZb-Mb>A?)z#ko-X9nzhkm>K>7ZCG1XUlGqntz%_nr;5ai0{@;}}7HfqBv&hVom zTF*=^n4Pbyu3u5pR(epv!d2?ebD(w7f((o-2)lrmGBPl+usTnA1aUVb&?3QC=fv|* i0Ts&t6*IHK9R^VhavW4OGf1@=*RnY?kL}g}e-i+yonasV literal 0 HcmV?d00001 diff --git a/images/country/cr.jpg b/images/country/cr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..584317d6c4fc6f951e55626f19f668e7578b0667 GIT binary patch literal 497 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<bfVP6^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<cYfA2p-#ZNxrr<*+k+>#dbe3^Gf^P$W>^;n7A zeb!48dXrzR*IE(4lfB_W)sd-_cPP#*6*F^{p8>R5N|1qp9d0d{!N?-&xbY&y3yeVf kY6FTR>>)}SSy6(6k%5U>OmQJtDKkjv3Io~6-T!X_01Rhkga7~l literal 0 HcmV?d00001 diff --git a/images/country/cu.jpg b/images/country/cu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4281352e6fcd52d4090135cfa2e81012abb87b60 GIT binary patch literal 520 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<)t9w-`7;&Szj)Q55o@ z0jN#{!bMWY3Rc7<02Io{s(=ZsfElD99;iT7fPsmTnT3HJZXF{NGYhLC1Dl`_yNH;$ zp;KZZ)Luq=hE2EMYUeHH-LAPlU)RXvkwnKN;o~=26+VAnJ$2v3C$IRoPTnbK$!NV& zMe~4SCHt53xZQWYZL7-S-gD){%2#5hfsKvljC;KwnSGopD_^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<R>LF!)L4jB0V`MmGf06xP=S&F10xF~3llTkCPpS^7C}}9Hep32L&v~GsGW@V z482>DxAydwU79b!cT-X6X_wgvB@q|wq*1l zu8Mnq&Z%pf#4MppK@3haa-A1Ae4Bhj-fH%)&B5M>eD3)r1U=MMy27#eZZ^;*(t<#j zAe;eo56~s74+RT1LcGKXbV8n*k5yQlpGjpYL<18eE8N{+4GciHPkIFLB1nT{&M8Bm Jw`cy}1OPZzZ(jfa literal 0 HcmV?d00001 diff --git a/images/country/cx.jpg b/images/country/cx.jpg new file mode 100644 index 0000000000000000000000000000000000000000..28328427a4bf3f916b464ea94bc76eb4db218e06 GIT binary patch literal 523 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!)aZ^!0W(N}Hc)|z00R>f11mEt+$Kh5CP4-kRv|-S5k)pp<;0CpTN&*c zzFaA~cYo>9zYDwtR)}piTybV~1yhZj5{HUFYUqQUj)g+t%aXB>?44VkrM2`M@TLOjL@bjCT8S7*-J^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rV3fW^-zz9~r3{n6xK~{i~feC08Gu#YDpiP283`&NMQ0o}&8P1;U z)3Z@Onyu1#iS6r)c$qnx_uSS+?D>=*b^rbPedi=Jj+*qi_{UDK7Ss8sx#Y>O??96! s1c9ca_(6z)Q85tWK1QISVwcYO1J#KMGNSoHkU^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<0?#E23EifQV#}vlpq5W&=MrT$iyPZz$^rDJ0sAl*%sTr xJqXwXR4gaRz=-TTVB|3|D>49sL(s4g;unyH^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<R;DCtw_-5JzRf(Xf zVPIedt6>rVYGlTvfElD9AE-b8qou3{ zUKak(dnRQ}?6hl`W`8{uGRb@eYpmCXSB{G()D;8ml@?@RWMM|~9xy_f1w|AaKR`Ud2()s~M~l8o fK(&&Bj0{X@Y6Y1^3c)IwK`Kp~=D2>H|NkZckLhCz literal 0 HcmV?d00001 diff --git a/images/country/dj.jpg b/images/country/dj.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3d2d8a88615d026e5124d41e4ec606061bc07a3a GIT binary patch literal 499 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VK*#6&Q;DCq*TeVvQRf(Xf zVPIeZt6>rVY81z+0AdI;NP#g>frid9ojyc<|SCpzSh(42(!t1Kq&Lz%0nb!WQ@t z;txikt;-d6<{S=WuF(c+kP>8IVq%876{LZQfkjw35v-gUq^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<)ih~q*u$imOSbOOyWq9A0swAFY3%?2 literal 0 HcmV?d00001 diff --git a/images/country/dm.jpg b/images/country/dm.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a100fd5d7bbbc6b13aef35b1fb787581a6fb5df0 GIT binary patch literal 528 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<*}UR5Hfd?fT01K0&61{fO?YJH`g0+-eo8jm*PS zPRxHF4|KScAkbZKH-X&7$i!f%c<=+ne~duaxab_wO|A_FDwY#uU|?kh2Mp8~j7-de eh72r^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<vP>~3P zhop!ZtcFPdC=`!X0V`MmGe|)>P=Trd10ypN8zU>+3`QnqRu(}9HX&g}!$uJ$BgaIj zwT$)*r#A{*`8pxh)R51v_40%z!ImqtzJ21%DDuC#y(euI$7g+m*OLl;=3c+H*2j9K z+AEtWTPo#SejbaNy2f&n#ya3E|L}m`j8#&93X>{ftf|rDewctYm7j5EX(UUe>~*O(ETjTNXmg+MFu8T bK|`ZPh*v=xs;1sBWyq@Lyz}wF`u{fpiZy$8 literal 0 HcmV?d00001 diff --git a/images/country/dz.jpg b/images/country/dz.jpg new file mode 100644 index 0000000000000000000000000000000000000000..80d8b1a2787e0b45f6533b9810e2c94a3d46bda9 GIT binary patch literal 482 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<H*||9w=<{HdQKKCYYf znQ7O#6TPOp_#L;|`kVb{;N<(zEt}C%^|usgvA7@uGpYv}7zLRiu4e?=b~JB3P?eM* d10ySnG9d<_`xFDg3YkF)*XVY*SMC3Q69DIqW^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!6ynCJfDNpG8KfWyGCuX;~NT2db6^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rVYD~wYfElE~9;iS`fPsmTg^`6BZWALDGXo2&pb(p|lA&VYM5vvN_6*(f zQ+!gF{Ze|l#$3q+^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rV3YlY7zzSBt3{v0^RG=ilz{JSR!o&)eQOR*5 z)J{fwhS;gwg1SWezUI%}lO?jI&~UXWygkmo~Vcn3%|B#Q5Zs z)%(}iTHifT^w@JMP(-O&NQS|{^4Pq6iyRKlv~y+`T=7Q=Xt$Ig0|PtUUND16P)Niv u5aI_$pq)MLx(Ps)(t-?(EC?q8l`=B0uqp~QUWE7tq*R#S^?B8!|2F}s7H5nA literal 0 HcmV?d00001 diff --git a/images/country/eh.jpg b/images/country/eh.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3c5a79dceaa17254f306a3c44e29665476ec5a31 GIT binary patch literal 517 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<6NI^YNfro8jdBl^sUXvJ)cv#r|X7XBsGfIJvGCS>pki4;21XVX)j)>>-OZvHco5=6kowMv SPGtcx8G^MxLyy(}zX<@Sc5yub literal 0 HcmV?d00001 diff --git a/images/country/england.jpg b/images/country/england.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3927c456e3617536151ddb5d5d94915875b6265f GIT binary patch literal 493 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<az2q7jzM~E*N pftE&^J_IV076dvIMI9ppvv8oGVIjmjAeDSu*^;F<$HxD^2>@jkW77Zt literal 0 HcmV?d00001 diff --git a/images/country/er.jpg b/images/country/er.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cc56d6f458fe936ea342fa613cc2e41d1b958389 GIT binary patch literal 520 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VJSpVN*;DCr;QL>5$suDp{ z!@vMh!z2LI=#EtZ3)m25kb-ca0tEpECMHH!B+D3?m{|lFScMb~*@Ts#HZs~Xtlac= z<>%6zSsOl?PP`S=+2B*Nsp|dy=Xah*PuY5_b(@HGpMl4nNvbRY%MbULs$Y3;n6~S- z{3L-@%S0>~5~_C1e_5U_cv58AlqFq(4XtdBFMgN;ZI=}U+m7T*MrI~KLk3nh#fxC8 znHYgq-~Q1o$+7c|sFniH#rNuG>wy~Off^Z^*ikhyG_tS?Dk>Rngm@98^{jkLvO2?r P)Rj-lKJT6#{{JQby}ET| literal 0 HcmV?d00001 diff --git a/images/country/es.jpg b/images/country/es.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d5d6e3a05d4ec26a13772903d983cce6fb4b29bd GIT binary patch literal 489 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<nLD;v9zu&7gF z(Lt!ajP?xkH`WSGin0o1Hrf?&;aIDfj_LL<+Z(jO zZR5|?4@0>ad&{H?S8A&lI2%2QxG7SX4YX5Qkb#K_#d|^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<`D3008}P| zrig)o6|9I!0H~82s{)8A%pe7^Km{rS42(>yEKJOBtC$#Bm<5Ft4H;P3ltdeqjU1uY zGTJl5i66ghn5FSOzibP`sveFk_iInB&sBb(YyIF(?d$M_=xKLOtTd2X;IzW(?{bsq z^lPP0CA DX|!z2 literal 0 HcmV?d00001 diff --git a/images/country/europeanunion.jpg b/images/country/europeanunion.jpg new file mode 100644 index 0000000000000000000000000000000000000000..78dea4c8d5184582a9ccade3d654840e6eb6ef8f GIT binary patch literal 462 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<ZHVMW%&LL;b+jP?wT zN|TH$E`B?_My5`GwrkN|DY5k<(b(r^bA2HG9poU4Bl_yeof}UOl&f;m5&S z`oY;-t=h|H1-<)z=M3xl%ke<_!~_}9+{`4%0JemQ5on3m>it+1F)}DZ+znF1v;Y51 E082eyP5=M^ literal 0 HcmV?d00001 diff --git a/images/country/fam.jpg b/images/country/fam.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0a39a8cef1c116bdd62662cba0916beb97e489cc GIT binary patch literal 481 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!)F_Ts0W(+uGf06yP=TTV0}~?)6B9GsCPpBeg;j_xQBYCIFc4}bqdmjv zr5lb!i*0M{yzn#Q%J1tNV^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VJSpVN*;DCsRmvQq0Rf(Xf zVPJr$VG;mp492Q}1#Ad2NP#&}fwBMt6C*PVBP-k{MkZz!RyGDfp+H4;CF8_GsHKed z414aS?zj@6_3GpCri#eaF3rVH-W_k$TCzal9mB^PR}UNQI_@5Dx;1QL#N4)1_dJ5i zetdo9`s$(U)WkwZi;ziMRx?Y@Jy20CU$tuIHIpFC*|$QPEc*7F0v#bG$iT>o;#)=r zCT2lJN3h*Yj6l05Y;c$EW|e+^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<HK!CGP`(j{EKZ%qb_LwS+i-mly8GT z!mp+WG81pSNZ!OLHT}ePk7SQYCpfx9-48i8u*con`egQ&i#Gfj5_h?bIwqvZpLkK% z{y84#AQ?dhMrKx+V?Z=8NE8{ESdAUQ&R}8$I>Vo1RaJf_%Sk^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!6bi{8t{cLZliXMn zxk4FCuHOD*e!k$XkVs34eoB_0V<#_zM$PrtlS|ny<&+((*_4nFvcQ$8e?IekpgW`m z85j|60J(*cfr(jBP$&@MAx5C}iW8WZ^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!6pF{HfC;RC8Kj^ds6bhOfr*Kcg@GMz1|t(Q3o8Sgpd!1llA&X8BGghw zdxmq*(@#bph}pSaZf}QVT9@Qvop(o$9SzyU#G$~~ZZq-Py8JnZ91UZqR!r^fc;#PU z`D^PVJ+HgDH#a@%3RtOnPeLU4#ODNg^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<8K^m=Sg{GBLBT3No+>D+(DJ!K`GoXSkis zm~rZ`K(g18`HYi4ufG^HeOA0xR@sC=!*D}A_j?9~^Q&%t|2;b{b$QmDqq5qpGTGN8 z8Qx2NUHhM*YKQIJq|AeE%edU7eyKLTmjYTWAqaFkGm`%p7?~JY6CuuL1li}zWpf^= hP)d-2krm-Qpbnru7B(S>Qf83Sbxcnt&RhTgCIFKpV;KMd literal 0 HcmV?d00001 diff --git a/images/country/ga.jpg b/images/country/ga.jpg new file mode 100644 index 0000000000000000000000000000000000000000..27175462fbfba8fab47664ad76c36cd88957459e GIT binary patch literal 501 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!6w1e=fElE~AE-b@fPs;Pk(rqlZU!S0Gm9Xru%aOYTcD7bW8y}rt&H{z z936&y-j`gKZWYbsH&gz+#8+#M${WvBY7J|5p4iH{$1Ba^w!zc=f?Up@gvFXl96TMO zPyTcaP^r9iw0(EG<~va*A%~tblAgH>E-?i$>ou_5kKgAXw7Xs7S(TseNyUOWN47nh z8SJ6?mBYhKC-=avCtPM`uYqoq7i3^y=7c*C$Y2&UWME`s5prx?_yOW!MxgWBLc)7W uBR*uz-3HVo3)IAl@D)%KP=nw?24=-Vh!$p$7E!UTxh*rxdcTDKzX<^3(R=Oy literal 0 HcmV?d00001 diff --git a/images/country/gd.jpg b/images/country/gd.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e0a70308ca26dc13d4ecb5fa46eaa5b069481ca4 GIT binary patch literal 515 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<3$!^~@mkdj*|~ Qdk)C@tEuk#r2YRU09*lai2wiq literal 0 HcmV?d00001 diff --git a/images/country/ge.jpg b/images/country/ge.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d59b6329836e7b708fdfb99a19ba13ad08a626fd GIT binary patch literal 499 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LvFH3=(kD#w?9_*h)_`qAnc1>%tki=0#(ojjO$4W#a`mpg9nY<&IT z(=|u0rkN}W`s--LQDWIO&s!oVbY|6-({3jG7nqn8ZhSlsbb*8*0~0fnKN*05z`!U3 x@dqQ&>W#YUAg{;>GB7hRvLdMj1{H&lVqoDyh?hWW`8?bfZPc0l@&3;LHv#vKYhVBX literal 0 HcmV?d00001 diff --git a/images/country/gf.jpg b/images/country/gf.jpg new file mode 100644 index 0000000000000000000000000000000000000000..678a17aa3860ccc4814ba3941ee14a159bd4d431 GIT binary patch literal 485 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<8K^m=Sg{GBLBT3No+>D+(DJ!K`GoXSkis zm~rZ`K(g18`HYi4ufG^HeOA0xR@sC=!*D}A_j?9~^Q&%t|2;b{b$QmDqq5qpGTGN8 z8Qx2NUHhM*YKQIJq|AeE%edU7eyKLTmjYTWAqaFkGm`%p7?~JY6CuuL1li}zWpf^= hP)d-2krm-Qpbnru7B(S>Qf83Sbxcnt&RhTgCIFKpV;KMd literal 0 HcmV?d00001 diff --git a/images/country/gh.jpg b/images/country/gh.jpg new file mode 100644 index 0000000000000000000000000000000000000000..883c2a52139aef4e0005073ba867c1b13fa4a914 GIT binary patch literal 508 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<v3lk$N+zdu0W)@aKMFuuQAz{ahAE1^p z+B2+r9Tuf+zgP6!{g96i5;_G(qJqR9>+bpa`_b3irm-8dRQE=|xaHx!rN~tvTH$#H@k-+|{qS4ayoFtRYi zod9GoGB7aay~O6dTU74y=>wI^2r@7+u%jqvVqj)v6I=*U&kRyOz4*$F LCkEG*|K9`v150u& literal 0 HcmV?d00001 diff --git a/images/country/gi.jpg b/images/country/gi.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f0eb8e975f180293d4181c2df9a1909967c5cb7e GIT binary patch literal 491 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<6 z!Q?Fty$%k6ehd;az23Xyrb@~k7EK80VVqF;Iv!}Plpq5mD~bn!0xXJ3g%Ia60`1GZ qrL=25P^q*a(1j?0!6?XN$iOB9QOgWcYqh4u!dUE<{^|4oZvp@z`)7Ip literal 0 HcmV?d00001 diff --git a/images/country/gl.jpg b/images/country/gl.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f8f7d3de7eb1ce96a361774c6ab57df55de5d7ee GIT binary patch literal 496 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VKSpVN*;DCsF&q%ihsuDp{ z!@vMh!z2LIsEt(t8`uzLkb-)k0!0A^MiwR}CT6%zj7-cdf~-Oeifo3$jtikyGTJlL zYfn9YEX}=FbILJJ)~pg0ofQokP5dG5?^P?`>C2p+Xq3>?tr1YkW4@`J`Nb#oNoj^J zFUfq5kZO_dYi)e>>wVw32`>Yq4r=YT;x>Q3>p9SF2|)%VdqEChG-MEgSjof)v~ov8 ur9DucoFD@O3p?C_Aa%@wLJUk|iiVDj5buCgFFPG3(aWQ{?8Q6#|2F~8kY~66 literal 0 HcmV?d00001 diff --git a/images/country/gm.jpg b/images/country/gm.jpg new file mode 100644 index 0000000000000000000000000000000000000000..265510b91446a2879758f2ef6dc25112f2d0e412 GIT binary patch literal 496 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<~3P zhop!ZtcFPdD5Q@^0W(MeKTv^!00R>v3o|3aAVwx;7FISv1|dU5(Lkt;jP?xeBHQa~ z?LN+)o-8DMQ(1T4;!8>2f1jSG?=mISZ^qs`n-0BM$dd3z^Fv4ZK0C+a9v$s~MJ55O zcsxoNetwUct+4aF^l??Esij)CI@u0N+40o_?UoW`U}9oMay$bg6N?~&a1q20j6hpG r18>}Gj5PzPmI10}U`JKW0CcM2#EW3{KtI?sc%Q9);$tn-|NkZcMF(k5 literal 0 HcmV?d00001 diff --git a/images/country/gn.jpg b/images/country/gn.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d6ff40a40add1dff03d38eca0e955b0ff65d251c GIT binary patch literal 490 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<G9;H^FILfuoKx!~92YuD+h)!*1pD!RefVM0>_TrQH+V*2fg?NcG%*QrLq_O_8BQ zo>@WebakNKkN6lg4(Npt^@6s6l7pxM)4#g69cPIAlObOMxdR} pyA4*K1gex4WB|GmDKHqA7#Nw^1cf1Lfv&e_*mj_LPVv$IHv!FdWFr6o literal 0 HcmV?d00001 diff --git a/images/country/gp.jpg b/images/country/gp.jpg new file mode 100644 index 0000000000000000000000000000000000000000..35721544d782f7c863a8d99b4ab5ad020fee225f GIT binary patch literal 483 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<Y-{6 zR3-x9At{5XVG;lesbf{Z3O0lpq`(-cKuLgs2?!Y2;bt&0F|)D=GO!6LDj7NkB|`0F zv}Z7zvGM8yAMIC5D?eUx50n<_aj>#me=q%;M7Xr_VgCq@&J#-JHxxa87w)#brQo`0 z4y%-0^5e;6**irqzFDqy*d_mtTs_c6NkK*iCT6&GKn5d&AT!HCutiLaAd3o?hI0Z{ h$_O$rGP9zpWCjL< literal 0 HcmV?d00001 diff --git a/images/country/gq.jpg b/images/country/gq.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ba42ceba8ac69dd354fc1e9736fd9f1ec43ce03d GIT binary patch literal 507 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rV3aMjNzzSBt3{nscRG=!rz{JSJ!p00YgOQ1uRgi&2$dQd*QOPh+ zSR@f@Eu%fd;)1D4D;*_oZd(3SQ1fk{wdDoASHAC`{CngVRq!ugDe_vzERS6;BO0CD zj=SCaICFi-)=jmoT64QACfwj_h`YDZG~7~a)1D4zCf-GX7k=KB2RcAXkb#K_VLQ+n zKnJieIBtY^gb`@#Rvq2M6Tb7F169icRWq<7hYTYV0}Gp=uwh^$#A6^0)0R$VGTyM0 L;q|`b|8D{SAS`ay literal 0 HcmV?d00001 diff --git a/images/country/gr.jpg b/images/country/gr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8163bf0930b228aae0ce216862aec762cba53d76 GIT binary patch literal 498 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rV3I$?Szyeml3{s#DRG=!rz{JSR#L5acgOQ1ug;kM3h>cxP#86Dh z$hZk=Eu%ey*(|mVH^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!6pF{HfC;RC8KeMYg0cVu6B8pd3&J)=CT2kv238?9MMFn+VNqqM zrHu9r$M5f|Ed20v5^H9giEGi4!@YC%GydgN*!t^fYI}0J?9t5dP M_T8B}Xa4`20A3t#k^lez literal 0 HcmV?d00001 diff --git a/images/country/gt.jpg b/images/country/gt.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d61d45bec27717aad95deef382c50c2d55f6557d GIT binary patch literal 496 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<JDINP#v`fuaBd6C*PVGuTwHIgCuqEUbbI?81s{LWUwxD;ez> zZtqyxTH-V1!|JVj#0n)?o?ndp1p$Y9t6AsB0Y!mMkQM|wffdOQz(8PN wWMLIj1Y6F;2(+BLcv-yrmFGa!5`sWKGb5{JWMW_mg!l@iv?Du$@A?0m0Q$^nDgXcg literal 0 HcmV?d00001 diff --git a/images/country/gu.jpg b/images/country/gu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9b04d91d884f140b387e171d0fded6f957169589 GIT binary patch literal 499 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<FX&mXG-Hn0L_kb+pC0wn&aGj7-cd41%meijKmfN`{S4D;ez> zR`N3YORQ1Hd^$ejxtV*gZ8L}1ZmG8|jsr2|*1v;%T zTzNsZy=VI5?HUQ6n6Gfyvr6B8Ru8mOMvwv7LZHozf`Of0N{5Z5yTZQGpN#KIFO wU>~<1s6$?mfq{h`IXD=ZfI662*#w1zA)1&$nr!z6an3GfPd(-@WdHvr01C!oApigX literal 0 HcmV?d00001 diff --git a/images/country/gw.jpg b/images/country/gw.jpg new file mode 100644 index 0000000000000000000000000000000000000000..752fcb772fd217958db652ebc3c8e4da84b96f92 GIT binary patch literal 494 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<~3P zhop!NtcFPdD5Q^70V`MmGf06qP=TTV0}~?)6B9Gs3`QWEg;kJEQ7BNvFcE4cqdmhT zNtrsMC*I{56PF(eiZnb2PM_nP~x!YiA1*s+Lq-VkKCacOe+%ss7p*Cc5k_;`u; z*zyH-yXB{r&O7O~R{GphS+5O(3O8)!zQzOXl@?@RWIND<-zMxc#) m7G=wKf2_x<8t6(EMFv)gcbP$|U&c+9Pm1^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!6cWa&fCa388Kl4-s6a)4fr*isg^?9*8zU3YDnSM|VMQTjL#M>T zMyRcf_6!^MDj#=r*6o}1M5W6>#D!&rjhp{8Yi4`BeaE)l8u*DO%EJCwS3~@PSF{fS_?MBOkntSZdLwu&7aAW7JBWU zw0%j#geu#|@jypO3j!U*isUN>My3x8%z}!B5Z^HZ-C{OppW}teQ-P{w1sNDv(Nr_D eC^E1bIu=4a3sS#xXWq+VE>6bu*=NH4-vj{d=63b~ literal 0 HcmV?d00001 diff --git a/images/country/hk.jpg b/images/country/hk.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bc1aa67c69e8f86603e068169d441de7949df754 GIT binary patch literal 496 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<R;DCs_>^WEuR3(C@ zhJk?U_$f656mFtD(rDr9076cSN13`~T02&8&>p}t?%7Q?&!|8D{S?zU!# literal 0 HcmV?d00001 diff --git a/images/country/hm.jpg b/images/country/hm.jpg new file mode 100644 index 0000000000000000000000000000000000000000..595b2b12408472414fd4d100ab0546b5823e666b GIT binary patch literal 521 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<V}S^nQ*;DCr;h*8-OR3(C@ zhJk?RB1(pVPCAfNz1tyPfXIUuDc%^av{)h)$!C72W`zww{rNZo-5Zxg;})Lo*nV4Q*DE7g>x9`$ z6TT-GZeP3}=qzbL1|~*UB;PYIG6^y;D+VS){Kp7%3)i$1&hw@5K-E$})lAGNs+k!C VnG_+4nL&!PB`)!Wt_%5p69C(kaa{la literal 0 HcmV?d00001 diff --git a/images/country/hn.jpg b/images/country/hn.jpg new file mode 100644 index 0000000000000000000000000000000000000000..56ca86b713330887eafdd3cefd1d7b972fd2027a GIT binary patch literal 491 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rV3VC8xzyeml3{s#ERG=)tz{JGJ#KsIagOQ0@kcGhzXq}L-qLQ*B z)KW%!hPWA@jz~mwsI}#<(Jbasoi*v*sjIW@Ot5{w=HB#AM`l=VpU!8WlI#1ZMf6AP z{fry)50%|_p7CRqqm1^1c@`Ixnz^JH0>p2x+;Oeu)Qe9Gd6xP*HC()ZLkj2$NkIlC qRR1zDGcX!Xgm{J#Xt&7@)9ojLD#ZjD5Ke`-SuhdeC6Ka!|2F~s{%ZpO literal 0 HcmV?d00001 diff --git a/images/country/hr.jpg b/images/country/hr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6803a7d7aa34f2cd7c6396133dc2f21ba3564776 GIT binary patch literal 525 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rV3MFGzzyeml3{v0^RG=Whz{JSHgk%{b6Eh2|pdy{IbH2bVekh5xp;fbX(bs9z-2PL_m1Dzr( z$iTqLisTnyJTb8eDjGT-`~dM4BhVdcw{%V3yr>7NR|KkO=3qwBz{n)Xz|6uXq-2=r b7+47LC`eDak^3Ai=Gc3CTw^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<3jxMBLd+d zsbK^wVG;le*<)3}23EifQjiQ(pdi4&#KgqRzzjAOWDp}0GYhLAgOH-IsAD74LPmRr zwcc_&X4R|N%`A>HI=aBg^M#q`^?jc;gSszm*_ixtO&h1x)JBoESEY;B^Zop8e$AxA zXRn~s3d5Bb^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!)F_Te0W(N}KTv_P00R>v6B`pV+$KgQW)?OERzV>}Lt#gyz(%O0jP?xP za<{xZLSkkbGfMRjuPkQd;&puRiOnA91}Q-XCL{*{UBbx3z$|1q l5#kp{pw&^EF7?gCrIb~1;YF}gW{^_v)nX?S*ZKdy2>`v^Xe|H$ literal 0 HcmV?d00001 diff --git a/images/country/id.jpg b/images/country/id.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d2895b7a81a1c40c257da0bba74ff7025bfad049 GIT binary patch literal 458 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<!z2I{GRLZb6|8_6q#zlnKwf}>k(red$s9%|Wzk|pGuWJ7b@RhLvjZC2_Lg3dY!*meABf2$0&yfG(A=r~KsC~W42&!&su+PT5L8@v5#m^oLgBu~J^8Eu G-vj`%yjk}E literal 0 HcmV?d00001 diff --git a/images/country/ie.jpg b/images/country/ie.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0992bb948044b1a8af234959f342add1a3c22cd9 GIT binary patch literal 488 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<Uenf~8m;DCrmdb|fJ5aTo!b%qwILo8O;Wt4{APs+ZA>HT@A_z)YFMrEtNdMen+$L+RbO~&z};q-Sl`+ zq|u58`xs8JZ?w9z=ID=eOZh%t`_^FaU|&;&d{QaUZYe^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<{IbGu%;V&%Y%Wku)!eX%Nk8` zWcVrZ``kQb9&f3L?MFp4&aUJ^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VKSpVN*;DCq*^sp-fRf(Xf zVPJr$VG;mp6vnE68EgnMNC7`kft&yX6B83Nk~xe_%!(|m3~Yiz!chAd?HSHY5A0uK zoczWhJ)tZ3xbruy7k6U|jZ9`*Ew=MJ&MbM$OlRH4l@7L>OT$lA+dbk4lK6DM^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<V}*#F;R;DCsFrR&ZIsuDp{ z!@$4_R>LF!)EJIc0V7xeGf06wP=Trd10xF~GczmPGDaq57C}}9AwxDrM`00BrNBg} zwT$)*f*&p!_U!!VyXW)7Am{F5leSt!i+JkZop|e{`tOwy9Zov!f-S9?Id7Ha<{o}! z-S{GMQRR*GGB>t-Jytm_I+Op%jT>G;JRHv&MA%E}GQJ)U(6XM`v#oY_L%Wo~O^$e( z<*9NuuYrz|7Gz*zWJU5j10$0m1JGHH5Z^HZowB#>#ICRxMoIf2>KR#>k<~LX0K-vO TaUsOBAoZF>w)0K)|Gx^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rV3fW^-zzSBt3{v0?RG=!rz{JGB!paIagOQ0@5GcSVq-f|^C@iMb zco1qWqdmj7Ww*OnU9K7hYdNji%-YadS-MZ}YkkF;x4AoBoVxYQjWt8|R+s>zB=cU= zPk%l;M_*yl6koGc&}oIC;sRE_()RPuRCte^{KO*F>mJW65AvrVx<471MFJsyU<6t? nwW1!VN?H);X?C~^fec2V3k8KIUW9lCq*B}Xam~6u_y0EmCDLRG literal 0 HcmV?d00001 diff --git a/images/country/ir.jpg b/images/country/ir.jpg new file mode 100644 index 0000000000000000000000000000000000000000..875a19893f711ed132130403b74af2a1e3ce1bc2 GIT binary patch literal 488 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!)F_Wt0UKBWGe|)sP=T5N0}~@N6AL@sCPpS^7C}V@Ayzg+M|NS+z{ZIm zq4qM`GfbbbgVmNnW~nbs_ijzvR(?lvx>m>vkn3&=Af*DNA!j2FhFamAc nr{fG%CM^gI2!#89>KK9g1jQC!gm?v{@{k7W%rD>U|K9`vWR7TI literal 0 HcmV?d00001 diff --git a/images/country/is.jpg b/images/country/is.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e9c1def66cc579783b834d3338f038443078b8ae GIT binary patch literal 526 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<5a018E8RlopNzzkAQ4^*Hcz`(@F%*?_Jw~UdAnT1u5flX0FN!d`y$T1LVE2BNb zmMGn6ueE}MmxLN#aa*Z#V#{plIJ$c?-clq|GOIF4$>QYLqSLkXH zd2920h1}lPDe>!q-bO##>yYTp8Bvpci&Zqu-tyP_{m+))DUa%S(&sf*>s4q&E1RQ) zP2+l?t7HTjn3$NDk^IHT%p}Ml>=>8`@gF15HC?mCHsqKmH(vN`57ENN%!;Igfst7# Zkbz0b5Tb<{q$O~TKjX?>{@MR;0svZvbzA@d literal 0 HcmV?d00001 diff --git a/images/country/it.jpg b/images/country/it.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eebbf564c1b57158c94c806e5db6012d85302942 GIT binary patch literal 481 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<R;DCr;n_}{x0jNv_ zO%VeFD_9Ye08pns9tF%G1>QgfN&*aw%uMV^<}flb3o@{&qXSiIp zwoRdFcA3*Txk*dej?BFI^4r#kO>+)hvWS|TXuQGW?fI?CDy}IMOTQ66E?uU@DU^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<cp9_y-|6*Fs=zw-w93G;LQ{k-~8MR!$du$!CNt@)|dsX@2gs`;-3 zzp6Y}THYz#z!TB*ehXqGSlu#SGGw{dQf5@`~n@a^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!6k^A!fC;RC8KfW{s6a)4fr*isnVA)C1|t(Q3#%dnn;^TAp|X)< zVj>Z+?qjT6A6b_M@4r6vC!vD)e|P@0q68Qak^?)tVP=m$NE&zZT!Pw~19* z&QUNUPkTwpiSD3^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<v)0v50WW{`q-paMk!1|}vZMiyqcO^i&;f-I~IY(l~d6AK%mRx;W% zy!w0Qm#@^5N5_`A7tDRLP3WNctNoRicAx2e*OW77M}VjFCQi`|Tkid(XIAn|lvu*` zaiVLiBTG&5Ve6y(O?oFDF*PYMF#KYk542QLkb#jEZXt*v1oXLLAjIvAK+D7>eUpF+ irGW~OoCZ`V$iOTlETWVM@dZff-ZfbZcN#tVe-i+w4`f^b literal 0 HcmV?d00001 diff --git a/images/country/ke.jpg b/images/country/ke.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7449c7285ce7302b0530898b9b7a11da85b28176 GIT binary patch literal 510 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<_eTCPo$}CT5sjj7-cdtZagc3_`+=V#zt_)Z<` z`@Z`9wUuQLuDo2eYV`>YH@n7^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<qqO(PcGT^jx)j0O3$zI&w8M}Qi8xZV1-)>WH1UcFbOFdf^B1B p1lrcRU-3#2$d^(;875{FwM-1mB8q_!uYlAZ-^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!6!OHXfElcS8Kj^ds6bJGfr*g?Xcsfg5Jo0u7B)de23A8MVdX%m zm5lZb+jP0|zDZS8WN7?nh_&(6Iq%a`CL%K@cbnhegHNAlx#ykuayjtQA77reA{#Gj z{rtlAaq+|JGi9RtxAt*7j9U2Pu|pS+M*+hD$>X0Vm&dl8IPqCCENHo)#>I;tih&N1 z5oBOwW`#KdL^Colv9Jm%7CwY{i4o|ATC-%g6zSKiv8xvp5@uj#2|Nh#AxORCG?fy@ LU2#k6|K9`v-)nMD literal 0 HcmV?d00001 diff --git a/images/country/ki.jpg b/images/country/ki.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ce81b87d897be0d2a1db830f3c8d9624417d6656 GIT binary patch literal 529 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<R;DCrG?1|YAR3(C@ zhJk?vtcFPdsL>y*0#>jBW{?7BpaN9^21aIPW)^0+WsFSBEUbcx3~Yu%!j6F=N=}JT zYZ>hsmgiQyOyZny)mG!J%8rMr+7?Vt?%D`Hc~H6W*y`DpOO`FzaiVEiz^!RhRr@AS z$jw$e{G%fL*>kDxJ=!PIW*th8+^A&jXglr0q+1rh9{jTDVJKW_y>6@ilcQDn!FngA zoH~%nsj9d?A?~NS&3u*DK-WnNGB7c+A_W2iBNGENt778^h&LI5ZZflS+;n`aJy5lb eAOiy%GqP%+auy*`m~v*2^8ICA^Q@Eq-vj_#0eo!$ literal 0 HcmV?d00001 diff --git a/images/country/km.jpg b/images/country/km.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7d7577870066c59cf6d2faa34ed43674bc6936bf GIT binary patch literal 508 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!)aZ>>0W(+uGf06xP=T@l0}~@N3nMGsCPpS^7FIz9HX%hrVaLG4BB-T| z_6(cvDQtdw+GJ{0)}ndS#L^VKQ>T1-{P{S8%zPc2>MQSMmu&R#_2$z!zN+lJ^XFxE zzIR1cJZxK|rNFiLl5+!l?8KGjrQafMO6}dTL960eS3%u@6W4(*kP&2HWJXvIbO+D{ zh74@NN)sV|VFX&8b>!TwSXF6;gqct4fqJ9_8JL)u;Z6qYVG(3#ItcL`NJpossOCZI JaK8HgHvyX_Z;=21 literal 0 HcmV?d00001 diff --git a/images/country/kn.jpg b/images/country/kn.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2ced7093184575a007acb0c0d27141e57a233811 GIT binary patch literal 525 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rV3UOmq05OCaq`(uXKv{r+iIJIw31J%}6ElmTA_J?C5}Tp0NaI1M zrHu9rlccQp<(u{`YcuO{7GG7GHgRU*?4+M3|LoiDQTA%@%)~p}UL>u2_n#qZPQ&80 z)1MqY%y+L}@3?k?>7#$HyUlI~YhSZIp&Ih+)Y7#_y6^OtsT6&mJZG+Fq;(Uwp6iA# z`&mHe$OtkpGP5H2hk=pFu#iF7G4LY9V~jv|#BLQ~mwdML(SD!?S)c}>>ydN--Or}T cz+$)%qJtTvqu(tu*z;!D!3U*vJpXS304te#?f?J) literal 0 HcmV?d00001 diff --git a/images/country/kp.jpg b/images/country/kp.jpg new file mode 100644 index 0000000000000000000000000000000000000000..55c594950460e933e2607f2c82b0b1f67878dad9 GIT binary patch literal 504 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<l#11!uk%^gwRnU-uO-NWoN!7?HF{u!0 zFQYxf@~v`VSMwIU4)}F^(PF6}rMnOeST|r4lSw=>~TvNxu(8R< z&PqD0w%UeYy!>eU)Esrg7H?z6RDl05xU@_snuXgaSsD0P2pHiPyewZbCcE!vM z%||CjP2K#Q%kbTrG{ZL<8=h>{PCo~7oTMNFBP)^*flNWA#EA^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<Tb!)Ys5v;AIgpO?MmxR^XeV@vmnl~Q*muDicu{`6Y2C*cR@9S+ZpH@NM5 zdEvEhkLx9tT}j#M*>Ov3!u(YED1YYJi8t4;(a`j~_TVO`^pE2}>m>yl7!g*3+`!Dh z$Rwl$@dYE$#+j|@hky#D1R0o^nBk5DGJx(>WMF#;@eW93zklxqkGE+rO49$|1OTSH BY(fA4 literal 0 HcmV?d00001 diff --git a/images/country/ky.jpg b/images/country/ky.jpg new file mode 100644 index 0000000000000000000000000000000000000000..60a34dc041bb01f1e9eb473ee5eea4a279f0dd51 GIT binary patch literal 503 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<)t9w-`7;&Szlov3Xz* zR3-x9At_@4t6>rV3WZ};zyMaj3{p@JRG=ilzyt)0tZ>^HnV4Bv1sN3CgoMS694A8U zWVC0PuH7)3r{!W-WXh5S-l`Ed=k_>M&6v3VZqD4#stwCObeB(;4^21Nb3n(Coy%-N z<2UZ#8~Q$$5y@uDcRSPe#*sV^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<UL#6spFm0AdO=NP##|fwBMt6B8pdGb`K-MkZz!23BE3L7_w?Wkbh6sI83l z3|&%Z!`7Dw%-e9x)3C{ZNyXVDsf}S9lGh7J`#IibXcGBx^6Tu6i#)3*`hE7+6`szJOW@vQUsg(Wvm@2Z-Ytfp+DbEVRmI xe6X?a{k!WxT{40UObqOBHv$<<%nU4oLP~~(U_HzrJ(g1@2)#MA`$_%(n*iJqYq9_U literal 0 HcmV?d00001 diff --git a/images/country/la.jpg b/images/country/la.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0388388bf6c82affec7d6ceba68fbf243a5f25fd GIT binary patch literal 497 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<b4etmei*ilY^=mpXB-9dMzF8<9g5U+{Fb`6FX0NZB$$EP58ha`KiCk zGr3$gX}AQevdMnIxIj8&d(o*ieF3YP*4Sjfk^QkAXuGT+10xeVk{^MwA_TNtSTXP- w#3PJAi-k4RcO6)^@hDJ(lpq5W(0xdNk(GhPa3MrBGf1^Y6whtzH~((}0Q9nIasU7T literal 0 HcmV?d00001 diff --git a/images/country/lb.jpg b/images/country/lb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9cdc599026be925d9e39f88c49b04be6ad2ef958 GIT binary patch literal 498 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!)ToYC0UKBWGe|)uP=Sg70}~??8zU>+CPpS^7FGr}K_Nv$M-fqFqeiH$ zjP?w>Q)>37pT4&=Q+4j+4#tmeM<&>vDJwmw^637=H{x@4Wc!E;cw97lpxj$xRkl1m z&hhxZm>`wTEVd&7t9Y_Xm>VAp$7ZL7g-;PUu=0|rjQp8;paY}?85mhne98z61tDQY wh({QK)?RHnYq1}wR2rz1g&FQpAOonBMUb`dA;eE0wH7^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<B4nVve$Ex)1s>uzmphWOkR87Q09`f#Z8h@Y-zp8aY+Tsp8hzxhC`O2 z^!;}$ONOQe8lfACrDW<-N=(D|z7stYwXERD+Lj+zk}VFrc@1=ej35IO6Osdfu_MUD z!VoAV+z7Uui4kadZ*<_+6BDm(i>~sl2KihHqzU0@pzE0h85o5WAzGM0S~l?=+dlcx H{QoxrZ%1!r literal 0 HcmV?d00001 diff --git a/images/country/li.jpg b/images/country/li.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a42c85c3332b70a96b34c685b7ac9081747c01a0 GIT binary patch literal 502 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<SADFQ*;Wv1lGh1(v%ezt!8#n=J@}c0Pd=2 Ar2qf` literal 0 HcmV?d00001 diff --git a/images/country/lk.jpg b/images/country/lk.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0948662d7edb8ee42a10b219ba4fd111be1469b6 GIT binary patch literal 492 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<JDINI^AFfrBPRu;8ck`%UkA03SSRC%ZJ++L>f+8)bH=a%c9oym75{=E*gTSkz9k(m{4F_6K?AgIVJk~r}L s*iI%!pq={`F$^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!)X0xj0UKBWGe|)+P=T5N0}~S?6Ei2=CLo7}l|hhASW#5T(Ad!>u(26x zFQYxfp%1NICWcKheC9J*McXoykDrLEv|h5iSbO`yFZb79Tla7!*JY7I4jjE5%2HOc zefLhh__(bwFfetAs6(ji-1r3chEHGhC7;DcMy?Pz(8Oo9J)qvU9_S1yK?X)v6#p_Y zFtZ2=8$!Ip2(-E=Y-!Rfpi&v2Qf5}TbAb#-1}0`!L7~En5U+t0r>aG;DIU6Q6aW7v E0COT~od5s; literal 0 HcmV?d00001 diff --git a/images/country/ls.jpg b/images/country/ls.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e529a71a2854c1e3b81325ba429aceed827beda4 GIT binary patch literal 512 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<_`&XD zVcd3}(|yrKS*q7&mga7oYSJ@lLJ>pmwB+c+m*aY4KhP<1f^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!6w=3|fElD98mK@;fPtBTk%@&JZU!S0GYbPNo1l=PqLO1^P~t(T zt&H{zex{v=TlrWj_e?!+#eCQC+wW@+kAIq{d+O~5olRv70p(o&$9;FFt+|x6`qC;9 zW>Y)n?aNlrpXj&X+`a_ICtdcYK>H*F8JL*ic7Yj;EFw-2S2F_bSS^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VKSpVN*;DCs_G~Ct)suDp{ z!@vMh!z2LISdCQy3)m25kOGhiN&*Z_OpGjytZuo;4_V`2naCz@h) ms2-?LMv#G#8R0yTLZD6-HpPt>AzlF~?t8P=GV{9l|C<1O0%?!{ literal 0 HcmV?d00001 diff --git a/images/country/lv.jpg b/images/country/lv.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a786190e6527ff14dae1218af13c306b1ce9f563 GIT binary patch literal 485 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<vj7-deiVQ5QY=%O@VoHvUP)ix@ z8TwOlXM76KpY$TvV?sHP;Jp2TZ-eev{ykQo@^;#3Keo3Q7Ta#y(PZG-`{uso;n%ym zTqf$gzR)G;*vZQvB5!E7cJ34-o7HZtzRH2g$p?-DEf*JLWMD?}A}C%24Iw^Y1X`$h ks2-?FQjmd(8R0&ldPXJ&X2FRNkAT!|*p!iOBmDm+0BEjb=l}o! literal 0 HcmV?d00001 diff --git a/images/country/ly.jpg b/images/country/ly.jpg new file mode 100644 index 0000000000000000000000000000000000000000..935219522c3a2f83d119b74297446ed4e9f2b09a GIT binary patch literal 468 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<AOjP^9UuoWGBL0~R5628iQbKNIsgAA E0N-X+LI3~& literal 0 HcmV?d00001 diff --git a/images/country/mc.jpg b/images/country/mc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6409ecd3cf94da04bc0e8c01fbfb58451ce48507 GIT binary patch literal 471 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!)ToYC0V`MmGe|)_P=Sg710ypND=We-MkZz!20>OfAz>v^MMKBHiBMY^ z?HRHa9v$K-yp)v3Hc51K#@sORo!{>*dm>Yw_-Kxn2IE#atqkcKx8_d!#lTr~fWK+} zd{svey}|&6UghIYL3W7?GB6|T0eg*EBoX3ZMxgP%RUlQ;f((o-%t#&wMimo_Alt%= S5SN2gO3G}=o4s%S|C<0tdt0Oc literal 0 HcmV?d00001 diff --git a/images/country/md.jpg b/images/country/md.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0b72c336d767550e8352a0d25af43678ef4dff4f GIT binary patch literal 509 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<FX&mNBgW{`qxpaLZU21aHkb|iBcnV4Bv1sT}bg@hFi9UGxmGTJkoc-8CQ zq3YgppeAU-QeB?jV}Ht38a%)KXQ(+=GO2S#;`hg6ZcRR>+y>UID^lkq;lSSJD zsts%_i5X8s+WMD=KCPoG(wnDISW{~ppR|Vhv GzX<^B%5i}J literal 0 HcmV?d00001 diff --git a/images/country/me.jpg b/images/country/me.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fbaf883bb18f4f8ceb5f70b9462a6b7af0f7f159 GIT binary patch literal 513 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<^xE@hD&hDJTajP!V8YWMO1xW`&!<#K_Dd$jZPbWawCEo~JK}zYE#rKg(AwSXaE%spVT(@Y)?tZWm|WShQ*t zXYJMax!$)bzJKEP4_9Sr_vz@|UU6M}*OHgsQL^hf)VJ%*oA&yxXs6Yu>DBL_)|UdE zBPqzhh;RzXO-u}oK$n2sz{Ci2gE&W+K2V_yP$80|feHl~6%84Hfg}W0%M4PxJ6W0~ M&w*3PxBmZ40Q(hg@c;k- literal 0 HcmV?d00001 diff --git a/images/country/mg.jpg b/images/country/mg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..29440a2f7141d658b3da4d3c1f8e94d6a5f71ebd GIT binary patch literal 490 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<M7rwz1KLXZJy3o-y%st9pABhac%o77T(>f{9(7@63R lRWdTOFfg$S3MncZE`<05q}*-K*M2UhnCctmA3FZu1OTL2WJ>@5 literal 0 HcmV?d00001 diff --git a/images/country/mh.jpg b/images/country/mh.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9c973f557684a07622405e55444dc08404744613 GIT binary patch literal 518 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!6bi?xfElcS8KgiTs6au0fe8ed;bt&0F|)7=GO&p#8a6J3+Q?|n zu-ILA%IgTL5UZ!@C%H~sQ~!9eXLdlD-+q7HB&#~MrJcogva`K~=L_|4oLQo2cZXN= z>A(APm-Tk9tvTwYpd2wxg<*vh!`$3`-%oCyDY-b~UaHoskXI^l{fj?X0-Yfz$iT?V zf^Y;dikJig8JL9(9ifh3Vgx#3-<&x*(;82oyzhJqs7V&6iHRNVa3F(`feEA~u<#(n TmmocDF^7${C+G65|9=wz7@Tt= literal 0 HcmV?d00001 diff --git a/images/country/mk.jpg b/images/country/mk.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e2762573dea664a316ae7ab5731d04464c5c751d GIT binary patch literal 529 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<vVG;leNn=&O4pzVnQs4$upeVq=#Kg$Lj4+6iiJ3)^fmP9wO~f!z2x=pvJwumO zv8}d|_x7`yJU-Whgt*ORc4`^FQ^ai~fo8Ec21uVPWsC zym&p(QBr~ojI3a9!hFWaASh($_yOWMMxbk^G$_sdv|F^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<R;DCr;nozPIs7eG) z4Fdy24U+&+qbODdtYAZ!K?;(A3RDCbm>8K@S(xEAF)}f;2r{s;3n{XR7#fK=Izeq^ zv}br>vfS%Lmm}BCg+UQ+%+hbvo}V+-d}R6VvPjA-`=qA-47-ba&CX`0zRJ{`myp!g z+0@&8bSA^I>mPePSI>TO(44#Ml&$L<@7mk)K$|558JG~Zf~^-~6iou##>5D;tzu)$ ge4sihpgL5Aj7$t{f`tbm9s#LbrWcd(ss8^>0E-f3vj6}9 literal 0 HcmV?d00001 diff --git a/images/country/mm.jpg b/images/country/mm.jpg new file mode 100644 index 0000000000000000000000000000000000000000..88c57572acd5d99f3244c608ac5d96ec2fa6be12 GIT binary patch literal 498 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<BQrBIE8Gl5CT0c}K~^C}VI@a4(Zquvpq4V) zGxXi|^mn^?>o@DlE58ai$80H_RPAVKS1+|^64Rtr2N~Yv^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<FXFCMD`h#AZv1*t#<$^r~bOiYX{Ow2Hw7@3$^SOpn`6paGelnfImLhWR< zXE^_OWyp_xa>ZWjLoO^#%edMtH2Z%4^S7riUC%0Bb$#8wIzx^3mw(BeeZDETcRh2I zu85DI=v0pY@hEAzhJVG9WtCc^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<3lm!@=7@1j^nBkT&GBLBT3No-6ItnQYiv%V@EoHQ4 z*nE3McEZxm#|wI9D5q6k6<;`clI{Fw#cOZoFWBxLwt>55RnpYORR!(LN2WeV^*Hc; z12EWxzzUf`3VTdUPXE6N08{90ivR!s literal 0 HcmV?d00001 diff --git a/images/country/mp.jpg b/images/country/mp.jpg new file mode 100644 index 0000000000000000000000000000000000000000..df66f5be36c02eae2030c13900205db81e891dbd GIT binary patch literal 520 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<%(N|1p~QAk)x#L%em zA=FkzdxqO#t3$r2tjG@K_4#<|@~$;gULEabymBOA+TUw`w%%H~_N$O<#`eoT$tweI zE_dZwu}?_9L)p?k;c>|B>jf87oTfcWdb7YqN#c_TPqM8|PvN7Z1DdcwEIrF-bc`{IggdhVG Vs(PRXK_Q4|L5c$_m(>5i2>|_0cdY;b literal 0 HcmV?d00001 diff --git a/images/country/mq.jpg b/images/country/mq.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aa22d735f2477b16d1bc739e424981e89197da4c GIT binary patch literal 526 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!6bi?xfElcS8Ki(8s6Y+KU}a`zW`&!<$i&Pl$igPXAfhO&ddnRbPNCh literal 0 HcmV?d00001 diff --git a/images/country/mr.jpg b/images/country/mr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..06b32e49c3b7d78a739e866382744911165054da GIT binary patch literal 500 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<pOiT={EX;757@3$^7+3{`6on0q0@)lNLM>&q zXE?1HvN>#1SLxE}i-o_;6fn8Nd%#dGe#cMQs4EXQwJnWUYH;eWs!Li+Mp@H=%G%#D z)kk}N8+9oP-H7d27$Py@1v~SOuiciX2v*AsQtPs-f$i@6|2F|Yoo$`~ literal 0 HcmV?d00001 diff --git a/images/country/ms.jpg b/images/country/ms.jpg new file mode 100644 index 0000000000000000000000000000000000000000..efb4e89f954f3eb1e55e98af92cd80a85a4c92ae GIT binary patch literal 506 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<V}SpMH);DCrWFEFkLsuDp{ z!@$4_R>LF!)EJLd0TWmOGf06wP=Trd0}~S?6AL@sCPpS^7C{D9Aw@$+HenGlrND(y zYZ>hsnu~AzmGzvr#aD5ybmjX{$(g74XR4&zZl3eHc;RMw_NX0GR;sS!6pd64aAf$x zywCFA>pRhl944%t`k>cI!(ib7W`=b6sM%Hfjf`wgg-%&{#KTg~eZh60Go%F>m>5~% yZU8bEnHZP_6&nvi{KE*eJk^WolwbKx?5dd+fng^U2=N?9b+Ue;bdsg$|C<0CJ!iE5 literal 0 HcmV?d00001 diff --git a/images/country/mt.jpg b/images/country/mt.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ebb0ec77d1a16b05e1364615372684bc96c569d2 GIT binary patch literal 455 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<UyxX+Z`CcCfeLN*S5h1ci$ZLYxXxnWdI%^QHd(O#sZK BSE>L2 literal 0 HcmV?d00001 diff --git a/images/country/mu.jpg b/images/country/mu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fcbf8a096fec330c00e23dbd12523a873f7818a6 GIT binary patch literal 495 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<R;DCtk+$m%aR3(C@ zhJk? zl8&uiG*@T3#-+N0Q`pUTCU0A8d%k+c{Eh2ez3rcROyT+zx9dlf=*nY!^@*qV?YpwT zNh`0RrDeIIdh>i0m$wfKtS;u3ntRE3OsA95O9K@%u%jquU}Rxcob(XlBamwGs_8bS+m-*{1OPQNX-ohB literal 0 HcmV?d00001 diff --git a/images/country/mv.jpg b/images/country/mv.jpg new file mode 100644 index 0000000000000000000000000000000000000000..68f6751cfb732b678df3ce6432df41859f0b4d21 GIT binary patch literal 489 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<}>UgAPKi zWwd8__*!(`vG{X5&|*^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<#pXIT34PH9f5 zn`xHUKaP`St6JsUYi|%&wu{O!(49D7+f4y z@pzQ5JHL3k=bKl+N1IoH2i=%dq*==E?F8B_A;^GaFUS)>yBP!_K41je85P;@cps=x lT9AQ>krku>27u~V1%*V4z-obp*fYfDrbuM-?$Z2!69DJ?V)g(4 literal 0 HcmV?d00001 diff --git a/images/country/mx.jpg b/images/country/mx.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4b3e609df5400ef16a33bb46429efed9329740e6 GIT binary patch literal 488 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<}*lU@2M==@}p`x%c`c(T8kBdY)H7SIu5f(!`zAr4_ShIoV# jXm3hCP>rM@BLk8vfvP}!wnDHnW{|RLt7abF{Qo8ZiCSt7 literal 0 HcmV?d00001 diff --git a/images/country/my.jpg b/images/country/my.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a8513b5bcd8c7ca968775f132c31bba22187c11f GIT binary patch literal 498 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<W6h6|8_6q#z%tKt+Iok%f_&nH6pZBNH==AS;8ABAbYqieXA)6Vy^h zdxma$`)S>Xp>~H_`c%a=ff(%SdOw4ebfsw*w7|0+fRQLhn v3r3)wWodD0Cnu%vkNXVK!HDEkpiV{xkaL9<3nAVD=~#Z8Q+4}&@&7jgJLqJY literal 0 HcmV?d00001 diff --git a/images/country/mz.jpg b/images/country/mz.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2c12ee0d573f73f0c1bd1e04c7630248f62abbae GIT binary patch literal 504 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<_R_0|z~PpO_VkK?3QMtgg@B4a^`7bJJ5_az!~v-q-$r695=VXZ`>H literal 0 HcmV?d00001 diff --git a/images/country/na.jpg b/images/country/na.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c90f97898fcb73c4146194518bcfeebf7a410154 GIT binary patch literal 545 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<R;DCr~t0dL~Rf(Xf zVPIeZt6>rVYShQ0fElE~9jHK6fPsmTnTeGZZWALDGYhLA1DlYDqG6-3XktcZu51{?hvch_Uy~&6bksy`!(xt(L8fcEs@nL!;W|u z@jKth20BYl5acX`qku6c$il#6$gJqtxDnz-Mxc8pn}>xRSY0&JQhz@?(|({n1wjTz sWX~`#0DZ&2$f{UqXzUo+1lGw6(pk6ha+uoL?`)UtYQD}bl>dJd09Ph{`~Uy| literal 0 HcmV?d00001 diff --git a/images/country/nc.jpg b/images/country/nc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2916aba879a25cad02e3af5629d8fe59c7b23c8e GIT binary patch literal 520 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rV3fW^-zywyn3{nseRG=upzyt)$49qY?7@3#_Sy&m^gcJ=$91EdV zGTJj-dtLRP;Zfbcip3x$>EP=akq0)|kDWN|YwQFW?d|RY6$^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VKSpVN*;DCtwwaCi@Rf(Xf zVPJr$VG;mpRK}`+5o`!ENP#_2fr0=76C*P#k~xe_%&dY!3@mJlhJlGt8yW2xW_Jde zefcwy=gq`!jfm6s@rB=mKAbXpH|vu}d)|BDST8q8-hGc>T)FycN}#Kd-$Kzsh9m6@ zFMP=^j9YPLt@OF2v4+_$O%M8hGk=cH)k&@qfmKq0VoOpHM5T%H_j5v~WS oloJGo1Se8B0Ar4cnT1tQQ7P~t#4jNA<@VhfN%^}z*8jf=05mIT*Z=?k literal 0 HcmV?d00001 diff --git a/images/country/nf.jpg b/images/country/nf.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b7452491675471bea44fe5654daae89e5fa75288 GIT binary patch literal 504 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<ArU1fOzyXG+^*Y7^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<sK168z z(O)3R@ICx<%<x1 literal 0 HcmV?d00001 diff --git a/images/country/ni.jpg b/images/country/ni.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1c0d75e26e274e8335066ec0a8e3eb53e27f5373 GIT binary patch literal 500 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<R>LF!)L4pD0V`MmGe`kHP=S&F0}~@N3llTkCPpS^7FIz9Hbp}rN8!LmsGW@V z47szD+FEV0S3J{{dhjQ3vbyYZyWdyCPHYId{WN`NV6d^vO*M_i{^oPVulJwz-mz}O zk%_7v91Tj%LNW{n)>5nQlt)f{G-;`qM{5K}K#Cl{LTxtCepx{V23A(M^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!)aZ;=0Sj0GGe`l*1Qh`WCPpS!7G}6jjLb}|f($HdLW*L_hK@=`flyl+ z?HR)QFFjUkydtu*Z1J5NllM1%+V{S$aNZ@WnACYy^QLm^x&02(J^1|X>vL?&SFhx9 zF%IO8VNv2r$YIzZe*0(p^;iBe*Nz`KR%keNDr13bzd|z5en~+FMpn4pAO;fyBQvWa t#2bu2ORXxHW$S?|r34w6m=Mkcssw5jWZHNU;vtYy{>ZyMUr+wO2>{HiXcPbd literal 0 HcmV?d00001 diff --git a/images/country/no.jpg b/images/country/no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..105b23a4eaefca4c123d7a409e99cbf5bd71da5f GIT binary patch literal 515 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rV3W;M?zy?;p3{sE|RG=onz{JSR%)|~h7Gw}36ALq|AOoABvZIi&qLNeN z#Dh?K8SNRmGqzp0b(%4*`}j)NnNLOgLS&As+Xn4hDsK1A>vPYmyjz=Qi8kF;Vt%@f zNynhL`FKpdDc@_;GM*Mu_tqc>hDCp}9Jp_9NdCQQ^OGwq#_J>m3c4(RT?e{DN|1qx zi5X-+3@|b=2QnxoLj1!Bw0o8dSIdGMo6~m!mCFh;FtVVi2P$U~WKa|`bcA>iq@z>F S-F)RE&GaL0F5Hj&e-i*hx^ZCu literal 0 HcmV?d00001 diff --git a/images/country/np.jpg b/images/country/np.jpg new file mode 100644 index 0000000000000000000000000000000000000000..887439685c39b3386446d3675582f74ac05bef5e GIT binary patch literal 471 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VJ+5g{S;DCq<&sx+ER3(C@ zhJk?vtcFPds4*O?0%ouRW{?7ZpaK;E21XV}W@c8nO^nPetb$AoY>EOxLBdMLfeWFw zGTJlTySU-Tn-l6MTu+!*Y-8X1>b}&m)&|y(>CJB!J}tla zxR2p)_Qk`;zsCcukq~5HMs+I_vmgT_#IcM(qfIva_KF26lo4cLVqk|m2FPGyW?&Q) XYCQM>;&71SYBAS>@XfaF|8D{SsbOM) literal 0 HcmV?d00001 diff --git a/images/country/nr.jpg b/images/country/nr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..593f6b87f24e78c700be81e002681d871b58170e GIT binary patch literal 497 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<R;DCtA$T;i=suDp{ z!@$4-R>LF!)R>P)0W(N}IZ%Ou00R>vGb@rgj7-cdtbz<|LW+hW!cZF-?HQW$ZU^UG z2(!9%i@nYCmsIbG@&}x6j=%iA?`!F{$bV8Bri!KHA9CWlv_s*eg+j*`^V(n5H6h$_ zbsifJDN6|$81N_G;YkmUe;0i0rOK<&E31=KBv}%Em;#+3EeLc1E0Rwc7?~KD1%(z~ qg!qLKX#0vEcZ_9=>Vc{y1sPBkGXMpcgcpLoO literal 0 HcmV?d00001 diff --git a/images/country/nu.jpg b/images/country/nu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cd40245c59d44ceaa8da96bb9759c9f5786d727c GIT binary patch literal 468 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<R;DCtU+qVFyNCZs@ z0|P_}lK@bkC{_imU^AFO3cP^|6a^TV7+IK@nBf*N0@*BrimXB+hDweTp*AwwGssly z%jfhSR`%GiAZLlX?)7Tj`6+dwi+=2}-NG;Ab}@R@6owj)_^6fY6BHP?F#HlV`6SbK z%aYw`KhPE#K?X)F1|tKDA``Qq<3X?mOpHJaD*nA*v4+v|zGpm8hqxdk1Hw%p Tos0}jiV(Mh6l?9Y|9=wzAa+?u literal 0 HcmV?d00001 diff --git a/images/country/nz.jpg b/images/country/nz.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3d3d8272f10fd2d73895b13360b5df837b29eb7e GIT binary patch literal 497 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<&bLQ{H?<#$3ew_2X_RQ>j-=@x>6@|>Z_LNQ$xU1e& zc+BvZiLLX_C7v7`_U^c%)GQ>!U|@M{$^CN8?7d|hto{FL^tx3XZ(I*_g@hm@12fzO zU{^3O3noJR!U(k4>&1n;)%HM@Qi4GDGJ{mW0FcKhs5BAcEs$EZ+4?m__5W`I03!lw AivR!s literal 0 HcmV?d00001 diff --git a/images/country/om.jpg b/images/country/om.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d745eb3f4e96dd1242c5b89f2910d4aa15424724 GIT binary patch literal 504 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<UL#6f(x6fElE~9jHK6fPsmTiItfZZU!S0GYcyNo1l;(yW&J)F~^`psJ)E# z45x3-YdY?qKX2AS-`8uIj%pv>DisuFyt5;=GWhw~_^_6OQ?+~CZrt2zDpkPwD^Y*D zL~@Ad71n^}hzZ|hYU+|!{bwkiW#0QrWcA80CKajX8y^gTPLLF2U}6S)3+4tUW(Gz@ zLx@ipf!2y`Z?3cls+0k$WMoBF%E-jRz|1PF=m=KK3{rghRK%yVYaMr3Mebey|0V$C C6KsC~ literal 0 HcmV?d00001 diff --git a/images/country/pa.jpg b/images/country/pa.jpg new file mode 100644 index 0000000000000000000000000000000000000000..087ba3695dae697619024a6729e50cffcc1836f6 GIT binary patch literal 501 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<W#IR4*a;DCq*ST$VO4^$?C zrig)o6|9I!0I1U+s{&@Q0%n*3B>@H|CPo$}X1HyP%uIqT46JNI!j6iDfsIg08SNR` zjc+Xxom^?Brlz8?%I@ghyLYp#8}n^rc05REWA#cBoONVXui)SB%ZqaFayCt$#v;a| z#I+!Uzww*N&u^zJ*|=>`1bmzSFeHGE-lEw$ij@|Lk3o${}Wk+7ec(i2(;2n xb;hrEl_DVJa)JyDEbPe285mgwnV4CG6cZ0Z`~=eB5^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<pOpHuyOw4eb7@3$^1Q}S_*o73842>KUp_Ve* zGu(Dr9&@qcAlJ^*jcFW=w#TdIbChl^1+H`(HB9QVBr@Bn!bdGqMOZLY&SBv}se}7N9aIpfXf- Zj7$v7tcp%xh0Gv@BAcFVtDOJ;CIC&GVetR} literal 0 HcmV?d00001 diff --git a/images/country/pf.jpg b/images/country/pf.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f8b52336f0b61af232feac7adb2ba8a374729b82 GIT binary patch literal 489 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!)M$)V0UKBWGe|)uP=T@l0}~@NGYd1^CPpS^23A29MMpMvAz|glg-}Zw z?HR6pd%gVax3IYhv%=a08-kP~8c%-syTUsA@^$H?b8f5TbJ7zwYDyP=eAatEW}{A0 z>PJ_u1;>^%@bGCxw=HvUwtCpeF1X^x-*BL{(t<#1S>bj98H~(8&kJq52ys6n&^n&T hRX;ulV^z$=!obLCIPoFGFCfL*)ydPe*PZ`=696vgXE*== literal 0 HcmV?d00001 diff --git a/images/country/pg.jpg b/images/country/pg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9dc2d40ae6571111a692d0ed62c8881789b13117 GIT binary patch literal 520 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rV3W;M?zzSBt3{p@IRG==vz{t$Z#KI0YgOQ1ug;h|IK}f{VF_2AI zOerYwBh+F>dxoW_I>irvxb{kU&qChiVe=KWG+9(F!%sc?X3KB=ICy!0mWb^KiOik6 zOFhFkn#XbOW3#t@eI+!Gbw^Bq;cSJan{IKiFwFk+hT)3Wo@Y;%Cm*yvcQtZLcXRXQ z_whj2NC`49F)_oP0%R~Uu?R9SFNFAt5$J%)yk)_fi>&7ZRZD|aBL@@E?W_!ni5DS$ X1Swy)W0H8tlxcx?``!8K|K9`viYjru literal 0 HcmV?d00001 diff --git a/images/country/ph.jpg b/images/country/ph.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3c0f4275a019aee3fcd3eb16fccdb91b08cf8957 GIT binary patch literal 511 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VJ+5g{S;DCt6cdE4lRf(Xf zVPIeZt6>rVYShQ7fDNpG8KfW^s6a)4fsvVok(m{46BCfn$|fkpAgt)9WEhxu5Na!< zJ;S~?-Zc;QhotG+@htf&_J(c!r0?;Px8K_S`SYpPpmX{Wg`=)7=b7XP7O#5D-4_!s z8&#SV;5EaqTW@ymLWT#foPmPYg(v&xop7=J)ZHNR=Q+@RIY9;nR#s%6GBPm>8Zxl3 z3MEd2_=OQ@v%6`*L=$a}66IrEKut1&Ku05740Jjp0~0d~n_%EYi0?pJmTy%uZ1;OS LdGUq)|8D{Se|K&3 literal 0 HcmV?d00001 diff --git a/images/country/pk.jpg b/images/country/pk.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed1c51daa149eb4636165d2ccd4c831b3f0bf96e GIT binary patch literal 490 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rV3R&Y(zzkBL4pg8Zz`)4N!i;1N6C;ZtGpmpx1Dm2SJJd!-dxrPCQg*c| zc`q~`hMXy0!4z@MYHsnyjTz@|eDu4w_74AzgxOqNN?b=oa>eIwjg8y5Jk9NEfYEQC zhG`pmm+Q%{`d%QqFtnFNI(zF-8} oYhvQQ6sS;2kb#Mb8CfMGGcd3c4}w(!-EYrOb@o=_I{*JS0WBeB(*OVf literal 0 HcmV?d00001 diff --git a/images/country/pl.jpg b/images/country/pl.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c07e33ce320527f8d259d6c3080611ff34c6df27 GIT binary patch literal 468 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<pZR3rl7 zAt_=7t6>rV3aMjN05OCaq`(QNKv{r+iIJI^g&A%JBNHsHKed z4AQ*|Yb%}@#x}fI$JkkX;{4W_clG{jiWqrsCiJ)|#WUMoDfK=mb^KG`)qn*e!3Q2x ztkhR8a5nm6P|#(s4YW&4kO5&0#6D&bhU4#mK}WD5f;=Ay_3d PNaY$+&!^T8{@(-uZiic@ literal 0 HcmV?d00001 diff --git a/images/country/pm.jpg b/images/country/pm.jpg new file mode 100644 index 0000000000000000000000000000000000000000..caa7703451046421bef01862458b03863796b321 GIT binary patch literal 525 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<sHp)-Ot^z)hv-mV2R?g;|5Fx?t9Bm@E@qX_HMzVPFK@o5~)iU&YPCV_U~k_ zL&8Vdl`f?(j+IvLc)Qq=!&txlNT2S6TSXHL*!YZ}EzRrRdGXqj)#7tAlewHWHvhQ} zbc~!J0}~SiJIEDK0CbEX1JEUjMIRs@V+1;+QLVHqq-J$gbXL~^2lokZ~f*Ga> eL^Cn~y`kvX2=OgQ*M5f8i65+0@*C^_-vj`&?s!iC literal 0 HcmV?d00001 diff --git a/images/country/pn.jpg b/images/country/pn.jpg new file mode 100644 index 0000000000000000000000000000000000000000..50f8e2594b861568f893e5709b64d9e2b2869d07 GIT binary patch literal 507 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<V}S^wW+;DCtUVi2+isuDp{ z!@vMh!z2LIn2c2cGuRMjkOGhi$^r~bjLgg|%y63+nV4Bv1sT{3g@lzH1Cu5~EoHQ4 zh&{Re)_tc(^TdKZC2d0vOuDPgu9DuodaLNZY}-Rib+XrO8!PmobD5#l|NVl!!N)~F}{ GZvp^&@oNSE literal 0 HcmV?d00001 diff --git a/images/country/pr.jpg b/images/country/pr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d55e41ea4e1860b65ae40c2b8debfb359c1d5d0c GIT binary patch literal 518 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<)t9w-`7;&SzlI+L>$* zR3-x9At_@7t6>rV3e{s(zy?;p3{v0=RG=)tz{tYH#K;P_jgg6&g;h|Ifz6OzNLbYI zBh*qxdxqBquWqeh<$lR+Z;^|M#gnpV&C(`@TOHEp>gzYJe(jR}@nui1*&?pk2s{2B zb(=MB#Y-n#=rGfFW99VxQ83Bj!b#?e$9wN@v6!kDe);bz78x72oj@1J2{JISF)<_i z0q6pt0}NRkKR|rL2(Pv+95TvP- T%Q=^6>)pnvHRn0r|Gx^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rV3bA8Vzywyn3{p@JRG=)tz{JSH#J~?^R59zAXnTmKOxdG9#;IWM%~#z#=4U2z4bhNJCMPZ_Vs&!Iv0qKfiGa H|9=wzUUO+= literal 0 HcmV?d00001 diff --git a/images/country/pt.jpg b/images/country/pt.jpg new file mode 100644 index 0000000000000000000000000000000000000000..69ef1233edf1b4edd55789018c0cef57b2dab9dc GIT binary patch literal 499 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!)X0xj0mKkykb-oe0%ZXPCMG6EW>&amj7-deEUXM{ijG3UB1%RFp_Ve* zGra8eTdeQTvMKS=mPahv8IE6tx~eDW2zmY%j@`NS$Hgb92Sp4-{0l={vL8s9v763y z-jeg9P+CPIKqS;q{b|UBUHh3QrTIN*OMRztN#kEJ&~^zy1}0`CKLR6$iGf)W;s-{c xl{>lYW&+j80o4KBh@_HH5U7w%#4)jPAy_ptNcEAN)1I1dPQ)yTU%l%8O#seAXJr5Y literal 0 HcmV?d00001 diff --git a/images/country/pw.jpg b/images/country/pw.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e8c58576039c631cefe990dd40a866f3e7f7f652 GIT binary patch literal 516 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<TY1)b>J|pW zvgjLgS86(?Fdp#TaGi?cdrJ41yah&hLB?4%93q$iRf;bf6(X&4CPpieP=rAbqzy PnT~ZaGha^H{Qo8Z9XWI; literal 0 HcmV?d00001 diff --git a/images/country/py.jpg b/images/country/py.jpg new file mode 100644 index 0000000000000000000000000000000000000000..098f563868655311a5a50a52a24210b410dde769 GIT binary patch literal 497 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!)L4&I0Sj0GGe|)=P=S&F0}~?)BMUR!CPpS^1{PL9MK&SBKz4B>sGW@V z46`4v;az95$<<`7OtSZF$@B}~Z=N*$dXDS4oLcFw#(PRWDK3(Hd+Ka1eGN;Ku2|r` zLAjSn!{AuSf(+iNUxUAjg*`Iw^PZ~pDzu@K?cjq?tRVME2{JGN?Lz{LObl#_6CXmn w!3eZAYeDcdsW(8iGJ*_@%&bUCfpN$r$ik{v2vN-pQZ0V##^E#XyZ_$=0RKj6F8}}l literal 0 HcmV?d00001 diff --git a/images/country/qa.jpg b/images/country/qa.jpg new file mode 100644 index 0000000000000000000000000000000000000000..83b598459fdccfb4ab0d298f7820ca9044d7a574 GIT binary patch literal 501 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<}zvH$}UBQrBA!XQQ_W)?w3Rv|+MHg;hp5l5)C zjP?wlYC=AJvsqS^u`Fbo8IwnItNGSX%kJFz&tUU;wrpUAudauel&jrL4sE}N<}Ejx z*yBpCt}c0ZZ26x{tA1-g?%nRP{`1Cj=FG{Zl9K-l{DWSHepc2#v&29vSBOVOjy)de z8gW5JAVBgC10xfIAjC_IKo_hGUj|eqA;`$UjG~H(fst7V;xUl2^8xN!%m3d50GDoR A=l}o! literal 0 HcmV?d00001 diff --git a/images/country/re.jpg b/images/country/re.jpg new file mode 100644 index 0000000000000000000000000000000000000000..678a17aa3860ccc4814ba3941ee14a159bd4d431 GIT binary patch literal 485 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<8K^m=Sg{GBLBT3No+>D+(DJ!K`GoXSkis zm~rZ`K(g18`HYi4ufG^HeOA0xR@sC=!*D}A_j?9~^Q&%t|2;b{b$QmDqq5qpGTGN8 z8Qx2NUHhM*YKQIJq|AeE%edU7eyKLTmjYTWAqaFkGm`%p7?~JY6CuuL1li}zWpf^= hP)d-2krm-Qpbnru7B(S>Qf83Sbxcnt&RhTgCIFKpV;KMd literal 0 HcmV?d00001 diff --git a/images/country/ro.jpg b/images/country/ro.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bedfbeb8fbb5a27b521cd0e0a1fc83b39aa5f4ec GIT binary patch literal 488 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<R;DCsRS&HljsuDp{ z!@$4_R>LF!)ToYC0mKkykOD`b0%ZXPCPrpv7G}6jj7-cdtbz>eiflr{hDMHwP)ix@ z8E#vwxVDMSE2^|?+iK&EDaPr?{QQh6uRS$!`nK{>_bi>~8&Zn?GgRH`etXPs;k3D{ z7`wEXR@h`8;AtrC`E~8V^$^e69_!{=sq&1kckVX@S}rNb$iRfK8R!HcpOq~L;s-{c ll{eXDep{~sR4O3|^eU=SW(KxGuu5i-%Bv|;<(~h)2>{7jXKnxh literal 0 HcmV?d00001 diff --git a/images/country/rs.jpg b/images/country/rs.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9391d718a044181532555dd63be3ffb558615049 GIT binary patch literal 496 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<F3p3mzMkYaK7FHn!HesbeMdO7~D;ez> z4n3H)R6J&%?i$l=PRpKMoicgF&3~J%W=u$^teJRfN6zgFYxuqHHQ%aGI@&nb$Gv@D zj8fS3-M(5GWw93|?2df6TBI=lTs_cAX+Z{L`+ycRGB7bKvN%HQVqyf^m1FVn$c)!v x*{gx-Wd#|Sm>5~%4g`8qkWrBV=*YlCh-W}L?80l6w8LU|I@bm*eOCYfCII2|Ye@hA literal 0 HcmV?d00001 diff --git a/images/country/ru.jpg b/images/country/ru.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3c228e131b6904c6d1db186bff9aacbb866e5a0f GIT binary patch literal 478 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VJSpVN*;DCraPLqoVsuDp{ z!@$4LF!)L4&I0UKBWGe|)yP=Sg70}~@NGczmPCPpS^1{PL!K_Ov9LlIHOjR&E& zGTJl5MxOj-p_=2mF}+i!@$|_6|GROo)goLq`nfYC+>S;zPv8i0tzP=TwSU!~P^X6E zc;*d1R_d!4I2(PJmYwMS6yzXjK?X(^X1HZQ1|tI#3#*9XM2N!~f!5@HseQ~h6{uKJ X5GaYJn3)Z#lo_P7km2rm_5U{k2NqqT literal 0 HcmV?d00001 diff --git a/images/country/rw.jpg b/images/country/rw.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d62c9b250a5c6ad165c3fd9f5e87250ca23d9036 GIT binary patch literal 496 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<vHCl969gUo_e4jDM1D%CT3(kKpvyw!iNwqfiwiDebT^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rV3aR5!zzkBr4^*Haz`(@F!h~cQBQp~VtDqu-5Sy@JAk;=idxnis zI$x)0RqkpNF7Wc?Uc#dy!Q^S{ckbW3%Gz}o-7{8dZL5klH94?tn!$y}8@7(;>MibT z?^Vopdd(2^NKqhYa{~i&n&ngX$@jEgo|2Ee>t@s*AHv4?i*4(i`E!8okPu{GVn*@@ p128NY7?~lyVFcPQ(-|}$qK+BW(~Llc5OqKadxkiEM&bJZHvxFRV^shE literal 0 HcmV?d00001 diff --git a/images/country/sb.jpg b/images/country/sb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9789f7bbe805694d80b7d06acb347d6cfb947ac7 GIT binary patch literal 532 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<R;DCrWJbYXaR3(C@ z2Iw)c8YTgtM(hfh!3vl`3iN>{s0uJJvM@3;v%)Q7WMXDv6=YyD6j5{(5>`?UDui0g zXwP7%bpPV@l8Z^A+YV<<_`G3O?uObWsVR@QGulo3aei*3$I4~vr**B^c->G(H@0eq zgGPX(eZ=wOzt3&I_H_H|EqRMXHe6wobjWSE#38%!Ny-Py%eR}(e!F&il2Fi=DXV!F zqzE=2xDIrbf*=DUGZQ#+=GX|lGHTke7MtmepY!r iP^*+60}~T7l1>I7Pf*bjqKO%#Dd~o)W5j*+|2F|Jn1G-F literal 0 HcmV?d00001 diff --git a/images/country/sc.jpg b/images/country/sc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4961f00809c340a156b93a503762a1eae8d17fa8 GIT binary patch literal 538 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<tkqR3rl7 zAt_=7t6>rV3Tb0izyeml3{nseRG=)tz{JSR!o&Dy{tdT&iZvg)>kg^w3$DsyR^Td^a6SyX-fUH`k~r)LyeJq&U;2>B`M zc~HVWZufPdo8$yRZej&F1`2>~Vqg|hG<2N!0pdSKpmS^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VJSpVN*;DCsRP6?9-suDp{ z!@$4>R>LF!)aZ;=0mKkykOFg{0yQ9mjggs|6>b?L6Eh2|ARB{_BD+$fu$W{NYNAuKKGDl{Mc-~DB zT;j5g_4C=<4_2?rymf^q@Yx-_VBVQ=Q_*#yklLZ%y5eVFFZWD}N>=>#q^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<pc0%ni`f1m;_0R|>UCT13HxJ@9QAOkBKyO5Hhu!y3vk)u;$VbKSu z-Hi4OmuA)LoC}l4(s;9ImRaT^k2lN9ukKm){qNiG&AIkhpW2!%Zrr1!`1H%syoG1g z=1z*5@LImCaglSXY(vrE>sLG^jMW7cZkfvbW3va^FDb~#z{Cu<9LNCiSp*^8U<6us re63Ss@*1F0X+Z`?78IpS42;Yytip<5#mpeZt0(T}agvVj{(lny8J%c+ literal 0 HcmV?d00001 diff --git a/images/country/se.jpg b/images/country/se.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d5861cce351cf116794474dee6e4ec5d3e4933b6 GIT binary patch literal 525 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!6tc&vfC;RC8Kyv4fPs;jnT3fNZU!S0GYc!5AcK&ip^~Ghav;=FMtg=u zftdy?j3Sak#BbLr3B5j%DRJ!ZlXZT@lPc|Zt-3Ys^Mq9Or&&01SMQ_VxkM5V26Nkzl$8DGyk@3k)qO)=RvchaPGp`Znl4kwh^Czt|VD<=qy z7G_qk4mtNZ1kLU63}j^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VJ*#F;R;DCrmrVYShQ7fEBEO8Kj^Xs6bhOfsq9WS>ZM@GBL9VDl)LL39$<+8#*RJEoHQ4 zurc$v^I3K7=Mv#G#8Q~y^DnVuz W)`b@#jt41SK6_Wn0qIx&Zvp_28)7g3 literal 0 HcmV?d00001 diff --git a/images/country/sh.jpg b/images/country/sh.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b136821da3dcb89eb10ad86da988ec648aa1d1a3 GIT binary patch literal 500 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<V}SpMH);DCrOX82qWR3(C@ zhJk?0tT=GW{?7q2?_!XOd!Avw~3L7S&)U5L6OZ+NLUPNBcnY-bNVu= zKarA&=`|Mb+>Qi!YS_-&_jBX5m;CKdpX(Sb%R2U-K_nu8`%T2sjn4aP{)$~x=o38| zzs{6n!J)PW5!UN!cb=bF*Kai8RLB(%E9L#p^MRI23owp!%HJ(dqw{l5tSFMet3 literal 0 HcmV?d00001 diff --git a/images/country/si.jpg b/images/country/si.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3a3e8d596ff9b67c95170a6b0b69b5a2930a005a GIT binary patch literal 489 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<afR3(C@ zhJk?ztcFPdsL>v)0*E2ZAO)#F1pOiYX{jI40W7@3#_Sr}M_4B3Sh9fJ}NLM>&q zXYkj^Q_eYZ*3j)|vCCRL&8CIXp=Qf|#@wR@-^0$k3 zjhS@nR(%ZRV(hJwt;zB^dGD~%?;9pv_OpQYN((YDF|s0gkAabyfr-_y@gc+mj6nOA meVI6gd7nQ-H3K``g&3n8kRL8^_NbYoupzX^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rV3W;M?zy?;p3{sE|RG=onz{JSR%)|~h7Gw}36ALq|AOoABvZIi&qLNeN z#Dh?K8SNRmGqzp0b(%4*`}j)NnNLOgLS&As+Xn4hDsK1A>vPYmyjz=Qi8kF;Vt%@f zNynhL`FKpdDc@_;GM*Mu_tqc>hDCp}9Jp_9NdCQQ^OGwq#_J>m3c4(RT?e{DN|1qx zi5X-+3@|b=2QnxoLj1!Bw0o8dSIdGMo6~m!mCFh;FtVVi2P$U~WKa|`bcA>iq@z>F S-F)RE&GaL0F5Hj&e-i*hx^ZCu literal 0 HcmV?d00001 diff --git a/images/country/sk.jpg b/images/country/sk.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e294871e3b29cb5d8a029d50874e16d3a5d36585 GIT binary patch literal 512 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<!z2I{GRLZb4Xl6}q#zrpKuv&wiIJI!g&l4NBNHu OgkH<#?0j4Q|0Vz#Eo@H! literal 0 HcmV?d00001 diff --git a/images/country/sl.jpg b/images/country/sl.jpg new file mode 100644 index 0000000000000000000000000000000000000000..26748ff7e88b0c78b106772fd39677bcb1e1ca79 GIT binary patch literal 485 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<Q z|ICA0Cq%1?+I#Jbq^x(GeSa^h-am7F;HT^@*WTRfdw(ML!RL94pDn+1Ns3=RNl0iy zl;Z}b!z;=b8a+_-_E%_5yJS3v18A$XAOjO4E8I#TgOQ1Wg-vnd2Z-|-ftF=QO)T)w gs|Tu<6l6eE42(P$5u=4*wag&3Z8y3y^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VKSpVN*;DCsRHpD9fRf(Xf zVPIebt6>rVY7ED!0AdI;NP#p^fwBMt6B8pd3p3m@MkZz!K{iE023Dm&A>oUOP)ix@ z8LZAtnVMAfb*ZirTc857WK19D{r-DvvhUqx_2y4obMT>C@>i`n4~r_5fB$|}>v}h_ z#aVWOa>x&cBkrm0O42(<+ z%xpqRfe^ni0^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<N7cu Z9>t}UO;Ax7;unz8c7rc$pTqy(1OPuFVnF}^ literal 0 HcmV?d00001 diff --git a/images/country/so.jpg b/images/country/so.jpg new file mode 100644 index 0000000000000000000000000000000000000000..93dd4c93570744d2f21964b1153179b8a7de6b71 GIT binary patch literal 484 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<Gv!8KgiTs6bwTfti7kg&Axr*c?VCW)=okHbp_FiH1-M8SNQv8+<5Q z-l}z6)>Wl-?xMA?I92|>kC`maE>!ucr|^!SiMDIk`jraJpZCU3$eTFpRHcHFMkt#{ z4daEsQm39+FP-}6r^300#f&O)jxYKZvVj)M2r@7-vm&`1^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<#}0yH<0p=rwseC1sL(?p~qamFcGrRj&_S{Qh^Mt>bR{>Z7TvSz7xwlkfnp%U zCyYRQLv*gl7V!X;$_g?tGO;76WME_!WME=u5ej?+@fS$>k`;5(Peis|{w)9hCIAz! BZh`;+ literal 0 HcmV?d00001 diff --git a/images/country/st.jpg b/images/country/st.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2dddf5b9680633897bc8def9c49b2ad8f08bc01d GIT binary patch literal 513 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<R>LF!)M$)V0W(+uGf06vP=Sg70}~?)11l@sCPpS^7FIz;1~#FJ1g_ZmG#;u!Wds{vs=z= z8+~qf<>Ak)=PVv~X0bahV33&bB73`N`0qJ~JmxL*vI}hJWb5lVAyW@@hO{8i83;E3 z9mB*d$iT>w_yOV{MxgCB?pu~fioLxKR4xNl&cwtFcQY_TS%6$YL&t>>?}60UPJNek P(rE(Q`MQtu|K9`vd&qF4 literal 0 HcmV?d00001 diff --git a/images/country/sv.jpg b/images/country/sv.jpg new file mode 100644 index 0000000000000000000000000000000000000000..27eff9929577520d07f7c58e2b7db75ceb02c78b GIT binary patch literal 490 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<suDp{ z!@$4>R>LF!)R>G_0Sj0GGf06vP=S&F0}~S?GYd1^CPpS^K^6v9Hg-j2Lm}ZnsGW@V z40W?U?up&Q8Zzgo0P|7KOpWSIdrw~ZYw%byx_a}}W0^|kk6KL1Y;VLJ$+UF)C?j}i zr}x)mjUo~O7nmCM_di?qM0(E0Jw+*+;X!Ky6*joaJI4d9mlkATVq}He4P-DfF)*{R p3ND2BgAr)2#p$EDv;NEnsumYyU`7oTpmIluhd?U*iv0iI1ONg-Wy$~m literal 0 HcmV?d00001 diff --git a/images/country/sy.jpg b/images/country/sy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b07618f60083bcdc547b113c64a921525ce57e85 GIT binary patch literal 478 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<42-OB YcYzo{0Ty9Vhz~&OuFmmYxBvf50OoXDm;e9( literal 0 HcmV?d00001 diff --git a/images/country/sz.jpg b/images/country/sz.jpg new file mode 100644 index 0000000000000000000000000000000000000000..373009dbc8faafdd1d5902a896adb2d6af34e79e GIT binary patch literal 514 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<&WUw-`7;&SzlIJ%1Fa zN(90|QpEyR!Xy9`%EzjJ8LWUAq`)4iKv95!iHVVgi5YGNBNMYA3j-^gqEMo+k|ESa zMtg?o6W7@tZl7>tw&yet(NlYPu6||TWuEqH-`>|V(-LwwrY+MmyP@h4(V^Nu~2Ec@NJS|;+1Xr}A2_JwbHQ;TK)1*+)p*xtM{jLC$pp3th^Ou8Ro&e-i-Fzi`t4 literal 0 HcmV?d00001 diff --git a/images/country/tc.jpg b/images/country/tc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eab47396cd330309ecff8be7e2d3a9ce80fcd156 GIT binary patch literal 511 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<e#bPLnwEi*n*VNnYOy)FLGabUCsP29OpdM~HiwK^ito L9G)Tl^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<R;DCs3@u}VqR3(C@ zhJk?ja0%nkce4qkV0R|>UCRS!vxJ`^q%q)TotZYJx?7||VN`^*`P-_|O z87>H1()n_3%a+&5sjtpFQoVDeMeW&jo5w5W*{?J(aNd1L#XL99?%T5)FZ&jpRlO1v zWb0vY)a_LFEkA}7=GieHd+TS0ZmU?4A{{kD^PB!b-QPL&Kqp8E0%HSVKhPmS9uu>W qA;c?;KzrwTtI6b-Y6BHZ3Zkh6MkF(vP$5_?Ge~W(Ssvf||2F|Hg=yme literal 0 HcmV?d00001 diff --git a/images/country/tf.jpg b/images/country/tf.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e5177ce0f4f290a5b548bf5794093688346bad46 GIT binary patch literal 524 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<V}SpMH);DCtUlW?sEsuDp{ z!@$4_R>LF!)EJCa0Rvb8Ge`l*1a$!hMrLLv7IwHzj7-d|EP{#*Y(m10f$XA6%7#W0 zp%ydRGu*zk;Y*ybmagNJ&=9t`Cv61}A7)Gy&K7=YZ+UF#BjyX6gfbTNi@fx1*!gB@ zVvI^R|JGj*N-mYV91eNAVb+#Uw;h}qQ`t^39f(=JZTgW7E&j-E1-eT@kbxQ1b3k`77(#r<2y{qkWZ(*`a-d3CK?X)9g!6&^0I3udHgrrp W2=OaO`Kql(5(kX$Haw~Se-i-DM|Ud# literal 0 HcmV?d00001 diff --git a/images/country/tg.jpg b/images/country/tg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f3280f405ed442545e8f2a0c508d71766a2d5549 GIT binary patch literal 495 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<R;DCsRNeJx+suDp{ z!@vMh!z2LIXo*z;BiImTkb-)k0tEpEMrIafBy$*%afvBy*!o`~|2cD?#H z$W)l+z%O?#W0}?qkG*&83s~vN#O}V{;W^M^NkK*iCT1l60b_)jsc|FNMkYp}ji^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<{Ib zGjuC#?=ID8=2@Wnp!fWiQ?zXv;wY0eJ zrZrr+Guysqve8LdudVO4`^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<};B8p0ej>%9<8SNSB zu77;-RxsUarwj9ulWOYB?{7}>TYKxAeeP24pHo!%xRy-mcmDZAaM@GaG>zFMcUMfg z7|7Uj4j9;zc3$1d9=zvX$sNt`ptT(fPAIcK$Oc+2Ey%#Yj_ON6Az?+O#19Z(Faj-2 nJEieP9;jAIkb#jEMJ*!(3#-w>hhU}5Af-b29NRwD|Gx^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<^OY1&=)5l+=wyLW^#^Of62fZtIOE*6GUAtLqwq}tSi`1d+2VM4| za=U=ekrQNKWMO1Q@({>5h78O?!itVyr!X-BopL4PiS5&%wwtq!1ziH)-vMeA7eo&* R21Y?Ah+jcE&ba@-2>>E)d3yi= literal 0 HcmV?d00001 diff --git a/images/country/tl.jpg b/images/country/tl.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a980f8aa569fc3e8be38fa977e1a79435c921a77 GIT binary patch literal 499 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<^wdu_|B(o52iH-~&{kBEZ1J$il$N3O9q1iJ65}P?3Sn&@oY1R7v?D)KW%! zhNru0cdeebcC~iE?&^|Y&oIRpr=#xI_1tcJQ+|3~Swd~=gCi#N?Qz>_4^%5F$bjrnkS2&@g@hMEd<9az^kAK}>dwme=KnVV)x2i2 literal 0 HcmV?d00001 diff --git a/images/country/tm.jpg b/images/country/tm.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8fd848071a57b966078865427e8b8ef4800bf4e4 GIT binary patch literal 508 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<@H|MixdEX1G<1Ow25-f{JVmLL!F3O3F}68SNRi zAJ6hO-Et)$*yzVcV~gc(1zyjsrSJWHubzD4Y0^o9b=kF>rfIYqf0LIL-QAM@cHttA zb9+nmHTN7n{xZqy{5i89SA9GRR!?9%9$dsd*Ck(ODp%;0)kz|fED3M;_5^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<kiR_piYO*u8|x|~=jhm?WHgNhT9A58O0c9(@syV^F(O(MO3TYg_D&>fP33{1=@ z9%d3`U=&t_c!v>a`-L2#H$a6lKw%`;0-epsz{J8VD6A9+@fk?1z-u!%r@xg&`~Tkr E0E#hc-2eap literal 0 HcmV?d00001 diff --git a/images/country/to.jpg b/images/country/to.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d5fe182845a6fd5b1daf58fbc49497b590c9e5c4 GIT binary patch literal 482 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!6ynFK0AdI;NI@`AfrqQ)>9RKj`A(3L0bwD?W@ZLPLx{^6f%dp|-XRb#=%X!oI|2F|k&19zl literal 0 HcmV?d00001 diff --git a/images/country/tr.jpg b/images/country/tr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dcda21ed35eb8410ac4be2f8b54e3ae9d3ed4989 GIT binary patch literal 498 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rVYUIYMfE}!W8KfW#s6a)4fsuugnVA)C6C)Ediy$k5kfN}Xp^;Qo>X#qwDPFE-x1n6qrpu(I|18J{5`sW4FvBeeG8mZ{m<1ue wU;M1& literal 0 HcmV?d00001 diff --git a/images/country/tt.jpg b/images/country/tt.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f6eba6dcecbca3c8265218b60b53619153572854 GIT binary patch literal 538 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<FX&lsx$Hn0L_kb+{M0u2EMCPrpvCRSFMO^i&;EUbb;iiQj#Y{H^qN=A-J zg%hC`GuksO>(gA=_b_kq67%KD<6eokdhAqWoMCv(dy?@_!TGCaeRPb@oAfxR$?iJO zq+`i}syeg$4}SY+e*gQ#OLtc%hlI}H*I`)h^d!0W$nu9Fr7x(@C#kP8`^7?@dv3>_ifWCS_r(8B_2+4(@#a)Jzu p%q+|>kAPK!{G#NT`0xY7+aL`yPQ7^7sXIp`C-~%z@A3a{0suije<%O| literal 0 HcmV?d00001 diff --git a/images/country/tv.jpg b/images/country/tv.jpg new file mode 100644 index 0000000000000000000000000000000000000000..24d2f7fa48a0602bd1daf97cdd63f8d3ab5048b9 GIT binary patch literal 528 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<V}+5g{S;DCt6gd6V%suDp{ z!@$4LF!)F_Wt0W(+uGe|)`P=UGt0}~@N3nLRd%qm7EW>z*q1{NX3Kz3mfB}2!; z#z|0%8SNR?-ugCIJ;!zytEQJ6H{V0qC8hFiCvyHX#PL^N`==!$lGXA$`(o3wTVY`? z6U_Bg5~k)k2+rSee%_XUOYRjOTd`g3KLghSo|BV*t8e~kwR5l2?nU=&bjtbuS=6?? zRDD#J!t%}fd|fHfVN!w&Oiau$M}cUd!vq-&6CoaC1iHmDd1>zi;oT3;1C`4NGB7f; eq9|uzW)Tzyx*p^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<FX&m5})cCZ3wkOD8D0wnmiP)?A6frTAz8;HTkBFM}tWat=J2yr|k(6UIwj*Y9e y?LJ>N1nQ9$1gZf#3ju(RWEEsE6mkrNcn74Vw>i&b#kNJ2VXs%OWqeov|0V#uG-#Os literal 0 HcmV?d00001 diff --git a/images/country/tz.jpg b/images/country/tz.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f58c8a4f1f2f25632d0281dce2a614a9d32b7641 GIT binary patch literal 539 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<R;DCs3C|&|oB!Z@d zfq@CEgh>FXuO6!cR&aGOpMGdtbz=RiEKiS!peq5jZjM& z?HSxwEeLU%m~xt-Z_}-97dEJTezj;3ujO7(u7a<8yf<&-%wf171U z?DU#!pqu0c8BkmV^cAC^A*)az1G9*t62yayK<6wB*!d)SS)9Y#nB7WWTT*9E+a3?p pEeF)i$O-ojkip2zz{H}Y960gd2Z-lEnnNFQ`wE(#+pYWmCIImie53#X literal 0 HcmV?d00001 diff --git a/images/country/ua.jpg b/images/country/ua.jpg new file mode 100644 index 0000000000000000000000000000000000000000..092a7fd5f5ef4bdc0982c94b0c3e50a193c5b426 GIT binary patch literal 477 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<Cj;<+}QQo^VZ>%yWF3@&zbIZF2vHRaO1YO`au(Jn6F%A@#H0k-^!u}5nDI= z6J7y9-1Am#a9jNNGsr4wL7-I#dw>=)F)*?UvQ4}Mwu6ZgXot)?9NVn_f0 literal 0 HcmV?d00001 diff --git a/images/country/ug.jpg b/images/country/ug.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1214af6bef75bb8332673e97638d3827ce20816d GIT binary patch literal 503 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<RyHAaMX`w+p;j{5Gu$ex z(>6KMQz4|>F3Do4xLreTZbQ%%0cdTyvE!KD&X5e~p z@x-|`rzbAubh!KEk^|Ef&fh05&)GdeSIcXAWyk`@rPrVB2f9I0kdXn&0YH~9G6^y; zPl9-b5omSlR*ikn=L40>3IgTW;ckT~WfNL-@FG|_Gf26~l`AXH&MeQB|9=wz0n2Z1 literal 0 HcmV?d00001 diff --git a/images/country/um.jpg b/images/country/um.jpg new file mode 100644 index 0000000000000000000000000000000000000000..04b15aeaf622f345756b83301bc8cd4d0c483bfc GIT binary patch literal 509 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!)M$=X0UKBWGe|)oP=T5N0}~@N6AL@sCPpS^7FIz9AvQ(BLSYeQqoBkh zsJ)E#49m8;>26v2wj5>N63N?sc@E==Qr{ShWiNH|g{5@YEtSsQH`kBP@tLr4JkT+c zf((qTaEE{xEDXT#P=xr25orI6Z_1kWK$X&hKxd;U1v;An= G|4jf$Y;AG? literal 0 HcmV?d00001 diff --git a/images/country/us.jpg b/images/country/us.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e23d0fbd298549a230501f1f49ae02929a1492ea GIT binary patch literal 504 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<QEKlaM+c^jRT%VnA>h@_bLEQs8Qdw2Z)83hJ z*ymqfUOqGLdZ3}W14B6P;>P}xmv2wLHaVj*iK|jcSkuH+rsdv#pev*V8JL)u;Z6WD z7@1fEfo_2Kh7oA@)J;MY)J-FSilu>y84>OUD;8v6W?`KO@ft|=#x)kLbMK`T?f-uh E0FQ%cxBvhE literal 0 HcmV?d00001 diff --git a/images/country/uy.jpg b/images/country/uy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..21026a6c6df7217211b0d2669df08265f4cba415 GIT binary patch literal 493 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VJ+5g{S;DCr;^<6j@s7eG) z4FdxUSPhc^P-8eA196M?>iiE9caIlAR_}4GqO*C0l*-vXbABK rBhcDrA6KStf6oIIO9%q}%M5oZkip2rz$^$>$_!Gv^QM2u`TsWoUQ%fC literal 0 HcmV?d00001 diff --git a/images/country/uz.jpg b/images/country/uz.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b15d73553c2a94e8b5a20dbb4b905c377c03b47c GIT binary patch literal 515 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VJ+5g{S;DCrG_-jrCsuDp{ z1N0bJ4U+&+qdisyOkf4fAO-S31*!rJOpMITOzd!*7@3$^SOpo_6om|h#grWb6C0t{ zGTJjN+!T@Va_#zOzI#oslmuROwArXE&{%lIHiqf&KI?yT?whe)TUYgK`@J%gX^A>( zFZ0+KvOJL&wh{jPcI9`|dlF$9ucoL}xUz{@1Q@U@zYevY_SVW^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VJ*#F;R;DCr;(@>iZR3(C@ zhJk?%tcFPdsL>d!0v50WW{`q(paN9^1|~*kW+ryHO^i&;3@n1I!b(DhijIMa6Bj;& zTFYq9&}ZSh$K|M`s>qWCUsiYj3=gc1?fBM`y6e!K{`KeUwWf#c>2*@M5h@`gzWu0o zxwR(iAC7~Mtiyr!$OtkpGPA-h0WugFn1q;F1r-lMT+9eGeuGU2f8R#A^+5HKK=mlf W83Y-aScDQGt_LZebgOyw|C<2Z=v{XJ literal 0 HcmV?d00001 diff --git a/images/country/vc.jpg b/images/country/vc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..131da6ef1d372c159170ac028f0d671bd2681cb8 GIT binary patch literal 513 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<%PR3`s?nQ~dQq448GqlwJwGIR4>y|UiCSTR*-LEWrLi&dK^DDkB585tkE zcK&X5)aqSn7gg7Bv?PVg%lIU(tNOn7*6y&iW=jrk^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<<;g6Po)D2p0dkUM5?Mzdl*=uSzJ8H&(6Pb?f0u%Q6AM(s(ngLJ{@|u z{vDI2Wax>KM_#jkm@D)&KVjY##uD*+_0bRwHd71vs7ag3pGZzOXFIX@b3D)`(t<$$ zvcsJLWH2!>vakv*x(M+SBhUeEm#zgby<27vR4yfmrWzQjOw4S~3nBgksn%HCxtsm} FO#mW^ZLa_T literal 0 HcmV?d00001 diff --git a/images/country/vg.jpg b/images/country/vg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ff6093b6f0d29291ac9610b1acd313c9a203a89c GIT binary patch literal 507 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<V}SpMH);DCsp$ndELsuDp{ z!@$4_R>LF!)R>J`0V7xeGf06wP=Sg70}~S?6Dup+CPpS^7C{D9HX#v3B~iz~#6qa8 zjP?x8^)xN6d=}-2VDq`oi75S}ybLD>Xn|G(6wzuHl3_5gejN0X?X9ZXlIu%eMhGNIaNd7Wb{*&nDM3aCCT3*+ z0)v5pNzoDF8%Chr)13sA12_HMurD2`URscWk%bxVWFUi?fssj2$T1M&JCFv&w5-!H JS@HjG0st&DYwiF5 literal 0 HcmV?d00001 diff --git a/images/country/vi.jpg b/images/country/vi.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0735909323d98b0b4ee439181ce6c6d0a4536710 GIT binary patch literal 488 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<cdMn;4mxSp*qag@hFi14WD+6APiX zGTJk&KJz+Q=YF4P+tNpR6GGVDXrzfV@AHuJ_4LBb%YC^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<&Zvj7-cd46K5Rj%-4PqDD@E z6QQ;;+B2NYNWCuCTlu)j;KO3$S+DL3_$}|^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<bqUQ16Id_x*LtB_e(a>$`4{9HZ03jTR7lBmyB5TMJMiMaN}x+51sM>I z06T`6K~PcY1H?m&K^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LF!)TobD0Rvb8Ge|)_P=Sg70}~??D+@E+CPpS^7FGr}K}AC$VI^h9#D!2> z8SNQ%KIaNuwP@9{$|o(A9aBoybR@HSvhdcNydB4W;!=aPCQ@YO(=oSe< z24++b0o}qN2=Ngk(EjMq^KL+Oa)Q9X;e^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rV3bA8V05OCaq#zxrKt+IoiIJI!jTvqRBNNanK?XJp#U3r8=G@ zt)6k2^WGkpd5dq=J8gZnHz}g!^nor>$6h}M2{}{UQ|lZ~UDA^fwdi$Mehu=9gdotz zC|(9SguxKv9Y&z#OQY7s?kWeXWCQ`YgBgH6U||phs{|Th&meiOkYW4D`~PnO01sYk A+5i9m literal 0 HcmV?d00001 diff --git a/images/country/ws.jpg b/images/country/ws.jpg new file mode 100644 index 0000000000000000000000000000000000000000..651ae7120745942e815fdeab212e2e44b1d944fa GIT binary patch literal 493 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<y0Mw_CRRKHL3}%o5Z=eEY0R|>U7Di@PxJ8Ui%nU4oimXDyj%*@cyBNGFQV&Dg`WlW4f%Qn}((codT rE(WTW0jg$XMGg!`CKd)}R>8oB5YK?rH@0kNoH=3gzWJ>6|8D{SyH{vk literal 0 HcmV?d00001 diff --git a/images/country/ye.jpg b/images/country/ye.jpg new file mode 100644 index 0000000000000000000000000000000000000000..57bbbc58e753fa768af446294a030d7d515718fd GIT binary patch literal 480 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<f8)m~OFLa_wHc-Qo+_zseE03=_f_vWkGZNmd3WVvqqN+$mePY~|LuK|e|ti! zlJI(uD@x5m(hNGrxt=>iy(Em6Pf)mJDq-Io5AvTNy8jrMMFJsiX9U_cH=-V>N=lG{ akrgEvfC4PSq6;B@04cmS%eVjN|C<00ykd+1 literal 0 HcmV?d00001 diff --git a/images/country/yt.jpg b/images/country/yt.jpg new file mode 100644 index 0000000000000000000000000000000000000000..19f0aec3d23827b2fec66f2049282cb81ee176be GIT binary patch literal 480 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<{xk=d zytTjattVgyPj&IhBAXTF6?3Kc=KcBXc1_mZ_wbuAp5%E&|E7n?X!W@(FHhb(e{bd6 z%Ym-KPC`?a6tA~MHO^FWNKs=>eE;(~$b*6i8=*EgUWB-v5olWoP>Hl40}~@F%vm5> ZP>6v^v2fu-h!;TWvI1gWByawI69C9CW$*w1 literal 0 HcmV?d00001 diff --git a/images/country/za.jpg b/images/country/za.jpg new file mode 100644 index 0000000000000000000000000000000000000000..15d81b4d3f5ca3b883869f6849ead7c3dc1bc863 GIT binary patch literal 526 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<rV3Z-LJzywyn3{oHuRG=)tz{JSR%)$&egOQ1ug;kJ&O;JeL&{3)IAkj8qWVOI)LkFLU1s?489OdiQh5d?H@hUbav|)+fVMcaE&#!XZ z#h&gyzU_r<)`zP>zA|TT`|MKaUs~M9aPmPNukE2_e(RRUPf&PdDp&JE3g{47K?X(^ zCWJG9Q3P~|A%h^RkRrrSj6f$e9_Tc@^tt^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<VJSpVN*;DCs(__^ml15lX= znj!`Uh$1EdpiX713YfsAFoP7>0~IIa%U=tD+RWuAd2(^^a zo?&fN`_jv4OG9U_KIWMbGRdoVQt6q!yOa(;7MJuf?NHM;XmxbjIPJ!Tzfbo1&uC)l zvQALRzOmp?y8|zOk)>MF*PcGB$keb(mQ%-%Elyb1f8f`1p#74942%f7!H!@Q6q>jZ zY%LQb(Aw^$4}t3B1R0nZ*qGt21jZo~12c=DVIr#|L@_f+@q^6ND}IVckG5@kwKrpa IvHbs=0E3BfrvLx| literal 0 HcmV?d00001 diff --git a/images/country/zw.jpg b/images/country/zw.jpg new file mode 100644 index 0000000000000000000000000000000000000000..527eb4b1185d61b166d6ef0266278610a45edf32 GIT binary patch literal 521 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 C=Hs^j literal 0 HcmV?d00001 diff --git a/index.php b/index.php new file mode 100644 index 0000000..2cf58c6 --- /dev/null +++ b/index.php @@ -0,0 +1,315 @@ +window.location.replace('index.php?all');"; + die(); + } + + if(isset($_GET['page'])) { + $currentPage = max(1, (int) $_GET['page']); + } else { + $currentPage = 1; + } + + $resultsPerPage = 20; + $resultsStart = (($currentPage - 1) * $resultsPerPage); + + $sql = "SELECT * FROM `KbRestrict_CurrentBans` WHERE `web_ban_delete`=0"; + $pageType = "all"; + if(isset($_GET['active'])) { + $sql .= " AND `is_removed`=0 AND `is_expired`=0"; + $pageType = "active"; + } else if(isset($_GET['expired'])) { + $sql .= " AND `is_expired`=1"; + $pageType = "expired"; + } + + if(isset($_GET['m']) && (isset($_GET['s']) || isset($_GET['length']))) { + $input = isset($_GET['s']) ? trim($_GET['s']) : ""; + $queryComplete = ""; + $method = formatMethod(intval($_GET['m'])); + + if($method == "client_steamid" || $method == "admin_steamid") { + $steam = new Steam(); + $result = $steam->verifyAndConvertSteamID(str_replace(" ", "", $input)); + + if ($result['success']) { + $convertedSteamID = $result['steamID2']; + if(!empty($convertedSteamID)) { + $input = $convertedSteamID; + } + } else { + error_log("Error converting SteamID: " . $result['error']); + } + } else if ($method == "length" && isset($_GET['length'])) { + $lengthArray = is_array($_GET['length']) ? $_GET['length'] : []; + $lengthOperatorVal = intval($lengthArray[0] ?? 1); // like greater or less or shit like this + $lengthOperator = "="; + + if($lengthOperatorVal == 2) {$lengthOperator = ">";} + if($lengthOperatorVal == 3) {$lengthOperator = "<";} + if($lengthOperatorVal == 4) {$lengthOperator = ">=";} + if($lengthOperatorVal == 5) {$lengthOperator = "<=";} + + $length; + $lengthValue = intval($lengthArray[1] ?? 0); + if(isset($_GET['custom']) && $lengthValue == -2) { + $length = intval($_GET['custom']); // in minutes + } else { + $length = $lengthValue; + if($length != -1) { + $length = $length / 60; // we need to get length in minutes + } + } + + $queryComplete = $lengthOperator . " " . $length; + } + + if($queryComplete == "") { + $input = $GLOBALS['DB']->real_escape_string($input); + $queryComplete = "LIKE '%$input%'"; + } + + if(str_contains($sql, "WHERE")) { + $sql .= " AND "; + } else { + $sql .= " WHERE "; + } + + $sql .= " `$method` $queryComplete "; + } + + $sql_query = $GLOBALS['DB']->query($sql); + $resultsCount = $sql_query->num_rows; + $totalPages = ceil(($resultsCount / $resultsPerPage)); + + $sql_query->free(); + if($totalPages != 0 && $currentPage > $totalPages) { + $currentPage = $totalPages; + } + + $pageActiveNum = 2; + if($pageType == "all") { + $pageActiveNum = 0; + $pageName = "Kban List"; + $icon = ""; + } else if($pageType == "active") { + $pageActiveNum = 1; + $pageName = "Active Kban"; + $icon = ""; + } else if($pageType == "expired") { + $pageActiveNum = 2; + $pageName = "Expired Kban"; + $icon = ""; + } + + echo ""; + +?> + + + + query($sql . " ORDER BY time_stamp_start DESC LIMIT $resultsStart, $resultsPerPage"); + $results1 = $query->fetch_all(MYSQLI_ASSOC); + $resultsRealCount = $query->num_rows; + $query->free(); + + $url = $_SERVER['REQUEST_URI']; + if(str_contains($url, '&page')) { + $url = substr($url, 0, strpos($url, '&page')); + } + ?> +
+
+

+
+ + +
+
+

>  Total Kbans:

+
+
+ +

totalresults=>displaying of results | + 0) { + $href = $url . "&page=$previousPage"; + echo " previous |"; + } + + if($nextPage > 0 && $nextPage <= $totalPages) { + $href = $url . "&page=$nextPage"; + echo " next "; + } + + echo " "; + ?> +

+
+
+
+
+
+ + + + + + + + + + + + + + "; + } else { + foreach($results1 as $result1) { + $id = $result1['id']; + $clientName = $result1['client_name']; + $clientSteamID = $result1['client_steamid']; + $clientIP = $result1['client_ip']; + $adminSteamID = $result1['admin_steamid']; + $reason = $result1['reason']; + $time_stamp_start = strtotime($result1['time_stamp_start']); + $length_minutes = intval($result1['length']); + $isExpired = ($result1['is_expired'] == 1) ? true : false; + $isRemoved = ($result1['is_removed'] == 1) ? true : false; + $map = $result1['map']; + + $adminName = $admin->GetAdminNameFromSteamID($adminSteamID); + + $isPermanent = ($length_minutes == 0); + $length = $isPermanent ? "Permanent" : $kban->formatPlaytime($length_minutes); + + if($isExpired == true && $isRemoved == false) { + $length .= ' (Expired)'; + if(isset($_GET['active'])) { + continue; + } + } + + if($isRemoved == true) { + $length .= ' (Removed)'; + } + + $class = "row-expired"; + if(!$isExpired && !$isRemoved) { + $class = "row-active"; + } + + if($isPermanent) { + $class = "row-permanent"; + } + + if($isRemoved) { + $class = "row-expired"; + } + + $count = 0; + $realcount = 0; + if($clientSteamID == "NO STEAMID") { + $count = $kban->GetKbansNumber("", $clientIP); + $realcount = $kban->GetRealKbansNumber($clientIP); + } else { + $count = $kban->GetKbansNumber($clientSteamID); + $realcount = $kban->GetRealKbansNumber($clientSteamID); + } + + $dateA->setTimestamp($time_stamp_start); + $dateB = $dateA->format(DATE_TIME_FORMAT); + + echo ""; + if ($map != "Web Ban" && $map != "From Web") { + echo ""; + } else { + echo ""; + } + echo ""; + echo ""; + if($count >= 2) { + if ($count == $realcount) { + echo ""; + } else { + echo ""; + } + } else { + echo ""; + } + echo ""; + echo ""; + echo ""; + + echo ""; + + echo ""; + echo ""; + echo ""; + } + } + ?> + +
GameDatePlayerReasonAdminDuration

No Kban was found!

cssWeb Ban$dateB$clientName $realcount $realcount ($count)$reason$adminName$length
+
+
+
+
+ +
+ + diff --git a/js/kbans.js b/js/kbans.js new file mode 100644 index 0000000..aeec6ca --- /dev/null +++ b/js/kbans.js @@ -0,0 +1,369 @@ +function showKbanInfo(button) { + let id = $(button).attr('id-data'); + let diva = '#diva-' + id; + $(diva + '-tr').slideToggle(); + if ($(diva).attr('is_slided') == 0) { + $(diva).attr('is_slided', 1); + $(diva).slideDown(); + $(diva).css('display', 'flex'); + } else { + $(diva).attr('is_slided', 0); + $(diva).slideUp(); + } +} + +function getCsrfToken() { + if (window.CSRF_TOKEN) { + return window.CSRF_TOKEN; + } + + const meta = document.querySelector('meta[name="csrf-token"]'); + return meta ? meta.getAttribute('content') : ''; +} + +function GoTop() { + if (document.documentElement.scrollTop > 450 || document.body.scrollTop > 450) { + document.body.scrollTop = 200; + document.documentElement.scrollTop = 200; + } +} + +function ConfirmUnban(id, name, steamid) { + let reason = prompt('Please type the reason why you would Kunban ' + name + '[' + steamid + ']'); + let confirmMessage = 'Are you sure you want to Kunban ' + name + '[' + steamid + ']'; + let confirmHandler = confirm(confirmMessage); + if (confirmHandler == true) { + UnBanByID(encodeURIComponent(id), encodeURIComponent(reason)); + } +} + +function UnBanByID(id, reason) { + var xmlResponse1 = new XMLHttpRequest(); + xmlResponse1.onreadystatechange = function() { + if (this.readyState == 4 && this.status == 200) { + $('#diva-' + id).html(this.responseText); + + let trDiva = document.getElementById('diva-tr-' + id); + trDiva.className = "row-expired"; + let oldHtml = $('#length-' + id).html(); + let newHtml = (oldHtml + ' (Removed)'); + $('#length-' + id).html(newHtml); + } + }; + + xmlResponse1.open("POST", "functions_url.php", true); + xmlResponse1.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); + xmlResponse1.send( + "oldid=" + encodeURIComponent(id) + + "&reason=" + encodeURIComponent(reason) + + "&csrf_token=" + encodeURIComponent(getCsrfToken()) + ); + + var xmlResponse2 = new XMLHttpRequest(); + xmlResponse2.onreadystatechange = function() { + if (this.readyState == 4 && this.status == 200) { + // Process xmlResponse2.responseText here + } + }; + + xmlResponse2.open("GET", "functions_url.php?id=" + encodeURIComponent(id), true); + xmlResponse2.send(); +} + +function ViewPlayerHistory(steamid, method) { + let url = "index.php?all=true&s=" + encodeURIComponent(steamid) + "&m=" + encodeURIComponent(method); + window.location.replace(url); +} + +function RebanFromID(id) { + let url = "manage.php?reban&oldid=" + encodeURIComponent(id); + window.location.replace(url); +} + +function EditFromID(id) { + let url = "manage.php?edit&oldid=" + encodeURIComponent(id); + window.location.replace(url); +} + +function addNewKban(playerName, playerSteamID, length, reason) { + var xmlResponse = new XMLHttpRequest(); + xmlResponse.onreadystatechange = function() { + if (this.readyState == 4 && this.status == 200) { + $('.error').html(xmlResponse.responseText); + } + }; + + xmlResponse.open("POST", "functions_url.php", true); + xmlResponse.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); + xmlResponse.send( + "add=1" + + "&playerName=" + encodeURIComponent(playerName) + + "&playerSteamID=" + encodeURIComponent(playerSteamID) + + "&length=" + encodeURIComponent(length) + + "&reason=" + encodeURIComponent(reason) + + "&csrf_token=" + encodeURIComponent(getCsrfToken()) + ); +} + +function EditKban(id, playerName, playerSteamID, length, reason) { + var xmlResponse1 = new XMLHttpRequest(); + xmlResponse1.onreadystatechange = function() { + if (this.readyState == 4) { + if (this.status == 200) { + $('.error').html(xmlResponse1.responseText); + } else { + $('.error').html("

Request failed (HTTP " + this.status + "). " + xmlResponse1.responseText + "

"); + } + } + }; + + xmlResponse1.open("POST", "functions_url.php", true); + xmlResponse1.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); + xmlResponse1.send( + "edit=1" + + "&id=" + encodeURIComponent(id) + + "&playerName=" + encodeURIComponent(playerName) + + "&playerSteamID=" + encodeURIComponent(playerSteamID) + + "&length=" + encodeURIComponent(length) + + "&reason=" + encodeURIComponent(reason) + + "&csrf_token=" + encodeURIComponent(getCsrfToken()) + ); +} + +function RemoveKbanFromDBCheck(id) { + let confirmMessage = "Are you sure you want to delete this kban from DB?"; + let confirmHandler = confirm(confirmMessage); + if (confirmHandler == true) { + RemoveKbanFromDB(id); + } +} + +function RemoveKbanFromDB(id) { + var xmlResponse1 = new XMLHttpRequest(); + xmlResponse1.onreadystatechange = function() { + if (this.readyState !== 4) { + return; + } + + if (this.status !== 200) { + alert('Delete request failed (HTTP ' + this.status + ').'); + return; + } + + const response = (xmlResponse1.responseText || '').trim(); + if (!response) { + alert('Delete request returned an empty response.'); + return; + } + + // Keep backwards compatibility with PHP handlers returning . + const scriptMatch = response.match(/]*>([\s\S]*?)<\/script>/i); + if (scriptMatch && scriptMatch[1]) { + $.globalEval(scriptMatch[1]); + } else { + $('.hide').html(response); + } + }; + + xmlResponse1.open("POST", "functions_url.php", true); + xmlResponse1.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); + xmlResponse1.send( + "delete=1" + + "&deleteid=" + encodeURIComponent(id) + + "&csrf_token=" + encodeURIComponent(getCsrfToken()) + ); +} + +function setActive(num) { + /* 0 = All Kbans, 1 = Active Kbans, 2 = Expired Kbans, 3 = Add Kban, 4 = Web Logs, 5 = Server Logs */ + if (num == 0) { + const bar = document.getElementById("allKbans"); + bar.className = "active"; + } else if (num == 1) { + const bar = document.getElementById("activeKbans"); + bar.className = "active"; + } else if (num == 2) { + const bar = document.getElementById("expiredKbans"); + bar.className = "active"; + } else if (num == 4) { + const bar = document.getElementById("weblogs"); + bar.className = "active"; + } else if (num == 5) { + const bar = document.getElementById("srvlogs"); + bar.className = "active"; + } else { + const bar = document.getElementById("addkban"); + bar.className = "active"; + } +} + +function Login() { + window.location.replace('login-init.php'); +} + +$(function() { + $('.search-modal-btn-open').on('click', function(evt) { + if ($(this).attr('id') == "main-search") { + setModalSearch("all"); + } else { + let type = $(this).attr('data-page'); + setModalSearch(type); + } + + $('.search-modal-body').toggle(); + }); + + $('.search-modal-btn-close').on('click', function() { + $('.search-modal-body').toggle(); + }); +}); + +window.addEventListener('click', function(e) { + if (e.target.className == "search-modal-body") { + $('.search-modal-body').toggle(); + } +}); + +function setModalSearch(type) { + $('#hideInput').attr('name', type); +} + +function showKbanWindowInfo(type, playerName = "", playerSteamID = "", reason = "", length = "", id = 0) { + /* type values: 0 = Add Kban, 1 = Edit Kban, 2 = Unban Kban, 3 = Delete Kban */ + const titles = [ + "Kban Added", + "Kban Edited", + "Kban Unbanned", + "Kban Deleted" + ]; + + const title = titles[type]; + $('#action-header-text').html(title + " "); + + let html = ""; + if (playerName[0]) { + html += "
  • "; + html += ""; + html += " Player"; + html += ""; + html += ""; + html += playerName; + html += ""; + html += "
  • "; + } + + if (playerSteamID[0]) { + html += "
  • "; + html += ""; + html += " Steam ID"; + html += ""; + html += ""; + html += playerSteamID; + html += ""; + html += "
  • "; + } + + if (reason[0]) { + html += "
  • "; + html += ""; + html += " Reason"; + html += ""; + html += ""; + html += reason; + html += ""; + html += "
  • "; + } + + if (length[0]) { + html += "
  • "; + html += ""; + html += " Duration"; + html += ""; + html += ""; + html += length; + html += ""; + html += "
  • "; + } + + if (type == 3) { + let diva1 = '#diva-' + encodeURIComponent(id); + $(diva1 + '-tr').hide(); + + let diva2 = '#diva-tr-' + encodeURIComponent(id); + $(diva2).hide(); + + let totalResults = $('#totalText').attr('results'); + let totalHtml = $('#totalText').html(); + + let totalResultsAfter = totalResults - 1; + let totalResultsString = totalResults.toString(); + let totalResultsAfterString = totalResultsAfter.toString(); + + let newTotalHtml = totalHtml.replace(totalResultsString, totalResultsAfterString); + $('#totalText').attr('results', totalResultsAfter); + $('#totalText').html(newTotalHtml); + + let startResults = $('#displaying-text').attr('results'); + let endResults = $('#displaying-text').attr('totalresults'); + let displayHtml = $('#displaying-text').html(); + + let startResultsString = startResults.toString(); + let startResultsAfter = 0; + + if (startResults != 0) { + startResultsAfter = startResults - 1; + } + + let startResultsAfterString = startResultsAfter.toString(); + + let endResultsString = endResults.toString(); + let endResultsAfter = endResults - 1; + let endResultsAfterString = endResultsAfter.toString(); + + $('#displaying-text').attr('results', startResultsAfter); + $('#displaying-text').attr('totalresults', endResultsAfter); + + let newDisplayHtml = ""; + if (startResults == endResults) { + let first = displayHtml.replace('-' + ' ' + totalResultsString, '-' + ' ' + totalResultsAfterString); + newDisplayHtml = first.replace(startResultsString, startResultsAfterString); + } else { + let first = displayHtml.replace(startResultsString, startResultsAfterString); + let second = first.replace('-' + ' ' + totalResultsString, '-' + ' ' + totalResultsAfterString); + newDisplayHtml = second.replace(endResultsString, endResultsAfterString); + } + + $('#displaying-text').html(newDisplayHtml); + + let count = $('#' + encodeURIComponent(id) + '-count').attr('count'); + let newCountHtml = count ? (count - 1) : 0; + + var allCounts = document.getElementsByClassName('count'); + for (var i = 0; i < allCounts.length; i++) { + let steamID = $('#' + allCounts[i].id).attr('steamid'); + if (steamID == playerSteamID) { + $('#' + allCounts[i].id).attr('count', newCountHtml); + let Html = $('#' + allCounts[i].id).html(); + if (count) { + let newHtml = Html.replace(count.toString(), newCountHtml.toString()); + $('#' + allCounts[i].id).html(newHtml); + } + } + } + } + + $('.kban-action-window .info .kban_details').html(html); + + $('.kban-action-window').css('display', 'block'); + + let sec = 3; + setTimeout(CloseWindow, (sec * 1000)); +} + +function CloseWindow() { + $('.kban-action-window').css('display', 'none'); +} + +function GoHome() { + window.location.href = 'index.php?all'; +} diff --git a/login-init.php b/login-init.php new file mode 100644 index 0000000..3a3970c --- /dev/null +++ b/login-init.php @@ -0,0 +1,16 @@ + 'http://specs.openid.net/auth/2.0', + 'openid.mode' => 'checkid_setup', + 'openid.return_to' => $server_host_url . '/login-process.php', + 'openid.realm' => $server_host_url, + 'openid.identity' => 'http://specs.openid.net/auth/2.0/identifier_select', + 'openid.claimed_id' => 'http://specs.openid.net/auth/2.0/identifier_select', + ]; + + $steam_login_url = 'https://steamcommunity.com/openid/login'.'?'.http_build_query($login_url_params, '', '&'); + + header("location: $steam_login_url"); + exit(); +?> diff --git a/login-process.php b/login-process.php new file mode 100644 index 0000000..ca49213 --- /dev/null +++ b/login-process.php @@ -0,0 +1,111 @@ + $_GET['openid_assoc_handle'], + 'openid.signed' => $_GET['openid_signed'], + 'openid.sig' => $_GET['openid_sig'], + 'openid.ns' => 'http://specs.openid.net/auth/2.0', + 'openid.mode' => 'check_authentication', + ]; + + $signed = explode(',', $_GET['openid_signed']); + + foreach ($signed as $item) { + $key = 'openid_'.str_replace('.', '_', $item); + if (!isset($_GET[$key])) { + echo 'error: invalid openid response'; + exit(); + } + + $val = $_GET[$key]; + $params['openid.'.$item] = stripslashes($val); + } + + $data = http_build_query($params); + //data prep + $context = stream_context_create([ + 'http' => [ + 'method' => 'POST', + 'header' => "Accept-language: en\r\n". + "Content-type: application/x-www-form-urlencoded\r\n". + 'Content-Length: '.strlen($data)."\r\n", + 'content' => $data, + ], + ]); + + //get the data + $result = file_get_contents('https://steamcommunity.com/openid/login', false, $context); + + if($result !== false && preg_match("#is_valid\s*:\s*true#i", $result)){ + preg_match('#^https://steamcommunity.com/openid/id/([0-9]{17,25})#', $_GET['openid_claimed_id'], $matches); + $steamID64 = isset($matches[1]) && is_numeric($matches[1]) ? $matches[1] : 0; + } else { + echo 'error: unable to validate your request'; + exit(); + } + + $steam_api_key = $GLOBALS['STEAM_API_KEY']; + $secret_key = $GLOBALS['SECRET_KEY']; + + $response = file_get_contents('https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key='.$steam_api_key.'&steamids='.$steamID64); + if ($response === false) { + echo 'error: unable to fetch steam profile'; + exit(); + } + + $response = json_decode($response,true); + if (!is_array($response) || empty($response['response']['players'][0])) { + echo 'error: invalid steam profile response'; + exit(); + } + + + $userData = $response['response']['players'][0]; + + $steamID64 = $userData['steamid']; + $steam = new Steam(); + $steamID32 = $steam->SteamID64_To_SteamID($steamID64); + + $admin = new Admin(); + if($admin->IsLoginValid($steamID32, $secret_key, true)) { + setcookie('steamID', $steamID32, (time() * 30), "/", $_SERVER['SERVER_NAME'], true, true); + setcookie("secret_key", $secret_key, (time() * 30), "/", $_SERVER['SERVER_NAME'], true, true); + + // Create an unique cookie based on sbpp aid for each user + // Aid is the safer option to use as a cookie since it does not have any personal information + $sql = "SELECT aid FROM sb_admins WHERE authid = ?"; + $stmt = $GLOBALS['SBPP']->prepare($sql); + $stmt->bind_param("s", $steamID32); + $stmt->execute(); + $queryResult = $stmt->get_result(); + $stmt->close(); + + $row = $queryResult->fetch_assoc(); + $aid = $row['aid'] ?? ''; + + setcookie("aid", $aid, (time() * 30), "/", $_SERVER['SERVER_NAME'], true, true); + } else { + echo 'error: your Steam account is not registered as a SourceBans admin, so you cannot log in to this panel'; + exit(); + } + + $server_host_url = (!empty($_SERVER['HTTPS']) ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST']; + header("Location: ". $server_host_url); + die(); +?> diff --git a/logout.php b/logout.php new file mode 100644 index 0000000..ba69044 --- /dev/null +++ b/logout.php @@ -0,0 +1,10 @@ + diff --git a/logs.php b/logs.php new file mode 100644 index 0000000..bd5da24 --- /dev/null +++ b/logs.php @@ -0,0 +1,200 @@ + +
    +

    You do not have access to this page.

    +
    + + "; + die(); + } + + $admin = new Admin(); + $admin->UpdateAdminInfo($_COOKIE['steamID']); + if(!$admin->DoesHaveFullAccess()) { + echo "
    +
    +

    You do not have access to this page.

    +
    +
    + "; + die(); + } + + if(isset($_GET['page'])) { + $currentPage = max(1, (int) $_GET['page']); + } else { + $currentPage = 1; + } + + $isWeb = false; + $isSrv = false; + if(isset($_GET['web'])) { + $isWeb = true; + } + + if(isset($_GET['srv'])) { + $isSrv = true; + } + + + $resultsPerPage = 20; + $resultsStart = (($currentPage - 1) * $resultsPerPage); + + $sql = "SELECT * FROM "; + $sql .= ($isWeb) ? "`KbRestrict_weblogs`" : "`KbRestrict_srvlogs`"; + + if(isset($_GET['s']) && isset($_GET['m'])) { + $input = trim($_GET['s']); + $method = formatMethod(intval($_GET['m'])); + + if($method == "client_steamid" || $method == "admin_steamid") { + $steamInput = str_replace(" ", "", $input); + $steam = new Steam(); + $result = $steam->verifyAndConvertSteamID($steamInput); + + if ($result['success'] && !empty($result['steamID2'])) { + $input = $result['steamID2']; + } else { + error_log("Error converting SteamID: " . $result['error']); + } + } + + $input = $GLOBALS['DB']->real_escape_string($input); + $sql .= " WHERE `$method` LIKE '%$input%'"; + } + + $sql_query = $GLOBALS['DB']->query($sql); + $resultsCount = $sql_query->num_rows; + $totalPages = ceil(($resultsCount / $resultsPerPage)); + + $sql_query->free(); + if($totalPages != 0 && $currentPage > $totalPages) { + $currentPage = $totalPages; + } + + $num = ($isWeb) ? 4 : 5; + $pageType = ($isWeb) ? "web" : "srv"; + echo ""; +?> + + + + query($sql . " ORDER BY time_stamp DESC LIMIT $resultsStart, $resultsPerPage"); + $results1 = $query->fetch_all(MYSQLI_ASSOC); + $resultsRealCount = $query->num_rows; + $query->free(); + + $url = $_SERVER['REQUEST_URI']; + if(str_contains($url, '&page')) { + $url = substr($url, 0, strpos($url, '&page')); + } + ?> +
    +
    +

    Logs

    +
    + + +
    +
    +   Total Logs: +
    +
    + +

    displaying of results | + 0) { + $href = $url . "&page=$previousPage"; + echo " previous |"; + } + + if($nextPage > 0 && $nextPage <= $totalPages) { + $href = $url . "&page=$nextPage"; + echo " next "; + } + + echo " "; + ?> +

    +
    +
    +
    +
    +
    + + + + + + + + + + + GetAdminNameFromSteamID($adminSteamID); + + + $date->setTimestamp($time_stamp); + $dateFormated = $date->format(DATE_TIME_FORMAT); + + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + } + ?> + +
    DatePlayerAdminAction
    $dateFormated$clientName ($clientSteamID)$adminName$message
    +
    +
    +
    +
    + + + diff --git a/manage.php b/manage.php new file mode 100644 index 0000000..aeacc69 --- /dev/null +++ b/manage.php @@ -0,0 +1,234 @@ + +
    +

    You do not have access to this page.

    +
    + + "; + die(); + } + + $reban = false; + $edit = false; + $add = false; + + if(isset($_GET['reban'])) { + $reban = true; + $oldid = $_GET['oldid'] ?? 0; + $kban = new Kban(); + $info = $kban->getKbanInfoFromID(intval($oldid)); + if ($info === null) { + echo "

    Kban not found!

    "; + die(); + } + } + + if(isset($_GET['edit'])) { + $edit = true; + $oldid = $_GET['oldid'] ?? 0; + $kban = new Kban(); + $info = $kban->getKbanInfoFromID(intval($oldid)); + if ($info === null) { + echo "

    Kban not found!

    "; + die(); + } + + if ($info['is_expired'] == 1) { + echo "

    Cannot edit an old kban!

    "; + die(); + } + } + + if(isset($_GET['add'])) { + $add = true; + + echo ""; + } + +?> + + + + + " : ""; + $formHeader .= " $text"; + $icon = ($edit == false) ? "" : ""; + ?> +
    +
    +

    + +
    +
    +
    +
    +

    +
    + +
    + +
    + + + +
    + + > +
    + + + +
    + + + + + title="Why the f*ck do you want to edit the SteamID? Just add a new Kban nigger" disabled> + +
    + + + +
    + + > +
    + + +
    + + +
    + + + +
    + +

    Enter 0 minutes for a permanent ban

    + style="width: 110px; display: inline-block;"> + +
    + + + $buttonTextValidate"; + ?> +
    +
    +
    + + + + diff --git a/steam.php b/steam.php new file mode 100644 index 0000000..c97344d --- /dev/null +++ b/steam.php @@ -0,0 +1,154 @@ +getMessage()); + throw $e; + } + } + + public static function SteamID_To_SteamID3($steamid32) + { + $steamid32 = (string) $steamid32; + + if (preg_match('/^STEAM_[01]\:[01]\:(.*)$/', $steamid32, $res)) { + $st = '[U:1:'; + $st .= $res[1] * 2 + intval(substr($steamid32, 8, 1)); + $st .= ']'; + return $st; + } + + return false; + } + + public static function SteamID3_To_SteamID($steamid3) + { + $steamid3 = (string) $steamid3; + + if (preg_match("/U:1:(\d+)/", $steamid3, $matches)) { + $steam3 = intval($matches[1]); + $A = $steam3 % 2; + $B = intval($steam3 / 2); + return "STEAM_0:" . $A . ":" . $B; + } + return false; + } + + public static function SteamID_To_SteamID64($steamid32) + { + $steamid32 = (string) $steamid32; + self::assertSixtyFourBit(); + + if (preg_match('/^STEAM_[01]:([01]):(\d+)$/', $steamid32, $res)) { + $steamID64 = 76561197960265728 + ((int) $res[2] * 2) + (int) $res[1]; + return (string) $steamID64; + } + + return false; + } + + public static function SteamID64_To_SteamID($steamid64) + { + $steamid64 = (string) $steamid64; + self::assertSixtyFourBit(); + $pattern = "/^(7656119)([0-9]{10})$/"; + if (preg_match($pattern, $steamid64, $match)) { + $const1 = 7960265728; + $const2 = "STEAM_0:"; + $steam32 = ''; + if ($const1 <= $match[2]) { + $a = ($match[2] - $const1) % 2; + $b = ($match[2] - $const1 - $a) / 2; + $steam32 = $const2 . $a . ':' . $b; + } + + return $steam32; + } + + return false; + } + + public static function GetSteamProfile($steamid64, $attribute) + { + $steamid64 = (string) $steamid64; + $attribute = (string) $attribute; + $previousLibxml = libxml_use_internal_errors(true); + + if (preg_match('/^\d+$/', $steamid64)) { + $xml = @simplexml_load_file("https://steamcommunity.com/profiles/".$steamid64."?xml=1"); + } else { + $xml = @simplexml_load_file("https://steamcommunity.com/id/".$steamid64."?xml=1"); + } + libxml_clear_errors(); + libxml_use_internal_errors($previousLibxml); + + if ($xml === false) { + return array(); + } + + $SteamProfileAttribute = array(); + + $attributes = explode(', ', $attribute); + + foreach ($attributes as $key => $attr_key) { + $SteamProfileAttribute += [$attr_key => $xml->$attr_key]; + } + + return $SteamProfileAttribute; + } + + function verifyAndConvertSteamID($steamid) { + try { + $steamID2 = Steam::convertSteamID($steamid); + return ['success' => true, 'steamID2' => $steamID2]; + } catch (Exception $e) { + return ['success' => false, 'error' => $e->getMessage()]; + } + } + +} +?> diff --git a/verify_steamid.php b/verify_steamid.php new file mode 100644 index 0000000..42b78b7 --- /dev/null +++ b/verify_steamid.php @@ -0,0 +1,10 @@ +verifyAndConvertSteamID($steamid); + echo json_encode($result); +} +?>