import java.util.*;
import java.util.zip.*;
import java.util.List;
import java.util.regex.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.*;
import java.util.concurrent.locks.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import javax.swing.table.*;
import java.io.*;
import java.net.*;
import java.lang.reflect.*;
import java.lang.ref.*;
import java.lang.management.*;
import java.security.*;
import java.security.spec.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.imageio.*;
import java.math.*;
import x30_pkg.x30_util;
import static x30_pkg.x30_util.VF1;
import static x30_pkg.x30_util.l;
import static x30_pkg.x30_util.fail;
import static x30_pkg.x30_util.indexOf;
import static x30_pkg.x30_util.getOpt;
import static x30_pkg.x30_util.setOpt;
import static x30_pkg.x30_util.callOpt;
import static x30_pkg.x30_util.newWeakHashMap;
import static x30_pkg.x30_util.newDangerousWeakHashMap;
import static x30_pkg.x30_util.get;
import static x30_pkg.x30_util.get_raw;
import static x30_pkg.x30_util.assertTrue;
import static x30_pkg.x30_util.isHeadless;
import static x30_pkg.x30_util.isAndroid;
import static x30_pkg.x30_util.isTrue;
import static x30_pkg.x30_util.asList;
import x30_pkg.x30_util.DynamicObject;
import loadableUtils.utils;
import static loadableUtils.utils._threadInfo;
import static loadableUtils.utils._threadInheritInfo;
import static loadableUtils.utils._threadInfo_addMakerAndRetriever;
import static loadableUtils.utils.dm_currentModule;
import static loadableUtils.utils.dm_current_mandatory;
import static loadableUtils.utils.match;
import static loadableUtils.utils.getOpt_raw;
import static loadableUtils.utils.setOpt_raw;
import static loadableUtils.utils.getField;
import static loadableUtils.utils.fieldType;
import static loadableUtils.utils.format3;
import static loadableUtils.utils.vm_generalIdentityHashSet;
import static loadableUtils.utils.vm_generalHashMap;
import static loadableUtils.utils.vm_generalWeakSubMap;
import static loadableUtils.utils.bindToComponent;
import static loadableUtils.utils.struct;
import static loadableUtils.utils.structure;
import static loadableUtils.utils.loadPage;
import static loadableUtils.utils.loadPage_utf8;
import static loadableUtils.utils.loadPageSilentlyWithTimeout;
import static loadableUtils.utils.loadPageSilently;
import static loadableUtils.utils.loadSnippet;
import static loadableUtils.utils.loadSnippetQuietly;
import static loadableUtils.utils.sendToLocalBot;
import static loadableUtils.utils.componentPopupMenu;
import static loadableUtils.utils.componentPopupMenu_top;
import static loadableUtils.utils.componentPopupMenu_initForComponent;
import static loadableUtils.utils.componentPopupMenu_getEvent;
import static loadableUtils.utils.listPopupMenu;
import static loadableUtils.utils.tablePopupMenu;
import static loadableUtils.utils.rowSorter_setComparators;
import static loadableUtils.utils.sexyTableWithoutDrag;
import static loadableUtils.utils.dm_current_generic;
import static loadableUtils.utils.dm_current_mandatory_generic;
import static loadableUtils.utils.cset;
import static loadableUtils.utils.DynamicObject_loading;
import static loadableUtils.utils.concepts_unlisted;
import static loadableUtils.utils.makePopupMenuConditional;
import static loadableUtils.utils.makeConceptsTable_idWidth;
import static loadableUtils.utils.showConceptsTable_afterUpdate;
import static loadableUtils.utils.dynamicObjectIsLoading;
import loadableUtils.utils.F0;
import loadableUtils.utils.F1;
import loadableUtils.utils.IF1;
import loadableUtils.utils.Matches;
import loadableUtils.utils.BetterLabel;
import loadableUtils.utils.SingleComponentPanel;
import loadableUtils.utils.Snippet;
import loadableUtils.utils.Q;
import loadableUtils.utils.ImageSurface;
import loadableUtils.utils.structure_Data;
import loadableUtils.utils.structure_ClassInfo;
import loadableUtils.utils.RGBImage;
import loadableUtils.utils.RGB;
import loadableUtils.utils.BWImage;
import loadableUtils.utils.MakesBufferedImage;
import loadableUtils.utils.MultiSet;
import loadableUtils.utils.Concept;
import loadableUtils.utils.Concepts;
import loadableUtils.utils.IConceptIndex;
import loadableUtils.utils.IFieldIndex;
import loadableUtils.utils.Derefable;
import loadableUtils.utils.ImageSurfaceSelector;
import loadableUtils.utils.SimpleCRUD;
import loadableUtils.utils.PersistableThrowable;
import loadableUtils.utils.DynModule;
import loadableUtils.utils.DynPrintLog;
import loadableUtils.utils.DynObjectTable;
import loadableUtils.utils.DynImageSurface;
import loadableUtils.utils.DynCalculatedList;
import loadableUtils.utils.Rect;
import loadableUtils.utils.Pt;
import javax.swing.undo.UndoManager;
import javax.net.ssl.*;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import javax.imageio.metadata.*;
import javax.imageio.stream.*;
import java.text.SimpleDateFormat;
import java.text.NumberFormat;
import java.nio.file.Files;
import java.nio.file.Path;
class main {
  static public class JavaEval extends DynPrintLog {
    public String expression;
    public boolean realEval = true;
    transient public boolean calculating = false;
    transient public Object value;
    transient public JTextArea taInput;
    transient public Throwable error;
    public JComponent visualize() {
      return withMargin(jvsplit(centerAndEastWithMarginInbetween(onCtrlEnter(taInput = jEnableUndoRedo(typeWriterTextArea(expression)), runnableThread(new Runnable() {
        public void run() {
          try {
            evalIt();
          } catch (Exception __e) {
            throw rethrow(__e);
          }
        }
        public String toString() {
          return "evalIt();";
        }
      })), withTopMargin(3, vstackWithSpacing(5, withBottomMargin(fontSizePlus(4, makeBold(toolTip("Evaluate the code", jbutton("EVAL", runnableThread(new Runnable() {
        public void run() {
          try {
            evalIt();
          } catch (Exception __e) {
            throw rethrow(__e);
          }
        }
        public String toString() {
          return "evalIt();";
        }
      })))))), toolTip("Evaluate with latest standard functions", jbutton("Medium", runnableThread(new Runnable() {
        public void run() {
          try {
            mediumRefresh();
            evalIt();
          } catch (Exception __e) {
            throw rethrow(__e);
          }
        }
        public String toString() {
          return "mediumRefresh(); evalIt()";
        }
      }))), toolTip("Evaluate in latest language version", jbutton("Fresh", runnableThread(new Runnable() {
        public void run() {
          try {
            refresh();
            evalIt();
          } catch (Exception __e) {
            throw rethrow(__e);
          }
        }
        public String toString() {
          return "refresh(); evalIt()";
        }
      }))), withToolTip("Use the real Java compiler, don't use shortcuts - just leave checked if in doubt", dm_fieldCheckBox("Real", "realEval"))))), super.visualize()));
    }
    public void mediumRefresh() {
      AutoCloseable __8 = enter();
      try {
        dm_mediumRefreshTranspiler();
        loadFunctions_clearCache();
        print("Medium-refreshed translator.");
      } finally {
        _close(__8);
      }
    }
    public void refresh() {
      AutoCloseable __9 = enter();
      try {
        dm_refreshTranspiler();
        loadFunctions_clearCache();
        print("Refreshed translator.");
      } finally {
        _close(__9);
      }
    }
    public void evalIt() {
      AutoCloseable __10 = enter();
      try {
        if (calculating)
          return;
        calculating = true;
        AutoCloseable __11 = afterwards(new Runnable() {
          public void run() {
            try {
              calculating = false;
            } catch (Exception __e) {
              throw rethrow(__e);
            }
          }
          public String toString() {
            return "calculating = false";
          }
        });
        try {
          dm_javaEvalModule_doIt(gtt(taInput), realEval);
        } finally {
          _close(__11);
        }
      } finally {
        _close(__10);
      }
    }
  }
  static public boolean _moduleClass_JavaEval = true;
  static public Object callF(Object f, Object... args) {
    try {
      if (f instanceof String)
        return callMC((String) f, args);
      return x30_util.callF(f, args);
    } catch (Exception __e) {
      throw rethrow(__e);
    }
  }
  static public  A callF(F0 f) {
    return f == null ? null : f.get();
  }
  static public  A callF(IF0 f) {
    return f == null ? null : f.get();
  }
  static public  B callF(F1 f, A a) {
    return f == null ? null : f.get(a);
  }
  static public  B callF(IF1 f, A a) {
    return f == null ? null : f.get(a);
  }
  static public  void callF(VF1 f, A a) {
    if (f != null)
      f.get(a);
  }
  static public Object callMC(String method, Object... args) {
    return call(mc(), method, args);
  }
  static public Object call(Object o) {
    return callF(o);
  }
  static public Object call(Object o, String method, Object... args) {
    return call_withVarargs(o, method, args);
  }
  static public void _onLoad_initUtils() {
    utils.__javax = javax();
  }
  static public void _onLoad_defaultClassFinder() {
    setDefaultClassFinder(new F1() {
      public Class get(String name) {
        try {
          Class c = findClass_fullName(name);
          if (c != null)
            return c;
          if (startsWith(name, "main$"))
            return loadableUtils.utils.findClass_fullName("loadableUtils.utils" + substring(name, 4));
          return null;
        } catch (Exception __e) {
          throw rethrow(__e);
        }
      }
      public String toString() {
        return "Class c = findClass_fullName(name);\r\n    if (c != null) ret c;\r\n    if (start...";
      }
    });
  }
  static public String programID() {
    return getProgramID();
  }
  static public String programID(Object o) {
    return getProgramID(o);
  }
  static volatile public StringBuffer local_log = new StringBuffer();
  static volatile public Appendable print_log = local_log;
  static volatile public int print_log_max = 1024 * 1024;
  static volatile public int local_log_max = 100 * 1024;
  static public boolean print_silent = false;
  static public Object print_byThread_lock = new Object();
  static volatile public ThreadLocal