// Path: src/main/java/de/mprengemann/intellij/plugin/androidicons/model/ImageAsset.java
// public class ImageAsset implements Comparable<ImageAsset>,
//                                    Serializable {
// 
//     private final String name;
//     private final String pack;
//     private final String category;
//     private final List<Resolution> resolutions;
//     private final List<String> colors;
//     private final List<String> sizes;
// 
//     public ImageAsset(String name,
//                       String pack,
//                       String category,
//                       List<Resolution> resolutions,
//                       List<String> colors,
//                       List<String> sizes) {
//         this.name = name;
//         this.pack = pack;
//         this.category = category;
//         this.resolutions = resolutions;
//         this.colors = colors;
//         this.sizes = sizes;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public String getIconPack() {
//         return pack;
//     }
// 
//     public String getCategory() {
//         return category;
//     }
// 
//     public List<Resolution> getResolutions() {
//         return resolutions;
//     }
// 
//     public List<String> getColors() {
//         return colors;
//     }
// 
//     public List<String> getSizes() {
//         return sizes;
//     }
// 
//     @Override
//     public String toString() {
//         return name;
//     }
// 
//     @Override
//     public int compareTo(@NotNull ImageAsset o) {
//         return getName().compareTo(o.getName());
//     }
// }
// 
// Path: src/main/java/de/mprengemann/intellij/plugin/androidicons/model/Resolution.java
// public enum Resolution {
//     LDPI,
//     MDPI,
//     HDPI,
//     XHDPI,
//     XXHDPI,
//     XXXHDPI,
//     TVDPI,
//     ANYDPI;
// 
//     private static final Resolution[] RESOLUTIONS_WITHOUT_SVG = new Resolution[] {
//         LDPI, MDPI, HDPI, XHDPI, XXHDPI, XXXHDPI, TVDPI
//     };
// 
//     public static Resolution[] nonVectorValues() {
//         return RESOLUTIONS_WITHOUT_SVG;
//     }
// 
//     public static Resolution from(String value) {
//         if (TextUtils.isEmpty(value)) {
//             throw new IllegalArgumentException();
//         }
//         if (value.equalsIgnoreCase(LDPI.toString())) {
//             return LDPI;
//         } else if (value.equalsIgnoreCase(MDPI.toString())) {
//             return MDPI;
//         } else if (value.equalsIgnoreCase(HDPI.toString())) {
//             return HDPI;
//         } else if (value.equalsIgnoreCase(XHDPI.toString())) {
//             return XHDPI;
//         } else if (value.equalsIgnoreCase(XXHDPI.toString())) {
//             return XXHDPI;
//         } else if (value.equalsIgnoreCase(XXXHDPI.toString())) {
//             return XXXHDPI;
//         } else if (value.equalsIgnoreCase(TVDPI.toString())) {
//             return TVDPI;
//         } else if (value.equalsIgnoreCase(ANYDPI.toString())) {
//             return ANYDPI;
//         }
//         return null;
//     }
// 
//     public static class Deserializer implements JsonDeserializer<Resolution> {
//         @Override
//         public Resolution deserialize(JsonElement jsonElement,
//                                   Type type,
//                                   JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
//             return Resolution.from(jsonElement.getAsString());
//         }
//     }
// }
// 
// Path: src/main/java/de/mprengemann/intellij/plugin/androidicons/resources/ResourceLoader.java
// public class ResourceLoader {
// 
//     private static final String TAG = ResourceLoader.class.getSimpleName();
//     private static final Logger LOGGER = Logger.getInstance(TAG);
// 
//     static ResourceLoader rl = new ResourceLoader();
// 
//     public static File getExportPath() {
//         final String exportPath = PathManager.getSystemPath();
//         return new File(exportPath, "android-drawable-importer-intellij-plugin");
//     }
// 
//     public static File getAssetResource(String file) {
//         return new File(getExportPath(), file);
//     }
// 
//     public static File getBundledResource(String file) {
//         final URL resource = rl.getClass().getResource(getAssetPath(file));
//         if (resource == null) {
//             return null;
//         }
//         try {
//             return new File(resource.toURI());
//         } catch (URISyntaxException e) {
//             LOGGER.error(e);
//             return new File(resource.getPath());
//         }
//     }
// 
//     public static InputStream getBundledResourceStream(String file) {
//         return rl.getClass().getResourceAsStream(getAssetPath(file));
//     }
// 
//     @NotNull
//     private static String getAssetPath(String file) {
//         return String.format("/assets/%s", file);
//     }
// 
// }


import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.intellij.ide.BrowserUtil;
import de.mprengemann.intellij.plugin.androidicons.model.IconPack;
import de.mprengemann.intellij.plugin.androidicons.model.ImageAsset;
import de.mprengemann.intellij.plugin.androidicons.model.Resolution;
import de.mprengemann.intellij.plugin.androidicons.resources.ResourceLoader;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
    private HashMap<String, List<ImageAsset>> initCategoryMap(IconPack iconPack) {
        final HashMap<String, List<ImageAsset>> categoryMap = Maps.newHashMap();
        if (iconPack == null) {
            return categoryMap;
        }
        for (String category : iconPack.getCategories()) {
            categoryMap.put(category, Lists.<ImageAsset>newArrayList());
        }
        for (ImageAsset asset : iconPack.getAssets()) {
            categoryMap.get(asset.getCategory()).add(asset);
        }
        return categoryMap;
    }

    @Override
    public String getId() {
        return iconPack.getId();
    }

    @Override
    public IconPack getIconPack() {
        return iconPack;
    }

    @Override
    public boolean supportsVectors() {
        return true;
    }

    @Override
