The following schema fragment specifies the expected content contained within this class.
37 | *
38 | *
unknownElements;
61 |
62 | /**
63 | * Gets the value of the channels property.
64 | *
65 | * @return possible object is
66 | * {@link String }
67 | */
68 | public String getChannels() {
69 | return channels;
70 | }
71 |
72 | /**
73 | * Sets the value of the channels property.
74 | *
75 | * @param value allowed object is
76 | * {@link String }
77 | */
78 | public void setChannels(String value) {
79 | this.channels = value;
80 | }
81 |
82 | }
83 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/mame/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | //
20 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
21 | // See http://java.sun.com/xml/jaxb
22 | // Any modifications to this file will be lost upon recompilation of the source schema.
23 | // Generated on: 2016.09.19 at 10:16:00 AM EDT
24 | //
25 |
26 | // NOTE namespace = "" required here. Need annotation change????
27 | @javax.xml.bind.annotation.XmlSchema(namespace = "", elementFormDefault = XmlNsForm.UNQUALIFIED)
28 | package com.github.phweda.mfm.mame;
29 |
30 | import javax.xml.bind.annotation.XmlNsForm;
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/mame/softwarelist/Feature.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | //
20 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
21 | // See http://java.sun.com/xml/jaxb
22 | // Any modifications to this file will be lost upon recompilation of the source schema.
23 | // Generated on: 2017.10.24 at 07:54:20 PM EDT
24 | //
25 |
26 |
27 | package com.github.phweda.mfm.mame.softwarelist;
28 |
29 | import javax.xml.bind.annotation.*;
30 |
31 |
32 | /**
33 | * Java class for anonymous complex type.
34 | *
35 | *
The following schema fragment specifies the expected content contained within this class.
36 | *
37 | *
38 | * <complexType>
39 | * <complexContent>
40 | * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
41 | * <attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
42 | * <attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
43 | * </restriction>
44 | * </complexContent>
45 | * </complexType>
46 | *
47 | */
48 | @XmlAccessorType(XmlAccessType.FIELD)
49 | @XmlType(name = "")
50 | @XmlRootElement(name = "feature")
51 | public class Feature {
52 |
53 | @XmlAttribute(name = "name", required = true)
54 | protected String name;
55 | @XmlAttribute(name = "value")
56 | protected String value;
57 |
58 | /**
59 | * Gets the value of the name property.
60 | *
61 | * @return possible object is
62 | * {@link String }
63 | */
64 | public String getName() {
65 | return name;
66 | }
67 |
68 | /**
69 | * Sets the value of the name property.
70 | *
71 | * @param value allowed object is
72 | * {@link String }
73 | */
74 | public void setName(String value) {
75 | this.name = value;
76 | }
77 |
78 | /**
79 | * Gets the value of the value property.
80 | *
81 | * @return possible object is
82 | * {@link String }
83 | */
84 | public String getValue() {
85 | return value;
86 | }
87 |
88 | /**
89 | * Sets the value of the value property.
90 | *
91 | * @param value allowed object is
92 | * {@link String }
93 | */
94 | public void setValue(String value) {
95 | this.value = value;
96 | }
97 |
98 | }
99 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/mame/softwarelist/Info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | //
20 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
21 | // See http://java.sun.com/xml/jaxb
22 | // Any modifications to this file will be lost upon recompilation of the source schema.
23 | // Generated on: 2017.10.24 at 07:54:20 PM EDT
24 | //
25 |
26 |
27 | package com.github.phweda.mfm.mame.softwarelist;
28 |
29 | import javax.xml.bind.annotation.*;
30 |
31 |
32 | /**
33 | * Java class for anonymous complex type.
34 | *
35 | *
The following schema fragment specifies the expected content contained within this class.
36 | *
37 | *
38 | * <complexType>
39 | * <complexContent>
40 | * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
41 | * <attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
42 | * <attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
43 | * </restriction>
44 | * </complexContent>
45 | * </complexType>
46 | *
47 | */
48 | @XmlAccessorType(XmlAccessType.FIELD)
49 | @XmlType(name = "")
50 | @XmlRootElement(name = "info")
51 | public class Info {
52 |
53 | @XmlAttribute(name = "name", required = true)
54 | protected String name;
55 | @XmlAttribute(name = "value")
56 | protected String value;
57 |
58 | /**
59 | * Gets the value of the name property.
60 | *
61 | * @return possible object is
62 | * {@link String }
63 | */
64 | public String getName() {
65 | return name;
66 | }
67 |
68 | /**
69 | * Sets the value of the name property.
70 | *
71 | * @param value allowed object is
72 | * {@link String }
73 | */
74 | public void setName(String value) {
75 | this.name = value;
76 | }
77 |
78 | /**
79 | * Gets the value of the value property.
80 | *
81 | * @return possible object is
82 | * {@link String }
83 | */
84 | public String getValue() {
85 | return value;
86 | }
87 |
88 | /**
89 | * Sets the value of the value property.
90 | *
91 | * @param value allowed object is
92 | * {@link String }
93 | */
94 | public void setValue(String value) {
95 | this.value = value;
96 | }
97 |
98 | }
99 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/mame/softwarelist/Sharedfeat.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | //
20 | // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
21 | // See http://java.sun.com/xml/jaxb
22 | // Any modifications to this file will be lost upon recompilation of the source schema.
23 | // Generated on: 2017.10.24 at 07:54:20 PM EDT
24 | //
25 |
26 |
27 | package com.github.phweda.mfm.mame.softwarelist;
28 |
29 | import javax.xml.bind.annotation.*;
30 |
31 |
32 | /**
33 | * Java class for anonymous complex type.
34 | *
35 | *
The following schema fragment specifies the expected content contained within this class.
36 | *
37 | *
38 | * <complexType>
39 | * <complexContent>
40 | * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
41 | * <attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
42 | * <attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
43 | * </restriction>
44 | * </complexContent>
45 | * </complexType>
46 | *
47 | */
48 | @XmlAccessorType(XmlAccessType.FIELD)
49 | @XmlType(name = "")
50 | @XmlRootElement(name = "sharedfeat")
51 | public class Sharedfeat {
52 |
53 | @XmlAttribute(name = "name", required = true)
54 | protected String name;
55 | @XmlAttribute(name = "value")
56 | protected String value;
57 |
58 | /**
59 | * Gets the value of the name property.
60 | *
61 | * @return possible object is
62 | * {@link String }
63 | */
64 | public String getName() {
65 | return name;
66 | }
67 |
68 | /**
69 | * Sets the value of the name property.
70 | *
71 | * @param value allowed object is
72 | * {@link String }
73 | */
74 | public void setName(String value) {
75 | this.name = value;
76 | }
77 |
78 | /**
79 | * Gets the value of the value property.
80 | *
81 | * @return possible object is
82 | * {@link String }
83 | */
84 | public String getValue() {
85 | return value;
86 | }
87 |
88 | /**
89 | * Sets the value of the value property.
90 | *
91 | * @param value allowed object is
92 | * {@link String }
93 | */
94 | public void setValue(String value) {
95 | this.value = value;
96 | }
97 |
98 | }
99 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/mame/softwarelist/Softwarelists.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.mfm.mame.softwarelist;
20 |
21 | /**
22 | * Created by IntelliJ IDEA.
23 | * User: Phweda
24 | * Date: 5/5/2018
25 | * Time: 5:23 PM
26 | *
27 | * MFM unique pseudo XML to allow saving all MAME Softwarelist XML in a single file
28 | */
29 |
30 | import javax.xml.bind.annotation.*;
31 | import java.util.Set;
32 | import java.util.TreeMap;
33 | import java.util.TreeSet;
34 |
35 | /**
36 | * MFM unique pseudo XML Object to allow saving all MAME Softwarelist XML files(objects) in a single file
37 | * Softwarelists class serves as the XML root for all Softwarelist entries
38 | */
39 |
40 | @XmlAccessorType(XmlAccessType.FIELD)
41 | @XmlType(name = "", propOrder = {
42 | "softwarelists"
43 | })
44 | @XmlRootElement(name = "softwarelists")
45 | public class Softwarelists {
46 | protected Set softwarelists;
47 | @XmlAttribute(name = "version")
48 | protected String version;
49 | @XmlTransient
50 | private TreeMap softwarelistsMap;
51 |
52 | public Set getSoftwarelists() {
53 | if (softwarelists == null) {
54 | softwarelists = new TreeSet<>();
55 | }
56 | return this.softwarelists;
57 | }
58 |
59 | public void setSoftwarelists(Set softwarelists) {
60 | this.softwarelists = softwarelists;
61 | }
62 |
63 |
64 | public TreeMap getSoftwarelistsMap() {
65 | if (softwarelistsMap == null) {
66 | softwarelistsMap = generateSoftwarelistsMap();
67 | }
68 | return this.softwarelistsMap;
69 | }
70 |
71 | /**
72 | * Gets the value of the build property.
73 | *
74 | * @return possible object is
75 | * {@link String }
76 | */
77 | public String getVersion() {
78 | return version;
79 | }
80 |
81 | /**
82 | * Sets the value of the build property.
83 | *
84 | * @param value allowed object is
85 | * {@link String }
86 | */
87 | public void setVersion(String value) {
88 | this.version = value;
89 | }
90 |
91 | private TreeMap generateSoftwarelistsMap() {
92 | TreeMap map = new TreeMap<>();
93 | this.getSoftwarelists().forEach(softwarelist -> map.put(softwarelist.getName(), softwarelist));
94 | return map;
95 | }
96 |
97 | }
98 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/ui/DynamicCBpanel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.mfm.ui;
20 |
21 | import javax.swing.*;
22 | import java.awt.*;
23 | import java.util.ArrayList;
24 | import java.util.List;
25 | import java.util.Map;
26 | import java.util.TreeSet;
27 |
28 | /**
29 | * Created by IntelliJ IDEA.
30 | * User: Phweda
31 | * Date: 9/19/2015
32 | * Time: 11:55 AM
33 | */
34 |
35 | /**
36 | * JPanel for dynamic lists of checkboxes
37 | */
38 | @SuppressWarnings("ALL")
39 | public class DynamicCBpanel extends JPanel {
40 |
41 | private ArrayList checkBoxes = new ArrayList<>();
42 |
43 | DynamicCBpanel(List keys, int columns) {
44 | super();
45 | this.setLayout(new GridLayout(keys.size() / columns + 1, columns));
46 | addCheckboxes(keys);
47 | }
48 |
49 | void setToolTips(Map map) {
50 | checkBoxes.parallelStream()
51 | .forEach(cb ->
52 | {
53 | cb.setToolTipText(map.get(cb.getText()));
54 | System.out.println(map.get(cb.getText()));
55 | });
56 | }
57 |
58 | ArrayList getCheckBoxes() {
59 | return checkBoxes;
60 | }
61 |
62 | private void addCheckboxes(List keys) {
63 | for (Object key : keys) {
64 | JCheckBox checkBox = new JCheckBox(key.toString());
65 | this.add(checkBox);
66 | checkBoxes.add(checkBox);
67 | }
68 | }
69 |
70 | TreeSet getChecked() {
71 | TreeSet ts = new TreeSet<>();
72 | for (JCheckBox checkBox : checkBoxes) {
73 | if (checkBox.isSelected()) {
74 | ts.add(checkBox.getText());
75 | }
76 | }
77 | return ts;
78 | }
79 |
80 | JCheckBox getJCheckBoxbyText(String text) {
81 | for (JCheckBox box : getCheckBoxes()) {
82 | if (box.getText().equalsIgnoreCase(text)) {
83 | return box;
84 | }
85 | }
86 | return null;
87 | }
88 | }
89 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/ui/LinkEditorPane.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.mfm.ui;
20 |
21 | import javax.swing.*;
22 | import javax.swing.event.HyperlinkEvent;
23 | import java.awt.*;
24 | import java.io.IOException;
25 | import java.net.URI;
26 | import java.net.URISyntaxException;
27 |
28 | /**
29 | * Created by IntelliJ IDEA.
30 | * User: Phweda
31 | * Date: 10/7/2017
32 | * Time: 10:45 AM
33 | */
34 | @SuppressWarnings("WeakerAccess")
35 | public class LinkEditorPane {
36 |
37 | private LinkEditorPane() { // Cover implicit public constructor per squid:S1118
38 | }
39 |
40 | public static JEditorPane getLinkPane(String displayText, String link) {
41 | JLabel label = new JLabel();
42 | Font font = label.getFont();
43 |
44 | StringBuilder style = new StringBuilder("font-family:" + font.getFamily() + ";");
45 | style.append("font-weight:");
46 | style.append((font.isBold() ? "bold" : "normal"));
47 | style.append(";");
48 | style.append("font-size:");
49 | style.append((font.getSize() + 4));
50 | style.append("pt;");
51 |
52 | // Construct href
53 | String html = "" +
54 | "" + displayText + " ";
55 | JEditorPane ep = new JEditorPane("text/html", html);
56 | ep.addHyperlinkListener(e -> {
57 | Desktop desktop = Desktop.getDesktop();
58 | if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED && desktop.isSupported(Desktop.Action.BROWSE)) {
59 | try {
60 | desktop.browse(new URI(link));
61 | } catch (IOException | URISyntaxException e1) {
62 | e1.printStackTrace();
63 | }
64 | }
65 | });
66 | ep.setEditable(false);
67 | ep.setBackground(label.getBackground());
68 |
69 | return ep;
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/ui/ListEditorModel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.mfm.ui;
20 |
21 | import javax.swing.*;
22 | import java.util.List;
23 |
24 | /**
25 | * Created by IntelliJ IDEA.
26 | * User: Phweda
27 | * Date: 6/23/2017
28 | * Time: 12:02 PM
29 | */
30 | class ListEditorModel extends DefaultListModel {
31 |
32 | /**
33 | * Add all elements from input List
34 | *
35 | * @param elements to add to active list
36 | */
37 | void addAll(List elements) {
38 | elements.forEach(element -> {
39 | if (!this.contains(element)) {
40 | this.addElement(element);
41 | }
42 | });
43 | this.fireContentsChanged(this, 0, this.getSize());
44 | }
45 |
46 | /**
47 | * Remove all elements from input List
48 | *
49 | * @param elements to remove from active list
50 | */
51 | void removeAll(List elements) {
52 | elements.forEach(this::removeElement);
53 | this.fireContentsChanged(this, 0, this.getSize());
54 | }
55 |
56 | /**
57 | * Replace existing list with new list
58 | *
59 | * @param newList new list to display
60 | */
61 | void refreshList(List newList) {
62 | this.clear();
63 | newList.forEach(this::addElement);
64 | this.fireContentsChanged(this, 0, this.getSize());
65 | }
66 |
67 | }
68 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/ui/MFMBusyPainter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.mfm.ui;
20 |
21 | import org.jdesktop.swingx.painter.BusyPainter;
22 |
23 | import java.awt.*;
24 | import java.text.SimpleDateFormat;
25 | import java.util.Date;
26 |
27 | /**
28 | * Created by IntelliJ IDEA.
29 | * User: Phweda
30 | * Date: 11/23/2016
31 | * Time: 8:15 PM
32 | */
33 | public class MFMBusyPainter extends BusyPainter {
34 | private final long startMillis = System.currentTimeMillis();
35 |
36 | MFMBusyPainter(Shape point, Shape trajectory) {
37 | super(point, trajectory);
38 | }
39 |
40 | @Override
41 | protected void doPaint(Graphics2D g, Object t, int width, int height) {
42 | super.doPaint(g, t, width, height);
43 | g.drawString(getTime(), (width / 7) * 2, (int) (height / 1.82)); //
44 | }
45 |
46 | private String getTime() {
47 | return (new SimpleDateFormat("mm:ss")).format(new Date(System.currentTimeMillis() - startMillis));
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/ui/MFMCategoryTree.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.mfm.ui;
20 |
21 | import javax.swing.tree.DefaultMutableTreeNode;
22 | import java.util.ArrayList;
23 | import java.util.Map;
24 | import java.util.SortedMap;
25 |
26 | /**
27 | * Created by IntelliJ IDEA.
28 | * User: Phweda
29 | * Date: 9/28/2015
30 | * Time: 10:41 AM
31 | */
32 | public class MFMCategoryTree {
33 |
34 | private JCheckBoxTree jcbtree;
35 |
36 | public MFMCategoryTree(SortedMap> treeMap) {
37 | buildTree(treeMap);
38 | }
39 |
40 | public JCheckBoxTree getJCBTree() {
41 | return jcbtree;
42 | }
43 |
44 | private void buildTree(SortedMap> treeMap) {
45 |
46 | DefaultMutableTreeNode root;
47 | root = new DefaultMutableTreeNode("root");
48 | jcbtree = new JCheckBoxTree(root);
49 |
50 | for (Map.Entry> entry : treeMap.entrySet()) {
51 | DefaultMutableTreeNode catNode = new DefaultMutableTreeNode(entry.getKey());
52 | if (!entry.getValue().isEmpty()) {
53 | for (String childCat : entry.getValue()) {
54 | catNode.add(new DefaultMutableTreeNode(childCat));
55 | }
56 | }
57 | root.add(catNode);
58 | }
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/ui/MFMHTMLTextPane.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.mfm.ui;
20 |
21 | import javax.swing.*;
22 | import javax.swing.event.HyperlinkEvent;
23 | import javax.swing.event.HyperlinkListener;
24 | import java.awt.*;
25 | import java.io.IOException;
26 | import java.net.URISyntaxException;
27 |
28 | /**
29 | * Created by IntelliJ IDEA.
30 | * User: Phweda
31 | * Date: 5/12/2015
32 | * Time: 10:08 PM
33 | */
34 | @SuppressWarnings("squid:MaximumInheritanceDepth")
35 | class MFMHTMLTextPane extends JTextPane {
36 |
37 | MFMHTMLTextPane() {
38 | this.setContentType("text/html");
39 | this.addHyperlinkListener(new UrlHyperlinkListener());
40 | }
41 |
42 | private class UrlHyperlinkListener implements HyperlinkListener {
43 | @Override
44 | public void hyperlinkUpdate(final HyperlinkEvent event) {
45 | if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
46 | try {
47 | Desktop.getDesktop().browse(event.getURL().toURI());
48 | } catch (final IOException | URISyntaxException e) {
49 | throw new RuntimeException("Can't open URL", e);
50 | }
51 | }
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/ui/MFMInformationPanel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.mfm.ui;
20 |
21 | import javax.swing.*;
22 | import java.awt.*;
23 |
24 | /**
25 | * Created by IntelliJ IDEA.
26 | * User: Phweda
27 | * Date: 1/21/12
28 | * Time: 2:44 AM
29 | */
30 | public class MFMInformationPanel extends JPanel {
31 | private static final String MESSAGE = "message";
32 | private static final String PROGRESS = "progress";
33 | private static JLabel messageLabel = new JLabel();
34 | private static JProgressBar progressBar = new MFMProgressBar();
35 | private static JPanel progressPanel = new JPanel();
36 | private boolean running = false;
37 | private Timer timer;
38 |
39 | MFMInformationPanel() {
40 | super();
41 | progressPanel.add(progressBar);
42 | CardLayout cl = new CardLayout();
43 | cl.addLayoutComponent(messageLabel, MESSAGE);
44 | cl.addLayoutComponent(progressPanel, PROGRESS);
45 | this.add(messageLabel);
46 | this.add(progressPanel);
47 | this.setLayout(cl);
48 | this.setPreferredSize(new Dimension(350, 100));
49 | }
50 |
51 | void showProgress(String title) {
52 | ((CardLayout) this.getLayout()).last(this);
53 | progressBar.setString(title);
54 | messageLabel.setText("");
55 | updateUI();
56 | progressPanel.setVisible(true);
57 | running = true;
58 | runProgress();
59 | }
60 |
61 | public void showProgress(String message, int fontSize) {
62 | progressBar.setFont(new Font("Arial", Font.BOLD, fontSize));
63 | showProgress(message);
64 | }
65 |
66 | public void showMessage(String message) {
67 | running = false;
68 | MFMInformationPanel.messageLabel.setText(message);
69 | if (timer != null) {
70 | timer.stop();
71 | timer = null;
72 | }
73 | ((CardLayout) this.getLayout()).first(this);
74 | }
75 |
76 | private void runProgress() {
77 | // JOptionPane.showMessageDialog(null, "We are in runProgress()");
78 | progressBar.setIndeterminate(true);
79 | progressBar.setStringPainted(true);
80 | }
81 |
82 | }
83 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/ui/MFMProgressBar.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.mfm.ui;
20 |
21 | import javax.swing.*;
22 | import java.awt.*;
23 |
24 | import static java.lang.Thread.sleep;
25 |
26 | /**
27 | * Created by IntelliJ IDEA.
28 | * User: Phweda
29 | * Date: 1/17/12
30 | * Time: 9:16 PM
31 | */
32 | public class MFMProgressBar extends JProgressBar implements Runnable {
33 | MFMProgressBar() {
34 | super(0, 100);
35 | this.setBackground(Color.white);
36 | this.setForeground(Color.green);
37 | this.setPreferredSize(new Dimension(600, 30));
38 | this.setIndeterminate(true);
39 | }
40 |
41 | private void increment(int newValue) {
42 | this.setIndeterminate(false);
43 | this.setValue(newValue);
44 | repaint();
45 | }
46 |
47 | @SuppressWarnings("InfiniteLoopStatement")
48 | @Override
49 | public void run() {
50 | // Progress bar is stopped by deletion
51 | while (true) {
52 | increment(this.getValue() + 5);
53 | try {
54 | sleep(1000);
55 | } catch (InterruptedException e) {
56 | e.printStackTrace();
57 | Thread.currentThread().interrupt();
58 | }
59 | }
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/ui/MachineListForm.form:
--------------------------------------------------------------------------------
1 |
2 |
53 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/ui/component/validation/UiMessageSeverity.java:
--------------------------------------------------------------------------------
1 | package com.github.phweda.mfm.ui.component.validation;
2 |
3 | public enum UiMessageSeverity {
4 | ERROR,
5 | WARNING;
6 |
7 | public static UiMessageSeverity maxSeverity(UiMessageSeverity ums1, UiMessageSeverity ums2) {
8 | if (ERROR == ums1 || ERROR == ums2) {
9 | return ERROR;
10 | } else if (WARNING == ums1 || WARNING == ums2){
11 | return WARNING;
12 | }
13 | return null;
14 | }
15 |
16 | public static boolean higherSeverity(UiMessageSeverity origS, UiMessageSeverity newS) {
17 | return origS==null || (WARNING == origS && newS ==ERROR);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/ui/component/validation/ValidationBase.form:
--------------------------------------------------------------------------------
1 |
2 |
27 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/ui/component/validation/ValidationBase.java:
--------------------------------------------------------------------------------
1 | package com.github.phweda.mfm.ui.component.validation;
2 |
3 | import com.intellij.uiDesigner.core.GridConstraints;
4 | import com.intellij.uiDesigner.core.GridLayoutManager;
5 | import com.intellij.uiDesigner.core.Spacer;
6 |
7 | import javax.swing.*;
8 | import java.awt.*;
9 |
10 | public class ValidationBase {
11 | private JPanel pnlValidationMsgHolder;
12 | private JLabel lblValidationMsg;
13 | private UiMessageSeverity severity = null;
14 | private JPanel panelComponentHolder;
15 |
16 | public void setPanelComponentHolder(JPanel panelComponentHolder) {
17 | this.panelComponentHolder = panelComponentHolder;
18 | }
19 |
20 | public void clearMessage() {
21 | severity = null;
22 | lblValidationMsg.setText("");
23 | panelComponentHolder.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
24 | }
25 |
26 | public boolean setMessage(String text, UiMessageSeverity messageSeverity) {
27 | if (!UiMessageSeverity.higherSeverity(this.severity, messageSeverity)) {
28 | return false;
29 | }
30 | lblValidationMsg.setText(text);
31 | this.severity = messageSeverity;
32 | switch (messageSeverity) {
33 | case ERROR:
34 | lblValidationMsg.setForeground(Color.RED);
35 | panelComponentHolder.setBorder(BorderFactory.createLineBorder(Color.RED, 2));
36 | break;
37 | case WARNING:
38 | lblValidationMsg.setForeground(Color.ORANGE);
39 | panelComponentHolder.setBorder(BorderFactory.createLineBorder(Color.ORANGE, 2));
40 | break;
41 | default:
42 | throw new RuntimeException("Unknown severity: " + messageSeverity);
43 | }
44 | return true;
45 | }
46 |
47 | {
48 | // GUI initializer generated by IntelliJ IDEA GUI Designer
49 | // >>> IMPORTANT!! <<<
50 | // DO NOT EDIT OR ADD ANY CODE HERE!
51 | $$$setupUI$$$();
52 | }
53 |
54 | /**
55 | * Method generated by IntelliJ IDEA GUI Designer
56 | * >>> IMPORTANT!! <<<
57 | * DO NOT edit this method OR call it in your code!
58 | *
59 | * @noinspection ALL
60 | */
61 | private void $$$setupUI$$$() {
62 | pnlValidationMsgHolder = new JPanel();
63 | pnlValidationMsgHolder.setLayout(new GridLayoutManager(2, 1, new Insets(0, 0, 0, 0), -1, -1));
64 | lblValidationMsg = new JLabel();
65 | lblValidationMsg.setText("");
66 | pnlValidationMsgHolder.add(lblValidationMsg, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
67 | final Spacer spacer1 = new Spacer();
68 | pnlValidationMsgHolder.add(spacer1, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false));
69 | }
70 |
71 | /**
72 | * @noinspection ALL
73 | */
74 | public JComponent $$$getRootComponent$$$() {
75 | return pnlValidationMsgHolder;
76 | }
77 |
78 | }
79 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/ui/component/validation/ValidationResult.java:
--------------------------------------------------------------------------------
1 | package com.github.phweda.mfm.ui.component.validation;
2 |
3 | public class ValidationResult {
4 |
5 | UiMessageSeverity mesasgeSeverity = null;
6 |
7 | public UiMessageSeverity getMesasgeSeverity() {
8 | return mesasgeSeverity;
9 | }
10 |
11 | public void updateMessageSeverity(UiMessageSeverity nMesasgeSeverity) {
12 | mesasgeSeverity = UiMessageSeverity.maxSeverity(mesasgeSeverity, nMesasgeSeverity);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/utils/MFM_Clean_Logs.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.mfm.utils;
20 |
21 | import com.github.phweda.mfm.MFM;
22 |
23 | import java.io.File;
24 | import java.io.IOException;
25 | import java.nio.file.Files;
26 | import java.nio.file.Paths;
27 |
28 | /**
29 | * Created by IntelliJ IDEA.
30 | * User: Phweda
31 | * Date: 7/9/13
32 | * Time: 4:04 PM
33 | */
34 | public class MFM_Clean_Logs {
35 |
36 | private MFM_Clean_Logs() { // Hide implicit public constructor - squid:S1118
37 | }
38 |
39 | public static void cleanLogs() {
40 | // 86,400,000 == 1 day in milliseconds
41 | long deleteTime = System.currentTimeMillis() - 86400000;
42 |
43 | File logsDirectory = new File(MFM.getMfmLogsDir());
44 | File[] files = logsDirectory.listFiles();
45 | if (files != null) {
46 | for (File child : files) {
47 | if (child.lastModified() < deleteTime)
48 | try {
49 | Files.deleteIfExists(Paths.get(child.getAbsolutePath()));
50 | } catch (IOException e) {
51 | e.printStackTrace();
52 | }
53 | }
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/utils/ParseCatverINI.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.mfm.utils;
20 |
21 | import com.github.phweda.mfm.MFM;
22 | import com.github.phweda.utils.ParseTextFile;
23 |
24 | import java.util.HashMap;
25 | import java.util.Map;
26 | import java.util.Scanner;
27 |
28 | /**
29 | * Created by IntelliJ IDEA.
30 | * User: Phweda
31 | * Date: 12/3/11
32 | * Time: 2:06 PM
33 | */
34 | public class ParseCatverINI extends ParseTextFile {
35 | /* Sort of redundant to have both */
36 | private boolean category = false;
37 | private boolean MAMEVersionAdded = false;
38 |
39 | /**
40 | * Constructor.
41 | *
42 | * @param fileName full name of an existing, readable file.
43 | */
44 | public ParseCatverINI(String fileName, Map mapIn) {
45 | super(fileName, mapIn);
46 | MFM.getLogger().addToList("Catver file name: " + fileName, true);
47 | }
48 |
49 | @Override
50 | protected void processLine(String line) {
51 | if (line.startsWith("[") || line.length() < 3) {
52 | if (line.startsWith("[Category]")) {
53 | category = true;
54 | // Not needed but just to be robust if they ever change the file format order
55 | MAMEVersionAdded = false;
56 | }
57 | if (line.startsWith("[VerAdded]")) {
58 | MAMEVersionAdded = true;
59 | category = false;
60 | }
61 | return;
62 | }
63 | //use a second Scanner to parse the content of each line
64 | Scanner lineScanner = new Scanner(line);
65 | lineScanner.useDelimiter("=");
66 | if (lineScanner.hasNext()) {
67 | String key = lineScanner.next();
68 | String value = "";
69 | if (lineScanner.hasNext()) {
70 | value = lineScanner.next();
71 | }
72 | if (category) {
73 | ((HashMap) map.get("category")).put(key.trim(), value.trim());
74 | } else if (MAMEVersionAdded) {
75 | ((HashMap) map.get("version")).put(key.trim(), value.trim());
76 | } else {
77 | // WE SHOULD NEVER GET HERE BUT ...
78 | MFM.getLogger().addToList("ParseCatverINI We failed to find version or category");
79 | }
80 | }
81 | lineScanner.close();
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/utils/ParseCommandList.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.mfm.utils;
20 |
21 | import com.github.phweda.utils.ParseTextFile;
22 |
23 | import java.util.HashMap;
24 | import java.util.Map;
25 |
26 | /**
27 | * Created by IntelliJ IDEA.
28 | * User: Phweda
29 | * Date: 11/27/11
30 | * Time: 5:31 PM
31 | */
32 | public class ParseCommandList extends ParseTextFile {
33 | private Map commands;
34 |
35 | /**
36 | * Constructor.
37 | *
38 | * @param fileName full name of an existing, readable file.
39 | * @param mapIn A Map of Maps with the command set Category as key
40 | */
41 | public ParseCommandList(String fileName, Map mapIn) {
42 | super(fileName, mapIn);
43 | }
44 |
45 | @Override
46 | protected void processLine(String line) {
47 | /* Eliminate any lines not a Command Category '#' or Command '-' */
48 | if (line.length() < 3 || (line.charAt(0) != '-' && line.charAt(0) != '#' && line.charAt(0) != '*')) {
49 | return;
50 | }
51 |
52 | if (line.charAt(0) == '#' || line.charAt(0) == '*') {
53 | StringBuilder sb = new StringBuilder(line);
54 | sb.delete(0, 1); //Remove # and space
55 | String category = sb.toString().trim();
56 | if (map.containsKey(category)) {
57 | // Bad design this uses different Map
58 | commands = (Map) map.get(category);
59 | } else {
60 | commands = new HashMap<>(20);
61 | // Bad design this uses different Map
62 | map.put(category, commands);
63 | }
64 |
65 | } else if (line.charAt(0) == '-') {
66 | /* Split at First whitespace */
67 | // TODO fix this REGEX returns empty first string - String[] strs = line.split("^(\\S*)");
68 | String[] strs = new String[2];
69 | if (!line.contains("/")) { // early MAME versions had short command switches
70 | int index = line.indexOf(' ');
71 | strs[0] = line.substring(0, index);
72 | strs[1] = line.substring(index + 1);
73 | commands.put(strs[0], strs[1].trim());
74 | } else {
75 | strs[0] = line.substring(0, 31);
76 | strs[1] = line.substring(32);
77 | commands.put(strs[0].trim(), strs[1].trim());
78 | }
79 | } else {
80 | /* We should never get here but ... */
81 | log("Invalid line. Unable to process.");
82 | }
83 |
84 | }
85 | }
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/utils/ParseExtrasInfoDATs.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.mfm.utils;
20 |
21 | import com.github.phweda.utils.ParseTextFile;
22 |
23 | import java.util.Map;
24 |
25 | /**
26 | * Created by IntelliJ IDEA.
27 | * User: Phweda
28 | * Date: 12/3/2014
29 | * Time: 7:43 PM
30 | */
31 | public class ParseExtrasInfoDATs extends ParseTextFile {
32 | /**
33 | * Constructor.
34 | *
35 | * @param fileName full name of an existing, readable file
36 | */
37 | public ParseExtrasInfoDATs(String fileName, Map mapIn) {
38 | super(fileName, mapIn);
39 | }
40 |
41 | @Override
42 | protected void processLine(String line) {
43 |
44 | StringBuilder infoText = new StringBuilder();
45 |
46 | /* Find next line starting with $info */
47 | while (!line.startsWith("$info") && scanner.hasNext()) {
48 | line = scanner.nextLine();
49 | }
50 |
51 | // $info line has one game
52 | String game = line.substring(6);
53 |
54 | // NOTE March 2017 end of messinfo.dat has changed we can get here on EOF
55 | /* Find next line starting with $mame & GOTO next line */
56 | if (scanner.hasNext()) {
57 | do {
58 | line = scanner.nextLine();
59 | } while (!line.startsWith("$mame") && scanner.hasNext());
60 | }
61 |
62 | /* Are we at EOF? */
63 | if (!scanner.hasNext()) {
64 | return;
65 | }
66 | line = scanner.nextLine(); // skip $mame
67 |
68 | /* Until line starting with $end */
69 | do {
70 | infoText.append(line).append('\n');
71 | line = scanner.nextLine();
72 | } while (!line.startsWith("$end"));
73 |
74 | map.put(game, infoText.toString());
75 | }
76 |
77 | }
78 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/utils/ParseGameList.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.mfm.utils;
20 |
21 | import com.github.phweda.utils.ParseTextFile;
22 |
23 | import java.util.Map;
24 | import java.util.Scanner;
25 |
26 | /**
27 | * Created by IntelliJ IDEA.
28 | * User: Phweda
29 | * Date: 11/25/11
30 | * Time: 9:49 PM
31 | */
32 | public class ParseGameList extends ParseTextFile {
33 | /**
34 | * Constructor.
35 | *
36 | * @param fileName full name of an existing, readable file.
37 | */
38 | public ParseGameList(String fileName, Map mapIn) {
39 | super(fileName, mapIn);
40 | }
41 |
42 | @Override
43 | protected void processLine(String line) {
44 | //use a second Scanner to parse the content of each line
45 | try (Scanner scanner = new Scanner(line)) {
46 | scanner.useDelimiter("\"");
47 | if (scanner.hasNext()) {
48 | String key = scanner.next();
49 | String value = "";
50 | if (scanner.hasNext()) {
51 | value = scanner.next();
52 | }
53 | map.put(key.trim(), value.trim());
54 | } else {
55 | log("Empty or invalid line. Unable to process.");
56 | }
57 | }
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/utils/ParseHistoryDAT.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.mfm.utils;
20 |
21 | import com.github.phweda.utils.ParseTextFile;
22 |
23 | import java.util.Map;
24 |
25 | /**
26 | * Created by IntelliJ IDEA.
27 | * User: Phweda
28 | * Date: 12/2/11
29 | * Time: 10:08 PM
30 | */
31 | public class ParseHistoryDAT extends ParseTextFile {
32 | /**
33 | * Constructor.
34 | *
35 | * @param fileName full name of an existing, readable file
36 | */
37 | public ParseHistoryDAT(String fileName, Map mapIn) {
38 | super(fileName, mapIn);
39 | }
40 |
41 | @Override
42 | protected void processLine(String line) {
43 |
44 | StringBuilder historyText = new StringBuilder();
45 |
46 | /* Find next line starting with $info */
47 | while (!line.startsWith("$info") && scanner.hasNext()) {
48 | line = scanner.nextLine();
49 | }
50 | /* Are we at EOF? */
51 | if (!scanner.hasNext()) {
52 | return;
53 | }
54 | // $info line has one or more game names
55 | line = line.substring(6, line.length() - 1);
56 | String[] games = line.trim().split("[,]");
57 | /* Find next line starting with $bio & GOTO next line */
58 | do {
59 | line = scanner.nextLine();
60 | } while (!line.startsWith("$bio"));
61 | line = scanner.nextLine(); // skip $bio
62 |
63 | /* Until line starting with $end */
64 | do {
65 | historyText.append(line).append('\n');
66 | line = scanner.nextLine();
67 | } while (!line.startsWith("$end"));
68 |
69 | for (String game : games) {
70 | map.put(game, historyText.toString());
71 | }
72 |
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/utils/ParseMAMEList.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.mfm.utils;
20 |
21 | /**
22 | * Created by IntelliJ IDEA.
23 | * User: Phweda
24 | * Date: 11/29/11
25 | * Time: 9:27 PM
26 | */
27 | public class ParseMAMEList {
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/utils/ParseRootOnlyINI.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.mfm.utils;
20 |
21 | import com.github.phweda.utils.ParseTextFile;
22 |
23 | import java.util.Map;
24 |
25 | /**
26 | * Created by IntelliJ IDEA.
27 | * User: Phweda
28 | * Date: 1/15/2018
29 | * Time: 10:57 AM
30 | */
31 | public class ParseRootOnlyINI extends ParseTextFile {
32 | ParseRootOnlyINI(String fileName, Map mapIn) {
33 | super(fileName, mapIn);
34 | }
35 |
36 | @Override
37 | protected void processLine(String line) {
38 |
39 | while (scanner.hasNext()) {
40 |
41 | /* TODO figure out the Regex : match left square bracket followed by zero
42 | * or more alpha and or numeric characters followed by right square bracket
43 | * That would greatly reduce the following
44 | */
45 | //scanner.next(Pattern.compile("[\[\d*?\w\*?]]"))
46 | if (line.contains("[") && !line.contains("FOLDER_SETTINGS")) {
47 | // Resolve the 'only has Root Folder' issue
48 | if (line.contains("ROOT_FOLDER")) {
49 | do {
50 | line = scanner.nextLine();
51 | } while (line.matches("\\s*") || line.startsWith(";"));
52 | }
53 |
54 |
55 | while (scanner.hasNext()) {
56 | if (line.length() > 0) {
57 | map.put(line, "");
58 | }
59 | line = scanner.nextLine();
60 | }
61 | } else {
62 | line = scanner.nextLine();
63 | }
64 | }
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/utils/ParseSYSINFODAT.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.mfm.utils;
20 |
21 | import com.github.phweda.utils.ParseTextFile;
22 |
23 | import java.util.Map;
24 |
25 | /**
26 | * Created by IntelliJ IDEA.
27 | * User: Phweda
28 | * Date: 9/16/2015
29 | * Time: 8:43 PM
30 | */
31 | public class ParseSYSINFODAT extends ParseTextFile {
32 |
33 | /**
34 | * Constructor.
35 | *
36 | * @param fileName full name of an existing, readable file.
37 | */
38 | public ParseSYSINFODAT(String fileName, Map mapIn) {
39 | super(fileName, mapIn);
40 | }
41 |
42 | @Override
43 | protected void processLine(String line) {
44 | StringBuilder infoText = new StringBuilder();
45 |
46 | /* Find next line starting with $info */
47 | while (!line.startsWith("$info") && scanner.hasNext()) {
48 | line = scanner.nextLine();
49 | }
50 | // $info line may have multiple comma separated systems and may end with a comma
51 |
52 | if (line.startsWith("$info") && line.length() > 6) {
53 | line = line.substring(6);
54 | if (line.endsWith(",")) {
55 | line = line.substring(0, line.length() - 2);
56 | }
57 | }
58 |
59 | String[] systems = line.split("[,]");
60 |
61 | /* Find next line starting with $bio & GOTO next line */
62 | do {
63 | /* Are we at EOF? */
64 | if (!scanner.hasNext()) {
65 | return;
66 | }
67 | line = scanner.nextLine();
68 | } while (!line.startsWith("$bio") && scanner.hasNext());
69 | line = scanner.nextLine(); // skip $bio
70 |
71 | /* Until line starting with $end */
72 | do {
73 | infoText.append(line).append('\n');
74 | line = scanner.nextLine();
75 | } while (!line.startsWith("$end"));
76 |
77 | for (String system : systems) {
78 | map.put(system, infoText.toString());
79 | }
80 |
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/mfm/utils/ParsenPlayerINI.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.mfm.utils;
20 |
21 | import com.github.phweda.utils.ParseTextFile;
22 |
23 | import java.util.Map;
24 | import java.util.Scanner;
25 |
26 | /**
27 | * Created by IntelliJ IDEA.
28 | * User: Phweda
29 | * Date: 10/6/2015
30 | * Time: 9:23 PM
31 | */
32 | public class ParsenPlayerINI extends ParseTextFile {
33 | public ParsenPlayerINI(String fileName, Map nplayers) {
34 | super(fileName, nplayers);
35 | }
36 |
37 | @Override
38 | protected void processLine(String line) {
39 | if (line.isEmpty() || !line.contains("=")) {
40 | return;
41 | }
42 | //use a second Scanner to parse the content of each line
43 | try (Scanner lineScanner = new Scanner(line)) {
44 | lineScanner.useDelimiter("=");
45 | if (lineScanner.hasNext()) {
46 | String key = lineScanner.next();
47 | String value = "";
48 | if (lineScanner.hasNext()) {
49 | value = lineScanner.next();
50 | }
51 | map.put(key, value);
52 | }
53 | //no need to call lineScanner.close(), since the source is a String
54 | }
55 | }
56 | }
57 |
58 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/utils/ClickListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.utils;
20 |
21 | import javax.swing.*;
22 | import java.awt.*;
23 | import java.awt.event.ActionEvent;
24 | import java.awt.event.ActionListener;
25 | import java.awt.event.MouseAdapter;
26 | import java.awt.event.MouseEvent;
27 |
28 | public abstract class ClickListener extends MouseAdapter implements ActionListener {
29 | private static final int CLICK_INTERVAL = 500;
30 | private MouseEvent lastEvent;
31 | private Timer timer;
32 |
33 | public ClickListener() {
34 | this(CLICK_INTERVAL);
35 | }
36 |
37 | private ClickListener(int delay) {
38 | Integer desktopMultiClickInterval = (Integer) Toolkit.getDefaultToolkit().getDesktopProperty(
39 | "awt.multiClickInterval");
40 | if (desktopMultiClickInterval != null) {
41 | delay = desktopMultiClickInterval;
42 | }
43 | timer = new Timer(delay, this);
44 | }
45 |
46 | // For testing and validation
47 | public static void main(String[] args) {
48 | JFrame frame = new JFrame("Double Click Test");
49 | frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
50 | frame.addMouseListener(new ClickListener() {
51 |
52 | @Override
53 | public void singleClick(MouseEvent e) {
54 | System.out.println("single : " + e.toString());
55 | }
56 |
57 | @Override
58 | public void doubleClick(MouseEvent e) {
59 | System.out.println("double : " + e.toString());
60 | }
61 | });
62 | frame.setPreferredSize(new Dimension(200, 200));
63 | frame.pack();
64 | frame.setVisible(true);
65 | }
66 |
67 | /*
68 | * NOTE always call super when you override this method
69 | * to ensure double click behavior
70 | *
71 | */
72 | @Override
73 | public void mouseClicked(MouseEvent e) {
74 | lastEvent = e;
75 | if (timer.isRunning() && !e.isConsumed() && e.getClickCount() > 1) {
76 | doubleClick(lastEvent);
77 | timer.stop();
78 | } else {
79 | timer.restart();
80 | }
81 | }
82 |
83 | /*
84 | * NOTE always call super when you override this method
85 | * to ensure double click behavior
86 | *
87 | */
88 | @Override
89 | public void actionPerformed(ActionEvent e) {
90 | timer.stop();
91 | singleClick(lastEvent);
92 | }
93 |
94 | public abstract void singleClick(MouseEvent e);
95 |
96 | public abstract void doubleClick(MouseEvent e);
97 |
98 | }
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/utils/ClockPanel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.utils;
20 |
21 | import javax.swing.*;
22 | import java.awt.*;
23 | import java.util.Calendar;
24 |
25 | public class ClockPanel extends JPanel implements Runnable {
26 | private transient Thread thread;
27 |
28 | public ClockPanel() {
29 | setPreferredSize(new Dimension(60, 30));
30 | // setFont(new Font("Arial", Font.BOLD, 16));
31 | }
32 |
33 | @Override
34 | public void paintComponent(Graphics g) {
35 | g.setColor(super.getBackground());
36 | g.fillRect(0, 0, getWidth(), getHeight());
37 | g.setColor(super.getForeground());
38 | g.drawString(timeNow(), 20, 25);
39 | }
40 |
41 | private String timeNow() {
42 | Calendar now = Calendar.getInstance();
43 | int hrs = now.get(Calendar.HOUR_OF_DAY);
44 | int min = now.get(Calendar.MINUTE);
45 | int sec = now.get(Calendar.SECOND);
46 | return zero(hrs) + ":" + zero(min) + ":" + zero(sec);
47 | }
48 |
49 | private String zero(int num) {
50 | return (num < 10) ? ("0" + num) : ("" + num);
51 | }
52 |
53 | public void start() {
54 | if (thread == null) thread = new Thread(this);
55 | thread.start();
56 | }
57 |
58 | public void run() {
59 | while (thread == Thread.currentThread()) {
60 | repaint();
61 | try {
62 | Thread.sleep(1000);
63 | } catch (InterruptedException e) {
64 | System.err.println("Clock thread InterruptedException");
65 | Thread.currentThread().interrupt();
66 | }
67 |
68 | }
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/utils/LangUtils.java:
--------------------------------------------------------------------------------
1 | package com.github.phweda.utils;
2 |
3 | /**
4 | * java language utils
5 | *
6 | * @author voji
7 | *
8 | */
9 | public class LangUtils {
10 |
11 | /**
12 | * determinate given number is in range
13 | * @param rangeStart
14 | * range start
15 | *
16 | * @param rangeEnd
17 | * range end
18 | *
19 | * @param value
20 | * given value to check
21 | *
22 | * @return
23 | * true - given value is between given range
24 | * false - given vaule isnt in given range
25 | */
26 | public static boolean isBetween(int rangeStart, int rangeEnd, int value) {
27 | return rangeEnd > rangeStart ? value > rangeStart && value < rangeEnd : value > rangeEnd
28 | && value < rangeStart;
29 | }
30 |
31 | /**
32 | * return given array element at given index. if array is null you outindex the array
33 | * return given default value instead of excepion
34 | *
35 | * @param array
36 | * given array
37 | *
38 | * @param index
39 | * given index
40 | *
41 | * @param defaultValue
42 | * default value if fails
43 | *
44 | * @return
45 | * array item from given index or default value on error
46 | */
47 | public static T safeGetArray(T[] array, int index, T defaultValue) {
48 | if (array != null) {
49 | // check indexes
50 | int arrayLength = array.length;
51 | if (isBetween(-1, arrayLength, index)) {
52 | return array[index];
53 | }
54 | }
55 | return defaultValue;
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/utils/ParseTextFile.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.utils;
20 |
21 | import java.io.File;
22 | import java.io.FileNotFoundException;
23 | import java.io.FileReader;
24 | import java.util.Map;
25 | import java.util.Scanner;
26 |
27 | /**
28 | * Created by IntelliJ IDEA.
29 | * User: phweda
30 | * Date: 11/24/11
31 | * Time: 3:16 PM
32 | */
33 | public class ParseTextFile {
34 |
35 | protected static final String ALPHANUM_REGEX = "^[a-zA-Z0-9]";
36 | protected static final String NUM_REGEX = "^[0-9]";
37 | protected static final String ALPHA_REGEX = "^[a-zA-Z]";
38 | protected Scanner scanner;
39 | // Bad design we overload with multiple Map parameter types
40 | protected Map map;
41 | private File file;
42 |
43 | /**
44 | * Constructor.
45 | *
46 | * @param fileName full name of an existing, readable file.
47 | */
48 | public ParseTextFile(String fileName, Map mapIn) {
49 | file = new File(fileName);
50 | map = mapIn;
51 | }
52 |
53 | protected static void log(Object object) {
54 | System.out.println(String.valueOf(object));
55 | }
56 |
57 | /** */
58 | public Map processFile() throws FileNotFoundException {
59 | //FileReader is used, not File, since File is not Closeable
60 | scanner = new Scanner(new FileReader(file));
61 | try {
62 | //Scanner to get each line
63 | while (scanner.hasNextLine()) {
64 | processLine(scanner.nextLine());
65 | }
66 | } finally {
67 | //Close the underlying stream
68 | scanner.close();
69 | }
70 | return map;
71 | }
72 |
73 | /**
74 | * Overridable method for processing lines in different ways.
75 | **/
76 | protected void processLine(String line) {
77 | //use a second Scanner to parse the content of each line
78 | try (Scanner scanner = new Scanner(line)) {
79 | scanner.useDelimiter("=");
80 | if (scanner.hasNext()) {
81 | String key = scanner.next();
82 | String value = "";
83 | if (scanner.hasNext()) {
84 | value = scanner.next();
85 | }
86 | log("Key is : " + quote(key.trim()) + ", and Value is : " + quote(value.trim()));
87 | } else {
88 | log("Empty or invalid line. Unable to process.");
89 | }
90 | }
91 | //no need to call scanner.close(), since the source is a String
92 | }
93 |
94 | private String quote(String text) {
95 | String singleQuote = "'";
96 | return singleQuote + text + singleQuote;
97 | }
98 |
99 | }
100 |
101 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/utils/Pastie.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.utils;
20 |
21 | import java.io.BufferedReader;
22 | import java.io.IOException;
23 | import java.io.InputStreamReader;
24 | import java.io.OutputStreamWriter;
25 | import java.net.URL;
26 | import java.net.URLConnection;
27 | import java.net.URLEncoder;
28 | import java.util.regex.Matcher;
29 | import java.util.regex.Pattern;
30 |
31 | /**
32 | * Created by IntelliJ IDEA.
33 | * User: phweda
34 | * Date: 11/25/2015
35 | * Time: 4:23 PM
36 | */
37 | public class Pastie {
38 |
39 | private static Pattern pattern = Pattern.compile("download\\?key=(.+?)\"");
40 |
41 | public String postText(String text) throws IOException {
42 |
43 | // int 6 is the Pastie value for Text post see
44 | String response = shareAndGetResponse(text, 6);
45 | String pastedCodeFragmentUniqueKey = extractKeyFrom(response);
46 |
47 | String pastieBaseUrl = "http://pastie.org/private/";
48 | return pastieBaseUrl + pastedCodeFragmentUniqueKey;
49 | }
50 |
51 | private String shareAndGetResponse(String selection, int languageDropdownId) throws IOException {
52 | URL url = new URL("http://pastie.org/pastes");
53 | URLConnection conn = url.openConnection();
54 | conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
55 | conn.setDoOutput(true);
56 | OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
57 |
58 | String data = "paste[parser_id]=" + languageDropdownId +
59 | "&paste[authorization]=burger&paste[restricted]=1&paste[body]=" + URLEncoder.encode(selection, "UTF-8");
60 | writer.write(data);
61 | writer.flush();
62 | writer.close();
63 |
64 | StringBuilder answer = loadResponse(conn);
65 | return answer.toString();
66 | }
67 |
68 | private StringBuilder loadResponse(URLConnection conn) throws IOException {
69 | StringBuilder answer = new StringBuilder();
70 | BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
71 | String line;
72 | while ((line = reader.readLine()) != null) {
73 | answer.append(line);
74 | }
75 | reader.close();
76 | return answer;
77 | }
78 |
79 | private String extractKeyFrom(String response) {
80 | Matcher matcher = pattern.matcher(response);
81 | if (matcher.find()) {
82 | return matcher.group(1);
83 | }
84 | throw new RuntimeException("Sorry. Plugin wasn't able to extract url to pasted code fragment.");
85 | }
86 |
87 | }
88 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/utils/QuadState.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.utils;
20 |
21 | /**
22 | * Created by IntelliJ IDEA.
23 | * User: phweda
24 | * Date: 10/26/2015
25 | * Time: 12:19 PM
26 | */
27 | public class QuadState {
28 | public static final String ALL = "All";
29 | private static final int ALL_THREE = 0;
30 | private static final int FIRST = 1;
31 | private static final int SECOND = 2;
32 | private static final int THIRD = 3;
33 | private final String firstName;
34 | private final String secondName;
35 | private final String thirdName;
36 | private int state;
37 |
38 | public QuadState(String first, String second, String third, String state) {
39 | this.firstName = first;
40 | this.secondName = second;
41 | this.thirdName = third;
42 | setState(state);
43 | }
44 |
45 | public String getState() {
46 | if (state == FIRST) {
47 | return firstName;
48 | } else if (state == SECOND) {
49 | return secondName;
50 | } else if (state == THIRD) {
51 | return thirdName;
52 | } else if (state == ALL_THREE) {
53 | return ALL;
54 | }
55 | // NOTE Error condition.
56 | return null;
57 | }
58 |
59 | public void setState(String stateIn) {
60 | if (stateIn.equals(firstName)) {
61 | state = FIRST;
62 | } else if (stateIn.equals(secondName)) {
63 | state = SECOND;
64 | } else if (stateIn.equals(thirdName)) {
65 | state = THIRD;
66 | } else if (stateIn.equals(ALL)) {
67 | state = ALL_THREE;
68 | }
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/utils/SysUtils.java:
--------------------------------------------------------------------------------
1 | package com.github.phweda.utils;
2 |
3 | import java.net.InetAddress;
4 | import java.net.UnknownHostException;
5 |
6 | public class SysUtils {
7 | private static String computerName = null;
8 |
9 | /**
10 | * return computer name (calculated or forced)
11 | *
12 | * @return computer name
13 | */
14 | public static String getComputerName() {
15 | if (computerName == null) {
16 | try {
17 | String origComputerName = InetAddress.getLocalHost().getHostName();
18 | computerName = FileUtils.sanitizeFileName(origComputerName).toLowerCase();
19 | } catch (UnknownHostException e1) {
20 | }
21 | if (computerName==null) {
22 | computerName = "ufo";
23 | }
24 | }
25 | return computerName;
26 | }
27 |
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/com/github/phweda/utils/TriState.java:
--------------------------------------------------------------------------------
1 | /*
2 | * MAME FILE MANAGER - MAME resources management tool
3 | * Copyright (c) 2011 - 2018. Author phweda : phweda1@yahoo.com
4 | *
5 | * This program is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * This program is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program. If not, see .
17 | */
18 |
19 | package com.github.phweda.utils;
20 |
21 | /**
22 | * Created by IntelliJ IDEA.
23 | * User: phweda
24 | * Date: 10/12/2015
25 | * Time: 2:28 PM
26 | */
27 |
28 | /**
29 | * TriState encapsulates settings that need an either or, or BOTHINT state
30 | */
31 | public class TriState {
32 |
33 | public static final String BOTH = "all";
34 | private static final int FIRST = 0;
35 | private static final int SECOND = 1;
36 | private static final int BOTHINT = 2;
37 | private final String firstName;
38 | private final String secondName;
39 | private int state;
40 |
41 | public TriState(String first, String second, String state) {
42 | this.firstName = first;
43 | this.secondName = second;
44 | setState(state);
45 | }
46 |
47 | public String getState() {
48 | if (state == FIRST) {
49 | return firstName;
50 | } else if (state == SECOND) {
51 | return secondName;
52 | } else if (state == BOTHINT) {
53 | return BOTH;
54 | }
55 | // NOTE Error condition.
56 | return "ERROR";
57 | }
58 |
59 | public void setState(String stateIn) {
60 | if (stateIn.equals(firstName)) {
61 | state = FIRST;
62 | } else if (stateIn.equals(secondName)) {
63 | state = SECOND;
64 | } else if (stateIn.equals(BOTH)) {
65 | state = BOTHINT;
66 | }
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/2Joystick_control.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/2Joystick_control.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/A.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/A.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/Arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Arrow.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/Button_control.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Button_control.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/C.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/C.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/CheckMark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/CheckMark.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/Dial_control.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Dial_control.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/EX.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/EX.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/GNU GPL V3.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/GNU GPL V3.html
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/Gambling_control.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Gambling_control.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/Hanafuda_control.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Hanafuda_control.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/Joystick_control.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Joystick_control.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/Keyboard_control.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Keyboard_control.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/Keypad_control.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Keypad_control.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/L.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/L.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/Lightgun_control.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Lightgun_control.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/MFM Copyright.html:
--------------------------------------------------------------------------------
1 |
18 |
19 |
20 |
21 |
22 |
23 | MFM Copyright
24 |
25 |
26 |
27 |
28 | MAME FILE MANAGER - MAME Front End and
29 | resources management
30 |
31 | Copyright (c) 2012-2018 Author phweda :
32 | phweda1@yahoo.com
33 |
34 |
35 |
36 | This program is free software: you can redistribute
37 | it and/or modify
38 |
39 | it under the terms of the GNU General Public License
40 | as published by
41 |
42 | the Free Software Foundation, either version 3 of
43 | the License, or
44 |
45 | (at your option) any later version.
46 |
47 |
48 |
49 | This program is distributed in the hope that it will
50 | be useful,
51 |
52 | but WITHOUT ANY WARRANTY; without even the implied
53 | warranty of
54 |
55 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
56 | See the
57 |
58 | GNU General Public License for more details.
59 |
60 |
61 |
62 | You should have
63 | received a copy of the GNU General Public License along with this program. If
64 | not, see <http://www.gnu.org/licenses/>.
65 |
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/MFM_Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/MFM_Icon.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/MFM_Image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/MFM_Image.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/Mahjong_control2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Mahjong_control2.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/Minus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Minus.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/Mouse_control.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Mouse_control.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/P.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/P.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/Paddle_control.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Paddle_control.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/Pedal_control.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Pedal_control.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/Positional_control.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Positional_control.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/R.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/R.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/S.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/S.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/Stick_control.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Stick_control.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/Trackball_control.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/Trackball_control.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/UpArrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/UpArrow.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/circular_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/circular_arrow.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/AD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AD.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/AF.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AF.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/AG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AG.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/AI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AI.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/AL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AL.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/AM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AM.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/AN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AN.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/AO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AO.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/AR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AR.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/AS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AS.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/AT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AT.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/AU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AU.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/AW.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AW.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/AZ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/AZ.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/BA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BA.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/BB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BB.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/BD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BD.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/BE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BE.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/BF.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BF.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/BG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BG.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/BH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BH.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/BI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BI.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/BJ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BJ.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/BM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BM.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/BN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BN.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/BO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BO.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/BR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BR.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/BS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BS.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/BT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BT.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/BW.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BW.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/BY.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BY.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/BZ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/BZ.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/CA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CA.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/CD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CD.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/CF.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CF.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/CG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CG.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/CI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CI.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/CK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CK.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/CL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CL.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/CM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CM.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/CN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CN.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/CO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CO.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/CR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CR.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/CU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CU.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/CV.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CV.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/CY.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CY.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/CZ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/CZ.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/DE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/DE.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/DJ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/DJ.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/DK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/DK.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/DM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/DM.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/DO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/DO.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/DZ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/DZ.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/EC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/EC.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/EE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/EE.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/EG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/EG.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/ER.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ER.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/ET.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ET.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/FI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/FI.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/FJ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/FJ.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/FM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/FM.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/FO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/FO.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/FR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/FR.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/GA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GA.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/GD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GD.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/GE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GE.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/GG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GG.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/GH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GH.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/GI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GI.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/GL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GL.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/GM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GM.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/GN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GN.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/GP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GP.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/GQ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GQ.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/GR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GR.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/GT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GT.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/GU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GU.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/GW.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GW.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/GY.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/GY.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/HK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/HK.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/HN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/HN.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/HR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/HR.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/HU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/HU.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/ID.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ID.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/IE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/IE.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/IL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/IL.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/IM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/IM.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/IN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/IN.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/IQ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/IQ.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/IR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/IR.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/IS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/IS.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/IT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/IT.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/JE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/JE.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/JM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/JM.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/JO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/JO.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/JP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/JP.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/KE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/KE.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/KG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/KG.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/KH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/KH.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/KI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/KI.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/KM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/KM.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/KP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/KP.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/KW.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/KW.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/KY.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/KY.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/KZ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/KZ.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/LA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/LA.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/LB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/LB.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/LI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/LI.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/LR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/LR.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/LT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/LT.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/LU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/LU.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/LV.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/LV.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/MA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MA.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/MC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MC.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/MD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MD.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/ME.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ME.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/MG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MG.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/MH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MH.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/MK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MK.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/ML.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ML.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/MM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MM.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/MN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MN.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/MO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MO.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/MQ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MQ.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/MR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MR.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/MS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MS.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/MT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MT.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/MU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MU.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/MV.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MV.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/MW.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MW.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/MX.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MX.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/MY.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MY.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/MZ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/MZ.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/NA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/NA.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/NC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/NC.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/NE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/NE.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/NG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/NG.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/NI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/NI.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/NL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/NL.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/NO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/NO.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/PF.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/PF.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/PR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/PR.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/PS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/PS.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/RE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/RE.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/TC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/TC.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/US.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/US.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/VG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/VG.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/VI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/VI.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/WL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/WL.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/WV.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/WV.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/XK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/XK.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/ae.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ae.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/ch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ch.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/eh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/eh.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/es.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/es.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/gb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/gb.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/ht.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ht.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/kn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/kn.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/kr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/kr.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/ks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ks.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/lc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/lc.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/lk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/lk.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/ls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ls.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/ly.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ly.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/np.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/np.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/nr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/nr.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/nz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/nz.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/om.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/om.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/pa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/pa.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/pe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/pe.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/pg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/pg.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/ph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ph.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/pk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/pk.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/pl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/pl.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/pt.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/pw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/pw.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/py.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/py.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/qa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/qa.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/ro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ro.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/rs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/rs.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/ru.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ru.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/rw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/rw.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/sa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sa.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/sb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sb.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/sc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sc.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/sd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sd.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/se.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/se.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/sg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sg.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/si.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/si.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/sk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sk.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/sl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sl.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/sm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sm.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/sn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sn.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/so.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/so.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/sr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sr.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/st.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/st.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/sv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sv.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/sy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sy.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/sz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/sz.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/td.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/td.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/tg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/tg.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/th.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/th.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/tj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/tj.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/tl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/tl.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/tm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/tm.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/tn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/tn.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/to.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/to.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/tr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/tr.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/tt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/tt.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/tv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/tv.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/tw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/tw.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/tz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/tz.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/ua.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ua.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/ug.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ug.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/uy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/uy.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/uz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/uz.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/va.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/va.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/vc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/vc.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/ve.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ve.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/vn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/vn.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/vu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/vu.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/ws.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ws.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/ye.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/ye.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/za.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/za.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/zm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/zm.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/flags/zw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/flags/zw.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/i.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/i.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/mame-logo-SM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/mame-logo-SM.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/mame-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/mame-logo.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/ui/vdub_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/phweda/MFM/c34ad7d4ad4d0e1ecc1a56e713bcb38c79e85e91/src/main/resources/com/github/phweda/mfm/ui/vdub_32.png
--------------------------------------------------------------------------------
/src/main/resources/com/github/phweda/mfm/version.properties:
--------------------------------------------------------------------------------
1 | BUILD_VERSION=0.9.6
2 | RELEASE_VERSION=0.9.5
3 | RELEASE_DATE=Sept 2018
4 |
--------------------------------------------------------------------------------