// Path: src/main/java/de/mprengemann/intellij/plugin/androidicons/model/ImageAsset.java
// public class ImageAsset implements Comparable<ImageAsset>,
//                                    Serializable {
// 
//     private final String name;
//     private final String pack;
//     private final String category;
//     private final List<Resolution> resolutions;
//     private final List<String> colors;
//     private final List<String> sizes;
// 
//     public ImageAsset(String name,
//                       String pack,
//                       String category,
//                       List<Resolution> resolutions,
//                       List<String> colors,
//                       List<String> sizes) {
//         this.name = name;
//         this.pack = pack;
//         this.category = category;
//         this.resolutions = resolutions;
//         this.colors = colors;
//         this.sizes = sizes;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public String getIconPack() {
//         return pack;
//     }
// 
//     public String getCategory() {
//         return category;
//     }
// 
//     public List<Resolution> getResolutions() {
//         return resolutions;
//     }
// 
//     public List<String> getColors() {
//         return colors;
//     }
// 
//     public List<String> getSizes() {
//         return sizes;
//     }
// 
//     @Override
//     public String toString() {
//         return name;
//     }
// 
//     @Override
//     public int compareTo(@NotNull ImageAsset o) {
//         return getName().compareTo(o.getName());
//     }
// }
// 
// Path: src/main/java/de/mprengemann/intellij/plugin/androidicons/model/Resolution.java
// public enum Resolution {
//     LDPI,
//     MDPI,
//     HDPI,
//     XHDPI,
//     XXHDPI,
//     XXXHDPI,
//     TVDPI,
//     ANYDPI;
// 
//     private static final Resolution[] RESOLUTIONS_WITHOUT_SVG = new Resolution[] {
//         LDPI, MDPI, HDPI, XHDPI, XXHDPI, XXXHDPI, TVDPI
//     };
// 
//     public static Resolution[] nonVectorValues() {
//         return RESOLUTIONS_WITHOUT_SVG;
//     }
// 
//     public static Resolution from(String value) {
//         if (TextUtils.isEmpty(value)) {
//             throw new IllegalArgumentException();
//         }
//         if (value.equalsIgnoreCase(LDPI.toString())) {
//             return LDPI;
//         } else if (value.equalsIgnoreCase(MDPI.toString())) {
//             return MDPI;
//         } else if (value.equalsIgnoreCase(HDPI.toString())) {
//             return HDPI;
//         } else if (value.equalsIgnoreCase(XHDPI.toString())) {
//             return XHDPI;
//         } else if (value.equalsIgnoreCase(XXHDPI.toString())) {
//             return XXHDPI;
//         } else if (value.equalsIgnoreCase(XXXHDPI.toString())) {
//             return XXXHDPI;
//         } else if (value.equalsIgnoreCase(TVDPI.toString())) {
//             return TVDPI;
//         } else if (value.equalsIgnoreCase(ANYDPI.toString())) {
//             return ANYDPI;
//         }
//         return null;
//     }
// 
//     public static class Deserializer implements JsonDeserializer<Resolution> {
//         @Override
//         public Resolution deserialize(JsonElement jsonElement,
//                                   Type type,
//                                   JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
//             return Resolution.from(jsonElement.getAsString());
//         }
//     }
// }
// 
// Path: src/main/java/de/mprengemann/intellij/plugin/androidicons/resources/ResourceLoader.java
// public class ResourceLoader {
// 
//     private static final String TAG = ResourceLoader.class.getSimpleName();
//     private static final Logger LOGGER = Logger.getInstance(TAG);
// 
//     static ResourceLoader rl = new ResourceLoader();
// 
//     public static File getExportPath() {
//         final String exportPath = PathManager.getSystemPath();
//         return new File(exportPath, "android-drawable-importer-intellij-plugin");
//     }
// 
//     public static File getAssetResource(String file) {
//         return new File(getExportPath(), file);
//     }
// 
//     public static File getBundledResource(String file) {
//         final URL resource = rl.getClass().getResource(getAssetPath(file));
//         if (resource == null) {
//             return null;
//         }
//         try {
//             return new File(resource.toURI());
//         } catch (URISyntaxException e) {
//             LOGGER.error(e);
//             return new File(resource.getPath());
//         }
//     }
// 
//     public static InputStream getBundledResourceStream(String file) {
//         return rl.getClass().getResourceAsStream(getAssetPath(file));
//     }
// 
//     @NotNull
//     private static String getAssetPath(String file) {
//         return String.format("/assets/%s", file);
//     }
// 
// }


// Path: src/main/java/de/mprengemann/intellij/plugin/androidicons/controllers/icons/materialicons/MaterialIconsController.java
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.intellij.ide.BrowserUtil;
import de.mprengemann.intellij.plugin.androidicons.model.IconPack;
import de.mprengemann.intellij.plugin.androidicons.model.ImageAsset;
import de.mprengemann.intellij.plugin.androidicons.model.Resolution;
import de.mprengemann.intellij.plugin.androidicons.resources.ResourceLoader;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;

    private HashMap<String, List<ImageAsset>> initCategoryMap(IconPack iconPack) {
        final HashMap<String, List<ImageAsset>> categoryMap = Maps.newHashMap();
        if (iconPack == null) {
            return categoryMap;
        }
        for (String category : iconPack.getCategories()) {
            categoryMap.put(category, Lists.<ImageAsset>newArrayList());
        }
        for (ImageAsset asset : iconPack.getAssets()) {
            categoryMap.get(asset.getCategory()).add(asset);
        }
        return categoryMap;
    }

    @Override
    public String getId() {
        return iconPack.getId();
    }

    @Override
    public IconPack getIconPack() {
        return iconPack;
    }

    @Override
    public boolean supportsVectors() {
        return true;
    }

    @Override
    public Resolution getThumbnailResolution() {