From f7c12ec7513e5eed6106fa5a8d7af1274ba2f04f Mon Sep 17 00:00:00 2001 From: richie Date: Mon, 7 Nov 2016 18:27:43 +0800 Subject: [PATCH 001/139] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=9B=BD?= =?UTF-8?q?=E9=99=85=E5=8C=96=E5=9C=A8web=E7=AB=AF=E4=B9=9F=E8=83=BD?= =?UTF-8?q?=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/actions/file/LocalePane.java | 75 +++++++------------ 1 file changed, 28 insertions(+), 47 deletions(-) diff --git a/designer_base/src/com/fr/design/actions/file/LocalePane.java b/designer_base/src/com/fr/design/actions/file/LocalePane.java index 27dad46df9..3356fa70af 100644 --- a/designer_base/src/com/fr/design/actions/file/LocalePane.java +++ b/designer_base/src/com/fr/design/actions/file/LocalePane.java @@ -8,13 +8,7 @@ import java.awt.BorderLayout; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Properties; -import java.util.Set; -import java.util.Vector; +import java.util.*; import javax.swing.JTable; import javax.swing.RowFilter; @@ -31,10 +25,7 @@ import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.dialog.BasicPane; import com.fr.file.filetree.FileNode; -import com.fr.general.FRLogger; -import com.fr.general.GeneralUtils; -import com.fr.general.IOUtils; -import com.fr.general.Inter; +import com.fr.general.*; import com.fr.stable.ArrayUtils; import com.fr.stable.project.ProjectConstants; @@ -43,12 +34,6 @@ import com.fr.stable.project.ProjectConstants; * @since : 8.0 */ public class LocalePane extends BasicPane { - private static final String FR = "fr.properties"; - private static final String US = "fr_en_US.properties"; - private static final String CN = "fr_zh_CN.properties"; - private static final String JP = "fr_ja_JP.properties"; - private static final String TW = "fr_zh_TW.properties"; - private static final String KR = "fr_ko_KR.properties"; private static final String PREFIX = "fr_"; private static final int LOCALE_NAME_LEN = 5; @@ -124,39 +109,35 @@ public class LocalePane extends BasicPane { } private void initPredefinedProperties() { - Properties fr = loadLocaleProperties(FR); - Properties us = loadLocaleProperties(US); - Properties cn = loadLocaleProperties(CN); - Properties jp = loadLocaleProperties(JP); - Properties tw = loadLocaleProperties(TW); - Properties kr = loadLocaleProperties(KR); - - Set keys = fr.stringPropertyNames(); - List sortKeys = new ArrayList(keys); + Map map = Inter.getPredefinedPackageMap(); + LocalePackage chinese = map.get(Locale.SIMPLIFIED_CHINESE); + + List sortKeys = new ArrayList(); + + + Set bundles = chinese.getKindsOfResourceBundle(); + for (ResourceBundle bundle : bundles) { + sortKeys.addAll(bundle.keySet()); + } Collections.sort(sortKeys); - Vector keyVector = new Vector(); - Vector valueVector = new Vector(); - Vector usVector = new Vector(); - Vector cnVector = new Vector(); - Vector jpVector = new Vector(); - Vector twVector = new Vector(); - Vector krVector = new Vector(); - for (String key : sortKeys) { - keyVector.add(key); - valueVector.add(fr.getProperty(key)); - usVector.add(us.getProperty(key)); - cnVector.add(cn.getProperty(key)); - jpVector.add(jp.getProperty(key)); - twVector.add(tw.getProperty(key)); - krVector.add(kr.getProperty(key)); + + Map> data = new HashMap>(); + for (Map.Entry entry : map.entrySet()) { + Vector column = new Vector(); + for (String key : sortKeys) { + column.add(entry.getValue().getLocText(key)); + } + data.put(entry.getKey(), column); } + + Vector keyVector = new Vector(); + keyVector.addAll(sortKeys); + + predefineTableModel.addColumn(Inter.getLocText("Key"), keyVector); - predefineTableModel.addColumn(Inter.getLocText("Value"), valueVector); - predefineTableModel.addColumn("en_US", usVector); - predefineTableModel.addColumn("zh_CN", cnVector); - predefineTableModel.addColumn("ja_JP", jpVector); - predefineTableModel.addColumn("zh_TW", twVector); - predefineTableModel.addColumn("ko_KR", krVector); + for (Map.Entry> entry : data.entrySet()) { + predefineTableModel.addColumn(entry.getKey().getDisplayName(), entry.getValue()); + } } private void initCustomProperties() throws Exception { From 0cab55de4e208de6b66759fcfbfa5d919b18c450 Mon Sep 17 00:00:00 2001 From: fr_shine Date: Wed, 9 Nov 2016 15:26:09 +0800 Subject: [PATCH 002/139] =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96list?= =?UTF-8?q?=E4=BB=8Einter=E4=B8=AD=E6=8B=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/actions/file/PreferencePane.java | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/designer_base/src/com/fr/design/actions/file/PreferencePane.java b/designer_base/src/com/fr/design/actions/file/PreferencePane.java index c3944afd13..0ddb424c70 100644 --- a/designer_base/src/com/fr/design/actions/file/PreferencePane.java +++ b/designer_base/src/com/fr/design/actions/file/PreferencePane.java @@ -28,7 +28,9 @@ import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.File; +import java.util.ArrayList; import java.util.Locale; +import java.util.Map; /** * 选项对话框 @@ -71,12 +73,13 @@ public class PreferencePane extends BasicPane { private static final String DISPLAY_MINUS = "-"; private static final FRLevel[] LOG = {FRLevel.SEVERE, FRLevel.WARNING, FRLevel.INFO, FRLevel.DEBUG}; - private static final String[] LANGUAGE = {Inter.getLocText("FR-Designer_Language_Default"), - getLocaledLanguage("Simplified_Chinese_Language", Locale.SIMPLIFIED_CHINESE), - getLocaledLanguage("English_Language", Locale.ENGLISH), - getLocaledLanguage("Japanese_Language", Locale.JAPAN), - getLocaledLanguage("Traditional_Chinese_Language", Locale.TRADITIONAL_CHINESE), - getLocaledLanguage("Korea_Language",Locale.KOREA), + private static java.util.List LANGUAGE = new ArrayList<>(); + static { + Map map = Inter.getSupportLocaleMap(); + LANGUAGE.add(Inter.getLocText("FR-Designer_Language_Default")); + for(Locale locale : map.keySet()){ + LANGUAGE.add(getLocaledLanguage(map.get(locale), locale)); + } }; //设置是否支持undo @@ -355,7 +358,7 @@ public class PreferencePane extends BasicPane { JPanel LanguagePane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Choose_Language")); generalPane.add(languageAndDashBoard_pane); languageAndDashBoard_pane.add(LanguagePane); - languageComboBox = new UIComboBox(LANGUAGE); + languageComboBox = new UIComboBox(LANGUAGE.toArray()); languageComboBox.setFont(FRFont.getInstance("Dialog", Font.PLAIN, 12));//为了在中文系统中显示韩文 ActionLabel languageLabel = new ActionLabel(Inter.getLocText("FR-Designer_Designer_Language")); languageLabel.addActionListener(new ActionListener() { @@ -526,7 +529,7 @@ public class PreferencePane extends BasicPane { this.logLevelComboBox.setSelectedItem(FRLevel.getByLevel(designerEnvManager.getLogLevel())); - this.languageComboBox.setSelectedItem(LANGUAGE[designerEnvManager.getLanguage()]); + this.languageComboBox.setSelectedItem(LANGUAGE.get(designerEnvManager.getLanguage())); this.pageLengthComboBox.setSelectedIndex(designerEnvManager.getPageLengthUnit()); this.reportLengthComboBox.setSelectedIndex(designerEnvManager.getReportLengthUnit()); @@ -613,8 +616,8 @@ public class PreferencePane extends BasicPane { private int getLanguageInt() { int l = 0; String lang = (String) this.languageComboBox.getSelectedItem(); - for (int i = 0; i < LANGUAGE.length; i++) { - if (ComparatorUtils.equals(lang, LANGUAGE[i])) { + for (int i = 0; i < LANGUAGE.size(); i++) { + if (ComparatorUtils.equals(lang, LANGUAGE.get(i))) { l = i; break; } From 7dbd536916367104f76b17e9bbe2cd8b56eafa9e Mon Sep 17 00:00:00 2001 From: zhouping Date: Thu, 10 Nov 2016 20:11:20 +0800 Subject: [PATCH 003/139] =?UTF-8?q?REPORT-750=20=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E5=85=B1=E5=88=9B=E5=86=85=E6=B5=8B=E9=97=AE=E9=A2=98=20dev?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=88=B0release?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/designer/creator/XCreator.java | 16 ++++++++++ .../designer/creator/XWAbsoluteLayout.java | 32 +++++++++++++++++++ .../design/designer/creator/XWFitLayout.java | 2 ++ 3 files changed, 50 insertions(+) diff --git a/designer_form/src/com/fr/design/designer/creator/XCreator.java b/designer_form/src/com/fr/design/designer/creator/XCreator.java index d47009ff95..ed692cd428 100644 --- a/designer_form/src/com/fr/design/designer/creator/XCreator.java +++ b/designer_form/src/com/fr/design/designer/creator/XCreator.java @@ -601,4 +601,20 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo } } + + /** + * 按照比例调整组件的宽度 + * @param percent 比例 + */ + public void adjustCompWidth(double percent){ + return; + } + + /** + * 按照比例调整组件的高度 + * @param percent 比例 + */ + public void adjustCompHeight(double percent) { + return; + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java index 210343f8ed..df28759393 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java @@ -444,4 +444,36 @@ public class XWAbsoluteLayout extends XLayoutContainer { } } } + + /** + * body大小手动调整的时候 + * 按照比例调整组件的宽度 + * @param percent 比例 + */ + @Override + public void adjustCompWidth(double percent) { + for (int i = 0; i < getComponentCount(); i++) { + XCreator xCreator = (XCreator) getComponent(i); + Rectangle rectangle = xCreator.getBounds(); + xCreator.setBounds((int) (rectangle.x * percent), rectangle.y, (int) (rectangle.width * percent), rectangle.height); + BoundsWidget widget = toData().getBoundsWidget(xCreator.toData()); + widget.setBounds(xCreator.getBounds()); + } + } + + /** + * body大小手动调整的时候 + * 按照比例调整组件的高度 + * @param percent 比例 + */ + @Override + public void adjustCompHeight(double percent) { + for (int i = 0; i < getComponentCount(); i++) { + XCreator xCreator = (XCreator) getComponent(i); + Rectangle rectangle = xCreator.getBounds(); + xCreator.setBounds(rectangle.x, (int) (rectangle.y * percent), rectangle.width, (int) (rectangle.height * percent)); + BoundsWidget widget = toData().getBoundsWidget(xCreator.toData()); + widget.setBounds(xCreator.getBounds()); + } + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/creator/XWFitLayout.java b/designer_form/src/com/fr/design/designer/creator/XWFitLayout.java index 50fa38db93..04904a7238 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWFitLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWFitLayout.java @@ -381,6 +381,7 @@ public class XWFitLayout extends XLayoutContainer { needAddWidth = Math.max(needAddWidth, MIN_WIDTH-width); } } + creator.adjustCompWidth((double) creator.getBounds().width / rec.width); toData().setBounds(creator.toData(), creator.getBounds()); } @@ -504,6 +505,7 @@ public class XWFitLayout extends XLayoutContainer { needAddHeight = Math.max(needAddHeight, MIN_HEIGHT-h); } } + creator.adjustCompHeight((double) creator.getBounds().height / rec.height); toData().setBounds(creator.toData(), creator.getBounds()); } From 14a88966488276fc3d6bf036a57d3bf7c71a52aa Mon Sep 17 00:00:00 2001 From: sunmondong Date: Fri, 11 Nov 2016 12:17:12 +0800 Subject: [PATCH 004/139] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.release.gradle | 85 +++++++++++++++++++++++++++++ designer_base/build.release.gradle | 70 ++++++++++++++++++++++++ designer_chart/build.release.gradle | 66 ++++++++++++++++++++++ designer_form/build.release.gradle | 83 ++++++++++++++++++++++++++++ 4 files changed, 304 insertions(+) create mode 100644 build.release.gradle create mode 100644 designer_base/build.release.gradle create mode 100644 designer_chart/build.release.gradle create mode 100644 designer_form/build.release.gradle diff --git a/build.release.gradle b/build.release.gradle new file mode 100644 index 0000000000..44aacadb4d --- /dev/null +++ b/build.release.gradle @@ -0,0 +1,85 @@ +apply plugin: "java" +tasks.withType(JavaCompile){ + options.encoding = "UTF-8" +} +def basicDir="../../" +def libDir="${basicDir}/finereport-lib-stable/master" +//获取什么分支名 +FileTree files =fileTree(dir:"./",include:"build.*.gradle") +def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ("\\")) +def branchName=buildDir.substring(buildDir.lastIndexOf ("\\")+1) + +task appletJar<<{ + + ant{ + mkdir(dir:"${libDir}/tmp-${branchName}") + mkdir(dir:"build/classes/") + copy(todir:"build/classes/"){ + fileset(dir:"${basicDir}/finereport-core-stable/${branchName}/build/classes/main") + + fileset(dir:"${basicDir}/finereport-chart-stable/${branchName}/build/classes/main") + + fileset(dir:"${basicDir}/finereport-report-stable/${branchName}/build/classes/main") + + fileset(dir:"${basicDir}/finereport-platform-stable/${branchName}/build/classes/main") + + fileset(dir:"${basicDir}/finereport-performance-stable/${branchName}/build/classes/main") + + } + unjar(src:"${libDir}/3rd.jar",dest:"${libDir}/tmp-${branchName}") + unjar(src:"${libDir}/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") + jar(jarfile:"build/libs/fr-applet-8.0.jar"){ + fileset(dir:"build/classes"){ + exclude(name:"*.*") + exclude(name:"bin/*.*") + exclude(name:"classes/**") + exclude(name:"com/fr/schedule/**") + exclude(name:"com/fr/cell/**") + exclude(name:"com/fr/dialog/**") + exclude(name:"com/fr/view/**") + exclude(name:"com/fr/web/**") + exclude(name:"com/fr/fs/**") + exclude(name:"com/fr/design/**") + exclude(name:"com/fr/start/**") + exclude(name:"com/fr/process/**") + } + fileset(dir:"${libDir}/tmp-${branchName}"){ + include(name:"javax/mail/**") + include(name:"javax/servlet/**") + include(name:"org/freehep/**") + include(name:"com/fr/third/JAI/**") + include(name:"com/fr/third/antlr/**") + include(name:"com/fr/third/javax/**") + include(name:"com/sun/xml/**") + include(name:"javax/xml/**") + + } + fileset(dir:"build/classes"){ + include(name:"com/fr/web/*.class") + include(name:"com/fr/web/attr/*.class") + } + } + delete(dir:"${libDir}/tmp-${branchName}") + def jdk6home= "D:/FineReport/develop/java/jdk1.6u35" + def keystore="frapplet.store" + def keycert="fr.cert" + def keypassword="123456" + def keyalias="fr" + + exec(executable:"${jdk6home}/bin/keytool"){ + arg(line:"-genkey -dname "CN=FineReport L=NanJing C=China" -keystore ${keystore} -alias ${keyalias} -validity 3650 -storepass ${keypassword}") + } + exec(executable:"${jdk6home}/bin/keytool"){ + arg(line:"-export -keystore ${keystore} -alias ${keyalias} -file ${keycert} -storepass ${keypassword}") + } + + exec(executable:"${jdk6home}/bin/jarsigner"){ + arg(line:"-keystore ${keystore} -storepass ${keypassword} 'build/libs/fr-applet-8.0.jar' ${keyalias}") + } + delete(file:"${keystore}") + delete(file:"${keycert}") + delete(dir:"build/classes") + + } + +} \ No newline at end of file diff --git a/designer_base/build.release.gradle b/designer_base/build.release.gradle new file mode 100644 index 0000000000..4ed4ba12b0 --- /dev/null +++ b/designer_base/build.release.gradle @@ -0,0 +1,70 @@ + +apply plugin: 'java' +tasks.withType(JavaCompile){ + options.encoding = 'UTF-8' +} +//指定构建的jdk版本 +sourceCompatibility=1.8 +//指定生成jar包版本 +version='8.0' +//生成jar包重命名 +jar{ + baseName='fr-designer-core' +} + + +def srcDir="." + +//指定源码路径 +sourceSets{ + main{ + java{ + srcDirs=["${srcDir}/src"] + } + } +} +//获取什么分支名 +FileTree files =fileTree(dir:'./',include:'build.*.gradle') +def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ('\\')) +buildDir=buildDir.substring(0,buildDir.lastIndexOf ('\\')) +def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) + +//声明外部依赖 +dependencies{ + +compile fileTree(dir:'../../../finereport-lib-stable/master',include:'**/*.jar') +compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") + + testCompile 'junit:junit:4.12' +} +//复制非.java文件到classes文件夹下参与打包 +task copyFile(type:Copy,dependsOn:compileJava){ + copy{ + from ("${srcDir}/src"){ + exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' + } + into 'build/classes/main' + } + +} + + +//压缩项目中的js文件 +task compressJS{ + ant.taskdef(name:'yuicompress',classname:'com.yahoo.platform.yui.compressor.YUICompressTask'){ + classpath { + fileset(dir:'../../../finereport-lib4build-stable',includes:'**/*.jar') + } + } + ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false",charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ + fileset (dir:"${srcDir}/src"){ + include (name:'**/*.js') + include (name:'**/*.css') + } + + } +} +jar.dependsOn compressJS + + + diff --git a/designer_chart/build.release.gradle b/designer_chart/build.release.gradle new file mode 100644 index 0000000000..e97176e24c --- /dev/null +++ b/designer_chart/build.release.gradle @@ -0,0 +1,66 @@ + +apply plugin: 'java' +tasks.withType(JavaCompile){ + options.encoding = 'UTF-8' +} +//指定构建的jdk版本 +sourceCompatibility=1.8 +//指定生成jar包的版本 +version='8.0' + +def srcDir="." + +//对生成的jar包进行重命名 + +jar{ + baseName='fr-designer-chart' +} + +sourceSets{ + main{ + java{ + srcDirs=["${srcDir}/src"] + } + } +} +FileTree files =fileTree(dir:'./',include:'build.*.gradle') +def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ('\\')) +buildDir=buildDir.substring(0,buildDir.lastIndexOf ('\\')) +def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) + +//指定外部依赖 +dependencies{ +compile fileTree(dir:'../../../finereport-lib-stable/master',include:'**/*.jar') +compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") + + testCompile 'junit:junit:4.12' +} +//将非.java 文件复制到classes文件夹下参与打包 +task copyFile(type:Copy,dependsOn:compileJava){ + copy{ + from ("${srcDir}/src"){ + exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' + + } + into 'build/classes/main' + } + +} + +//压缩项目中的js文件 +task compressJS{ + ant.taskdef(name:'yuicompress',classname:'com.yahoo.platform.yui.compressor.YUICompressTask'){ + classpath { + fileset(dir:'../../../finereport-lib4build-stable',includes:'**/*.jar') + } + } + ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false",charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ + fileset (dir:"${srcDir}/src"){ + include (name:'**/*.js') + include (name:'**/*.css') + } + + } +} +jar.dependsOn compressJS + diff --git a/designer_form/build.release.gradle b/designer_form/build.release.gradle new file mode 100644 index 0000000000..90abcb81ee --- /dev/null +++ b/designer_form/build.release.gradle @@ -0,0 +1,83 @@ + +apply plugin: 'java' +tasks.withType(JavaCompile){ + options.encoding = 'UTF-8' +} +//指定构建的jdk版本 +sourceCompatibility=1.8 +//指定生成的jar包版本 +version='8.0' + +def srcDir="." + + +//指明生成jar包的名字 +jar{ + baseName='fr-designer-report' +} +//源码所在位置 +sourceSets{ + main{ + java{ + srcDirs=["${srcDir}/src", +"${srcDir}/../designer/src"] + } + } +} + +//获取什么分支名 +FileTree files =fileTree(dir:'./',include:'build.*.gradle') +def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ('\\')) +buildDir=buildDir.substring(0,buildDir.lastIndexOf ('\\')) +def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) +//声明外部依赖 +dependencies{ +compile fileTree(dir:'../../../finereport-lib-stable/master',include:'**/*.jar') +compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") + + testCompile 'junit:junit:4.12' +} + +//指明无法编译文件所在路径 +def dataContent ={def dir -> + copySpec{ + from ("${dir}"){ + exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' + } + } +} + +//将非.java文件复制到classes文件夹下 参与打包 +task copyFile(type:Copy,dependsOn:compileJava){ + copy{ + with dataContent.call("${srcDir}/src") + with dataContent.call("${srcDir}/../designer/src") + into ('build/classes/main') + } + +} + + +//压缩项目中的js文件 +task compressJS{ + ant.taskdef(name:'yuicompress',classname:'com.yahoo.platform.yui.compressor.YUICompressTask'){ + classpath { + + fileset(dir:'../../../finereport-lib4build-stable',includes:'**/*.jar') + } + } + ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false", charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ + fileset (dir:"${srcDir}/src"){ + include (name:'**/*.js') + include (name:'**/*.css') + + } + fileset (dir:"${srcDir}/../designer/src"){ + include (name:'**/*.js') + include (name:'**/*.css') + } + + } +} +jar.dependsOn compressJS + From 65596e57799bd9675dd6d0f7c84d1dd2111b935d Mon Sep 17 00:00:00 2001 From: zack Date: Fri, 11 Nov 2016 13:07:56 +0800 Subject: [PATCH 005/139] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?=E5=90=8C=E6=AD=A5release?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/EditingMouseListener.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java b/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java index 869ec2077f..0f916dd1de 100644 --- a/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java +++ b/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java @@ -288,24 +288,26 @@ public class EditingMouseListener extends MouseInputAdapter { if (component.isReport()) { xElementCase = (XElementCase)component; UIButton button = (UIButton)xElementCase.getCoverPane().getComponent(0); - JComponent button1= (JComponent) xElementCase.getCoverPane().getComponent(1); if(designer.getCursor().getType() ==Cursor.HAND_CURSOR) { - designer.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - } // component.getParent() 是报表块所在的XWTitleLayout - int minX = button.getX() + getParentPositionX(component, 0) - designer.getArea().getHorizontalValue(); - int minX1 = button1.getX() + getParentPositionX(component, 0) - designer.getArea().getHorizontalValue(); - int minY = button.getY() + getParentPositionY(component, 0) - designer.getArea().getVerticalValue(); - int minY1 = button1.getY() + getParentPositionY(component, 0) - designer.getArea().getVerticalValue(); + designer.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } // component.getParent() 是报表块所在的XWTitleLayout + int minX = button.getX() + getParentPositionX(component, 0) - designer.getArea().getHorizontalValue(); + int minY = button.getY() + getParentPositionY(component, 0) - designer.getArea().getVerticalValue(); if (e.getX() + GAP - xElementCase.getInsets().left > minX && e.getX() - GAP - xElementCase.getInsets().left < minX + button.getWidth()) { if (e.getY() + GAP - xElementCase.getInsets().top > minY && e.getY() - GAP - xElementCase.getInsets().top < minY + button.getHeight()) { designer.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); } } xElementCase.setHelpBtnOnFocus(false); - if (e.getX() + GAP - xElementCase.getInsets().left > minX1 && e.getX() - GAP - xElementCase.getInsets().left < minX1 + button1.getWidth()) { - if (e.getY() + GAP - xElementCase.getInsets().top > minY1 && e.getY() - GAP - xElementCase.getInsets().top < minY1 + button1.getHeight()) { - designer.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); - xElementCase.setHelpBtnOnFocus(true); + if (xElementCase.getCoverPane().getComponentCount() > 1) { + JComponent button1 = (JComponent) xElementCase.getCoverPane().getComponent(1); + int minX1 = button1.getX() + getParentPositionX(component, 0) - designer.getArea().getHorizontalValue(); + int minY1 = button1.getY() + getParentPositionY(component, 0) - designer.getArea().getVerticalValue(); + if (e.getX() + GAP - xElementCase.getInsets().left > minX1 && e.getX() - GAP - xElementCase.getInsets().left < minX1 + button1.getWidth()) { + if (e.getY() + GAP - xElementCase.getInsets().top > minY1 && e.getY() - GAP - xElementCase.getInsets().top < minY1 + button1.getHeight()) { + designer.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + xElementCase.setHelpBtnOnFocus(true); + } } } xElementCase.displayCoverPane(true); From 4beb92ba7bf6564414c83a34cd0d975df3df3052 Mon Sep 17 00:00:00 2001 From: kerry Date: Fri, 11 Nov 2016 13:59:33 +0800 Subject: [PATCH 006/139] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1,?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E9=80=89=E6=8B=A9=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E8=A7=84=E5=88=99=E6=97=A0=E6=B3=95=E5=A1=AB?= =?UTF-8?q?=E5=86=99=E9=94=99=E8=AF=AF=E4=BF=A1=E6=81=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java b/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java index 1c11aad2e4..8bf70c395a 100644 --- a/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java @@ -61,7 +61,8 @@ public class TextFieldEditorDefinePane extends FieldEditorDefinePane regPane.getRegComboBox().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { RegExp regExp = (RegExp) regPane.getRegComboBox().getSelectedItem(); - if (!StringUtils.isNotEmpty(regExp.toRegText())) { + String regText = regExp.toRegText(); + if (regText != null && !StringUtils.isNotEmpty(regText)) { getRegErrorMsgTextField().setEnabled(false); } else { getRegErrorMsgTextField().setEnabled(true); From 2f064038cbca3937529ea81e3af10769cf883e88 Mon Sep 17 00:00:00 2001 From: kerry Date: Fri, 11 Nov 2016 15:32:10 +0800 Subject: [PATCH 007/139] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1,?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E9=80=89=E6=8B=A9=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E8=A7=84=E5=88=99=E6=97=A0=E6=B3=95=E5=A1=AB?= =?UTF-8?q?=E5=86=99=E9=94=99=E8=AF=AF=E4=BF=A1=E6=81=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java b/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java index 8bf70c395a..3f30948538 100644 --- a/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java @@ -61,8 +61,7 @@ public class TextFieldEditorDefinePane extends FieldEditorDefinePane regPane.getRegComboBox().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { RegExp regExp = (RegExp) regPane.getRegComboBox().getSelectedItem(); - String regText = regExp.toRegText(); - if (regText != null && !StringUtils.isNotEmpty(regText)) { + if (StringUtils.EMPTY.equals(regExp.toRegText())) { getRegErrorMsgTextField().setEnabled(false); } else { getRegErrorMsgTextField().setEnabled(true); From 153e9ce8cee0b7083454718050dc598cb78ca9c3 Mon Sep 17 00:00:00 2001 From: sunmondong Date: Fri, 11 Nov 2016 18:43:51 +0800 Subject: [PATCH 008/139] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.master.gradle | 4 +- build.master.gradle.bak | 86 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 build.master.gradle.bak diff --git a/build.master.gradle b/build.master.gradle index cc3bea2327..c5cc1b92da 100644 --- a/build.master.gradle +++ b/build.master.gradle @@ -27,8 +27,8 @@ task appletJar<<{ fileset(dir:"${basicDir}/finereport-performance-stable/${branchName}/build/classes/main") } - unjar(src:"${libDir}/3rd.jar",dest:"${libDir}/tmp-${branchName}") - unjar(src:"${libDir}/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") + unjar(src:"${libDir}/${branchName}/3rd.jar",dest:"${libDir}/tmp-${branchName}") + unjar(src:"${libDir}/${branchName}/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") jar(jarfile:"build/libs/fr-applet-8.0.jar"){ fileset(dir:"build/classes"){ exclude(name:"*.*") diff --git a/build.master.gradle.bak b/build.master.gradle.bak new file mode 100644 index 0000000000..a10a5e4277 --- /dev/null +++ b/build.master.gradle.bak @@ -0,0 +1,86 @@ +apply plugin: "java" +tasks.withType(JavaCompile){ + options.encoding = "UTF-8" +} + +def basicDir="../../" +def libDir="${basicDir}/finereport-lib-stable" +//获取什么分支名 +FileTree files =fileTree(dir:"./",include:"build.*.gradle") +def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ("\\")) +def branchName=buildDir.substring(buildDir.lastIndexOf ("\\")+1) + +task appletJar<<{ + + ant{ + mkdir(dir:"${libDir}/tmp-${branchName}") + mkdir(dir:"build/classes/") + copy(todir:"build/classes/"){ + fileset(dir:"${basicDir}/finereport-core-stable/${branchName}/build/classes/main") + + fileset(dir:"${basicDir}/finereport-chart-stable/${branchName}/build/classes/main") + + fileset(dir:"${basicDir}/finereport-report-stable/${branchName}/build/classes/main") + + fileset(dir:"${basicDir}/finereport-platform-stable/${branchName}/build/classes/main") + + fileset(dir:"${basicDir}/finereport-performance-stable/${branchName}/build/classes/main") + + } + unjar(src:"${libDir}/${branchName}/3rd.jar",dest:"${libDir}/tmp-${branchName}") + unjar(src:"${libDir}/branchName/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") + jar(jarfile:"build/libs/fr-applet-8.0.jar"){ + fileset(dir:"build/classes"){ + exclude(name:"*.*") + exclude(name:"bin/*.*") + exclude(name:"classes/**") + exclude(name:"com/fr/schedule/**") + exclude(name:"com/fr/cell/**") + exclude(name:"com/fr/dialog/**") + exclude(name:"com/fr/view/**") + exclude(name:"com/fr/web/**") + exclude(name:"com/fr/fs/**") + exclude(name:"com/fr/design/**") + exclude(name:"com/fr/start/**") + exclude(name:"com/fr/process/**") + } + fileset(dir:"${libDir}/tmp-${branchName}"){ + include(name:"javax/mail/**") + include(name:"javax/servlet/**") + include(name:"org/freehep/**") + include(name:"com/fr/third/JAI/**") + include(name:"com/fr/third/antlr/**") + include(name:"com/fr/third/javax/**") + include(name:"com/sun/xml/**") + include(name:"javax/xml/**") + + } + fileset(dir:"build/classes"){ + include(name:"com/fr/web/*.class") + include(name:"com/fr/web/attr/*.class") + } + } + delete(dir:"${libDir}/tmp-${branchName}") + def jdk6home= "D:/FineReport/develop/java/jdk1.6u35" + def keystore="frapplet.store" + def keycert="fr.cert" + def keypassword="123456" + def keyalias="fr" + + exec(executable:"${jdk6home}/bin/keytool"){ + arg(line:"-genkey -dname "CN=FineReport L=NanJing C=China" -keystore ${keystore} -alias ${keyalias} -validity 3650 -storepass ${keypassword}") + } + exec(executable:"${jdk6home}/bin/keytool"){ + arg(line:"-export -keystore ${keystore} -alias ${keyalias} -file ${keycert} -storepass ${keypassword}") + } + + exec(executable:"${jdk6home}/bin/jarsigner"){ + arg(line:"-keystore ${keystore} -storepass ${keypassword} 'build/libs/fr-applet-8.0.jar' ${keyalias}") + } + delete(file:"${keystore}") + delete(file:"${keycert}") + delete(dir:"build/classes") + + } + +} \ No newline at end of file From 50df64e5e4041b72a1ad644e0cf1997b3110e7a6 Mon Sep 17 00:00:00 2001 From: sunmondong Date: Fri, 11 Nov 2016 18:44:58 +0800 Subject: [PATCH 009/139] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.release.gradle | 4 +- build.release.gradle.bak | 85 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 build.release.gradle.bak diff --git a/build.release.gradle b/build.release.gradle index 44aacadb4d..e88da6b4b1 100644 --- a/build.release.gradle +++ b/build.release.gradle @@ -26,8 +26,8 @@ task appletJar<<{ fileset(dir:"${basicDir}/finereport-performance-stable/${branchName}/build/classes/main") } - unjar(src:"${libDir}/3rd.jar",dest:"${libDir}/tmp-${branchName}") - unjar(src:"${libDir}/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") + unjar(src:"${libDir}/${branchName}/3rd.jar",dest:"${libDir}/tmp-${branchName}") + unjar(src:"${libDir}/${branchName}/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") jar(jarfile:"build/libs/fr-applet-8.0.jar"){ fileset(dir:"build/classes"){ exclude(name:"*.*") diff --git a/build.release.gradle.bak b/build.release.gradle.bak new file mode 100644 index 0000000000..44aacadb4d --- /dev/null +++ b/build.release.gradle.bak @@ -0,0 +1,85 @@ +apply plugin: "java" +tasks.withType(JavaCompile){ + options.encoding = "UTF-8" +} +def basicDir="../../" +def libDir="${basicDir}/finereport-lib-stable/master" +//获取什么分支名 +FileTree files =fileTree(dir:"./",include:"build.*.gradle") +def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ("\\")) +def branchName=buildDir.substring(buildDir.lastIndexOf ("\\")+1) + +task appletJar<<{ + + ant{ + mkdir(dir:"${libDir}/tmp-${branchName}") + mkdir(dir:"build/classes/") + copy(todir:"build/classes/"){ + fileset(dir:"${basicDir}/finereport-core-stable/${branchName}/build/classes/main") + + fileset(dir:"${basicDir}/finereport-chart-stable/${branchName}/build/classes/main") + + fileset(dir:"${basicDir}/finereport-report-stable/${branchName}/build/classes/main") + + fileset(dir:"${basicDir}/finereport-platform-stable/${branchName}/build/classes/main") + + fileset(dir:"${basicDir}/finereport-performance-stable/${branchName}/build/classes/main") + + } + unjar(src:"${libDir}/3rd.jar",dest:"${libDir}/tmp-${branchName}") + unjar(src:"${libDir}/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") + jar(jarfile:"build/libs/fr-applet-8.0.jar"){ + fileset(dir:"build/classes"){ + exclude(name:"*.*") + exclude(name:"bin/*.*") + exclude(name:"classes/**") + exclude(name:"com/fr/schedule/**") + exclude(name:"com/fr/cell/**") + exclude(name:"com/fr/dialog/**") + exclude(name:"com/fr/view/**") + exclude(name:"com/fr/web/**") + exclude(name:"com/fr/fs/**") + exclude(name:"com/fr/design/**") + exclude(name:"com/fr/start/**") + exclude(name:"com/fr/process/**") + } + fileset(dir:"${libDir}/tmp-${branchName}"){ + include(name:"javax/mail/**") + include(name:"javax/servlet/**") + include(name:"org/freehep/**") + include(name:"com/fr/third/JAI/**") + include(name:"com/fr/third/antlr/**") + include(name:"com/fr/third/javax/**") + include(name:"com/sun/xml/**") + include(name:"javax/xml/**") + + } + fileset(dir:"build/classes"){ + include(name:"com/fr/web/*.class") + include(name:"com/fr/web/attr/*.class") + } + } + delete(dir:"${libDir}/tmp-${branchName}") + def jdk6home= "D:/FineReport/develop/java/jdk1.6u35" + def keystore="frapplet.store" + def keycert="fr.cert" + def keypassword="123456" + def keyalias="fr" + + exec(executable:"${jdk6home}/bin/keytool"){ + arg(line:"-genkey -dname "CN=FineReport L=NanJing C=China" -keystore ${keystore} -alias ${keyalias} -validity 3650 -storepass ${keypassword}") + } + exec(executable:"${jdk6home}/bin/keytool"){ + arg(line:"-export -keystore ${keystore} -alias ${keyalias} -file ${keycert} -storepass ${keypassword}") + } + + exec(executable:"${jdk6home}/bin/jarsigner"){ + arg(line:"-keystore ${keystore} -storepass ${keypassword} 'build/libs/fr-applet-8.0.jar' ${keyalias}") + } + delete(file:"${keystore}") + delete(file:"${keycert}") + delete(dir:"build/classes") + + } + +} \ No newline at end of file From 80535270dfcd05468b82213f92b4b86fba15e484 Mon Sep 17 00:00:00 2001 From: fr_shine Date: Mon, 14 Nov 2016 11:12:26 +0800 Subject: [PATCH 010/139] =?UTF-8?q?master=E9=87=8C=E9=9D=A2=E5=8A=A0?= =?UTF-8?q?=E4=B8=AA=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=8F=92=E4=BB=B6=E5=88=86?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E9=9C=80=E8=A6=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/chart/gui/ChartDataPane.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java index d1a4088cd5..8402c68197 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java @@ -68,7 +68,11 @@ public class ChartDataPane extends AbstractChartAttrPane { contentsPane.setSupportCellData(supportCellData); } } - + + public boolean isSupportCellData() { + return supportCellData; + } + /** * 设置数据界面是否支持单元格 */ From 69c28085d5aedd517e71fb7148130e22614faa6b Mon Sep 17 00:00:00 2001 From: sunmondong Date: Mon, 14 Nov 2016 11:37:04 +0800 Subject: [PATCH 011/139] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E7=9A=84=E5=88=86=E6=94=AF=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.release.gradle | 4 ++-- build.release.gradle.bak | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.release.gradle b/build.release.gradle index e88da6b4b1..44aacadb4d 100644 --- a/build.release.gradle +++ b/build.release.gradle @@ -26,8 +26,8 @@ task appletJar<<{ fileset(dir:"${basicDir}/finereport-performance-stable/${branchName}/build/classes/main") } - unjar(src:"${libDir}/${branchName}/3rd.jar",dest:"${libDir}/tmp-${branchName}") - unjar(src:"${libDir}/${branchName}/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") + unjar(src:"${libDir}/3rd.jar",dest:"${libDir}/tmp-${branchName}") + unjar(src:"${libDir}/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") jar(jarfile:"build/libs/fr-applet-8.0.jar"){ fileset(dir:"build/classes"){ exclude(name:"*.*") diff --git a/build.release.gradle.bak b/build.release.gradle.bak index 44aacadb4d..d8afaf2bb8 100644 --- a/build.release.gradle.bak +++ b/build.release.gradle.bak @@ -27,7 +27,7 @@ task appletJar<<{ } unjar(src:"${libDir}/3rd.jar",dest:"${libDir}/tmp-${branchName}") - unjar(src:"${libDir}/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") + unjar(src:"${libDir}/${branchName}/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") jar(jarfile:"build/libs/fr-applet-8.0.jar"){ fileset(dir:"build/classes"){ exclude(name:"*.*") From 722ded0e9b79593bebb56890c2a7bd998f8545ce Mon Sep 17 00:00:00 2001 From: kerry Date: Mon, 14 Nov 2016 14:17:35 +0800 Subject: [PATCH 012/139] =?UTF-8?q?REPORT-773=20=E5=8F=AA=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E9=9F=A9=E6=96=87=E8=AE=BE=E8=AE=A1=E5=99=A8=E4=B8=8B?= =?UTF-8?q?=E7=9A=84=E7=A4=BE=E5=8C=BA=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/toolbar/ToolBarMenuDock.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index 8df23d70d9..f3d87cdd5f 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -122,6 +122,8 @@ public abstract class ToolBarMenuDock { ////////////////////////////////////////////////////////////////////////////////////////// public MenuDef[] menus(final ToolBarMenuDockPlus plus) { + Locale locale = FRContext.getLocale(); + java.util.List menuList = new java.util.ArrayList(); // 添加文件菜单 menuList.add(createFileMenuDef(plus)); @@ -138,6 +140,11 @@ public abstract class ToolBarMenuDock { // 添加帮助菜单 menuList.add(createHelpMenuDef()); + // 添加社区菜单 + if(!Locale.KOREA.equals(locale)){ + menuList.add(createCommunityMenuDef()); + } + return menuList.toArray(new MenuDef[menuList.size()]); } From 3788224902fa03433bb55de2793812ce2e9f3c44 Mon Sep 17 00:00:00 2001 From: eason-skx Date: Mon, 14 Nov 2016 14:38:26 +0800 Subject: [PATCH 013/139] =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/mainframe/chart/gui/ChartDataPane.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java index 7c8589fb25..3cd2b830c8 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java @@ -68,6 +68,10 @@ public class ChartDataPane extends AbstractChartAttrPane { contentsPane.setSupportCellData(supportCellData); } } + + public boolean isSupportCellData() { + return supportCellData; + } /** * 设置数据界面是否支持单元格 From fd2f80b6c101ecd2775eed930d611530fec5425c Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Mon, 14 Nov 2016 15:23:24 +0800 Subject: [PATCH 014/139] =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=A4=8D=E7=94=A8?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=99=A8=E9=83=A8=E5=88=86bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/JWorkBook.java | 2 + .../parameter/ParameterDefinitePane.java | 18 +- .../gui/icontainer/UIResizableContainer.java | 8 +- .../form/parameter/FormParaDesigner.java | 189 ++++++++-------- .../com/fr/design/mainframe/FormDesigner.java | 202 +++++++++--------- .../src/com/fr/design/mainframe/JForm.java | 4 +- 6 files changed, 216 insertions(+), 207 deletions(-) diff --git a/designer/src/com/fr/design/mainframe/JWorkBook.java b/designer/src/com/fr/design/mainframe/JWorkBook.java index 1e27feeb58..f3722c4ac2 100644 --- a/designer/src/com/fr/design/mainframe/JWorkBook.java +++ b/designer/src/com/fr/design/mainframe/JWorkBook.java @@ -732,6 +732,7 @@ public class JWorkBook extends JTemplate { } } else { DesignerContext.getDesignerFrame().resetToolkitByPlus(JWorkBook.this); + EastRegionContainerPane.getInstance().removeParameterPane(); if (delegate4ToolbarMenuAdapter() instanceof PolyDesigner) { PolyDesigner polyDesigner = (PolyDesigner) delegate4ToolbarMenuAdapter(); if (polyDesigner.getSelectionType() == PolyDesigner.SelectionType.NONE || polyDesigner.getSelection() == null) { @@ -752,6 +753,7 @@ public class JWorkBook extends JTemplate { EastRegionContainerPane.getInstance().replaceUpPane(allowAuthorityUpPane()); EastRegionContainerPane.getInstance().replaceDownPane(RolesAlreadyEditedPane.getInstance()); } + centerPane.needToShowCoverAndHidPane(); } diff --git a/designer/src/com/fr/design/parameter/ParameterDefinitePane.java b/designer/src/com/fr/design/parameter/ParameterDefinitePane.java index 1a547c3e6c..eb02932b67 100644 --- a/designer/src/com/fr/design/parameter/ParameterDefinitePane.java +++ b/designer/src/com/fr/design/parameter/ParameterDefinitePane.java @@ -20,7 +20,9 @@ import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.AuthorityToolBarPane; +import com.fr.design.mainframe.EastRegionContainerPane; import com.fr.design.mainframe.JWorkBook; +import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; import com.fr.design.menu.*; import com.fr.design.module.DesignModuleFactory; @@ -244,7 +246,7 @@ public class ParameterDefinitePane extends JPanel implements ToolBarMenuDockPlus isdelayItem.setSelected(reportParameterAttr.isDelayPlaying()); isshowWindowItem.setSelected(reportParameterAttr.isShowWindow()); isEditing = true; - + EastRegionContainerPane.getInstance().setParameterHeight(ParameterPropertyPane.getInstance().getPreferredSize().height); ParameterBridge bridge = paraDesignEditor.getParaComponent(); if (parameterUI != null) { bridge.setDelayDisplayContent(reportParameterAttr.isDelayPlaying()); @@ -455,13 +457,13 @@ public class ParameterDefinitePane extends JPanel implements ToolBarMenuDockPlus */ public ShortCut[] shortcut4FileMenu() { return (ShortCut[]) ArrayUtils.addAll(BaseUtils.isAuthorityEditing() ? - new ShortCut[]{new SaveTemplateAction(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()), - new UndoAction(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()), - new RedoAction(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate())} : - new ShortCut[]{new SaveTemplateAction(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()), - new SaveAsTemplateAction(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()), - new UndoAction(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()), - new RedoAction(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate())}, + new ShortCut[]{new SaveTemplateAction(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()), + new UndoAction(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()), + new RedoAction(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate())} : + new ShortCut[]{new SaveTemplateAction(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()), + new SaveAsTemplateAction(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()), + new UndoAction(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate()), + new RedoAction(HistoryTemplateListPane.getInstance().getCurrentEditingTemplate())}, new ShortCut[0] ); } diff --git a/designer_base/src/com/fr/design/gui/icontainer/UIResizableContainer.java b/designer_base/src/com/fr/design/gui/icontainer/UIResizableContainer.java index 86945674bf..13ea214ec5 100644 --- a/designer_base/src/com/fr/design/gui/icontainer/UIResizableContainer.java +++ b/designer_base/src/com/fr/design/gui/icontainer/UIResizableContainer.java @@ -29,6 +29,7 @@ public class UIResizableContainer extends JPanel { private VerticalToolPane verticalToolPane; private int direction; + private boolean hasParameterPane; private static final int MAX_WIDTH = 300; private static final int MIN_WIDTH = 165; @@ -89,7 +90,6 @@ public class UIResizableContainer extends JPanel { add(horizontToolPane); add(downPane); add(verticalToolPane); - add(parameterPane); } public UIResizableContainer(JComponent upPane, int direction) { @@ -102,7 +102,6 @@ public class UIResizableContainer extends JPanel { setLayout(containerLayout); add(upPane); add(horizontToolPane); - add(parameterPane); } @@ -141,7 +140,7 @@ public class UIResizableContainer extends JPanel { * @param height */ public void setParameterHeight(int height) { - paraHeight = height; + paraHeight = hasParameterPane? height : 0; refreshContainer(); } @@ -274,13 +273,16 @@ public class UIResizableContainer extends JPanel { public void addParameterPane(JComponent pane) { add(this.parameterPane = pane); + hasParameterPane = true; refreshContainer(); } public void removeParameterPane() { remove(this.parameterPane); setParameterHeight(0); + hasParameterPane = false; refreshContainer(); + } /** diff --git a/designer_form/src/com/fr/design/form/parameter/FormParaDesigner.java b/designer_form/src/com/fr/design/form/parameter/FormParaDesigner.java index a7936a8288..692359bbd6 100644 --- a/designer_form/src/com/fr/design/form/parameter/FormParaDesigner.java +++ b/designer_form/src/com/fr/design/form/parameter/FormParaDesigner.java @@ -110,7 +110,7 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP public void initBeforeUpEdit() { WidgetToolBarPane.getInstance(this); EastRegionContainerPane.getInstance().replaceDownPane( - FormWidgetDetailPane.getInstance(this)); + FormWidgetDetailPane.getInstance(this)); if (!BaseUtils.isAuthorityEditing()) { EastRegionContainerPane.getInstance().addParameterPane(ParameterPropertyPane.getInstance(this)); EastRegionContainerPane.getInstance().setParameterHeight(ParameterPropertyPane.getInstance(this).getPreferredSize().height); @@ -123,35 +123,35 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP } - /** - * 创建权限编辑面板 - * @return 面板 - */ + /** + * 创建权限编辑面板 + * @return 面板 + */ public AuthorityEditPane createAuthorityEditPane() { return new FormWidgetAuthorityEditPane(this); } - /** - * 内容属性表面板 - * @return 内容属性表面板 - */ + /** + * 内容属性表面板 + * @return 内容属性表面板 + */ public JPanel getEastUpPane() { return WidgetPropertyPane.getInstance(this); } - /** - * 参数属性表 - * @return 参数属性表 - */ + /** + * 参数属性表 + * @return 参数属性表 + */ public JPanel getEastDownPane() { return FormWidgetDetailPane.getInstance(this); } - /** - * 权限编辑面板 - * @return 权限编辑面板 - */ + /** + * 权限编辑面板 + * @return 权限编辑面板 + */ public AuthorityEditPane getAuthorityEditPane() { FormWidgetAuthorityEditPane formWidgetAuthorityEditPane = new FormWidgetAuthorityEditPane(this); formWidgetAuthorityEditPane.populateDetials(); @@ -233,6 +233,7 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP } ParameterPropertyPane.getInstance().getParameterToolbarPane().populateBean( p.getParameterArray() == null ? new Parameter[0] : p.getParameterArray()); + EastRegionContainerPane.getInstance().setParameterHeight(ParameterPropertyPane.getInstance().getPreferredSize().height); } @@ -247,9 +248,9 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP return xx.isEmpty(); } - protected void setToolbarButtons(boolean flag) { - DesignerContext.getDesignerFrame().checkCombineUp(!flag, NAME_ARRAY_LIST); - } + protected void setToolbarButtons(boolean flag) { + DesignerContext.getDesignerFrame().checkCombineUp(!flag, NAME_ARRAY_LIST); + } /** * 看看参数面板中的控件是否有和模板参数同名的 @@ -311,17 +312,17 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP return SearchQueryCreators(rootContainer); } - /** - * 返回复制粘贴删除等动作 - * @return 同上 - */ - public Action[] getActions() { - if (designer_actions == null) { - designer_actions = new Action[]{new CutAction(this), new CopyAction(this), new PasteAction(this), - new FormDeleteAction(this)}; - } - return designer_actions; - } + /** + * 返回复制粘贴删除等动作 + * @return 同上 + */ + public Action[] getActions() { + if (designer_actions == null) { + designer_actions = new Action[]{new CutAction(this), new CopyAction(this), new PasteAction(this), + new FormDeleteAction(this)}; + } + return designer_actions; + } private boolean SearchQueryCreators(XLayoutContainer rootContainer) { boolean b = false; @@ -353,9 +354,9 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP ParameterPropertyPane.getInstance().populateBean(p); } - /** - * 初始化 - */ + /** + * 初始化 + */ public void initWidgetToolbarPane() { WidgetToolBarPane.getInstance(this); } @@ -377,38 +378,38 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP this.refreshRoot(); } - /** - * 报表直接判断底层是否是绝对布局 - * @return 是则返回true - */ - public boolean hasWAbsoluteLayout() { - return this.getTarget().getContainer() instanceof WAbsoluteLayout; - } - - /** - * 刷新底层容器 - */ - public void refreshRoot() { - XLayoutContainer layoutContainer = (XLayoutContainer) XCreatorUtils.createXCreator(this.getTarget() - .getContainer()); - if (layoutContainer == null) { - layoutContainer = new XWParameterLayout(); - } - layoutContainer.setSize(LARGE_PREFERRED_SIZE); - setRootComponent(layoutContainer); - } - - /** - * 是否是报表的参数面板 - * @return 是 - */ - public boolean isFormParaDesigner(){ - return true; - } - - public XLayoutContainer getParaComponent() { - return getRootComponent(); - } + /** + * 报表直接判断底层是否是绝对布局 + * @return 是则返回true + */ + public boolean hasWAbsoluteLayout() { + return this.getTarget().getContainer() instanceof WAbsoluteLayout; + } + + /** + * 刷新底层容器 + */ + public void refreshRoot() { + XLayoutContainer layoutContainer = (XLayoutContainer) XCreatorUtils.createXCreator(this.getTarget() + .getContainer()); + if (layoutContainer == null) { + layoutContainer = new XWParameterLayout(); + } + layoutContainer.setSize(LARGE_PREFERRED_SIZE); + setRootComponent(layoutContainer); + } + + /** + * 是否是报表的参数面板 + * @return 是 + */ + public boolean isFormParaDesigner(){ + return true; + } + + public XLayoutContainer getParaComponent() { + return getRootComponent(); + } private void paintLinkParameters(Graphics clipg) { Parameter[] paras = DesignModelAdapter.getCurrentModelAdapter().getParameters(); @@ -493,8 +494,8 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP public void populateRootSize() { ((FormParameterUI) getTarget()).setDesignSize(getRootComponent().getSize()); if (getParaComponent().acceptType(XWParameterLayout.class)) { - WParameterLayout layout = (WParameterLayout)getParaComponent().toData(); - layout.setDesignWidth(getRootComponent().getWidth()); + WParameterLayout layout = (WParameterLayout)getParaComponent().toData(); + layout.setDesignWidth(getRootComponent().getWidth()); } } @@ -551,12 +552,12 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP return true; } - /** - * 加入参数 - * @param parameter 参数 c - * @param currentIndex 位置 w - * @return 是否加入 s - */ + /** + * 加入参数 + * @param parameter 参数 c + * @param currentIndex 位置 w + * @return 是否加入 s + */ public boolean addingParameter2Editor(Parameter parameter, int currentIndex) { com.fr.form.ui.Label label = new com.fr.form.ui.Label(); String name = parameter.getName(); @@ -577,12 +578,12 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP } - /** - * 加入参数 - * @param parameter 参数 c - * @param currentIndex 位置 w - * @return 是否加入 s - */ + /** + * 加入参数 + * @param parameter 参数 c + * @param currentIndex 位置 w + * @return 是否加入 s + */ public boolean addingParameter2EditorWithQueryButton(Parameter parameter, int currentIndex) { com.fr.form.ui.Label label = new com.fr.form.ui.Label(); String name = parameter.getName(); @@ -611,12 +612,12 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP return true; } - /** - * 加入参数 - * @param parameterArray 参数 c - * @param currentIndex 位置 w - * @return 是否加入 s - */ + /** + * 加入参数 + * @param parameterArray 参数 c + * @param currentIndex 位置 w + * @return 是否加入 s + */ public void addingAllParameter2Editor(Parameter[] parameterArray, int currentIndex) { for (int i = 0; i < parameterArray.length; i++) { com.fr.form.ui.Label label = new com.fr.form.ui.Label(); @@ -669,18 +670,18 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP return true; } - /** - * 工具栏 - * @return 工具栏面板 g - */ + /** + * 工具栏 + * @return 工具栏面板 g + */ public JPanel[] toolbarPanes4Form() { return new JPanel[]{FormParaPane.getInstance(this)}; } - /** - * 复制等按钮 - * @return 按钮组 a - */ + /** + * 复制等按钮 + * @return 按钮组 a + */ public JComponent[] toolBarButton4Form() { return new JComponent[]{new CutAction(this).createToolBarComponent(), new CopyAction(this).createToolBarComponent(), new PasteAction(this).createToolBarComponent(), new FormDeleteAction(this).createToolBarComponent()}; diff --git a/designer_form/src/com/fr/design/mainframe/FormDesigner.java b/designer_form/src/com/fr/design/mainframe/FormDesigner.java index 8422bfdb40..6f5fe2a473 100644 --- a/designer_form/src/com/fr/design/mainframe/FormDesigner.java +++ b/designer_form/src/com/fr/design/mainframe/FormDesigner.java @@ -121,7 +121,7 @@ public class FormDesigner extends TargetComponent
implements TreeSelection private static final int H_GAP = 105; public FormDesigner(Form form) { - this(form, null); + this(form, null); } public FormDesigner(Form form, Action switchAction) { @@ -186,14 +186,14 @@ public class FormDesigner extends TargetComponent implements TreeSelection public void refreshParameter(){ XLayoutContainer rootContainer = this.getParaComponent(); if (rootContainer != null){ - java.util.List namelist = new ArrayList(); - rootContainer.getAllXCreatorNameList(rootContainer,namelist); - // parameterArray是报表的所有参数, nameList是已经在参数面板添加过控件的参数名 - // 与已有的参数列表比较 如果已经存在 就除去 - Parameter[] ps = getParameterArray(); - if (ps != null) { - removeSame(ps, namelist); - } + java.util.List namelist = new ArrayList(); + rootContainer.getAllXCreatorNameList(rootContainer,namelist); + // parameterArray是报表的所有参数, nameList是已经在参数面板添加过控件的参数名 + // 与已有的参数列表比较 如果已经存在 就除去 + Parameter[] ps = getParameterArray(); + if (ps != null) { + removeSame(ps, namelist); + } } ParameterPropertyPane.getInstance().getParameterToolbarPane().populateBean( getParameterArray() == null ? new Parameter[0] : getParameterArray()); @@ -201,15 +201,15 @@ public class FormDesigner extends TargetComponent implements TreeSelection EastRegionContainerPane.getInstance().setParameterHeight(ParameterPropertyPane.getInstance(this).getPreferredSize().height); } - private void removeSame(Parameter[] parameters, List namelist){ - for (Parameter parameter : parameters) { - for (String name : namelist) { - if (name.equalsIgnoreCase(parameter.getName())) { - setParameterArray((Parameter[]) ArrayUtils.removeElement(getParameterArray(), parameter)); - } - } - } - } + private void removeSame(Parameter[] parameters, List namelist){ + for (Parameter parameter : parameters) { + for (String name : namelist) { + if (name.equalsIgnoreCase(parameter.getName())) { + setParameterArray((Parameter[]) ArrayUtils.removeElement(getParameterArray(), parameter)); + } + } + } + } /** @@ -405,10 +405,10 @@ public class FormDesigner extends TargetComponent implements TreeSelection * 加入参数面板 */ public void addParaComponent(){ - if (paraComponent != null) { - return ; - } - paraHeight = WBorderLayout.DEFAULT_SIZE; + if (paraComponent != null) { + return ; + } + paraHeight = WBorderLayout.DEFAULT_SIZE; paraComponent = new XWParameterLayout(); paraComponent.toData().setWidgetName("para"); paraComponent.setSize(paraComponent.initEditorSize()); @@ -428,10 +428,10 @@ public class FormDesigner extends TargetComponent implements TreeSelection * @return 父容器 */ public Component getTopContainer(){ - if(rootComponent != null){ - // 返回root所在的父容器,非designer - return LayoutUtils.getTopContainer(rootComponent); - } + if(rootComponent != null){ + // 返回root所在的父容器,非designer + return LayoutUtils.getTopContainer(rootComponent); + } return XCreatorUtils.createXCreator(this.getTarget().getContainer()); } @@ -448,9 +448,9 @@ public class FormDesigner extends TargetComponent implements TreeSelection * @param height 高度 */ public void setParaHeight(int height){ - XWBorderLayout container = (XWBorderLayout) getTopContainer(); - container.toData().setNorthSize(height); - container.setSize(container.getWidth(), container.getHeight() + height - getParaHeight()); + XWBorderLayout container = (XWBorderLayout) getTopContainer(); + container.toData().setNorthSize(height); + container.setSize(container.getWidth(), container.getHeight() + height - getParaHeight()); paraHeight = height; } @@ -475,39 +475,39 @@ public class FormDesigner extends TargetComponent implements TreeSelection * @param elementCaseContainer 容器 */ public void switchTab(FormElementCaseContainerProvider elementCaseContainer){ - if(this.switchAction == null){ - return; - } - this.elementCaseContainer = elementCaseContainer; - this.switchAction.actionPerformed(null); + if(this.switchAction == null){ + return; + } + this.elementCaseContainer = elementCaseContainer; + this.switchAction.actionPerformed(null); } public void setElementCaseContainer(FormElementCaseContainerProvider elementCaseContainer){ - this.elementCaseContainer = elementCaseContainer; + this.elementCaseContainer = elementCaseContainer; } public FormElementCaseProvider getElementCase(){ - return this.elementCaseContainer.getElementCase(); + return this.elementCaseContainer.getElementCase(); } public String getElementCaseContainerName(){ - return this.elementCaseContainer.getElementCaseContainerName(); + return this.elementCaseContainer.getElementCaseContainerName(); } public void setElementCase(FormElementCaseProvider elementCase){ - this.elementCaseContainer.setElementCase(elementCase); + this.elementCaseContainer.setElementCase(elementCase); } public void setElementCaseBackground(BufferedImage image){ - this.elementCaseContainer.setBackground(image); + this.elementCaseContainer.setBackground(image); } public Dimension getElementCaseContainerSize(){ - return this.elementCaseContainer.getSize(); + return this.elementCaseContainer.getSize(); } public FormElementCaseContainerProvider getElementCaseContainer(){ - return this.elementCaseContainer; + return this.elementCaseContainer; } protected FormDesignerModeForSpecial createFormDesignerTargetMode() { @@ -604,7 +604,7 @@ public class FormDesigner extends TargetComponent implements TreeSelection * @param width 指定的宽度 */ public void updateWidth(int width) { - //TODO + //TODO } /** @@ -615,12 +615,12 @@ public class FormDesigner extends TargetComponent implements TreeSelection * @return 不返回任何对象 */ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { - if(rootComponent != null){ - LayoutUtils.layoutRootContainer(rootComponent); - } - if(paraComponent != null){ - LayoutUtils.layoutRootContainer(paraComponent); - } + if(rootComponent != null){ + LayoutUtils.layoutRootContainer(rootComponent); + } + if(paraComponent != null){ + LayoutUtils.layoutRootContainer(paraComponent); + } repaint(); return null; } @@ -640,7 +640,7 @@ public class FormDesigner extends TargetComponent implements TreeSelection @Override public void fireCreatorModified(DesignerEvent evt) { - // 只有选择组件时不触发模版更新,其他都要触发 + // 只有选择组件时不触发模版更新,其他都要触发 if (evt.getCreatorEventID() != DesignerEvent.CREATOR_SELECTED) { FormDesigner.this.fireTargetModified(); //bug59192 @@ -702,7 +702,7 @@ public class FormDesigner extends TargetComponent implements TreeSelection * 从root组件递归查找x,y所在的组件,注意是正在被设计的组件,因此其name属性必须不为空 */ private XCreator xCreatorAt(int x, int y, XCreator root, XCreator[] except) { - if (root == null || !root.isVisible()) { + if (root == null || !root.isVisible()) { return null; } x -= root.getX(); @@ -758,21 +758,21 @@ public class FormDesigner extends TargetComponent implements TreeSelection * 刷新底层容器 */ public void refreshRoot() { - // 撤销恢复操作都会refreshRoot,这时候的target.getContainer里的widget会和之前不一样,所以不用root判断来取 - XLayoutContainer formLayoutContainer = (XLayoutContainer) XCreatorUtils.createXCreator(this.getTarget().getContainer()); + // 撤销恢复操作都会refreshRoot,这时候的target.getContainer里的widget会和之前不一样,所以不用root判断来取 + XLayoutContainer formLayoutContainer = (XLayoutContainer) XCreatorUtils.createXCreator(this.getTarget().getContainer()); // 布局默认都是1,底层的border改为0,不然没意义 this.getTarget().getContainer().setMargin(new PaddingMargin(0,0,0,0)); formLayoutContainer.setBorder(null); if (formLayoutContainer.acceptType(XWBorderLayout.class)) { - WBorderLayout borderLayout = (WBorderLayout) formLayoutContainer.toData(); + WBorderLayout borderLayout = (WBorderLayout) formLayoutContainer.toData(); Widget northWidget = borderLayout.getLayoutWidget(WBorderLayout.NORTH); - Widget centerWidget = borderLayout.getLayoutWidget(WBorderLayout.CENTER); + Widget centerWidget = borderLayout.getLayoutWidget(WBorderLayout.CENTER); //本身含有,这儿得先清空再加 formLayoutContainer.removeAll(); refreshNorth(northWidget, formLayoutContainer); - refreshCenter(centerWidget, formLayoutContainer); + refreshCenter(centerWidget, formLayoutContainer); } else { formLayoutContainer.setSize(LARGE_PREFERRED_SIZE); @@ -781,43 +781,43 @@ public class FormDesigner extends TargetComponent implements TreeSelection } private void refreshNorth(Widget northWidget, XLayoutContainer formLayoutContainer) { - // 如果没有参数界面, 那么就处理下高度以及参数界面的按钮要点亮 - if (northWidget == null) { - paraComponent = null; - paraHeight = 0; - FormParaWidgetPane.getInstance(this); - return; - } - - XLayoutContainer northContainer = (XLayoutContainer) XCreatorUtils.createXCreator(northWidget); - paraHeight = ((XWBorderLayout)formLayoutContainer).toData().getNorthSize(); - paraComponent = northContainer; - northContainer.setSize(0,paraHeight); - formLayoutContainer.add(northContainer, WBorderLayout.NORTH); - } - - private void refreshCenter(Widget centerWidget, XLayoutContainer formLayoutContainer) { - // 不存在center块, 说明是新建的模板 - if (centerWidget == null) { - XLayoutContainer layoutContainer = (XLayoutContainer) XCreatorUtils.createXCreator(new WFitLayout("body")); - layoutContainer.setSize(LARGE_PREFERRED_SIZE); - setRootComponent(layoutContainer); - formLayoutContainer.add(rootComponent, WBorderLayout.CENTER); - return; - } - - XLayoutContainer centerContainer = (XLayoutContainer) XCreatorUtils.createXCreator(centerWidget); - Dimension d = new Dimension(); - d.width = ((WFitLayout) centerWidget).getContainerWidth(); - d.height = ((WFitLayout) centerWidget).getContainerHeight(); - centerContainer.setSize(d); - formLayoutContainer.setSize(d.width, d.height + paraHeight); - setRootComponent(centerContainer); - // 再次打开时,layout下root,有内边距的话组件加上 - LayoutUtils.layoutContainer(centerContainer); - formLayoutContainer.add(rootComponent, WBorderLayout.CENTER); + // 如果没有参数界面, 那么就处理下高度以及参数界面的按钮要点亮 + if (northWidget == null) { + paraComponent = null; + paraHeight = 0; + FormParaWidgetPane.getInstance(this); + return; } + XLayoutContainer northContainer = (XLayoutContainer) XCreatorUtils.createXCreator(northWidget); + paraHeight = ((XWBorderLayout)formLayoutContainer).toData().getNorthSize(); + paraComponent = northContainer; + northContainer.setSize(0,paraHeight); + formLayoutContainer.add(northContainer, WBorderLayout.NORTH); + } + + private void refreshCenter(Widget centerWidget, XLayoutContainer formLayoutContainer) { + // 不存在center块, 说明是新建的模板 + if (centerWidget == null) { + XLayoutContainer layoutContainer = (XLayoutContainer) XCreatorUtils.createXCreator(new WFitLayout("body")); + layoutContainer.setSize(LARGE_PREFERRED_SIZE); + setRootComponent(layoutContainer); + formLayoutContainer.add(rootComponent, WBorderLayout.CENTER); + return; + } + + XLayoutContainer centerContainer = (XLayoutContainer) XCreatorUtils.createXCreator(centerWidget); + Dimension d = new Dimension(); + d.width = ((WFitLayout) centerWidget).getContainerWidth(); + d.height = ((WFitLayout) centerWidget).getContainerHeight(); + centerContainer.setSize(d); + formLayoutContainer.setSize(d.width, d.height + paraHeight); + setRootComponent(centerContainer); + // 再次打开时,layout下root,有内边距的话组件加上 + LayoutUtils.layoutContainer(centerContainer); + formLayoutContainer.add(rootComponent, WBorderLayout.CENTER); + } + protected Insets getOutlineInsets() { return new Insets(10, 10, 10, 10); @@ -962,8 +962,8 @@ public class FormDesigner extends TargetComponent implements TreeSelection public void startDraggingComponent(XCreator xCreator, MouseEvent lastPressEvent, int x, int y) { // 根据所选择的组件的BeanInfo生成相应的AddingModel // AddingModel和StateModel不一样,适合当前选择的组件相关的 - int creatorWidth = xCreator.getWidth(); - int creatorHeight = xCreator.getHeight(); + int creatorWidth = xCreator.getWidth(); + int creatorHeight = xCreator.getHeight(); this.addingModel = new AddingModel(xCreator, x, y); TransferHandler handler = new DesignerTransferHandler(this, addingModel); setTransferHandler(handler); @@ -1007,9 +1007,9 @@ public class FormDesigner extends TargetComponent implements TreeSelection } } - /** - * 显示权限编辑界面 - */ + /** + * 显示权限编辑界面 + */ public void showAuthorityEditPane() { HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().setAuthorityMode(true); if (isSupportAuthority()) { @@ -1023,9 +1023,9 @@ public class FormDesigner extends TargetComponent implements TreeSelection } /** - * 是否支持权限编辑 - * @return 是则返回true - */ + * 是否支持权限编辑 + * @return 是则返回true + */ public boolean isSupportAuthority() { int size = getSelectionModel().getSelection().size(); XCreator creator = size == 0 ? getRootComponent() : getSelectionModel().getSelection() @@ -1036,7 +1036,7 @@ public class FormDesigner extends TargetComponent implements TreeSelection protected void setToolbarButtons(boolean flag) { //自适应布局和底层都不能删除 - DesignerContext.getDesignerFrame().checkCombineUp(!(isRoot(getSelectionModel().getSelection().getSelectedCreator()) || flag), NAME_ARRAY_LIST); + DesignerContext.getDesignerFrame().checkCombineUp(!(isRoot(getSelectionModel().getSelection().getSelectedCreator()) || flag), NAME_ARRAY_LIST); } private void invalidateLayout() { @@ -1092,7 +1092,7 @@ public class FormDesigner extends TargetComponent implements TreeSelection */ public Action[] getActions() { if (designer_actions == null) { - //先把复制粘贴按钮去掉,只留下删除 + //先把复制粘贴按钮去掉,只留下删除 // designer_actions = new Action[]{new CutAction(this), new CopyAction(this), new PasteAction(this), // new FormDeleteAction(this)}; designer_actions = new Action[]{new FormDeleteAction(this)}; @@ -1236,7 +1236,7 @@ public class FormDesigner extends TargetComponent implements TreeSelection public ToolBarMenuDockPlus getToolBarMenuDockPlus() { - return StableFactory.getMarkedInstanceObjectFromClass(BaseJForm.XML_TAG, ToolBarMenuDockPlus.class); + return StableFactory.getMarkedInstanceObjectFromClass(BaseJForm.XML_TAG, ToolBarMenuDockPlus.class); } /** diff --git a/designer_form/src/com/fr/design/mainframe/JForm.java b/designer_form/src/com/fr/design/mainframe/JForm.java index bbc1706d9b..4c015811c0 100644 --- a/designer_form/src/com/fr/design/mainframe/JForm.java +++ b/designer_form/src/com/fr/design/mainframe/JForm.java @@ -609,17 +609,19 @@ public class JForm extends JTemplate implements BaseJForm { EastRegionContainerPane.getInstance().replaceDownPane(RolesAlreadyEditedPane.getInstance()); return; } + if (formDesign.isReportBlockEditing()) { if (elementCaseDesign != null) { + EastRegionContainerPane.getInstance().removeParameterPane(); EastRegionContainerPane.getInstance().replaceDownPane(elementCaseDesign.getEastDownPane()); EastRegionContainerPane.getInstance().replaceUpPane(elementCaseDesign.getEastUpPane()); return; } } - EastRegionContainerPane.getInstance().replaceUpPane(WidgetPropertyPane.getInstance(formDesign)); EastRegionContainerPane.getInstance().addParameterPane(ParameterPropertyPane.getInstance(formDesign)); + EastRegionContainerPane.getInstance().setParameterHeight(ParameterPropertyPane.getInstance(formDesign).getPreferredSize().height); if (EastRegionContainerPane.getInstance().getDownPane() == null) { new Thread() { public void run() { From 810ece19ba1131eb5d19bcbf6c963c6eecfe4094 Mon Sep 17 00:00:00 2001 From: kerry Date: Mon, 14 Nov 2016 15:24:18 +0800 Subject: [PATCH 015/139] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1,?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E9=80=89=E6=8B=A9=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E8=A7=84=E5=88=99=E6=97=A0=E6=B3=95=E5=A1=AB?= =?UTF-8?q?=E5=86=99=E9=94=99=E8=AF=AF=E4=BF=A1=E6=81=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/widget/ui/TextFieldEditorDefinePane.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java b/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java index 3f30948538..c9128627cc 100644 --- a/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java @@ -61,11 +61,7 @@ public class TextFieldEditorDefinePane extends FieldEditorDefinePane regPane.getRegComboBox().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { RegExp regExp = (RegExp) regPane.getRegComboBox().getSelectedItem(); - if (StringUtils.EMPTY.equals(regExp.toRegText())) { - getRegErrorMsgTextField().setEnabled(false); - } else { - getRegErrorMsgTextField().setEnabled(true); - } + getRegErrorMsgTextField().setEnabled(regExp.errorMessageEditable()); } }); From 92460c107a6154dfa7a1ffdd6a5cc1072ae33c3f Mon Sep 17 00:00:00 2001 From: richie Date: Mon, 14 Nov 2016 15:36:00 +0800 Subject: [PATCH 016/139] =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E8=AF=BB=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/actions/file/LocalePane.java | 49 +++++++++++++++---- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/designer_base/src/com/fr/design/actions/file/LocalePane.java b/designer_base/src/com/fr/design/actions/file/LocalePane.java index 3356fa70af..00bb7107cd 100644 --- a/designer_base/src/com/fr/design/actions/file/LocalePane.java +++ b/designer_base/src/com/fr/design/actions/file/LocalePane.java @@ -27,6 +27,8 @@ import com.fr.design.dialog.BasicPane; import com.fr.file.filetree.FileNode; import com.fr.general.*; import com.fr.stable.ArrayUtils; +import com.fr.stable.StringUtils; +import com.fr.stable.bridge.StableFactory; import com.fr.stable.project.ProjectConstants; /** @@ -51,8 +53,8 @@ public class LocalePane extends BasicPane { add(tabbedPane, BorderLayout.CENTER); predefineTableModel = new DefaultTableModel() { - public boolean isCellEditable(int col, int row) { - return false; + public boolean isCellEditable(int row, int column) { + return column == 0; } }; @@ -109,23 +111,39 @@ public class LocalePane extends BasicPane { } private void initPredefinedProperties() { - Map map = Inter.getPredefinedPackageMap(); - LocalePackage chinese = map.get(Locale.SIMPLIFIED_CHINESE); + + Map supportLocaleMap = Inter.getSupportLocaleMap(); + + String[] localeFiles = StableFactory.getLocaleFiles(); + + List sortKeys = new ArrayList(); - Set bundles = chinese.getKindsOfResourceBundle(); - for (ResourceBundle bundle : bundles) { - sortKeys.addAll(bundle.keySet()); + for (String path : localeFiles) { + ResourceBundle chineseBundle = loadResourceBundle(path, Locale.SIMPLIFIED_CHINESE); + sortKeys.addAll(chineseBundle.keySet()); } Collections.sort(sortKeys); + Map> localeResourceBundleMap = new HashMap>(); + for (Map.Entry entry : supportLocaleMap.entrySet()) { + Locale locale = entry.getKey(); + List list = new ArrayList<>(); + for (String path : localeFiles) { + ResourceBundle chineseBundle = loadResourceBundle(path, locale); + list.add(chineseBundle); + } + localeResourceBundleMap.put(locale, list); + } + Map> data = new HashMap>(); - for (Map.Entry entry : map.entrySet()) { + for (Map.Entry> entry : localeResourceBundleMap.entrySet()) { Vector column = new Vector(); + List rbs = entry.getValue(); for (String key : sortKeys) { - column.add(entry.getValue().getLocText(key)); + column.add(readText(rbs, key)); } data.put(entry.getKey(), column); } @@ -140,6 +158,19 @@ public class LocalePane extends BasicPane { } } + public String readText(List rbs, String key) { + for (ResourceBundle rb : rbs) { + if (rb.containsKey(key)) { + return rb.getString(key); + } + } + return null; + } + + private ResourceBundle loadResourceBundle(String dir, Locale locale) { + return ResourceBundle.getBundle(dir, locale, Inter.class.getClassLoader()); + } + private void initCustomProperties() throws Exception { Env env = FRContext.getCurrentEnv(); if (env == null) { From 50184e1b53426e2bb661bf4b9f25db90824b6510 Mon Sep 17 00:00:00 2001 From: richie Date: Mon, 14 Nov 2016 15:38:51 +0800 Subject: [PATCH 017/139] =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E8=AF=BB=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/actions/file/LocalePane.java | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/designer_base/src/com/fr/design/actions/file/LocalePane.java b/designer_base/src/com/fr/design/actions/file/LocalePane.java index 00bb7107cd..e22d8c258b 100644 --- a/designer_base/src/com/fr/design/actions/file/LocalePane.java +++ b/designer_base/src/com/fr/design/actions/file/LocalePane.java @@ -158,7 +158,7 @@ public class LocalePane extends BasicPane { } } - public String readText(List rbs, String key) { + private String readText(List rbs, String key) { for (ResourceBundle rb : rbs) { if (rb.containsKey(key)) { return rb.getString(key); @@ -207,17 +207,6 @@ public class LocalePane extends BasicPane { } } - private Properties loadLocaleProperties(String name) { - Properties properties = new Properties(); - InputStream inputStream = IOUtils.readResource("/com/fr/general/locale/" + name); - try { - properties.load(inputStream); - } catch (IOException e) { - FRLogger.getLogger().error(e.getMessage()); - } - return properties; - } - /** * 保存当前编辑的国际化 * From 993f22837b42bf215f199b037396715382ef296c Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Mon, 14 Nov 2016 15:46:37 +0800 Subject: [PATCH 018/139] rt --- .../design/mainframe/WidgetPropertyPane.java | 25 ------------------- 1 file changed, 25 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java b/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java index 324ff62bb3..cc7f1d7690 100644 --- a/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java +++ b/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java @@ -124,15 +124,6 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper } componentTree = new ComponentTree(designer); - - ComponentTreeModel treeModel = (ComponentTreeModel) componentTree.getModel(); - XCreator root = (XCreator)treeModel.getRoot(); - int childCount = treeModel.getChildCount(root); - //按照节点添加para在下的,但这里需要para节点在上,调整一下位置 - if(childCount == NODE_LENGTH){ - adjustPosition(treeModel, designer); - } - widgetPropertyTables = new ArrayList(); propertyTable = new WidgetPropertyTable(designer); designer.addDesignerEditListener(new WidgetPropertyDesignerAdapter(propertyTable)); @@ -198,22 +189,6 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper isrefresh = false; } - - /** - * 调整结构树para和body的位置 - * - * @param treeModel - * @param formDesigner - */ - private void adjustPosition(ComponentTreeModel treeModel,FormDesigner formDesigner){ - XCreator root = (XCreator)treeModel.getRoot(); - if(treeModel.getChild(root,0) instanceof XWParameterLayout){ - return; - } - root.add((Component)(treeModel.getChild(root,0)),1); - treeModel.setRoot(root); - componentTree = new ComponentTree(formDesigner,treeModel); - } // /** * 选中的组件是否在参数面板里 From 9e732c70abee000ade8e10340b7a148d10cffb8a Mon Sep 17 00:00:00 2001 From: fr_shine Date: Mon, 14 Nov 2016 15:58:17 +0800 Subject: [PATCH 019/139] =?UTF-8?q?=E5=8B=BE=E9=80=89=E5=80=BC=E6=89=80?= =?UTF-8?q?=E5=8D=A0=E6=AF=94=E4=BE=8Bpercent=E9=BB=98=E8=AE=A4=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/chart/gui/style/ChartDatapointLabelPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartDatapointLabelPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartDatapointLabelPane.java index 1cfdb220f0..6afc7b7d76 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartDatapointLabelPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/style/ChartDatapointLabelPane.java @@ -432,7 +432,7 @@ public class ChartDatapointLabelPane extends BasicPane{ this.percentFormatPane = new FormatPane(); } if(this.percentFormat == null){ - DecimalFormat defaultFormat = new CoreDecimalFormat(new DecimalFormat(), "#.##%"); + DecimalFormat defaultFormat = new CoreDecimalFormat(new DecimalFormat("#.##%"), "#.##%"); percentFormatPane.populateBean(defaultFormat); this.percentFormat = defaultFormat; } From 8b9f2bc175191fdb07d2872af0799594b5c9ee29 Mon Sep 17 00:00:00 2001 From: kerry Date: Mon, 14 Nov 2016 16:17:37 +0800 Subject: [PATCH 020/139] =?UTF-8?q?=E5=8F=AA=E5=88=A0=E9=99=A4=E9=9F=A9?= =?UTF-8?q?=E6=96=87=E8=AE=BE=E8=AE=A1=E5=99=A8=E4=B8=8B=E7=9A=84=E7=A4=BE?= =?UTF-8?q?=E5=8C=BA=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/toolbar/ToolBarMenuDock.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index f3d87cdd5f..cde400571a 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -141,12 +141,26 @@ public abstract class ToolBarMenuDock { menuList.add(createHelpMenuDef()); // 添加社区菜单 - if(!Locale.KOREA.equals(locale)){ - menuList.add(createCommunityMenuDef()); + Locale [] locales =supportCommunityLocales(); + + // 添加社区菜单 + for(int i = 0; i < locales.length; i++) { + if(locale.equals(locales[i])){ + menuList.add(createCommunityMenuDef()); + } } return menuList.toArray(new MenuDef[menuList.size()]); } + + public Locale[] supportCommunityLocales() { + return new Locale[]{ + Locale.CHINA, + Locale.JAPAN, + Locale.TAIWAN, + Locale.US, + }; + } public void insertTemplateExtendMenu(ToolBarMenuDockPlus plus, MenuDef[] menuDefs) { // 给菜单加插件入口 From 609ed362ba2b31b893446a46f07c30a27c8f4fba Mon Sep 17 00:00:00 2001 From: kerry Date: Mon, 14 Nov 2016 16:39:43 +0800 Subject: [PATCH 021/139] =?UTF-8?q?=E5=8F=AA=E5=88=A0=E9=99=A4=E9=9F=A9?= =?UTF-8?q?=E6=96=87=E8=AE=BE=E8=AE=A1=E5=99=A8=E4=B8=8B=E7=9A=84=E7=A4=BE?= =?UTF-8?q?=E5=8C=BA=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/toolbar/ToolBarMenuDock.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index cde400571a..2a3fa28d35 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -122,8 +122,6 @@ public abstract class ToolBarMenuDock { ////////////////////////////////////////////////////////////////////////////////////////// public MenuDef[] menus(final ToolBarMenuDockPlus plus) { - Locale locale = FRContext.getLocale(); - java.util.List menuList = new java.util.ArrayList(); // 添加文件菜单 menuList.add(createFileMenuDef(plus)); @@ -140,17 +138,21 @@ public abstract class ToolBarMenuDock { // 添加帮助菜单 menuList.add(createHelpMenuDef()); - // 添加社区菜单 - Locale [] locales =supportCommunityLocales(); - // 添加社区菜单 + addCommunityMenuDef(menuList); + + return menuList.toArray(new MenuDef[menuList.size()]); + } + + public void addCommunityMenuDef(java.util.List menuList){ + Locale locale = FRContext.getLocale(); + Locale [] locales =supportCommunityLocales(); for(int i = 0; i < locales.length; i++) { if(locale.equals(locales[i])){ menuList.add(createCommunityMenuDef()); + break; } } - - return menuList.toArray(new MenuDef[menuList.size()]); } public Locale[] supportCommunityLocales() { From 28a7a50aa14970ac5292113499d653729eab2ba4 Mon Sep 17 00:00:00 2001 From: zack Date: Mon, 14 Nov 2016 17:01:21 +0800 Subject: [PATCH 022/139] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E6=8B=96=E6=8B=BD=E8=BF=87=E7=A8=8B=E4=B8=AD?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E7=9A=84=E5=90=88=E5=B9=B6=E5=8E=BB?= =?UTF-8?q?=E9=87=8D=E6=B2=A1=E6=9C=89=E8=80=83=E8=99=91=E5=88=B0=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E6=95=B0=E6=8D=AE=E9=9B=86=EF=BC=8C=E5=8A=A0?= =?UTF-8?q?=E4=B8=8A=E5=8E=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/data/BasicTableDataTreePane.java | 18 ++++++++++-------- .../data/datapane/TableDataTreePane.java | 3 ++- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/designer_base/src/com/fr/design/data/BasicTableDataTreePane.java b/designer_base/src/com/fr/design/data/BasicTableDataTreePane.java index 45cd0cea70..a76d4a1059 100644 --- a/designer_base/src/com/fr/design/data/BasicTableDataTreePane.java +++ b/designer_base/src/com/fr/design/data/BasicTableDataTreePane.java @@ -118,7 +118,7 @@ public abstract class BasicTableDataTreePane extends DockingView implements Resp if (StringUtils.isBlank(tempName)) { nPanel.setShowText(Inter.getLocText(new String[]{"DS-TableData", "ISEMPTY", "PLEASE", "GIVE-NAME"}, new String[]{"", ",", "", "!"})); dg.setButtonEnabled(false); - } else if (!ComparatorUtils.equals(oldName, tempName) && isDsNameRepeaded(tempName, allDSNames)) { + } else if (!ComparatorUtils.equals(oldName, tempName) && isDsNameRepeaded(tempName)) { String[] waring = new String[]{"DS-TableData", "Utils-has_been_existed", "PLEASE", "Rename"}; String[] sign = new String[]{tempName, ",", "", "!"}; nPanel.setShowText(Inter.getLocText(waring, sign)); @@ -324,20 +324,22 @@ public abstract class BasicTableDataTreePane extends DockingView implements Resp private String createDsName(String prefix) { int count = 1; allDSNames = DesignTableDataManager.getAllDSNames(tc.getBook()); - while (isDsNameRepeaded(prefix + count, allDSNames)) { + while (isDsNameRepeaded(prefix + count)) { count++; } return prefix + count; } - private boolean isDsNameRepeaded(String name, String[] names) { - boolean repeat = false; - for (int i = 0; i < names.length; i++) { - if (ComparatorUtils.equals(name, names[i])) { - repeat = true; + protected boolean isDsNameRepeaded(String name) { + if (allDSNames == null) { + allDSNames = DesignTableDataManager.getAllDSNames(tc.getBook()); + } + for (int i = 0; i < allDSNames.length; i++) { + if (ComparatorUtils.equals(name, allDSNames[i])) { + return true; } } - return repeat; + return false; } protected KeyAdapter getTableTreeNodeListener(final UpdateAction editAction, final UpdateAction previewTableDataAction, final UpdateAction removeAction, final TableDataSourceOP op, final TableDataTree dataTree) { diff --git a/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java b/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java index 2e605cafcf..219093c6d9 100644 --- a/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java +++ b/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java @@ -276,13 +276,14 @@ public class TableDataTreePane extends BasicTableDataTreePane { * @param tableDataSource 数据集 */ public void addTableData(String srcName, TableDataSource tableDataSource) { + allDSNames = DesignTableDataManager.getAllDSNames(tc.getBook()); DesignTableDataManager.setThreadLocal(DesignTableDataManager.NO_PARAMETER); TableDataSource tds = tc.getBook(); Iterator tdIterator = tableDataSource.getTableDataNameIterator(); while (tdIterator.hasNext()) { String tdName = (String) tdIterator.next(); TableData td = tableDataSource.getTableData(tdName); - if (tds.getTableData(tdName) != null) {//如果有同名的就拼上来源名称 + if (tds.getTableData(tdName) != null || isDsNameRepeaded(tdName)) {//如果有同名的就拼上来源名称 tdName = srcName + tdName; } int i = 0; From 69a93ea9859a70db00ebb3b2013bf201f90ae185 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Tue, 15 Nov 2016 14:22:49 +0800 Subject: [PATCH 023/139] =?UTF-8?q?=E5=9B=BE=E8=A1=A8=E7=AD=89=E7=BA=A7?= =?UTF-8?q?=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java index 3515be8f24..0b76dd2d75 100644 --- a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java @@ -485,7 +485,7 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh extraChartDesignInterfaceList.add(tagName); } if (IndependentChartUIProvider.XML_TAG.equals(tagName)) { - addChartInterface(reader.getAttrAsString("class", ""), reader.getAttrAsString("priority", ChartTypeManager.CHART_PRIORITY),reader.getAttrAsString("plotID", ""), simplify); + addChartInterface(reader.getAttrAsString("class", ""), reader.getAttrAsString("priority", ChartTypeManager.DEFAULT_PRIORITY),reader.getAttrAsString("plotID", ""), simplify); } } } From 0b8c85a005527180cf35191d373220d0d0ee7a0e Mon Sep 17 00:00:00 2001 From: kerry Date: Tue, 15 Nov 2016 15:34:16 +0800 Subject: [PATCH 024/139] =?UTF-8?q?REPORT-578=20=E8=87=AA=E9=80=82?= =?UTF-8?q?=E5=BA=94=E5=B8=83=E5=B1=80=E4=B8=8B=E9=9C=80=E8=A6=81=E8=80=83?= =?UTF-8?q?=E8=99=91=E5=88=86=E8=BE=A8=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../properties/FRFitLayoutConstraints.java | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/properties/FRFitLayoutConstraints.java b/designer_form/src/com/fr/design/designer/properties/FRFitLayoutConstraints.java index 6a9202c1cb..b58850eaa8 100644 --- a/designer_form/src/com/fr/design/designer/properties/FRFitLayoutConstraints.java +++ b/designer_form/src/com/fr/design/designer/properties/FRFitLayoutConstraints.java @@ -2,8 +2,6 @@ package com.fr.design.designer.properties; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.adapters.layout.FRFitLayoutAdapter; -import com.fr.design.designer.creator.XCreatorUtils; -import com.fr.design.designer.creator.XLayoutContainer; import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.design.mainframe.widget.editors.IntegerPropertyEditor; @@ -12,8 +10,9 @@ import com.fr.design.designer.beans.ConstraintsGroupModel; import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XWFitLayout; import com.fr.design.utils.ComponentUtils; -import com.fr.form.ui.Widget; +import com.fr.form.ui.PaddingMargin; import com.fr.form.ui.container.WFitLayout; +import com.fr.form.ui.container.WLayout; import com.fr.general.Inter; import javax.swing.*; @@ -30,8 +29,8 @@ import java.awt.*; */ //控件在自适应布局中宽度、高度属性,7.1.1不可编辑 public class FRFitLayoutConstraints implements ConstraintsGroupModel { - private static final int MINHEIGHT = XCreator.SMALL_PREFERRED_SIZE.height; - private static final int MINWIDTH = XCreator.SMALL_PREFERRED_SIZE.width; + private static final int MINHEIGHT = WLayout.MIN_HEIGHT; + private static final int MINWIDTH = WLayout.MIN_WIDTH; private static final int ROWNUM = 2; private DefaultTableCellRenderer renderer; @@ -91,31 +90,39 @@ public class FRFitLayoutConstraints implements ConstraintsGroupModel { int v = value == null ? 0 : ((Number) value).intValue(); int difference = 0; Rectangle bounds = getBounds(); + Rectangle rec = ComponentUtils.getRelativeBounds(parent); + WFitLayout wFitLayout = parent.toData(); + int minHeight = (int)(MINHEIGHT * wFitLayout.getResolutionScaling()); + int minWidth = (int)(MINWIDTH * wFitLayout.getResolutionScaling()); + PaddingMargin margin= wFitLayout.getMargin(); switch (row) { case 0: - if(v < MINWIDTH){ - JOptionPane.showMessageDialog(null, Inter.getLocText("Min-Width") + Integer.toString(MINWIDTH)); - v = xCreator.getWidth(); - } if (bounds.width == v){ return false; } + if(bounds.width == rec.width - margin.getLeft() - margin.getRight()){ + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Beyond_Bounds")); + }else if(v < minWidth){ + JOptionPane.showMessageDialog(null, Inter.getLocText("Min-Width") + Integer.toString(minWidth)); + v = xCreator.getWidth(); + } difference = bounds.width - v; bounds.width = v; break; case 1: - if(v < MINHEIGHT){ - JOptionPane.showMessageDialog(null, Inter.getLocText("Min-Height") + Integer.toString(MINHEIGHT)); - v = xCreator.getHeight(); - } if (bounds.height == v){ return false; } + if(bounds.height == rec.height - margin.getTop() - margin.getBottom()){ + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Beyond_Bounds")); + }else if(v < minHeight){ + JOptionPane.showMessageDialog(null, Inter.getLocText("Min-Height") + Integer.toString(minHeight)); + v = xCreator.getHeight(); + } difference = bounds.height - v; bounds.height = v; break; } - WFitLayout wFitLayout = parent.toData(); wFitLayout.setBounds(xCreator.toData(),bounds); FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner(); Rectangle backupBounds = getBounds(); @@ -131,7 +138,6 @@ public class FRFitLayoutConstraints implements ConstraintsGroupModel { public Rectangle getBounds(){ Rectangle bounds = new Rectangle(xCreator.getBounds()); - XLayoutContainer parent = XCreatorUtils.getParentXLayoutContainer(xCreator); if (parent == null) { return bounds; } From 2de8ba4b10b53bff54b7a7bcf4a04d2a477b1763 Mon Sep 17 00:00:00 2001 From: zhouping Date: Tue, 15 Nov 2016 16:01:36 +0800 Subject: [PATCH 025/139] =?UTF-8?q?REPORT-750=20=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E5=85=B1=E5=88=9B=E5=86=85=E6=B5=8B=E9=97=AE=E9=A2=98=20dev?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=88=B0release?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/designer/properties/WidgetPropertyTable.java | 3 ++- designer_form/src/com/fr/design/mainframe/FormDesigner.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/properties/WidgetPropertyTable.java b/designer_form/src/com/fr/design/designer/properties/WidgetPropertyTable.java index 9f53dddcce..f69771a54a 100644 --- a/designer_form/src/com/fr/design/designer/properties/WidgetPropertyTable.java +++ b/designer_form/src/com/fr/design/designer/properties/WidgetPropertyTable.java @@ -21,6 +21,7 @@ import com.fr.design.designer.creator.XLayoutContainer; import com.fr.design.designer.creator.XWFitLayout; import com.fr.design.designer.creator.XWParameterLayout; import com.fr.design.designer.creator.cardlayout.XWCardLayout; +import com.fr.general.ComparatorUtils; public class WidgetPropertyTable extends AbstractPropertyTable { @@ -71,7 +72,7 @@ public class WidgetPropertyTable extends AbstractPropertyTable { if (size == 0 || size == 1) { XCreator creator = size == 0 ? designer.getRootComponent() : designer.getSelectionModel().getSelection() .getSelectedCreator(); - if (designer.isRoot(creator)) { + if (ComparatorUtils.equals(creator, designer.getRootComponent())) { groups = designer.getDesignerMode().createRootDesignerPropertyGroup(); } else { groups = getCreatorPropertyGroup(designer, creator); diff --git a/designer_form/src/com/fr/design/mainframe/FormDesigner.java b/designer_form/src/com/fr/design/mainframe/FormDesigner.java index 6f5fe2a473..a3b197e91d 100644 --- a/designer_form/src/com/fr/design/mainframe/FormDesigner.java +++ b/designer_form/src/com/fr/design/mainframe/FormDesigner.java @@ -853,7 +853,7 @@ public class FormDesigner extends TargetComponent implements TreeSelection * @return 是则返回true */ public boolean isRoot(XCreator comp) { - return comp == rootComponent; + return comp == rootComponent || comp.acceptType(XWAbsoluteBodyLayout.class); } // 计算鼠标事件e所发生的位置相对根组件的位置关系 From c9502311f96b5c9ebea5aab57a904a718185db71 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Tue, 15 Nov 2016 16:23:47 +0800 Subject: [PATCH 026/139] =?UTF-8?q?plot=20=E4=BC=A0=E5=85=A5=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/beans/BasicBeanPane.java | 8 ++++++++ .../gui/imenutable/UIMenuNameableCreator.java | 15 ++++++++++++--- .../SeriesCondition/DataSeriesConditionPane.java | 14 ++++++++++++-- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/designer_base/src/com/fr/design/beans/BasicBeanPane.java b/designer_base/src/com/fr/design/beans/BasicBeanPane.java index 2a8adfe19a..2ecc7440aa 100644 --- a/designer_base/src/com/fr/design/beans/BasicBeanPane.java +++ b/designer_base/src/com/fr/design/beans/BasicBeanPane.java @@ -23,6 +23,14 @@ public abstract class BasicBeanPane extends BasicPane { } + /** + * 设置plot + * @param plot + */ + public void setPlot(Object plot) { + + } + /** * 更新权限工具栏面板 */ diff --git a/designer_base/src/com/fr/design/gui/imenutable/UIMenuNameableCreator.java b/designer_base/src/com/fr/design/gui/imenutable/UIMenuNameableCreator.java index 5b6f8606df..9923bf5c18 100644 --- a/designer_base/src/com/fr/design/gui/imenutable/UIMenuNameableCreator.java +++ b/designer_base/src/com/fr/design/gui/imenutable/UIMenuNameableCreator.java @@ -9,13 +9,20 @@ public class UIMenuNameableCreator implements Nameable{ protected String name; protected Object obj; protected Class paneClazz; + protected Object edit; - public UIMenuNameableCreator(String name, Object obj, Class paneClazz) { + public UIMenuNameableCreator(Object edit, String name, Object obj, Class paneClazz) { + this.edit = edit; this.name = name; this.obj = obj; this.paneClazz = paneClazz; } + public UIMenuNameableCreator(String name, Object obj, Class paneClazz) { + this(null, name, obj, paneClazz); + } + + @Override public String getName() { return name; @@ -46,13 +53,15 @@ public class UIMenuNameableCreator implements Nameable{ } catch (IllegalAccessException e) { FRLogger.getLogger().error("UIMenuNameableCreator IllegalAccessException"); } - return new UIMenuNameableCreator(name, cloneObj, this.paneClazz); + return new UIMenuNameableCreator(edit, name, cloneObj, this.paneClazz); } public BasicBeanPane getPane() { try { - return this.paneClazz.newInstance(); + BasicBeanPane pane = this.paneClazz.newInstance(); + pane.setPlot(edit); + return pane; } catch (InstantiationException e) { } catch (IllegalAccessException e) { diff --git a/designer_chart/src/com/fr/design/chart/series/SeriesCondition/DataSeriesConditionPane.java b/designer_chart/src/com/fr/design/chart/series/SeriesCondition/DataSeriesConditionPane.java index fe2107fb42..05579418b8 100644 --- a/designer_chart/src/com/fr/design/chart/series/SeriesCondition/DataSeriesConditionPane.java +++ b/designer_chart/src/com/fr/design/chart/series/SeriesCondition/DataSeriesConditionPane.java @@ -27,13 +27,23 @@ import java.util.Iterator; * Time : 上午9:16 */ public class DataSeriesConditionPane extends ConditionAttributesPane { + protected Plot plot; - - public DataSeriesConditionPane() { + public DataSeriesConditionPane(Plot plot) { + this.plot = plot; initAvailableActionList(); initComponents(); } + @Override + public void setPlot(Object plot) { + this.plot = (Plot) plot; + } + + public DataSeriesConditionPane() { + this(null); + } + private void initAvailableActionList() { addBasicAction(); addAxisPositionAction(); From be778943f137a69ddc2e7c218070f85196649b71 Mon Sep 17 00:00:00 2001 From: kerry Date: Tue, 15 Nov 2016 16:48:31 +0800 Subject: [PATCH 027/139] =?UTF-8?q?REPORT-578=20=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/properties/FRFitLayoutConstraints.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/properties/FRFitLayoutConstraints.java b/designer_form/src/com/fr/design/designer/properties/FRFitLayoutConstraints.java index b58850eaa8..cf177f791a 100644 --- a/designer_form/src/com/fr/design/designer/properties/FRFitLayoutConstraints.java +++ b/designer_form/src/com/fr/design/designer/properties/FRFitLayoutConstraints.java @@ -47,7 +47,7 @@ public class FRFitLayoutConstraints implements ConstraintsGroupModel { @Override public String getGroupName() { - return Inter.getLocText("Widget-Size"); + return Inter.getLocText("FR-Designer-Widget_Size"); } @Override @@ -70,9 +70,9 @@ public class FRFitLayoutConstraints implements ConstraintsGroupModel { if (column == 0) { switch (row) { case 0: - return Inter.getLocText("Tree-Width"); + return Inter.getLocText("FR-Designer-Tree_Width"); default: - return Inter.getLocText("Tree-Height"); + return Inter.getLocText("FR-Designer-Tree_Height"); } } else { switch (row) { @@ -103,7 +103,7 @@ public class FRFitLayoutConstraints implements ConstraintsGroupModel { if(bounds.width == rec.width - margin.getLeft() - margin.getRight()){ JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Beyond_Bounds")); }else if(v < minWidth){ - JOptionPane.showMessageDialog(null, Inter.getLocText("Min-Width") + Integer.toString(minWidth)); + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Min_Width") + Integer.toString(minWidth)); v = xCreator.getWidth(); } difference = bounds.width - v; @@ -116,7 +116,7 @@ public class FRFitLayoutConstraints implements ConstraintsGroupModel { if(bounds.height == rec.height - margin.getTop() - margin.getBottom()){ JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Beyond_Bounds")); }else if(v < minHeight){ - JOptionPane.showMessageDialog(null, Inter.getLocText("Min-Height") + Integer.toString(minHeight)); + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Min_Height") + Integer.toString(minHeight)); v = xCreator.getHeight(); } difference = bounds.height - v; From 850b33e6f29b3d031170c308a3f126272b43f862 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Tue, 15 Nov 2016 17:16:46 +0800 Subject: [PATCH 028/139] update --- .../src/com/fr/design/beans/BasicBeanPane.java | 8 -------- .../design/gui/imenutable/UIMenuNameableCreator.java | 12 ++---------- .../SeriesCondition/DataSeriesConditionPane.java | 5 ++--- 3 files changed, 4 insertions(+), 21 deletions(-) diff --git a/designer_base/src/com/fr/design/beans/BasicBeanPane.java b/designer_base/src/com/fr/design/beans/BasicBeanPane.java index 2ecc7440aa..2a8adfe19a 100644 --- a/designer_base/src/com/fr/design/beans/BasicBeanPane.java +++ b/designer_base/src/com/fr/design/beans/BasicBeanPane.java @@ -23,14 +23,6 @@ public abstract class BasicBeanPane extends BasicPane { } - /** - * 设置plot - * @param plot - */ - public void setPlot(Object plot) { - - } - /** * 更新权限工具栏面板 */ diff --git a/designer_base/src/com/fr/design/gui/imenutable/UIMenuNameableCreator.java b/designer_base/src/com/fr/design/gui/imenutable/UIMenuNameableCreator.java index 9923bf5c18..241669221d 100644 --- a/designer_base/src/com/fr/design/gui/imenutable/UIMenuNameableCreator.java +++ b/designer_base/src/com/fr/design/gui/imenutable/UIMenuNameableCreator.java @@ -9,20 +9,13 @@ public class UIMenuNameableCreator implements Nameable{ protected String name; protected Object obj; protected Class paneClazz; - protected Object edit; - public UIMenuNameableCreator(Object edit, String name, Object obj, Class paneClazz) { - this.edit = edit; + public UIMenuNameableCreator(String name, Object obj, Class paneClazz) { this.name = name; this.obj = obj; this.paneClazz = paneClazz; } - public UIMenuNameableCreator(String name, Object obj, Class paneClazz) { - this(null, name, obj, paneClazz); - } - - @Override public String getName() { return name; @@ -53,14 +46,13 @@ public class UIMenuNameableCreator implements Nameable{ } catch (IllegalAccessException e) { FRLogger.getLogger().error("UIMenuNameableCreator IllegalAccessException"); } - return new UIMenuNameableCreator(edit, name, cloneObj, this.paneClazz); + return new UIMenuNameableCreator(name, cloneObj, this.paneClazz); } public BasicBeanPane getPane() { try { BasicBeanPane pane = this.paneClazz.newInstance(); - pane.setPlot(edit); return pane; } catch (InstantiationException e) { diff --git a/designer_chart/src/com/fr/design/chart/series/SeriesCondition/DataSeriesConditionPane.java b/designer_chart/src/com/fr/design/chart/series/SeriesCondition/DataSeriesConditionPane.java index 05579418b8..8ba1bb4319 100644 --- a/designer_chart/src/com/fr/design/chart/series/SeriesCondition/DataSeriesConditionPane.java +++ b/designer_chart/src/com/fr/design/chart/series/SeriesCondition/DataSeriesConditionPane.java @@ -35,9 +35,8 @@ public class DataSeriesConditionPane extends ConditionAttributesPane Date: Tue, 15 Nov 2016 17:17:59 +0800 Subject: [PATCH 029/139] update --- .../com/fr/design/gui/imenutable/UIMenuNameableCreator.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/gui/imenutable/UIMenuNameableCreator.java b/designer_base/src/com/fr/design/gui/imenutable/UIMenuNameableCreator.java index 241669221d..5b6f8606df 100644 --- a/designer_base/src/com/fr/design/gui/imenutable/UIMenuNameableCreator.java +++ b/designer_base/src/com/fr/design/gui/imenutable/UIMenuNameableCreator.java @@ -52,8 +52,7 @@ public class UIMenuNameableCreator implements Nameable{ public BasicBeanPane getPane() { try { - BasicBeanPane pane = this.paneClazz.newInstance(); - return pane; + return this.paneClazz.newInstance(); } catch (InstantiationException e) { } catch (IllegalAccessException e) { From c9cf6f76590ab553651efe89799de3d56efc7403 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Tue, 15 Nov 2016 19:09:01 +0800 Subject: [PATCH 030/139] rt --- .../mainframe/widget/UITreeComboBox.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java b/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java index 38b62a99a1..c315bca3b8 100644 --- a/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java +++ b/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java @@ -15,6 +15,7 @@ import com.fr.design.designer.beans.*; import com.fr.design.designer.beans.events.DesignerEditListener; import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.design.designer.creator.XCreator; +import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.mainframe.ComponentTree; import com.sun.java.swing.plaf.motif.*; import com.sun.java.swing.plaf.windows.*; @@ -116,7 +117,6 @@ public class UITreeComboBox extends JComboBox{ JLabel lb = (JLabel)r.getTreeCellRendererComponent( tree, value, isSelected, false, false, index, cellHasFocus); - return lb; } return super.getListCellRendererComponent(list, value, index, @@ -129,7 +129,7 @@ public class UITreeComboBox extends JComboBox{ @Override public void fireCreatorModified(DesignerEvent evt) { - if (evt.getCreatorEventID() == DesignerEvent.CREATOR_SELECTED || evt.getCreatorEventID() == DesignerEvent.CREATOR_PASTED) { + if (evt.getCreatorEventID() == DesignerEvent.CREATOR_SELECTED) { TreePath[] paths = tree.getSelectedTreePath(); if (tree != null && paths.length > 0) { tree.setAndScrollSelectionPath(paths[0]); @@ -137,9 +137,18 @@ public class UITreeComboBox extends JComboBox{ MenuSelectionManager.defaultManager().clearSelectedPath(); } - } else { + } else if (evt.getCreatorEventID() == DesignerEvent.CREATOR_PASTED) { + tree.refreshUI(); + TreePath[] paths = tree.getSelectedTreePath(); + if (tree != null && paths.length > 0) { + tree.setAndScrollSelectionPath(paths[0]); + setSelectedItem(paths[0]); + MenuSelectionManager.defaultManager().clearSelectedPath(); + } + } else { tree.refreshUI(); - repaint(); + setSelectedItem(null); + MenuSelectionManager.defaultManager().clearSelectedPath(); } } @@ -192,13 +201,12 @@ class TreePopup extends JPopupMenu implements ComboPopup{ public TreePopup(JComboBox comboBox){ this.comboBox = (UITreeComboBox)comboBox; - setBorder(BorderFactory.createLineBorder(Color.black)); setLayout(new BorderLayout()); setLightWeightPopupEnabled(comboBox.isLightWeightPopupEnabled()); JTree tree = this.comboBox.getTree(); if(tree != null){ - scrollPane = new JScrollPane(tree); - scrollPane.setBorder(null); + scrollPane = new UIScrollPane(tree); + scrollPane.setBorder(BorderFactory.createEmptyBorder(0,4,0,0)); add(scrollPane, BorderLayout.CENTER); } } From 275fe159b03545ac76976bf0b03c23db8075d198 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 16 Nov 2016 00:08:07 +0800 Subject: [PATCH 031/139] rt --- .../src/com/fr/design/mainframe/widget/UITreeComboBox.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java b/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java index c315bca3b8..ea44f01c31 100644 --- a/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java +++ b/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java @@ -145,10 +145,13 @@ public class UITreeComboBox extends JComboBox{ setSelectedItem(paths[0]); MenuSelectionManager.defaultManager().clearSelectedPath(); } - } else { + } else if (evt.getCreatorEventID() == DesignerEvent.CREATOR_CUTED) { tree.refreshUI(); setSelectedItem(null); MenuSelectionManager.defaultManager().clearSelectedPath(); + } else { + tree.refreshUI(); + tree.repaint(); } } From c3ba1c7e3a8ca3e9ff1455209eb18cf4bc312c58 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 16 Nov 2016 09:27:34 +0800 Subject: [PATCH 032/139] rt --- .../fr/design/mainframe/ComponentTree.java | 72 +++++++++---------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/ComponentTree.java b/designer_form/src/com/fr/design/mainframe/ComponentTree.java index ca84e44c03..a3452f602f 100644 --- a/designer_form/src/com/fr/design/mainframe/ComponentTree.java +++ b/designer_form/src/com/fr/design/mainframe/ComponentTree.java @@ -38,29 +38,29 @@ public class ComponentTree extends JTree { this.refreshTreeRoot(); addTreeSelectionListener(designer); - this.addMouseListener(new MouseAdapter() { - - @Override - public void mouseClicked(MouseEvent e) { - if (e.isPopupTrigger()) { - popupMenu(e); - } - } - - @Override - public void mousePressed(MouseEvent e) { - if (e.isPopupTrigger()) { - popupMenu(e); - } - } - - @Override - public void mouseReleased(MouseEvent e) { - if (e.isPopupTrigger()) { - popupMenu(e); - } - } - }); +// this.addMouseListener(new MouseAdapter() { +// +// @Override +// public void mouseClicked(MouseEvent e) { +// if (e.isPopupTrigger()) { +// popupMenu(e); +// } +// } +// +// @Override +// public void mousePressed(MouseEvent e) { +// if (e.isPopupTrigger()) { +// popupMenu(e); +// } +// } +// +// @Override +// public void mouseReleased(MouseEvent e) { +// if (e.isPopupTrigger()) { +// popupMenu(e); +// } +// } +// }); setEditable(true); } @@ -121,19 +121,19 @@ public class ComponentTree extends JTree { scrollPathToVisible(treepath); } - private void popupMenu(MouseEvent e) { - TreePath path = this.getSelectionPath(); - if (path == null) { - return; - } - Component component = (Component) path.getLastPathComponent(); - if (!(component instanceof XCreator)) { - return; - } - ComponentAdapter adapter = AdapterBus.getComponentAdapter(designer, (XCreator) component); - JPopupMenu menu = adapter.getContextPopupMenu(e); - menu.show(this, e.getX(), e.getY()); - } +// private void popupMenu(MouseEvent e) { +// TreePath path = this.getSelectionPath(); +// if (path == null) { +// return; +// } +// Component component = (Component) path.getLastPathComponent(); +// if (!(component instanceof XCreator)) { +// return; +// } +// ComponentAdapter adapter = AdapterBus.getComponentAdapter(designer, (XCreator) component); +// JPopupMenu menu = adapter.getContextPopupMenu(e); +// menu.show(this, e.getX(), e.getY()); +// } /** * 刷新 From e533606177aae6a2ec8baab34afbaf36d41504db Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 16 Nov 2016 15:50:11 +0800 Subject: [PATCH 033/139] rt --- .../mainframe/FormWidgetDetailPane.java | 112 +++++++++++++----- 1 file changed, 84 insertions(+), 28 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java index 5beea605c8..e74f9db1e8 100644 --- a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java +++ b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java @@ -21,6 +21,7 @@ import com.fr.form.share.ShareLoader; import com.fr.form.ui.ElCaseBindInfo; import com.fr.general.Inter; import com.fr.general.SiteCenter; +import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; import javax.swing.*; @@ -44,13 +45,17 @@ import java.net.URISyntaxException; public class FormWidgetDetailPane extends FormDockView{ private UITabbedPane tabbedPane; - private UIScrollPane downPanel; + private UIScrollPane downPane; private JPanel reuWidgetPanel; private UIComboBox comboBox; private ElCaseBindInfo[] elCaseBindInfoList; private UIButton downloadButton; private UIButton refreshButton; private UIButton deleteButton; + private UIButton resetButton; + private JPanel editPanel; + private JPanel resetPanel; + private JPanel menutPanel; private static final int OFFSET_X = 140; private static final int OFFSET_Y = 26; private SwingWorker sw; @@ -114,8 +119,6 @@ public class FormWidgetDetailPane extends FormDockView{ sw.execute(); } initReuWidgetPanel(); - createRefreshButton(); - createDownloadButton(); initMenuPanel(); tabbedPane = new UITabbedPane(); tabbedPane.setOpaque(true); @@ -131,34 +134,68 @@ public class FormWidgetDetailPane extends FormDockView{ * 初始化组件共享和复用面板 */ private void initReuWidgetPanel() { - downPanel = new UIScrollPane(new ShareWidgetPane(elCaseBindInfoList, false)); - reuWidgetPanel.add(downPanel); + downPane = new UIScrollPane(new ShareWidgetPane(elCaseBindInfoList, false)); + reuWidgetPanel.add(downPane); } /** * 初始化菜单栏面板 */ private void initMenuPanel() { - JPanel menutPane = new JPanel(); - menutPane.setLayout(FRGUIPaneFactory.createBorderLayout()); - menutPane.setBorder(BorderFactory.createEmptyBorder(3, 8, 3, 3)); - menutPane.setPreferredSize(new Dimension(240, 48)); - menutPane.add(new UILabel(Inter.getLocText("FR-Designer_LocalWidget"), + menutPanel = new JPanel(); + menutPanel.setLayout(FRGUIPaneFactory.createBorderLayout()); + menutPanel.setBorder(BorderFactory.createEmptyBorder(3, 8, 3, 3)); + menutPanel.setPreferredSize(new Dimension(240, 48)); + menutPanel.add(new UILabel(Inter.getLocText("FR-Designer_LocalWidget"), SwingConstants.HORIZONTAL), BorderLayout.WEST); - JPanel buttonPanel = new JPanel(); - buttonPanel.setLayout(FRGUIPaneFactory.createBorderLayout()); - buttonPanel.add(refreshButton, BorderLayout.WEST); - buttonPanel.add(downloadButton, BorderLayout.EAST); - menutPane.add(buttonPanel, BorderLayout.EAST); - menutPane.add(new JPanel(), BorderLayout.CENTER); + + menutPanel.add(initButtonPane(), BorderLayout.EAST); + menutPanel.add(new JPanel(), BorderLayout.CENTER); comboBox = new UIComboBox(getFormCategories()); comboBox.setPreferredSize(new Dimension(240, 30)); initComboBoxSelectedListener(); - menutPane.add(comboBox, BorderLayout.SOUTH); - reuWidgetPanel.add(menutPane, BorderLayout.NORTH); + menutPanel.add(comboBox, BorderLayout.SOUTH); + reuWidgetPanel.add(menutPanel, BorderLayout.NORTH); + + } + + /** + * 创建菜单栏按钮面板 + */ + private JPanel initButtonPane() { + editPanel = new JPanel(); + editPanel.setLayout(FRGUIPaneFactory.createBorderLayout()); + editPanel.add(createRefreshButton(), BorderLayout.WEST); + editPanel.add(createDownloadButton(), BorderLayout.EAST); + return editPanel; + } + + /** + * 创建取消删除面板 + */ + private JPanel initResetButtonPane() { + resetPanel = new JPanel(); + resetButton = new UIButton(Inter.getLocText("FR-Designer_Reset")); + resetPanel.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); + resetButton.set4ToolbarButton(); + resetButton.setOpaque(true); + resetButton.setBackground(new Color(184, 220, 242)); + resetButton.setForeground(Color.WHITE); + resetButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + refreshDownPanel(false); + replaceButtonPanel(false); + reuWidgetPanel.remove(deleteButton); + } + }); + resetPanel.setLayout(FRGUIPaneFactory.createBorderLayout()); + resetPanel.add(resetButton, BorderLayout.CENTER); + return resetPanel; } + private void initComboBoxSelectedListener() { comboBox.addItemListener(new ItemListener() { @Override @@ -176,7 +213,10 @@ public class FormWidgetDetailPane extends FormDockView{ }); } - private void createRefreshButton() { + /** + * 创建刷新按钮 + */ + private UIButton createRefreshButton() { refreshButton = new UIButton(); refreshButton.setIcon(BaseUtils.readIcon("/com/fr/design/form/images/refresh.png")); refreshButton.setToolTipText(Inter.getLocText("FR-Designer_Refresh")); @@ -192,6 +232,7 @@ public class FormWidgetDetailPane extends FormDockView{ protected Object doInBackground() throws Exception { ShareLoader.getLoader().refreshModule(); elCaseBindInfoList = ShareLoader.getLoader().getAllBindInfoList(); + comboBox.setSelectedIndex(0); refreshDownPanel(false); return null; } @@ -199,13 +240,14 @@ public class FormWidgetDetailPane extends FormDockView{ sw.execute(); } }); + return refreshButton; } /** * 创建下载模板的按钮 */ - private void createDownloadButton() { + private UIButton createDownloadButton() { downloadButton = new UIButton(); downloadButton.setIcon(BaseUtils.readIcon("/com/fr/design/form/images/showmenu.png")); downloadButton.set4ToolbarButton(); @@ -263,6 +305,7 @@ public class FormWidgetDetailPane extends FormDockView{ deleteItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { + replaceButtonPanel(true); deleteFromDiskZipFile(); } }); @@ -271,27 +314,28 @@ public class FormWidgetDetailPane extends FormDockView{ } }); + return downloadButton; } private void deleteFromDiskZipFile() { deleteButton = new UIButton(Inter.getLocText("FR-Designer-CommitTab_Remove")); - deleteButton.setOpaque(true); + deleteButton.setBackground(Color.red); + deleteButton.repaint(); deleteButton.setPreferredSize(new Dimension(240, 40)); reuWidgetPanel.add(deleteButton, BorderLayout.SOUTH); deleteButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - if(ShareLoader.getLoader().removeModulesFromList()) { + if (ShareLoader.getLoader().removeModulesFromList()) { refreshShareMoudule(); reuWidgetPanel.remove(deleteButton); elCaseBindInfoList = ShareLoader.getLoader().getAllBindInfoList(); JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_Removed_Successful")); refreshDownPanel(false); + replaceButtonPanel(false); } else { - reuWidgetPanel.remove(deleteButton); JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_Removed_Failed")); - refreshDownPanel(false); } } @@ -300,6 +344,18 @@ public class FormWidgetDetailPane extends FormDockView{ } + private void replaceButtonPanel(boolean isEdit) { + if (isEdit) { + menutPanel.remove(editPanel); + menutPanel.add(initResetButtonPane(), BorderLayout.EAST); + } else { + menutPanel.remove(resetPanel); + menutPanel.add(initButtonPane(), BorderLayout.EAST); + } + + + } + private void installFromDiskZipFile(File chosenFile) { try { ShareLoader.getLoader().installModuleFromDiskZipFile(chosenFile); @@ -326,15 +382,15 @@ public class FormWidgetDetailPane extends FormDockView{ * 获取报表块组件分类 */ public String[] getFormCategories() { - return ShareConstants.WIDGET_CATEGORIES; + return ArrayUtils.addAll(new String[] {Inter.getLocText("FR-Designer_AllCategories")}, ShareLoader.getLoader().getModuleCategory()); } public void refreshDownPanel(boolean isEdit) { - reuWidgetPanel.remove(downPanel); - downPanel = new UIScrollPane(new ShareWidgetPane(elCaseBindInfoList, isEdit)); - reuWidgetPanel.add(downPanel); + reuWidgetPanel.remove(downPane); + downPane = new UIScrollPane(new ShareWidgetPane(elCaseBindInfoList, isEdit)); + reuWidgetPanel.add(downPane); repaintContainer(); } From b1fa14a43912857e20d94fd3a77126a574837a9d Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 16 Nov 2016 15:51:00 +0800 Subject: [PATCH 034/139] rt --- .../src/com/fr/design/mainframe/widget/UITreeComboBox.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java b/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java index ea44f01c31..cf68a7ea7a 100644 --- a/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java +++ b/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java @@ -151,7 +151,7 @@ public class UITreeComboBox extends JComboBox{ MenuSelectionManager.defaultManager().clearSelectedPath(); } else { tree.refreshUI(); - tree.repaint(); + repaint(); } } From 5a77fe8ee6c1ade8cc1e0a4e44b2bd02fe3d4214 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 16 Nov 2016 15:58:43 +0800 Subject: [PATCH 035/139] rt --- .../fr/design/mainframe/ComponentTree.java | 450 ++++++++++-------- 1 file changed, 249 insertions(+), 201 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/ComponentTree.java b/designer_form/src/com/fr/design/mainframe/ComponentTree.java index a3452f602f..ab1f2a980f 100644 --- a/designer_form/src/com/fr/design/mainframe/ComponentTree.java +++ b/designer_form/src/com/fr/design/mainframe/ComponentTree.java @@ -1,255 +1,303 @@ -package com.fr.design.mainframe; - -import java.awt.Component; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.util.ArrayList; - -import javax.swing.DropMode; -import javax.swing.JPopupMenu; -import javax.swing.JTree; -import javax.swing.tree.TreePath; -import javax.swing.tree.TreeSelectionModel; - -import com.fr.design.constants.UIConstants; -import com.fr.design.designer.beans.AdapterBus; -import com.fr.design.designer.beans.ComponentAdapter; +package com.fr.design.mainframe.widget; + +/** + * Created by xiaxiang on 2016/9/30. + */ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.plaf.*; +import javax.swing.plaf.basic.*; +import javax.swing.plaf.metal.*; +import javax.swing.tree.*; + +import com.fr.design.designer.beans.*; import com.fr.design.designer.beans.events.DesignerEditListener; import com.fr.design.designer.beans.events.DesignerEvent; -import com.fr.design.designer.creator.*; -import com.fr.design.designer.treeview.ComponentTreeCellRenderer; -import com.fr.design.designer.treeview.ComponentTreeModel; -import com.fr.stable.StringUtils; - -public class ComponentTree extends JTree { - - private FormDesigner designer; - private ComponentTreeModel model; - - public ComponentTree(FormDesigner designer) { - this.designer = designer; - this.setBackground(UIConstants.NORMAL_BACKGROUND); - setRootVisible(true); - setCellRenderer(new ComponentTreeCellRenderer()); - getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION); - this.setDragEnabled(false); - this.setDropMode(DropMode.ON_OR_INSERT); - this.setTransferHandler(new TreeTransferHandler()); - this.refreshTreeRoot(); - addTreeSelectionListener(designer); - -// this.addMouseListener(new MouseAdapter() { -// -// @Override -// public void mouseClicked(MouseEvent e) { -// if (e.isPopupTrigger()) { -// popupMenu(e); -// } -// } -// -// @Override -// public void mousePressed(MouseEvent e) { -// if (e.isPopupTrigger()) { -// popupMenu(e); -// } -// } -// -// @Override -// public void mouseReleased(MouseEvent e) { -// if (e.isPopupTrigger()) { -// popupMenu(e); -// } -// } -// }); - setEditable(true); - } - - public FormDesigner getDesigner() { - return designer; +import com.fr.design.designer.creator.XCreator; +import com.fr.design.gui.icontainer.UIScrollPane; +import com.fr.design.mainframe.ComponentTree; +import com.sun.java.swing.plaf.motif.*; +import com.sun.java.swing.plaf.windows.*; + +/** + * 控件树下拉列表框 + */ +public class UITreeComboBox extends JComboBox{ + /** + * 显示用的树 + */ + private ComponentTree tree; + + public UITreeComboBox(ComponentTree componentTree){ + this.setTree(componentTree); + tree.getDesigner().addDesignerEditListener(new TreeComboBoxDesignerEditAdapter()); +// for(int i=0; iTitle: UITreeComboBoxRenderer

+ *

Description: 树形结构而来的DefaultListCellRenderer

+ */ + class UITreeComboBoxRenderer extends DefaultListCellRenderer { + public Component getListCellRendererComponent(JList list, Object value, + int index, boolean isSelected, boolean cellHasFocus){ + if(tree != null && tree.getSelectedTreePath().length > 0){ + TreePath path = tree.getSelectedTreePath()[0]; + tree.setAndScrollSelectionPath(path); + Object node = path.getLastPathComponent(); + value = node; + TreeCellRenderer r = tree.getCellRenderer(); + JLabel lb = (JLabel)r.getTreeCellRendererComponent( + tree, value, isSelected, false, false, index, + cellHasFocus); + return lb; + } + return super.getListCellRendererComponent(list, value, index, + isSelected, cellHasFocus); + } + } + private class TreeComboBoxDesignerEditAdapter implements DesignerEditListener { + + @Override + public void fireCreatorModified(DesignerEvent evt) { + if (evt.getCreatorEventID() == DesignerEvent.CREATOR_SELECTED) { + TreePath[] paths = tree.getSelectedTreePath(); + if (tree != null && paths.length > 0) { + tree.setAndScrollSelectionPath(paths[0]); + setSelectedItem(paths[0]); + MenuSelectionManager.defaultManager().clearSelectedPath(); + } + + } else if (evt.getCreatorEventID() == DesignerEvent.CREATOR_PASTED) { + tree.refreshUI(); + TreePath[] paths = tree.getSelectedTreePath(); + if (tree != null && paths.length > 0) { + tree.setAndScrollSelectionPath(paths[0]); + setSelectedItem(paths[0]); + MenuSelectionManager.defaultManager().clearSelectedPath(); + } + } else if (evt.getCreatorEventID() == DesignerEvent.CREATOR_CUTED) { + tree.refreshUI(); + setSelectedItem(null); + MenuSelectionManager.defaultManager().clearSelectedPath(); + } else { + tree.refreshUI(); + repaint(); + } - public TreePath[] getSelectedTreePath() { - XCreator[] creators = designer.getSelectionModel().getSelection().getSelectedCreators(); - TreePath[] paths = new TreePath[creators.length]; + } - for (int i = 0; i < paths.length; i++) { - paths[i] = buildTreePath(creators[i]); + @Override + public boolean equals(Object o) { + return o.getClass() == this.getClass(); } - return paths; } + /** + * 测试 + */ +// public static void main(String args[]){ +// JFrame frame = new JFrame("UITreeComboBox"); +// final UITreeComboBox box = new UITreeComboBox(new ComponentTree(new FormDesigner())); +// box.setPreferredSize(new Dimension(300, 28)); +// frame.getContentPane().add(box); +// frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); +// frame.pack(); +// frame.setVisible(true); +// } +} +/** + *

Title: UITreeComboBox

+ *

Description: TreePopup

+ */ +class TreePopup extends JPopupMenu implements ComboPopup{ + protected UITreeComboBox comboBox; + protected JScrollPane scrollPane; + protected MouseMotionListener mouseMotionListener; + protected MouseListener mouseListener; - /** - *搜索指定名称的路径 - * - * @param text 名称 - * @return 树路径 - */ - public TreePath[] search(String text) { - if (StringUtils.isNotEmpty(text)) { - text = text.toLowerCase(); - } - ArrayList searchList = new ArrayList(); - XLayoutContainer root = designer.getRootComponent(); - searchFormRoot(root, searchList, text); - TreePath[] paths = new TreePath[searchList.size()]; - for (int i = 0; i < paths.length; i++) { - paths[i] = buildTreePath(searchList.get(i)); + public void popupMenu(MouseEvent e) { + TreePath path = comboBox.getTree().getSelectionPath(); + if (path == null) { + return; } - if(paths.length > 0) { - setAndScrollSelectionPath(paths[0]); - } else { - setSelectionPath(); + Component component = (Component) path.getLastPathComponent(); + if (!(component instanceof XCreator)) { + return; + } + com.fr.design.designer.beans.ComponentAdapter adapter = AdapterBus.getComponentAdapter(comboBox.getTree().getDesigner(), (XCreator) component); + JPopupMenu menu = adapter.getContextPopupMenu(e); + menu.show(comboBox, e.getX(), e.getY()); + } + + public TreePopup(JComboBox comboBox){ + this.comboBox = (UITreeComboBox)comboBox; + setLayout(new BorderLayout()); + setLightWeightPopupEnabled(comboBox.isLightWeightPopupEnabled()); + JTree tree = this.comboBox.getTree(); + if(tree != null){ + scrollPane = new UIScrollPane(tree); + scrollPane.setBorder(BorderFactory.createEmptyBorder(0,2,0,0)); + add(scrollPane, BorderLayout.CENTER); } - return paths; } + public void show() { + updatePopup(); + show(comboBox, 0, comboBox.getHeight()); + comboBox.getTree().requestFocus(); + } - private void setSelectionPath(){ + public void hide(){ + setVisible(false); + comboBox.firePropertyChange("popupVisible", true, false); + } - /** - * 不让传null参数,所以只有自己定义 - */ - super.setSelectionPath(null); - clearSelection(); + protected JList list = new JList(); + public JList getList(){ + return list; } - private void searchFormRoot(XLayoutContainer container, ArrayList searchList, String text) { - if (StringUtils.isEmpty(text)) { - return; - } - for (int i = 0, size = container.getXCreatorCount(); i < size; i++) { - XCreator creator = container.getXCreator(i); - String xName = creator.toData().getWidgetName(); - if (xName.toLowerCase().contains(text)) { - searchList.add(creator); - } - if (creator instanceof XLayoutContainer) { - searchFormRoot((XLayoutContainer) creator, searchList, text); - } + public MouseMotionListener getMouseMotionListener(){ + if(mouseMotionListener == null){ + mouseMotionListener = new MouseMotionAdapter(){}; } + return mouseMotionListener; } - /** - * 触发 - */ - public void fireTreeChanged() { - designer.refreshDesignerUI(); + public KeyListener getKeyListener(){ + return null; } + public void uninstallingUI(){} + /** - * 刷新 + * Implementation of ComboPopup.getMouseListener(). + * + * @return a MouseListener or null + * @see ComboPopup#getMouseListener */ - public void refreshTreeRoot() { - model = new ComponentTreeModel(designer, designer.getTopContainer()); - setModel(model); - setDragEnabled(false); - setDropMode(DropMode.ON_OR_INSERT); - setTransferHandler(new TreeTransferHandler()); - repaint(); - } - - private TreePath buildTreePath(Component comp) { - ArrayList path = new ArrayList(); - Component parent = comp; - - while (parent != null) { - XCreator creator = (XCreator) parent; - path.add(0, parent); - if (creator != comp ) { - creator.notShowInComponentTree(path); + public MouseListener getMouseListener(){ + if(mouseListener == null){ + mouseListener = new InvocationMouseHandler(); + } + return mouseListener; + } + + protected void togglePopup(){ + if(isVisible()){ + hide(); + } else{ + show(); + } + } + protected void updatePopup(){ + setPreferredSize(new Dimension(comboBox.getSize().width, 200)); + Object selectedObj = comboBox.getSelectedItem(); + if(selectedObj != null){ + TreePath tp = (TreePath)selectedObj; + ((UITreeComboBox)comboBox).getTree().setSelectionPath(tp); + } + } + + protected class InvocationMouseHandler extends MouseAdapter{ + public void mousePressed(MouseEvent e){ + if(!SwingUtilities.isLeftMouseButton(e) || !comboBox.isEnabled()){ + return; } - //绝对布局作为body的时候不显示自适应布局父层 - if (((XCreator) parent).acceptType(XWAbsoluteBodyLayout.class) - && (parent.getParent() != null) - && ((XCreator)parent.getParent()).acceptType(XWFitLayout.class)){ - parent = parent.getParent().getParent(); - continue; + if(comboBox.isEditable()){ + Component comp = comboBox.getEditor().getEditorComponent(); + if((!(comp instanceof JComponent)) || + ((JComponent)comp).isRequestFocusEnabled()){ + comp.requestFocus(); + } + } else if(comboBox.isRequestFocusEnabled()){ + comboBox.requestFocus(); + } + togglePopup(); + } + + public void mouseClicked (MouseEvent e){ + if (e.isMetaDown()) { + popupMenu(e); + } else { + return; } - parent = parent.getParent(); } - Object[] components = path.toArray(); - return new TreePath(components); } -} \ No newline at end of file + + + +} From 693e858233401513c6e602e55c539dc4bb947c2e Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 16 Nov 2016 16:00:12 +0800 Subject: [PATCH 036/139] rt --- .../src/com/fr/design/mainframe/widget/UITreeComboBox.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java b/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java index cf68a7ea7a..c3e1d7303c 100644 --- a/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java +++ b/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java @@ -209,7 +209,7 @@ class TreePopup extends JPopupMenu implements ComboPopup{ JTree tree = this.comboBox.getTree(); if(tree != null){ scrollPane = new UIScrollPane(tree); - scrollPane.setBorder(BorderFactory.createEmptyBorder(0,4,0,0)); + scrollPane.setBorder(BorderFactory.createEmptyBorder(0,2,0,0)); add(scrollPane, BorderLayout.CENTER); } } From a5e30ec9739cb850c6db45dabf785ab47ff49bda Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 16 Nov 2016 16:00:29 +0800 Subject: [PATCH 037/139] rt --- .../fr/design/mainframe/ComponentTree.java | 450 ++++++++---------- 1 file changed, 201 insertions(+), 249 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/ComponentTree.java b/designer_form/src/com/fr/design/mainframe/ComponentTree.java index ab1f2a980f..a3452f602f 100644 --- a/designer_form/src/com/fr/design/mainframe/ComponentTree.java +++ b/designer_form/src/com/fr/design/mainframe/ComponentTree.java @@ -1,303 +1,255 @@ -package com.fr.design.mainframe.widget; - -/** - * Created by xiaxiang on 2016/9/30. - */ -import java.awt.*; -import java.awt.event.*; -import javax.swing.*; -import javax.swing.plaf.*; -import javax.swing.plaf.basic.*; -import javax.swing.plaf.metal.*; -import javax.swing.tree.*; - -import com.fr.design.designer.beans.*; +package com.fr.design.mainframe; + +import java.awt.Component; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.ArrayList; + +import javax.swing.DropMode; +import javax.swing.JPopupMenu; +import javax.swing.JTree; +import javax.swing.tree.TreePath; +import javax.swing.tree.TreeSelectionModel; + +import com.fr.design.constants.UIConstants; +import com.fr.design.designer.beans.AdapterBus; +import com.fr.design.designer.beans.ComponentAdapter; import com.fr.design.designer.beans.events.DesignerEditListener; import com.fr.design.designer.beans.events.DesignerEvent; -import com.fr.design.designer.creator.XCreator; -import com.fr.design.gui.icontainer.UIScrollPane; -import com.fr.design.mainframe.ComponentTree; -import com.sun.java.swing.plaf.motif.*; -import com.sun.java.swing.plaf.windows.*; - -/** - * 控件树下拉列表框 - */ -public class UITreeComboBox extends JComboBox{ - /** - * 显示用的树 - */ - private ComponentTree tree; - - public UITreeComboBox(ComponentTree componentTree){ - this.setTree(componentTree); - tree.getDesigner().addDesignerEditListener(new TreeComboBoxDesignerEditAdapter()); -// for(int i=0; iTitle: UITreeComboBoxRenderer

- *

Description: 树形结构而来的DefaultListCellRenderer

+ * 刷新 */ - class UITreeComboBoxRenderer extends DefaultListCellRenderer { - public Component getListCellRendererComponent(JList list, Object value, - int index, boolean isSelected, boolean cellHasFocus){ - if(tree != null && tree.getSelectedTreePath().length > 0){ - TreePath path = tree.getSelectedTreePath()[0]; - tree.setAndScrollSelectionPath(path); - Object node = path.getLastPathComponent(); - value = node; - TreeCellRenderer r = tree.getCellRenderer(); - JLabel lb = (JLabel)r.getTreeCellRendererComponent( - tree, value, isSelected, false, false, index, - cellHasFocus); - return lb; - } - return super.getListCellRendererComponent(list, value, index, - isSelected, cellHasFocus); - } + public void refreshUI() { + updateUI(); } - private class TreeComboBoxDesignerEditAdapter implements DesignerEditListener { - - @Override - public void fireCreatorModified(DesignerEvent evt) { - if (evt.getCreatorEventID() == DesignerEvent.CREATOR_SELECTED) { - TreePath[] paths = tree.getSelectedTreePath(); - if (tree != null && paths.length > 0) { - tree.setAndScrollSelectionPath(paths[0]); - setSelectedItem(paths[0]); - MenuSelectionManager.defaultManager().clearSelectedPath(); - } - - } else if (evt.getCreatorEventID() == DesignerEvent.CREATOR_PASTED) { - tree.refreshUI(); - TreePath[] paths = tree.getSelectedTreePath(); - if (tree != null && paths.length > 0) { - tree.setAndScrollSelectionPath(paths[0]); - setSelectedItem(paths[0]); - MenuSelectionManager.defaultManager().clearSelectedPath(); - } - } else if (evt.getCreatorEventID() == DesignerEvent.CREATOR_CUTED) { - tree.refreshUI(); - setSelectedItem(null); - MenuSelectionManager.defaultManager().clearSelectedPath(); - } else { - tree.refreshUI(); - repaint(); - } - } - @Override - public boolean equals(Object o) { - return o.getClass() == this.getClass(); + + public TreePath[] getSelectedTreePath() { + XCreator[] creators = designer.getSelectionModel().getSelection().getSelectedCreators(); + TreePath[] paths = new TreePath[creators.length]; + + for (int i = 0; i < paths.length; i++) { + paths[i] = buildTreePath(creators[i]); } + return paths; } - /** - * 测试 - */ -// public static void main(String args[]){ -// JFrame frame = new JFrame("UITreeComboBox"); -// final UITreeComboBox box = new UITreeComboBox(new ComponentTree(new FormDesigner())); -// box.setPreferredSize(new Dimension(300, 28)); -// frame.getContentPane().add(box); -// frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); -// frame.pack(); -// frame.setVisible(true); -// } -} - -/** - *

Title: UITreeComboBox

- *

Description: TreePopup

- */ -class TreePopup extends JPopupMenu implements ComboPopup{ - protected UITreeComboBox comboBox; - protected JScrollPane scrollPane; - protected MouseMotionListener mouseMotionListener; - protected MouseListener mouseListener; - public void popupMenu(MouseEvent e) { - TreePath path = comboBox.getTree().getSelectionPath(); - if (path == null) { - return; - } - Component component = (Component) path.getLastPathComponent(); - if (!(component instanceof XCreator)) { - return; + /** + *搜索指定名称的路径 + * + * @param text 名称 + * @return 树路径 + */ + public TreePath[] search(String text) { + if (StringUtils.isNotEmpty(text)) { + text = text.toLowerCase(); } - com.fr.design.designer.beans.ComponentAdapter adapter = AdapterBus.getComponentAdapter(comboBox.getTree().getDesigner(), (XCreator) component); - JPopupMenu menu = adapter.getContextPopupMenu(e); - menu.show(comboBox, e.getX(), e.getY()); - } + ArrayList searchList = new ArrayList(); + XLayoutContainer root = designer.getRootComponent(); + searchFormRoot(root, searchList, text); + TreePath[] paths = new TreePath[searchList.size()]; - public TreePopup(JComboBox comboBox){ - this.comboBox = (UITreeComboBox)comboBox; - setLayout(new BorderLayout()); - setLightWeightPopupEnabled(comboBox.isLightWeightPopupEnabled()); - JTree tree = this.comboBox.getTree(); - if(tree != null){ - scrollPane = new UIScrollPane(tree); - scrollPane.setBorder(BorderFactory.createEmptyBorder(0,2,0,0)); - add(scrollPane, BorderLayout.CENTER); + for (int i = 0; i < paths.length; i++) { + paths[i] = buildTreePath(searchList.get(i)); + } + if(paths.length > 0) { + setAndScrollSelectionPath(paths[0]); + } else { + setSelectionPath(); } + return paths; } - public void show() { - updatePopup(); - show(comboBox, 0, comboBox.getHeight()); - comboBox.getTree().requestFocus(); - } - public void hide(){ - setVisible(false); - comboBox.firePropertyChange("popupVisible", true, false); - } + private void setSelectionPath(){ - protected JList list = new JList(); - public JList getList(){ - return list; + /** + * 不让传null参数,所以只有自己定义 + */ + super.setSelectionPath(null); + clearSelection(); } - public MouseMotionListener getMouseMotionListener(){ - if(mouseMotionListener == null){ - mouseMotionListener = new MouseMotionAdapter(){}; + private void searchFormRoot(XLayoutContainer container, ArrayList searchList, String text) { + if (StringUtils.isEmpty(text)) { + return; + } + for (int i = 0, size = container.getXCreatorCount(); i < size; i++) { + XCreator creator = container.getXCreator(i); + String xName = creator.toData().getWidgetName(); + if (xName.toLowerCase().contains(text)) { + searchList.add(creator); + } + if (creator instanceof XLayoutContainer) { + searchFormRoot((XLayoutContainer) creator, searchList, text); + } } - return mouseMotionListener; - } - - public KeyListener getKeyListener(){ - return null; } - public void uninstallingUI(){} - /** - * Implementation of ComboPopup.getMouseListener(). - * - * @return a MouseListener or null - * @see ComboPopup#getMouseListener + * 触发 */ - public MouseListener getMouseListener(){ - if(mouseListener == null){ - mouseListener = new InvocationMouseHandler(); - } - return mouseListener; - } - - protected void togglePopup(){ - if(isVisible()){ - hide(); - } else{ - show(); - } - } - protected void updatePopup(){ - setPreferredSize(new Dimension(comboBox.getSize().width, 200)); - Object selectedObj = comboBox.getSelectedItem(); - if(selectedObj != null){ - TreePath tp = (TreePath)selectedObj; - ((UITreeComboBox)comboBox).getTree().setSelectionPath(tp); - } + public void fireTreeChanged() { + designer.refreshDesignerUI(); } - protected class InvocationMouseHandler extends MouseAdapter{ - public void mousePressed(MouseEvent e){ - if(!SwingUtilities.isLeftMouseButton(e) || !comboBox.isEnabled()){ - return; - } - if(comboBox.isEditable()){ - Component comp = comboBox.getEditor().getEditorComponent(); - if((!(comp instanceof JComponent)) || - ((JComponent)comp).isRequestFocusEnabled()){ - comp.requestFocus(); - } - } else if(comboBox.isRequestFocusEnabled()){ - comboBox.requestFocus(); + /** + * 刷新 + */ + public void refreshTreeRoot() { + model = new ComponentTreeModel(designer, designer.getTopContainer()); + setModel(model); + setDragEnabled(false); + setDropMode(DropMode.ON_OR_INSERT); + setTransferHandler(new TreeTransferHandler()); + repaint(); + } + + private TreePath buildTreePath(Component comp) { + ArrayList path = new ArrayList(); + Component parent = comp; + + while (parent != null) { + XCreator creator = (XCreator) parent; + path.add(0, parent); + if (creator != comp ) { + creator.notShowInComponentTree(path); } - togglePopup(); - } - - public void mouseClicked (MouseEvent e){ - if (e.isMetaDown()) { - popupMenu(e); - } else { - return; + //绝对布局作为body的时候不显示自适应布局父层 + if (((XCreator) parent).acceptType(XWAbsoluteBodyLayout.class) + && (parent.getParent() != null) + && ((XCreator)parent.getParent()).acceptType(XWFitLayout.class)){ + parent = parent.getParent().getParent(); + continue; } + parent = parent.getParent(); } + Object[] components = path.toArray(); + return new TreePath(components); } - - - -} +} \ No newline at end of file From b75e8f0422fa1e6ac2b36284d8760b6940291154 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 16 Nov 2016 16:15:26 +0800 Subject: [PATCH 038/139] rt --- .../fr/design/mainframe/FormWidgetDetailPane.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java index e74f9db1e8..2a490726fa 100644 --- a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java +++ b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java @@ -49,8 +49,6 @@ public class FormWidgetDetailPane extends FormDockView{ private JPanel reuWidgetPanel; private UIComboBox comboBox; private ElCaseBindInfo[] elCaseBindInfoList; - private UIButton downloadButton; - private UIButton refreshButton; private UIButton deleteButton; private UIButton resetButton; private JPanel editPanel; @@ -149,7 +147,7 @@ public class FormWidgetDetailPane extends FormDockView{ menutPanel.add(new UILabel(Inter.getLocText("FR-Designer_LocalWidget"), SwingConstants.HORIZONTAL), BorderLayout.WEST); - menutPanel.add(initButtonPane(), BorderLayout.EAST); + menutPanel.add(initEditButtonPane(), BorderLayout.EAST); menutPanel.add(new JPanel(), BorderLayout.CENTER); comboBox = new UIComboBox(getFormCategories()); comboBox.setPreferredSize(new Dimension(240, 30)); @@ -162,7 +160,7 @@ public class FormWidgetDetailPane extends FormDockView{ /** * 创建菜单栏按钮面板 */ - private JPanel initButtonPane() { + private JPanel initEditButtonPane() { editPanel = new JPanel(); editPanel.setLayout(FRGUIPaneFactory.createBorderLayout()); editPanel.add(createRefreshButton(), BorderLayout.WEST); @@ -217,7 +215,7 @@ public class FormWidgetDetailPane extends FormDockView{ * 创建刷新按钮 */ private UIButton createRefreshButton() { - refreshButton = new UIButton(); + UIButton refreshButton = new UIButton(); refreshButton.setIcon(BaseUtils.readIcon("/com/fr/design/form/images/refresh.png")); refreshButton.setToolTipText(Inter.getLocText("FR-Designer_Refresh")); refreshButton.set4ToolbarButton(); @@ -248,7 +246,7 @@ public class FormWidgetDetailPane extends FormDockView{ * 创建下载模板的按钮 */ private UIButton createDownloadButton() { - downloadButton = new UIButton(); + UIButton downloadButton = new UIButton(); downloadButton.setIcon(BaseUtils.readIcon("/com/fr/design/form/images/showmenu.png")); downloadButton.set4ToolbarButton(); downloadButton.setToolTipText(Inter.getLocText("FR-Designer_Download_Template")); @@ -350,7 +348,8 @@ public class FormWidgetDetailPane extends FormDockView{ menutPanel.add(initResetButtonPane(), BorderLayout.EAST); } else { menutPanel.remove(resetPanel); - menutPanel.add(initButtonPane(), BorderLayout.EAST); + menutPanel.add(initEditButtonPane(), BorderLayout.EAST); + ShareLoader.getLoader().resetRemovedModuleList(); } From 18ab59513070bab3deeb79fa5f468991d4f08c60 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 16 Nov 2016 16:17:47 +0800 Subject: [PATCH 039/139] rt --- .../src/com/fr/design/mainframe/widget/UITreeComboBox.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java b/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java index c3e1d7303c..0d7b224f64 100644 --- a/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java +++ b/designer_form/src/com/fr/design/mainframe/widget/UITreeComboBox.java @@ -209,7 +209,7 @@ class TreePopup extends JPopupMenu implements ComboPopup{ JTree tree = this.comboBox.getTree(); if(tree != null){ scrollPane = new UIScrollPane(tree); - scrollPane.setBorder(BorderFactory.createEmptyBorder(0,2,0,0)); + scrollPane.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 0)); add(scrollPane, BorderLayout.CENTER); } } From e1ea2ec04904dac22880d46dcba85aa34d91a1ce Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 16 Nov 2016 16:31:49 +0800 Subject: [PATCH 040/139] rt --- .../src/com/fr/design/mainframe/FormWidgetDetailPane.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java index 2a490726fa..cde0288012 100644 --- a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java +++ b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java @@ -19,6 +19,7 @@ import com.fr.design.utils.gui.GUICoreUtils; import com.fr.form.share.ShareConstants; import com.fr.form.share.ShareLoader; import com.fr.form.ui.ElCaseBindInfo; +import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.general.SiteCenter; import com.fr.stable.ArrayUtils; @@ -257,11 +258,9 @@ public class FormWidgetDetailPane extends FormDockView{ UIMenuItem downloadItem = new UIMenuItem(Inter.getLocText("FR-Designer_Download_Template"), BaseUtils.readIcon("/com/fr/design/form/images/download icon.png")); UIMenuItem installItem = new UIMenuItem(Inter.getLocText("FR-Designer_Install_Template"), BaseUtils.readIcon("/com/fr/design/form/images/install icon.png")); UIMenuItem deleteItem = new UIMenuItem(Inter.getLocText("FR-Designer_Delete_Template"), BaseUtils.readIcon("/com/fr/design/form/images/delete icon.png")); - menu.add(downloadItem); menu.add(installItem); menu.add(deleteItem); - downloadItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -291,7 +290,7 @@ public class FormWidgetDetailPane extends FormDockView{ JFileChooser fileChooser = new JFileChooser(); fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); fileChooser.setFileFilter(new FileNameExtensionFilter(".reu", "reu")); - int returnValue = fileChooser.showDialog(new JLabel(), Inter.getLocText("FR-Designer_Select")); + int returnValue = fileChooser.showDialog(new UILabel(), Inter.getLocText("FR-Designer_Select")); if (returnValue == JFileChooser.APPROVE_OPTION) { final File chosenFile = fileChooser.getSelectedFile(); installFromDiskZipFile(chosenFile); @@ -364,7 +363,7 @@ public class FormWidgetDetailPane extends FormDockView{ JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_OK")); } catch (IOException e) { JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_Error")); - e.printStackTrace(); + FRLogger.getLogger().error(e.getMessage(), e); } } From 8c911275b7e3a8df09716c5e7251ff951bd8b35c Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 16 Nov 2016 16:33:41 +0800 Subject: [PATCH 041/139] rt --- .../src/com/fr/design/mainframe/FormWidgetDetailPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java index cde0288012..e94974b61b 100644 --- a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java +++ b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java @@ -372,7 +372,7 @@ public class FormWidgetDetailPane extends FormDockView{ try { ShareLoader.getLoader().refreshModule(); } catch (Exception e) { - e.printStackTrace(); + FRLogger.getLogger().error(e.getMessage(), e); } } From e3b98e7ec1f6cb400cc37c6ffc761c6f7659a992 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 16 Nov 2016 16:50:55 +0800 Subject: [PATCH 042/139] rt --- .../src/com/fr/design/mainframe/FormWidgetDetailPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java index e94974b61b..c8f17031eb 100644 --- a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java +++ b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java @@ -272,7 +272,7 @@ public class FormWidgetDetailPane extends FormDockView{ try { Desktop.getDesktop().browse(new URI(url)); } catch (IOException exp) { - JOptionPane.showMessageDialog(null, Inter.getLocText("Set_default_browser")); + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer_Set_default_browser")); FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); } catch (URISyntaxException exp) { FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); From 10d591ada7f22b58b7588da6643fb1a747d554cd Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 16 Nov 2016 16:59:08 +0800 Subject: [PATCH 043/139] rt --- .../src/com/fr/design/mainframe/ComponentTree.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/ComponentTree.java b/designer_form/src/com/fr/design/mainframe/ComponentTree.java index a3452f602f..d439629d59 100644 --- a/designer_form/src/com/fr/design/mainframe/ComponentTree.java +++ b/designer_form/src/com/fr/design/mainframe/ComponentTree.java @@ -241,12 +241,14 @@ public class ComponentTree extends JTree { creator.notShowInComponentTree(path); } //绝对布局作为body的时候不显示自适应布局父层 - if (((XCreator) parent).acceptType(XWAbsoluteBodyLayout.class) - && (parent.getParent() != null) - && ((XCreator)parent.getParent()).acceptType(XWFitLayout.class)){ - parent = parent.getParent().getParent(); - continue; + if (((XCreator) parent).acceptType(XWAbsoluteBodyLayout.class)) { + if ((parent.getParent() != null) + && ((XCreator)parent.getParent()).acceptType(XWFitLayout.class)){ + parent = parent.getParent().getParent(); + continue; + } } + parent = parent.getParent(); } Object[] components = path.toArray(); From 0aa3db1c0f10260690a4fa89454d170151395f72 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 16 Nov 2016 17:17:29 +0800 Subject: [PATCH 044/139] rt --- .../mainframe/FormWidgetDetailPane.java | 112 +++++++++--------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java index c8f17031eb..a9f4b6bf71 100644 --- a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java +++ b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java @@ -254,69 +254,69 @@ public class FormWidgetDetailPane extends FormDockView{ downloadButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - UIPopupMenu menu = new UIPopupMenu(); - UIMenuItem downloadItem = new UIMenuItem(Inter.getLocText("FR-Designer_Download_Template"), BaseUtils.readIcon("/com/fr/design/form/images/download icon.png")); - UIMenuItem installItem = new UIMenuItem(Inter.getLocText("FR-Designer_Install_Template"), BaseUtils.readIcon("/com/fr/design/form/images/install icon.png")); - UIMenuItem deleteItem = new UIMenuItem(Inter.getLocText("FR-Designer_Delete_Template"), BaseUtils.readIcon("/com/fr/design/form/images/delete icon.png")); - menu.add(downloadItem); - menu.add(installItem); - menu.add(deleteItem); - downloadItem.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - String url = SiteCenter.getInstance().acquireUrlByKind("reuse.url"); - if (StringUtils.isEmpty(url)) { - FRContext.getLogger().info("The URL is empty!"); - return; - } - try { - Desktop.getDesktop().browse(new URI(url)); - } catch (IOException exp) { - JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer_Set_default_browser")); - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); - } catch (URISyntaxException exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); - } catch (Exception exp) { - FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); - FRContext.getLogger().error("Can not open the browser for URL: " + url); - } - - } - }); - - installItem.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - JFileChooser fileChooser = new JFileChooser(); - fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); - fileChooser.setFileFilter(new FileNameExtensionFilter(".reu", "reu")); - int returnValue = fileChooser.showDialog(new UILabel(), Inter.getLocText("FR-Designer_Select")); - if (returnValue == JFileChooser.APPROVE_OPTION) { - final File chosenFile = fileChooser.getSelectedFile(); - installFromDiskZipFile(chosenFile); - - } - } - }); - - deleteItem.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - replaceButtonPanel(true); - deleteFromDiskZipFile(); - } - }); - - GUICoreUtils.showPopupMenu(menu, tabbedPane, tabbedPane.getX() + OFFSET_X, OFFSET_Y); - + initPopMenu(); } }); return downloadButton; } + /** + * 初始化下拉面板 + */ + private void initPopMenu() { + UIPopupMenu menu = new UIPopupMenu(); + UIMenuItem downloadItem = new UIMenuItem(Inter.getLocText("FR-Designer_Download_Template"), BaseUtils.readIcon("/com/fr/design/form/images/download icon.png")); + UIMenuItem installItem = new UIMenuItem(Inter.getLocText("FR-Designer_Install_Template"), BaseUtils.readIcon("/com/fr/design/form/images/install icon.png")); + UIMenuItem deleteItem = new UIMenuItem(Inter.getLocText("FR-Designer_Delete_Template"), BaseUtils.readIcon("/com/fr/design/form/images/delete icon.png")); + menu.add(downloadItem); + menu.add(installItem); + menu.add(deleteItem); + downloadItem.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + String url = SiteCenter.getInstance().acquireUrlByKind("reuse.url"); + if (StringUtils.isEmpty(url)) { + FRContext.getLogger().info("The URL is empty!"); + return; + } + try { + Desktop.getDesktop().browse(new URI(url)); + } catch (IOException exp) { + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer_Set_default_browser")); + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + } catch (URISyntaxException exp) { + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + } catch (Exception exp) { + FRContext.getLogger().errorWithServerLevel(exp.getMessage(), exp); + FRContext.getLogger().error("Can not open the browser for URL: " + url); + } + } + }); + installItem.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + JFileChooser fileChooser = new JFileChooser(); + fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); + fileChooser.setFileFilter(new FileNameExtensionFilter(".reu", "reu")); + int returnValue = fileChooser.showDialog(new UILabel(), Inter.getLocText("FR-Designer_Select")); + if (returnValue == JFileChooser.APPROVE_OPTION) { + final File chosenFile = fileChooser.getSelectedFile(); + installFromDiskZipFile(chosenFile); + } + } + }); + deleteItem.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + replaceButtonPanel(true); + deleteFromDiskZipFile(); + } + }); + GUICoreUtils.showPopupMenu(menu, tabbedPane, tabbedPane.getX() + OFFSET_X, OFFSET_Y); + } + private void deleteFromDiskZipFile() { deleteButton = new UIButton(Inter.getLocText("FR-Designer-CommitTab_Remove")); - deleteButton.setBackground(Color.red); deleteButton.repaint(); deleteButton.setPreferredSize(new Dimension(240, 40)); From 8eaf712d94e32bcf2efc292fcdaf2fbb1f8d2631 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 16 Nov 2016 17:38:43 +0800 Subject: [PATCH 045/139] rt --- .../fr/design/mainframe/ComponentTree.java | 37 ------------------- 1 file changed, 37 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/ComponentTree.java b/designer_form/src/com/fr/design/mainframe/ComponentTree.java index d439629d59..4d58c4887d 100644 --- a/designer_form/src/com/fr/design/mainframe/ComponentTree.java +++ b/designer_form/src/com/fr/design/mainframe/ComponentTree.java @@ -37,30 +37,6 @@ public class ComponentTree extends JTree { this.setTransferHandler(new TreeTransferHandler()); this.refreshTreeRoot(); addTreeSelectionListener(designer); - -// this.addMouseListener(new MouseAdapter() { -// -// @Override -// public void mouseClicked(MouseEvent e) { -// if (e.isPopupTrigger()) { -// popupMenu(e); -// } -// } -// -// @Override -// public void mousePressed(MouseEvent e) { -// if (e.isPopupTrigger()) { -// popupMenu(e); -// } -// } -// -// @Override -// public void mouseReleased(MouseEvent e) { -// if (e.isPopupTrigger()) { -// popupMenu(e); -// } -// } -// }); setEditable(true); } @@ -121,19 +97,6 @@ public class ComponentTree extends JTree { scrollPathToVisible(treepath); } -// private void popupMenu(MouseEvent e) { -// TreePath path = this.getSelectionPath(); -// if (path == null) { -// return; -// } -// Component component = (Component) path.getLastPathComponent(); -// if (!(component instanceof XCreator)) { -// return; -// } -// ComponentAdapter adapter = AdapterBus.getComponentAdapter(designer, (XCreator) component); -// JPopupMenu menu = adapter.getContextPopupMenu(e); -// menu.show(this, e.getX(), e.getY()); -// } /** * 刷新 From 52580743f16fddbd3a913a551f2ef6019aa2c5f5 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 16 Nov 2016 17:52:54 +0800 Subject: [PATCH 046/139] rt --- .../parameter/ParameterToolBarPane.java | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java b/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java index d495e9c06a..0b23f290ae 100644 --- a/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java +++ b/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java @@ -29,16 +29,17 @@ public class ParameterToolBarPane extends BasicBeanPane { private UIButton addAll; private UILabel label; private int breakid; - + private static final int GAP_H = 4; private static final int GAP_V = 6; private static final int GAP_BV = 4; - + private static final int WIDTH = 225; + private static final int L_H = 18; public ParameterToolBarPane() { this.setLayout(new FlowParameterPaneLayout()); - + label = new UILabel() { private static final long serialVersionUID = 1L; @@ -51,7 +52,7 @@ public class ParameterToolBarPane extends BasicBeanPane { label.setHorizontalAlignment(SwingConstants.LEFT); label.setBorder(BorderFactory.createEmptyBorder(0, 4, 0, 0)); this.add(label); - + addAll = new UIButton(Inter.getLocText("Add-all")); this.add(addAll); @@ -61,7 +62,7 @@ public class ParameterToolBarPane extends BasicBeanPane { protected String title4PopupWindow() { return null; } - + public Parameter getTargetParameter(UIButton button) { int index = parameterSelectedLabellist.indexOf(button); if(index < 0 || index > parameterList.length - 1) { @@ -74,9 +75,9 @@ public class ParameterToolBarPane extends BasicBeanPane { public void populateBean(Parameter[] parameterArray) { parameterSelectedLabellist.clear(); this.removeAll(); - + this.add(label); - + if (parameterArray.length == 0) { this.setVisible(false); this.repaint(); @@ -84,14 +85,14 @@ public class ParameterToolBarPane extends BasicBeanPane { } else { this.setVisible(true); } - + parameterList = parameterArray; for (int i = 0; i < parameterList.length; i++) { UIButton parameterSelectedLabel = new UIButton(parameterList[i].getName()); parameterSelectedLabellist.add(parameterSelectedLabel); this.add(parameterSelectedLabel); } - + for(UIButton parameterSelectedLabel : parameterSelectedLabellist) { parameterSelectedLabel.addMouseListener(paraMouseListner); } @@ -128,9 +129,9 @@ public class ParameterToolBarPane extends BasicBeanPane { public Dimension preferredLayoutSize(Container parent) { int w = parent.getWidth(); - + layoutContainer(parent); - + int h= ((parameterSelectedLabellist.size() == 0) ? L_H : breakid * (20 + GAP_V) + GAP_BV + L_H + GAP_H + addAll.getPreferredSize().height); return new Dimension(w, h); } @@ -140,12 +141,12 @@ public class ParameterToolBarPane extends BasicBeanPane { } public void layoutContainer(Container parent) { - int width = parent.getWidth(); + int width = parent.getWidth() == 0 ? WIDTH : parent.getWidth(); int x = 0; int y = L_H + GAP_H; - + label.setBounds(0, 0, width, L_H); - + breakid = 1; for (UIButton tab : parameterSelectedLabellist) { Dimension dim = tab.getPreferredSize(); @@ -154,9 +155,9 @@ public class ParameterToolBarPane extends BasicBeanPane { x = 0; y += (dim.height + GAP_V); } - + tab.setBounds(x, y, dim.width, dim.height); - + x += (dim.width + GAP_H); } addAll.setBounds(0, y + GAP_V+ 20, width, addAll.getPreferredSize().height); From d5219a2d82c4915722ddb3aab0fe79762c1f87f4 Mon Sep 17 00:00:00 2001 From: vito Date: Wed, 16 Nov 2016 17:56:23 +0800 Subject: [PATCH 047/139] =?UTF-8?q?REPORT-854=20=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E8=B4=A8=E9=87=8F3/3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/env/RemoteEnv.java | 1 + 1 file changed, 1 insertion(+) diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 6aff74d7ca..31b211e670 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -1537,6 +1537,7 @@ public class RemoteEnv implements Env { para.put("op", "fr_remote_design"); para.put("cmd", "design_save_resource"); para.put("resource", mgr.fileName()); + para.put("class_name", mgr.getClass().getName()); para.put("current_uid", this.createUserID()); para.put("currentUsername", this.getUser()); From 2d9ab1ff073746dd09f910d8e15ef07c48cf4605 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 16 Nov 2016 18:07:44 +0800 Subject: [PATCH 048/139] rt --- .../src/com/fr/design/parameter/ParameterToolBarPane.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java b/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java index 0b23f290ae..f7a6eec94c 100644 --- a/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java +++ b/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java @@ -48,12 +48,12 @@ public class ParameterToolBarPane extends BasicBeanPane { return new Dimension(super.getPreferredSize().width, 18); } }; - label.setText(Inter.getLocText("Following_parameters_are_not_generated")+":"); + label.setText(Inter.getLocText("FR-Following_parameters_are_not_generated")+":"); label.setHorizontalAlignment(SwingConstants.LEFT); label.setBorder(BorderFactory.createEmptyBorder(0, 4, 0, 0)); this.add(label); - addAll = new UIButton(Inter.getLocText("Add-all")); + addAll = new UIButton(Inter.getLocText("FR-Designer_Add_all")); this.add(addAll); } From 347bea91e6781da77d2f6fb36c2d828a1d91120f Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 16 Nov 2016 18:55:49 +0800 Subject: [PATCH 049/139] rt --- .../com/fr/design/parameter/ParameterToolBarPane.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java b/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java index f7a6eec94c..2e97da5a73 100644 --- a/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java +++ b/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java @@ -33,6 +33,7 @@ public class ParameterToolBarPane extends BasicBeanPane { private static final int GAP_H = 4; private static final int GAP_V = 6; private static final int GAP_BV = 4; + private static final int BUTTON_HEIGHT = 20; private static final int WIDTH = 225; private static final int L_H = 18; @@ -48,12 +49,12 @@ public class ParameterToolBarPane extends BasicBeanPane { return new Dimension(super.getPreferredSize().width, 18); } }; - label.setText(Inter.getLocText("FR-Following_parameters_are_not_generated")+":"); + label.setText(Inter.getLocText("Following_parameters_are_not_generated")+":"); label.setHorizontalAlignment(SwingConstants.LEFT); label.setBorder(BorderFactory.createEmptyBorder(0, 4, 0, 0)); this.add(label); - addAll = new UIButton(Inter.getLocText("FR-Designer_Add_all")); + addAll = new UIButton(Inter.getLocText("Add-all")); this.add(addAll); } @@ -132,7 +133,7 @@ public class ParameterToolBarPane extends BasicBeanPane { layoutContainer(parent); - int h= ((parameterSelectedLabellist.size() == 0) ? L_H : breakid * (20 + GAP_V) + GAP_BV + L_H + GAP_H + addAll.getPreferredSize().height); + int h= ((parameterSelectedLabellist.size() == 0) ? L_H : breakid * (BUTTON_HEIGHT + GAP_V) + GAP_BV + L_H + GAP_H + addAll.getPreferredSize().height); return new Dimension(w, h); } @@ -160,7 +161,7 @@ public class ParameterToolBarPane extends BasicBeanPane { x += (dim.width + GAP_H); } - addAll.setBounds(0, y + GAP_V+ 20, width, addAll.getPreferredSize().height); + addAll.setBounds(0, y + GAP_V + BUTTON_HEIGHT, width, addAll.getPreferredSize().height); } } From e36d08e8b2b334aa24acbe5204cd5e941ad20b1d Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Wed, 16 Nov 2016 18:57:27 +0800 Subject: [PATCH 050/139] rt --- .../src/com/fr/design/parameter/ParameterToolBarPane.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java b/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java index 2e97da5a73..aa7c11660a 100644 --- a/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java +++ b/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java @@ -49,12 +49,12 @@ public class ParameterToolBarPane extends BasicBeanPane { return new Dimension(super.getPreferredSize().width, 18); } }; - label.setText(Inter.getLocText("Following_parameters_are_not_generated")+":"); + label.setText(Inter.getLocText("FR-Following_parameters_are_not_generated")+":"); label.setHorizontalAlignment(SwingConstants.LEFT); label.setBorder(BorderFactory.createEmptyBorder(0, 4, 0, 0)); this.add(label); - addAll = new UIButton(Inter.getLocText("Add-all")); + addAll = new UIButton(Inter.getLocText("FR-Designer_Add_all")); this.add(addAll); } From d352f856a8df17611874c8e5ed43e193b22a77c1 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Thu, 17 Nov 2016 09:52:44 +0800 Subject: [PATCH 051/139] rt --- .../src/com/fr/design/mainframe/FormWidgetDetailPane.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java index a9f4b6bf71..792f17dc34 100644 --- a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java +++ b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java @@ -133,6 +133,7 @@ public class FormWidgetDetailPane extends FormDockView{ * 初始化组件共享和复用面板 */ private void initReuWidgetPanel() { + elCaseBindInfoList = ShareLoader.getLoader().getAllBindInfoList(); downPane = new UIScrollPane(new ShareWidgetPane(elCaseBindInfoList, false)); reuWidgetPanel.add(downPane); } @@ -331,6 +332,7 @@ public class FormWidgetDetailPane extends FormDockView{ JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_Removed_Successful")); refreshDownPanel(false); replaceButtonPanel(false); + comboBox.setSelectedIndex(0); } else { JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_Removed_Failed")); } @@ -360,6 +362,7 @@ public class FormWidgetDetailPane extends FormDockView{ refreshShareMoudule(); elCaseBindInfoList = ShareLoader.getLoader().getAllBindInfoList(); refreshDownPanel(false); + comboBox.setSelectedIndex(0); JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_OK")); } catch (IOException e) { JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_Error")); From af70499a81341460a7593c8dd971a3c3464995fa Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Thu, 17 Nov 2016 10:07:59 +0800 Subject: [PATCH 052/139] rt --- .../src/com/fr/design/mainframe/FormWidgetDetailPane.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java index 792f17dc34..1eb8f6bcfa 100644 --- a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java +++ b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java @@ -58,6 +58,8 @@ public class FormWidgetDetailPane extends FormDockView{ private static final int OFFSET_X = 140; private static final int OFFSET_Y = 26; private SwingWorker sw; + //组件面板是否可以编辑 + private boolean isEdit; public static FormWidgetDetailPane getInstance() { if (HOLDER.singleton == null) { @@ -207,7 +209,7 @@ public class FormWidgetDetailPane extends FormDockView{ String filterName = comboBox.getSelectedItem().toString(); elCaseBindInfoList = ShareLoader.getLoader().getFilterBindInfoList(filterName); } - refreshDownPanel(false); + refreshDownPanel(isEdit); } }); @@ -344,6 +346,7 @@ public class FormWidgetDetailPane extends FormDockView{ } private void replaceButtonPanel(boolean isEdit) { + this.isEdit = isEdit; if (isEdit) { menutPanel.remove(editPanel); menutPanel.add(initResetButtonPane(), BorderLayout.EAST); From 1d3dfbebed7c5552c56aa341d03bebd2aa2cb80a Mon Sep 17 00:00:00 2001 From: vito Date: Thu, 17 Nov 2016 10:20:40 +0800 Subject: [PATCH 053/139] =?UTF-8?q?REPORT-817=20=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E5=AD=97=E4=BD=93=E9=A2=9C=E8=89=B2=E6=B2=A1?= =?UTF-8?q?=E6=B3=95=E9=80=89=E6=8B=A9=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/style/AbstractPopBox.java | 335 +++++++++--------- 1 file changed, 167 insertions(+), 168 deletions(-) diff --git a/designer_base/src/com/fr/design/style/AbstractPopBox.java b/designer_base/src/com/fr/design/style/AbstractPopBox.java index 4630c51ae7..6e8d8a2125 100644 --- a/designer_base/src/com/fr/design/style/AbstractPopBox.java +++ b/designer_base/src/com/fr/design/style/AbstractPopBox.java @@ -9,6 +9,7 @@ import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.*; +import java.awt.event.AWTEventListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; @@ -21,212 +22,210 @@ import java.util.List; */ public abstract class AbstractPopBox extends JPanel { - protected BackgroundJComponent displayComponent; + protected BackgroundJComponent displayComponent; - private JWindow selectPopupWindow; - private boolean isWindowEventInit = false; + private JWindow selectPopupWindow; + private boolean isWindowEventInit = false; private static int GAP = 2; private static int GAP2 = 20; - private List changeListenerList = new ArrayList(); - - MouseAdapter mouseListener = new MouseAdapter() { - public void mousePressed(MouseEvent evt) { - showPopupMenu(); - } - - public void mouseExited(MouseEvent evt) { - int x= evt.getXOnScreen();//mac和widows的计算结果还不一样 - int y = evt.getYOnScreen(); - if (selectPopupWindow != null) { - Rectangle rectangle = selectPopupWindow.getBounds(); - boolean b1 = x < rectangle.x - GAP || x > rectangle.x + rectangle.width + GAP; - boolean b2 = y < rectangle.y - GAP || y >rectangle.y + rectangle.height + GAP; - if(b1 || b2) { - hidePopupMenu(); + private List changeListenerList = new ArrayList(); + + MouseAdapter mouseListener = new MouseAdapter() { + public void mousePressed(MouseEvent evt) { + showPopupMenu(); + } + + + }; + + AWTEventListener awt = new AWTEventListener() { + public void eventDispatched(AWTEvent event) { + if (event instanceof MouseEvent) { + MouseEvent evt = (MouseEvent) event; + if (evt.getClickCount() > 0) { + mouseClick(evt); } -// if (OperatingSystem.isWindows()) { -// -// }else{ -// Point pp = SwingUtilities.convertPoint(evt.getComponent(), evt.getPoint(), selectPopupWindow.getParent()); -// Rectangle rectangle = selectPopupWindow.getBounds(); -// if (pp.getY() < rectangle.getY() || pp.getY() > rectangle.getY() + rectangle.getHeight()) { -// //hidePopupMenu(); -// } -// } - } - } - }; - - private void showPopupMenu() { - if (selectPopupWindow != null && selectPopupWindow.isVisible()) { - hidePopupMenu(); - return; - } - - if (!this.isEnabled()) { - return; - } - - selectPopupWindow = this.getControlWindow(); - - Point convertPoint = new Point(0, 0); - - // e: 将点(0,0)从ColorSelectionPane的坐标系统转换到屏幕坐标. - SwingUtilities.convertPointToScreen(convertPoint, this); - int y = convertPoint.y + this.getSize().height; - int x = convertPoint.x; - int h = y + selectPopupWindow.getHeight(); - int width = x + selectPopupWindow.getWidth(); - Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); - if (h > screenSize.height) { - y = y - selectPopupWindow.getHeight() - GAP2;// 超过屏幕高度了 - } - - if(width > screenSize.width) { - x = screenSize.width - selectPopupWindow.getWidth(); - } - selectPopupWindow.setLocation(x, y); - - selectPopupWindow.setVisible(true); - - //wei : 为了点击别的地方下拉颜色窗口消失 - MouseAdapter parentMouseListener = new MouseAdapter() { - public void mousePressed(MouseEvent evt) { - mouseClick(evt); - } - }; - if (!this.isWindowEventInit && SwingUtilities.getAncestorOfClass(GradientBackgroundPane.class, this) != null) { - SwingUtilities.getAncestorOfClass(GradientBackgroundPane.class, this).addMouseListener(parentMouseListener); - this.isWindowEventInit = true; - } - } - - private void mouseClick(MouseEvent evt) { - int x = evt.getLocationOnScreen().x; - int y = evt.getLocationOnScreen().y; - Rectangle rectangle = this.getControlWindow().getBounds(); + } + } + }; + + private void showPopupMenu() { + if (selectPopupWindow != null && selectPopupWindow.isVisible()) { + hidePopupMenu(); + return; + } + + if (!this.isEnabled()) { + return; + } + Toolkit.getDefaultToolkit().addAWTEventListener(awt, AWTEvent.MOUSE_EVENT_MASK); + + selectPopupWindow = this.getControlWindow(); + + Point convertPoint = new Point(0, 0); + + // e: 将点(0,0)从ColorSelectionPane的坐标系统转换到屏幕坐标. + SwingUtilities.convertPointToScreen(convertPoint, this); + int y = convertPoint.y + this.getSize().height; + int x = convertPoint.x; + int h = y + selectPopupWindow.getHeight(); + int width = x + selectPopupWindow.getWidth(); + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + if (h > screenSize.height) { + y = y - selectPopupWindow.getHeight() - GAP2;// 超过屏幕高度了 + } + + if (width > screenSize.width) { + x = screenSize.width - selectPopupWindow.getWidth(); + } + selectPopupWindow.setLocation(x, y); + + selectPopupWindow.setVisible(true); + + //wei : 为了点击别的地方下拉颜色窗口消失 + MouseAdapter parentMouseListener = new MouseAdapter() { + public void mousePressed(MouseEvent evt) { + mouseClick(evt); + } + }; + if (!this.isWindowEventInit && SwingUtilities.getAncestorOfClass(GradientBackgroundPane.class, this) != null) { + SwingUtilities.getAncestorOfClass(GradientBackgroundPane.class, this).addMouseListener(parentMouseListener); + this.isWindowEventInit = true; + } + } + + private void mouseClick(MouseEvent evt) { + int x = evt.getLocationOnScreen().x; + int y = evt.getLocationOnScreen().y; + Rectangle popBoxRect = AbstractPopBox.this.getBounds(); + Rectangle rectangle = this.getControlWindow().getBounds(); boolean b1 = x < rectangle.x || x > rectangle.x + rectangle.width; - boolean b2 = y < rectangle.y || y > rectangle.y + rectangle.height; - if (b1 || b2) { - this.hidePopupMenu(); - } - } - - protected void hidePopupMenu() { - if (selectPopupWindow != null) { - selectPopupWindow.setVisible(false); - } - - selectPopupWindow = null; - } - - protected JWindow getControlWindow() { - //find parent. - if (this.selectPopupWindow == null) { - Window parentWindow = SwingUtilities.windowForComponent(this); - if (parentWindow != null) { - this.selectPopupWindow = new SelectControlWindow(parentWindow); - } - - selectPopupWindow.addMouseListener(new MouseAdapter() { - public void mouseExited(MouseEvent evt) { - int x = evt.getLocationOnScreen().x; - int y = evt.getLocationOnScreen().y; - - if (selectPopupWindow != null) { - double desValue = 2; - Rectangle rectangle = selectPopupWindow.getBounds(); + boolean b2 = y < rectangle.y - popBoxRect.height || y > rectangle.y + rectangle.height; + if (b1 || b2) { + this.hidePopupMenu(); + } + } + + protected void hidePopupMenu() { + if (selectPopupWindow != null) { + selectPopupWindow.setVisible(false); + } + + selectPopupWindow = null; + Toolkit.getDefaultToolkit().removeAWTEventListener(awt); + } + + protected JWindow getControlWindow() { + //find parent. + if (this.selectPopupWindow == null) { + Window parentWindow = SwingUtilities.windowForComponent(this); + if (parentWindow != null) { + this.selectPopupWindow = new SelectControlWindow(parentWindow); + } + + selectPopupWindow.addMouseListener(new MouseAdapter() { + public void mouseExited(MouseEvent evt) { + int x = evt.getLocationOnScreen().x; + int y = evt.getLocationOnScreen().y; + + if (selectPopupWindow != null) { + double desValue = 2; + Rectangle rectangle = selectPopupWindow.getBounds(); boolean b1 = x < rectangle.x + desValue || x >= rectangle.x + rectangle.width - desValue; - boolean b2 = y > rectangle.y + rectangle.height - desValue;//避免了鼠标下移刚进入selectPopupWindow的过程中弹出框隐藏,上移移出后由AbstractPopBox的mouseListener处理 + boolean b2 = y > rectangle.y + rectangle.height - desValue;//避免了鼠标下移刚进入selectPopupWindow的过程中弹出框隐藏,上移移出后由AbstractPopBox的mouseListener处理 if (b1 || b2) { - hidePopupMenu(); - } - } - } - }); - } + hidePopupMenu(); + } + } + } + }); + } - return selectPopupWindow; - } + return selectPopupWindow; + } /** * 添加事件 + * * @param changeListener 事件 */ - public void addSelectChangeListener(ChangeListener changeListener) { - this.changeListenerList.add(changeListener); - } + public void addSelectChangeListener(ChangeListener changeListener) { + this.changeListenerList.add(changeListener); + } /** * 删除事件 + * * @param changeListener 事件 */ - public void removeSelectChangeListener(ChangeListener changeListener) { - this.changeListenerList.remove(changeListener); - } + public void removeSelectChangeListener(ChangeListener changeListener) { + this.changeListenerList.remove(changeListener); + } /** * 响应事件 */ - public void fireChangeListener() { - if (!changeListenerList.isEmpty()) { - ChangeEvent evt = new ChangeEvent(this); - for (int i = 0; i < changeListenerList.size(); i++) { - this.changeListenerList.get(i).stateChanged(evt); - } - } - } + public void fireChangeListener() { + if (!changeListenerList.isEmpty()) { + ChangeEvent evt = new ChangeEvent(this); + for (int i = 0; i < changeListenerList.size(); i++) { + this.changeListenerList.get(i).stateChanged(evt); + } + } + } /** * 待说明 + * * @param background 背景 */ - public void fireDisplayComponent(Background background) { - if (displayComponent != null) { - displayComponent.setSelfBackground(background); - } - fireChangeListener(); - this.repaint(); - } + public void fireDisplayComponent(Background background) { + if (displayComponent != null) { + displayComponent.setSelfBackground(background); + } + fireChangeListener(); + this.repaint(); + } /** * 初始化弹出框的面板 + * * @param preWidth 宽度 * @return 弹出面板 */ - public abstract JPanel initWindowPane(double preWidth); + public abstract JPanel initWindowPane(double preWidth); - private class SelectControlWindow extends JWindow { - private static final long serialVersionUID = -5776589767069105911L; + private class SelectControlWindow extends JWindow { + private static final long serialVersionUID = -5776589767069105911L; - public SelectControlWindow(Window paranet) { - super(paranet); - this.initComponents(); - } + public SelectControlWindow(Window paranet) { + super(paranet); + this.initComponents(); + } - public void initComponents() { - JPanel defaultPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - this.setContentPane(defaultPane); + public void initComponents() { + JPanel defaultPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + this.setContentPane(defaultPane); // defaultPane.setBorder(UIManager.getBorder("PopupMenu.border")); - if (displayComponent != null) { - defaultPane.add(initWindowPane(displayComponent.getPreferredSize().getWidth())); - } else { - defaultPane.add(initWindowPane(20)); - } - this.pack(); - } - - @Override - public void setVisible(boolean b) { - super.setVisible(b); - AbstractPopBox.this.repaint(); - } - } - - protected boolean isPopupVisible() { - return selectPopupWindow == null ? false : selectPopupWindow.isVisible(); - } + if (displayComponent != null) { + defaultPane.add(initWindowPane(displayComponent.getPreferredSize().getWidth())); + } else { + defaultPane.add(initWindowPane(20)); + } + this.pack(); + } + + @Override + public void setVisible(boolean b) { + super.setVisible(b); + AbstractPopBox.this.repaint(); + } + } + + protected boolean isPopupVisible() { + return selectPopupWindow == null ? false : selectPopupWindow.isVisible(); + } } \ No newline at end of file From 084cf12d85b3b8826af2b851312c8eb8a85d5153 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Thu, 17 Nov 2016 10:21:19 +0800 Subject: [PATCH 054/139] rt --- .../src/com/fr/design/mainframe/FormWidgetDetailPane.java | 1 + 1 file changed, 1 insertion(+) diff --git a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java index 1eb8f6bcfa..73ac21246f 100644 --- a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java +++ b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java @@ -202,6 +202,7 @@ public class FormWidgetDetailPane extends FormDockView{ comboBox.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { + ShareLoader.getLoader().resetRemovedModuleList(); int filterIndex = comboBox.getSelectedIndex(); if (filterIndex == 0) { elCaseBindInfoList = ShareLoader.getLoader().getAllBindInfoList(); From 76a69cd25e8047629d15d424bc5c20654f22998b Mon Sep 17 00:00:00 2001 From: fr_shine Date: Thu, 17 Nov 2016 10:46:12 +0800 Subject: [PATCH 055/139] =?UTF-8?q?populate=E4=B9=8B=E5=89=8Dinit=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF=E8=AE=A9=E7=BB=84=E4=BB=B6=E6=B2=A1=E6=9C=89listener?= =?UTF-8?q?=E3=80=82typepane=E5=85=88=E5=92=8Cstylepane=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=EF=BC=8Cdev=E9=87=8C=E9=9D=A2=E6=88=91?= =?UTF-8?q?=E4=B8=8Dinit=E9=9D=A2=E6=9D=BF=EF=BC=8C=E5=8F=AA=E6=98=AF?= =?UTF-8?q?=E6=8A=8A=E6=89=80=E6=9C=89listener=20remove=E6=8E=89=EF=BC=8C?= =?UTF-8?q?=E8=BF=99=E6=A0=B7=E6=AF=94=E8=BE=83=E5=90=88=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/mainframe/chart/gui/ChartTypePane.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java index eab0010eae..964b5bc974 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java @@ -300,8 +300,12 @@ public class ChartTypePane extends AbstractChartAttrPane{ */ public void populate(ChartCollection collection) { Chart chart = collection.getSelectedChart(); + this.remove(leftContentPane); + initContentPane(); + this.removeAttributeChangeListener(); buttonPane.populateBean(collection); chartTypePane.populateBean(chart); + this.initAllListeners(); } /** From 48579a32fdb7bc63817f14d54fbb3342a235e936 Mon Sep 17 00:00:00 2001 From: fortyone <1151438686@qq.com> Date: Thu, 17 Nov 2016 11:34:05 +0800 Subject: [PATCH 056/139] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E5=9B=BD=E9=99=85=E5=8C=96=E4=B8=AD=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/.classpath | 96 ++++++++++--------- designer_base/.classpath | 55 ++++++++++- .../connect/ConnectionTableProcedurePane.java | 84 +++++++++------- .../design/formula/FunctionManagerPane.java | 2 +- .../design/hyperlink/WebHyperNorthPane.java | 4 +- .../mainframe/toolbar/ToolBarMenuDock.java | 2 +- designer_chart/.classpath | 49 +++++++--- .../src/com/fr/start/Designer4Chart.java | 4 +- designer_form/.classpath | 44 +++++++-- 9 files changed, 233 insertions(+), 107 deletions(-) diff --git a/designer/.classpath b/designer/.classpath index f46ca27d3b..5d73feddcc 100644 --- a/designer/.classpath +++ b/designer/.classpath @@ -1,52 +1,62 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/designer_base/.classpath b/designer_base/.classpath index cc6f823ac8..0c04bc6c6c 100644 --- a/designer_base/.classpath +++ b/designer_base/.classpath @@ -3,8 +3,57 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/designer_base/src/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java b/designer_base/src/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java index 44b71999ba..096f8a411a 100644 --- a/designer_base/src/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java +++ b/designer_base/src/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java @@ -11,6 +11,7 @@ import com.fr.design.gui.itextfield.UITextField; import com.fr.design.gui.ilist.TableViewList; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.dialog.BasicPane; +import com.fr.general.GeneralContext; import com.fr.general.Inter; import com.fr.stable.ArrayUtils; @@ -28,7 +29,7 @@ import java.awt.event.*; */ public class ConnectionTableProcedurePane extends BasicPane { private static int WIDTH = 155; - private ConnectionComboBoxPanel connectionComboBox; + private ConnectionComboBoxPanel connectionComboBox; private UICheckBox tableCheckBox; private UICheckBox viewCheckBox; private UITextField searchField; @@ -37,16 +38,16 @@ public class ConnectionTableProcedurePane extends BasicPane { public ConnectionTableProcedurePane() { this.setLayout(new BorderLayout(4, 4)); - connectionComboBox = new ConnectionComboBoxPanel(com.fr.data.impl.Connection.class){ - protected void refreshItems(){ - super.refreshItems(); - if (tableViewList != null) { - search(); - } - } - }; + connectionComboBox = new ConnectionComboBoxPanel(com.fr.data.impl.Connection.class) { + protected void refreshItems() { + super.refreshItems(); + if (tableViewList != null) { + search(); + } + } + }; tableViewList = new TableViewList(); - ToolTipManager.sharedInstance().registerComponent(tableViewList); + ToolTipManager.sharedInstance().registerComponent(tableViewList); connectionComboBox.addComboBoxActionListener(filter); tableViewList.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { @@ -54,8 +55,8 @@ public class ConnectionTableProcedurePane extends BasicPane { Object obj = tableViewList.getSelectedValue(); TableProcedure tableProcedure = null; if (obj instanceof TableProcedure) { - tableProcedure = (TableProcedure)obj; - }else { + tableProcedure = (TableProcedure) obj; + } else { return; } for (int i = 0; i < ConnectionTableProcedurePane.this.listeners.size(); i++) { @@ -79,7 +80,7 @@ public class ConnectionTableProcedurePane extends BasicPane { this.add(connectionComboBox, BorderLayout.NORTH); this.add(tableViewListPane, BorderLayout.CENTER); this.add(filterPane, BorderLayout.SOUTH); - this.setPreferredSize(new Dimension(WIDTH, getPreferredSize().height)); + this.setPreferredSize(new Dimension(WIDTH, getPreferredSize().height)); } protected JPanel createCheckBoxgroupPane() { @@ -89,28 +90,42 @@ public class ConnectionTableProcedurePane extends BasicPane { tableCheckBox.setSelected(true); tableCheckBox.addActionListener(filter); first.add(tableCheckBox); - first.add(new UILabel(Inter.getLocText("Table"), BaseUtils.readIcon("/com/fr/design/images/data/tables.png"), UILabel.LEADING)); JPanel second = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); viewCheckBox = new UICheckBox(); viewCheckBox.setSelected(true); viewCheckBox.addActionListener(filter); second.add(viewCheckBox); - second.add(new UILabel(Inter.getLocText("SQL-View"), BaseUtils.readIcon("/com/fr/design/images/data/views.png"), UILabel.LEADING)); + // 根据环境是否为中文设置不同的显示 + if (GeneralContext.isChineseEnv()) { + first.add(new UILabel(Inter.getLocText("Table"), + BaseUtils.readIcon("/com/fr/design/images/data/tables.png"), UILabel.LEADING)); + second.add(new UILabel(Inter.getLocText("SQL-View"), + BaseUtils.readIcon("/com/fr/design/images/data/views.png"), UILabel.LEADING)); + } else { + UILabel ui1 = new UILabel(BaseUtils.readIcon("/com/fr/design/images/data/tables.png"), UILabel.LEADING); + UILabel ui2 = new UILabel(BaseUtils.readIcon("/com/fr/design/images/data/views.png"), UILabel.LEADING); + ui1.setToolTipText(Inter.getLocText("Table")); + ui2.setToolTipText(Inter.getLocText("SQL-View")); + first.add(ui1); + second.add(ui2); + } checkBoxgroupPane.add(first); checkBoxgroupPane.add(second); return checkBoxgroupPane; } - /** - * 给 itemComboBox 加上 itemListener - * @param itemListener - */ - public void addItemListener(ItemListener itemListener) { - connectionComboBox.itemComboBox.addItemListener(itemListener); - } + /** + * 给 itemComboBox 加上 itemListener + * + * @param itemListener + */ + public void addItemListener(ItemListener itemListener) { + connectionComboBox.itemComboBox.addItemListener(itemListener); + } + private DocumentListener searchListener = new DocumentListener() { @Override @@ -146,13 +161,13 @@ public class ConnectionTableProcedurePane extends BasicPane { String[] types = ArrayUtils.EMPTY_STRING_ARRAY; if (tableCheckBox != null) { if (tableCheckBox.isSelected()) { - types = (String[])ArrayUtils.add(types, TableProcedure.TABLE); + types = (String[]) ArrayUtils.add(types, TableProcedure.TABLE); } if (viewCheckBox.isSelected()) { - types = (String[])ArrayUtils.add(types, TableProcedure.VIEW); + types = (String[]) ArrayUtils.add(types, TableProcedure.VIEW); } } else { - types = (String[])ArrayUtils.add(types, TableProcedure.PROCEDURE); + types = (String[]) ArrayUtils.add(types, TableProcedure.PROCEDURE); } tableViewList.populate(selectedObj, searchField.getText().trim(), types); } @@ -162,10 +177,10 @@ public class ConnectionTableProcedurePane extends BasicPane { return "Connection"; } - /** - * - * @param l - */ + /** + * + * @param l + */ public void addDoubleClickListener(DoubleClickSelectedNodeOnTreeListener l) { this.listeners.add(l); } @@ -179,10 +194,11 @@ public class ConnectionTableProcedurePane extends BasicPane { } public static interface DoubleClickSelectedNodeOnTreeListener { - /** - * 处理双击事件 - * @param target - */ - public void actionPerformed(TableProcedure target); + /** + * 处理双击事件 + * + * @param target + */ + public void actionPerformed(TableProcedure target); } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/formula/FunctionManagerPane.java b/designer_base/src/com/fr/design/formula/FunctionManagerPane.java index fd41df3256..3fffe594eb 100644 --- a/designer_base/src/com/fr/design/formula/FunctionManagerPane.java +++ b/designer_base/src/com/fr/design/formula/FunctionManagerPane.java @@ -132,7 +132,7 @@ public class FunctionManagerPane extends BasicPane { JPanel northPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); this.add(northPane, BorderLayout.NORTH); JPanel reportletNamePane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - classNameTextField = new UITextField(28); + classNameTextField = new UITextField(25); reportletNamePane.add(classNameTextField); UIButton browserButton = new UIButton(Inter.getLocText("FR-Designer_Select")); browserButton.setPreferredSize(new Dimension(browserButton.getPreferredSize().width, classNameTextField.getPreferredSize().height)); diff --git a/designer_base/src/com/fr/design/hyperlink/WebHyperNorthPane.java b/designer_base/src/com/fr/design/hyperlink/WebHyperNorthPane.java index 585864d600..ee3adaf763 100644 --- a/designer_base/src/com/fr/design/hyperlink/WebHyperNorthPane.java +++ b/designer_base/src/com/fr/design/hyperlink/WebHyperNorthPane.java @@ -51,10 +51,10 @@ public class WebHyperNorthPane extends AbstractHyperlinkPane { urlPane.add(urlTextField); urlTextField.setText(ProductConstants.WEBSITE_URL); - UILabel label = new UILabel(Inter.getLocText(new String[]{"Example","Or"}, new String[]{":http://www.baidu.com","/main.jsp"})); + //UILabel label = new UILabel(Inter.getLocText(new String[]{"Example","Or"}, new String[]{":http://www.baidu.com","/main.jsp"})); JPanel urlWithHelp = FRGUIPaneFactory.createNColumnGridInnerContainer_S_Pane(2); urlWithHelp.add(GUICoreUtils.createNamedPane(urlPane, "URL:")); - urlWithHelp.add(label); + //urlWithHelp.add(label); if(this.needRenamePane){ headerPane.setLayout(new BorderLayout(LayoutConstants.VGAP_LARGE,LayoutConstants.VGAP_SMALL)); diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index 4e1d1decd1..b1dbe53555 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -300,7 +300,7 @@ public abstract class ToolBarMenuDock { //shortCuts.add(new TutorialAction()); shortCuts.add(SeparatorDef.DEFAULT); if (ComparatorUtils.equals(ProductConstants.APP_NAME,FINEREPORT)) { - shortCuts.add(new FeedBackAction()); + //shortCuts.add(new FeedBackAction()); shortCuts.add(SeparatorDef.DEFAULT); shortCuts.add(SeparatorDef.DEFAULT); // shortCuts.add(new ForumAction()); diff --git a/designer_chart/.classpath b/designer_chart/.classpath index 9cb17f77cf..865d0fd9a9 100644 --- a/designer_chart/.classpath +++ b/designer_chart/.classpath @@ -1,20 +1,43 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/designer_chart/src/com/fr/start/Designer4Chart.java b/designer_chart/src/com/fr/start/Designer4Chart.java index 83de32da70..8773191553 100644 --- a/designer_chart/src/com/fr/start/Designer4Chart.java +++ b/designer_chart/src/com/fr/start/Designer4Chart.java @@ -388,8 +388,8 @@ public class Designer4Chart extends BaseDesigner { return new ShortCut[]{ new ChartWebAction(), SeparatorDef.DEFAULT, - new ChartFeedBackAciton(), - SeparatorDef.DEFAULT, + //new ChartFeedBackAciton(), + //SeparatorDef.DEFAULT, new UpdateOnlineAction(), new AboutAction() }; diff --git a/designer_form/.classpath b/designer_form/.classpath index 4eb8d88683..21414c0fb6 100644 --- a/designer_form/.classpath +++ b/designer_form/.classpath @@ -1,15 +1,43 @@ - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 30c40ec32b57fe17b85f4360dc4db3243c66712e Mon Sep 17 00:00:00 2001 From: anchore Date: Thu, 17 Nov 2016 11:54:48 +0800 Subject: [PATCH 057/139] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E6=97=A5=E6=96=87=E5=8C=96=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/DesignerFrameFileDealerPane.java | 11 ++++++++++- .../fr/design/mainframe/toolbar/ToolBarMenuDock.java | 4 +++- designer_base/src/com/fr/design/menu/KeySetUtils.java | 11 ++++++++++- .../com/fr/design/style/color/NewColorSelectPane.java | 5 ++++- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java b/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java index eb20ee9e7f..7ede19d517 100644 --- a/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java +++ b/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java @@ -27,6 +27,7 @@ import com.fr.file.FILE; import com.fr.file.FileNodeFILE; import com.fr.file.filetree.FileNode; import com.fr.general.ComparatorUtils; +import com.fr.general.GeneralContext; import com.fr.general.Inter; import com.fr.stable.CoreConstants; import com.fr.stable.StableUtils; @@ -42,6 +43,7 @@ import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.util.HashMap; +import java.util.Locale; import java.util.Map; import java.util.Set; @@ -411,7 +413,14 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt }); UIButton cancelButton = new UIButton(Inter.getLocText("FR-Designer_Cancel")); - cancelButton.setBounds(250, 90, 60, 25); + + // mod by anchore 16/11/16 + if (Locale.JAPAN.equals(GeneralContext.getLocale())) { + cancelButton.setBounds(250, 90, 80, 25); + } else { + cancelButton.setBounds(180, 90, 80, 25); + } + //cancelButton.setBounds(250, 90, 60, 25); cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jd.dispose(); diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index 4e1d1decd1..8c2d49a075 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -300,7 +300,9 @@ public abstract class ToolBarMenuDock { //shortCuts.add(new TutorialAction()); shortCuts.add(SeparatorDef.DEFAULT); if (ComparatorUtils.equals(ProductConstants.APP_NAME,FINEREPORT)) { - shortCuts.add(new FeedBackAction()); + + // mod by anchore 16/11/17 去掉反馈 + //shortCuts.add(new FeedBackAction()); shortCuts.add(SeparatorDef.DEFAULT); shortCuts.add(SeparatorDef.DEFAULT); // shortCuts.add(new ForumAction()); diff --git a/designer_base/src/com/fr/design/menu/KeySetUtils.java b/designer_base/src/com/fr/design/menu/KeySetUtils.java index 78a557806d..91840bcdcb 100644 --- a/designer_base/src/com/fr/design/menu/KeySetUtils.java +++ b/designer_base/src/com/fr/design/menu/KeySetUtils.java @@ -4,10 +4,12 @@ package com.fr.design.menu; +import com.fr.general.GeneralContext; import com.fr.general.Inter; import javax.swing.*; import java.awt.event.KeyEvent; +import java.util.Locale; /** * Created by IntelliJ IDEA. @@ -710,7 +712,14 @@ public class KeySetUtils { @Override public String getMenuName() { - return Inter.getLocText(new String[]{"Allow", "DashBoard-Potence", "Edit"}); + + // mod by anchore 16/11/16 + if (Locale.JAPAN.equals(GeneralContext.getLocale())) { + return Inter.getLocText(new String[]{"DashBoard-Potence", "Edit"}) + "に" + Inter.getLocText("Allow"); + } else { + return Inter.getLocText(new String[]{"Allow", "DashBoard-Potence", "Edit"}); + } + //return Inter.getLocText(new String[]{"Allow", "DashBoard-Potence", "Edit"}); } @Override diff --git a/designer_base/src/com/fr/design/style/color/NewColorSelectPane.java b/designer_base/src/com/fr/design/style/color/NewColorSelectPane.java index feffb92e0f..bbecf01d3d 100644 --- a/designer_base/src/com/fr/design/style/color/NewColorSelectPane.java +++ b/designer_base/src/com/fr/design/style/color/NewColorSelectPane.java @@ -93,7 +93,10 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable { } centerPane.add(Box.createVerticalStrut(1)); - UIButton customButton = new UIButton(Inter.getLocText(new String[]{"More", "Color"}) + "..."); + + // mod by anchore 16/11/16 + UIButton customButton = new UIButton(Inter.getLocText("FR-Designer-Basic_More_Color")); + //UIButton customButton = new UIButton(Inter.getLocText(new String[]{"More", "Color"}) + "..."); customButton.addMouseListener(new MouseAdapter() { @Override From 25553accd027393ce5ed30c85d3b10aeb69d4812 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Thu, 17 Nov 2016 12:49:38 +0800 Subject: [PATCH 058/139] rt --- .../fr/design/mainframe/FormWidgetDetailPane.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java index 73ac21246f..be0b8f6b12 100644 --- a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java +++ b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java @@ -24,6 +24,7 @@ import com.fr.general.Inter; import com.fr.general.SiteCenter; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; +import com.fr.stable.collections.array.Array; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; @@ -36,6 +37,7 @@ import java.io.File; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; +import java.util.*; /** * Created with IntelliJ IDEA. @@ -235,7 +237,7 @@ public class FormWidgetDetailPane extends FormDockView{ protected Object doInBackground() throws Exception { ShareLoader.getLoader().refreshModule(); elCaseBindInfoList = ShareLoader.getLoader().getAllBindInfoList(); - comboBox.setSelectedIndex(0); + refreshComboxData(); refreshDownPanel(false); return null; } @@ -247,6 +249,11 @@ public class FormWidgetDetailPane extends FormDockView{ } + private void refreshComboxData() { + comboBox.setSelectedIndex(0); + comboBox.setModel(new DefaultComboBoxModel(getFormCategories())); + } + /** * 创建下载模板的按钮 */ @@ -335,7 +342,7 @@ public class FormWidgetDetailPane extends FormDockView{ JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_Removed_Successful")); refreshDownPanel(false); replaceButtonPanel(false); - comboBox.setSelectedIndex(0); + refreshComboxData(); } else { JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_Removed_Failed")); } @@ -366,7 +373,7 @@ public class FormWidgetDetailPane extends FormDockView{ refreshShareMoudule(); elCaseBindInfoList = ShareLoader.getLoader().getAllBindInfoList(); refreshDownPanel(false); - comboBox.setSelectedIndex(0); + refreshComboxData(); JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_OK")); } catch (IOException e) { JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_Error")); From 4787a9abc90f405053074067008cd9a1cfc6dae5 Mon Sep 17 00:00:00 2001 From: fortyone <1151438686@qq.com> Date: Thu, 17 Nov 2016 13:12:46 +0800 Subject: [PATCH 059/139] =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datapane/connect/ConnectionTableProcedurePane.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/designer_base/src/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java b/designer_base/src/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java index 096f8a411a..23b62431ec 100644 --- a/designer_base/src/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java +++ b/designer_base/src/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java @@ -99,15 +99,15 @@ public class ConnectionTableProcedurePane extends BasicPane { // 根据环境是否为中文设置不同的显示 if (GeneralContext.isChineseEnv()) { - first.add(new UILabel(Inter.getLocText("Table"), + first.add(new UILabel(Inter.getLocText("FR-Designer_SQL-Table"), BaseUtils.readIcon("/com/fr/design/images/data/tables.png"), UILabel.LEADING)); - second.add(new UILabel(Inter.getLocText("SQL-View"), + second.add(new UILabel(Inter.getLocText("FR-Designer_SQL-View"), BaseUtils.readIcon("/com/fr/design/images/data/views.png"), UILabel.LEADING)); } else { UILabel ui1 = new UILabel(BaseUtils.readIcon("/com/fr/design/images/data/tables.png"), UILabel.LEADING); UILabel ui2 = new UILabel(BaseUtils.readIcon("/com/fr/design/images/data/views.png"), UILabel.LEADING); - ui1.setToolTipText(Inter.getLocText("Table")); - ui2.setToolTipText(Inter.getLocText("SQL-View")); + ui1.setToolTipText(Inter.getLocText("FR-Designer_SQL-Table")); + ui2.setToolTipText(Inter.getLocText("FR-Designer_SQL-View")); first.add(ui1); second.add(ui2); } From 45af5555831238eacf247f57c8aa4f2429bf2e8b Mon Sep 17 00:00:00 2001 From: anchore Date: Thu, 17 Nov 2016 13:48:24 +0800 Subject: [PATCH 060/139] =?UTF-8?q?=E8=A7=84=E8=8C=83=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/DesignerFrameFileDealerPane.java | 2 +- designer_base/src/com/fr/design/menu/KeySetUtils.java | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java b/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java index 7ede19d517..093f90e5a5 100644 --- a/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java +++ b/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java @@ -415,7 +415,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt UIButton cancelButton = new UIButton(Inter.getLocText("FR-Designer_Cancel")); // mod by anchore 16/11/16 - if (Locale.JAPAN.equals(GeneralContext.getLocale())) { + if (ComparatorUtils.equals(Locale.JAPAN, GeneralContext.getLocale())) { cancelButton.setBounds(250, 90, 80, 25); } else { cancelButton.setBounds(180, 90, 80, 25); diff --git a/designer_base/src/com/fr/design/menu/KeySetUtils.java b/designer_base/src/com/fr/design/menu/KeySetUtils.java index 91840bcdcb..ac9314b5ab 100644 --- a/designer_base/src/com/fr/design/menu/KeySetUtils.java +++ b/designer_base/src/com/fr/design/menu/KeySetUtils.java @@ -4,6 +4,7 @@ package com.fr.design.menu; +import com.fr.general.ComparatorUtils; import com.fr.general.GeneralContext; import com.fr.general.Inter; @@ -714,10 +715,10 @@ public class KeySetUtils { public String getMenuName() { // mod by anchore 16/11/16 - if (Locale.JAPAN.equals(GeneralContext.getLocale())) { - return Inter.getLocText(new String[]{"DashBoard-Potence", "Edit"}) + "に" + Inter.getLocText("Allow"); + if (ComparatorUtils.equals(Locale.JAPAN, GeneralContext.getLocale())) { + return Inter.getLocText(new String[]{"FR-Engine_RP_Authority_Edit", "Allow"}); } else { - return Inter.getLocText(new String[]{"Allow", "DashBoard-Potence", "Edit"}); + return Inter.getLocText(new String[]{"Allow", "FR-Engine_RP_Authority_Edit"}); } //return Inter.getLocText(new String[]{"Allow", "DashBoard-Potence", "Edit"}); } From 3ab77cfb70cf2d2500f3bc94691610d5e1103a5b Mon Sep 17 00:00:00 2001 From: anchore Date: Thu, 17 Nov 2016 14:18:02 +0800 Subject: [PATCH 061/139] =?UTF-8?q?=E8=A7=84=E8=8C=83=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96key?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/menu/KeySetUtils.java | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/designer_base/src/com/fr/design/menu/KeySetUtils.java b/designer_base/src/com/fr/design/menu/KeySetUtils.java index ac9314b5ab..1b62fcdc4a 100644 --- a/designer_base/src/com/fr/design/menu/KeySetUtils.java +++ b/designer_base/src/com/fr/design/menu/KeySetUtils.java @@ -66,7 +66,7 @@ public class KeySetUtils { @Override public String getMenuName() { - return Inter.getLocText("M_Close_Current"); + return Inter.getLocText("FR-Designer_Close"); } @Override @@ -83,7 +83,7 @@ public class KeySetUtils { @Override public String getMenuName() { - return Inter.getLocText("M-Save"); + return Inter.getLocText("FR-Designer_Save"); } @Override @@ -151,7 +151,7 @@ public class KeySetUtils { @Override public String getMenuName() { - return Inter.getLocText("Export"); + return Inter.getLocText("FR-Designer_Export"); } @Override @@ -186,7 +186,7 @@ public class KeySetUtils { @Override public String getMenuName() { - return Inter.getLocText("Export-Excel-Page"); + return Inter.getLocText("FR-Engine_Export-Excel-Page"); } @Override @@ -204,7 +204,7 @@ public class KeySetUtils { @Override public String getMenuName() { - return Inter.getLocText("Export-Excel-Simple"); + return Inter.getLocText("FR-Engine_Export-Excel-Simple"); } @Override @@ -222,7 +222,7 @@ public class KeySetUtils { @Override public String getMenuName() { - return Inter.getLocText("Export-Excel-PageToSheet"); + return Inter.getLocText("FR-Engine_Export-Excel-PageToSheet"); } @Override @@ -365,7 +365,7 @@ public class KeySetUtils { @Override public String getMenuName() { - return Inter.getLocText("ExportAndOutput"); + return Inter.getLocText("FR-Designer_ExportAndOutput"); } @Override @@ -382,7 +382,7 @@ public class KeySetUtils { @Override public String getMenuName() { - return "EXCEL"+Inter.getLocText("ExportAndOutput"); + return "EXCEL"+Inter.getLocText("FR-Designer_ExportAndOutput"); } @Override @@ -416,7 +416,7 @@ public class KeySetUtils { @Override public String getMenuName() { - return Inter.getLocText("M-SwitchWorkspace"); + return Inter.getLocText("FR-Designer_M-SwitchWorkspace"); } @Override @@ -433,7 +433,7 @@ public class KeySetUtils { @Override public String getMenuName() { - return Inter.getLocText("M-Exit"); + return Inter.getLocText("FR-Designer_M-Exit"); } @Override @@ -451,7 +451,7 @@ public class KeySetUtils { @Override public String getMenuName() { - return Inter.getLocText("M-Template"); + return Inter.getLocText("FR-Designer_M-Template"); } @Override @@ -642,7 +642,7 @@ public class KeySetUtils { @Override public String getMenuName() { - return Inter.getLocText("ReportColumns-Columns"); + return Inter.getLocText("FR-Designer_ReportColumns-Columns"); } @Override @@ -660,7 +660,7 @@ public class KeySetUtils { @Override public String getMenuName() { - return Inter.getLocText("M-Repeat-Freeze"); + return Inter.getLocText("FR-Designer_M-Repeat-Freeze"); } @Override @@ -678,7 +678,7 @@ public class KeySetUtils { @Override public String getMenuName() { - return Inter.getLocText("Frozen"); + return Inter.getLocText("FR-Engine_Frozen"); } @Override @@ -737,7 +737,7 @@ public class KeySetUtils { @Override public String getMenuName() { - return Inter.getLocText("M-Cell"); + return Inter.getLocText("FR-Designer_Cell"); } @Override @@ -771,7 +771,7 @@ public class KeySetUtils { @Override public String getMenuName() { - return Inter.getLocText("Widget-Settings"); + return Inter.getLocText("FR-Designer_Widget-Settings"); } @Override @@ -805,7 +805,7 @@ public class KeySetUtils { @Override public String getMenuName() { - return Inter.getLocText("Condition_Attributes"); + return Inter.getLocText("FR-Designer_Condition_Attributes"); } @Override @@ -822,7 +822,7 @@ public class KeySetUtils { @Override public String getMenuName() { - return Inter.getLocText("Present"); + return Inter.getLocText("FR-Chart-Style_Present"); } @Override @@ -890,7 +890,7 @@ public class KeySetUtils { @Override public String getMenuName() { - return Inter.getLocText("Currency_Line"); + return Inter.getLocText("FR-Designer_Currency_Line"); } @Override From 79e0d87f0e803077b702bd050605f76333b24b0e Mon Sep 17 00:00:00 2001 From: zack Date: Thu, 17 Nov 2016 14:57:30 +0800 Subject: [PATCH 062/139] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=85=B1=E4=BA=AB=E8=BF=9C=E7=A8=8B=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E5=90=8C=E6=AD=A5=E5=88=B0release?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/env/RemoteEnv.java | 44 +++++++++++++++++++ .../mainframe/FormWidgetDetailPane.java | 9 ---- .../fr/design/mainframe/ShareWidgetPane.java | 20 ++++----- 3 files changed, 54 insertions(+), 19 deletions(-) diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 6aff74d7ca..cbca9c2cab 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -22,6 +22,7 @@ import com.fr.file.CacheManager; import com.fr.file.DatasourceManager; import com.fr.file.DatasourceManagerProvider; import com.fr.file.filetree.FileNode; +import com.fr.form.share.ShareConstants; import com.fr.general.*; import com.fr.general.http.HttpClient; import com.fr.json.JSONArray; @@ -2105,4 +2106,47 @@ public class RemoteEnv implements Env { public void checkAndRegisterLic(FileNode node, Plugin plugin) throws Exception { } + + @Override + public File[] loadREUFile() throws Exception { + File target = new File(CacheManager.getProviderInstance().getCacheDirectory(), + "fr_share"); + StableUtils.deleteFile(target); + StableUtils.mkdirs(target); + File cacheDir = null; + File zip = null; + try { + HashMap para = new HashMap(); + para.put("op", "fr_remote_design"); + para.put("cmd", "design_read_reufile"); + para.put("current_uid", this.createUserID()); + para.put("currentUsername", this.getUser()); + + HttpClient client = createHttpMethod(para); + InputStream input = client.getResponseStream(); + zip = new File(StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath()), "share.zip"); + cacheDir = new File(StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath()), ShareConstants.DIR_SHARE_CACHE); + StableUtils.deleteFile(cacheDir); + StableUtils.mkdirs(cacheDir); + StableUtils.makesureFileExist(zip); + FileOutputStream out = new FileOutputStream(zip); + IOUtils.copyBinaryTo(input, out); + out.flush(); + out.close(); + IOUtils.unzip(zip, cacheDir.getAbsolutePath(), EncodeConstants.ENCODING_GBK);//先解压到临时目录 + if (cacheDir.exists() && cacheDir.isDirectory()) { + return cacheDir.listFiles(new FilenameFilter() { + public boolean accept(File file, String s) { + return s.endsWith("reu"); + } + }); + } + + } catch (Exception e) { + FRContext.getLogger().error(e.getMessage()); + } finally { + StableUtils.deleteFile(zip); + } + return new File[0]; + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java index be0b8f6b12..d660d9a580 100644 --- a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java +++ b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java @@ -2,11 +2,6 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; import com.fr.base.FRContext; -import com.fr.design.dialog.BasicPane; -import com.fr.design.dialog.UIDialog; -import com.fr.design.extra.PluginWebBridge; -import com.fr.design.extra.ShopDialog; -import com.fr.design.extra.WebManagerPaneFactory; import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icombobox.UIComboBox; @@ -16,7 +11,6 @@ import com.fr.design.gui.imenu.UIMenuItem; import com.fr.design.gui.imenu.UIPopupMenu; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.form.share.ShareConstants; import com.fr.form.share.ShareLoader; import com.fr.form.ui.ElCaseBindInfo; import com.fr.general.FRLogger; @@ -24,7 +18,6 @@ import com.fr.general.Inter; import com.fr.general.SiteCenter; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; -import com.fr.stable.collections.array.Array; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; @@ -37,7 +30,6 @@ import java.io.File; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; -import java.util.*; /** * Created with IntelliJ IDEA. @@ -107,7 +99,6 @@ public class FormWidgetDetailPane extends FormDockView{ reuWidgetPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); reuWidgetPanel.setBorder(null); if (elCaseBindInfoList == null) { - elCaseBindInfoList = new ElCaseBindInfo[0]; if (sw != null) { sw.cancel(true); } diff --git a/designer_form/src/com/fr/design/mainframe/ShareWidgetPane.java b/designer_form/src/com/fr/design/mainframe/ShareWidgetPane.java index cd04300bf1..c5659d9bc1 100644 --- a/designer_form/src/com/fr/design/mainframe/ShareWidgetPane.java +++ b/designer_form/src/com/fr/design/mainframe/ShareWidgetPane.java @@ -1,8 +1,8 @@ package com.fr.design.mainframe; - import com.fr.form.ui.ElCaseBindInfo; + import javax.swing.*; import java.awt.*; @@ -14,15 +14,15 @@ public class ShareWidgetPane extends JPanel { public ShareWidgetPane(ElCaseBindInfo[] elCaseBindInfoList, boolean isEdit) { this.setBorder(BorderFactory.createEmptyBorder(10, 3, 0, 0));// 设置面板的边框 ,距离上、左、下、右 的距离 - int rowCount = (elCaseBindInfoList.length + 1) / 2; - this.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 10)); - for (ElCaseBindInfo rbModuleInfo : elCaseBindInfoList) { - ShareWidgetButton widgetButton = new ShareWidgetButton(rbModuleInfo); - widgetButton.setElementCaseEdit(isEdit); - this.add(widgetButton); + if (elCaseBindInfoList != null) { + int rowCount = (elCaseBindInfoList.length + 1) / 2; + this.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 10)); + for (ElCaseBindInfo rbModuleInfo : elCaseBindInfoList) { + ShareWidgetButton widgetButton = new ShareWidgetButton(rbModuleInfo); + widgetButton.setElementCaseEdit(isEdit); + this.add(widgetButton); + } + this.setPreferredSize(new Dimension(240, rowCount * 80)); } - this.setPreferredSize(new Dimension(240, rowCount * 80)); - } - } \ No newline at end of file From 263efee93d91cee34ed835d2022079e0f3f66d7d Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Thu, 17 Nov 2016 15:16:25 +0800 Subject: [PATCH 063/139] update --- .../src/com/fr/design/mainframe/chart/gui/ChartTypePane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java index eab0010eae..2663ad5ab4 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java @@ -272,7 +272,7 @@ public class ChartTypePane extends AbstractChartAttrPane{ Chart chart = collection.getSelectedChart(); String plotID = chart.getPlot().getPlotID(); boolean isUseDefault = ChartTypeInterfaceManager.getInstance().isUseDefaultPane(plotID); - if (editPane != null && editPane.isDefaultPane() != isUseDefault || (!isUseDefault && !ComparatorUtils.equals(lastPlotID, plotID))){ + if (editPane != null && editPane.isDefaultPane() != isUseDefault || (!isUseDefault && !ComparatorUtils.equals(lastPlotID, plotID)) /*|| needRelayoutPlotPane*/){ editPane.reLayout(chart); } } From cae49c62bf6f98dd38cad1d3b3c1d35e54b7725f Mon Sep 17 00:00:00 2001 From: zack Date: Thu, 17 Nov 2016 15:36:42 +0800 Subject: [PATCH 064/139] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?=E7=94=A8=E4=BA=86=E9=9D=9E=E6=B3=95=E7=9A=84=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E5=85=B3=E7=B3=BB=EF=BC=8C=E5=85=88=E5=86=99=E6=AD=BB=E5=86=8D?= =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/env/RemoteEnv.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index cbca9c2cab..ae8c589ee5 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -22,7 +22,6 @@ import com.fr.file.CacheManager; import com.fr.file.DatasourceManager; import com.fr.file.DatasourceManagerProvider; import com.fr.file.filetree.FileNode; -import com.fr.form.share.ShareConstants; import com.fr.general.*; import com.fr.general.http.HttpClient; import com.fr.json.JSONArray; @@ -32,8 +31,6 @@ import com.fr.plugin.Plugin; import com.fr.plugin.PluginLicense; import com.fr.plugin.PluginLicenseManager; import com.fr.plugin.PluginLoader; -import com.fr.plugin.dependence.PluginServiceCreator; -import com.fr.plugin.dependence.PluginServiceManager; import com.fr.stable.*; import com.fr.stable.file.XMLFileManagerProvider; import com.fr.stable.project.ProjectConstants; @@ -2125,7 +2122,7 @@ public class RemoteEnv implements Env { HttpClient client = createHttpMethod(para); InputStream input = client.getResponseStream(); zip = new File(StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath()), "share.zip"); - cacheDir = new File(StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath()), ShareConstants.DIR_SHARE_CACHE); + cacheDir = new File(StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath()), "fr_share"); StableUtils.deleteFile(cacheDir); StableUtils.mkdirs(cacheDir); StableUtils.makesureFileExist(zip); From 099faf7f86082e0b73782bafd20e2c96f06e74ff Mon Sep 17 00:00:00 2001 From: fortyone <1151438686@qq.com> Date: Thu, 17 Nov 2016 16:10:30 +0800 Subject: [PATCH 065/139] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index b1dbe53555..4e1d1decd1 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -300,7 +300,7 @@ public abstract class ToolBarMenuDock { //shortCuts.add(new TutorialAction()); shortCuts.add(SeparatorDef.DEFAULT); if (ComparatorUtils.equals(ProductConstants.APP_NAME,FINEREPORT)) { - //shortCuts.add(new FeedBackAction()); + shortCuts.add(new FeedBackAction()); shortCuts.add(SeparatorDef.DEFAULT); shortCuts.add(SeparatorDef.DEFAULT); // shortCuts.add(new ForumAction()); From c7313ff1e6b91fa1072c595ef3a1b6c6b99833f6 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Thu, 17 Nov 2016 16:11:55 +0800 Subject: [PATCH 066/139] =?UTF-8?q?=E5=9B=BE=E8=A1=A8=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/chart/gui/ChartTypePane.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java index 4dbd362e9d..0eb9caf71d 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java @@ -291,8 +291,10 @@ public class ChartTypePane extends AbstractChartAttrPane{ paneState.setPaneState(collection.getState()); } + // TODO: 2016/11/17 因为现在populate面板时会重新构造面板,所以每次都需要重构 private boolean needReactor(ChartCollection collection) { - return paneState.getChartID() != collection.getRepresentChartID() || paneState.getPaneState() != collection.getState(); + /*return paneState.getChartID() != collection.getRepresentChartID() || paneState.getPaneState() != collection.getState();*/ + return true; } /** @@ -305,6 +307,9 @@ public class ChartTypePane extends AbstractChartAttrPane{ this.removeAttributeChangeListener(); buttonPane.populateBean(collection); chartTypePane.populateBean(chart); + //remove面板之后,就需要重构下拉框 + reactorChartTypePane(collection); + this.initAllListeners(); } From 23f80fd8b716897ee6785729ce2c46cd4f237fe5 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Thu, 17 Nov 2016 16:14:47 +0800 Subject: [PATCH 067/139] update --- .../src/com/fr/design/mainframe/chart/gui/ChartTypePane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java index 0eb9caf71d..dc339057c6 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java @@ -272,7 +272,7 @@ public class ChartTypePane extends AbstractChartAttrPane{ Chart chart = collection.getSelectedChart(); String plotID = chart.getPlot().getPlotID(); boolean isUseDefault = ChartTypeInterfaceManager.getInstance().isUseDefaultPane(plotID); - if (editPane != null && editPane.isDefaultPane() != isUseDefault || (!isUseDefault && !ComparatorUtils.equals(lastPlotID, plotID)) /*|| needRelayoutPlotPane*/){ + if (editPane != null && editPane.isDefaultPane() != isUseDefault || (!isUseDefault && !ComparatorUtils.equals(lastPlotID, plotID))){ editPane.reLayout(chart); } } From d0e7f6b40530513d105ec457a8fdd9ed29474544 Mon Sep 17 00:00:00 2001 From: vito Date: Thu, 17 Nov 2016 17:50:47 +0800 Subject: [PATCH 068/139] =?UTF-8?q?REPORT-817=20=E6=94=B9=E4=B8=AA?= =?UTF-8?q?=E5=86=99=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/style/AbstractPopBox.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/designer_base/src/com/fr/design/style/AbstractPopBox.java b/designer_base/src/com/fr/design/style/AbstractPopBox.java index 6e8d8a2125..bc07444c41 100644 --- a/designer_base/src/com/fr/design/style/AbstractPopBox.java +++ b/designer_base/src/com/fr/design/style/AbstractPopBox.java @@ -49,7 +49,7 @@ public abstract class AbstractPopBox extends JPanel { } } }; - + private void showPopupMenu() { if (selectPopupWindow != null && selectPopupWindow.isVisible()) { hidePopupMenu(); @@ -96,13 +96,14 @@ public abstract class AbstractPopBox extends JPanel { } private void mouseClick(MouseEvent evt) { - int x = evt.getLocationOnScreen().x; - int y = evt.getLocationOnScreen().y; - Rectangle popBoxRect = AbstractPopBox.this.getBounds(); - Rectangle rectangle = this.getControlWindow().getBounds(); - boolean b1 = x < rectangle.x || x > rectangle.x + rectangle.width; - boolean b2 = y < rectangle.y - popBoxRect.height || y > rectangle.y + rectangle.height; - if (b1 || b2) { + Point point = new Point((int) (evt.getLocationOnScreen().getX()), (int) evt.getLocationOnScreen().getY()); + Dimension d = AbstractPopBox.this.getSize(); + Point p = AbstractPopBox.this.getLocationOnScreen(); + Dimension popBoxD = this.getControlWindow().getSize(); + Point popBoxP = this.getControlWindow().getLocation(); + Rectangle rect = new Rectangle(p, d); + Rectangle popBoxRect = new Rectangle(popBoxP, popBoxD); + if (!rect.contains(point) && !popBoxRect.contains(point)) { this.hidePopupMenu(); } } From a260cd4f93c627d19f38a5167517e0ff33504348 Mon Sep 17 00:00:00 2001 From: vito Date: Thu, 17 Nov 2016 17:55:28 +0800 Subject: [PATCH 069/139] =?UTF-8?q?=E6=94=B9=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/style/AbstractPopBox.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/designer_base/src/com/fr/design/style/AbstractPopBox.java b/designer_base/src/com/fr/design/style/AbstractPopBox.java index bc07444c41..d36bca290b 100644 --- a/designer_base/src/com/fr/design/style/AbstractPopBox.java +++ b/designer_base/src/com/fr/design/style/AbstractPopBox.java @@ -97,13 +97,13 @@ public abstract class AbstractPopBox extends JPanel { private void mouseClick(MouseEvent evt) { Point point = new Point((int) (evt.getLocationOnScreen().getX()), (int) evt.getLocationOnScreen().getY()); - Dimension d = AbstractPopBox.this.getSize(); - Point p = AbstractPopBox.this.getLocationOnScreen(); - Dimension popBoxD = this.getControlWindow().getSize(); - Point popBoxP = this.getControlWindow().getLocation(); - Rectangle rect = new Rectangle(p, d); + Dimension popBoxD = AbstractPopBox.this.getSize(); + Point popBoxP = AbstractPopBox.this.getLocationOnScreen(); + Dimension popMenuD = this.getControlWindow().getSize(); + Point popMenuP = this.getControlWindow().getLocation(); Rectangle popBoxRect = new Rectangle(popBoxP, popBoxD); - if (!rect.contains(point) && !popBoxRect.contains(point)) { + Rectangle popMenuRect = new Rectangle(popMenuP, popMenuD); + if (!popBoxRect.contains(point) && !popMenuRect.contains(point)) { this.hidePopupMenu(); } } From d7c4bafc5cb32cc1e2da77a1ea55beea340c2130 Mon Sep 17 00:00:00 2001 From: zack Date: Thu, 17 Nov 2016 19:48:29 +0800 Subject: [PATCH 070/139] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=85=B1=E4=BA=AB=E6=94=AF=E6=8C=81=E8=BF=9C?= =?UTF-8?q?=E7=A8=8B=E5=AE=89=E8=A3=85=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/env/RemoteEnv.java | 66 ++++++++++++++++++- .../fr/design/mainframe/CoverReportPane.java | 2 +- .../mainframe/FormWidgetDetailPane.java | 27 ++++---- .../design/mainframe/ShareWidgetButton.java | 4 +- 4 files changed, 82 insertions(+), 17 deletions(-) diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index ae8c589ee5..60685dce97 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -31,6 +31,7 @@ import com.fr.plugin.Plugin; import com.fr.plugin.PluginLicense; import com.fr.plugin.PluginLicenseManager; import com.fr.plugin.PluginLoader; +import com.fr.share.ShareConstants; import com.fr.stable.*; import com.fr.stable.file.XMLFileManagerProvider; import com.fr.stable.project.ProjectConstants; @@ -2107,7 +2108,7 @@ public class RemoteEnv implements Env { @Override public File[] loadREUFile() throws Exception { File target = new File(CacheManager.getProviderInstance().getCacheDirectory(), - "fr_share"); + ShareConstants.DIR_SHARE_CACHE); StableUtils.deleteFile(target); StableUtils.mkdirs(target); File cacheDir = null; @@ -2122,7 +2123,7 @@ public class RemoteEnv implements Env { HttpClient client = createHttpMethod(para); InputStream input = client.getResponseStream(); zip = new File(StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath()), "share.zip"); - cacheDir = new File(StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath()), "fr_share"); + cacheDir = new File(StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath()), ShareConstants.DIR_SHARE_CACHE); StableUtils.deleteFile(cacheDir); StableUtils.mkdirs(cacheDir); StableUtils.makesureFileExist(zip); @@ -2146,4 +2147,65 @@ public class RemoteEnv implements Env { } return new File[0]; } + + @Override + public boolean installREUFile(File reuFile) { +// if (reuFile == null) { +// return false; +// } +// try { +// HashMap para = new HashMap(); +// para.put("op", "fr_remote_design"); +// para.put("cmd", "design_install_reufile"); +// para.put("current_uid", this.createUserID()); +// para.put("currentUsername", this.getUser()); +// para.put("reuFileName", reuFile.getName()); +// +// HttpClient client = createHttpMethod(para); +// client.setContent(IOUtils.inputStream2Bytes(new FileInputStream(reuFile))); +// InputStream input = execute4InputStream(client); +// return ComparatorUtils.equals(stream2String(input), "true"); +// } catch (Exception e) { +// return false; +// } + return false; + } + + @Override + public boolean removeREUFilesByName(String fileName) { + if (StringUtils.isEmpty(fileName)) { + return true; + } + try { + HashMap para = new HashMap(); + para.put("op", "fr_remote_design"); + para.put("cmd", "design_remove_reufile"); + para.put("current_uid", this.createUserID()); + para.put("currentUsername", this.getUser()); + para.put("reuFileName", fileName); + + HttpClient client = createHttpMethod(para); + InputStream input = execute4InputStream(client); + return ComparatorUtils.equals(stream2String(input), "true"); + } catch (Exception e) { + return false; + } + } + + @Override + public String getSharePath() { + try { + HashMap para = new HashMap(); + para.put("op", "fr_remote_design"); + para.put("cmd", "design_get_share_path"); + para.put("current_uid", this.createUserID()); + para.put("currentUsername", this.getUser()); + + HttpClient client = createHttpMethod(para); + InputStream input = execute4InputStream(client); + return stream2String(input); + } catch (Exception e) { + return StringUtils.EMPTY; + } + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/mainframe/CoverReportPane.java b/designer_form/src/com/fr/design/mainframe/CoverReportPane.java index 1d8277c461..196d8752a1 100644 --- a/designer_form/src/com/fr/design/mainframe/CoverReportPane.java +++ b/designer_form/src/com/fr/design/mainframe/CoverReportPane.java @@ -3,7 +3,7 @@ package com.fr.design.mainframe; import com.fr.design.constants.UIConstants; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.icon.IconPathConstants; -import com.fr.form.share.ShareConstants; +import com.fr.share.ShareConstants; import com.fr.general.FRScreen; import com.fr.general.IOUtils; import com.fr.stable.StringUtils; diff --git a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java index d660d9a580..c33e1b113b 100644 --- a/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java +++ b/designer_form/src/com/fr/design/mainframe/FormWidgetDetailPane.java @@ -16,6 +16,7 @@ import com.fr.form.ui.ElCaseBindInfo; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.general.SiteCenter; +import com.fr.share.ShareConstants; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; @@ -359,18 +360,22 @@ public class FormWidgetDetailPane extends FormDockView{ } private void installFromDiskZipFile(File chosenFile) { - try { - ShareLoader.getLoader().installModuleFromDiskZipFile(chosenFile); - refreshShareMoudule(); - elCaseBindInfoList = ShareLoader.getLoader().getAllBindInfoList(); - refreshDownPanel(false); - refreshComboxData(); - JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_OK")); - } catch (IOException e) { - JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_Error")); - FRLogger.getLogger().error(e.getMessage(), e); + if (chosenFile != null && chosenFile.getName().endsWith(ShareConstants.SUFFIX_MODULE)) { + try { + if (ShareLoader.getLoader().installModuleFromDiskZipFile(chosenFile)) { + refreshShareMoudule(); + elCaseBindInfoList = ShareLoader.getLoader().getAllBindInfoList(); + refreshDownPanel(false); + refreshComboxData(); + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_OK")); + } else { + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_Error")); + } + } catch (IOException e) { + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Share_Module_Error")); + FRLogger.getLogger().error(e.getMessage(), e); + } } - } private void refreshShareMoudule() { diff --git a/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java b/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java index ec663176e9..12e5302b05 100644 --- a/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java +++ b/designer_form/src/com/fr/design/mainframe/ShareWidgetButton.java @@ -1,12 +1,10 @@ package com.fr.design.mainframe; import com.fr.base.*; -import com.fr.design.constants.UIConstants; import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XCreatorUtils; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.icon.IconPathConstants; -import com.fr.form.share.ShareConstants; +import com.fr.share.ShareConstants; import com.fr.form.share.ShareLoader; import com.fr.form.ui.ElCaseBindInfo; import com.fr.form.ui.Widget; From 54150480d91f4e511489e5330ec3280124721b9f Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Fri, 18 Nov 2016 09:35:51 +0800 Subject: [PATCH 071/139] =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/chart/gui/ChartTypeButtonPane.java | 5 +++-- .../src/com/fr/design/mainframe/chart/gui/ChartTypePane.java | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java index 8d9ed81530..6c48772b06 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java @@ -275,8 +275,9 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen break; } } - if (editChartType != null) { - editChartType.populateBean(editingCollection.getSelectedChart()); + //切换时重新更新整个面板 + if (parent != null) { + parent.populate(editingCollection); } } } diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java index dc339057c6..6c747c9cc1 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java @@ -304,7 +304,7 @@ public class ChartTypePane extends AbstractChartAttrPane{ Chart chart = collection.getSelectedChart(); this.remove(leftContentPane); initContentPane(); - this.removeAttributeChangeListener(); + buttonPane.populateBean(collection); chartTypePane.populateBean(chart); //remove面板之后,就需要重构下拉框 From 3e8297608a08980f303711737959b55322550752 Mon Sep 17 00:00:00 2001 From: neil Date: Fri, 18 Nov 2016 10:00:01 +0800 Subject: [PATCH 072/139] ct --- .../fr/design/actions/file/LocalePane.java | 60 ++++++++++++------- .../mainframe/chart/gui/ChartDataPane.java | 3 +- 2 files changed, 41 insertions(+), 22 deletions(-) diff --git a/designer_base/src/com/fr/design/actions/file/LocalePane.java b/designer_base/src/com/fr/design/actions/file/LocalePane.java index 3356fa70af..e22d8c258b 100644 --- a/designer_base/src/com/fr/design/actions/file/LocalePane.java +++ b/designer_base/src/com/fr/design/actions/file/LocalePane.java @@ -27,6 +27,8 @@ import com.fr.design.dialog.BasicPane; import com.fr.file.filetree.FileNode; import com.fr.general.*; import com.fr.stable.ArrayUtils; +import com.fr.stable.StringUtils; +import com.fr.stable.bridge.StableFactory; import com.fr.stable.project.ProjectConstants; /** @@ -51,8 +53,8 @@ public class LocalePane extends BasicPane { add(tabbedPane, BorderLayout.CENTER); predefineTableModel = new DefaultTableModel() { - public boolean isCellEditable(int col, int row) { - return false; + public boolean isCellEditable(int row, int column) { + return column == 0; } }; @@ -109,23 +111,39 @@ public class LocalePane extends BasicPane { } private void initPredefinedProperties() { - Map map = Inter.getPredefinedPackageMap(); - LocalePackage chinese = map.get(Locale.SIMPLIFIED_CHINESE); + + Map supportLocaleMap = Inter.getSupportLocaleMap(); + + String[] localeFiles = StableFactory.getLocaleFiles(); + + List sortKeys = new ArrayList(); - Set bundles = chinese.getKindsOfResourceBundle(); - for (ResourceBundle bundle : bundles) { - sortKeys.addAll(bundle.keySet()); + for (String path : localeFiles) { + ResourceBundle chineseBundle = loadResourceBundle(path, Locale.SIMPLIFIED_CHINESE); + sortKeys.addAll(chineseBundle.keySet()); } Collections.sort(sortKeys); + Map> localeResourceBundleMap = new HashMap>(); + for (Map.Entry entry : supportLocaleMap.entrySet()) { + Locale locale = entry.getKey(); + List list = new ArrayList<>(); + for (String path : localeFiles) { + ResourceBundle chineseBundle = loadResourceBundle(path, locale); + list.add(chineseBundle); + } + localeResourceBundleMap.put(locale, list); + } + Map> data = new HashMap>(); - for (Map.Entry entry : map.entrySet()) { + for (Map.Entry> entry : localeResourceBundleMap.entrySet()) { Vector column = new Vector(); + List rbs = entry.getValue(); for (String key : sortKeys) { - column.add(entry.getValue().getLocText(key)); + column.add(readText(rbs, key)); } data.put(entry.getKey(), column); } @@ -140,6 +158,19 @@ public class LocalePane extends BasicPane { } } + private String readText(List rbs, String key) { + for (ResourceBundle rb : rbs) { + if (rb.containsKey(key)) { + return rb.getString(key); + } + } + return null; + } + + private ResourceBundle loadResourceBundle(String dir, Locale locale) { + return ResourceBundle.getBundle(dir, locale, Inter.class.getClassLoader()); + } + private void initCustomProperties() throws Exception { Env env = FRContext.getCurrentEnv(); if (env == null) { @@ -176,17 +207,6 @@ public class LocalePane extends BasicPane { } } - private Properties loadLocaleProperties(String name) { - Properties properties = new Properties(); - InputStream inputStream = IOUtils.readResource("/com/fr/general/locale/" + name); - try { - properties.load(inputStream); - } catch (IOException e) { - FRLogger.getLogger().error(e.getMessage()); - } - return properties; - } - /** * 保存当前编辑的国际化 * diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java index 3cd2b830c8..8402c68197 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartDataPane.java @@ -72,7 +72,7 @@ public class ChartDataPane extends AbstractChartAttrPane { public boolean isSupportCellData() { return supportCellData; } - + /** * 设置数据界面是否支持单元格 */ @@ -109,5 +109,4 @@ public class ChartDataPane extends AbstractChartAttrPane { public void refreshChartDataPane(ChartCollection collection){ this.populate(collection); } - } \ No newline at end of file From 7bc4c19a60d8dc22af60472f2d089fc3606ec643 Mon Sep 17 00:00:00 2001 From: neil Date: Fri, 18 Nov 2016 10:00:36 +0800 Subject: [PATCH 073/139] ct --- designer_base/src/com/fr/design/actions/file/LocalePane.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/designer_base/src/com/fr/design/actions/file/LocalePane.java b/designer_base/src/com/fr/design/actions/file/LocalePane.java index e22d8c258b..4dd25c5048 100644 --- a/designer_base/src/com/fr/design/actions/file/LocalePane.java +++ b/designer_base/src/com/fr/design/actions/file/LocalePane.java @@ -210,8 +210,6 @@ public class LocalePane extends BasicPane { /** * 保存当前编辑的国际化 * - * - * @date 2014-9-30-下午3:10:30 */ public void save() { Env env = FRContext.getCurrentEnv(); From 66766b87e10a6fcb968bf94d0cdef1ccefcd3cd5 Mon Sep 17 00:00:00 2001 From: neil Date: Fri, 18 Nov 2016 10:15:20 +0800 Subject: [PATCH 074/139] ct --- .../src/com/fr/start/Designer4Chart.java | 406 ++++++++++++++++++ 1 file changed, 406 insertions(+) create mode 100644 designer_chart/src/com/fr/start/Designer4Chart.java diff --git a/designer_chart/src/com/fr/start/Designer4Chart.java b/designer_chart/src/com/fr/start/Designer4Chart.java new file mode 100644 index 0000000000..83de32da70 --- /dev/null +++ b/designer_chart/src/com/fr/start/Designer4Chart.java @@ -0,0 +1,406 @@ +/* + * Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. + */ + +package com.fr.start; + +import com.fr.base.BaseUtils; +import com.fr.base.FRContext; +import com.fr.design.DesignerEnvManager; +import com.fr.design.actions.file.WebPreviewUtils; +import com.fr.design.actions.help.AboutAction; +import com.fr.design.constants.UIConstants; +import com.fr.design.file.HistoryTemplateListPane; +import com.fr.design.file.MutilTempalteTabPane; +import com.fr.design.file.NewTemplatePane; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.itoolbar.UILargeToolbar; +import com.fr.design.mainframe.*; +import com.fr.design.mainframe.actions.*; +import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; +import com.fr.design.menu.*; +import com.fr.design.module.ChartStartModule; +import com.fr.general.FRFont; +import com.fr.general.Inter; +import com.fr.general.web.ParameterConsts; +import com.fr.stable.Constants; + +import javax.swing.*; +import javax.swing.border.MatteBorder; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.InputEvent; +import java.awt.event.KeyEvent; +import java.util.ArrayList; + +/** + * Created by IntelliJ IDEA. + * Author : daisy + * Version: 6.5.6 + * Date: 14-10-13 + * Time: 上午11:02 + */ +public class Designer4Chart extends BaseDesigner { + private static final int TOOLBAR_HEIGHT = 53; + private static final int TOOLBAR_WIDTH =60+34+7+1+7 ; + private static final int GAP = 7; + private static final int EAST_WIDTH = 292; + private static final int MESSAGEPORT = 51460; + private UIButton saveButton; + private UIButton undo; + private UIButton redo; + private UIButton run; + private UIButton copy; + + /** + * 主函数 + * + * @param args 入口参数 + */ + public static void main(String[] args) { + new Designer4Chart(args); + } + + public Designer4Chart(String[] args) { + super(args); + } + + @Override + protected String module2Start() { + EastRegionContainerPane.getInstance().setDownPaneVisible(false); + EastRegionContainerPane.getInstance().setContainerWidth(EAST_WIDTH); + return ChartStartModule.class.getName(); + } + + protected void initLanguage() { + //这两句的位置不能随便调换,因为会影响语言切换的问题 + FRContext.setLanguage(Constants.LANGUAGE_ENGLISH); + } + + protected void initDefaultFont(){ + FRContext.getDefaultValues().setFRFont(FRFont.getInstance("Meiryo", Font.PLAIN, 9)); + } + + /** + * build得路径 + * @return build得路径 + */ + public String buildPropertiesPath() { + return "/com/fr/chart/base/build.properties"; + } + + /** + * 创建文件菜单项 + * @return 菜单项 + */ + public ShortCut[] createNewFileShortCuts() { + ArrayList shortCuts = new ArrayList(); + shortCuts.add(new NewChartAction()); + return shortCuts.toArray(new ShortCut[shortCuts.size()]); + } + + /** + * 创建新模版 + * @return 模版 + */ + public JTemplate createNewTemplate() { + return new JChart(); + } + + protected void resetToolTips(){ + copy.setToolTipText(Inter.getLocText("FR-Chart-Action_Copy")+"JS"); + run.setToolTipText(PREVIEW.getMenuKeySetName()); + } + + /** + * 创建设计器上几个比较大的图标:新建cpt,保存,前进,后退,运行。 + * + * @return 返回大图标对应的工具栏 + */ + public UILargeToolbar createLargeToolbar() { + + UILargeToolbar largeToolbar = new UILargeToolbar(FlowLayout.LEFT){ + public Dimension getPreferredSize() { + return new Dimension(TOOLBAR_WIDTH ,TOOLBAR_HEIGHT); + } + }; + largeToolbar.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 4)); + largeToolbar.add(new JPanel() { + public Dimension getPreferredSize() { + Dimension dim = super.getPreferredSize(); + dim.width = 1; + return dim; + } + }); + createRunButton(); + largeToolbar.add(run); + largeToolbar.add(new JPanel() { + public Dimension getPreferredSize() { + Dimension dim = super.getPreferredSize(); + dim.width = GAP; + return dim; + } + }); + largeToolbar.addSeparator(new Dimension(2, 42)); + largeToolbar.add(new JPanel() { + public Dimension getPreferredSize() { + Dimension dim = super.getPreferredSize(); + dim.width = GAP; + return dim; + } + }); + createCopyButton(); + largeToolbar.add(copy); + largeToolbar.add(new JPanel() { + public Dimension getPreferredSize() { + Dimension dim = super.getPreferredSize(); + dim.width = GAP; + return dim; + } + }); + largeToolbar.addSeparator(new Dimension(2, 42)); + + largeToolbar.setBorder(new MatteBorder(new Insets(0, 0, 1, 0), UIConstants.LINE_COLOR)); + return largeToolbar; + } + + protected int getStartPort(){ + return MESSAGEPORT; + } + + protected DesignerFrame createDesignerFrame(){ + + return new DesignerFrame4Chart(this); + } + + /** + * 创建上面一排的工具栏按钮 + * + * @return 按钮 + */ + public UIButton[] createUp() { + return new UIButton[]{createSaveButton(), createUndoButton(), createRedoButton()}; + } + + private UIButton createRunButton() { + run = new UIButton(BaseUtils.readIcon("com/fr/design/images/buttonicon/pageb24.png")) { + public Dimension getPreferredSize() { + return new Dimension(34, 43); + } + }; + run.setToolTipText(PREVIEW.getMenuKeySetName()); + run.set4ChartLargeToolButton(); + run.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); + if (jt == null) { + return; + } + onChartPreview(jt); + } + }); + return run; + } + + public static void onChartPreview(JTemplate jt) { + WebPreviewUtils.actionPerformed(jt, null, ParameterConsts.CHARTLET); + } + + public static final MenuKeySet PREVIEW = new MenuKeySet() { + @Override + public char getMnemonic() { + return 'P'; + } + + @Override + public String getMenuName() { + return Inter.getLocText("FR-Chart-Template_Preview"); + } + + @Override + public KeyStroke getKeyStroke() { + return KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_MASK); + } + }; + + + private UIButton createCopyButton(){ + copy = new UIButton(BaseUtils.readIcon("com/fr/design/images/copyjs.png")) { + public Dimension getPreferredSize() { + return new Dimension(34, 43); + } + }; + copy.setToolTipText(Inter.getLocText("FR-Chart-Action_Copy")+"JS"); + copy.set4ChartLargeToolButton(); + copy.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); + if (jt == null) { + return; + } + DesignerContext.getDesignerFrame().refreshToolbar(); + + jt.stopEditing(); + if (!jt.isSaved() && !jt.saveTemplate2Env()) { + return; + } + //复制代码 + jt.copyJS(); + } + }); + return copy; + } + + private UIButton createSaveButton() { + saveButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/save.png")); + saveButton.setToolTipText(KeySetUtils.SAVE_TEMPLATE.getMenuKeySetName()); + saveButton.set4ToolbarButton(); + saveButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); + jt.stopEditing(); + jt.saveTemplate(); + jt.requestFocus(); + } + }); + return saveButton; + } + + private UIButton createUndoButton() { + undo = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/undo.png")); + undo.setToolTipText(KeySetUtils.UNDO.getMenuKeySetName()); + undo.set4ToolbarButton(); + undo.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); + if (jt != null) { + jt.undo(); + } + } + }); + return undo; + } + + private UIButton createRedoButton() { + redo = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/redo.png")); + redo.setToolTipText(KeySetUtils.REDO.getMenuKeySetName()); + redo.set4ToolbarButton(); + redo.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); + if (jt != null) { + jt.redo(); + } + } + }); + return redo; + } + + /** + * 重置工具条 + * @param toolbarComponent 工具栏 + * @param plus 对象 + * @return 工具条对象 + */ + public JComponent resetToolBar(JComponent toolbarComponent, ToolBarMenuDockPlus plus) { + return plus.toolBar4Authority(); + } + + public NewTemplatePane getNewTemplatePane(){ + return new NewTemplatePane() { + @Override + public Icon getNew() { + return BaseUtils.readIcon("/com/fr/design/images/newchart_normal.png"); + } + + @Override + public Icon getMouseOverNew() { + return BaseUtils.readIcon("/com/fr/design/images/newchart_over.png"); + } + + @Override + public Icon getMousePressNew() { + return BaseUtils.readIcon("/com/fr/design/images/newchart_press.png"); + } + }; + }; + + @Override + protected void refreshLargeToolbarState() { + JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); + if (jt == null) { + return; + } + saveButton.setEnabled(!jt.isSaved()); + MutilTempalteTabPane.getInstance().refreshOpenedTemplate(HistoryTemplateListPane.getInstance().getHistoryList()); + MutilTempalteTabPane.getInstance().repaint(); + if (DesignerEnvManager.getEnvManager().isSupportUndo()) { + undo.setEnabled(jt.canUndo()); + redo.setEnabled(jt.canRedo()); + } else { + undo.setEnabled(false); + redo.setEnabled(false); + } + } + + protected SplashPane createSplashPane() { + return new ChartSplashPane(); + } + + /** + *更新工具栏 + */ + public void updateToolBarDef() { + refreshLargeToolbarState(); + } + + protected void addCloseCurrentTemplateAction(MenuDef menuDef) { + + } + + protected void addPreferenceAction(MenuDef menuDef) { + + } + + protected void addSwitchExistEnvAction(MenuDef menuDef) { + + } + + @Override + public MenuDef[] createTemplateShortCuts(ToolBarMenuDockPlus plus) { + MenuDef menuDef = new MenuDef(KeySetUtils.EXPORT_CHART.getMenuKeySetName(), KeySetUtils.EXPORT_CHART.getMnemonic()); + menuDef.addShortCut(plus.shortcut4ExportMenu()); + return new MenuDef[] {menuDef}; + } + + /** + * 创建帮助菜单得菜单项 + * @return 菜单项 + */ + public ShortCut[] createHelpShortCuts() { + resetToolTips(); + return new ShortCut[]{ + new ChartWebAction(), + SeparatorDef.DEFAULT, + new ChartFeedBackAciton(), + SeparatorDef.DEFAULT, + new UpdateOnlineAction(), + new AboutAction() + }; + } + + protected ShortCut openTemplateAction(){ + return new OpenChartAction(); + } + + protected String[] startFileSuffix(){ + return new String[]{".crt"}; + } + +} \ No newline at end of file From b8eff2c39ae367bced338c419f82be3fad997ed5 Mon Sep 17 00:00:00 2001 From: neil Date: Fri, 18 Nov 2016 11:08:06 +0800 Subject: [PATCH 075/139] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=EF=BC=8C=20=E5=86=B2=E7=AA=81=E4=BF=AE=E6=AD=A3.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/start/Designer4Chart.java | 406 ------------------ 1 file changed, 406 deletions(-) delete mode 100644 designer_chart/src/com/fr/start/Designer4Chart.java diff --git a/designer_chart/src/com/fr/start/Designer4Chart.java b/designer_chart/src/com/fr/start/Designer4Chart.java deleted file mode 100644 index 8773191553..0000000000 --- a/designer_chart/src/com/fr/start/Designer4Chart.java +++ /dev/null @@ -1,406 +0,0 @@ -/* - * Copyright (c) 2001-2014,FineReport Inc, All Rights Reserved. - */ - -package com.fr.start; - -import com.fr.base.BaseUtils; -import com.fr.base.FRContext; -import com.fr.design.DesignerEnvManager; -import com.fr.design.actions.file.WebPreviewUtils; -import com.fr.design.actions.help.AboutAction; -import com.fr.design.constants.UIConstants; -import com.fr.design.file.HistoryTemplateListPane; -import com.fr.design.file.MutilTempalteTabPane; -import com.fr.design.file.NewTemplatePane; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.gui.itoolbar.UILargeToolbar; -import com.fr.design.mainframe.*; -import com.fr.design.mainframe.actions.*; -import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; -import com.fr.design.menu.*; -import com.fr.design.module.ChartStartModule; -import com.fr.general.FRFont; -import com.fr.general.Inter; -import com.fr.general.web.ParameterConsts; -import com.fr.stable.Constants; - -import javax.swing.*; -import javax.swing.border.MatteBorder; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.InputEvent; -import java.awt.event.KeyEvent; -import java.util.ArrayList; - -/** - * Created by IntelliJ IDEA. - * Author : daisy - * Version: 6.5.6 - * Date: 14-10-13 - * Time: 上午11:02 - */ -public class Designer4Chart extends BaseDesigner { - private static final int TOOLBAR_HEIGHT = 53; - private static final int TOOLBAR_WIDTH =60+34+7+1+7 ; - private static final int GAP = 7; - private static final int EAST_WIDTH = 292; - private static final int MESSAGEPORT = 51460; - private UIButton saveButton; - private UIButton undo; - private UIButton redo; - private UIButton run; - private UIButton copy; - - /** - * 主函数 - * - * @param args 入口参数 - */ - public static void main(String[] args) { - new Designer4Chart(args); - } - - public Designer4Chart(String[] args) { - super(args); - } - - @Override - protected String module2Start() { - EastRegionContainerPane.getInstance().setDownPaneVisible(false); - EastRegionContainerPane.getInstance().setContainerWidth(EAST_WIDTH); - return ChartStartModule.class.getName(); - } - - protected void initLanguage() { - //这两句的位置不能随便调换,因为会影响语言切换的问题 - FRContext.setLanguage(Constants.LANGUAGE_ENGLISH); - } - - protected void initDefaultFont(){ - FRContext.getDefaultValues().setFRFont(FRFont.getInstance("Meiryo", Font.PLAIN, 9)); - } - - /** - * build得路径 - * @return build得路径 - */ - public String buildPropertiesPath() { - return "/com/fr/chart/base/build.properties"; - } - - /** - * 创建文件菜单项 - * @return 菜单项 - */ - public ShortCut[] createNewFileShortCuts() { - ArrayList shortCuts = new ArrayList(); - shortCuts.add(new NewChartAction()); - return shortCuts.toArray(new ShortCut[shortCuts.size()]); - } - - /** - * 创建新模版 - * @return 模版 - */ - public JTemplate createNewTemplate() { - return new JChart(); - } - - protected void resetToolTips(){ - copy.setToolTipText(Inter.getLocText("FR-Chart-Action_Copy")+"JS"); - run.setToolTipText(PREVIEW.getMenuKeySetName()); - } - - /** - * 创建设计器上几个比较大的图标:新建cpt,保存,前进,后退,运行。 - * - * @return 返回大图标对应的工具栏 - */ - public UILargeToolbar createLargeToolbar() { - - UILargeToolbar largeToolbar = new UILargeToolbar(FlowLayout.LEFT){ - public Dimension getPreferredSize() { - return new Dimension(TOOLBAR_WIDTH ,TOOLBAR_HEIGHT); - } - }; - largeToolbar.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 4)); - largeToolbar.add(new JPanel() { - public Dimension getPreferredSize() { - Dimension dim = super.getPreferredSize(); - dim.width = 1; - return dim; - } - }); - createRunButton(); - largeToolbar.add(run); - largeToolbar.add(new JPanel() { - public Dimension getPreferredSize() { - Dimension dim = super.getPreferredSize(); - dim.width = GAP; - return dim; - } - }); - largeToolbar.addSeparator(new Dimension(2, 42)); - largeToolbar.add(new JPanel() { - public Dimension getPreferredSize() { - Dimension dim = super.getPreferredSize(); - dim.width = GAP; - return dim; - } - }); - createCopyButton(); - largeToolbar.add(copy); - largeToolbar.add(new JPanel() { - public Dimension getPreferredSize() { - Dimension dim = super.getPreferredSize(); - dim.width = GAP; - return dim; - } - }); - largeToolbar.addSeparator(new Dimension(2, 42)); - - largeToolbar.setBorder(new MatteBorder(new Insets(0, 0, 1, 0), UIConstants.LINE_COLOR)); - return largeToolbar; - } - - protected int getStartPort(){ - return MESSAGEPORT; - } - - protected DesignerFrame createDesignerFrame(){ - - return new DesignerFrame4Chart(this); - } - - /** - * 创建上面一排的工具栏按钮 - * - * @return 按钮 - */ - public UIButton[] createUp() { - return new UIButton[]{createSaveButton(), createUndoButton(), createRedoButton()}; - } - - private UIButton createRunButton() { - run = new UIButton(BaseUtils.readIcon("com/fr/design/images/buttonicon/pageb24.png")) { - public Dimension getPreferredSize() { - return new Dimension(34, 43); - } - }; - run.setToolTipText(PREVIEW.getMenuKeySetName()); - run.set4ChartLargeToolButton(); - run.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - if (jt == null) { - return; - } - onChartPreview(jt); - } - }); - return run; - } - - public static void onChartPreview(JTemplate jt) { - WebPreviewUtils.actionPerformed(jt, null, ParameterConsts.CHARTLET); - } - - public static final MenuKeySet PREVIEW = new MenuKeySet() { - @Override - public char getMnemonic() { - return 'P'; - } - - @Override - public String getMenuName() { - return Inter.getLocText("FR-Chart-Template_Preview"); - } - - @Override - public KeyStroke getKeyStroke() { - return KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_MASK); - } - }; - - - private UIButton createCopyButton(){ - copy = new UIButton(BaseUtils.readIcon("com/fr/design/images/copyjs.png")) { - public Dimension getPreferredSize() { - return new Dimension(34, 43); - } - }; - copy.setToolTipText(Inter.getLocText("FR-Chart-Action_Copy")+"JS"); - copy.set4ChartLargeToolButton(); - copy.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - if (jt == null) { - return; - } - DesignerContext.getDesignerFrame().refreshToolbar(); - - jt.stopEditing(); - if (!jt.isSaved() && !jt.saveTemplate2Env()) { - return; - } - //复制代码 - jt.copyJS(); - } - }); - return copy; - } - - private UIButton createSaveButton() { - saveButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/save.png")); - saveButton.setToolTipText(KeySetUtils.SAVE_TEMPLATE.getMenuKeySetName()); - saveButton.set4ToolbarButton(); - saveButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - jt.stopEditing(); - jt.saveTemplate(); - jt.requestFocus(); - } - }); - return saveButton; - } - - private UIButton createUndoButton() { - undo = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/undo.png")); - undo.setToolTipText(KeySetUtils.UNDO.getMenuKeySetName()); - undo.set4ToolbarButton(); - undo.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - if (jt != null) { - jt.undo(); - } - } - }); - return undo; - } - - private UIButton createRedoButton() { - redo = new UIButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/redo.png")); - redo.setToolTipText(KeySetUtils.REDO.getMenuKeySetName()); - redo.set4ToolbarButton(); - redo.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - if (jt != null) { - jt.redo(); - } - } - }); - return redo; - } - - /** - * 重置工具条 - * @param toolbarComponent 工具栏 - * @param plus 对象 - * @return 工具条对象 - */ - public JComponent resetToolBar(JComponent toolbarComponent, ToolBarMenuDockPlus plus) { - return plus.toolBar4Authority(); - } - - public NewTemplatePane getNewTemplatePane(){ - return new NewTemplatePane() { - @Override - public Icon getNew() { - return BaseUtils.readIcon("/com/fr/design/images/newchart_normal.png"); - } - - @Override - public Icon getMouseOverNew() { - return BaseUtils.readIcon("/com/fr/design/images/newchart_over.png"); - } - - @Override - public Icon getMousePressNew() { - return BaseUtils.readIcon("/com/fr/design/images/newchart_press.png"); - } - }; - }; - - @Override - protected void refreshLargeToolbarState() { - JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - if (jt == null) { - return; - } - saveButton.setEnabled(!jt.isSaved()); - MutilTempalteTabPane.getInstance().refreshOpenedTemplate(HistoryTemplateListPane.getInstance().getHistoryList()); - MutilTempalteTabPane.getInstance().repaint(); - if (DesignerEnvManager.getEnvManager().isSupportUndo()) { - undo.setEnabled(jt.canUndo()); - redo.setEnabled(jt.canRedo()); - } else { - undo.setEnabled(false); - redo.setEnabled(false); - } - } - - protected SplashPane createSplashPane() { - return new ChartSplashPane(); - } - - /** - *更新工具栏 - */ - public void updateToolBarDef() { - refreshLargeToolbarState(); - } - - protected void addCloseCurrentTemplateAction(MenuDef menuDef) { - - } - - protected void addPreferenceAction(MenuDef menuDef) { - - } - - protected void addSwitchExistEnvAction(MenuDef menuDef) { - - } - - @Override - public MenuDef[] createTemplateShortCuts(ToolBarMenuDockPlus plus) { - MenuDef menuDef = new MenuDef(KeySetUtils.EXPORT_CHART.getMenuKeySetName(), KeySetUtils.EXPORT_CHART.getMnemonic()); - menuDef.addShortCut(plus.shortcut4ExportMenu()); - return new MenuDef[] {menuDef}; - } - - /** - * 创建帮助菜单得菜单项 - * @return 菜单项 - */ - public ShortCut[] createHelpShortCuts() { - resetToolTips(); - return new ShortCut[]{ - new ChartWebAction(), - SeparatorDef.DEFAULT, - //new ChartFeedBackAciton(), - //SeparatorDef.DEFAULT, - new UpdateOnlineAction(), - new AboutAction() - }; - } - - protected ShortCut openTemplateAction(){ - return new OpenChartAction(); - } - - protected String[] startFileSuffix(){ - return new String[]{".crt"}; - } - -} \ No newline at end of file From 4ed9fb083ea862e62f5d37a2d338d424bd1f7e37 Mon Sep 17 00:00:00 2001 From: neil Date: Fri, 18 Nov 2016 11:12:48 +0800 Subject: [PATCH 076/139] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=EF=BC=8C=20=E4=BF=AE=E5=A4=8Dimport?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/design/parameter/ParameterDefinitePane.java | 1 - 1 file changed, 1 deletion(-) diff --git a/designer/src/com/fr/design/parameter/ParameterDefinitePane.java b/designer/src/com/fr/design/parameter/ParameterDefinitePane.java index eb02932b67..a0e8d80b2b 100644 --- a/designer/src/com/fr/design/parameter/ParameterDefinitePane.java +++ b/designer/src/com/fr/design/parameter/ParameterDefinitePane.java @@ -22,7 +22,6 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.AuthorityToolBarPane; import com.fr.design.mainframe.EastRegionContainerPane; import com.fr.design.mainframe.JWorkBook; -import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; import com.fr.design.menu.*; import com.fr.design.module.DesignModuleFactory; From d81d0471d1c86039fa576a9775ae2f4521720baa Mon Sep 17 00:00:00 2001 From: sunmondong Date: Fri, 18 Nov 2016 14:15:20 +0800 Subject: [PATCH 077/139] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.master.gradle | 86 +++++++++++++++++++++++++++++ designer_chart/build.dev.gradle | 57 +++++++++++++------ designer_chart/build.master.gradle | 43 ++++++++++----- designer_chart/build.release.gradle | 45 ++++++++++----- designer_form/build.master.gradle | 83 ++++++++++++++++++++++++++++ 5 files changed, 270 insertions(+), 44 deletions(-) create mode 100644 build.master.gradle create mode 100644 designer_form/build.master.gradle diff --git a/build.master.gradle b/build.master.gradle new file mode 100644 index 0000000000..c5cc1b92da --- /dev/null +++ b/build.master.gradle @@ -0,0 +1,86 @@ +apply plugin: "java" +tasks.withType(JavaCompile){ + options.encoding = "UTF-8" +} + +def basicDir="../../" +def libDir="${basicDir}/finereport-lib-stable" +//获取什么分支名 +FileTree files =fileTree(dir:"./",include:"build.*.gradle") +def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ("\\")) +def branchName=buildDir.substring(buildDir.lastIndexOf ("\\")+1) + +task appletJar<<{ + + ant{ + mkdir(dir:"${libDir}/tmp-${branchName}") + mkdir(dir:"build/classes/") + copy(todir:"build/classes/"){ + fileset(dir:"${basicDir}/finereport-core-stable/${branchName}/build/classes/main") + + fileset(dir:"${basicDir}/finereport-chart-stable/${branchName}/build/classes/main") + + fileset(dir:"${basicDir}/finereport-report-stable/${branchName}/build/classes/main") + + fileset(dir:"${basicDir}/finereport-platform-stable/${branchName}/build/classes/main") + + fileset(dir:"${basicDir}/finereport-performance-stable/${branchName}/build/classes/main") + + } + unjar(src:"${libDir}/${branchName}/3rd.jar",dest:"${libDir}/tmp-${branchName}") + unjar(src:"${libDir}/${branchName}/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") + jar(jarfile:"build/libs/fr-applet-8.0.jar"){ + fileset(dir:"build/classes"){ + exclude(name:"*.*") + exclude(name:"bin/*.*") + exclude(name:"classes/**") + exclude(name:"com/fr/schedule/**") + exclude(name:"com/fr/cell/**") + exclude(name:"com/fr/dialog/**") + exclude(name:"com/fr/view/**") + exclude(name:"com/fr/web/**") + exclude(name:"com/fr/fs/**") + exclude(name:"com/fr/design/**") + exclude(name:"com/fr/start/**") + exclude(name:"com/fr/process/**") + } + fileset(dir:"${libDir}/tmp-${branchName}"){ + include(name:"javax/mail/**") + include(name:"javax/servlet/**") + include(name:"org/freehep/**") + include(name:"com/fr/third/JAI/**") + include(name:"com/fr/third/antlr/**") + include(name:"com/fr/third/javax/**") + include(name:"com/sun/xml/**") + include(name:"javax/xml/**") + + } + fileset(dir:"build/classes"){ + include(name:"com/fr/web/*.class") + include(name:"com/fr/web/attr/*.class") + } + } + delete(dir:"${libDir}/tmp-${branchName}") + def jdk6home= "D:/FineReport/develop/java/jdk1.6u35" + def keystore="frapplet.store" + def keycert="fr.cert" + def keypassword="123456" + def keyalias="fr" + + exec(executable:"${jdk6home}/bin/keytool"){ + arg(line:"-genkey -dname "CN=FineReport L=NanJing C=China" -keystore ${keystore} -alias ${keyalias} -validity 3650 -storepass ${keypassword}") + } + exec(executable:"${jdk6home}/bin/keytool"){ + arg(line:"-export -keystore ${keystore} -alias ${keyalias} -file ${keycert} -storepass ${keypassword}") + } + + exec(executable:"${jdk6home}/bin/jarsigner"){ + arg(line:"-keystore ${keystore} -storepass ${keypassword} 'build/libs/fr-applet-8.0.jar' ${keyalias}") + } + delete(file:"${keystore}") + delete(file:"${keycert}") + delete(dir:"build/classes") + + } + +} \ No newline at end of file diff --git a/designer_chart/build.dev.gradle b/designer_chart/build.dev.gradle index ba6df992bd..2b727caac9 100644 --- a/designer_chart/build.dev.gradle +++ b/designer_chart/build.dev.gradle @@ -4,60 +4,83 @@ tasks.withType(JavaCompile){ options.encoding = 'UTF-8' } //指定构建的jdk版本 -sourceCompatibility=1.7 -//指定生成jar包的版本 +sourceCompatibility=1.8 +//指定生成的jar包版本 version='8.0' def srcDir="." -//对生成的jar包进行重命名 +//指明生成jar包的名字 jar{ - baseName='fr-designer-chart' + baseName='fr-designer-report' } - +//源码所在位置 sourceSets{ main{ java{ - srcDirs=["${srcDir}/src"] + srcDirs=["${srcDir}/src", +"${srcDir}/../designer/src"] } } } + +//获取什么分支名 FileTree files =fileTree(dir:'./',include:'build.*.gradle') def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ('\\')) buildDir=buildDir.substring(0,buildDir.lastIndexOf ('\\')) def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) -//指定外部依赖 -dependencies{ -compile fileTree(dir:"../../../finereport-lib-stable/${branchName}",include:'**/*.jar') -compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") +//显示依赖jar包 +FileTree f=fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") +f.each{File file-> + println "----${file.path}" +} +//声明外部依赖 +dependencies{ + compile fileTree(dir:"../../../finereport-lib-stable/${branchName}",include:'**/*.jar') + compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") testCompile 'junit:junit:4.12' } -//将非.java 文件复制到classes文件夹下参与打包 -task copyFile(type:Copy,dependsOn:compileJava){ - copy{ - from ("${srcDir}/src"){ - exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' +//指明无法编译文件所在路径 +def dataContent ={def dir -> + copySpec{ + from ("${dir}"){ + exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' + } } - into 'build/classes/main' +} + +//将非.java文件复制到classes文件夹下 参与打包 +task copyFile(type:Copy,dependsOn:compileJava){ + copy{ + with dataContent.call("${srcDir}/src") + with dataContent.call("${srcDir}/../designer/src") + into ('build/classes/main') } } + //压缩项目中的js文件 task compressJS{ ant.taskdef(name:'yuicompress',classname:'com.yahoo.platform.yui.compressor.YUICompressTask'){ classpath { + fileset(dir:'../../../finereport-lib4build-stable',includes:'**/*.jar') } } - ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false",charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ + ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false", charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ fileset (dir:"${srcDir}/src"){ include (name:'**/*.js') include (name:'**/*.css') + + } + fileset (dir:"${srcDir}/../designer/src"){ + include (name:'**/*.js') + include (name:'**/*.css') } } diff --git a/designer_chart/build.master.gradle b/designer_chart/build.master.gradle index ba6df992bd..9c9764727c 100644 --- a/designer_chart/build.master.gradle +++ b/designer_chart/build.master.gradle @@ -5,48 +5,60 @@ tasks.withType(JavaCompile){ } //指定构建的jdk版本 sourceCompatibility=1.7 -//指定生成jar包的版本 +//指定生成的jar包版本 version='8.0' def srcDir="." -//对生成的jar包进行重命名 +//指明生成jar包的名字 jar{ - baseName='fr-designer-chart' + baseName='fr-designer-report' } - +//源码所在位置 sourceSets{ main{ java{ - srcDirs=["${srcDir}/src"] + srcDirs=["${srcDir}/src", +"${srcDir}/../designer/src"] } } } + +//获取什么分支名 FileTree files =fileTree(dir:'./',include:'build.*.gradle') def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ('\\')) buildDir=buildDir.substring(0,buildDir.lastIndexOf ('\\')) def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) -//指定外部依赖 +//声明外部依赖 dependencies{ compile fileTree(dir:"../../../finereport-lib-stable/${branchName}",include:'**/*.jar') compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") testCompile 'junit:junit:4.12' } -//将非.java 文件复制到classes文件夹下参与打包 -task copyFile(type:Copy,dependsOn:compileJava){ - copy{ - from ("${srcDir}/src"){ - exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' +//指明无法编译文件所在路径 +def dataContent ={def dir -> + copySpec{ + from ("${dir}"){ + exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' + } } - into 'build/classes/main' +} + +//将非.java文件复制到classes文件夹下 参与打包 +task copyFile(type:Copy,dependsOn:compileJava){ + copy{ + with dataContent.call("${srcDir}/src") + with dataContent.call("${srcDir}/../designer/src") + into ('build/classes/main') } } + //压缩项目中的js文件 task compressJS{ ant.taskdef(name:'yuicompress',classname:'com.yahoo.platform.yui.compressor.YUICompressTask'){ @@ -54,10 +66,15 @@ task compressJS{ fileset(dir:'../../../finereport-lib4build-stable',includes:'**/*.jar') } } - ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false",charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ + ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false", charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ fileset (dir:"${srcDir}/src"){ include (name:'**/*.js') include (name:'**/*.css') + + } + fileset (dir:"${srcDir}/../designer/src"){ + include (name:'**/*.js') + include (name:'**/*.css') } } diff --git a/designer_chart/build.release.gradle b/designer_chart/build.release.gradle index e97176e24c..90abcb81ee 100644 --- a/designer_chart/build.release.gradle +++ b/designer_chart/build.release.gradle @@ -5,59 +5,76 @@ tasks.withType(JavaCompile){ } //指定构建的jdk版本 sourceCompatibility=1.8 -//指定生成jar包的版本 +//指定生成的jar包版本 version='8.0' def srcDir="." -//对生成的jar包进行重命名 +//指明生成jar包的名字 jar{ - baseName='fr-designer-chart' + baseName='fr-designer-report' } - +//源码所在位置 sourceSets{ main{ java{ - srcDirs=["${srcDir}/src"] + srcDirs=["${srcDir}/src", +"${srcDir}/../designer/src"] } } } + +//获取什么分支名 FileTree files =fileTree(dir:'./',include:'build.*.gradle') def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ('\\')) buildDir=buildDir.substring(0,buildDir.lastIndexOf ('\\')) def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) - -//指定外部依赖 +//声明外部依赖 dependencies{ compile fileTree(dir:'../../../finereport-lib-stable/master',include:'**/*.jar') compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") testCompile 'junit:junit:4.12' } -//将非.java 文件复制到classes文件夹下参与打包 -task copyFile(type:Copy,dependsOn:compileJava){ - copy{ - from ("${srcDir}/src"){ - exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' +//指明无法编译文件所在路径 +def dataContent ={def dir -> + copySpec{ + from ("${dir}"){ + exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' + } } - into 'build/classes/main' +} + +//将非.java文件复制到classes文件夹下 参与打包 +task copyFile(type:Copy,dependsOn:compileJava){ + copy{ + with dataContent.call("${srcDir}/src") + with dataContent.call("${srcDir}/../designer/src") + into ('build/classes/main') } } + //压缩项目中的js文件 task compressJS{ ant.taskdef(name:'yuicompress',classname:'com.yahoo.platform.yui.compressor.YUICompressTask'){ classpath { + fileset(dir:'../../../finereport-lib4build-stable',includes:'**/*.jar') } } - ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false",charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ + ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false", charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ fileset (dir:"${srcDir}/src"){ include (name:'**/*.js') include (name:'**/*.css') + + } + fileset (dir:"${srcDir}/../designer/src"){ + include (name:'**/*.js') + include (name:'**/*.css') } } diff --git a/designer_form/build.master.gradle b/designer_form/build.master.gradle new file mode 100644 index 0000000000..9c9764727c --- /dev/null +++ b/designer_form/build.master.gradle @@ -0,0 +1,83 @@ + +apply plugin: 'java' +tasks.withType(JavaCompile){ + options.encoding = 'UTF-8' +} +//指定构建的jdk版本 +sourceCompatibility=1.7 +//指定生成的jar包版本 +version='8.0' + +def srcDir="." + + +//指明生成jar包的名字 +jar{ + baseName='fr-designer-report' +} +//源码所在位置 +sourceSets{ + main{ + java{ + srcDirs=["${srcDir}/src", +"${srcDir}/../designer/src"] + } + } +} + +//获取什么分支名 +FileTree files =fileTree(dir:'./',include:'build.*.gradle') +def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ('\\')) +buildDir=buildDir.substring(0,buildDir.lastIndexOf ('\\')) +def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) + +//声明外部依赖 +dependencies{ +compile fileTree(dir:"../../../finereport-lib-stable/${branchName}",include:'**/*.jar') +compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") + + testCompile 'junit:junit:4.12' +} + +//指明无法编译文件所在路径 +def dataContent ={def dir -> + copySpec{ + from ("${dir}"){ + exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' + } + } +} + +//将非.java文件复制到classes文件夹下 参与打包 +task copyFile(type:Copy,dependsOn:compileJava){ + copy{ + with dataContent.call("${srcDir}/src") + with dataContent.call("${srcDir}/../designer/src") + into ('build/classes/main') + } + +} + + +//压缩项目中的js文件 +task compressJS{ + ant.taskdef(name:'yuicompress',classname:'com.yahoo.platform.yui.compressor.YUICompressTask'){ + classpath { + fileset(dir:'../../../finereport-lib4build-stable',includes:'**/*.jar') + } + } + ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false", charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ + fileset (dir:"${srcDir}/src"){ + include (name:'**/*.js') + include (name:'**/*.css') + + } + fileset (dir:"${srcDir}/../designer/src"){ + include (name:'**/*.js') + include (name:'**/*.css') + } + + } +} +jar.dependsOn compressJS + From 8019d96b9bcc67305b0904b38a90ed3f03ea064e Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Fri, 18 Nov 2016 15:22:45 +0800 Subject: [PATCH 078/139] rt --- designer/src/com/fr/design/parameter/ParameterDefinitePane.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/designer/src/com/fr/design/parameter/ParameterDefinitePane.java b/designer/src/com/fr/design/parameter/ParameterDefinitePane.java index a0e8d80b2b..81e334b9e5 100644 --- a/designer/src/com/fr/design/parameter/ParameterDefinitePane.java +++ b/designer/src/com/fr/design/parameter/ParameterDefinitePane.java @@ -20,7 +20,6 @@ import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.AuthorityToolBarPane; -import com.fr.design.mainframe.EastRegionContainerPane; import com.fr.design.mainframe.JWorkBook; import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; import com.fr.design.menu.*; @@ -245,7 +244,6 @@ public class ParameterDefinitePane extends JPanel implements ToolBarMenuDockPlus isdelayItem.setSelected(reportParameterAttr.isDelayPlaying()); isshowWindowItem.setSelected(reportParameterAttr.isShowWindow()); isEditing = true; - EastRegionContainerPane.getInstance().setParameterHeight(ParameterPropertyPane.getInstance().getPreferredSize().height); ParameterBridge bridge = paraDesignEditor.getParaComponent(); if (parameterUI != null) { bridge.setDelayDisplayContent(reportParameterAttr.isDelayPlaying()); From 064d21899fc6b272edf8ed571c5ebabb76f09b15 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Fri, 18 Nov 2016 15:33:19 +0800 Subject: [PATCH 079/139] rt --- .../src/com/fr/design/mainframe/ElementCasePaneDelegate.java | 1 - 1 file changed, 1 deletion(-) diff --git a/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java b/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java index 79c60d2dc2..67e6975343 100644 --- a/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java +++ b/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java @@ -3,7 +3,6 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; import com.fr.design.fun.MenuHandler; import com.fr.design.menu.KeySetUtils; -import com.fr.design.parameter.ParameterPropertyPane; import com.fr.general.Inter; import com.fr.page.ReportSettingsProvider; import com.fr.design.file.HistoryTemplateListPane; From 7afbc7b19bbcae24c62e588c2651009a70ba07da Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Fri, 18 Nov 2016 15:36:40 +0800 Subject: [PATCH 080/139] rt --- .../src/com/fr/design/mainframe/ElementCasePaneDelegate.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java b/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java index 67e6975343..a3df2ba3e8 100644 --- a/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java +++ b/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java @@ -102,7 +102,7 @@ public class ElementCasePaneDelegate extends ElementCasePane { // 插入菜单 private MenuDef createInsertMenuDef() { - MenuDef menuDef = new MenuDef(Inter.getLocText("M-Insert"), 'I'); + MenuDef menuDef = new MenuDef(Inter.getLocText("FR-Designer_M-Insert"), 'I'); menuDef.setAnchor(MenuHandler.INSERT); // 单元格菜单 menuDef.addShortCut(DeprecatedActionManager.getCellMenu(this)); From 5238a07606504cb04bbc74d4cdb6b7809a4c2c26 Mon Sep 17 00:00:00 2001 From: neil Date: Fri, 18 Nov 2016 16:10:56 +0800 Subject: [PATCH 081/139] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=EF=BC=8C=20=E4=BB=A3=E7=A0=81=E8=BF=98=E5=8E=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/DesignerFrameFileDealerPane.java | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java b/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java index 093f90e5a5..c02862d935 100644 --- a/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java +++ b/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java @@ -27,7 +27,6 @@ import com.fr.file.FILE; import com.fr.file.FileNodeFILE; import com.fr.file.filetree.FileNode; import com.fr.general.ComparatorUtils; -import com.fr.general.GeneralContext; import com.fr.general.Inter; import com.fr.stable.CoreConstants; import com.fr.stable.StableUtils; @@ -43,7 +42,6 @@ import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.util.HashMap; -import java.util.Locale; import java.util.Map; import java.util.Set; @@ -414,13 +412,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt UIButton cancelButton = new UIButton(Inter.getLocText("FR-Designer_Cancel")); - // mod by anchore 16/11/16 - if (ComparatorUtils.equals(Locale.JAPAN, GeneralContext.getLocale())) { - cancelButton.setBounds(250, 90, 80, 25); - } else { - cancelButton.setBounds(180, 90, 80, 25); - } - //cancelButton.setBounds(250, 90, 60, 25); + cancelButton.setBounds(250, 90, 60, 25); cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jd.dispose(); From b595ca9839ed280ceba51035c487fb2f3a32e6ef Mon Sep 17 00:00:00 2001 From: kerry Date: Fri, 18 Nov 2016 16:20:07 +0800 Subject: [PATCH 082/139] =?UTF-8?q?REPORT-578=20=E8=87=AA=E9=80=82?= =?UTF-8?q?=E5=BA=94=E7=BC=96=E8=BE=91=E5=AE=BD=E9=AB=98=E4=B8=8D=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E6=A0=B9=E6=8D=AE=E4=BE=9D=E9=99=84=E4=BD=8D=E7=BD=AE?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapters/layout/FRFitLayoutAdapter.java | 35 +++++++++++++------ .../properties/FRFitLayoutConstraints.java | 1 + 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java index e02dbd8fc9..25b079caf0 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java @@ -42,7 +42,16 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { public static final String WIDGETPANEICONPATH = "/com/fr/web/images/form/resources/layout_absolute.png"; private static final int DEPENDING_SCOPE = 3; private HoverPainter painter; + //区分拖拽和编辑宽高 + private boolean isEdit; + public boolean isEdit() { + return isEdit; + } + + public void setEdit(boolean edit) { + isEdit = edit; + } /** * 构造函数 * @@ -411,13 +420,15 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { // 根据需要依附的位置调整拖拽的坐标值 private int adjustCoordinateByDependingLine(int coordinate, int[] coordinates) { - for (int i = 0; i < coordinates.length; i++) { - if (coordinate == coordinates[i]) { - continue; - } - if (coordinate > coordinates[i] - DEPENDING_SCOPE && coordinate < coordinates[i] + DEPENDING_SCOPE) { - coordinate = coordinates[i]; - break; + if(!isEdit) { + for (int i = 0; i < coordinates.length; i++) { + if (coordinate == coordinates[i]) { + continue; + } + if (coordinate > coordinates[i] - DEPENDING_SCOPE && coordinate < coordinates[i] + DEPENDING_SCOPE) { + coordinate = coordinates[i]; + break; + } } } return coordinate; @@ -425,10 +436,12 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter { // 根据需要依附的位置调整拖拽的距离 private int adjustDiffByDependingLine(int coordinate, int[] coordinates, int diff) { - for (int i = 0; i < coordinates.length; i++) { - if (coordinate + diff > coordinates[i] - DEPENDING_SCOPE && coordinate + diff < coordinates[i] + DEPENDING_SCOPE) { - diff = coordinates[i] - coordinate; - break; + if(!isEdit) { + for (int i = 0; i < coordinates.length; i++) { + if (coordinate + diff > coordinates[i] - DEPENDING_SCOPE && coordinate + diff < coordinates[i] + DEPENDING_SCOPE) { + diff = coordinates[i] - coordinate; + break; + } } } return diff; diff --git a/designer_form/src/com/fr/design/designer/properties/FRFitLayoutConstraints.java b/designer_form/src/com/fr/design/designer/properties/FRFitLayoutConstraints.java index cf177f791a..f95b4242c1 100644 --- a/designer_form/src/com/fr/design/designer/properties/FRFitLayoutConstraints.java +++ b/designer_form/src/com/fr/design/designer/properties/FRFitLayoutConstraints.java @@ -128,6 +128,7 @@ public class FRFitLayoutConstraints implements ConstraintsGroupModel { Rectangle backupBounds = getBounds(); FRFitLayoutAdapter layoutAdapter = (FRFitLayoutAdapter) AdapterBus.searchLayoutAdapter(formDesigner, xCreator); if (layoutAdapter != null) { + layoutAdapter.setEdit(true); layoutAdapter.calculateBounds(backupBounds, bounds, xCreator, row, difference); } return true; From fd46619cd7beb2f2a1343b56eab1466ce34b458c Mon Sep 17 00:00:00 2001 From: anchore Date: Mon, 21 Nov 2016 10:40:21 +0800 Subject: [PATCH 083/139] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=97=A5=E6=96=87?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E4=B8=8B=E9=87=8D=E5=91=BD=E5=90=8D=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E7=B0=BF=E5=AF=B9=E8=AF=9D=E6=A1=86bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/DesignerFrameFileDealerPane.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java b/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java index c02862d935..4191c6dac2 100644 --- a/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java +++ b/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java @@ -27,6 +27,7 @@ import com.fr.file.FILE; import com.fr.file.FileNodeFILE; import com.fr.file.filetree.FileNode; import com.fr.general.ComparatorUtils; +import com.fr.general.GeneralContext; import com.fr.general.Inter; import com.fr.stable.CoreConstants; import com.fr.stable.StableUtils; @@ -42,6 +43,7 @@ import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.util.HashMap; +import java.util.Locale; import java.util.Map; import java.util.Set; @@ -412,7 +414,12 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt UIButton cancelButton = new UIButton(Inter.getLocText("FR-Designer_Cancel")); - cancelButton.setBounds(250, 90, 60, 25); + // mod by anchore 16/11/21 + if (ComparatorUtils.equals(Locale.JAPAN, GeneralContext.getLocale())) { + cancelButton.setBounds(250, 90, 80, 25); + } else { + cancelButton.setBounds(250, 90, 60, 25); + } cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jd.dispose(); From 7206632e1a3394f395a118d467a484f56f9316d7 Mon Sep 17 00:00:00 2001 From: anchore Date: Mon, 21 Nov 2016 16:40:04 +0800 Subject: [PATCH 084/139] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=87=8D=E5=91=BD?= =?UTF-8?q?=E5=90=8D=E6=96=87=E4=BB=B6=E5=AF=B9=E8=AF=9D=E6=A1=86=E7=9A=84?= =?UTF-8?q?=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DesignerFrameFileDealerPane.java | 50 ++++++++++++------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java b/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java index 4191c6dac2..65f8fcb883 100644 --- a/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java +++ b/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java @@ -387,16 +387,29 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt oldName = oldName.replaceAll(suffix, ""); jd = new JDialog(); - jd.setLayout(null); + jd.setLayout(new GridLayout(2, 2)); jd.setModal(true); - UILabel newNameLable = new UILabel(Inter.getLocText("FR-Designer_Enter-New-FileName")); - newNameLable.setBounds(20, 10, 130, 30); + UILabel newNameLabel = new UILabel(Inter.getLocText("FR-Designer_Enter-New-FileName")); +// newNameLabel.setBounds(20, 10, 130, 30); + newNameLabel.setPreferredSize(new Dimension(150, 20)); jt = new UITextField(oldName); jt.getDocument().addDocumentListener(getdoDocumentListener()); jt.selectAll(); - jt.setBounds(130, 15, 150, 20); - jd.add(newNameLable); - jd.add(jt); +// jt.setBounds(130, 15, 150, 20); + jt.setPreferredSize(new Dimension(150, 20)); + + JPanel tmp = new JPanel(); + tmp.add(newNameLabel); + JPanel newNamePanel = new JPanel(new BorderLayout()); + newNamePanel.add(tmp, BorderLayout.SOUTH); + jd.add(newNamePanel); + + tmp = new JPanel(); + tmp.add(jt); + JPanel jtPanel = new JPanel(new BorderLayout()); + jtPanel.add(tmp, BorderLayout.SOUTH); + jd.add(jtPanel); + addUITextFieldListener(nodeFile, path); hintsLabel = new UILabel(); @@ -405,7 +418,8 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt hintsLabel.setVisible(false); confirmButton = new UIButton(Inter.getLocText("FR-Designer_Confirm")); - confirmButton.setBounds(180, 90, 60, 25); +// confirmButton.setBounds(180, 90, 60, 25); + confirmButton.setPreferredSize(new Dimension(80, 30)); confirmButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { confirmClose(nodeFile, path); @@ -413,23 +427,25 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt }); UIButton cancelButton = new UIButton(Inter.getLocText("FR-Designer_Cancel")); +// cancelButton.setBounds(250, 90, 60, 25); + cancelButton.setPreferredSize(new Dimension(80, 30)); - // mod by anchore 16/11/21 - if (ComparatorUtils.equals(Locale.JAPAN, GeneralContext.getLocale())) { - cancelButton.setBounds(250, 90, 80, 25); - } else { - cancelButton.setBounds(250, 90, 60, 25); - } cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jd.dispose(); } }); - jd.add(cancelButton); - jd.add(confirmButton); - jd.add(hintsLabel); - jd.setSize(340, 180); + jd.add(new JPanel()); + + JPanel btPanel = new JPanel(new BorderLayout()); + tmp = new JPanel(); + tmp.add(confirmButton); + tmp.add(cancelButton); + btPanel.add(tmp, BorderLayout.SOUTH); + jd.add(btPanel); + + jd.setSize(380, 200); jd.setTitle(Inter.getLocText("FR-Designer_Rename")); jd.setResizable(false); jd.setAlwaysOnTop(true); From 46edd37529b49a9ee8172d402d41f0f9aff2d222 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Mon, 21 Nov 2016 16:57:42 +0800 Subject: [PATCH 085/139] =?UTF-8?q?=E5=85=BC=E5=AE=B9=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/mainframe/chart/gui/ChartTypePane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java index 6c747c9cc1..758c14367a 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java @@ -294,7 +294,7 @@ public class ChartTypePane extends AbstractChartAttrPane{ // TODO: 2016/11/17 因为现在populate面板时会重新构造面板,所以每次都需要重构 private boolean needReactor(ChartCollection collection) { /*return paneState.getChartID() != collection.getRepresentChartID() || paneState.getPaneState() != collection.getState();*/ - return true; + return !ComparatorUtils.equals(collection.getState(), SwitchState.DEFAULT); } /** From 494111df5afd9b2f5a49d281054ebc9ae7c00aa2 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Mon, 21 Nov 2016 17:05:55 +0800 Subject: [PATCH 086/139] update --- designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java | 1 - .../src/com/fr/design/mainframe/chart/gui/ChartTypePane.java | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java index 0b76dd2d75..42b515fea2 100644 --- a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java @@ -273,7 +273,6 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh */ public String getTitle4PopupWindow(String priority, String plotID){ if (chartTypeInterfaces != null && chartTypeInterfaces.containsKey(priority) && chartTypeInterfaces.get(priority).containsKey(plotID)){ - HashMap chartUIList = chartTypeInterfaces.get(priority); IndependentChartUIProvider provider = chartTypeInterfaces.get(priority).get(plotID); return provider.getPlotTypePane().title4PopupWindow(); diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java index 758c14367a..6c747c9cc1 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java @@ -294,7 +294,7 @@ public class ChartTypePane extends AbstractChartAttrPane{ // TODO: 2016/11/17 因为现在populate面板时会重新构造面板,所以每次都需要重构 private boolean needReactor(ChartCollection collection) { /*return paneState.getChartID() != collection.getRepresentChartID() || paneState.getPaneState() != collection.getState();*/ - return !ComparatorUtils.equals(collection.getState(), SwitchState.DEFAULT); + return true; } /** From d070ef81e3297475c5353a2ec9265e058f02d568 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Mon, 21 Nov 2016 17:43:45 +0800 Subject: [PATCH 087/139] =?UTF-8?q?=E5=85=BC=E5=AE=B9=E8=80=81=E7=9A=84?= =?UTF-8?q?=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/ChartTypeInterfaceManager.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java index 42b515fea2..f37302f879 100644 --- a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java @@ -274,8 +274,18 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh public String getTitle4PopupWindow(String priority, String plotID){ if (chartTypeInterfaces != null && chartTypeInterfaces.containsKey(priority) && chartTypeInterfaces.get(priority).containsKey(plotID)){ IndependentChartUIProvider provider = chartTypeInterfaces.get(priority).get(plotID); - return provider.getPlotTypePane().title4PopupWindow(); + return provider.getPlotTypePane().title4PopupWindow(); + } + //兼容老的插件 + if (chartTypeInterfaces != null) { + Iterator iterator = chartTypeInterfaces.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + String defaultPriority = (String) entry.getKey(); + if (chartTypeInterfaces.get(defaultPriority).containsKey(plotID)) + return chartTypeInterfaces.get(defaultPriority).get(plotID).getPlotTypePane().title4PopupWindow(); + } } return new String(); } From 699df74e2c4922f37e59bf4b4b34f45bfd9c136a Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Mon, 21 Nov 2016 17:49:04 +0800 Subject: [PATCH 088/139] update --- .../src/com/fr/design/ChartTypeInterfaceManager.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java index f37302f879..ea2ee37ca5 100644 --- a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java @@ -283,8 +283,9 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh while (iterator.hasNext()) { Map.Entry entry = (Map.Entry) iterator.next(); String defaultPriority = (String) entry.getKey(); - if (chartTypeInterfaces.get(defaultPriority).containsKey(plotID)) - return chartTypeInterfaces.get(defaultPriority).get(plotID).getPlotTypePane().title4PopupWindow(); + if (chartTypeInterfaces.get(defaultPriority).containsKey(plotID)) { + return chartTypeInterfaces.get(defaultPriority).get(plotID).getPlotTypePane().title4PopupWindow(); + } } } return new String(); From 2dbf4f8268c519c88fb81e356bd9353d7c8a16c8 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Mon, 21 Nov 2016 17:51:39 +0800 Subject: [PATCH 089/139] update --- designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java index ea2ee37ca5..90cc40e685 100644 --- a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java @@ -163,7 +163,7 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh Map.Entry entry = (Map.Entry) iterator.next(); String priority = (String) entry.getKey(); String imagePath = getIconPath(priority, plotID); - if (!StringUtils.isEmpty(imagePath)) { + if (StringUtils.isNotEmpty(imagePath)) { return imagePath; } } From e36675937869a840bd742725e75e9b54ae8efdc4 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Mon, 21 Nov 2016 18:31:25 +0800 Subject: [PATCH 090/139] =?UTF-8?q?=E4=BD=8E=E5=88=86=E8=BE=A8=E7=8E=87?= =?UTF-8?q?=E4=B8=8B=E7=9A=84=E4=B8=80=E4=B8=AAbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/gui/icontainer/UIResizableContainer.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/gui/icontainer/UIResizableContainer.java b/designer_base/src/com/fr/design/gui/icontainer/UIResizableContainer.java index 13ea214ec5..d16622184f 100644 --- a/designer_base/src/com/fr/design/gui/icontainer/UIResizableContainer.java +++ b/designer_base/src/com/fr/design/gui/icontainer/UIResizableContainer.java @@ -3,7 +3,6 @@ package com.fr.design.gui.icontainer; import com.fr.base.BaseUtils; import com.fr.design.constants.UIConstants; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.mainframe.EastRegionContainerPane; import com.fr.stable.Constants; import com.fr.design.utils.gui.GUICoreUtils; @@ -217,8 +216,8 @@ public class UIResizableContainer extends JPanel { } } else if (direction == Constants.LEFT) { if(isDownPaneVisible){ - if (toolPaneY > getHeight() - toolPaneHeight) { - toolPaneY = getHeight() - toolPaneHeight; + if (toolPaneY > getHeight() - toolPaneHeight - getParameterPaneHeight()) { + toolPaneY = getHeight() - toolPaneHeight - getParameterPaneHeight(); } parameterPane.setBounds(20, 0, 230, getParameterPaneHeight()); upPane.setBounds(toolPaneHeight, getParameterPaneHeight(), containerWidth - toolPaneHeight, toolPaneY); From 3533d0789b6d282dcbb293d90127235e76ae752b Mon Sep 17 00:00:00 2001 From: sunmondong Date: Tue, 22 Nov 2016 10:33:13 +0800 Subject: [PATCH 091/139] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_chart/build.dev.gradle | 57 +++++++++-------------------- designer_chart/build.master.gradle | 43 +++++++--------------- designer_chart/build.release.gradle | 45 +++++++---------------- 3 files changed, 44 insertions(+), 101 deletions(-) diff --git a/designer_chart/build.dev.gradle b/designer_chart/build.dev.gradle index 2b727caac9..ba6df992bd 100644 --- a/designer_chart/build.dev.gradle +++ b/designer_chart/build.dev.gradle @@ -4,83 +4,60 @@ tasks.withType(JavaCompile){ options.encoding = 'UTF-8' } //指定构建的jdk版本 -sourceCompatibility=1.8 -//指定生成的jar包版本 +sourceCompatibility=1.7 +//指定生成jar包的版本 version='8.0' def srcDir="." +//对生成的jar包进行重命名 -//指明生成jar包的名字 jar{ - baseName='fr-designer-report' + baseName='fr-designer-chart' } -//源码所在位置 + sourceSets{ main{ java{ - srcDirs=["${srcDir}/src", -"${srcDir}/../designer/src"] + srcDirs=["${srcDir}/src"] } } } - -//获取什么分支名 FileTree files =fileTree(dir:'./',include:'build.*.gradle') def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ('\\')) buildDir=buildDir.substring(0,buildDir.lastIndexOf ('\\')) def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) -//显示依赖jar包 -FileTree f=fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") -f.each{File file-> - println "----${file.path}" -} - -//声明外部依赖 +//指定外部依赖 dependencies{ - compile fileTree(dir:"../../../finereport-lib-stable/${branchName}",include:'**/*.jar') - compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") - testCompile 'junit:junit:4.12' -} +compile fileTree(dir:"../../../finereport-lib-stable/${branchName}",include:'**/*.jar') +compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") -//指明无法编译文件所在路径 -def dataContent ={def dir -> - copySpec{ - from ("${dir}"){ - exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' - } - } + testCompile 'junit:junit:4.12' } - -//将非.java文件复制到classes文件夹下 参与打包 +//将非.java 文件复制到classes文件夹下参与打包 task copyFile(type:Copy,dependsOn:compileJava){ copy{ - with dataContent.call("${srcDir}/src") - with dataContent.call("${srcDir}/../designer/src") - into ('build/classes/main') + from ("${srcDir}/src"){ + exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' + + } + into 'build/classes/main' } } - //压缩项目中的js文件 task compressJS{ ant.taskdef(name:'yuicompress',classname:'com.yahoo.platform.yui.compressor.YUICompressTask'){ classpath { - fileset(dir:'../../../finereport-lib4build-stable',includes:'**/*.jar') } } - ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false", charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ + ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false",charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ fileset (dir:"${srcDir}/src"){ include (name:'**/*.js') include (name:'**/*.css') - - } - fileset (dir:"${srcDir}/../designer/src"){ - include (name:'**/*.js') - include (name:'**/*.css') } } diff --git a/designer_chart/build.master.gradle b/designer_chart/build.master.gradle index 9c9764727c..ba6df992bd 100644 --- a/designer_chart/build.master.gradle +++ b/designer_chart/build.master.gradle @@ -5,60 +5,48 @@ tasks.withType(JavaCompile){ } //指定构建的jdk版本 sourceCompatibility=1.7 -//指定生成的jar包版本 +//指定生成jar包的版本 version='8.0' def srcDir="." +//对生成的jar包进行重命名 -//指明生成jar包的名字 jar{ - baseName='fr-designer-report' + baseName='fr-designer-chart' } -//源码所在位置 + sourceSets{ main{ java{ - srcDirs=["${srcDir}/src", -"${srcDir}/../designer/src"] + srcDirs=["${srcDir}/src"] } } } - -//获取什么分支名 FileTree files =fileTree(dir:'./',include:'build.*.gradle') def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ('\\')) buildDir=buildDir.substring(0,buildDir.lastIndexOf ('\\')) def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) -//声明外部依赖 +//指定外部依赖 dependencies{ compile fileTree(dir:"../../../finereport-lib-stable/${branchName}",include:'**/*.jar') compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") testCompile 'junit:junit:4.12' } - -//指明无法编译文件所在路径 -def dataContent ={def dir -> - copySpec{ - from ("${dir}"){ - exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' - } - } -} - -//将非.java文件复制到classes文件夹下 参与打包 +//将非.java 文件复制到classes文件夹下参与打包 task copyFile(type:Copy,dependsOn:compileJava){ copy{ - with dataContent.call("${srcDir}/src") - with dataContent.call("${srcDir}/../designer/src") - into ('build/classes/main') + from ("${srcDir}/src"){ + exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' + + } + into 'build/classes/main' } } - //压缩项目中的js文件 task compressJS{ ant.taskdef(name:'yuicompress',classname:'com.yahoo.platform.yui.compressor.YUICompressTask'){ @@ -66,15 +54,10 @@ task compressJS{ fileset(dir:'../../../finereport-lib4build-stable',includes:'**/*.jar') } } - ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false", charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ + ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false",charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ fileset (dir:"${srcDir}/src"){ include (name:'**/*.js') include (name:'**/*.css') - - } - fileset (dir:"${srcDir}/../designer/src"){ - include (name:'**/*.js') - include (name:'**/*.css') } } diff --git a/designer_chart/build.release.gradle b/designer_chart/build.release.gradle index 90abcb81ee..e97176e24c 100644 --- a/designer_chart/build.release.gradle +++ b/designer_chart/build.release.gradle @@ -5,76 +5,59 @@ tasks.withType(JavaCompile){ } //指定构建的jdk版本 sourceCompatibility=1.8 -//指定生成的jar包版本 +//指定生成jar包的版本 version='8.0' def srcDir="." +//对生成的jar包进行重命名 -//指明生成jar包的名字 jar{ - baseName='fr-designer-report' + baseName='fr-designer-chart' } -//源码所在位置 + sourceSets{ main{ java{ - srcDirs=["${srcDir}/src", -"${srcDir}/../designer/src"] + srcDirs=["${srcDir}/src"] } } } - -//获取什么分支名 FileTree files =fileTree(dir:'./',include:'build.*.gradle') def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ('\\')) buildDir=buildDir.substring(0,buildDir.lastIndexOf ('\\')) def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) -//声明外部依赖 + +//指定外部依赖 dependencies{ compile fileTree(dir:'../../../finereport-lib-stable/master',include:'**/*.jar') compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") testCompile 'junit:junit:4.12' } - -//指明无法编译文件所在路径 -def dataContent ={def dir -> - copySpec{ - from ("${dir}"){ - exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' - } - } -} - -//将非.java文件复制到classes文件夹下 参与打包 +//将非.java 文件复制到classes文件夹下参与打包 task copyFile(type:Copy,dependsOn:compileJava){ copy{ - with dataContent.call("${srcDir}/src") - with dataContent.call("${srcDir}/../designer/src") - into ('build/classes/main') + from ("${srcDir}/src"){ + exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' + + } + into 'build/classes/main' } } - //压缩项目中的js文件 task compressJS{ ant.taskdef(name:'yuicompress',classname:'com.yahoo.platform.yui.compressor.YUICompressTask'){ classpath { - fileset(dir:'../../../finereport-lib4build-stable',includes:'**/*.jar') } } - ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false", charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ + ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false",charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ fileset (dir:"${srcDir}/src"){ include (name:'**/*.js') include (name:'**/*.css') - - } - fileset (dir:"${srcDir}/../designer/src"){ - include (name:'**/*.js') - include (name:'**/*.css') } } From f7adf0f61311b1e35c1e25f6d6f67715d72e7ec3 Mon Sep 17 00:00:00 2001 From: anchore Date: Tue, 22 Nov 2016 13:31:00 +0800 Subject: [PATCH 092/139] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=AF=B9=E8=AF=9D=E6=A1=86=E6=96=87=E5=AD=97=E5=B1=85?= =?UTF-8?q?=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DesignerFrameFileDealerPane.java | 47 ++++++++++++------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java b/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java index 65f8fcb883..af33af832e 100644 --- a/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java +++ b/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java @@ -391,35 +391,44 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt jd.setModal(true); UILabel newNameLabel = new UILabel(Inter.getLocText("FR-Designer_Enter-New-FileName")); // newNameLabel.setBounds(20, 10, 130, 30); - newNameLabel.setPreferredSize(new Dimension(150, 20)); + newNameLabel.setMinimumSize(new Dimension(150, 27)); + newNameLabel.setHorizontalAlignment(SwingConstants.RIGHT); jt = new UITextField(oldName); jt.getDocument().addDocumentListener(getdoDocumentListener()); jt.selectAll(); // jt.setBounds(130, 15, 150, 20); jt.setPreferredSize(new Dimension(150, 20)); - JPanel tmp = new JPanel(); - tmp.add(newNameLabel); - JPanel newNamePanel = new JPanel(new BorderLayout()); - newNamePanel.add(tmp, BorderLayout.SOUTH); + JPanel newNamePanel = new JPanel(); + newNamePanel.setLayout(new BoxLayout(newNamePanel, BoxLayout.X_AXIS)); + newNamePanel.add(Box.createHorizontalGlue()); + newNamePanel.add(newNameLabel); + newNamePanel.add(Box.createHorizontalStrut(5)); jd.add(newNamePanel); - tmp = new JPanel(); - tmp.add(jt); - JPanel jtPanel = new JPanel(new BorderLayout()); - jtPanel.add(tmp, BorderLayout.SOUTH); + JPanel jtPanel = new JPanel(); + jtPanel.setLayout(new BoxLayout(jtPanel, BoxLayout.Y_AXIS)); + JPanel containJt = new JPanel(new BorderLayout()); + containJt.add(jt, BorderLayout.WEST); + containJt.setMaximumSize(new Dimension(200, 20)); + jtPanel.add(Box.createVerticalGlue()); + jtPanel.add(containJt); + jtPanel.add(Box.createVerticalGlue()); jd.add(jtPanel); addUITextFieldListener(nodeFile, path); hintsLabel = new UILabel(); hintsLabel.setBounds(20, 50, 250, 30); + hintsLabel.setMaximumSize(new Dimension(200, 30)); + hintsLabel.setHorizontalAlignment(SwingConstants.RIGHT); hintsLabel.setForeground(Color.RED); hintsLabel.setVisible(false); confirmButton = new UIButton(Inter.getLocText("FR-Designer_Confirm")); // confirmButton.setBounds(180, 90, 60, 25); - confirmButton.setPreferredSize(new Dimension(80, 30)); + confirmButton.setMinimumSize(new Dimension(60, 25)); + confirmButton.setMaximumSize(new Dimension(60, 25)); confirmButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { confirmClose(nodeFile, path); @@ -428,7 +437,8 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt UIButton cancelButton = new UIButton(Inter.getLocText("FR-Designer_Cancel")); // cancelButton.setBounds(250, 90, 60, 25); - cancelButton.setPreferredSize(new Dimension(80, 30)); + cancelButton.setMinimumSize(new Dimension(60, 25)); + cancelButton.setMaximumSize(new Dimension(60, 25)); cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { @@ -436,13 +446,18 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt } }); - jd.add(new JPanel()); + JPanel hintsPanel = new JPanel(); + hintsPanel.setLayout(new BorderLayout()); + hintsPanel.add(hintsLabel, BorderLayout.EAST); + jd.add(hintsLabel); JPanel btPanel = new JPanel(new BorderLayout()); - tmp = new JPanel(); - tmp.add(confirmButton); - tmp.add(cancelButton); - btPanel.add(tmp, BorderLayout.SOUTH); + btPanel.setLayout(new BoxLayout(btPanel, BoxLayout.X_AXIS)); + btPanel.add(Box.createHorizontalGlue()); + btPanel.add(confirmButton); + btPanel.add(Box.createHorizontalStrut(15)); + btPanel.add(cancelButton); + btPanel.add(Box.createHorizontalStrut(20)); jd.add(btPanel); jd.setSize(380, 200); From f85111c048348095742c2e2ffc3731e0aa26c8a0 Mon Sep 17 00:00:00 2001 From: anchore Date: Tue, 22 Nov 2016 14:18:04 +0800 Subject: [PATCH 093/139] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=AF=B9=E8=AF=9D=E6=A1=86=E6=96=87=E5=AD=97=E5=B1=85?= =?UTF-8?q?=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/DesignerFrameFileDealerPane.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java b/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java index af33af832e..9355a33486 100644 --- a/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java +++ b/designer_base/src/com/fr/design/mainframe/DesignerFrameFileDealerPane.java @@ -390,13 +390,11 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt jd.setLayout(new GridLayout(2, 2)); jd.setModal(true); UILabel newNameLabel = new UILabel(Inter.getLocText("FR-Designer_Enter-New-FileName")); -// newNameLabel.setBounds(20, 10, 130, 30); newNameLabel.setMinimumSize(new Dimension(150, 27)); newNameLabel.setHorizontalAlignment(SwingConstants.RIGHT); jt = new UITextField(oldName); jt.getDocument().addDocumentListener(getdoDocumentListener()); jt.selectAll(); -// jt.setBounds(130, 15, 150, 20); jt.setPreferredSize(new Dimension(150, 20)); JPanel newNamePanel = new JPanel(); @@ -426,9 +424,9 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt hintsLabel.setVisible(false); confirmButton = new UIButton(Inter.getLocText("FR-Designer_Confirm")); -// confirmButton.setBounds(180, 90, 60, 25); - confirmButton.setMinimumSize(new Dimension(60, 25)); - confirmButton.setMaximumSize(new Dimension(60, 25)); + confirmButton.setPreferredSize(new Dimension(80, 25)); + confirmButton.setMinimumSize(new Dimension(80, 25)); + confirmButton.setMaximumSize(new Dimension(80, 25)); confirmButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { confirmClose(nodeFile, path); @@ -436,9 +434,9 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt }); UIButton cancelButton = new UIButton(Inter.getLocText("FR-Designer_Cancel")); -// cancelButton.setBounds(250, 90, 60, 25); - cancelButton.setMinimumSize(new Dimension(60, 25)); - cancelButton.setMaximumSize(new Dimension(60, 25)); + cancelButton.setPreferredSize(new Dimension(80, 25)); + cancelButton.setMinimumSize(new Dimension(80, 25)); + cancelButton.setMaximumSize(new Dimension(80, 25)); cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { @@ -455,7 +453,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt btPanel.setLayout(new BoxLayout(btPanel, BoxLayout.X_AXIS)); btPanel.add(Box.createHorizontalGlue()); btPanel.add(confirmButton); - btPanel.add(Box.createHorizontalStrut(15)); + btPanel.add(Box.createHorizontalStrut(5)); btPanel.add(cancelButton); btPanel.add(Box.createHorizontalStrut(20)); jd.add(btPanel); From d72aeba63df4b06abcc6a75e8435a3b099972d98 Mon Sep 17 00:00:00 2001 From: fr_shine Date: Tue, 22 Nov 2016 17:14:14 +0800 Subject: [PATCH 094/139] =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E5=9D=90=E6=A0=87?= =?UTF-8?q?=E8=BD=B4=20=E5=B8=B8=E8=A7=84=E9=A1=B9=E8=A6=81=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E6=88=90=E8=87=AA=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/gui/style/FormatPane.java | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/designer_base/src/com/fr/design/gui/style/FormatPane.java b/designer_base/src/com/fr/design/gui/style/FormatPane.java index c0591fe562..cce2de78c4 100644 --- a/designer_base/src/com/fr/design/gui/style/FormatPane.java +++ b/designer_base/src/com/fr/design/gui/style/FormatPane.java @@ -4,10 +4,10 @@ import com.fr.base.CoreDecimalFormat; import com.fr.base.GraphHelper; import com.fr.base.Style; import com.fr.base.TextFormat; -import com.fr.design.constants.UIConstants; import com.fr.data.core.FormatField; import com.fr.data.core.FormatField.FormatContents; import com.fr.design.border.UIRoundedBorder; +import com.fr.design.constants.UIConstants; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.icombobox.UIComboBoxRenderer; import com.fr.design.gui.icontainer.UIScrollPane; @@ -81,16 +81,7 @@ public class FormatPane extends AbstractBasicStylePane { }; typeComboBox = new UIComboBox(types); - UIComboBoxRenderer render = new UIComboBoxRenderer() { - @Override - public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { - JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); - if (value instanceof Integer) { - label.setText(" " + FormatField.getInstance().getName((Integer) value)); - } - return label; - } - }; + UIComboBoxRenderer render = createComBoxRender(); typeComboBox.setRenderer(render); typeComboBox.addItemListener(itemListener); contentPane.add(sampleLabel, BorderLayout.NORTH); @@ -114,6 +105,18 @@ public class FormatPane extends AbstractBasicStylePane { } + protected UIComboBoxRenderer createComBoxRender(){ + return new UIComboBoxRenderer() { + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + if (value instanceof Integer) { + label.setText(" " + FormatField.getInstance().getName((Integer) value)); + } + return label; + } + }; + } private void iniSampleLable() { Border innterborder = new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 4); From ffbd32b11322e1b023d8a69c61d0f2ae75741b29 Mon Sep 17 00:00:00 2001 From: vito Date: Tue, 22 Nov 2016 17:21:42 +0800 Subject: [PATCH 095/139] =?UTF-8?q?=E6=97=A0jira=E4=BB=BB=E5=8A=A1=20bugfi?= =?UTF-8?q?x=EF=BC=9A=E8=84=9A=E6=9C=AC=E9=A1=B5=E9=9D=A2=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E4=B8=A4=E9=81=8D=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/extra/ShopPaneConfig.java | 24 ++++++++++++++----- .../design/extra/WebManagerPaneFactory.java | 16 ++++++------- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/ShopPaneConfig.java b/designer_base/src/com/fr/design/extra/ShopPaneConfig.java index 87bc719ee1..9d265168db 100644 --- a/designer_base/src/com/fr/design/extra/ShopPaneConfig.java +++ b/designer_base/src/com/fr/design/extra/ShopPaneConfig.java @@ -11,14 +11,26 @@ public abstract class ShopPaneConfig { private JFXPanel webPane; public ShopPaneConfig() { - this.mainJS = getMainJS(); - this.scriptsId = getScriptsId(); - this.webPane = getWebPane(); + this.mainJS = setMainJS(); + this.scriptsId = setScriptsId(); + this.webPane = setWebPane(); } - abstract String getMainJS(); + abstract String setMainJS(); - abstract String getScriptsId(); + abstract String setScriptsId(); - abstract JFXPanel getWebPane(); + abstract JFXPanel setWebPane(); + + public String getMainJS() { + return mainJS; + } + + public String getScriptsId() { + return scriptsId; + } + + public JFXPanel getWebPane() { + return webPane; + } } diff --git a/designer_base/src/com/fr/design/extra/WebManagerPaneFactory.java b/designer_base/src/com/fr/design/extra/WebManagerPaneFactory.java index 75a79deddd..faf67d1778 100644 --- a/designer_base/src/com/fr/design/extra/WebManagerPaneFactory.java +++ b/designer_base/src/com/fr/design/extra/WebManagerPaneFactory.java @@ -29,19 +29,19 @@ public class WebManagerPaneFactory { if (StableUtils.getMajorJavaVersion() == 8) { return new ShopManagerPane(new ShopPaneConfig() { @Override - String getMainJS() { + String setMainJS() { String relativePath = "/scripts/store/web/index.html"; return StableUtils.pathJoin(new File(installHome).getAbsolutePath(), relativePath); } @Override - String getScriptsId() { + String setScriptsId() { return "shop_scripts"; } @Override - JFXPanel getWebPane() { - return new PluginWebPane(getMainJS()); + JFXPanel setWebPane() { + return new PluginWebPane(setMainJS()); } }); @@ -61,19 +61,19 @@ public class WebManagerPaneFactory { public BasicPane createReusePane() { return new ShopManagerPane(new ShopPaneConfig() { @Override - String getMainJS() { + String setMainJS() { String relativePath = "/scripts/store/reuse/index.html"; return StableUtils.pathJoin(new File(installHome).getAbsolutePath(), relativePath); } @Override - String getScriptsId() { + String setScriptsId() { return "reuse_scripts"; } @Override - JFXPanel getWebPane() { - return new ReuseWebPane(getMainJS()); + JFXPanel setWebPane() { + return new ReuseWebPane(setMainJS()); } }); } From 221e2fa8604b24aa66eb50c237917be207b4188e Mon Sep 17 00:00:00 2001 From: vito Date: Wed, 23 Nov 2016 01:08:07 +0800 Subject: [PATCH 096/139] =?UTF-8?q?=E8=BD=AC=E4=B9=89json=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E5=8D=95=E5=BC=95=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/extra/PluginTask.java | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginTask.java b/designer_base/src/com/fr/design/extra/PluginTask.java index eb4a997291..7c624612fa 100644 --- a/designer_base/src/com/fr/design/extra/PluginTask.java +++ b/designer_base/src/com/fr/design/extra/PluginTask.java @@ -49,7 +49,7 @@ public class PluginTask extends Task { @Override public void process(String s) { if (StringUtils.isNotBlank(s)) { - updateMessage(changText(s)); + updateMessage(trimText(s)); } } }); @@ -59,20 +59,28 @@ public class PluginTask extends Task { @Override protected void done() { - updateMessage(changText(executor.getTaskFinishMessage())); + updateMessage(trimText(executor.getTaskFinishMessage())); } /** - * 转换掉一些会造成错误的特殊字符 - * 1 ""中的""必须转义 - * 2 js字符串中的\n会导致js字符串变成多行,而js字符创不支持多行拼接 + * vito:由于使用webEngine.executeScript("(" + callback + ")(\"" + newValue + "\")") + * 执行脚本,所以原来规范的json格式也会在拼接字符串后可能抛出参数异常,需要转换掉一些会造成错误的特殊字符, + * 选择在java端替换的原因是异常抛出自executeScript方法的参数,现在规范和拼接的json都能通过了, + * 但是强烈建议不要使用拼接json + *

+ * 1.""中的""必须转义 + * 2.js字符串中的\n会导致js字符串变成多行,而js字符串不支持多行拼接 + * 3.由JSONObject.toString()得到的字符串中html标签的属性会自动加上\造成替换难度加大, + * 这边建议去除所有的html标签 * * @param old 原始字符串 * @return 处理之后的字符串 */ - private String changText(String old) { - if(StringUtils.isNotBlank(old)){ - return old.replaceAll("\"", "\\\\\"").replaceAll("\n", ""); + private String trimText(String old) { + if (StringUtils.isNotBlank(old)) { + String a = old.replaceAll("\n", "").replaceAll("\"", "\\\\\"").replaceAll("\'", "\\\\\'"); + System.out.println(a); + return a; } return StringUtils.EMPTY; } From 4a78e4b8bb23696f34385d9f7da0726495b0af16 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Wed, 23 Nov 2016 09:34:27 +0800 Subject: [PATCH 097/139] =?UTF-8?q?=E9=80=89=E4=B8=AD=E7=9A=84=E5=9B=BE?= =?UTF-8?q?=E8=A1=A8=E4=B8=8D=E8=83=BD=E5=88=A0=E9=99=A4=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chart/gui/ChartTypeButtonPane.java | 55 +++++++++---------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java index 6c48772b06..2d96eca315 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java @@ -62,20 +62,20 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen private boolean pressOtherButtonWhenEditing = false; -// private AWTEventListener awt = new AWTEventListener() { -// public void eventDispatched(AWTEvent event) { -// //没有进行鼠标点击,则返回 -// if (event instanceof MouseEvent && ((MouseEvent) event).getClickCount() > 0) { -// if (currentEditingEditor != null && !ComparatorUtils.equals(event.getSource(), currentEditingEditor)) { -// stopEditing(); -// if (event.getSource() instanceof ChartChangeButton) { -// ((ChartChangeButton) event.getSource()).mouseClick((MouseEvent) event); -// } -// populateBean(editingCollection); -// } -// } -// } -// }; + /*private AWTEventListener awt = new AWTEventListener() { + public void eventDispatched(AWTEvent event) { + //没有进行鼠标点击,则返回 + if (event instanceof MouseEvent && ((MouseEvent) event).getClickCount() > 0) { + if (currentEditingEditor != null && !ComparatorUtils.equals(event.getSource(), currentEditingEditor)) { + stopEditing(); + if (event.getSource() instanceof ChartChangeButton) { + ((ChartChangeButton) event.getSource()).mouseClick((MouseEvent) event); + } + populateBean(editingCollection); + } + } + } + };*/ public ChartTypeButtonPane(ChartTypePane chartTypePane){ this(); @@ -440,26 +440,23 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen } private void deleteAButton() { - if (indexList.contains(this) && indexList.size() > 1) { - indexList.remove(this); + //先重构属性,在重构面板,否则面板在重构过程中,会重新将属性中的切换图表加到indexList中,导致面板无法删除 + if (editingCollection != null) { + int count = editingCollection.getChartCount(); + for (int i = 0; i < count; i++) { + if (ComparatorUtils.equals(getButtonName(), editingCollection.getChartName(i))) { + editingCollection.removeNameObject(i); + break; + } + } + } + indexList.remove(this); + if (indexList.contains(this) && indexList.size() > 1) { if (this.isSelected()) { indexList.get(0).setSelected(true); changeCollectionSelected(indexList.get(0).getButtonName()); } - - if (editingCollection != null) { - int count = editingCollection.getChartCount(); - for (int i = 0; i < count; i++) { - if (ComparatorUtils.equals(getButtonName(), editingCollection.getChartName(i))) { - editingCollection.removeNameObject(i); - if (i <= editingCollection.getSelectedIndex()){ - editingCollection.setSelectedIndex(editingCollection.getSelectedIndex()-1); - } - break; - } - } - } } //获取图表收集器的状态 From 027b9a0517dd82a2ef988fc7f532f2bb9e6e7d02 Mon Sep 17 00:00:00 2001 From: fr_shine Date: Wed, 23 Nov 2016 09:37:45 +0800 Subject: [PATCH 098/139] pmd locale --- designer_base/src/com/fr/design/gui/style/FormatPane.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/gui/style/FormatPane.java b/designer_base/src/com/fr/design/gui/style/FormatPane.java index cce2de78c4..c426bbed26 100644 --- a/designer_base/src/com/fr/design/gui/style/FormatPane.java +++ b/designer_base/src/com/fr/design/gui/style/FormatPane.java @@ -121,7 +121,7 @@ public class FormatPane extends AbstractBasicStylePane { private void iniSampleLable() { Border innterborder = new UIRoundedBorder(UIConstants.LINE_COLOR, 1, 4); Font tmpFont = null; - Border border = BorderFactory.createTitledBorder(innterborder, Inter.getLocText("StyleFormat-Sample"), TitledBorder.LEFT, 0, tmpFont, UIConstants.LINE_COLOR); + Border border = BorderFactory.createTitledBorder(innterborder, Inter.getLocText("FR-Base_StyleFormat_Sample"), TitledBorder.LEFT, 0, tmpFont, UIConstants.LINE_COLOR); sampleLabel = new UILabel(FormatField.getInstance().getFormatValue()) { @Override @@ -159,7 +159,7 @@ public class FormatPane extends AbstractBasicStylePane { * @return 标题 */ public String title4PopupWindow() { - return Inter.getLocText("Format"); + return Inter.getLocText("FR-Base_Format"); } /** From d648f91191a07798d219bc1537306c4b9865c68c Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Wed, 23 Nov 2016 09:41:31 +0800 Subject: [PATCH 099/139] update --- .../fr/design/mainframe/chart/gui/ChartTypeButtonPane.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java index 2d96eca315..de88d2ba65 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java @@ -446,13 +446,16 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen for (int i = 0; i < count; i++) { if (ComparatorUtils.equals(getButtonName(), editingCollection.getChartName(i))) { editingCollection.removeNameObject(i); + /*if (i <= editingCollection.getSelectedIndex()){ + editingCollection.setSelectedIndex(editingCollection.getSelectedIndex()-1); + }*/ break; } } } - indexList.remove(this); if (indexList.contains(this) && indexList.size() > 1) { + indexList.remove(this); if (this.isSelected()) { indexList.get(0).setSelected(true); changeCollectionSelected(indexList.get(0).getButtonName()); From 3e0f3cf8bdfca79201b02f993988dc5ebcd22338 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Wed, 23 Nov 2016 09:42:25 +0800 Subject: [PATCH 100/139] update --- .../com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java index de88d2ba65..e7e283ebeb 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java @@ -446,9 +446,6 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen for (int i = 0; i < count; i++) { if (ComparatorUtils.equals(getButtonName(), editingCollection.getChartName(i))) { editingCollection.removeNameObject(i); - /*if (i <= editingCollection.getSelectedIndex()){ - editingCollection.setSelectedIndex(editingCollection.getSelectedIndex()-1); - }*/ break; } } From 9f71f778725745bceb353b24c96a467106755f55 Mon Sep 17 00:00:00 2001 From: Fangjie Hu Date: Wed, 23 Nov 2016 10:08:58 +0800 Subject: [PATCH 101/139] update --- .../mainframe/chart/gui/ChartTypeButtonPane.java | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java index e7e283ebeb..6b6c9a4276 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java @@ -61,22 +61,6 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen //所以:stopEditing--选中其他button则响应click之后relayout;普通失焦则直接relayout. private boolean pressOtherButtonWhenEditing = false; - - /*private AWTEventListener awt = new AWTEventListener() { - public void eventDispatched(AWTEvent event) { - //没有进行鼠标点击,则返回 - if (event instanceof MouseEvent && ((MouseEvent) event).getClickCount() > 0) { - if (currentEditingEditor != null && !ComparatorUtils.equals(event.getSource(), currentEditingEditor)) { - stopEditing(); - if (event.getSource() instanceof ChartChangeButton) { - ((ChartChangeButton) event.getSource()).mouseClick((MouseEvent) event); - } - populateBean(editingCollection); - } - } - } - };*/ - public ChartTypeButtonPane(ChartTypePane chartTypePane){ this(); parent = chartTypePane; From a964740d3146d50c590b040ce8157a408f05faa1 Mon Sep 17 00:00:00 2001 From: vito Date: Wed, 23 Nov 2016 10:19:43 +0800 Subject: [PATCH 102/139] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/extra/PluginTask.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginTask.java b/designer_base/src/com/fr/design/extra/PluginTask.java index 7c624612fa..0e77ae823d 100644 --- a/designer_base/src/com/fr/design/extra/PluginTask.java +++ b/designer_base/src/com/fr/design/extra/PluginTask.java @@ -65,9 +65,8 @@ public class PluginTask extends Task { /** * vito:由于使用webEngine.executeScript("(" + callback + ")(\"" + newValue + "\")") * 执行脚本,所以原来规范的json格式也会在拼接字符串后可能抛出参数异常,需要转换掉一些会造成错误的特殊字符, - * 选择在java端替换的原因是异常抛出自executeScript方法的参数,现在规范和拼接的json都能通过了, - * 但是强烈建议不要使用拼接json - *

+ * 选择在java端替换的原因是异常抛出自executeScript方法的参数. + * * 1.""中的""必须转义 * 2.js字符串中的\n会导致js字符串变成多行,而js字符串不支持多行拼接 * 3.由JSONObject.toString()得到的字符串中html标签的属性会自动加上\造成替换难度加大, From 538753ab2b6e3d17d478cd3d3ac61f9b4c780f26 Mon Sep 17 00:00:00 2001 From: vito Date: Wed, 23 Nov 2016 10:20:55 +0800 Subject: [PATCH 103/139] =?UTF-8?q?=E6=BC=8F=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/extra/PluginTask.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginTask.java b/designer_base/src/com/fr/design/extra/PluginTask.java index 0e77ae823d..e2c87a46e1 100644 --- a/designer_base/src/com/fr/design/extra/PluginTask.java +++ b/designer_base/src/com/fr/design/extra/PluginTask.java @@ -77,9 +77,7 @@ public class PluginTask extends Task { */ private String trimText(String old) { if (StringUtils.isNotBlank(old)) { - String a = old.replaceAll("\n", "").replaceAll("\"", "\\\\\"").replaceAll("\'", "\\\\\'"); - System.out.println(a); - return a; + return old.replaceAll("\n", "").replaceAll("\"", "\\\\\"").replaceAll("\'", "\\\\\'"); } return StringUtils.EMPTY; } From 780698d683af095e5b64fc957b5ea3a663a7fb31 Mon Sep 17 00:00:00 2001 From: fr_shine Date: Thu, 24 Nov 2016 13:40:02 +0800 Subject: [PATCH 104/139] =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fun/impl/AbstractIndependentChartUIWithAPILevel.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java index 6c7ba66d80..2a1e6b4c4b 100644 --- a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java +++ b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java @@ -15,7 +15,9 @@ import com.fr.general.ComparatorUtils; * Created by Mitisky on 16/3/7. */ public abstract class AbstractIndependentChartUIWithAPILevel implements IndependentChartUIProvider { - private static final int OLD_PLUGIN_LEVEL = 3; + //这个不能改,是做兼容用的 + //2016.10.14-11.24号的8.0jar因为改了这个为3,不会提示5.26号之前的插件更新 + private static final int OLD_PLUGIN_LEVEL = -2; @Override //以前的插件没有覆写这个方法,所以始终获取到-2,比当前level低,提示更新. From cc9ee36aedb60a62ce349ba1c9415293f0b00502 Mon Sep 17 00:00:00 2001 From: sunmondong Date: Fri, 25 Nov 2016 10:21:21 +0800 Subject: [PATCH 105/139] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E6=96=87=E4=BB=B6=EF=BC=9Aapplet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.dev.gradle | 10 +++++----- build.master.gradle | 10 +++++----- build.release.gradle | 10 +++++----- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/build.dev.gradle b/build.dev.gradle index c5cc1b92da..1efdd55cc8 100644 --- a/build.dev.gradle +++ b/build.dev.gradle @@ -13,7 +13,7 @@ def branchName=buildDir.substring(buildDir.lastIndexOf ("\\")+1) task appletJar<<{ ant{ - mkdir(dir:"${libDir}/tmp-${branchName}") + mkdir(dir:"./tmp") mkdir(dir:"build/classes/") copy(todir:"build/classes/"){ fileset(dir:"${basicDir}/finereport-core-stable/${branchName}/build/classes/main") @@ -27,8 +27,8 @@ task appletJar<<{ fileset(dir:"${basicDir}/finereport-performance-stable/${branchName}/build/classes/main") } - unjar(src:"${libDir}/${branchName}/3rd.jar",dest:"${libDir}/tmp-${branchName}") - unjar(src:"${libDir}/${branchName}/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") + unjar(src:"${libDir}/${branchName}/3rd.jar",dest:"./tmp") + unjar(src:"${libDir}/${branchName}/servlet-api.jar",dest:"./tmp") jar(jarfile:"build/libs/fr-applet-8.0.jar"){ fileset(dir:"build/classes"){ exclude(name:"*.*") @@ -44,7 +44,7 @@ task appletJar<<{ exclude(name:"com/fr/start/**") exclude(name:"com/fr/process/**") } - fileset(dir:"${libDir}/tmp-${branchName}"){ + fileset(dir:"./tmp"){ include(name:"javax/mail/**") include(name:"javax/servlet/**") include(name:"org/freehep/**") @@ -60,7 +60,7 @@ task appletJar<<{ include(name:"com/fr/web/attr/*.class") } } - delete(dir:"${libDir}/tmp-${branchName}") + delete(dir:"./tmp") def jdk6home= "D:/FineReport/develop/java/jdk1.6u35" def keystore="frapplet.store" def keycert="fr.cert" diff --git a/build.master.gradle b/build.master.gradle index c5cc1b92da..1efdd55cc8 100644 --- a/build.master.gradle +++ b/build.master.gradle @@ -13,7 +13,7 @@ def branchName=buildDir.substring(buildDir.lastIndexOf ("\\")+1) task appletJar<<{ ant{ - mkdir(dir:"${libDir}/tmp-${branchName}") + mkdir(dir:"./tmp") mkdir(dir:"build/classes/") copy(todir:"build/classes/"){ fileset(dir:"${basicDir}/finereport-core-stable/${branchName}/build/classes/main") @@ -27,8 +27,8 @@ task appletJar<<{ fileset(dir:"${basicDir}/finereport-performance-stable/${branchName}/build/classes/main") } - unjar(src:"${libDir}/${branchName}/3rd.jar",dest:"${libDir}/tmp-${branchName}") - unjar(src:"${libDir}/${branchName}/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") + unjar(src:"${libDir}/${branchName}/3rd.jar",dest:"./tmp") + unjar(src:"${libDir}/${branchName}/servlet-api.jar",dest:"./tmp") jar(jarfile:"build/libs/fr-applet-8.0.jar"){ fileset(dir:"build/classes"){ exclude(name:"*.*") @@ -44,7 +44,7 @@ task appletJar<<{ exclude(name:"com/fr/start/**") exclude(name:"com/fr/process/**") } - fileset(dir:"${libDir}/tmp-${branchName}"){ + fileset(dir:"./tmp"){ include(name:"javax/mail/**") include(name:"javax/servlet/**") include(name:"org/freehep/**") @@ -60,7 +60,7 @@ task appletJar<<{ include(name:"com/fr/web/attr/*.class") } } - delete(dir:"${libDir}/tmp-${branchName}") + delete(dir:"./tmp") def jdk6home= "D:/FineReport/develop/java/jdk1.6u35" def keystore="frapplet.store" def keycert="fr.cert" diff --git a/build.release.gradle b/build.release.gradle index 44aacadb4d..1c00529e68 100644 --- a/build.release.gradle +++ b/build.release.gradle @@ -12,7 +12,7 @@ def branchName=buildDir.substring(buildDir.lastIndexOf ("\\")+1) task appletJar<<{ ant{ - mkdir(dir:"${libDir}/tmp-${branchName}") + mkdir(dir:"./tmp") mkdir(dir:"build/classes/") copy(todir:"build/classes/"){ fileset(dir:"${basicDir}/finereport-core-stable/${branchName}/build/classes/main") @@ -26,8 +26,8 @@ task appletJar<<{ fileset(dir:"${basicDir}/finereport-performance-stable/${branchName}/build/classes/main") } - unjar(src:"${libDir}/3rd.jar",dest:"${libDir}/tmp-${branchName}") - unjar(src:"${libDir}/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") + unjar(src:"${libDir}/3rd.jar",dest:"./tmp") + unjar(src:"${libDir}/servlet-api.jar",dest:"./tmp") jar(jarfile:"build/libs/fr-applet-8.0.jar"){ fileset(dir:"build/classes"){ exclude(name:"*.*") @@ -43,7 +43,7 @@ task appletJar<<{ exclude(name:"com/fr/start/**") exclude(name:"com/fr/process/**") } - fileset(dir:"${libDir}/tmp-${branchName}"){ + fileset(dir:"./tmp"){ include(name:"javax/mail/**") include(name:"javax/servlet/**") include(name:"org/freehep/**") @@ -59,7 +59,7 @@ task appletJar<<{ include(name:"com/fr/web/attr/*.class") } } - delete(dir:"${libDir}/tmp-${branchName}") + delete(dir:"./tmp") def jdk6home= "D:/FineReport/develop/java/jdk1.6u35" def keystore="frapplet.store" def keycert="fr.cert" From e76d3c8a75a66a52a12c43a944512a8153529cda Mon Sep 17 00:00:00 2001 From: plough Date: Mon, 28 Nov 2016 11:06:11 +0800 Subject: [PATCH 106/139] =?UTF-8?q?REPORT-881=20=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=EF=BC=8C=E9=9D=9E=E7=AE=A1=E7=90=86=E5=91=98?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=EF=BC=8C=E4=B8=8D=E5=BA=94=E8=AF=A5=E7=9C=8B?= =?UTF-8?q?=E5=88=B0=E8=8F=9C=E5=8D=95=E6=A0=8F=E7=9A=84=E2=80=9C=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E2=80=9D=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/toolbar/ToolBarMenuDock.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index 8dfd3dfa39..a5a3b94994 100644 --- a/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -133,7 +133,9 @@ public abstract class ToolBarMenuDock { menuList.addAll(Arrays.asList(menuDefs)); // 添加服务器菜单 - menuList.add(createServerMenuDef(plus)); + if (FRContext.getCurrentEnv() != null && FRContext.getCurrentEnv().isRoot()) { + menuList.add(createServerMenuDef(plus)); + } // 添加帮助菜单 menuList.add(createHelpMenuDef()); @@ -268,11 +270,6 @@ public abstract class ToolBarMenuDock { protected MenuDef createServerMenuDef(ToolBarMenuDockPlus plus) { MenuDef menuDef = new MenuDef(Inter.getLocText("FR-Designer_M-Server"), 'S'); - if (FRContext.getCurrentEnv() == null || !FRContext.getCurrentEnv().isRoot()) { - menuDef.addShortCut(new ConnectionListAction()); - return menuDef; - } - if (!BaseUtils.isAuthorityEditing()) { menuDef.addShortCut( new ConnectionListAction(), From 085f2e57ebca1d98384293cea06b9d17ee99f990 Mon Sep 17 00:00:00 2001 From: neil Date: Fri, 2 Dec 2016 09:50:24 +0800 Subject: [PATCH 107/139] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=EF=BC=8C=20build=20failed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modes/GroovyTokenMaker.java | 5272 ----------------- 1 file changed, 5272 deletions(-) delete mode 100644 designer_base/src/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/GroovyTokenMaker.java diff --git a/designer_base/src/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/GroovyTokenMaker.java b/designer_base/src/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/GroovyTokenMaker.java deleted file mode 100644 index 4157310d4c..0000000000 --- a/designer_base/src/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/GroovyTokenMaker.java +++ /dev/null @@ -1,5272 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 11/11/12 7:19 PM */ - -/* - * 09/28/2007 - * - * GroovyTokenMaker.java - Scanner for the Groovy programming language. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package com.fr.design.gui.syntax.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import com.fr.design.gui.syntax.ui.rsyntaxtextarea.*; - - -/** - * Scanner for the Groovy programming language.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated GroovyTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ - -public class GroovyTokenMaker extends AbstractJFlexCTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int MULTILINE_STRING_DOUBLE = 3; - public static final int DOCCOMMENT = 2; - public static final int YYINITIAL = 0; - public static final int MLC = 1; - public static final int STRING_DOUBLE = 5; - public static final int MULTILINE_STRING_SINGLE = 4; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\22\1\21\1\0\1\22\1\16\22\0\1\22\1\53\1\13"+ - "\1\17\1\20\1\53\1\55\1\10\2\44\1\24\1\46\1\45\1\33"+ - "\1\34\1\23\1\4\1\5\2\7\4\7\2\3\1\56\1\45\1\47"+ - "\1\50\1\52\1\54\1\100\1\102\1\26\1\6\1\67\1\32\1\31"+ - "\1\116\1\110\1\105\2\1\1\25\1\111\1\112\1\113\1\115\1\121"+ - "\1\74\1\103\1\106\1\107\1\117\1\120\1\30\1\1\1\122\1\44"+ - "\1\12\1\44\1\51\1\2\1\0\1\40\1\27\1\63\1\61\1\37"+ - "\1\15\1\72\1\57\1\65\1\114\1\75\1\41\1\66\1\14\1\60"+ - "\1\62\1\104\1\36\1\42\1\35\1\11\1\71\1\70\1\64\1\73"+ - "\1\101\1\76\1\51\1\77\1\43\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\3\0\2\1\1\0\1\2\1\3\2\4\1\3\1\5"+ - "\1\3\1\6\2\3\1\2\1\7\1\10\2\11\5\3"+ - "\1\11\7\3\1\11\1\12\1\3\6\11\13\3\1\13"+ - "\16\3\2\1\1\14\5\1\1\15\7\1\1\16\2\1"+ - "\1\17\2\1\1\20\1\21\1\22\1\23\1\24\1\2"+ - "\2\25\1\26\1\4\1\25\1\26\2\25\1\27\2\25"+ - "\5\3\1\5\1\30\1\5\1\0\1\3\1\0\7\3"+ - "\2\0\1\31\1\32\1\11\36\3\1\33\12\3\2\0"+ - "\1\11\3\3\1\33\7\3\3\33\1\34\21\3\1\13"+ - "\56\3\2\0\1\35\4\0\1\36\2\0\1\37\16\0"+ - "\1\16\1\0\1\40\2\0\1\20\1\22\1\2\1\4"+ - "\1\26\1\0\2\27\1\4\1\27\10\3\1\30\1\41"+ - "\1\5\1\42\1\5\1\0\1\34\1\3\1\43\5\3"+ - "\1\44\1\45\64\3\1\33\13\3\1\46\27\3\1\2"+ - "\46\3\1\34\30\3\33\0\1\47\2\0\1\50\1\2"+ - "\2\25\12\3\1\42\1\5\1\0\4\3\1\34\1\51"+ - "\3\3\1\34\3\3\1\34\2\3\1\46\4\3\2\34"+ - "\6\3\1\52\5\3\1\34\53\3\1\2\51\3\1\0"+ - "\32\3\2\0\1\53\2\0\1\54\15\0\1\55\11\0"+ - "\1\40\1\2\2\3\1\34\10\3\1\5\1\0\1\33"+ - "\40\3\1\33\17\3\1\34\22\3\1\2\11\3\1\34"+ - "\27\3\1\34\6\3\1\0\32\3\34\0\1\2\14\3"+ - "\1\5\1\0\4\3\1\34\33\3\1\56\31\3\1\34"+ - "\1\2\11\3\1\34\26\3\1\34\10\3\1\0\2\3"+ - "\1\34\10\3\1\34\13\3\23\0\12\3\1\0\2\3"+ - "\1\0\46\3\1\34\2\3\1\2\40\3\1\0\11\3"+ - "\1\0\23\3\1\34\7\3\5\0\1\55\4\0\14\3"+ - "\2\0\101\3\2\0\7\3\1\0\33\3\11\0\4\3"+ - "\1\34\6\3\2\0\5\3\1\34\10\3\1\34\11\3"+ - "\1\34\45\3\2\0\6\3\1\34\25\3\5\0\4\3"+ - "\1\0\2\3\1\34\2\3\2\0\3\3\1\0\55\3"+ - "\2\0\27\3\5\0\3\3\2\0\3\3\2\0\3\3"+ - "\1\0\1\34\14\3\1\34\14\3\1\34\12\3\2\0"+ - "\14\3\1\34\4\3\2\0\2\3\2\0\3\3\2\0"+ - "\3\3\1\0\10\3\1\34\3\3\1\0\1\3\1\34"+ - "\2\3\1\34\16\3\1\0\13\3\1\34\3\3\1\34"+ - "\4\3\2\0\2\3\1\0\2\3\1\0\2\3\1\34"+ - "\10\3\1\0\12\3\1\0\21\3\2\0\3\3\1\0"+ - "\5\3\1\34\1\3\1\0\12\3\1\0\14\3\1\34"+ - "\2\0\3\3\1\0\4\3\1\0\1\3\1\0\11\3"+ - "\1\0\11\3\2\0\2\3\1\0\2\3\1\0\1\3"+ - "\1\0\7\3\1\0\6\3\2\0\1\3\1\0\1\3"+ - "\1\0\1\3\1\0\4\3\1\0\3\3\1\34\1\3"+ - "\3\0\1\3\1\0\1\3\1\0\1\3\1\0\2\3"+ - "\1\0\3\3\1\0\1\34\3\0\1\3\1\0\1\3"+ - "\2\0\2\3\1\0\2\3\5\0\1\3\1\0\1\3"+ - "\2\0\1\3\6\0\1\3\1\0\1\3\16\0\1\34"+ - "\23\0"; - - private static int [] zzUnpackAction() { - int [] result = new int[1876]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\123\0\246\0\371\0\u014c\0\u019f\0\u01f2\0\u0245"+ - "\0\u0298\0\u02eb\0\u033e\0\u0391\0\u03e4\0\u0437\0\u048a\0\u04dd"+ - "\0\u0530\0\u0530\0\u0583\0\u05d6\0\u0629\0\u067c\0\u06cf\0\u0722"+ - "\0\u0775\0\u07c8\0\u081b\0\u086e\0\u08c1\0\u0914\0\u0967\0\u09ba"+ - "\0\u0a0d\0\u0a60\0\u0ab3\0\u0530\0\u0530\0\u0b06\0\u0b59\0\u0bac"+ - "\0\u0bff\0\u0530\0\u0c52\0\u0ca5\0\u0cf8\0\u0d4b\0\u0d9e\0\u0df1"+ - "\0\u0e44\0\u0e97\0\u0eea\0\u0f3d\0\u0f90\0\u0fe3\0\u1036\0\u1089"+ - "\0\u10dc\0\u112f\0\u1182\0\u11d5\0\u1228\0\u127b\0\u12ce\0\u1321"+ - "\0\u1374\0\u13c7\0\u141a\0\u146d\0\u14c0\0\u1513\0\u1566\0\u0530"+ - "\0\u15b9\0\u160c\0\u165f\0\u16b2\0\u1705\0\u0530\0\u1758\0\u17ab"+ - "\0\u17fe\0\u1851\0\u18a4\0\u18f7\0\u194a\0\u199d\0\u19f0\0\u1a43"+ - "\0\u0530\0\u1a96\0\u1ae9\0\u1b3c\0\u0530\0\u1b8f\0\u0530\0\u0530"+ - "\0\u1be2\0\u1c35\0\u1c88\0\u1c35\0\u1c35\0\u1cdb\0\u1d2e\0\u1d81"+ - "\0\u1dd4\0\u1e27\0\u1e7a\0\u1ecd\0\u1f20\0\u1f73\0\u1fc6\0\u2019"+ - "\0\u206c\0\u20bf\0\u2112\0\u2165\0\u21b8\0\u220b\0\u225e\0\u22b1"+ - "\0\u2304\0\u2357\0\u23aa\0\u23fd\0\u2450\0\u24a3\0\u24f6\0\u2549"+ - "\0\u259c\0\u25ef\0\u24f6\0\u2642\0\u2695\0\u26e8\0\u273b\0\u278e"+ - "\0\u27e1\0\u2834\0\u2887\0\u28da\0\u292d\0\u2980\0\u29d3\0\u2a26"+ - "\0\u2a79\0\u2acc\0\u2b1f\0\u2b72\0\u2bc5\0\u2c18\0\u2c6b\0\u2cbe"+ - "\0\u2d11\0\u2d64\0\u2db7\0\u2e0a\0\u2e5d\0\u2eb0\0\u2f03\0\u2f56"+ - "\0\u2fa9\0\u2ffc\0\u304f\0\u30a2\0\u30f5\0\u3148\0\u319b\0\u31ee"+ - "\0\u3241\0\u3294\0\u32e7\0\u333a\0\u338d\0\u0629\0\u33e0\0\u3433"+ - "\0\u3486\0\u34d9\0\u352c\0\u357f\0\u35d2\0\u3625\0\u3678\0\u36cb"+ - "\0\u371e\0\u3771\0\u37c4\0\u0245\0\u3817\0\u386a\0\u38bd\0\u3910"+ - "\0\u3963\0\u39b6\0\u3a09\0\u3a5c\0\u3aaf\0\u3b02\0\u3b55\0\u3ba8"+ - "\0\u3bfb\0\u3c4e\0\u3ca1\0\u3cf4\0\u3d47\0\u3d9a\0\u3ded\0\u3e40"+ - "\0\u3e93\0\u3ee6\0\u3f39\0\u3f8c\0\u3fdf\0\u4032\0\u4085\0\u40d8"+ - "\0\u412b\0\u417e\0\u41d1\0\u4224\0\u4277\0\u42ca\0\u431d\0\u4370"+ - "\0\u43c3\0\u4416\0\u4469\0\u44bc\0\u450f\0\u4562\0\u45b5\0\u4608"+ - "\0\u465b\0\u46ae\0\u4701\0\u4754\0\u47a7\0\u47fa\0\u484d\0\u48a0"+ - "\0\u48f3\0\u4946\0\u4999\0\u49ec\0\u4a3f\0\u4a92\0\u4ae5\0\u4b38"+ - "\0\u4b8b\0\u4bde\0\u4c31\0\u4c84\0\u4cd7\0\u4d2a\0\u4d7d\0\u4dd0"+ - "\0\u0530\0\u4e23\0\u4e76\0\u4ec9\0\u4f1c\0\u0530\0\u4f6f\0\u4fc2"+ - "\0\u0530\0\u5015\0\u5068\0\u50bb\0\u510e\0\u5161\0\u51b4\0\u5207"+ - "\0\u525a\0\u52ad\0\u5300\0\u5353\0\u53a6\0\u53f9\0\u544c\0\u0530"+ - "\0\u549f\0\u54f2\0\u5545\0\u5598\0\u0530\0\u0530\0\u55eb\0\u563e"+ - "\0\u5691\0\u56e4\0\u5737\0\u1c35\0\u578a\0\u57dd\0\u5830\0\u5883"+ - "\0\u58d6\0\u5929\0\u597c\0\u59cf\0\u5a22\0\u5a75\0\u0530\0\u0530"+ - "\0\u5ac8\0\u21b8\0\u5b1b\0\u5b6e\0\u0245\0\u5bc1\0\u0530\0\u5c14"+ - "\0\u5c67\0\u5cba\0\u5d0d\0\u5d60\0\u0530\0\u5db3\0\u5e06\0\u5e59"+ - "\0\u5eac\0\u5eff\0\u5f52\0\u5fa5\0\u5ff8\0\u604b\0\u609e\0\u60f1"+ - "\0\u6144\0\u6197\0\u61ea\0\u623d\0\u6290\0\u62e3\0\u6336\0\u6389"+ - "\0\u63dc\0\u642f\0\u6482\0\u64d5\0\u6528\0\u657b\0\u65ce\0\u6621"+ - "\0\u6674\0\u66c7\0\u671a\0\u676d\0\u67c0\0\u6813\0\u6866\0\u68b9"+ - "\0\u690c\0\u695f\0\u69b2\0\u6a05\0\u6a58\0\u6aab\0\u6afe\0\u6b51"+ - "\0\u6ba4\0\u6bf7\0\u6c4a\0\u6c9d\0\u6cf0\0\u6d43\0\u6d96\0\u6de9"+ - "\0\u6e3c\0\u6e8f\0\u6ee2\0\u6f35\0\u6f88\0\u6fdb\0\u702e\0\u7081"+ - "\0\u70d4\0\u7127\0\u717a\0\u71cd\0\u7220\0\u7273\0\u72c6\0\u7319"+ - "\0\u736c\0\u73bf\0\u7412\0\u7465\0\u74b8\0\u750b\0\u755e\0\u75b1"+ - "\0\u7604\0\u7657\0\u76aa\0\u76fd\0\u7750\0\u77a3\0\u77f6\0\u7849"+ - "\0\u789c\0\u78ef\0\u7942\0\u7995\0\u79e8\0\u7a3b\0\u7a8e\0\u7ae1"+ - "\0\u7b34\0\u7b87\0\u7bda\0\u7c2d\0\u7c80\0\u7cd3\0\u7d26\0\u7d79"+ - "\0\u7dcc\0\u7e1f\0\u7e72\0\u7ec5\0\u7f18\0\u7f6b\0\u7fbe\0\u8011"+ - "\0\u8064\0\u80b7\0\u810a\0\u815d\0\u81b0\0\u8203\0\u8256\0\u82a9"+ - "\0\u82fc\0\u834f\0\u83a2\0\u83f5\0\u8448\0\u849b\0\u84ee\0\u8541"+ - "\0\u8594\0\u85e7\0\u863a\0\u868d\0\u86e0\0\u8733\0\u8786\0\u87d9"+ - "\0\u882c\0\u887f\0\u88d2\0\u8925\0\u8978\0\u89cb\0\u8a1e\0\u8a71"+ - "\0\u8ac4\0\u8b17\0\u8b6a\0\u8bbd\0\u8c10\0\u8c63\0\u8cb6\0\u8d09"+ - "\0\u8d5c\0\u8daf\0\u8e02\0\u8e55\0\u8ea8\0\u8efb\0\u8f4e\0\u8fa1"+ - "\0\u8ff4\0\u9047\0\u909a\0\u90ed\0\u9140\0\u9193\0\u91e6\0\u9239"+ - "\0\u928c\0\u92df\0\u9332\0\u9385\0\u93d8\0\u942b\0\u947e\0\u94d1"+ - "\0\u9524\0\u9577\0\u95ca\0\u961d\0\u9670\0\u96c3\0\u9716\0\u9769"+ - "\0\u97bc\0\u0530\0\u980f\0\u9862\0\u0530\0\u98b5\0\u578a\0\u9908"+ - "\0\u995b\0\u99ae\0\u9a01\0\u9a54\0\u9aa7\0\u9afa\0\u9b4d\0\u9ba0"+ - "\0\u9bf3\0\u9c46\0\u0530\0\u9c99\0\u9cec\0\u9d3f\0\u9d92\0\u9de5"+ - "\0\u9e38\0\u9e8b\0\u0530\0\u9ede\0\u9f31\0\u9f84\0\u9fd7\0\ua02a"+ - "\0\ua07d\0\ua0d0\0\ua123\0\ua176\0\ua1c9\0\u0245\0\ua21c\0\ua26f"+ - "\0\ua2c2\0\ua315\0\ua368\0\ua3bb\0\ua40e\0\ua461\0\ua4b4\0\ua507"+ - "\0\ua55a\0\ua5ad\0\u0245\0\ua600\0\ua653\0\ua6a6\0\ua6f9\0\ua74c"+ - "\0\ua79f\0\ua7f2\0\ua845\0\ua898\0\ua8eb\0\ua93e\0\ua991\0\ua9e4"+ - "\0\uaa37\0\uaa8a\0\uaadd\0\uab30\0\uab83\0\uabd6\0\uac29\0\uac7c"+ - "\0\uaccf\0\uad22\0\uad75\0\uadc8\0\uae1b\0\uae6e\0\uaec1\0\uaf14"+ - "\0\uaf67\0\uafba\0\ub00d\0\ub060\0\ub0b3\0\ub106\0\ub159\0\ub1ac"+ - "\0\ub1ff\0\ub252\0\ub2a5\0\ub2f8\0\ub34b\0\ub39e\0\ub3f1\0\ub444"+ - "\0\ub497\0\ub4ea\0\ub53d\0\ub590\0\ub5e3\0\ub636\0\ub689\0\ub6dc"+ - "\0\ub72f\0\ub782\0\ub7d5\0\ub828\0\ub87b\0\ub8ce\0\ub921\0\ub974"+ - "\0\ub9c7\0\uba1a\0\uba6d\0\ubac0\0\ubb13\0\ubb66\0\ubbb9\0\ubc0c"+ - "\0\ubc5f\0\ubcb2\0\ubd05\0\ubd58\0\ubdab\0\ubdfe\0\ube51\0\ubea4"+ - "\0\ubef7\0\ubf4a\0\ubf9d\0\ubff0\0\uc043\0\uc096\0\uc0e9\0\uc13c"+ - "\0\uc18f\0\uc1e2\0\uc235\0\uc288\0\uc2db\0\uc32e\0\uc381\0\uc3d4"+ - "\0\uc427\0\uc47a\0\uc4cd\0\uc520\0\uc573\0\uc5c6\0\uc619\0\uc66c"+ - "\0\uc6bf\0\uc712\0\uc765\0\uc7b8\0\uc80b\0\uc85e\0\uc8b1\0\uc904"+ - "\0\uc957\0\uc9aa\0\uc9fd\0\uca50\0\ucaa3\0\ucaf6\0\ucb49\0\ucb9c"+ - "\0\ucbef\0\ucc42\0\ucc95\0\ucce8\0\ucd3b\0\ucd8e\0\ucde1\0\uce34"+ - "\0\uce87\0\uceda\0\ucf2d\0\ucf80\0\ucfd3\0\ud026\0\ud079\0\ud0cc"+ - "\0\ud11f\0\ud172\0\ud1c5\0\ud218\0\u0530\0\ud26b\0\ud2be\0\ud311"+ - "\0\ud364\0\ud3b7\0\ud40a\0\ud45d\0\ud4b0\0\ud503\0\u0530\0\ud556"+ - "\0\ud5a9\0\ud5fc\0\ud64f\0\ud6a2\0\ud6f5\0\ud748\0\ud79b\0\ud7ee"+ - "\0\ud841\0\ud894\0\ud8e7\0\ud93a\0\ud98d\0\ud9e0\0\uda33\0\uda86"+ - "\0\udad9\0\udb2c\0\udb7f\0\udbd2\0\udc25\0\udc78\0\udccb\0\udd1e"+ - "\0\udd71\0\uddc4\0\ude17\0\ude6a\0\udebd\0\udf10\0\udf63\0\udfb6"+ - "\0\ue009\0\ue05c\0\ue0af\0\ue102\0\ue155\0\ue1a8\0\ue1fb\0\ue24e"+ - "\0\ue2a1\0\ue2f4\0\ue347\0\ue39a\0\ue3ed\0\ue440\0\u6674\0\ue493"+ - "\0\ue4e6\0\ue539\0\ue58c\0\ue5df\0\ue632\0\ue685\0\ue6d8\0\ue72b"+ - "\0\ue77e\0\ue7d1\0\ue824\0\ue877\0\ue8ca\0\ue91d\0\ue970\0\ue9c3"+ - "\0\uea16\0\uea69\0\ueabc\0\ueb0f\0\ueb62\0\uebb5\0\uec08\0\uec5b"+ - "\0\uecae\0\ued01\0\ued54\0\ueda7\0\uedfa\0\uee4d\0\ueea0\0\ueef3"+ - "\0\uef46\0\uef99\0\uefec\0\uf03f\0\uf092\0\uf0e5\0\uf138\0\uf18b"+ - "\0\uf1de\0\uf231\0\uf284\0\uf2d7\0\uf32a\0\uf37d\0\uf3d0\0\uf423"+ - "\0\uf476\0\uf4c9\0\uf51c\0\uf56f\0\uf5c2\0\uf615\0\uf668\0\uf6bb"+ - "\0\uf70e\0\uf761\0\uf7b4\0\uf807\0\uf85a\0\uf8ad\0\uf900\0\uf953"+ - "\0\uf9a6\0\uf9f9\0\ufa4c\0\ufa9f\0\ufaf2\0\ufb45\0\ufb98\0\ufbeb"+ - "\0\ufc3e\0\ufc91\0\ufce4\0\ufd37\0\ufd8a\0\ufddd\0\ufe30\0\ufe83"+ - "\0\ufed6\0\uff29\0\uff7c\0\uffcf\1\42\1\165\1\310\1\u011b"+ - "\1\u016e\1\u01c1\1\u0214\1\u0267\1\u02ba\1\u030d\1\u0360\1\u03b3"+ - "\1\u0406\1\u0459\1\u04ac\1\u04ff\1\u0552\1\u05a5\0\ucce8\1\u05f8"+ - "\0\ucde1\1\u064b\1\u069e\1\u06f1\1\u0744\1\u0797\1\u07ea\1\u083d"+ - "\1\u0890\1\u08e3\1\u0936\1\u0989\1\u09dc\1\u0a2f\1\u0a82\1\u0ad5"+ - "\1\u0b28\1\u0b7b\1\u0bce\1\u0c21\1\u0c74\1\u0cc7\1\u0d1a\1\u0d6d"+ - "\1\u0dc0\1\u0e13\1\u0e66\1\u0eb9\1\u0f0c\1\u0f5f\1\u0fb2\1\u1005"+ - "\1\u1058\1\u10ab\1\u10fe\1\u1151\1\u11a4\1\u11f7\1\u124a\1\u129d"+ - "\1\u12f0\1\u1343\1\u1396\1\u13e9\1\u143c\1\u148f\1\u14e2\1\u1535"+ - "\1\u1588\0\u3817\1\u15db\1\u162e\1\u1681\1\u16d4\1\u1727\1\u177a"+ - "\1\u17cd\1\u1820\1\u1873\1\u18c6\1\u1919\1\u196c\1\u19bf\1\u1a12"+ - "\1\u1a65\1\u1ab8\1\u1b0b\1\u1b5e\1\u1bb1\1\u1c04\1\u1c57\1\u1caa"+ - "\0\u0245\1\u1cfd\1\u1d50\1\u1da3\1\u1df6\1\u1e49\1\u1e9c\1\u1eef"+ - "\1\u1f42\1\u1f95\1\u1fe8\1\u203b\1\u208e\1\u20e1\1\u2134\1\u2187"+ - "\1\u21da\1\u222d\1\u2280\1\u22d3\1\u2326\1\u2379\1\u23cc\1\u241f"+ - "\1\u2472\1\u24c5\1\u2518\1\u256b\1\u25be\1\u2611\1\u2664\1\u26b7"+ - "\1\u270a\1\u275d\1\u27b0\1\u2803\1\u2856\1\u28a9\1\u28fc\1\u294f"+ - "\1\u29a2\1\u29f5\1\u2a48\1\u2a9b\1\u2aee\1\u2b41\1\u2b94\1\u2be7"+ - "\1\u2c3a\1\u2c8d\1\u2ce0\1\u2d33\1\u2d86\1\u2dd9\1\u2e2c\1\u2e7f"+ - "\1\u2ed2\1\u2f25\1\u2f78\1\u2fcb\1\u301e\1\u3071\1\u30c4\1\u3117"+ - "\1\u316a\1\u31bd\1\u3210\1\u3263\1\u32b6\1\u3309\1\u335c\1\u33af"+ - "\1\u3402\1\u3455\1\u34a8\1\u34fb\1\u354e\1\u35a1\1\u35f4\1\u3647"+ - "\1\u369a\1\u36ed\1\u3740\1\u3793\1\u37e6\1\u3839\1\u388c\1\u38df"+ - "\1\u3932\1\u3985\1\u39d8\1\u3a2b\1\u3a7e\1\u3ad1\1\u3b24\1\u3b77"+ - "\1\u3bca\1\u3c1d\1\u3c70\1\u3cc3\1\u3d16\1\u3d69\1\u3dbc\1\u3e0f"+ - "\1\u3e62\1\u3eb5\1\u3f08\1\u3f5b\1\u3fae\1\u4001\1\u4054\1\u40a7"+ - "\1\u40fa\1\u414d\1\u41a0\1\u41f3\1\u4246\1\u4299\1\u42ec\1\u433f"+ - "\1\u4392\1\u43e5\1\u4438\1\u448b\1\u44de\1\u4531\1\u4584\1\u45d7"+ - "\1\u462a\1\u467d\1\u46d0\1\u4723\1\u4776\1\u47c9\1\u481c\1\u486f"+ - "\1\u48c2\1\u4915\1\u4968\1\u49bb\1\u4a0e\1\u4a61\1\u4ab4\1\u4b07"+ - "\1\u4b5a\1\u4bad\1\u4c00\1\u4c53\1\u4ca6\1\u4cf9\1\u4d4c\1\u4d9f"+ - "\1\u4df2\1\u4e45\1\u4e98\1\u4eeb\1\u4f3e\1\u4f91\1\u4fe4\1\u5037"+ - "\1\u508a\1\u50dd\1\u5130\1\u5183\1\u51d6\1\u5229\1\u527c\1\u52cf"+ - "\1\u5322\1\u5375\1\u53c8\1\u541b\1\u546e\1\u54c1\1\u5514\1\u5567"+ - "\1\u55ba\1\u560d\1\u5660\1\u56b3\1\u5706\1\u5759\1\u57ac\1\u57ff"+ - "\1\u5852\1\u58a5\1\u58f8\1\u594b\1\u599e\1\u59f1\1\u5a44\1\u5a97"+ - "\1\u5aea\1\u5b3d\1\u5b90\1\u5be3\1\u5c36\1\u5c89\1\u5cdc\1\u5d2f"+ - "\1\u5d82\1\u5dd5\1\u5e28\1\u5e7b\1\u5ece\1\u5f21\1\u5f74\1\u5fc7"+ - "\1\u601a\1\u3402\1\u606d\1\u60c0\1\u6113\1\u6166\1\u61b9\1\u620c"+ - "\1\u625f\1\u62b2\1\u6305\1\u6358\1\u63ab\1\u63fe\1\u6451\1\u64a4"+ - "\1\u64f7\1\u654a\1\u659d\1\u65f0\1\u6643\1\u6696\1\u66e9\1\u673c"+ - "\1\u678f\1\u67e2\1\u6835\1\u6888\1\u68db\1\u692e\1\u6981\1\u69d4"+ - "\1\u6a27\1\u6a7a\1\u6acd\1\u6b20\1\u6b73\1\u6bc6\1\u6c19\1\u6c6c"+ - "\1\u6cbf\1\u6d12\1\u6d65\1\u6db8\1\u6e0b\1\u6e5e\1\u6eb1\1\u6f04"+ - "\1\u6f57\1\u6faa\1\u6ffd\1\u7050\1\u70a3\1\u70f6\1\u7149\1\u719c"+ - "\1\u71ef\1\u7242\1\u7295\1\u72e8\1\u733b\1\u738e\1\u73e1\1\u7434"+ - "\1\u7487\1\u74da\1\u752d\1\u7580\1\u75d3\1\u7626\1\u7679\1\u76cc"+ - "\1\u771f\1\u7772\1\u77c5\1\u7818\1\u786b\1\u78be\1\u7911\1\u7964"+ - "\1\u79b7\1\u7a0a\1\u7a5d\1\u7ab0\1\u7b03\1\u7b56\1\u7ba9\1\u7bfc"+ - "\1\u7c4f\1\u7ca2\1\u7cf5\1\u7d48\1\u7d9b\1\u7dee\1\u7e41\1\u7e94"+ - "\1\u7ee7\1\u7f3a\1\u7f8d\1\u7fe0\1\u8033\1\u8086\1\u80d9\1\u812c"+ - "\1\u817f\1\u81d2\1\u8225\1\u8278\1\u82cb\1\u831e\1\u8371\1\u83c4"+ - "\1\u8417\1\u846a\1\u84bd\1\u8510\1\u8563\1\u85b6\1\u8609\1\u865c"+ - "\1\u86af\1\u8702\1\u8755\1\u87a8\1\u87fb\1\u884e\1\u88a1\1\u88f4"+ - "\1\u8947\1\u899a\1\u89ed\1\u8a40\1\u8a93\1\u8ae6\1\u8b39\1\u8b8c"+ - "\1\u8bdf\1\u8c32\1\u8c85\1\u8cd8\1\u8d2b\1\u8d7e\1\u8dd1\1\u8e24"+ - "\1\u8e77\1\u8eca\1\u8f1d\1\u8f70\1\u8fc3\1\u9016\1\u9069\1\u90bc"+ - "\1\u910f\1\u9162\1\u91b5\1\u9208\1\u925b\1\u92ae\1\u9301\1\u9354"+ - "\1\u93a7\1\u93fa\1\u944d\1\u94a0\1\u94f3\1\u9546\1\u9599\1\u95ec"+ - "\1\u963f\1\u9692\1\u96e5\1\u9738\1\u978b\1\u97de\1\u9831\1\u9884"+ - "\1\u98d7\1\u992a\1\u997d\1\u99d0\1\u9a23\1\u9a76\1\u9ac9\1\u9b1c"+ - "\1\u9b6f\1\u9bc2\1\u9c15\1\u9c68\1\u9cbb\1\u9d0e\1\u9d61\1\u9db4"+ - "\1\u9e07\1\u9e5a\1\u9ead\1\u9f00\1\u9f53\1\u9fa6\1\u9ff9\1\ua04c"+ - "\1\ua09f\1\ua0f2\1\u9c15\1\ua145\1\ua198\1\ua1eb\1\ua23e\1\ua291"+ - "\1\ua2e4\1\ua337\1\ua38a\1\ua3dd\1\ua430\1\ua483\1\ua4d6\1\ua529"+ - "\1\ua57c\1\ua5cf\1\ua622\1\ua675\1\ua6c8\1\ua71b\1\ua76e\1\ua7c1"+ - "\1\ua814\1\ua867\1\ua8ba\1\ua90d\1\ua960\1\ua9b3\1\uaa06\1\uaa59"+ - "\1\uaaac\1\uaaff\1\uab52\1\uaba5\1\uabf8\1\uac4b\1\uac9e\1\uacf1"+ - "\1\uad44\1\uad97\1\uadea\1\uae3d\1\uae90\1\uaee3\1\uaf36\1\uaf89"+ - "\0\u0530\1\uafdc\1\ub02f\1\ub082\1\ub0d5\1\ub128\1\ub17b\1\ub1ce"+ - "\1\ub221\1\ub274\1\ub2c7\1\ub31a\1\ub36d\1\ub3c0\1\ub413\1\ub466"+ - "\1\ub4b9\1\ub50c\1\ub55f\1\ub5b2\1\ub605\1\ub658\1\ub6ab\1\ub6fe"+ - "\1\ub751\1\ub7a4\1\ub7f7\1\ub84a\1\ub89d\1\ub8f0\1\ub943\1\ub996"+ - "\1\ub9e9\1\uba3c\1\u79b7\1\uba8f\1\ubae2\1\ubb35\1\ubb88\1\ubbdb"+ - "\1\ubc2e\1\ubc81\1\ubcd4\1\ubd27\1\ubd7a\1\ubdcd\1\ube20\1\ube73"+ - "\1\ubec6\1\ubf19\1\ubf6c\1\ubfbf\1\uc012\1\uc065\1\uc0b8\1\uc10b"+ - "\1\uc15e\1\uc1b1\1\uc204\1\uc257\1\uc2aa\1\uc2fd\1\uc350\1\uc3a3"+ - "\1\uc3f6\1\uc449\1\uc49c\1\uc4ef\1\uc542\1\uc595\1\uc5e8\1\uc63b"+ - "\1\uc68e\1\uc6e1\1\uc734\1\uc787\1\uc7da\1\uc82d\1\uc880\1\uc8d3"+ - "\1\uc926\1\uc979\1\uc9cc\1\uca1f\1\uca72\1\ucac5\1\ucb18\1\ucb6b"+ - "\1\ucbbe\1\ucc11\1\ucc64\1\uccb7\1\ucd0a\1\ucd5d\1\ucdb0\1\uce03"+ - "\1\uce56\1\ucea9\1\ucefc\1\ucf4f\1\ucfa2\1\ucff5\1\ud048\1\ud09b"+ - "\1\ud0ee\1\ud141\1\ud194\1\ud1e7\1\ud23a\1\ud28d\1\ud2e0\1\ud333"+ - "\1\ud386\1\ud3d9\1\ud42c\1\ud47f\1\ud4d2\1\ud525\1\ud578\1\ud5cb"+ - "\1\ud61e\1\ud671\1\ud6c4\1\ud717\1\ud76a\1\ud7bd\1\ud810\1\ud863"+ - "\1\ud8b6\1\ud909\1\ud95c\1\ud9af\1\uda02\1\uda55\1\udaa8\1\udafb"+ - "\1\udb4e\1\udba1\1\udbf4\1\udc47\1\udc9a\1\udced\1\udd40\1\udd93"+ - "\1\udde6\1\ude39\1\ude8c\1\udedf\1\udf32\1\udf85\1\udfd8\1\ue02b"+ - "\1\ue07e\1\ue0d1\1\ue124\1\ue177\1\ue1ca\1\ue21d\1\ue270\1\ue2c3"+ - "\1\ue316\1\ue369\1\ue3bc\1\ue40f\1\ue462\1\ue4b5\1\ue508\1\ue55b"+ - "\1\ue5ae\1\ue601\1\ue654\1\ue6a7\1\ue6fa\1\ue74d\1\ue7a0\1\ue7f3"+ - "\1\ue846\1\ue899\1\ue8ec\1\ue93f\1\ue992\1\ue9e5\1\uea38\1\uea8b"+ - "\1\ueade\1\ueb31\1\ueb84\1\uebd7\1\uec2a\1\uec7d\1\uecd0\1\ued23"+ - "\1\ued76\1\uedc9\1\uee1c\1\uee6f\1\ueec2\1\uef15\1\uef68\1\uefbb"+ - "\1\uf00e\1\uf061\1\uf0b4\1\uf107\1\uf15a\1\uf1ad\1\uf200\1\uf253"+ - "\1\uf2a6\1\uf2f9\1\uf34c\1\uf39f\1\uf3f2\1\uf445\1\uf498\1\uf4eb"+ - "\1\uf53e\1\u7fe0\1\uf591\1\uf5e4\1\uf637\1\uf68a\1\uf6dd\1\uf730"+ - "\1\uf783\1\uf7d6\1\uf829\1\uf87c\1\uf8cf\1\uf922\1\uf975\1\uf9c8"+ - "\1\ufa1b\1\ufa6e\1\ufac1\1\ufb14\1\ufb67\1\ufbba\1\ufc0d\1\ufc60"+ - "\1\ufcb3\1\ufd06\1\ufd59\1\ufdac\1\ufdff\1\ufe52\1\ufea5\1\ufef8"+ - "\1\uff4b\1\uff9e\1\ufff1\2\104\2\227\2\352\2\u013d\2\u0190"+ - "\2\u01e3\2\u0236\2\u0289\2\u02dc\2\u032f\2\u0382\2\u03d5\2\u0428"+ - "\2\u047b\2\u04ce\2\u0521\2\u0574\2\u05c7\2\u061a\2\u066d\2\u06c0"+ - "\2\u0713\2\u0766\2\u07b9\2\u080c\2\u085f\2\u08b2\2\u0905\2\u0958"+ - "\2\u09ab\2\u09fe\2\u0a51\2\u0aa4\2\u0af7\2\u0b4a\2\u0b9d\2\u0bf0"+ - "\2\u0c43\2\u0c96\2\u0ce9\2\u0d3c\2\u0d8f\2\u0de2\2\u0e35\2\u0e88"+ - "\2\u0edb\2\u0f2e\2\u0f81\2\u0fd4\2\u1027\2\u107a\2\u10cd\2\u1120"+ - "\2\u1173\2\u11c6\2\u1219\2\u126c\2\u12bf\2\u1312\2\u1365\2\u13b8"+ - "\2\u140b\2\u145e\2\u14b1\2\u1504\2\u1557\2\u15aa\2\u15fd\2\u1650"+ - "\2\u16a3\2\u16f6\2\u1749\2\u179c\2\u17ef\2\u1842\2\u1895\2\u18e8"+ - "\2\u193b\2\u198e\2\u19e1\2\u1a34\2\u1a87\2\u1ada\2\u1b2d\2\u1b80"+ - "\2\u1bd3\2\u1c26\2\u1c79\2\u1ccc\2\u1d1f\2\u1d72\2\u1dc5\2\u1e18"+ - "\2\u1e6b\2\u1ebe\2\u1f11\2\u1f64\2\u1fb7\2\u200a\2\u205d\2\u20b0"+ - "\2\u2103\2\u2156\2\u21a9\2\u21fc\2\u224f\2\u22a2\2\u22f5\2\u2348"+ - "\2\u239b\2\u23ee\2\u2441\2\u2494\2\u24e7\2\u253a\2\u258d\2\u25e0"+ - "\2\u2633\2\u2686\2\u26d9\2\u272c\2\u277f\2\u27d2\2\u2825\2\u2878"+ - "\2\u28cb\2\u291e\2\u2971\2\u29c4\2\u2a17\2\u2a6a\2\u2abd\2\u2b10"+ - "\2\u2b63\2\u2bb6\2\u2c09\2\u2c5c\2\u2caf\2\u2d02\2\u2d55\2\u2da8"+ - "\2\u2dfb\2\u2e4e\2\u2ea1\2\u2ef4\2\u2f47\2\u2f9a\2\u2fed\2\u3040"+ - "\2\u3093\2\u30e6\2\u3139\2\u318c\2\u31df\2\u3232\2\u3285\2\u32d8"+ - "\2\u332b\2\u337e\2\u33d1\2\u3424\2\u3477\2\u34ca\2\u351d\2\u3570"+ - "\2\u35c3\2\u3616\2\u3669\2\u36bc\2\u370f\2\u3762\2\u37b5\2\u3808"+ - "\2\u385b\2\u38ae\2\u3901\2\u3954\2\u39a7\2\u39fa\2\u3a4d\2\u3aa0"+ - "\2\u3af3\2\u3b46\2\u3b99\2\u3bec\2\u3c3f\2\u3c92\2\u3ce5\2\u3d38"+ - "\2\u3d8b\2\u3dde\2\u3e31\2\u3e84\2\u3ed7\2\u3f2a\2\u3f7d\2\u3fd0"+ - "\2\u4023\2\u4076\2\u40c9\2\u411c\2\u416f\2\u41c2\2\u4215\2\u4268"+ - "\2\u42bb\2\u430e\2\u4361\2\u43b4\2\u4407\2\u445a\2\u44ad\2\u4500"+ - "\2\u4553\2\u45a6\2\u45f9\2\u464c\2\u469f\2\u46f2\2\u4745\2\u4798"+ - "\2\u47eb\2\u483e\2\u4891\2\u48e4\2\u4937\2\u498a\2\u49dd\2\u4a30"+ - "\2\u4a83\2\u4ad6\2\u4b29\2\u4b7c\2\u4bcf\2\u4c22\2\u4c75\2\u4cc8"+ - "\2\u4d1b\2\u4d6e\2\u4dc1\2\u4e14\2\u4e67\2\u4eba\2\u4f0d\2\u4f60"+ - "\2\u4fb3\2\u5006\2\u5059\2\u50ac"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[1876]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\7\2\10\1\11\1\12\1\11\1\13\1\11\1\14"+ - "\1\15\1\7\1\16\1\17\1\20\1\21\1\7\1\10"+ - "\1\22\1\23\1\24\1\25\1\26\1\27\1\30\1\10"+ - "\1\31\1\32\1\33\1\34\1\35\1\36\1\37\1\40"+ - "\1\41\1\42\1\43\1\44\1\45\1\46\1\47\1\50"+ - "\1\25\1\51\1\25\1\52\1\53\1\52\1\54\1\10"+ - "\1\55\1\56\1\57\1\10\1\60\1\61\1\62\1\63"+ - "\1\64\1\65\1\10\1\66\1\10\2\44\1\67\1\10"+ - "\1\70\1\71\1\10\1\72\1\73\1\74\1\75\1\76"+ - "\1\77\1\100\1\10\1\101\1\102\1\103\1\104\1\105"+ - "\1\10\15\106\1\107\3\106\1\110\2\106\1\111\32\106"+ - "\1\112\10\106\1\113\32\106\15\114\1\115\3\114\1\116"+ - "\2\114\1\117\22\114\1\120\7\114\1\121\10\114\1\122"+ - "\5\114\1\123\1\114\1\124\22\114\12\125\1\126\1\127"+ - "\4\125\1\130\1\131\101\125\10\132\1\133\1\132\1\134"+ - "\6\132\1\135\101\132\12\125\1\136\1\137\4\125\1\130"+ - "\1\140\101\125\10\7\1\0\2\7\1\0\2\7\1\0"+ - "\2\7\4\0\6\7\2\0\6\7\14\0\17\7\2\0"+ - "\24\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\2\142\1\143\3\11\1\142\1\11"+ - "\1\0\2\142\1\0\1\142\1\144\1\0\2\142\4\0"+ - "\1\145\3\142\1\144\1\146\1\0\1\147\2\142\1\146"+ - "\1\142\1\145\1\142\14\0\2\142\1\144\5\142\1\144"+ - "\6\142\2\0\25\142\1\150\1\151\2\152\1\142\1\152"+ - "\1\0\2\142\1\0\1\142\1\144\1\0\2\142\4\0"+ - "\1\145\2\153\1\154\1\144\1\146\1\0\1\147\2\142"+ - "\1\146\1\142\1\145\1\142\14\0\2\142\1\144\2\142"+ - "\1\154\2\142\1\144\6\142\2\0\23\142\1\7\7\10"+ - "\1\0\1\155\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\3\10\1\156\1\157\1\10\14\0"+ - "\1\160\1\161\15\10\2\0\1\7\22\10\10\162\1\163"+ - "\1\162\1\164\6\162\1\165\101\162\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\5\10\1\166\14\0\17\10\2\0\1\7"+ - "\22\10\13\0\1\167\107\0\1\7\7\10\1\0\1\170"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\171\1\172\2\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\3\10"+ - "\1\173\1\174\1\10\14\0\1\10\1\175\4\10\1\176"+ - "\10\10\2\0\1\7\22\10\145\0\1\23\100\0\12\177"+ - "\1\200\10\177\1\201\1\202\23\177\1\203\52\177\50\0"+ - "\1\52\52\0\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\1\10\1\204\4\10\1\205\10\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\206\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\1\10\1\207\4\10\1\210\5\10\1\211\2\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\10"+ - "\1\212\4\10\14\0\1\10\1\213\12\10\1\214\2\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\4\10\1\215\1\10\14\0\1\10\1\216\4\10\1\217"+ - "\10\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\1\220\1\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\10\1\221\4\10\14\0\5\10\1\222"+ - "\1\10\1\223\2\10\1\224\4\10\2\0\1\7\12\10"+ - "\1\225\7\10\33\0\1\52\14\0\1\52\55\0\3\147"+ - "\1\0\1\147\113\0\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\10\1\226\1\227\3\10\14\0\1\230\1\231\15\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\2\10\1\232\3\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\1\233\1\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\3\10\1\234"+ - "\1\235\1\10\14\0\5\10\1\236\4\10\1\237\4\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\1\240\1\10\1\0\1\7\1\10\4\0\2\10"+ - "\1\241\3\10\2\0\5\10\1\242\14\0\2\10\1\243"+ - "\14\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\1\10\1\244\15\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\245\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\246\1\10"+ - "\1\247\1\10\1\250\1\10\14\0\1\251\2\10\1\252"+ - "\5\10\1\253\2\10\1\254\2\10\2\0\1\7\22\10"+ - "\23\0\1\255\145\0\1\52\1\0\1\52\121\0\1\256"+ - "\1\52\115\0\1\52\4\0\1\52\122\0\1\52\1\0"+ - "\1\257\120\0\1\52\4\0\1\52\45\0\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\3\10\1\260\2\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\261\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\2\10\1\262\3\10\14\0\1\10\1\263\15\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\264\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\10"+ - "\1\265\1\10\1\266\2\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\3\10\1\267"+ - "\1\270\1\10\14\0\1\271\1\272\15\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\1\273"+ - "\1\274\1\0\1\7\1\10\4\0\6\10\2\0\1\275"+ - "\4\10\1\276\14\0\2\10\1\277\4\10\1\300\7\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\2\10\1\301\3\10\14\0\6\10\1\302\10\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\303\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\2\10"+ - "\1\304\1\305\2\10\14\0\1\10\1\306\4\10\1\307"+ - "\10\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\1\310\5\10\1\311\10\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\1\10\1\312\15\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\10\1\313\1\314\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\315\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\2\10\1\316\1\317\2\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\2\320\3\7\1\320\1\7"+ - "\1\0\1\320\1\7\1\0\2\320\1\0\1\7\1\320"+ - "\4\0\6\320\2\0\6\320\14\0\17\320\2\0\1\7"+ - "\22\320\1\7\7\10\1\0\1\321\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\2\10\1\322\3\10\2\0"+ - "\1\10\1\323\3\10\1\324\14\0\3\10\1\325\13\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\326\1\10\1\327\3\10\14\0\1\330\1\331\2\10"+ - "\1\332\1\10\1\333\5\10\1\334\2\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\1\335"+ - "\1\10\1\0\1\7\1\10\4\0\6\10\2\0\1\336"+ - "\3\10\1\337\1\10\14\0\2\10\1\340\14\10\2\0"+ - "\1\7\12\10\1\341\7\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\10\1\342\4\10\14\0\1\343\1\344\4\10"+ - "\1\345\5\10\1\346\2\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\1\347\1\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\5\10\1\350\1\351\13\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\3\10\1\352\2\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\353\2\10\14\0\6\10\1\354\10\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\355\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\2\10"+ - "\1\356\1\357\2\10\14\0\1\10\1\360\15\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\361\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\2\10\1\362\3\10"+ - "\2\0\6\10\14\0\3\10\1\363\13\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\364\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\10\1\365"+ - "\1\10\1\366\2\10\14\0\6\10\1\367\10\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\10"+ - "\1\370\4\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\2\10\1\371\3\10\14\0"+ - "\1\10\1\372\4\10\1\373\10\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\10\1\374\1\375"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\376\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\15\106\1\0\3\106\1\0\2\106\1\0\32\106"+ - "\1\0\10\106\1\0\32\106\35\0\1\377\27\0\1\u0100"+ - "\60\0\1\u0101\134\0\1\u0102\155\0\1\u0103\32\0\15\114"+ - "\1\0\3\114\1\0\2\114\1\0\22\114\1\0\7\114"+ - "\1\0\10\114\1\0\5\114\1\0\1\114\1\0\22\114"+ - "\35\0\1\u0104\27\0\1\u0105\60\0\1\u0106\100\0\1\u0107"+ - "\4\0\1\u0107\2\0\1\u0107\2\0\2\u0107\5\0\1\u0108"+ - "\1\0\6\u0107\2\0\6\u0107\7\0\1\u0109\4\0\17\u0107"+ - "\3\0\22\u0107\35\0\1\u010a\155\0\1\u010b\132\0\1\u010c"+ - "\57\0\1\u010d\1\u010e\1\u010f\1\u0110\1\0\1\u0111\15\0"+ - "\1\u0112\1\u0113\1\u0114\1\u0115\1\0\1\u0116\3\0\1\u0117"+ - "\31\0\12\125\2\0\4\125\2\0\101\125\21\u0118\1\0"+ - "\101\u0118\13\0\1\u0119\110\0\2\u011a\3\0\1\u011a\2\0"+ - "\1\u011a\2\0\2\u011a\2\0\1\u011a\4\0\6\u011a\2\0"+ - "\6\u011a\14\0\17\u011a\1\u011b\2\0\22\u011a\10\132\1\0"+ - "\1\132\1\0\6\132\1\0\101\132\10\0\1\u011c\112\0"+ - "\21\u011d\1\0\101\u011d\21\u011e\1\0\101\u011e\10\7\1\0"+ - "\1\u011f\1\7\1\0\2\7\1\0\2\7\4\0\6\7"+ - "\2\0\6\7\14\0\17\7\2\0\23\7\10\142\1\0"+ - "\2\142\1\0\2\142\1\0\2\142\4\0\6\142\2\0"+ - "\6\142\14\0\17\142\2\0\25\142\1\143\3\u0120\1\142"+ - "\1\u0120\1\0\2\142\1\0\2\142\1\0\2\142\4\0"+ - "\6\142\2\0\6\142\14\0\17\142\2\0\26\142\3\u0121"+ - "\1\142\1\u0121\1\0\2\142\1\0\2\142\1\0\2\142"+ - "\4\0\6\142\1\u0122\1\0\6\142\3\0\1\u0122\10\0"+ - "\17\142\2\0\26\142\3\147\1\142\1\147\1\0\2\142"+ - "\1\0\1\142\1\144\1\0\2\142\4\0\4\142\1\144"+ - "\1\146\2\0\2\142\1\146\3\142\14\0\2\142\1\144"+ - "\5\142\1\144\6\142\2\0\25\142\1\150\1\142\2\u0123"+ - "\1\142\1\u0123\1\0\2\142\1\0\2\142\1\0\2\142"+ - "\4\0\6\142\2\0\6\142\14\0\17\142\2\0\26\142"+ - "\3\151\1\142\1\151\1\0\2\142\1\0\1\142\1\144"+ - "\1\0\2\142\4\0\4\142\1\144\1\146\1\0\1\147"+ - "\2\142\1\146\3\142\14\0\2\142\1\144\5\142\1\144"+ - "\6\142\2\0\25\142\1\150\1\151\2\152\1\142\1\152"+ - "\1\0\2\142\1\0\1\142\1\144\1\0\2\142\4\0"+ - "\1\u0124\3\142\1\144\1\146\1\0\1\147\2\142\1\146"+ - "\1\142\1\u0124\1\142\14\0\2\142\1\144\5\142\1\144"+ - "\6\142\2\0\27\142\2\u0125\2\142\1\0\2\142\1\0"+ - "\2\142\1\0\2\142\4\0\6\142\2\0\6\142\14\0"+ - "\17\142\2\0\26\142\5\u0126\1\0\2\142\1\0\1\142"+ - "\1\u0126\1\0\2\142\4\0\1\142\2\u0126\1\142\2\u0126"+ - "\2\0\2\142\2\u0126\2\142\14\0\2\142\1\u0126\1\142"+ - "\1\u0126\3\142\1\u0126\6\142\2\0\2\142\1\u0126\20\142"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\10\1\u0127\4\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\4\10\1\u0128\1\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\3\10"+ - "\1\u0129\2\10\14\0\1\10\1\u012a\15\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\3\10\1\u012b"+ - "\2\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\1\u012c\1\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\4\10\1\u012d\1\10\14\0"+ - "\7\10\1\u012e\7\10\2\0\1\7\22\10\10\162\1\u012f"+ - "\1\162\1\164\6\162\1\165\101\162\10\0\1\u0130\112\0"+ - "\4\u0131\2\162\1\u0131\1\162\1\u0132\1\u0133\4\162\3\u0131"+ - "\1\0\5\u0131\1\162\5\u0131\2\162\64\u0131\10\165\1\u012f"+ - "\1\165\1\u0134\110\165\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\2\10\1\u0135\3\10\14\0\6\10\1\u0136\10\10\2\0"+ - "\1\7\22\10\13\0\1\u0137\107\0\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\4\10\1\u0138\1\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\11\10\1\274\5\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u0139\5\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\4\10\1\u013a\1\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\1\10"+ - "\1\u013b\15\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\10\1\274\4\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\1\u013c\1\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\12\177\1\200"+ - "\10\177\1\u013d\120\177\1\0\101\177\21\201\1\0\101\201"+ - "\24\0\1\u013e\76\0\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\1\u013f\1\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\4\10\1\u0140\12\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\1\u0141"+ - "\1\10\1\0\1\7\1\10\4\0\6\10\2\0\5\10"+ - "\1\u0142\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\1\10\1\u0143\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\1\10\1\u0144\15\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u0145\5\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\u0146\5\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\2\10\1\u0147\3\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\1\10\1\u0148\15\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u0149\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\u014a\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\1\10\1\u014b\15\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\10"+ - "\1\u014c\4\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\4\10\1\u014d\1\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\u014e"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\10\1\u014f\4\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\u0150\5\10\14\0\4\10\1\u0151\12\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\3\10\1\u0152\13\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\2\10\1\u0153\3\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\4\10"+ - "\1\u0154\1\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\u0155\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\3\10\1\u0156"+ - "\2\10\14\0\14\10\1\274\2\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\5\10\1\u0157\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\10\1\u0158\4\10\14\0\6\10\1\u0159\10\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\2\10\1\u015a\17\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\u015b\4\10\1\u015c"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\u015d\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\4\10"+ - "\1\u015e\12\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\5\10\1\u015f\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u0160\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\2\10\1\u0161\3\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\14\10\1\u0135\2\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\5\10\1\u0162\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\1\10\1\u0163"+ - "\4\10\2\0\5\10\1\u0164\14\0\17\10\2\0\1\7"+ - "\5\10\1\u0165\14\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\2\10\1\u0166\14\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\1\u0167\1\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\3\10\1\u0168\13\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\10\1\u0169"+ - "\1\10\1\u016a\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\u016b\5\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\313\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\1\10\1\u016c\15\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\10\1\u016d\2\10\1\u016e\1\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\6\10\1\u016f\10\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\1\u0170\1\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\12\177\1\200"+ - "\10\177\2\0\76\177\50\0\1\52\1\0\1\25\50\0"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\5\10\1\u0171\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\7\10\1\u0172\7\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\1\10"+ - "\1\u0173\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\u0174\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\2\10\1\u0175\3\10\2\0\1\u0176"+ - "\5\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\1\10\1\u0177\4\10"+ - "\1\u0178\10\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\4\10\1\u0179\12\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\u017a"+ - "\4\10\1\u015f\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\3\10\1\u017b\2\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\3\10\1\u017c\2\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\1\u017d"+ - "\1\10\1\0\1\7\1\10\4\0\6\10\2\0\4\10"+ - "\1\u017e\1\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u017f\4\10\1\u0180\14\0"+ - "\12\10\1\u0181\4\10\2\0\1\7\13\10\1\u0182\6\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u0183\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\5\10\1\u0184"+ - "\1\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\2\10"+ - "\1\u0185\3\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\3\10\1\u0186"+ - "\13\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\u0187\5\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\5\10"+ - "\1\u0188\11\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\3\10\1\u0189\13\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\3\10\1\u018a\16\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u018b\5\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\u018c\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\4\10\1\u018d\12\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\6\10\1\u018e\10\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\u018f\5\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\4\10\1\u0190\1\10\14\0\6\10\1\u0191\10\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\2\10\1\u0172\3\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\u0192\5\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\1\u0193\1\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\3\10\1\u0194\1\10"+ - "\1\u0195\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\1\u0196\1\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\320\1\0\1\320\1\u0197\1\0"+ - "\2\320\1\0\1\7\1\320\4\0\6\320\2\0\6\320"+ - "\14\0\17\320\2\0\1\7\22\320\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\u0198\5\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\5\10\1\u0199"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\10\1\u019a\4\10\14\0\6\10\1\u019b"+ - "\10\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\5\10\1\u019c\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\3\10"+ - "\1\u019d\13\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\10\1\u019e\1\10\1\u019f\2\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\u0135\1\u01a0\4\10\14\0\4\10\1\u01a1\12\10"+ - "\2\0\1\7\3\10\1\u01a2\16\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\1\10\1\u01a3\15\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\10"+ - "\1\u01a4\4\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\3\10\1\u01a5\2\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\7\10\1\u01a6\7\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\1\u01a7"+ - "\1\10\1\0\1\7\1\10\4\0\6\10\2\0\5\10"+ - "\1\u01a8\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\u01a9\4\10\1\u01aa\14\0\1\u01ab"+ - "\1\10\1\u01ac\1\u01ad\1\u01ae\5\10\1\u01af\4\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\2\10"+ - "\1\u01b0\3\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\4\10\1\u01b1\1\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u01b2\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\5\10\1\u01b3\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\2\10\1\u01b4\3\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\10"+ - "\1\u01b5\4\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\1\10\1\u01b6"+ - "\15\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\7\10\1\u01b7\7\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\3\10\1\u01b8\13\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\5\10\1\u01b9\14\0\16\10\1\u01ba"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\4\10\1\u01bb"+ - "\1\10\2\0\6\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\4\10\1\u01bc\15\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\5\10\1\u01bd\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u018f\5\10"+ - "\14\0\3\10\1\u01be\13\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\5\10\1\u01bf\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\4\10\1\u01c0\1\10\14\0\7\10\1\u01c1\7\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\13\10\1\u01c2\3\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\12\10\1\u01c3"+ - "\4\10\2\0\1\7\22\10\1\7\5\10\1\u01c4\1\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\u01c5\5\10\14\0\17\10\2\0"+ - "\1\7\2\10\1\u01c6\17\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\u01c7\5\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\5\10\1\u01c8\14\0"+ - "\17\10\2\0\1\7\13\10\1\u01c9\6\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\u01ca\5\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\5\10"+ - "\1\u01cb\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\1\10\1\u01cc\4\10"+ - "\1\u01cd\10\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\4\10\1\u01ce\12\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\3\10\1\u01cf\13\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\2\10\1\u01d0\3\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\10\1\u01d1\4\10\14\0\4\10\1\u01d2\12\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\6\10\1\u01d3\10\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\10\1\u01d4\4\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\6\10\1\u01d5\10\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\3\10"+ - "\1\u01d6\2\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\2\10\1\u018a\3\10\14\0"+ - "\17\10\2\0\1\7\22\10\62\0\1\u01d7\101\0\1\u01d8"+ - "\116\0\1\u01d9\155\0\1\u01da\114\0\1\u01db\101\0\1\u01dc"+ - "\61\0\52\u0107\1\u0109\50\u0107\1\0\1\u0107\4\0\1\u0107"+ - "\2\0\1\u0107\2\0\2\u0107\7\0\6\u0107\2\0\6\u0107"+ - "\7\0\1\u0109\4\0\17\u0107\3\0\22\u0107\35\0\1\u01dd"+ - "\155\0\1\u01de\73\0\1\u01df\17\0\1\u01e0\1\0\1\u01e1"+ - "\1\0\1\u01e2\3\0\1\u01e3\42\0\1\u01e4\45\0\1\u01e5"+ - "\1\u01e6\101\0\1\u01e7\147\0\1\u01e8\47\0\1\u01e9\150\0"+ - "\1\u01ea\25\0\1\u01eb\64\0\1\u01ec\132\0\1\u01ed\123\0"+ - "\1\u01ee\122\0\1\u01ef\76\0\1\u01f0\145\0\1\u01f1\76\0"+ - "\1\u01f2\110\0\7\u011a\1\0\1\u011a\1\u01f3\1\0\2\u011a"+ - "\2\0\1\u011a\4\0\6\u011a\2\0\6\u011a\14\0\17\u011a"+ - "\3\0\22\u011a\77\u01f4\1\0\23\u01f4\10\0\1\u01f5\112\0"+ - "\3\7\5\u01f6\1\0\2\7\1\0\1\7\1\u01f6\1\0"+ - "\2\7\4\0\1\7\2\u01f6\1\7\2\u01f6\2\0\2\7"+ - "\2\u01f6\2\7\14\0\2\7\1\u01f6\1\7\1\u01f6\3\7"+ - "\1\u01f6\6\7\2\0\2\7\1\u01f6\20\7\2\142\1\143"+ - "\3\u0120\1\142\1\u0120\1\0\2\142\1\0\2\142\1\0"+ - "\2\142\4\0\1\145\5\142\2\0\4\142\1\145\1\142"+ - "\14\0\17\142\2\0\26\142\3\u0121\1\142\1\u0121\1\0"+ - "\2\142\1\0\1\142\1\144\1\0\2\142\4\0\4\142"+ - "\1\144\1\142\2\0\6\142\14\0\2\142\1\144\5\142"+ - "\1\144\6\142\2\0\23\142\3\0\3\u0121\1\0\1\u0121"+ - "\113\0\2\142\1\150\1\142\2\u0123\1\142\1\u0123\1\0"+ - "\2\142\1\0\2\142\1\0\2\142\4\0\1\u0124\5\142"+ - "\2\0\4\142\1\u0124\1\142\14\0\17\142\2\0\25\142"+ - "\1\u01f7\1\142\2\u0125\2\142\1\0\2\142\1\0\2\142"+ - "\1\0\2\142\4\0\6\142\2\0\6\142\14\0\17\142"+ - "\2\0\25\142\1\u01f8\5\u0126\1\0\2\142\1\0\1\142"+ - "\1\u0126\1\0\2\142\4\0\1\u0124\2\u0126\1\142\2\u0126"+ - "\2\0\2\142\2\u0126\1\u0124\1\142\14\0\2\142\1\u0126"+ - "\1\142\1\u0126\3\142\1\u0126\6\142\2\0\2\142\1\u0126"+ - "\20\142\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\10\1\u01f9"+ - "\4\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u01fa\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\5\10\1\u01fb\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\1\u01fc\1\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\5\10\1\u01fd\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\10\1\u01fe\4\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\5\10\1\u01ff"+ - "\14\0\4\10\1\u0200\12\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\4\10\1\u0201\1\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\3\10\1\u0202\13\10\2\0\1\7"+ - "\22\10\10\u0131\1\u0203\10\u0131\1\0\104\u0131\5\u0204\1\u0203"+ - "\4\u0131\1\u0204\3\u0131\1\0\4\u0131\2\u0204\1\u0131\2\u0204"+ - "\4\u0131\2\u0204\20\u0131\1\u0204\1\u0131\1\u0204\3\u0131\1\u0204"+ - "\12\u0131\1\u0204\20\u0131\4\0\2\165\1\0\2\165\1\u0205"+ - "\4\165\11\0\1\165\5\0\2\165\64\0\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\1\u0206\1\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\4\10"+ - "\1\274\1\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\6\10\1\u0207"+ - "\10\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\5\10\1\u0155\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\3\10\1\u0208\2\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\3\10\1\u0209\2\10\14\0\2\10\1\u020a"+ - "\14\10\2\0\1\7\22\10\23\0\1\u020b\77\0\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\13\10\1\u0135"+ - "\3\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\3\10\1\u020c\2\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u020d"+ - "\3\10\14\0\16\10\1\u020e\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u020f\5\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\1\10\1\u0210\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\4\10\1\u0211\1\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\2\10\1\u0212"+ - "\17\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u0213"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\3\10\1\u0214\2\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\4\10\1\u0215\1\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u0216\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\5\10\1\u0217\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\3\10\1\u0218"+ - "\2\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\7\10\1\u0219\7\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\u021a\1\10\1\u021b\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\7\10\1\u021c\7\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\1\10\1\u021d\15\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\2\10\1\u021e\3\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u021f\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\u0220\5\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\1\u0221"+ - "\1\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\5\10\1\u0222\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u0223"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\1\u0224\1\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\274"+ - "\5\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\1\10\1\u0225\15\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\5\10\1\274\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u0226\5\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\u0227\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\3\10\1\u0228\13\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\7\10\1\274\7\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\1\u0229"+ - "\16\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\274\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u022a"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\10\1\240\4\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\u022b\5\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\1\10\1\207"+ - "\15\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u022c\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\14\10\1\u022d\2\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\2\10\1\u022e\17\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\13\10\1\u0216\3\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\175\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\6\10\1\u022f\10\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\u0230"+ - "\5\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\10\10\1\u0231\11\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\10\1\u0208\4\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\6\10"+ - "\1\u0232\10\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\6\10\1\u0218\10\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\u017a"+ - "\5\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\4\10\1\u0233\12\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\14\10\1\u0234\5\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\3\10"+ - "\1\u0135\13\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\3\10\1\u0235\2\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\2\10\1\u0236\3\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\4\10\1\u0230\1\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\1\10\1\u0218"+ - "\20\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u0237\5\10"+ - "\14\0\3\10\1\u0238\13\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\1\u0239\1\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\12\10"+ - "\1\u023a\4\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\16\10\1\u023b\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\4\10\1\u023c\12\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\5\10\1\u0159\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\10"+ - "\1\u0216\4\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u023d\5\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\4\10\1\u0182\1\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u023e\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\u023f\5\10\14\0\3\10\1\u0182\13\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\1\10\1\u0240\15\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u0241\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\10\1\u0242\4\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\3\10"+ - "\1\u0243\2\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\1\u0244\1\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\4\10\1\u0245\1\10\14\0\1\10\1\u022c\15\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\3\10"+ - "\1\u0246\2\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\6\10\1\u0247"+ - "\10\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\4\10\1\u0248\1\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\u0249\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u0135\1\u024a\2\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\2\10\1\u024b\3\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u024c\5\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\4\10\1\u015f\1\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\1\u0135"+ - "\16\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\3\10\1\u024d\2\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\2\10\1\274\14\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\1\10\1\u0218\6\10\1\u024e\3\10\1\u024f\5\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\1\u0250\1\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\u0251\5\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\2\10\1\u0252\14\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\1\10\1\u0253\15\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\2\10\1\u0254\14\10"+ - "\2\0\1\7\22\10\10\7\1\0\1\u0255\1\7\1\0"+ - "\2\7\1\0\2\7\4\0\6\7\2\0\6\7\14\0"+ - "\17\7\2\0\24\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\1\10\1\u0256\15\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u0257\5\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\u0258\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\u0259\5\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u025a\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u025b"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u025c\3\10\14\0\6\10"+ - "\1\u025d\10\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\4\10\1\u025e\12\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\6\10\1\u025f\3\10\1\u0260\4\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\u0261\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\u0262"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\10\1\u0218\4\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\u0263\5\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\1\u0264\1\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\3\10\1\u0265\13\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\4\10\1\u0266\12\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\u0267\5\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\2\10"+ - "\1\u0268\3\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u0269\5\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\2\10\1\u026a\3\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u026b\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\u026c\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\1\10"+ - "\1\u026d\15\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\3\10\1\u026e\2\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\10"+ - "\1\u026f\4\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\1\10\1\u0270\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u0271\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\1\u0272\1\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\10\1\221"+ - "\4\10\14\0\5\10\1\u0273\11\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u0274\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\2\10\1\u0275\3\10\14\0\1\10\1\u0276"+ - "\15\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\10\10\1\u0277"+ - "\11\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u0278"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u0279\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\u027a\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\u027b\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\1\u027c\1\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\10\10\1\u027d\6\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\10\10\1\u0135\6\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\1\u027e\16\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\1\0\1\u027f"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\5\10\1\u0280\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\4\10"+ - "\1\u0281\1\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\2\10\1\u0282\3\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\3\10\1\u0283\2\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\6\10\1\u0284\10\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\4\10\1\u0285\1\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\1\10\1\u0286\1\u0287"+ - "\17\10\1\7\7\10\1\0\1\u0288\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\3\10\1\u0289\13\10\2\0\1\7"+ - "\12\10\1\u028a\7\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\2\10\1\u028b\3\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u028c\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\6\10\1\u028d\10\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\1\u028e\16\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\3\10\1\u028f\1\u0290"+ - "\12\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\1\u0291\1\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\1\10\1\u0292\15\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\16\10\1\u0293\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u0294\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\13\10\1\u0295\3\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\6\10"+ - "\1\u0296\10\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\u014f\5\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\2\10\1\u0135\14\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\u0297\5\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\u0298"+ - "\5\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\16\10\1\u0299\2\0"+ - "\1\7\22\10\56\0\1\u029a\103\0\1\u01d7\145\0\1\u029b"+ - "\74\0\1\u029c\144\0\1\u029d\103\0\1\u01db\145\0\1\u029e"+ - "\74\0\1\u029f\153\0\1\u02a0\115\0\1\u02a1\122\0\1\u02a2"+ - "\56\0\1\u02a3\146\0\1\u02a4\117\0\1\u02a5\123\0\1\u02a6"+ - "\145\0\1\u02a7\76\0\1\u02a8\125\0\1\u02a9\22\0\1\u02aa"+ - "\74\0\1\u02ab\123\0\1\u02ac\1\u02ad\77\0\1\u02ae\150\0"+ - "\1\u02af\142\0\1\u02b0\76\0\1\u02b1\121\0\1\u02b2\122\0"+ - "\1\u02b3\23\0\1\u02b4\77\0\1\u02b5\75\0\1\u02b6\111\0"+ - "\77\u01f4\1\u02b7\23\u01f4\3\7\5\u02b8\1\0\2\7\1\0"+ - "\1\7\1\u02b8\1\0\2\7\4\0\1\7\2\u02b8\1\7"+ - "\2\u02b8\2\0\2\7\2\u02b8\2\7\14\0\2\7\1\u02b8"+ - "\1\7\1\u02b8\3\7\1\u02b8\6\7\2\0\2\7\1\u02b8"+ - "\20\7\2\142\1\u01f8\5\u0126\1\0\2\142\1\0\1\142"+ - "\1\u0126\1\0\2\142\4\0\1\142\2\u0126\1\142\2\u0126"+ - "\2\0\2\142\2\u0126\2\142\14\0\2\142\1\u0126\1\142"+ - "\1\u0126\3\142\1\u0126\6\142\2\0\2\142\1\u0126\20\142"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u02b9\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\1\u02ba\1\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\5\10\1\u02bb"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\2\10\1\u02bc\3\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\2\10"+ - "\1\u0250\3\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\5\10\1\u02bd\1\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\3\10\1\u02be"+ - "\2\10\14\0\17\10\2\0\1\7\1\10\1\u02bf\1\u02c0"+ - "\17\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\1\10\1\u024b\15\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\u02c1\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u02c2"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\3\10\1\u01b0\2\10\14\0\6\10"+ - "\1\u02c3\10\10\2\0\1\7\22\10\3\u0131\5\u02c4\1\u0203"+ - "\4\u0131\1\u02c4\3\u0131\1\0\4\u0131\2\u02c4\1\u0131\2\u02c4"+ - "\4\u0131\2\u02c4\20\u0131\1\u02c4\1\u0131\1\u02c4\3\u0131\1\u02c4"+ - "\12\u0131\1\u02c4\20\u0131\3\0\5\u02c5\5\0\1\u02c5\10\0"+ - "\2\u02c5\1\0\2\u02c5\4\0\2\u02c5\20\0\1\u02c5\1\0"+ - "\1\u02c5\3\0\1\u02c5\12\0\1\u02c5\20\0\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\13\10\1\274\3\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\12\10\1\u015f\4\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\u0216\5\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\4\10\1\u02c6\1\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\1\u02c7\5\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\1\10\1\u02c8\2\10\1\u02c9"+ - "\15\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\4\10\1\u02ca"+ - "\1\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\11\10\1\u02cb\10\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\2\10\1\u02cc\1\u02cd\2\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\15\10\1\u02ce\1\10\2\0\1\7\4\10\1\u02cf\15\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u02d0\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\2\10\1\u02d1\3\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\2\10"+ - "\1\u0218\3\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\1\10\1\u02d2\20\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\16\10\1\274\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u02d3\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\1\u0250\16\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u0135\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\3\10\1\u02d4\2\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\2\10"+ - "\1\u02d5\3\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\1\u02d6\1\10\1\0"+ - "\1\7\1\10\4\0\4\10\1\u02d7\1\10\2\0\6\10"+ - "\14\0\10\10\1\u02d8\4\10\1\u02d9\1\10\2\0\1\7"+ - "\4\10\1\u02da\4\10\1\u02db\1\u02dc\1\10\1\u02dd\2\10"+ - "\1\u02de\2\10\1\7\5\10\1\u02df\1\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u02e0\3\10\14\0\17\10\2\0\1\7"+ - "\2\10\1\u0212\5\10\1\u02e1\11\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\10\1\u0135\4\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\10"+ - "\1\u02e2\4\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\3\10\1\u02e3"+ - "\13\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\14\10\1\u02e4\2\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u02e5\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\5\10\1\u0273\11\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\5\10"+ - "\1\u02e6\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\11\10\1\u02e7\5\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\10\1\u02e8\4\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\10\1\u02e9\4\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\1\10\1\u02ea\15\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\17\10\1\u02eb\2\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\1\u02ec\1\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\10\1\u02ed\4\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\10\1\u0157\4\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\3\10\1\u0249\13\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\1\u02ee\16\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\4\10\1\u02ef\12\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\6\10\1\u02f0\10\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\301\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\1\u02f1\1\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\1\u02f2\16\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\10\1\u02f3\4\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\u02f4\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\4\10\1\u0149\1\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\2\10"+ - "\1\u02f5\3\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\2\10\1\u02f6\3\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\u02f7\5\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\3\10\1\u02f8\2\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\3\10\1\u02f9\2\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\1\274\16\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\6\10\1\u02fa\10\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\10\1\u02fb\4\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\3\10\1\u02fc\2\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\16\10\1\u02fd\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\4\10\1\u0218\12\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\3\10\1\u01d2\2\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\5\10\1\u0249\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u02fe\5\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\2\10\1\u02ff\3\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\5\10\1\u0300\1\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\1\274\1\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\6\10\1\u0301\10\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u0135\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\4\10\1\u0302\5\10"+ - "\1\u0303\7\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\4\10"+ - "\1\u0249\1\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\6\10\1\u0304"+ - "\10\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\310\5\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u0305\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\10\1\u0306\4\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\3\10"+ - "\1\u018c\2\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\6\10\1\u0307"+ - "\10\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u021d\1\u018c\2\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\u0308\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\1\10\1\u0309\15\10\2\0"+ - "\1\7\22\10\3\7\5\u030a\1\0\2\7\1\0\1\7"+ - "\1\u030a\1\0\2\7\4\0\1\7\2\u030a\1\7\2\u030a"+ - "\2\0\2\7\2\u030a\2\7\14\0\2\7\1\u030a\1\7"+ - "\1\u030a\3\7\1\u030a\6\7\2\0\2\7\1\u030a\21\7"+ - "\5\10\1\u030b\1\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\10\1\u030c\4\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\14\10\1\u030d\2\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\1\u030e\16\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\10"+ - "\1\u030f\4\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\1\u0310\1\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\u0311\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\1\u0312\1\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\4\10\1\u0313\12\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\16\10\1\u0314\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\3\10"+ - "\1\u0315\2\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\6\10\1\u0316"+ - "\10\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\10\1\u0317\4\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u0318"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u0319\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\1\u031a\1\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\4\10\1\u031b\1\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\4\10"+ - "\1\u031c\1\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u031d"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\10\1\u031e\4\10\14\0\13\10"+ - "\1\u031a\3\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\3\10\1\u031f\2\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\10"+ - "\1\u0320\4\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\5\10\1\u0321"+ - "\11\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\u0322\5\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\7\10"+ - "\1\u0323\7\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\4\10\1\u0324\1\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\3\10"+ - "\1\u0325\2\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\1\10\1\u0326"+ - "\15\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\13\10\1\u0327\3\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u0328\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\4\10\1\u0329\12\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\2\10\1\u0212\5\10\1\u02e1"+ - "\11\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\3\10\1\u032a"+ - "\2\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\11\10\1\u0250\5\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\u032b\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\10\1\u032c\4\10"+ - "\14\0\17\10\2\0\1\7\21\10\1\u032d\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\11\10\1\u032e\10\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\3\10\1\u032f\13\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\u0330\5\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\1\10\1\u0331\15\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\3\10\1\u0332"+ - "\2\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\u0250\5\10\14\0\17\10\2\0"+ - "\1\7\2\10\1\u0212\5\10\1\u02e1\11\10\32\0\1\u0333"+ - "\70\0\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\6\10\1\u0334\10\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\14\10\1\u0335\5\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\2\10\1\u0336\3\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\u0337\5\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\13\10\1\u0338\3\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\3\10\1\u0339"+ - "\2\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\4\10\1\u033a\12\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\2\10\1\u033b\3\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\4\10"+ - "\1\u033c\12\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\u033d\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\1\10\1\u033e"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\10\1\u033f\4\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\4\10\1\u0340\12\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\1\10\1\u0341\15\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\2\10\1\u0342"+ - "\3\10\2\0\6\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u0343\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\2\10\1\u0344\3\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\u0345"+ - "\5\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\10\1\u0346\4\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\u0347\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\2\10"+ - "\1\u0348\14\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\1\10\1\u0349\15\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\1\10\1\u034a\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\u034b\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u034c"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\7\10\1\u034d\12\10\23\0\1\u034e\141\0\1\u01d7\13\0"+ - "\1\u029a\45\0\1\u029c\1\u034f\5\u029c\1\u034f\1\u029c\2\0"+ - "\2\u029c\1\0\1\u034f\1\u029c\2\0\1\u029c\1\u034f\6\u029c"+ - "\2\u034f\6\u029c\4\u034f\1\0\1\u034f\2\0\4\u034f\17\u029c"+ - "\2\0\1\u034f\22\u029c\23\0\1\u0350\141\0\1\u01db\13\0"+ - "\1\u029d\45\0\1\u029f\1\u0351\5\u029f\1\u0351\1\u029f\2\0"+ - "\2\u029f\1\0\1\u0351\1\u029f\2\0\1\u029f\1\u0351\6\u029f"+ - "\2\u0351\6\u029f\4\u0351\1\0\1\u0351\2\0\4\u0351\17\u029f"+ - "\2\0\1\u0351\22\u029f\14\0\1\u0352\20\0\1\u0353\150\0"+ - "\1\u0354\120\0\1\u0355\120\0\1\u0356\104\0\1\u0357\141\0"+ - "\1\u0358\101\0\1\u0359\20\0\1\u035a\122\0\1\u02ad\53\0"+ - "\1\u035b\177\0\1\u035c\73\0\1\u035d\1\0\1\u035e\140\0"+ - "\1\u035f\130\0\1\u0360\120\0\1\u0361\117\0\1\u0362\100\0"+ - "\1\u0363\124\0\1\u0364\121\0\1\u0365\122\0\1\u0366\122\0"+ - "\1\u0367\125\0\1\u0368\63\0\5\u0369\5\0\1\u0369\10\0"+ - "\2\u0369\1\0\2\u0369\4\0\2\u0369\20\0\1\u0369\1\0"+ - "\1\u0369\3\0\1\u0369\12\0\1\u0369\20\0\3\7\5\u036a"+ - "\1\0\2\7\1\0\1\7\1\u036a\1\0\2\7\4\0"+ - "\1\7\2\u036a\1\7\2\u036a\2\0\2\7\2\u036a\2\7"+ - "\14\0\2\7\1\u036a\1\7\1\u036a\3\7\1\u036a\6\7"+ - "\2\0\2\7\1\u036a\21\7\7\10\1\0\1\10\1\141"+ - "\1\0\1\u036b\1\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\2\10\1\u036c"+ - "\14\10\2\0\1\7\22\10\1\7\5\10\1\u036d\1\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\1\u036e\3\10\1\u036f\1\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\11\10\1\u02db\10\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\3\10\1\u018c\2\10\14\0\17\10"+ - "\2\0\1\7\11\10\1\u0370\10\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\1\10\1\u0371\15\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\4\10\1\u0372\12\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\10\1\u0373\4\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u0374\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\10\1\u0375"+ - "\4\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\4\10\1\u0376\12\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\4\10\1\u031a\1\10\14\0\17\10\2\0\1\7\22\10"+ - "\3\u0131\5\u0377\1\u0203\4\u0131\1\u0377\3\u0131\1\0\4\u0131"+ - "\2\u0377\1\u0131\2\u0377\4\u0131\2\u0377\20\u0131\1\u0377\1\u0131"+ - "\1\u0377\3\u0131\1\u0377\12\u0131\1\u0377\20\u0131\3\0\5\u0378"+ - "\5\0\1\u0378\10\0\2\u0378\1\0\2\u0378\4\0\2\u0378"+ - "\20\0\1\u0378\1\0\1\u0378\3\0\1\u0378\12\0\1\u0378"+ - "\20\0\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\4\10\1\u0379"+ - "\1\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\3\10\1\u037a\2\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\4\10\1\u037b\1\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\1\u037c\1\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u037d\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\u037e\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\2\10\1\u037f\14\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\13\10\1\u0380\3\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u0381\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\u0382\5\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\10\1\u01cf\4\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\3\10\1\u0383\2\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\10\1\u0384"+ - "\4\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\3\10\1\u0385\2\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\u0386\5\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\10\1\u0348\4\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\3\10\1\u0387\2\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\6\10\1\u0388\10\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u0389\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\2\10\1\u038a\3\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\1\u038b\1\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\1\10\1\u038c\15\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\u038d\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u038e\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\10\1\u038f"+ - "\4\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\1\10\1\u0390\15\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\10\1\u0391\4\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\3\10\1\u0172\2\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\1\u0392\1\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u0393\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\2\10"+ - "\1\u0394\17\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\1\u0395\5\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\12\10\1\u0396\7\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\6\10"+ - "\1\u0397\10\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\6\10\1\u0398\10\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\1\u0399\1\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\1\u039a\1\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\6\10\1\u039b\10\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\2\10\1\u0159"+ - "\14\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\3\10\1\u039c\2\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\u039d\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\u039e\5\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\4\10"+ - "\1\274\12\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\u039f\5\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\10\1\u03a0"+ - "\4\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\1\10\1\u03a1\15\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\4\10\1\u0157\1\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\4\10"+ - "\1\u03a2\12\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\10\1\u03a3\4\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\1\10\1\u0135\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\4\10\1\u0383\1\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\u015f\5\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\13\10\1\u015f\3\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\1\u03a4"+ - "\1\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\1\10\1\u03a5\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\1\u03a6"+ - "\1\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\2\10\1\u03a7\3\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\6\10\1\u03a8\10\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\7\10\1\u03a9"+ - "\7\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\4\10\1\u03aa\1\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\4\10\1\u03ab\12\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\1\u03ac\1\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\u03ad\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\1\10\1\u03ae\15\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\u03af"+ - "\5\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\1\10\1\u03b0\15\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\7\10\1\u03b1\7\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\10\1\u03b2\4\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\7\10\1\u03b3\7\10\2\0"+ - "\1\7\22\10\3\7\5\u03b4\1\0\2\7\1\0\1\7"+ - "\1\u03b4\1\0\2\7\4\0\1\7\2\u03b4\1\7\2\u03b4"+ - "\2\0\2\7\2\u03b4\2\7\14\0\2\7\1\u03b4\1\7"+ - "\1\u03b4\3\7\1\u03b4\6\7\2\0\2\7\1\u03b4\21\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\4\10\1\u03b5\1\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\3\10\1\u03b6\2\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\1\u03b7\5\10\2\0\5\10"+ - "\1\u0135\14\0\10\10\1\u03b8\6\10\2\0\1\7\2\10"+ - "\1\u03b9\1\10\1\u03ba\15\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\7\10\1\u03bb\7\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u03bc\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\2\10\1\u0250\14\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\7\10\1\u03bd\7\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\13\10\1\u03be"+ - "\3\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\u03bf\5\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\5\10\1\u03c0\4\10\1\u03c1\7\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\4\10\1\u03c2\1\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\4\10\1\u03c3\12\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\6\10\1\u03c4\10\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\1\u03c5\1\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\2\10\1\u0274\14\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\2\10\1\u021d\3\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u03c6\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\3\10\1\u03c7"+ - "\2\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\7\10\1\u0135\7\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\1\u03c8\1\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\10\1\u03c9\4\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\1\u03ca"+ - "\1\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\6\10\1\u03cb\10\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\12\10\1\u03cc\7\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\2\10\1\u03cd\5\10\1\u03ce\11\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\3\10\1\u03cf\13\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\6\10\1\u03d0\10\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\2\10\1\u024b\3\10\2\0\1\u014f"+ - "\5\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\10\1\u03d1\4\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\u03d2\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\6\10"+ - "\1\u03d3\10\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\2\10\1\u03d4\3\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\2\10\1\u03d5\14\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\1\u03d6\1\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\5\10\1\u03d7\14\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\1\10"+ - "\1\u03d8\15\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\1\10\1\u03d9\15\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\3\10\1\u03da\13\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\6\10\1\u03db"+ - "\10\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\11\10\1\u03dc\5\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u03dd\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\14\0\1\u03de\106\0"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\1\u03df\1\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\1\10\1\u03e0\15\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\10\1\u03e1"+ - "\4\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\6\10\1\u03e2\10\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\u03e3\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\5\10\1\u03e4\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\u03e5\5\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\10\1\u03e6\4\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\1\u03e7\16\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u03e8\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\10\10"+ - "\1\u03e9\11\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\12\10\1\u0252\4\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u03ea\5\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\1\u03eb\1\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\3\10\1\u03ec\2\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\10\1\u03ed\4\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\5\10\1\u03ee"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\2\10"+ - "\1\u03ef\14\10\1\u02de\2\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\6\10\1\u03f0\10\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\13\10\1\u0249\3\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\15\10\1\u02d9\1\10"+ - "\2\0\1\7\4\10\1\u02da\5\10\1\u02dc\4\10\1\u02de"+ - "\2\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\10\1\u03f1"+ - "\4\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\14\10\1\u03f2\2\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\u03f3\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\10\1\u0135\4\10"+ - "\14\0\17\10\2\0\1\7\1\10\1\u03f4\20\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\3\10\1\u03f5\2\10\14\0"+ - "\17\10\2\0\1\7\22\10\23\0\1\u029c\122\0\1\u029f"+ - "\174\0\1\u03f6\64\0\1\u03f7\157\0\1\u03f8\65\0\1\u03f6"+ - "\122\0\1\u03f9\74\0\1\u0355\147\0\1\u03fa\124\0\1\u03fb"+ - "\152\0\1\u03fc\70\0\1\u03fd\146\0\1\u03fe\122\0\1\u03ff"+ - "\51\0\1\u0400\171\0\1\u0401\102\0\1\u0402\121\0\1\u02ad"+ - "\124\0\1\u0403\120\0\1\u0404\151\0\1\u02ad\126\0\1\u0405"+ - "\66\0\1\u0406\150\0\1\u02ad\123\0\1\u0407\40\0\5\u0408"+ - "\5\0\1\u0408\10\0\2\u0408\1\0\2\u0408\4\0\2\u0408"+ - "\20\0\1\u0408\1\0\1\u0408\3\0\1\u0408\12\0\1\u0408"+ - "\20\0\3\7\5\10\1\0\2\7\1\0\1\7\1\10"+ - "\1\0\2\7\4\0\1\7\2\10\1\7\2\10\2\0"+ - "\2\7\2\10\2\7\14\0\2\7\1\10\1\7\1\10"+ - "\3\7\1\10\6\7\2\0\2\7\1\10\21\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\4\10\1\240\12\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\u021d\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\3\10\1\u0409\2\10"+ - "\14\0\6\10\1\u040a\10\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\1\10\1\u038a"+ - "\15\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\1\10\1\u040b\15\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\1\10\1\u040c\15\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\1\u040d\1\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\u040e"+ - "\5\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\10\1\u040f\4\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\3\10\1\u0410\16\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\10\1\u0411\4\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\u0412\5\10\14\0\17\10\2\0\1\7"+ - "\22\10\3\u0131\5\162\1\u0203\4\u0131\1\162\3\u0131\1\0"+ - "\4\u0131\2\162\1\u0131\2\162\4\u0131\2\162\20\u0131\1\162"+ - "\1\u0131\1\162\3\u0131\1\162\12\u0131\1\162\20\u0131\3\0"+ - "\5\u0413\5\0\1\u0413\10\0\2\u0413\1\0\2\u0413\4\0"+ - "\2\u0413\20\0\1\u0413\1\0\1\u0413\3\0\1\u0413\12\0"+ - "\1\u0413\20\0\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\14\10\1\274\2\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\5\10\1\u0414\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\4\10\1\u0135\1\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\2\10"+ - "\1\u0415\14\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\1\0\1\u0416\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\7\10\1\u0417\7\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\1\u03b7\5\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\7\10\1\u0418\12\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u03f2\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\5\10\1\u0419"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\1\u0135\1\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\10\1\u041a"+ - "\4\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\1\u0216\1\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\4\10\1\u041b\1\10"+ - "\2\0\1\u041c\5\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\7\10"+ - "\1\u041d\7\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\4\10\1\u041e\1\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\5\10"+ - "\1\u041f\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\3\10\1\u0420\2\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\3\10\1\u0421\13\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\u0422\5\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\u038b\5\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\10\1\u0423\4\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\6\10\1\u041e\10\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\1\u0424\1\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\3\10\1\u0425\2\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\u0426\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\6\10"+ - "\1\u0427\10\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\u0428\5\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\6\10\1\u0429\10\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\2\10\1\u042a\3\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\2\10\1\u042b\3\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\1\u013f\1\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\2\10\1\u042c\14\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u042d\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\4\10\1\u0157\12\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\u042e"+ - "\5\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\1\10\1\u042f\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\1\10\1\u0135\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\1\10\1\u0430\15\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\3\10\1\u0431\13\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\u0432\5\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\u0379\5\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\u015f\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\u0433\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\4\10"+ - "\1\u0434\12\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\10\10"+ - "\1\u0435\11\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\240"+ - "\5\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u0436\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\u0437\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\3\10\1\u0438\2\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\3\10\1\u0439\13\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\u03ac"+ - "\5\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\1\u043a\1\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\3\10"+ - "\1\u043b\2\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\3\10\1\u043c"+ - "\13\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u043d\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\4\10\1\u043e\12\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\1\10\1\u043f\20\10\3\7\5\u0440\1\0\2\7\1\0"+ - "\1\7\1\u0440\1\0\2\7\4\0\1\7\2\u0440\1\7"+ - "\2\u0440\2\0\2\7\2\u0440\2\7\14\0\2\7\1\u0440"+ - "\1\7\1\u0440\3\7\1\u0440\6\7\2\0\2\7\1\u0440"+ - "\21\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\1\10"+ - "\1\u0441\15\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\4\10\1\u0442\12\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\6\10\1\u0443\10\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\2\10\1\304\3\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\u0444\5\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\1\u0445\1\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u0446\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\6\10\1\u0447\10\10\2\0\1\7\22\10\1\7\5\10"+ - "\1\u0448\1\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\5\10\1\u0449\14\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\1\10\1\u044a\4\10\2\0\6\10\14\0\15\10\1\u02d9"+ - "\1\10\2\0\1\7\4\10\1\u03ba\1\u0449\11\10\1\u02de"+ - "\2\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\10\10\1\u044b\11\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\10\1\u044c\4\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\12\10\1\u044d\4\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\6\10"+ - "\1\u044e\10\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\2\10\1\u044f\3\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\u0450"+ - "\5\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\4\10\1\u0451\12\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\5\10\1\u0452\14\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\6\10"+ - "\1\u0453\10\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\3\10\1\u0454\2\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\u0455\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\u0456\5\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u0457\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\u0458\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\u0459\5\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\6\10\1\u045a\10\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\3\10\1\u045b"+ - "\2\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\2\10\1\u045c\14\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\7\10\1\u045d\7\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\4\10\1\u045e\1\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\u045f\5\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\3\10\1\u0425\13\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\1\u0460\5\10\1\0\1\u0461\6\10\14\0\10\10"+ - "\1\u0462\6\10\2\0\1\7\15\10\1\u0463\4\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\14\10\1\u0464"+ - "\2\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\3\10\1\u0465\2\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\1\u0249"+ - "\1\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\u0466\5\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\1\10\1\u0467\15\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\5\10\1\u0468\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\1\u0469\1\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\3\10\1\u046a\2\10\14\0\17\10"+ - "\2\0\1\7\22\10\35\0\1\u046b\65\0\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\13\10\1\u046c\3\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\6\10\1\u046d\10\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\4\10\1\u046e\1\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\12\10\1\u046f\4\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\2\10\1\u0470\3\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\5\10\1\u0471\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\6\10\1\u0472\10\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\6\10"+ - "\1\u0473\10\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\4\10\1\u0474\1\u0475\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\10\10\1\u0476\11\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\2\10\1\u0477"+ - "\17\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u0478"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\5\10\1\u0135\14\0\17\10\2\0"+ - "\1\7\2\10\1\u0479\1\10\1\u047a\5\10\1\u047b\7\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\3\10\1\u047c\2\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\4\10\1\u047d\12\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\u047e"+ - "\5\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\5\10\1\u047f\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\u0480"+ - "\5\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\u0481\5\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\6\10\1\u0482\10\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\5\10\1\u0483\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\4\10\1\u0484\1\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\2\10\1\u0485\3\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\5\10\1\u0486\14\0\17\10\2\0\1\7"+ - "\22\10\77\u03f6\1\u02ad\23\u03f6\36\0\1\u0487\144\0\1\u0488"+ - "\100\0\1\u0489\151\0\1\u048a\116\0\1\u048b\103\0\1\u02ad"+ - "\74\0\1\u02ad\147\0\1\u0361\116\0\1\u0368\146\0\1\u0361"+ - "\77\0\1\u02ad\125\0\1\u048c\120\0\1\u048d\146\0\1\u048e"+ - "\117\0\1\u048f\56\0\1\u048a\166\0\1\u03fd\45\0\5\u0490"+ - "\5\0\1\u0490\10\0\2\u0490\1\0\2\u0490\4\0\2\u0490"+ - "\20\0\1\u0490\1\0\1\u0490\3\0\1\u0490\12\0\1\u0490"+ - "\20\0\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\5\10\1\u0491"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\10\1\u0492\4\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\10"+ - "\1\u0493\4\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u0494\5\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\12\10\1\u0495\4\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u0496\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\3\10\1\u0497\2\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\u0498\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\2\10\1\u0499\3\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\6\10\1\u049a\10\10\2\0\1\7\22\10\3\0"+ - "\5\165\5\0\1\165\10\0\2\165\1\0\2\165\4\0"+ - "\2\165\20\0\1\165\1\0\1\165\3\0\1\165\12\0"+ - "\1\165\20\0\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\u049b"+ - "\5\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u049c\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\6\0\1\u049d\17\0\1\u049e\74\0"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\2\10\1\u049f\3\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\3\10\1\u04a0\2\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\1\10\1\u04a1\15\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\3\10\1\u04a2\2\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\4\10\1\u04a3\1\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u04a4"+ - "\1\u04a5\2\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\2\10\1\u04a6\3\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\u031a\5\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\4\10"+ - "\1\u04a7\12\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\2\10\1\u031a\14\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\u04a8\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\4\10\1\u04a9\1\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\7\10\1\u04aa\7\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\5\10\1\u04ab\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\u04ac\5\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\4\10\1\u04ad\1\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\1\10\1\u04ae\15\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\3\10\1\u04af"+ - "\2\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\5\10\1\u04b0\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\13\10\1\u0182\6\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\1\u0157\1\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\5\10\1\u04b1\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\1\u04b2\16\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\2\10\1\u04b3\14\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\3\10"+ - "\1\274\13\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\1\u04b4\1\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u04b5"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u0191\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\4\10\1\u015f\12\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u04b6\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\2\10\1\u04b7\3\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\1\u04b8\1\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\5\10\1\u04b9\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\u04ba"+ - "\5\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\u04bb\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\3\10\1\u0161"+ - "\2\10\14\0\17\10\2\0\1\7\22\10\1\7\5\10"+ - "\1\u0300\1\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\14\10\1\u04bc\5\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\2\10\1\u04bd\3\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\5\10\1\u0222\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\14\10\1\u02dd\5\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u04be\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\4\10\1\u04bf\12\10\2\0"+ - "\1\7\22\10\3\7\5\320\1\0\2\7\1\0\1\7"+ - "\1\320\1\0\2\7\4\0\1\7\2\320\1\7\2\320"+ - "\2\0\2\7\2\320\2\7\14\0\2\7\1\320\1\7"+ - "\1\320\3\7\1\320\6\7\2\0\2\7\1\320\21\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\5\10\1\u01fd\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\u04c0\5\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\5\10\1\u0218\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\1\10\1\u04c1\15\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\2\10"+ - "\1\u01ac\14\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\u04c2\5\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\1\10\1\u04c3\15\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\1\10\1\u04c4\15\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\1\10\1\u04c5\15\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\u04c6\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\311\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\3\10\1\u04c7\2\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\2\10\1\u04c8\3\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\1\u04c9\21\10\1\7\5\10"+ - "\1\u04ca\1\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\1\u036e\5\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\14\10\1\u04cb\2\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u04cc"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\6\10\1\u04cd\10\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\4\10\1\u04ce\1\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\4\10\1\u03f2\1\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\3\10\1\u04cf\13\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\6\10\1\u04d0\10\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\3\10\1\u04d1\2\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\u04d2\5\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\10\1\u04d3\4\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\5\10\1\u04d4\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u04d5\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\5\10\1\u04d6"+ - "\1\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\12\10\1\u04d7\1\10\1\u04d8\5\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u04d9\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\4\10\1\u04da"+ - "\1\10\2\0\6\10\14\0\17\10\2\0\1\7\1\10"+ - "\1\u04db\1\u04dc\2\10\1\u04dd\2\10\1\u04de\11\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\14\10\1\u0299"+ - "\2\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\1\10\1\u04df\15\10\2\0\1\7"+ - "\22\10\103\0\1\u04e0\3\0\1\u04e1\13\0\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u044b\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\10\1\u04e2\4\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\1\u04e3\5\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\5\10\1\u04e4\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\14\10\1\u04e5\5\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\10\1\u04e6\4\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\1\10\1\u04e7\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\4\10\1\u04e8\1\u0483\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\36\0\1\u04e9\64\0\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\4\10\1\u04ea\1\10\2\0\6\10\14\0\15\10"+ - "\1\u04eb\1\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\1\u04ec\1\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\1\10\1\u04ed\15\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u04ee\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\4\10\1\u01b4\1\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\10\10"+ - "\1\u04ef\6\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\12\10\1\u04f0\4\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\3\10"+ - "\1\u04f1\2\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\6\10\1\u04f2"+ - "\10\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\4\10\1\u04f3\1\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u04f4"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\u04f5\5\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\7\10\1\u04f6\7\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u04f7\5\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\1\u04f8\1\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\u04f9\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\4\10"+ - "\1\u04fa\1\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\16\10\1\u04fb"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\6\10\1\u04fc\5\10\1\u04fd\2\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\1\10\1\u04fe\4\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\10\1\u04ff\4\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\14\10\1\u0500\2\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\3\10\1\u0501"+ - "\2\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\10\1\221\4\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\10\10\1\u0502\11\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\1\10"+ - "\1\u0503\15\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\1\u0504\16\10\2\0\1\7"+ - "\22\10\40\0\1\u0505\142\0\1\u0506\127\0\1\u0507\75\0"+ - "\1\u0508\124\0\1\u0509\111\0\1\u050a\35\0\1\u050b\70\0"+ - "\1\u0361\125\0\1\u050c\120\0\1\u050d\67\0\5\u011a\5\0"+ - "\1\u011a\10\0\2\u011a\1\0\2\u011a\4\0\2\u011a\20\0"+ - "\1\u011a\1\0\1\u011a\3\0\1\u011a\12\0\1\u011a\20\0"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\u0154\5\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\4\10\1\u050e\12\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\7\10\1\u050f\7\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\2\10\1\u0510\17\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\2\10\1\u0511\3\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\10\1\u0512\4\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\14\10\1\u0513\2\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\2\10"+ - "\1\u0514\3\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\1\u0515\1\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\1\10\1\u0516\15\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\4\10\1\u0517\15\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\5\10\1\u0518\11\10\2\0"+ - "\1\7\22\10\40\0\1\u0519\73\0\1\u051a\111\0\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\2\10\1\u051b\3\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\5\10\1\u051c\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\u051d\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\14\10\1\u051e\2\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\3\10\1\u051f\2\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\10\1\u0520\4\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\2\10\1\u0521\3\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\4\10\1\u02d7\1\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\10\1\u0522\4\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u0523\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\1\10\1\u0524\15\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\6\10\1\u0525\10\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u0526\5\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\6\10\1\u0527\10\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\6\10"+ - "\1\u0528\10\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\1\u0529\1\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\4\10\1\u052a\12\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\u052b\5\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\5\10\1\u052c\14\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\4\10\1\u052d\15\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\1\10\1\u052e\15\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\6\10\1\u052f\10\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\10\1\u03a8\4\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\1\10\1\u0530\15\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\u0531\5\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\u0159\5\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\5\10\1\u0135\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u0532\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u0533\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\10\1\u0534\4\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\10"+ - "\1\u0535\4\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\1\10\1\u0536\4\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\4\10\1\u0537\12\10\2\0\1\7"+ - "\22\10\1\7\5\10\1\u0538\1\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\1\u03b7\5\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\2\10\1\u0539"+ - "\5\10\1\u053a\7\10\1\105\1\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\10\1\u04f0\4\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\6\10\1\u053b\10\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\1\u03f2\1\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\10\1\u053c\4\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\16\10"+ - "\1\u053d\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\1\10\1\u053e\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\6\10\1\u053f\10\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\4\10\1\u0540\12\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\10\1\u0541\4\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\3\10\1\u0542\2\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\1\10\1\u0543\15\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\5\10\1\u0222\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\10\10\1\u0544\11\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\4\10\1\u02da"+ - "\15\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\7\10\1\u0545\7\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u0546\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\u0547\5\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\3\10\1\u0548\2\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\2\10"+ - "\1\u0549\3\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\12\10\1\u054a\7\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u054b\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\7\10\1\u054c\7\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\6\10"+ - "\1\u054d\10\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\4\10\1\u054e\1\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\2\10\1\u054f\3\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\10\1\u0550\4\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\2\10\1\u0551\14\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\1\10\1\u0552\15\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\10\1\u0553\4\10\14\0\4\10"+ - "\1\u0554\12\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\u0555\5\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\1\u0556\16\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\1\10\1\u0557\15\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\4\10\1\u0558\12\10\2\0\1\7\22\10\35\0"+ - "\1\u0559\101\0\1\u055a\106\0\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\1\10\1\u055b\15\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\6\10\1\u055c\10\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\16\10\1\u0135\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\10"+ - "\1\u055d\4\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u055e\5\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\6\10\1\u055f\10\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\1\10"+ - "\1\u0560\15\10\2\0\1\7\22\10\73\0\1\u0561\27\0"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\1\10"+ - "\1\u0562\15\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\2\10\1\u0563\3\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\u0564"+ - "\5\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\10\1\u0565\4\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\1\10\1\u0566\20\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u0567\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\2\10\1\u0154\3\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\4\10"+ - "\1\u0568\1\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\2\10\1\u0569\3\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u056a\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u056b\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\10\1\u056c\4\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\1\10\1\u056d\15\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\10\1\u056e\4\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\3\10\1\u056f\13\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u0570\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\10\10\1\u0571\6\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\15\10\1\u02d9\1\10\2\0\1\7\4\10\1\u02da"+ - "\15\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u04b9"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\15\10\1\u02ce\1\10"+ - "\2\0\1\7\14\10\1\u02dd\5\10\1\7\7\10\1\0"+ - "\1\u0572\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u0573\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\20\10"+ - "\1\105\1\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\1\u0574\1\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\3\10\1\u0575\2\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\10\1\u0576\4\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\10\10\1\u02e1\11\10\41\0\1\u03f6\116\0"+ - "\1\u03f6\122\0\1\u0577\126\0\1\u02ad\121\0\1\u0578\147\0"+ - "\1\u0579\75\0\1\u057a\117\0\1\u057b\160\0\1\u02ad\27\0"+ - "\1\7\7\10\1\0\1\u057c\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\u057d\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\u057e\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\10\1\u057f\4\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\1\0\1\u0580\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\15\10\1\u02d9\1\10\2\0\1\7"+ - "\17\10\1\u02de\2\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\1\u0581\1\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u0582\5\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\1\u0583\1\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\1\u0584\1\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\12\10\1\u039f\3\10"+ - "\1\u0585\3\10\35\0\1\u0586\152\0\1\u0587\35\0\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\10\1\u04fb\4\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\1\u0274\16\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\10\1\u0588\4\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\4\10"+ - "\1\u02da\5\10\1\u02dc\7\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\13\10\1\u0589\3\10\2\0\1\7"+ - "\22\10\1\7\5\10\1\u058a\1\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\1\0"+ - "\1\u058b\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\4\10\1\u058c\1\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\6\10\1\u058d\10\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\2\10\1\u03ef\17\10\1\7\7\10"+ - "\1\0\1\u058e\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\5\10\1\u058f"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\3\10\1\u0590\2\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\1\10\1\u0383\15\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\1\u0250\21\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\4\10\1\u0591\15\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\16\10"+ - "\1\u0154\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u0592\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\1\10\1\u0135\15\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\1\u0593\1\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\11\10\1\u0594\5\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\1\u0432\21\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\1\10\1\274\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\1\u0595\16\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\4\10\1\u0596"+ - "\1\10\2\0\6\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\1\10"+ - "\1\u0597\15\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\u0598\5\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\u0599\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u059a\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\1\10\1\u059b\15\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u059c\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\2\10\1\u059d\1\u059e\2\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\4\10\1\u0154\12\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\10\1\u059f\4\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\2\10\1\u05a0\3\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\1\10\1\u05a1"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\4\10\1\u0420\1\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u05a2"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\1\10\1\u05a3\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\2\10\1\u05a4\3\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\1\u05a5\1\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\u05a6\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u05a7\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\2\10\1\u0154\14\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\2\10"+ - "\1\u05a8\3\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u05a9\5\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\4\10\1\u05aa\1\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\1\10\1\u05ab"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\3\10\1\u05ac\2\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\3\10\1\u05ad"+ - "\2\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\2\10\1\u05ae\3\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\u05af\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\13\10\1\u05b0\6\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\1\10\1\u05b1\15\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\1\u05b2\5\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\10\1\u05b3\4\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\13\10\1\u05b4\3\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\4\10"+ - "\1\u05b5\12\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\3\10\1\u05b6\2\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\10"+ - "\1\u05b7\4\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\1\u05b8\1\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\u037b\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\40\0\1\u05b9\145\0\1\u05ba\37\0\1\7\7\10\1\0"+ - "\1\u0172\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\5\10\1\u05bb\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u05bc\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u05bd"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u05be\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\10\1\u05bf\4\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\10\1\u05c0\4\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\5\10\1\u05c1\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u05c2"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\7\10\1\u05c3\7\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\10\1\u05c4\4\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\1\10\1\u05c5"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\6\10\1\u05c6\10\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\4\10\1\u05c7"+ - "\1\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\7\10\1\u05c8\7\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\1\u05c9\16\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\2\10\1\u05ca\3\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\10\1\u034a\4\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u05cb"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\u05cc\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\3\10\1\u05cd\13\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\3\10\1\u05ce\2\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\6\10\1\u05cf\10\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\3\10\1\u031d\2\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\5\10\1\u05d0"+ - "\1\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\4\10\1\u05d1\12\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u04ce\5\10\14\0\17\10"+ - "\2\0\1\7\22\10\67\0\1\u05d2\50\0\1\u05d3\144\0"+ - "\1\u05d4\120\0\1\u05d5\124\0\1\u05d6\63\0\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\4\10\1\u05d7\1\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\u03f2\5\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\3\10\1\u05d8"+ - "\13\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\5\10\1\u05d9\14\0\17\10\2\0\1\7\22\10"+ - "\103\0\1\u05da\3\0\1\u05db\13\0\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\4\10\1\u0249\12\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\10\10\1\u05dc\11\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\2\10\1\u05dd"+ - "\14\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\3\10\1\u05de\2\10\14\0\17\10\2\0\1\7"+ - "\22\10\37\0\1\u05df\124\0\1\u05e0\61\0\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\4\10\1\u05e1\12\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\5\10\1\u05e2\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\4\10\1\u05e3\1\10\14\0"+ - "\17\10\2\0\1\7\22\10\26\0\1\u05e4\74\0\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\2\10\1\u05e5\3\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\3\10\1\u01d2\13\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\1\u0546"+ - "\1\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\5\10\1\u04ac\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\1\u05e6"+ - "\1\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\1\u05e7\1\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\1\u05e8"+ - "\1\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\2\10\1\u05e9\14\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\1\u05ea\1\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\1\10\1\u01d3\15\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\1\10\1\u05eb\15\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\3\10"+ - "\1\u05ec\13\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\6\10\1\u04fc\10\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\1\u05ed\1\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\5\10\1\u05ee\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\4\10"+ - "\1\u05ef\1\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u0135\5\10\14\0\17\10"+ - "\2\0\1\7\3\10\1\u05f0\16\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\u05f1\5\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\3\10\1\u05f2\13\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\u05f3\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\1\u05f4"+ - "\1\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\2\10\1\u05f5\3\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\5\10\1\u05f6\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\4\10\1\u05f7\1\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\4\10\1\u05f8\1\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\1\10\1\u05f9"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\1\u05fa\1\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\21\10\1\u032d\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\2\10\1\u05fb\14\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\6\10\1\u05fc\10\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u05fd\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\1\10\1\u05fe"+ - "\4\10\2\0\6\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\7\10"+ - "\1\u05ff\7\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\u0600\5\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\4\10\1\u0601"+ - "\1\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\5\10\1\u0602\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\2\10"+ - "\1\u0603\3\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\3\10\1\u0604"+ - "\13\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\1\10\1\u0605\15\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\7\10\1\u0606\7\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\u056a\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u0607"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\u04f0\5\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\2\10"+ - "\1\u0608\3\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\6\10\1\u0609"+ - "\10\10\2\0\1\7\22\10\35\0\1\u060a\125\0\1\u060b"+ - "\62\0\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u060c\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\5\10\1\u05c8\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\2\10\1\u060d\14\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\2\10\1\u060e\14\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\7\10\1\u060f\7\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\7\10"+ - "\1\u0610\7\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\1\10\1\u0611\15\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\10"+ - "\1\u0154\4\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\3\10\1\u0491\2\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\10\1\u0612\4\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\4\10\1\u0613\1\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\1\u0614\21\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\2\10\1\341\14\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\2\10\1\u0615\3\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\1\10\1\u05c7\15\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\3\10\1\u0616"+ - "\2\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\3\10\1\u0617\2\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\u0618\5\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\u0619\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\u061a"+ - "\5\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\4\10\1\u061b\1\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\156\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\1\u061c"+ - "\16\10\2\0\1\7\22\10\60\0\1\u061d\101\0\1\u061e"+ - "\124\0\1\u05d6\121\0\1\u02ad\143\0\1\u02ad\41\0\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\3\10\1\u061f\2\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\3\10\1\u0485\13\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\6\10\1\u0620\10\10\2\0\1\7\22\10\11\0\1\u0621"+ - "\125\0\1\u0622\106\0\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\1\10\1\u0623\15\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u0624\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\4\10\1\u0625\1\10\14\0\17\10\2\0"+ - "\1\7\22\10\72\0\1\u0626\111\0\1\u0627\41\0\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\2\10\1\u0628\3\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\5\10\1\u0629\1\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\1\10\1\u062a\15\10\2\0\1\7\22\10\65\0\1\u062b"+ - "\35\0\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\4\10\1\u062c\1\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\u0279\5\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\4\10\1\u062d\15\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\2\10\1\u062e\3\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u062f\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\7\10\1\u0630\12\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\10\1\u0631\4\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\2\10\1\u0632\3\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\2\10"; - - private static final String ZZ_TRANS_PACKED_1 = - "\1\u0633\14\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\5\10\1\u0634\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\4\10\1\u0635"+ - "\1\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\u0636\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\1\u0637\16\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\1\0\1\u0638\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\3\10\1\u0576\13\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\6\10\1\u0639\10\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\10\1\u063a\4\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\4\10\1\u063b\1\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\1\10\1\u063c\15\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\2\10"+ - "\1\u063d\3\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\6\10\1\u063e"+ - "\10\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\3\10\1\u063f\2\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\5\10\1\u0222\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\4\10\1\u0640\15\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\1\10\1\u0641"+ - "\15\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\5\10\1\u0642"+ - "\14\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\1\10\1\u0643\15\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\15\10\1\u02d9\1\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\4\10\1\u0644\12\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u0645\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\5\10\1\u0154\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\4\10\1\u0491\12\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u0646\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\4\10\1\u0647\12\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\3\10\1\u0648\2\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\5\10\1\u0649\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\3\10\1\u064a"+ - "\2\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\u064b\5\10\14\0\17\10\2\0"+ - "\1\7\22\10\37\0\1\u0561\74\0\1\u064c\111\0\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\2\10\1\u064d\3\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\5\10\1\u064e\1\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\5\10\1\u064f\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\12\10\1\u0650\7\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\1\u0651"+ - "\5\10\2\0\6\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\3\10\1\u0652\2\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\3\10\1\u0653\2\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\u0654\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\3\10\1\u0655\2\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\1\10\1\u0656\15\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\3\10\1\u0657\2\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\1\u0491\1\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\7\10"+ - "\1\u0658\7\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\7\10\1\u0659\7\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\2\10\1\u065a\13\10\1\u065b"+ - "\3\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u065c\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\3\10\1\u0154\2\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\2\10\1\u065d\14\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\6\10\1\u065e"+ - "\10\10\2\0\1\7\22\10\63\0\1\u03f6\74\0\1\u050d"+ - "\65\0\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\10\1\u065f"+ - "\4\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\1\10\1\u0660\15\10"+ - "\2\0\1\7\22\10\27\0\1\u0661\160\0\1\u0662\35\0"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\2\10"+ - "\1\u0663\14\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\5\10\1\u0664\11\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\u04fc\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\60\0\1\u046b\101\0"+ - "\1\u0665\63\0\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\1\10\1\u0666\4\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\1\10\1\u0667"+ - "\15\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\5\10\1\u04ce\14\0\17\10\2\0\1\7\22\10"+ - "\72\0\1\u0668\30\0\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\4\10\1\u0669\1\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\1\u066a\1\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\10\1\u066b\4\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\5\10\1\u0135\11\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\1\10\1\u066c\15\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\7\10\1\u066d\7\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\10\1\u066e\4\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\4\10\1\u066f\1\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\4\10\1\u0670\1\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\2\10\1\u0671\3\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u0672\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\1\10\1\u0673\15\10\2\0\1\7\22\10\103\0\1\u0674"+ - "\17\0\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\1\u031a\21\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\2\10\1\u0675\3\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\11\10\1\u03f2\5\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\14\10\1\u02dd\5\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\13\10\1\u0676\3\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\13\10\1\u031a\3\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\12\10\1\u0154\7\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\1\341\1\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\1\u0677\16\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\u0678\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\1\u0154\16\10\2\0"+ - "\1\7\22\10\1\7\5\10\1\u0679\1\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\10\1\u067a\4\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\3\10\1\u067b\2\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u067c\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\5\10\1\341\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\2\10\1\u067d\14\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\1\10\1\u067e\15\10"+ - "\2\0\1\7\22\10\72\0\1\u067f\30\0\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\1\u0680\1\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\4\10"+ - "\1\u0681\1\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\1\u0682\1\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\3\10\1\u0683\13\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\6\10"+ - "\1\u0684\10\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\u0685\5\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u0686\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\10\1\u0687\4\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\14\10\1\u0688\2\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\u0689\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\2\10\1\u067b\3\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\17\10\1\u02de\2\10\1\7\5\10\1\u068a\1\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\4\10\1\u068b\1\u0222\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\u068c\5\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\3\10\1\u068d\2\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\2\10\1\u068e"+ - "\17\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u068f"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\1\u0380\1\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\6\10\1\u0690\10\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\1\u0154\1\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\42\0\1\u0691\143\0\1\u0692\37\0"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\6\10"+ - "\1\u0693\10\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\12\10"+ - "\1\u039f\7\10\36\0\1\u0561\64\0\1\7\7\10\1\0"+ - "\1\u0694\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\1\u0695\1\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\67\0\1\u0696\33\0\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\3\10\1\u0697\2\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\6\10\1\u0698\10\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\14\10\1\u0699\5\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\1\10\1\u04e4\15\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\u069a\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\u069b\5\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u069c\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\6\10\1\u024b\10\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\4\10\1\u0425\12\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\1\u069d\1\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\2\10\1\u03f2"+ - "\14\10\2\0\1\7\22\10\65\0\1\u069e\35\0\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\7\10\1\u069f"+ - "\7\10\2\0\1\7\22\10\1\7\7\10\1\0\1\u06a0"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\10\1\u06a1\4\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\1\u06a2\1\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\4\10\1\u06a3\1\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\u06a4\5\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\4\10\1\u04f0"+ - "\1\10\14\0\17\10\2\0\1\7\22\10\1\7\5\10"+ - "\1\u06a5\1\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\4\10\1\u06a6\1\u0222\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\14\10\1\u06a7\2\10\1\u06a8"+ - "\2\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\2\10\1\u04dc\17\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\10\1\u067d\4\10\14\0\17\10"+ - "\2\0\1\7\22\10\57\0\1\u06a9\43\0\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u06aa\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\3\10\1\u06ab\2\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\4\10"+ - "\1\u06ac\12\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\2\10\1\u06ad\3\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\1\u06ae\1\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\5\10"+ - "\1\u02bd\1\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\4\10\1\u06a6\1\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\1\10"+ - "\1\u06af\15\10\1\u06a8\2\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\4\10\1\u04f0\12\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\2\10\1\u06b0\17\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\1\u0673\1\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\4\10"+ - "\1\u03aa\1\10\14\0\1\10\1\u06b1\15\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\6\10\1\u06b2\10\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\1\10\1\u06b3\4\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\4\10\1\u06b4\1\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\u06b5\5\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\10\1\u06b6\4\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u034a\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\37\0\1\u06b7\143\0"+ - "\1\u06b8\42\0\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\1\10\1\u06b9\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\1\u06ba\1\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\12\10\1\u06bb\4\10\2\0\1\7\22\10\37\0"+ - "\1\u06bc\63\0\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\13\10\1\u04b9\3\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\u06bd\5\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\1\10\1\u06be\4\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\u06bf\5\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\14\10\1\u06c0\2\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\1\0\1\u06c1\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\u06c2\5\10\14\0\17\10\2\0\1\7"+ - "\22\10\66\0\1\u06c3\34\0\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\2\10\1\u06c4\3\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\10\1\u06c5"+ - "\4\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u06c6\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\2\10\1\u0602\14\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\3\10\1\u06c7\2\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\6\10\1\u06c8\10\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\1\10\1\u06c9\15\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\4\10\1\u06ca\1\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\1\10\1\u06cb\4\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\6\10\1\u06cc\10\10\2\0\1\7\22\10\35\0\1\u06cd"+ - "\65\0\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\10\1\u0602"+ - "\4\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\5\10\1\u06ce\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\1\10\1\u06cf\15\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\10\1\u06d0\4\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\16\10\1\u03f2\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\10\1\u0553\4\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\6\10\1\u06d1\10\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\1\u06d2\1\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u06d3\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\2\10\1\u06d4\3\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\6\10"+ - "\1\u06d5\10\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\10\1\u06d6\4\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\1\0\1\u06d7"+ - "\6\10\14\0\17\10\2\0\1\7\22\10\35\0\1\u0561"+ - "\146\0\1\u06d8\41\0\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\6\10\1\u06d9\10\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\2\10"+ - "\1\u024b\14\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\2\10\1\u06da\3\10\14\0\17\10\2\0"+ - "\1\7\22\10\63\0\1\u06db\37\0\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\6\10\1\u06dc\10\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\1\10\1\u06dd\15\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\4\10\1\u06a6\1\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\17\10\2\0\1\7\16\10\1\u0585"+ - "\3\10\6\0\1\u06de\114\0\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\6\10\1\u06df\10\10\2\0\1\7"+ - "\22\10\62\0\1\u06e0\40\0\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\1\u0218\1\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\3\10\1\u030f\2\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\3\10\1\u06e1\2\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\5\10"+ - "\1\u06e2\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u06e3\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\1\u040d\1\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\2\10\1\u06e4\14\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\3\10\1\u06e5"+ - "\2\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u06e6\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\2\10\1\u06e7\14\10\2\0\1\7\22\10"+ - "\32\0\1\u06e8\70\0\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\5\10\1\u06e9\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\2\10\1\u06ea"+ - "\14\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\3\10\1\u06eb\2\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\1\u04f0\21\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\5\10\1\u06ec\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\4\10\1\u01d3"+ - "\1\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\3\10\1\u06ed\2\10\14\0\17\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\2\10\1\u0391\14\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\2\10\1\u06ee\3\10"+ - "\14\0\17\10\2\0\1\7\22\10\74\0\1\u06ef\65\0"+ - "\1\u06f0\63\0\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\4\10\1\u06d0\12\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\1\10\1\u06f1\4\10\14\0"+ - "\17\10\2\0\1\7\22\10\65\0\1\u06f2\35\0\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\3\10\1\u06f3\2\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\5\10\1\240\11\10\2\0\1\7"+ - "\22\10\60\0\1\u06f4\42\0\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\3\10\1\u06f5\2\10\14\0\17\10\2\0\1\7"+ - "\22\10\41\0\1\u06f6\61\0\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\2\10\1\u06f7\14\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\5\10\1\u06f8"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\5\10\1\u046a\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\2\10\1\u06f9"+ - "\3\10\14\0\17\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\13\10\1\u0602\3\10"+ - "\2\0\1\7\22\10\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\2\0"+ - "\6\10\14\0\4\10\1\u06fa\12\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\u0644\5\10\14\0"+ - "\17\10\2\0\1\7\22\10\64\0\1\u06fb\36\0\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\16\10\1\u06fc\3\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\6\10\1\u06fd\10\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\u05d9\5\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\1\u06fe\5\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\7\10\1\u06ff\7\10\2\0\1\7\22\10\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\3\10\1\u0700\2\10\14\0\17\10"+ - "\2\0\1\7\22\10\37\0\1\u0701\111\0\1\u0702\54\0"+ - "\1\u0703\17\0\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\5\10"+ - "\1\u0704\14\0\17\10\2\0\1\7\22\10\66\0\1\u0705"+ - "\34\0\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\4\10\1\u0706"+ - "\1\10\14\0\17\10\2\0\1\7\22\10\14\0\1\u0707"+ - "\106\0\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\4\10\1\u0708"+ - "\1\10\14\0\17\10\2\0\1\7\22\10\37\0\1\u0709"+ - "\63\0\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\1\u0460\5\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\5\10\1\u070a"+ - "\1\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\17\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\17\10\2\0\1\7\14\10\1\u070b\5\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\6\10\1\u057f"+ - "\10\10\2\0\1\7\22\10\63\0\1\u070c\37\0\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\2\10\1\u070d\3\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\1\u070e\1\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\3\10\1\u070f\2\10"+ - "\14\0\17\10\2\0\1\7\22\10\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\1\0\1\u0710\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\7\10\1\u0711\7\10\2\0\1\7\22\10\61\0\1\u0712"+ - "\102\0\1\u0713\144\0\1\u0714\37\0\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\6\10\1\u0715\10\10\2\0"+ - "\1\7\22\10\40\0\1\u0716\62\0\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\6\10\1\u0717\10\10\2\0"+ - "\1\7\22\10\35\0\1\u0718\65\0\1\7\7\10\1\0"+ - "\1\10\1\141\1\0\2\10\1\0\1\7\1\10\4\0"+ - "\1\u03b7\5\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\22\10\32\0\1\u0333\52\0\1\u0719\15\0\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\1\u071a\16\10\2\0"+ - "\1\7\22\10\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\6\10"+ - "\14\0\1\10\1\u071b\15\10\2\0\1\7\22\10\37\0"+ - "\1\u071c\63\0\1\7\7\10\1\0\1\10\1\141\1\0"+ - "\2\10\1\0\1\7\1\10\4\0\6\10\2\0\1\10"+ - "\1\u071d\4\10\14\0\17\10\2\0\1\7\22\10\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\6\10\14\0\13\10\1\u0154"+ - "\3\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\1\u071e\1\10\1\0\1\7\1\10\4\0"+ - "\6\10\2\0\6\10\14\0\17\10\2\0\1\7\22\10"+ - "\116\0\1\u071f\4\0\1\7\7\10\1\0\1\10\1\141"+ - "\1\0\2\10\1\0\1\7\1\10\4\0\6\10\1\0"+ - "\1\u0720\6\10\14\0\17\10\2\0\1\7\22\10\65\0"+ - "\1\u0721\115\0\1\u0722\100\0\1\u0723\64\0\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\1\10\1\u0724\15\10"+ - "\2\0\1\7\22\10\41\0\1\u0725\61\0\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\6\10\14\0\17\10\2\0\1\7"+ - "\1\u0726\21\10\36\0\1\u0727\152\0\1\u0728\34\0\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\2\10\1\0\1\7"+ - "\1\10\4\0\6\10\2\0\3\10\1\u0729\2\10\14\0"+ - "\17\10\2\0\1\7\22\10\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\6\10\14\0\6\10\1\u0615\10\10\2\0\1\7"+ - "\22\10\62\0\1\u072a\40\0\1\7\7\10\1\0\1\10"+ - "\1\141\1\0\2\10\1\0\1\7\1\10\4\0\6\10"+ - "\2\0\5\10\1\u03bc\14\0\17\10\2\0\1\7\22\10"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\2\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\1\u04b9\5\10\14\0"+ - "\17\10\2\0\1\7\22\10\37\0\1\u072b\200\0\1\u072c"+ - "\43\0\1\u072d\147\0\1\u072e\124\0\1\u072f\35\0\1\7"+ - "\7\10\1\0\1\10\1\141\1\0\1\u0730\1\10\1\0"+ - "\1\7\1\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\1\7\22\10\25\0\1\u0731\75\0\1\7\7\10"+ - "\1\0\1\10\1\141\1\0\2\10\1\0\1\7\1\10"+ - "\4\0\6\10\2\0\2\10\1\u0732\3\10\14\0\17\10"+ - "\2\0\1\7\22\10\60\0\1\u0733\130\0\1\u0734\34\0"+ - "\1\7\7\10\1\0\1\10\1\141\1\0\1\u02cd\1\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\22\10\35\0\1\u0735\122\0\1\u0736"+ - "\76\0\1\u072b\150\0\1\u0737\160\0\1\u0561\107\0\1\u06b7"+ - "\40\0\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\1\7\10\10\1\u03ce\11\10\40\0\1\u0738"+ - "\62\0\1\7\7\10\1\0\1\10\1\141\1\0\2\10"+ - "\1\0\1\7\1\10\4\0\6\10\2\0\1\10\1\u03f2"+ - "\4\10\14\0\17\10\2\0\1\7\22\10\41\0\1\u0561"+ - "\72\0\1\u0739\176\0\1\u073a\66\0\1\u073b\154\0\1\u073c"+ - "\132\0\1\u073d\64\0\1\u073e\145\0\1\u073f\127\0\1\u0740"+ - "\72\0\1\u0741\145\0\1\u0742\102\0\1\u0743\76\0\1\u0744"+ - "\145\0\1\u0745\117\0\1\u0746\77\0\1\u0747\140\0\1\u0748"+ - "\203\0\1\u0749\53\0\1\u074a\167\0\1\u074b\51\0\1\u074c"+ - "\126\0\1\u074d\121\0\1\u074e\143\0\1\u0561\134\0\1\u074f"+ - "\60\0\1\u0750\130\0\1\u027f\77\0\1\u0751\170\0\1\u060a"+ - "\120\0\1\u0752\123\0\1\u0753\77\0\1\u0754\125\0\1\u0627"+ - "\147\0\1\u0561\34\0"; - - private static int [] zzUnpackTrans() { - int [] result = new int[151807]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - offset = zzUnpackTrans(ZZ_TRANS_PACKED_1, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\3\0\2\1\1\0\12\1\2\11\21\1\2\11\4\1"+ - "\1\11\35\1\1\11\5\1\1\11\12\1\1\11\3\1"+ - "\1\11\1\1\2\11\24\1\1\0\1\1\1\0\7\1"+ - "\2\0\54\1\2\0\120\1\2\0\1\11\4\0\1\11"+ - "\2\0\1\11\16\0\1\11\1\0\1\1\2\0\2\11"+ - "\3\1\1\0\14\1\2\11\3\1\1\0\2\1\1\11"+ - "\5\1\1\11\231\1\33\0\1\11\2\0\1\11\15\1"+ - "\1\11\1\1\1\0\5\1\1\11\163\1\1\0\32\1"+ - "\2\0\1\1\2\0\1\1\15\0\1\11\11\0\1\11"+ - "\15\1\1\0\155\1\1\0\32\1\34\0\16\1\1\0"+ - "\145\1\1\0\27\1\23\0\12\1\1\0\2\1\1\0"+ - "\112\1\1\0\11\1\1\0\33\1\5\0\1\1\4\0"+ - "\14\1\2\0\101\1\2\0\7\1\1\0\33\1\11\0"+ - "\13\1\2\0\76\1\2\0\6\1\1\11\25\1\5\0"+ - "\4\1\1\0\5\1\2\0\3\1\1\0\55\1\2\0"+ - "\27\1\5\0\3\1\2\0\3\1\2\0\3\1\1\0"+ - "\45\1\2\0\21\1\2\0\2\1\2\0\3\1\2\0"+ - "\3\1\1\0\14\1\1\0\23\1\1\0\24\1\2\0"+ - "\2\1\1\0\2\1\1\0\13\1\1\0\12\1\1\0"+ - "\21\1\2\0\3\1\1\0\7\1\1\0\12\1\1\0"+ - "\15\1\2\0\3\1\1\0\4\1\1\0\1\1\1\0"+ - "\11\1\1\0\11\1\2\0\2\1\1\0\2\1\1\0"+ - "\1\1\1\0\7\1\1\0\6\1\2\0\1\1\1\0"+ - "\1\1\1\0\1\1\1\0\4\1\1\0\5\1\3\0"+ - "\1\1\1\0\1\1\1\0\1\1\1\0\2\1\1\0"+ - "\3\1\1\0\1\1\3\0\1\1\1\0\1\1\2\0"+ - "\2\1\1\0\2\1\5\0\1\1\1\0\1\1\2\0"+ - "\1\1\6\0\1\1\1\0\1\1\16\0\1\1\23\0"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[1876]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public GroovyTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * Returns the text to place at the beginning and end of a - * line to "comment" it in a this programming language. - * - * @return The start and end strings to add to a line to "comment" - * it out. - */ - @Override - public String[] getLineCommentStartAndEnd() { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = MULTILINE_STRING_DOUBLE; - start = text.offset; - break; - case Token.LITERAL_CHAR: - state = MULTILINE_STRING_SINGLE; - start = text.offset; - break; - case Token.COMMENT_MULTILINE: - state = MLC; - start = text.offset; - break; - case Token.COMMENT_DOCUMENTATION: - state = DOCCOMMENT; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Returns whether a regular expression token can follow the specified - * token. - * - * @param t The token to check, which may be null. - * @return Whether a regular expression token may follow this one. - */ - private static final boolean regexCanFollow(Token t) { - char ch; - return t==null || - //t.isOperator() || - (t.length()==1 && ( - (ch=t.charAt(0))=='=' || - ch=='(' || - ch==',' || - ch=='?' || - ch==':' || - ch=='[' - )) || - /* Operators "==", "===", "!=", "!==", etc. */ - (t.getType()==Token.OPERATOR && - ((ch=t.charAt(t.length()-1))=='=' || ch=='~')); - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public GroovyTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public GroovyTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 192) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override -public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public com.fr.design.gui.syntax.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 20: - { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; - } - case 47: break; - case 3: - { addToken(Token.IDENTIFIER); - } - case 48: break; - case 42: - { addToken(Token.LITERAL_BOOLEAN); - } - case 49: break; - case 6: - { start = zzMarkedPos-1; yybegin(STRING_DOUBLE); - } - case 50: break; - case 35: - { start = zzMarkedPos-3; yybegin(MULTILINE_STRING_DOUBLE); - } - case 51: break; - case 13: - { addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); return firstToken; - } - case 52: break; - case 34: - { addToken(Token.ERROR_CHAR); - } - case 53: break; - case 21: - { addToken(Token.ERROR_NUMBER_FORMAT); - } - case 54: break; - case 5: - { addToken(Token.ERROR_CHAR); addNullToken(); return firstToken; - } - case 55: break; - case 11: - { addToken(Token.ANNOTATION); - } - case 56: break; - case 28: - { addToken(Token.FUNCTION); - } - case 57: break; - case 33: - { start = zzMarkedPos-3; yybegin(MULTILINE_STRING_SINGLE); - } - case 58: break; - case 2: - { addToken(Token.ERROR_IDENTIFIER); - } - case 59: break; - case 36: - { boolean highlightedAsRegex = false; - if (zzBuffer[zzStartRead]=='~' || firstToken==null) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - else { - // If this is *likely* to be a regex, based on - // the previous token, highlight it as such. - Token t = firstToken.getLastNonCommentNonWhitespaceToken(); - if (regexCanFollow(t)) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - } - // If it doesn't *appear* to be a regex, highlight it as - // individual tokens. - if (!highlightedAsRegex) { - int temp = zzStartRead + 1; - addToken(zzStartRead, zzStartRead, Token.OPERATOR); - zzStartRead = zzCurrentPos = zzMarkedPos = temp; - } - } - case 60: break; - case 25: - { addToken(Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 61: break; - case 40: - { yybegin(YYINITIAL); addToken(start,zzStartRead+2, Token.LITERAL_CHAR); - } - case 62: break; - case 45: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; - } - case 63: break; - case 31: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.PREPROCESSOR); start = zzMarkedPos; - } - case 64: break; - case 44: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_DOCUMENTATION); start = zzMarkedPos; - } - case 65: break; - case 14: - { /* Skip escaped chars, handles case: '\"""'. */ - } - case 66: break; - case 24: - { addToken(Token.LITERAL_CHAR); - } - case 67: break; - case 18: - { /* Skip escaped chars. */ - } - case 68: break; - case 39: - { yybegin(YYINITIAL); addToken(start,zzStartRead+2, Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 69: break; - case 23: - { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); - } - case 70: break; - case 26: - { start = zzMarkedPos-2; yybegin(MLC); - } - case 71: break; - case 8: - { addToken(Token.WHITESPACE); - } - case 72: break; - case 30: - { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_DOCUMENTATION); - } - case 73: break; - case 38: - { addToken(Token.DATA_TYPE); - } - case 74: break; - case 29: - { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); - } - case 75: break; - case 4: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 76: break; - case 32: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; - } - case 77: break; - case 19: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 78: break; - case 16: - { /* Skip escaped chars, handles case: "\'''". */ - } - case 79: break; - case 37: - { start = zzMarkedPos-3; yybegin(DOCCOMMENT); - } - case 80: break; - case 27: - { addToken(Token.RESERVED_WORD); - } - case 81: break; - case 43: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; - } - case 82: break; - case 46: - { addToken(Token.RESERVED_WORD_2); - } - case 83: break; - case 10: - { addToken(Token.SEPARATOR); - } - case 84: break; - case 7: - { addNullToken(); return firstToken; - } - case 85: break; - case 12: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 86: break; - case 9: - { addToken(Token.OPERATOR); - } - case 87: break; - case 17: - { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; - } - case 88: break; - case 22: - { addToken(Token.LITERAL_NUMBER_FLOAT); - } - case 89: break; - case 41: - { addToken(Token.COMMENT_MULTILINE); - } - case 90: break; - case 1: - { - } - case 91: break; - case 15: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 92: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case MULTILINE_STRING_DOUBLE: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 1877: break; - case DOCCOMMENT: { - yybegin(YYINITIAL); addToken(start,zzEndRead, Token.COMMENT_DOCUMENTATION); return firstToken; - } - case 1878: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 1879: break; - case MLC: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 1880: break; - case STRING_DOUBLE: { - addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); return firstToken; - } - case 1881: break; - case MULTILINE_STRING_SINGLE: { - addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; - } - case 1882: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} \ No newline at end of file From e5dd9301366b1e0bfca3fdf7e33e4af152ff0324 Mon Sep 17 00:00:00 2001 From: neil Date: Fri, 2 Dec 2016 09:50:49 +0800 Subject: [PATCH 108/139] 1 --- .../gui/syntax/ui/rsyntaxtextarea/modes/FortranTokenMaker.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FortranTokenMaker.java b/designer_base/src/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FortranTokenMaker.java index bc2617b21e..1736b96fea 100644 --- a/designer_base/src/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FortranTokenMaker.java +++ b/designer_base/src/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FortranTokenMaker.java @@ -1,7 +1,7 @@ /* The following code was generated by JFlex 1.4.1 on 10/16/06 10:31 AM */ /* - * 03/23/2005 + * 03/23/2005 * * FortranTokenMaker.java - Scanner for the Fortran programming language. * From e6cb548be4081d17ac7db45f73002cd7912affc6 Mon Sep 17 00:00:00 2001 From: neil Date: Fri, 2 Dec 2016 09:51:01 +0800 Subject: [PATCH 109/139] 1 --- .../gui/syntax/ui/rsyntaxtextarea/modes/FortranTokenMaker.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FortranTokenMaker.java b/designer_base/src/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FortranTokenMaker.java index 1736b96fea..bc2617b21e 100644 --- a/designer_base/src/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FortranTokenMaker.java +++ b/designer_base/src/com/fr/design/gui/syntax/ui/rsyntaxtextarea/modes/FortranTokenMaker.java @@ -1,7 +1,7 @@ /* The following code was generated by JFlex 1.4.1 on 10/16/06 10:31 AM */ /* - * 03/23/2005 + * 03/23/2005 * * FortranTokenMaker.java - Scanner for the Fortran programming language. * From 65f79d656478327be5542307ff5950f334f3fbea Mon Sep 17 00:00:00 2001 From: plough Date: Wed, 7 Dec 2016 10:41:58 +0800 Subject: [PATCH 110/139] =?UTF-8?q?REPORT-875=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E7=AB=8B=E5=8D=B3=E9=87=8D=E5=90=AF=E6=97=B6=EF=BC=8C=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E6=AD=A3=E5=B8=B8=E4=BF=9D=E5=AD=98xml=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/actions/file/PreferenceAction.java | 1 + .../design/actions/file/PreferencePane.java | 38 ++++++++++++------- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/designer_base/src/com/fr/design/actions/file/PreferenceAction.java b/designer_base/src/com/fr/design/actions/file/PreferenceAction.java index f3f5ef3250..71c25837db 100644 --- a/designer_base/src/com/fr/design/actions/file/PreferenceAction.java +++ b/designer_base/src/com/fr/design/actions/file/PreferenceAction.java @@ -38,6 +38,7 @@ public class PreferenceAction extends UpdateAction { DesignerEnvManager.getEnvManager().saveXMLFile(); JTemplate jt = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); jt.refreshToolArea(); + preferencePane.showRestartDialog(); } }); diff --git a/designer_base/src/com/fr/design/actions/file/PreferencePane.java b/designer_base/src/com/fr/design/actions/file/PreferencePane.java index 30628c3f14..d24305ca1d 100644 --- a/designer_base/src/com/fr/design/actions/file/PreferencePane.java +++ b/designer_base/src/com/fr/design/actions/file/PreferencePane.java @@ -83,6 +83,8 @@ public class PreferencePane extends BasicPane { }; private static int designerEnvLanguageIndex; // 打开设置对话框时,设计器使用的语言 + private boolean languageChanged; // 是否修改了设计器语言设置 + //设置是否支持undo private UICheckBox supportUndoCheckBox; //设置最大撤销次数 @@ -627,25 +629,35 @@ public class PreferencePane extends BasicPane { return l; } + // 如果语言设置改变了,则显示重启对话框 + public void showRestartDialog() { + if (!languageChanged) { + return; + } + int rv = JOptionPane.showOptionDialog( + null, + Inter.getLocText("FR-Designer_Language_Change_Successful"), + Inter.getLocText("FR-Designer-Plugin_Warning"), + JOptionPane.YES_NO_OPTION, + JOptionPane.INFORMATION_MESSAGE, + null, + new String[]{Inter.getLocText("FR-Designer-Basic_Restart_Designer"), Inter.getLocText("FR-Designer-Basic_Restart_Designer_Later")}, + null + ); + if (rv == JOptionPane.OK_OPTION) { + RestartHelper.restart(); + } + } + @Override public BasicDialog showWindow(Window window) { return showWindow(window, new DialogActionAdapter() { @Override public void doOk() { if (languageComboBox.getSelectedIndex() != designerEnvLanguageIndex) { - int rv = JOptionPane.showOptionDialog( - null, - Inter.getLocText("FR-Designer_Language_Change_Successful"), - Inter.getLocText("FR-Designer-Plugin_Warning"), - JOptionPane.YES_NO_OPTION, - JOptionPane.INFORMATION_MESSAGE, - null, - new String[]{Inter.getLocText("FR-Designer-Basic_Restart_Designer"), Inter.getLocText("FR-Designer-Basic_Restart_Designer_Later")}, - null - ); - if (rv == JOptionPane.OK_OPTION) { - RestartHelper.restart(); - } + languageChanged = true; + } else { + languageChanged = false; } } }); From b194ae08d806940fff6d83444c10367f33fcbfda Mon Sep 17 00:00:00 2001 From: kerry Date: Wed, 7 Dec 2016 10:47:25 +0800 Subject: [PATCH 111/139] =?UTF-8?q?REPORT-849=20=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E8=BF=87=E7=A8=8B=E7=AA=97=E5=8F=A3=E4=B9=9F=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=8B=96=E6=8B=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tabledatapane/ProcedureDataPane.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/designer_base/src/com/fr/design/data/tabledata/tabledatapane/ProcedureDataPane.java b/designer_base/src/com/fr/design/data/tabledata/tabledatapane/ProcedureDataPane.java index 19cb45fcad..600481428e 100644 --- a/designer_base/src/com/fr/design/data/tabledata/tabledatapane/ProcedureDataPane.java +++ b/designer_base/src/com/fr/design/data/tabledata/tabledatapane/ProcedureDataPane.java @@ -11,13 +11,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import javax.swing.BorderFactory; -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JToolBar; -import javax.swing.SwingWorker; +import javax.swing.*; import com.fr.base.BaseUtils; import com.fr.base.FRContext; @@ -45,6 +39,7 @@ import com.fr.design.gui.itoolbar.UIToolbar; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.menu.SeparatorDef; import com.fr.design.menu.ToolBarDef; +import com.fr.design.utils.gui.GUICoreUtils; import com.fr.file.DatasourceManager; import com.fr.general.Inter; import com.fr.script.Calculator; @@ -119,8 +114,13 @@ public class ProcedureDataPane extends AbstractTableDataPane imp // 左边的Panel,上面是选择DatabaseConnection的ComboBox,下面DatabaseConnection对应的Table initconnectionTableProcedurePane(); this.setLayout(new BorderLayout(4, 4)); - this.add(connectionTableProcedurePane, BorderLayout.WEST); - this.add(sqlSplitPane, BorderLayout.CENTER); + connectionTableProcedurePane.setMinimumSize(new Dimension(155, 500)); + box.setMinimumSize(new Dimension(310, 400)); + // 使用SplitPane + JSplitPane mainSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, connectionTableProcedurePane, sqlSplitPane); + mainSplitPane.setBorder(BorderFactory.createLineBorder(GUICoreUtils.getTitleLineBorderColor())); + mainSplitPane.setOneTouchExpandable(true); + this.add(mainSplitPane, BorderLayout.CENTER); } private void initconnectionTableProcedurePane() { From 62993e80bbf1368262dd5f5a4fc2356a51324d20 Mon Sep 17 00:00:00 2001 From: PanLi320 <854954082@qq.com> Date: Wed, 7 Dec 2016 17:22:54 +0800 Subject: [PATCH 112/139] =?UTF-8?q?REPORT-677=20=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E9=83=A8=E5=88=86=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原因:1.因为和之前的js那边的方法名一致,参数不同,经常会出现方法名那边找错了,导致登陆触发不完善。 2.主要是方法名和参数的问题,js那边虽然写死了带回调的,但是java这边感觉像是bug,走不到应该回调的地方。 --- .../src/com/fr/design/extra/PluginWebBridge.java | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginWebBridge.java b/designer_base/src/com/fr/design/extra/PluginWebBridge.java index 15bd72c09c..12c3e85c41 100644 --- a/designer_base/src/com/fr/design/extra/PluginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/PluginWebBridge.java @@ -529,17 +529,6 @@ public class PluginWebBridge { return LoginWebBridge.getHelper().pluginManageLogin(username, password, uiLabel); } - /** - * 插件管理部分的登陆的回调处理 - * @param username - * @param password - * @param callback - */ - public void defaultLogin(String username, String password, final JSObject callback) { - Task task = new PluginTask<>(webEngine, callback, new PluginLoginExecutor(username, password, uiLabel)); - new Thread(task).start(); - } - /** * 弹出QQ授权页面 */ @@ -556,4 +545,4 @@ public class PluginWebBridge { DesignerEnvManager.getEnvManager().setInShowBBsName(StringUtils.EMPTY); uiLabel.setText(Inter.getLocText("FR-Base_UnSignIn")); } -} \ No newline at end of file +} From eba088f61b55608f69b6c05ca8f24ea4526fb464 Mon Sep 17 00:00:00 2001 From: PanLi320 <854954082@qq.com> Date: Wed, 7 Dec 2016 17:26:32 +0800 Subject: [PATCH 113/139] =?UTF-8?q?REPORT-677=20=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E9=83=A8=E5=88=86=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原因:1.因为和之前的js那边的方法名一致,参数不同,经常会出现方法名那边找错了,导致登陆触发不完善。 2.主要是方法名和参数的问题,js那边虽然写死了带回调的,但是java这边感觉像是bug,走不到应该回调的地方。 --- .../src/com/fr/design/extra/PluginWebBridge.java | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginWebBridge.java b/designer_base/src/com/fr/design/extra/PluginWebBridge.java index 15bd72c09c..12c3e85c41 100644 --- a/designer_base/src/com/fr/design/extra/PluginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/PluginWebBridge.java @@ -529,17 +529,6 @@ public class PluginWebBridge { return LoginWebBridge.getHelper().pluginManageLogin(username, password, uiLabel); } - /** - * 插件管理部分的登陆的回调处理 - * @param username - * @param password - * @param callback - */ - public void defaultLogin(String username, String password, final JSObject callback) { - Task task = new PluginTask<>(webEngine, callback, new PluginLoginExecutor(username, password, uiLabel)); - new Thread(task).start(); - } - /** * 弹出QQ授权页面 */ @@ -556,4 +545,4 @@ public class PluginWebBridge { DesignerEnvManager.getEnvManager().setInShowBBsName(StringUtils.EMPTY); uiLabel.setText(Inter.getLocText("FR-Base_UnSignIn")); } -} \ No newline at end of file +} From 1c86462eb8938d68c9ddc1c4aea10b67c4ff69bf Mon Sep 17 00:00:00 2001 From: neil Date: Thu, 8 Dec 2016 11:08:36 +0800 Subject: [PATCH 114/139] =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.dev.gradle.bak | 86 ---------------- build.master.gradle.bak | 2 +- build.release.gradle.bak | 2 +- .../design/actions/file/PreferencePane.java | 64 +++--------- .../data/datapane/TableDataTreePane.java | 9 +- .../design/extra/WebManagerPaneFactory.java | 99 +++++++++++++++++++ designer_base/src/com/fr/env/RemoteEnv.java | 60 +++++------ .../fr/design/mainframe/ComponentTree.java | 1 + .../design/mainframe/WidgetPropertyPane.java | 3 + .../parameter/ParameterToolBarPane.java | 30 +++--- 10 files changed, 158 insertions(+), 198 deletions(-) delete mode 100644 build.dev.gradle.bak create mode 100644 designer_base/src/com/fr/design/extra/WebManagerPaneFactory.java diff --git a/build.dev.gradle.bak b/build.dev.gradle.bak deleted file mode 100644 index c5cc1b92da..0000000000 --- a/build.dev.gradle.bak +++ /dev/null @@ -1,86 +0,0 @@ -apply plugin: "java" -tasks.withType(JavaCompile){ - options.encoding = "UTF-8" -} - -def basicDir="../../" -def libDir="${basicDir}/finereport-lib-stable" -//获取什么分支名 -FileTree files =fileTree(dir:"./",include:"build.*.gradle") -def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ("\\")) -def branchName=buildDir.substring(buildDir.lastIndexOf ("\\")+1) - -task appletJar<<{ - - ant{ - mkdir(dir:"${libDir}/tmp-${branchName}") - mkdir(dir:"build/classes/") - copy(todir:"build/classes/"){ - fileset(dir:"${basicDir}/finereport-core-stable/${branchName}/build/classes/main") - - fileset(dir:"${basicDir}/finereport-chart-stable/${branchName}/build/classes/main") - - fileset(dir:"${basicDir}/finereport-report-stable/${branchName}/build/classes/main") - - fileset(dir:"${basicDir}/finereport-platform-stable/${branchName}/build/classes/main") - - fileset(dir:"${basicDir}/finereport-performance-stable/${branchName}/build/classes/main") - - } - unjar(src:"${libDir}/${branchName}/3rd.jar",dest:"${libDir}/tmp-${branchName}") - unjar(src:"${libDir}/${branchName}/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") - jar(jarfile:"build/libs/fr-applet-8.0.jar"){ - fileset(dir:"build/classes"){ - exclude(name:"*.*") - exclude(name:"bin/*.*") - exclude(name:"classes/**") - exclude(name:"com/fr/schedule/**") - exclude(name:"com/fr/cell/**") - exclude(name:"com/fr/dialog/**") - exclude(name:"com/fr/view/**") - exclude(name:"com/fr/web/**") - exclude(name:"com/fr/fs/**") - exclude(name:"com/fr/design/**") - exclude(name:"com/fr/start/**") - exclude(name:"com/fr/process/**") - } - fileset(dir:"${libDir}/tmp-${branchName}"){ - include(name:"javax/mail/**") - include(name:"javax/servlet/**") - include(name:"org/freehep/**") - include(name:"com/fr/third/JAI/**") - include(name:"com/fr/third/antlr/**") - include(name:"com/fr/third/javax/**") - include(name:"com/sun/xml/**") - include(name:"javax/xml/**") - - } - fileset(dir:"build/classes"){ - include(name:"com/fr/web/*.class") - include(name:"com/fr/web/attr/*.class") - } - } - delete(dir:"${libDir}/tmp-${branchName}") - def jdk6home= "D:/FineReport/develop/java/jdk1.6u35" - def keystore="frapplet.store" - def keycert="fr.cert" - def keypassword="123456" - def keyalias="fr" - - exec(executable:"${jdk6home}/bin/keytool"){ - arg(line:"-genkey -dname "CN=FineReport L=NanJing C=China" -keystore ${keystore} -alias ${keyalias} -validity 3650 -storepass ${keypassword}") - } - exec(executable:"${jdk6home}/bin/keytool"){ - arg(line:"-export -keystore ${keystore} -alias ${keyalias} -file ${keycert} -storepass ${keypassword}") - } - - exec(executable:"${jdk6home}/bin/jarsigner"){ - arg(line:"-keystore ${keystore} -storepass ${keypassword} 'build/libs/fr-applet-8.0.jar' ${keyalias}") - } - delete(file:"${keystore}") - delete(file:"${keycert}") - delete(dir:"build/classes") - - } - -} \ No newline at end of file diff --git a/build.master.gradle.bak b/build.master.gradle.bak index c5cc1b92da..a10a5e4277 100644 --- a/build.master.gradle.bak +++ b/build.master.gradle.bak @@ -28,7 +28,7 @@ task appletJar<<{ } unjar(src:"${libDir}/${branchName}/3rd.jar",dest:"${libDir}/tmp-${branchName}") - unjar(src:"${libDir}/${branchName}/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") + unjar(src:"${libDir}/branchName/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") jar(jarfile:"build/libs/fr-applet-8.0.jar"){ fileset(dir:"build/classes"){ exclude(name:"*.*") diff --git a/build.release.gradle.bak b/build.release.gradle.bak index 44aacadb4d..d8afaf2bb8 100644 --- a/build.release.gradle.bak +++ b/build.release.gradle.bak @@ -27,7 +27,7 @@ task appletJar<<{ } unjar(src:"${libDir}/3rd.jar",dest:"${libDir}/tmp-${branchName}") - unjar(src:"${libDir}/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") + unjar(src:"${libDir}/${branchName}/servlet-api.jar",dest:"${libDir}/tmp-${branchName}") jar(jarfile:"build/libs/fr-applet-8.0.jar"){ fileset(dir:"build/classes"){ exclude(name:"*.*") diff --git a/designer_base/src/com/fr/design/actions/file/PreferencePane.java b/designer_base/src/com/fr/design/actions/file/PreferencePane.java index d24305ca1d..0ddb424c70 100644 --- a/designer_base/src/com/fr/design/actions/file/PreferencePane.java +++ b/designer_base/src/com/fr/design/actions/file/PreferencePane.java @@ -1,13 +1,10 @@ package com.fr.design.actions.file; import com.fr.base.BaseUtils; -import com.fr.base.FRContext; import com.fr.design.DesignerEnvManager; -import com.fr.design.RestartHelper; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; -import com.fr.design.dialog.DialogActionListener; import com.fr.design.editor.editor.IntegerEditor; import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.gui.ibutton.UIButton; @@ -31,7 +28,9 @@ import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.File; +import java.util.ArrayList; import java.util.Locale; +import java.util.Map; /** * 选项对话框 @@ -74,16 +73,14 @@ public class PreferencePane extends BasicPane { private static final String DISPLAY_MINUS = "-"; private static final FRLevel[] LOG = {FRLevel.SEVERE, FRLevel.WARNING, FRLevel.INFO, FRLevel.DEBUG}; - private static final String[] LANGUAGE = {Inter.getLocText("FR-Designer_Language_Default"), - getLocaledLanguage("Simplified_Chinese_Language", Locale.SIMPLIFIED_CHINESE), - getLocaledLanguage("English_Language", Locale.ENGLISH), - getLocaledLanguage("Japanese_Language", Locale.JAPAN), - getLocaledLanguage("Traditional_Chinese_Language", Locale.TRADITIONAL_CHINESE), - getLocaledLanguage("Korea_Language",Locale.KOREA), + private static java.util.List LANGUAGE = new ArrayList<>(); + static { + Map map = Inter.getSupportLocaleMap(); + LANGUAGE.add(Inter.getLocText("FR-Designer_Language_Default")); + for(Locale locale : map.keySet()){ + LANGUAGE.add(getLocaledLanguage(map.get(locale), locale)); + } }; - private static int designerEnvLanguageIndex; // 打开设置对话框时,设计器使用的语言 - - private boolean languageChanged; // 是否修改了设计器语言设置 //设置是否支持undo private UICheckBox supportUndoCheckBox; @@ -361,7 +358,7 @@ public class PreferencePane extends BasicPane { JPanel LanguagePane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Choose_Language")); generalPane.add(languageAndDashBoard_pane); languageAndDashBoard_pane.add(LanguagePane); - languageComboBox = new UIComboBox(LANGUAGE); + languageComboBox = new UIComboBox(LANGUAGE.toArray()); languageComboBox.setFont(FRFont.getInstance("Dialog", Font.PLAIN, 12));//为了在中文系统中显示韩文 ActionLabel languageLabel = new ActionLabel(Inter.getLocText("FR-Designer_Designer_Language")); languageLabel.addActionListener(new ActionListener() { @@ -532,8 +529,7 @@ public class PreferencePane extends BasicPane { this.logLevelComboBox.setSelectedItem(FRLevel.getByLevel(designerEnvManager.getLogLevel())); - this.languageComboBox.setSelectedItem(LANGUAGE[designerEnvManager.getLanguage()]); - designerEnvLanguageIndex = designerEnvManager.getLanguage(); + this.languageComboBox.setSelectedItem(LANGUAGE.get(designerEnvManager.getLanguage())); this.pageLengthComboBox.setSelectedIndex(designerEnvManager.getPageLengthUnit()); this.reportLengthComboBox.setSelectedIndex(designerEnvManager.getReportLengthUnit()); @@ -620,46 +616,12 @@ public class PreferencePane extends BasicPane { private int getLanguageInt() { int l = 0; String lang = (String) this.languageComboBox.getSelectedItem(); - for (int i = 0; i < LANGUAGE.length; i++) { - if (ComparatorUtils.equals(lang, LANGUAGE[i])) { + for (int i = 0; i < LANGUAGE.size(); i++) { + if (ComparatorUtils.equals(lang, LANGUAGE.get(i))) { l = i; break; } } return l; } - - // 如果语言设置改变了,则显示重启对话框 - public void showRestartDialog() { - if (!languageChanged) { - return; - } - int rv = JOptionPane.showOptionDialog( - null, - Inter.getLocText("FR-Designer_Language_Change_Successful"), - Inter.getLocText("FR-Designer-Plugin_Warning"), - JOptionPane.YES_NO_OPTION, - JOptionPane.INFORMATION_MESSAGE, - null, - new String[]{Inter.getLocText("FR-Designer-Basic_Restart_Designer"), Inter.getLocText("FR-Designer-Basic_Restart_Designer_Later")}, - null - ); - if (rv == JOptionPane.OK_OPTION) { - RestartHelper.restart(); - } - } - - @Override - public BasicDialog showWindow(Window window) { - return showWindow(window, new DialogActionAdapter() { - @Override - public void doOk() { - if (languageComboBox.getSelectedIndex() != designerEnvLanguageIndex) { - languageChanged = true; - } else { - languageChanged = false; - } - } - }); - } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java b/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java index 5a893803c2..219093c6d9 100644 --- a/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java +++ b/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java @@ -38,7 +38,6 @@ import java.awt.dnd.DnDConstants; import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -276,15 +275,13 @@ public class TableDataTreePane extends BasicTableDataTreePane { * @param srcName 数据集来源(比如报表块,就是报表块的名称) * @param tableDataSource 数据集 */ - public Map addTableData(String srcName, TableDataSource tableDataSource) { - Map tdNameMap = new HashMap<>(); + public void addTableData(String srcName, TableDataSource tableDataSource) { allDSNames = DesignTableDataManager.getAllDSNames(tc.getBook()); DesignTableDataManager.setThreadLocal(DesignTableDataManager.NO_PARAMETER); TableDataSource tds = tc.getBook(); Iterator tdIterator = tableDataSource.getTableDataNameIterator(); while (tdIterator.hasNext()) { String tdName = (String) tdIterator.next(); - String oldName = tdName; TableData td = tableDataSource.getTableData(tdName); if (tds.getTableData(tdName) != null || isDsNameRepeaded(tdName)) {//如果有同名的就拼上来源名称 tdName = srcName + tdName; @@ -295,12 +292,8 @@ public class TableDataTreePane extends BasicTableDataTreePane { tdName += i; } tds.putTableData(tdName, td); - if (!ComparatorUtils.equals(oldName, tdName)) { - tdNameMap.put(oldName, tdName); - } } tc.parameterChanged(); dataTree.refresh(); - return Collections.unmodifiableMap(tdNameMap); } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/extra/WebManagerPaneFactory.java b/designer_base/src/com/fr/design/extra/WebManagerPaneFactory.java new file mode 100644 index 0000000000..faf67d1778 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/WebManagerPaneFactory.java @@ -0,0 +1,99 @@ +package com.fr.design.extra; + +import com.fr.design.dialog.BasicPane; +import com.fr.design.gui.frpane.UITabbedPane; +import com.fr.general.Inter; +import com.fr.stable.StableUtils; +import javafx.embed.swing.JFXPanel; + +import java.awt.*; +import java.io.File; +import java.net.URL; + +/** + * Created by vito on 2016/9/28. + */ +public class WebManagerPaneFactory { + private String installHome; + + public WebManagerPaneFactory() { + if (StableUtils.isDebug()) { + URL url = ClassLoader.getSystemResource(""); + this.installHome = url.getPath(); + } else { + this.installHome = StableUtils.getInstallHome(); + } + } + + public BasicPane createPluginPane() { + if (StableUtils.getMajorJavaVersion() == 8) { + return new ShopManagerPane(new ShopPaneConfig() { + @Override + String setMainJS() { + String relativePath = "/scripts/store/web/index.html"; + return StableUtils.pathJoin(new File(installHome).getAbsolutePath(), relativePath); + } + + @Override + String setScriptsId() { + return "shop_scripts"; + } + + @Override + JFXPanel setWebPane() { + return new PluginWebPane(setMainJS()); + } + + }); + } else { + BasicPane traditionalStorePane = new BasicPane() { + @Override + protected String title4PopupWindow() { + return Inter.getLocText("FR-Designer-Plugin_Manager"); + } + }; + traditionalStorePane.setLayout(new BorderLayout()); + traditionalStorePane.add(initTraditionalStore(), BorderLayout.CENTER); + return traditionalStorePane; + } + } + + public BasicPane createReusePane() { + return new ShopManagerPane(new ShopPaneConfig() { + @Override + String setMainJS() { + String relativePath = "/scripts/store/reuse/index.html"; + return StableUtils.pathJoin(new File(installHome).getAbsolutePath(), relativePath); + } + + @Override + String setScriptsId() { + return "reuse_scripts"; + } + + @Override + JFXPanel setWebPane() { + return new ReuseWebPane(setMainJS()); + } + }); + } + + /** + * 以关键词打开设计器商店 + * + * @param keyword 关键词 + */ + public BasicPane createPluginPane(String keyword) { + PluginWebBridge.getHelper().openWithSearch(keyword); + return createPluginPane(); + } + + private Component initTraditionalStore() { + UITabbedPane tabbedPane = new UITabbedPane(); + PluginInstalledPane installedPane = new PluginInstalledPane(); + tabbedPane.addTab(installedPane.tabTitle(), installedPane); + tabbedPane.addTab(Inter.getLocText("FR-Designer-Plugin_Update"), new PluginUpdatePane(tabbedPane)); + tabbedPane.addTab(Inter.getLocText("FR-Designer-Plugin_All_Plugins"), new PluginFromStorePane(tabbedPane)); + return tabbedPane; + } +} diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 70c18fbd0d..ce7118e69b 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -2114,7 +2114,6 @@ public class RemoteEnv implements Env { StableUtils.mkdirs(target); File cacheDir = null; File zip = null; - OutputStream out = null; try { HashMap para = new HashMap(); para.put("op", "fr_remote_design"); @@ -2123,15 +2122,16 @@ public class RemoteEnv implements Env { para.put("currentUsername", this.getUser()); HttpClient client = createHttpMethod(para); - InputStream input = client.getResponseStream();//拿到服务端传过来的整个共享文件夹的压缩文件的文件流 + InputStream input = client.getResponseStream(); zip = new File(StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath()), "share.zip"); cacheDir = new File(StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath()), ShareConstants.DIR_SHARE_CACHE); StableUtils.deleteFile(cacheDir); StableUtils.mkdirs(cacheDir); StableUtils.makesureFileExist(zip); - out = new FileOutputStream(zip); - IOUtils.copyBinaryTo(input, out);//放到本地缓存目录下 - + FileOutputStream out = new FileOutputStream(zip); + IOUtils.copyBinaryTo(input, out); + out.flush(); + out.close(); IOUtils.unzip(zip, cacheDir.getAbsolutePath(), EncodeConstants.ENCODING_GBK);//先解压到临时目录 if (cacheDir.exists() && cacheDir.isDirectory()) { return cacheDir.listFiles(new FilenameFilter() { @@ -2144,10 +2144,6 @@ public class RemoteEnv implements Env { } catch (Exception e) { FRContext.getLogger().error(e.getMessage()); } finally { - if (out != null) { - out.flush(); - out.close(); - } StableUtils.deleteFile(zip); } return new File[0]; @@ -2155,33 +2151,25 @@ public class RemoteEnv implements Env { @Override public boolean installREUFile(File reuFile) { - if (reuFile == null) { - return false; - } - File tempFile = new File(CacheManager.getProviderInstance().getCacheDirectory(), "temp_remote"); - IOUtils.unzip(reuFile, tempFile.getAbsolutePath()); - String shareXMLName = StableUtils.pathJoin(tempFile.getAbsolutePath(), ShareConstants.NAME_XML_MODULE); - String helpXMLName = StableUtils.pathJoin(tempFile.getAbsolutePath(), ShareConstants.NAME_XML_HELP); - try { - HashMap para = new HashMap(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_install_reufile"); - para.put("current_uid", this.createUserID()); - para.put("currentUsername", this.getUser()); - para.put("reuFileName", reuFile.getName()); - - HttpClient client = createHttpMethod(para); - client.setContent(IOUtils.inputStream2Bytes(new FileInputStream(new File(shareXMLName)))); - InputStream input = execute4InputStream(client); - client.release(); - para.put("isComplete", "true"); - HttpClient client1 = createHttpMethod(para); - client1.setContent(IOUtils.inputStream2Bytes(new FileInputStream(new File(helpXMLName)))); - InputStream input1 = execute4InputStream(client1); - return ComparatorUtils.equals(stream2String(input), "true") && ComparatorUtils.equals(stream2String(input1), "true"); - } catch (Exception e) { - return false; - } +// if (reuFile == null) { +// return false; +// } +// try { +// HashMap para = new HashMap(); +// para.put("op", "fr_remote_design"); +// para.put("cmd", "design_install_reufile"); +// para.put("current_uid", this.createUserID()); +// para.put("currentUsername", this.getUser()); +// para.put("reuFileName", reuFile.getName()); +// +// HttpClient client = createHttpMethod(para); +// client.setContent(IOUtils.inputStream2Bytes(new FileInputStream(reuFile))); +// InputStream input = execute4InputStream(client); +// return ComparatorUtils.equals(stream2String(input), "true"); +// } catch (Exception e) { +// return false; +// } + return false; } @Override diff --git a/designer_form/src/com/fr/design/mainframe/ComponentTree.java b/designer_form/src/com/fr/design/mainframe/ComponentTree.java index f31a64eedf..4d58c4887d 100644 --- a/designer_form/src/com/fr/design/mainframe/ComponentTree.java +++ b/designer_form/src/com/fr/design/mainframe/ComponentTree.java @@ -97,6 +97,7 @@ public class ComponentTree extends JTree { scrollPathToVisible(treepath); } + /** * 刷新 */ diff --git a/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java b/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java index 860f9f52db..cc7f1d7690 100644 --- a/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java +++ b/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java @@ -38,6 +38,7 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper private EventPropertyTable eventTable; private List widgetPropertyTables; private FormDesigner designer; + private ComponentTree componentTree; private JPanel wsp; private MobileWidgetTable mobileWidgetTable; private MobileBodyWidgetTable mobileBodyWidgetTable; @@ -121,6 +122,8 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper clearDockingView(); return; } + + componentTree = new ComponentTree(designer); widgetPropertyTables = new ArrayList(); propertyTable = new WidgetPropertyTable(designer); designer.addDesignerEditListener(new WidgetPropertyDesignerAdapter(propertyTable)); diff --git a/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java b/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java index 9a3f8b563f..aa7c11660a 100644 --- a/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java +++ b/designer_form/src/com/fr/design/parameter/ParameterToolBarPane.java @@ -29,18 +29,18 @@ public class ParameterToolBarPane extends BasicBeanPane { private UIButton addAll; private UILabel label; private int breakid; - + private static final int GAP_H = 4; private static final int GAP_V = 6; private static final int GAP_BV = 4; private static final int BUTTON_HEIGHT = 20; private static final int WIDTH = 225; - + private static final int L_H = 18; public ParameterToolBarPane() { this.setLayout(new FlowParameterPaneLayout()); - + label = new UILabel() { private static final long serialVersionUID = 1L; @@ -53,7 +53,7 @@ public class ParameterToolBarPane extends BasicBeanPane { label.setHorizontalAlignment(SwingConstants.LEFT); label.setBorder(BorderFactory.createEmptyBorder(0, 4, 0, 0)); this.add(label); - + addAll = new UIButton(Inter.getLocText("FR-Designer_Add_all")); this.add(addAll); @@ -63,7 +63,7 @@ public class ParameterToolBarPane extends BasicBeanPane { protected String title4PopupWindow() { return null; } - + public Parameter getTargetParameter(UIButton button) { int index = parameterSelectedLabellist.indexOf(button); if(index < 0 || index > parameterList.length - 1) { @@ -76,9 +76,9 @@ public class ParameterToolBarPane extends BasicBeanPane { public void populateBean(Parameter[] parameterArray) { parameterSelectedLabellist.clear(); this.removeAll(); - + this.add(label); - + if (parameterArray.length == 0) { this.setVisible(false); this.repaint(); @@ -86,14 +86,14 @@ public class ParameterToolBarPane extends BasicBeanPane { } else { this.setVisible(true); } - + parameterList = parameterArray; for (int i = 0; i < parameterList.length; i++) { UIButton parameterSelectedLabel = new UIButton(parameterList[i].getName()); parameterSelectedLabellist.add(parameterSelectedLabel); this.add(parameterSelectedLabel); } - + for(UIButton parameterSelectedLabel : parameterSelectedLabellist) { parameterSelectedLabel.addMouseListener(paraMouseListner); } @@ -130,9 +130,9 @@ public class ParameterToolBarPane extends BasicBeanPane { public Dimension preferredLayoutSize(Container parent) { int w = parent.getWidth(); - + layoutContainer(parent); - + int h= ((parameterSelectedLabellist.size() == 0) ? L_H : breakid * (BUTTON_HEIGHT + GAP_V) + GAP_BV + L_H + GAP_H + addAll.getPreferredSize().height); return new Dimension(w, h); } @@ -145,9 +145,9 @@ public class ParameterToolBarPane extends BasicBeanPane { int width = parent.getWidth() == 0 ? WIDTH : parent.getWidth(); int x = 0; int y = L_H + GAP_H; - + label.setBounds(0, 0, width, L_H); - + breakid = 1; for (UIButton tab : parameterSelectedLabellist) { Dimension dim = tab.getPreferredSize(); @@ -156,9 +156,9 @@ public class ParameterToolBarPane extends BasicBeanPane { x = 0; y += (dim.height + GAP_V); } - + tab.setBounds(x, y, dim.width, dim.height); - + x += (dim.width + GAP_H); } addAll.setBounds(0, y + GAP_V + BUTTON_HEIGHT, width, addAll.getPreferredSize().height); From 3282a9d70e3d23feedaf61769eafd83768f9a0d2 Mon Sep 17 00:00:00 2001 From: neil Date: Thu, 8 Dec 2016 16:46:11 +0800 Subject: [PATCH 115/139] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=EF=BC=8C=20=E5=86=B2=E7=AA=81=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/actions/file/PreferencePane.java | 78 ++++++++++++++----- .../data/datapane/TableDataTreePane.java | 9 ++- designer_base/src/com/fr/env/RemoteEnv.java | 60 ++++++++------ .../design/mainframe/WidgetPropertyPane.java | 6 -- 4 files changed, 101 insertions(+), 52 deletions(-) diff --git a/designer_base/src/com/fr/design/actions/file/PreferencePane.java b/designer_base/src/com/fr/design/actions/file/PreferencePane.java index 0ddb424c70..b03ba8f62a 100644 --- a/designer_base/src/com/fr/design/actions/file/PreferencePane.java +++ b/designer_base/src/com/fr/design/actions/file/PreferencePane.java @@ -2,6 +2,7 @@ package com.fr.design.actions.file; import com.fr.base.BaseUtils; import com.fr.design.DesignerEnvManager; +import com.fr.design.RestartHelper; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; @@ -28,9 +29,7 @@ import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.File; -import java.util.ArrayList; import java.util.Locale; -import java.util.Map; /** * 选项对话框 @@ -71,16 +70,18 @@ public class PreferencePane extends BasicPane { private static final String DISPLAY_EQUALS = "+"; private static final String MINUS = "MINUS"; private static final String DISPLAY_MINUS = "-"; - + private static final FRLevel[] LOG = {FRLevel.SEVERE, FRLevel.WARNING, FRLevel.INFO, FRLevel.DEBUG}; - private static java.util.List LANGUAGE = new ArrayList<>(); - static { - Map map = Inter.getSupportLocaleMap(); - LANGUAGE.add(Inter.getLocText("FR-Designer_Language_Default")); - for(Locale locale : map.keySet()){ - LANGUAGE.add(getLocaledLanguage(map.get(locale), locale)); - } + private static final String[] LANGUAGE = {Inter.getLocText("FR-Designer_Language_Default"), + getLocaledLanguage("Simplified_Chinese_Language", Locale.SIMPLIFIED_CHINESE), + getLocaledLanguage("English_Language", Locale.ENGLISH), + getLocaledLanguage("Japanese_Language", Locale.JAPAN), + getLocaledLanguage("Traditional_Chinese_Language", Locale.TRADITIONAL_CHINESE), + getLocaledLanguage("Korea_Language",Locale.KOREA), }; + private static int designerEnvLanguageIndex; // 打开设置对话框时,设计器使用的语言 + + private boolean languageChanged; // 是否修改了设计器语言设置 //设置是否支持undo private UICheckBox supportUndoCheckBox; @@ -151,7 +152,7 @@ public class PreferencePane extends BasicPane { JPanel oraclePane = FRGUIPaneFactory.createTitledBorderPane("Oracle" + Inter.getLocText("FR-Designer_Oracle_All_Tables")); oracleSpace = new UICheckBox(Inter.getLocText(message, sign)); oraclePane.add(oracleSpace); - + JPanel improvePane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Product_improve")); joinProductImprove = new UICheckBox(Inter.getLocText("FR-Designer_Join_Product_improve")); improvePane.add(joinProductImprove); @@ -161,12 +162,12 @@ public class PreferencePane extends BasicPane { spaceUpPane.add(improvePane, BorderLayout.SOUTH); advancePane.add(spaceUpPane); } - + private static String getLocaledLanguage(String key, Locale locale){ - StringBuilder sb = new StringBuilder(); - sb.append(Inter.getLocText(key)).append("("); - sb.append(Inter.getLocText(key, locale)).append(")"); - return sb.toString(); + StringBuilder sb = new StringBuilder(); + sb.append(Inter.getLocText(key)).append("("); + sb.append(Inter.getLocText(key, locale)).append(")"); + return sb.toString(); } private void createFunctionPane(JPanel generalPane) { @@ -358,7 +359,7 @@ public class PreferencePane extends BasicPane { JPanel LanguagePane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Choose_Language")); generalPane.add(languageAndDashBoard_pane); languageAndDashBoard_pane.add(LanguagePane); - languageComboBox = new UIComboBox(LANGUAGE.toArray()); + languageComboBox = new UIComboBox(LANGUAGE); languageComboBox.setFont(FRFont.getInstance("Dialog", Font.PLAIN, 12));//为了在中文系统中显示韩文 ActionLabel languageLabel = new ActionLabel(Inter.getLocText("FR-Designer_Designer_Language")); languageLabel.addActionListener(new ActionListener() { @@ -527,9 +528,10 @@ public class PreferencePane extends BasicPane { this.logExportDirectoryField.setText(designerEnvManager.getLogLocation()); - this.logLevelComboBox.setSelectedItem(FRLevel.getByLevel(designerEnvManager.getLogLevel())); + this.logLevelComboBox.setSelectedItem(FRLevel.getByLevel(designerEnvManager.getLogLevel())); - this.languageComboBox.setSelectedItem(LANGUAGE.get(designerEnvManager.getLanguage())); + this.languageComboBox.setSelectedItem(LANGUAGE[designerEnvManager.getLanguage()]); + designerEnvLanguageIndex = designerEnvManager.getLanguage(); this.pageLengthComboBox.setSelectedIndex(designerEnvManager.getPageLengthUnit()); this.reportLengthComboBox.setSelectedIndex(designerEnvManager.getReportLengthUnit()); @@ -616,12 +618,46 @@ public class PreferencePane extends BasicPane { private int getLanguageInt() { int l = 0; String lang = (String) this.languageComboBox.getSelectedItem(); - for (int i = 0; i < LANGUAGE.size(); i++) { - if (ComparatorUtils.equals(lang, LANGUAGE.get(i))) { + for (int i = 0; i < LANGUAGE.length; i++) { + if (ComparatorUtils.equals(lang, LANGUAGE[i])) { l = i; break; } } return l; } + + // 如果语言设置改变了,则显示重启对话框 + public void showRestartDialog() { + if (!languageChanged) { + return; + } + int rv = JOptionPane.showOptionDialog( + null, + Inter.getLocText("FR-Designer_Language_Change_Successful"), + Inter.getLocText("FR-Designer-Plugin_Warning"), + JOptionPane.YES_NO_OPTION, + JOptionPane.INFORMATION_MESSAGE, + null, + new String[]{Inter.getLocText("FR-Designer-Basic_Restart_Designer"), Inter.getLocText("FR-Designer-Basic_Restart_Designer_Later")}, + null + ); + if (rv == JOptionPane.OK_OPTION) { + RestartHelper.restart(); + } + } + + @Override + public BasicDialog showWindow(Window window) { + return showWindow(window, new DialogActionAdapter() { + @Override + public void doOk() { + if (languageComboBox.getSelectedIndex() != designerEnvLanguageIndex) { + languageChanged = true; + } else { + languageChanged = false; + } + } + }); + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java b/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java index 219093c6d9..5a893803c2 100644 --- a/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java +++ b/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java @@ -38,6 +38,7 @@ import java.awt.dnd.DnDConstants; import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -275,13 +276,15 @@ public class TableDataTreePane extends BasicTableDataTreePane { * @param srcName 数据集来源(比如报表块,就是报表块的名称) * @param tableDataSource 数据集 */ - public void addTableData(String srcName, TableDataSource tableDataSource) { + public Map addTableData(String srcName, TableDataSource tableDataSource) { + Map tdNameMap = new HashMap<>(); allDSNames = DesignTableDataManager.getAllDSNames(tc.getBook()); DesignTableDataManager.setThreadLocal(DesignTableDataManager.NO_PARAMETER); TableDataSource tds = tc.getBook(); Iterator tdIterator = tableDataSource.getTableDataNameIterator(); while (tdIterator.hasNext()) { String tdName = (String) tdIterator.next(); + String oldName = tdName; TableData td = tableDataSource.getTableData(tdName); if (tds.getTableData(tdName) != null || isDsNameRepeaded(tdName)) {//如果有同名的就拼上来源名称 tdName = srcName + tdName; @@ -292,8 +295,12 @@ public class TableDataTreePane extends BasicTableDataTreePane { tdName += i; } tds.putTableData(tdName, td); + if (!ComparatorUtils.equals(oldName, tdName)) { + tdNameMap.put(oldName, tdName); + } } tc.parameterChanged(); dataTree.refresh(); + return Collections.unmodifiableMap(tdNameMap); } } \ No newline at end of file diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index ce7118e69b..70c18fbd0d 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -2114,6 +2114,7 @@ public class RemoteEnv implements Env { StableUtils.mkdirs(target); File cacheDir = null; File zip = null; + OutputStream out = null; try { HashMap para = new HashMap(); para.put("op", "fr_remote_design"); @@ -2122,16 +2123,15 @@ public class RemoteEnv implements Env { para.put("currentUsername", this.getUser()); HttpClient client = createHttpMethod(para); - InputStream input = client.getResponseStream(); + InputStream input = client.getResponseStream();//拿到服务端传过来的整个共享文件夹的压缩文件的文件流 zip = new File(StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath()), "share.zip"); cacheDir = new File(StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath()), ShareConstants.DIR_SHARE_CACHE); StableUtils.deleteFile(cacheDir); StableUtils.mkdirs(cacheDir); StableUtils.makesureFileExist(zip); - FileOutputStream out = new FileOutputStream(zip); - IOUtils.copyBinaryTo(input, out); - out.flush(); - out.close(); + out = new FileOutputStream(zip); + IOUtils.copyBinaryTo(input, out);//放到本地缓存目录下 + IOUtils.unzip(zip, cacheDir.getAbsolutePath(), EncodeConstants.ENCODING_GBK);//先解压到临时目录 if (cacheDir.exists() && cacheDir.isDirectory()) { return cacheDir.listFiles(new FilenameFilter() { @@ -2144,6 +2144,10 @@ public class RemoteEnv implements Env { } catch (Exception e) { FRContext.getLogger().error(e.getMessage()); } finally { + if (out != null) { + out.flush(); + out.close(); + } StableUtils.deleteFile(zip); } return new File[0]; @@ -2151,25 +2155,33 @@ public class RemoteEnv implements Env { @Override public boolean installREUFile(File reuFile) { -// if (reuFile == null) { -// return false; -// } -// try { -// HashMap para = new HashMap(); -// para.put("op", "fr_remote_design"); -// para.put("cmd", "design_install_reufile"); -// para.put("current_uid", this.createUserID()); -// para.put("currentUsername", this.getUser()); -// para.put("reuFileName", reuFile.getName()); -// -// HttpClient client = createHttpMethod(para); -// client.setContent(IOUtils.inputStream2Bytes(new FileInputStream(reuFile))); -// InputStream input = execute4InputStream(client); -// return ComparatorUtils.equals(stream2String(input), "true"); -// } catch (Exception e) { -// return false; -// } - return false; + if (reuFile == null) { + return false; + } + File tempFile = new File(CacheManager.getProviderInstance().getCacheDirectory(), "temp_remote"); + IOUtils.unzip(reuFile, tempFile.getAbsolutePath()); + String shareXMLName = StableUtils.pathJoin(tempFile.getAbsolutePath(), ShareConstants.NAME_XML_MODULE); + String helpXMLName = StableUtils.pathJoin(tempFile.getAbsolutePath(), ShareConstants.NAME_XML_HELP); + try { + HashMap para = new HashMap(); + para.put("op", "fr_remote_design"); + para.put("cmd", "design_install_reufile"); + para.put("current_uid", this.createUserID()); + para.put("currentUsername", this.getUser()); + para.put("reuFileName", reuFile.getName()); + + HttpClient client = createHttpMethod(para); + client.setContent(IOUtils.inputStream2Bytes(new FileInputStream(new File(shareXMLName)))); + InputStream input = execute4InputStream(client); + client.release(); + para.put("isComplete", "true"); + HttpClient client1 = createHttpMethod(para); + client1.setContent(IOUtils.inputStream2Bytes(new FileInputStream(new File(helpXMLName)))); + InputStream input1 = execute4InputStream(client1); + return ComparatorUtils.equals(stream2String(input), "true") && ComparatorUtils.equals(stream2String(input1), "true"); + } catch (Exception e) { + return false; + } } @Override diff --git a/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java b/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java index cc7f1d7690..1834e48da0 100644 --- a/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java +++ b/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java @@ -10,18 +10,15 @@ import com.fr.design.designer.creator.XLayoutContainer; import com.fr.design.designer.creator.XWParameterLayout; import com.fr.design.designer.properties.EventPropertyTable; import com.fr.design.designer.properties.WidgetPropertyTable; -import com.fr.design.designer.treeview.ComponentTreeModel; import com.fr.design.fun.WidgetPropertyUIProvider; import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itable.AbstractPropertyTable; import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.parameter.ParameterPropertyPane; import com.fr.general.Inter; import com.fr.stable.ArrayUtils; - import javax.swing.*; import javax.swing.border.LineBorder; import java.awt.*; @@ -38,7 +35,6 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper private EventPropertyTable eventTable; private List widgetPropertyTables; private FormDesigner designer; - private ComponentTree componentTree; private JPanel wsp; private MobileWidgetTable mobileWidgetTable; private MobileBodyWidgetTable mobileBodyWidgetTable; @@ -122,8 +118,6 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper clearDockingView(); return; } - - componentTree = new ComponentTree(designer); widgetPropertyTables = new ArrayList(); propertyTable = new WidgetPropertyTable(designer); designer.addDesignerEditListener(new WidgetPropertyDesignerAdapter(propertyTable)); From d3e9ff80abce6e60143c05ce76f64cc24445c99a Mon Sep 17 00:00:00 2001 From: zhouping Date: Thu, 8 Dec 2016 16:59:39 +0800 Subject: [PATCH 116/139] =?UTF-8?q?REPORT-1092=20=E4=B8=A4=E4=B8=AA?= =?UTF-8?q?=E4=B8=80=E6=A0=B7=E7=9A=84=E8=A1=A8=E5=8D=95demo=EF=BC=8C?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E7=9A=84=E6=95=88=E6=9E=9C=E4=B8=8D=E4=B8=80?= =?UTF-8?q?=E6=A0=B7=20dev=E4=B8=8A=E6=B5=8B=E8=AF=95=E9=AA=8C=E6=94=B6?= =?UTF-8?q?=E8=BF=87=E4=BA=86=EF=BC=8C=E5=90=8C=E6=AD=A5=E5=88=B0master?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../layout/FRAbsoluteLayoutAdapter.java | 1 + .../designer/creator/XWAbsoluteLayout.java | 31 +++++++++++++++++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java index 3ab61eb38b..1765a8ef00 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java @@ -235,6 +235,7 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { } XWAbsoluteLayout layout = (XWAbsoluteLayout) container; layout.updateBoundsWidget(creator); + updateCreatorBackBound(); LayoutUtils.layoutRootContainer(container); }else{ fixAbsolute(creator, x, y); diff --git a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java index df28759393..06ae6fa785 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java @@ -96,7 +96,6 @@ public class XWAbsoluteLayout extends XLayoutContainer { if(screenValue != FormArea.DEFAULT_SLIDER){ this.setContainerPercent(screenValue / FormArea.DEFAULT_SLIDER); } - widget.setDesigningResolution(scrnsize); } /** @@ -208,7 +207,33 @@ public class XWAbsoluteLayout extends XLayoutContainer { } } } - + + /** + * 更新子组件的Bound + * 这边主要用于绝对布局子组件在适应区域选项时 + * 涉及到的不同分辨率下缩放 + * @param minHeight 最小高度 + */ + @Override + public void updateChildBound(int minHeight) { + double prevContainerPercent = FRScreen.getByDimension(toData().getDesigningResolution()).getValue() / FormArea.DEFAULT_SLIDER; + if (toData().getCompState() == 0 && prevContainerPercent != containerPercent) { + for (int i = 0; i < this.getComponentCount(); i++) { + XCreator creator = getXCreator(i); + Rectangle rec = new Rectangle(creator.getBounds()); + rec.x = (int)(rec.x / prevContainerPercent * containerPercent); + rec.y = (int)(rec.y / prevContainerPercent * containerPercent); + rec.height = (int)(rec.height / prevContainerPercent * containerPercent); + rec.width = (int)(rec.width / prevContainerPercent * containerPercent); + BoundsWidget wgt = toData().getBoundsWidget(creator.toData()); + wgt.setBounds(rec); + creator.setBounds(rec); + creator.updateChildBound(minHeight); + } + } + toData().setDesigningResolution(Toolkit.getDefaultToolkit().getScreenSize()); + } + /** * 增加对齐线 * @param connector 对齐线 @@ -418,7 +443,7 @@ public class XWAbsoluteLayout extends XLayoutContainer { ); g2d.setColor(Color.BLACK); //画编辑文字 - g2d.drawString(Inter.getLocText("Edit"), x + w / 2 - 2, y + h / 2 + 5); + g2d.drawString(Inter.getLocText("FR-Designer_Edit"), x + w / 2 - 2, y + h / 2 + 5); } } From 36b6bc4ea51ab6db8a83564dc9c5ef8a1a1661f0 Mon Sep 17 00:00:00 2001 From: neil Date: Thu, 8 Dec 2016 17:00:44 +0800 Subject: [PATCH 117/139] pmd --- .../design/mainframe/WidgetPropertyPane.java | 43 ++++++++++--------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java b/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java index 1834e48da0..3f4ec2f01e 100644 --- a/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java +++ b/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java @@ -111,7 +111,6 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper @Override public void refreshDockingView() { - designer = this.getEditingFormDesigner(); removeAll(); if (designer == null) { @@ -129,7 +128,6 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper eventTable.setBorder(null); UIScrollPane esp = new UIScrollPane(eventTable); esp.setBorder(null); - wsp = FRGUIPaneFactory.createBorderLayout_S_Pane(); wsp.setBorder(null); mobileWidgetTable = new MobileWidgetTable(designer); @@ -141,7 +139,6 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper centerPane.add(mobileBodyWidgetTable,BODY); if(hasSelectParaPane(designer)){ cardLayout.show(centerPane,PARA); - } else { cardLayout.show(centerPane,BODY); } @@ -150,19 +147,23 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper wsp.add(downPanel,BorderLayout.CENTER); UITabbedPane tabbedPane = new UITabbedPane(); - - tabbedPane.setOpaque(true); - tabbedPane.setBorder(null); - tabbedPane.setTabPlacement(SwingConstants.BOTTOM); - tabbedPane.addTab(Inter.getLocText("Form-Properties"), psp); - tabbedPane.addTab(Inter.getLocText("Form-Events"), esp); - tabbedPane.addTab(Inter.getLocText("FR-Widget_Mobile_Terminal"), wsp); - + initTabPane(psp, esp, tabbedPane); WidgetPropertyUIProvider[] widgetAttrProviders = getExtraPropertyUIProviders(); + addWidgetAttr(widgetAttrProviders); + add(tabbedPane, BorderLayout.CENTER); + propertyTable.initPropertyGroups(null); + eventTable.refresh(); + for (AbstractPropertyTable propertyTable : widgetPropertyTables) { + propertyTable.initPropertyGroups(designer); + } + isrefresh = false; + } + + private void addWidgetAttr(WidgetPropertyUIProvider[] widgetAttrProviders) { if (widgetAttrProviders.length == 0) { - UILabel upLabel = new UILabel(Inter.getLocText("FR-Widget_Mobile_Table"),SwingConstants.CENTER); + UILabel upLabel = new UILabel(Inter.getLocText("FR-Widget_Mobile_Table"), SwingConstants.CENTER); upLabel.setBorder(BorderFactory.createEmptyBorder(6,0,6,0)); - wsp.add(upLabel,BorderLayout.NORTH); + wsp.add(upLabel, BorderLayout.NORTH); } else { for (WidgetPropertyUIProvider widgetAttrProvider : widgetAttrProviders) { AbstractPropertyTable propertyTable = widgetAttrProvider.createWidgetAttrTable(); @@ -174,13 +175,15 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper } } - add(tabbedPane, BorderLayout.CENTER); - propertyTable.initPropertyGroups(null); - eventTable.refresh(); - for (AbstractPropertyTable propertyTable : widgetPropertyTables) { - propertyTable.initPropertyGroups(designer); - } - isrefresh = false; + } + + private void initTabPane(UIScrollPane psp, UIScrollPane esp, UITabbedPane tabbedPane) { + tabbedPane.setOpaque(true); + tabbedPane.setBorder(null); + tabbedPane.setTabPlacement(SwingConstants.BOTTOM); + tabbedPane.addTab(Inter.getLocText("Form-Properties"), psp); + tabbedPane.addTab(Inter.getLocText("Form-Events"), esp); + tabbedPane.addTab(Inter.getLocText("FR-Widget_Mobile_Terminal"), wsp); } // From 4b9f8760b2af7ca98aaec50ba9f1d1e726ed20dd Mon Sep 17 00:00:00 2001 From: neil Date: Thu, 8 Dec 2016 17:06:28 +0800 Subject: [PATCH 118/139] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=EF=BC=8C=20=E5=9B=BD=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/locale/designer.properties | 2 ++ .../src/com/fr/design/locale/designer_en_US.properties | 2 ++ .../src/com/fr/design/locale/designer_ja_JP.properties | 3 +++ .../src/com/fr/design/locale/designer_ko_KR.properties | 2 ++ .../src/com/fr/design/locale/designer_zh_CN.properties | 2 ++ .../src/com/fr/design/locale/designer_zh_TW.properties | 2 ++ .../src/com/fr/design/mainframe/WidgetPropertyPane.java | 4 ++-- 7 files changed, 15 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index 34e998867c..d78df6b413 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -481,3 +481,5 @@ FR-Designer_Data_Analysis_Settings=Data Analysis Settings FR-Designer_Browser_Background=Browser Background FR-Designer_Import_Css=Import Css FR-Designer_Import_JavaScript=Import JavaScript +FR-Designer_Event= +FR-Designer_Properties= diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties index 91b97a86c1..57b8a16441 100644 --- a/designer_base/src/com/fr/design/locale/designer_en_US.properties +++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties @@ -480,3 +480,5 @@ FR-Designer_Data_Analysis_Settings=Data Analysis Settings FR-Designer_Browser_Background=Browser Background FR-Designer_Import_Css=Reference Css FR-Designer_Import_JavaScript=Reference JavaScript +FR-Designer_Event=Event +FR-Designer_Properties=Properties diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index e4e36a2958..40dcc1f016 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -458,3 +458,6 @@ FR-Designer_Data_Analysis_Settings=\u30C7\u30FC\u30BF\u5206\u6790\u8A2D\u5B9A FR-Designer_Browser_Background=\u30D6\u30E9\u30A6\u30B6\u80CC\u666F FR-Designer_Import_Css=Css\u5F15\u7528 FR-Designer_Import_JavaScript=JavaScript\u5F15\u7528 +FR-Designer_Event=\ +FR-Designer_Properties=FR-Designer_Properties=\ +\ \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties index 8877b8a9fe..6e680ad60f 100644 --- a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties +++ b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties @@ -454,3 +454,5 @@ FR-Designer_Data_Analysis_Settings=\uB370\uC774\uD130\uBD84\uC11D\uC124\uC815 FR-Designer_Browser_Background=\uC6F9\uBE0C\uB77C\uC6B0\uC800\uBC30\uACBD FR-Designer_Import_Css=Css\uC778\uC6A9 FR-Designer_Import_JavaScript=JavaScript\uC778\uC6A9 +FR-Designer_Event=\ +FR-Designer_Properties=\ diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties index a849a9b480..3ac051a5e7 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties @@ -484,3 +484,5 @@ FR-Designer_Data_Analysis_Settings=\u6570\u636E\u5206\u6790\u8BBE\u7F6E FR-Designer_Browser_Background=\u6D4F\u89C8\u5668\u80CC\u666F FR-Designer_Import_Css=\u5F15\u7528Css FR-Designer_Import_JavaScript=\u5F15\u7528JavaScript +FR-Designer_Event=\u4E8B\u4EF6 +FR-Designer_Properties=\u5C5E\u6027 diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index 2e05b1790b..dc9f4a07b1 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -472,3 +472,5 @@ FR-Designer_Data_Analysis_Settings=\u8CC7\u6599\u5206\u6790\u8A2D\u5B9A FR-Designer_Browser_Background=\u700F\u89BD\u5668\u80CC\u666F FR-Designer_Import_Css=\u5F15\u7528Css FR-Designer_Import_JavaScript=\u5F15\u7528JavaScript +FR-Designer_Properties=\u5C6C\u6027 +FR-Designer_Event=\u4E8B\u4EF6 diff --git a/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java b/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java index 3f4ec2f01e..a5ec304718 100644 --- a/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java +++ b/designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java @@ -181,8 +181,8 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetProper tabbedPane.setOpaque(true); tabbedPane.setBorder(null); tabbedPane.setTabPlacement(SwingConstants.BOTTOM); - tabbedPane.addTab(Inter.getLocText("Form-Properties"), psp); - tabbedPane.addTab(Inter.getLocText("Form-Events"), esp); + tabbedPane.addTab(Inter.getLocText("FR-Designer_Properties"), psp); + tabbedPane.addTab(Inter.getLocText("FR-Designer_Event"), esp); tabbedPane.addTab(Inter.getLocText("FR-Widget_Mobile_Terminal"), wsp); } From c371f4ca32f9b0af79d213b00d931baaf4821f00 Mon Sep 17 00:00:00 2001 From: zhouping Date: Thu, 8 Dec 2016 17:19:03 +0800 Subject: [PATCH 119/139] =?UTF-8?q?REPORT-1092=20=E4=B8=A4=E4=B8=AA?= =?UTF-8?q?=E4=B8=80=E6=A0=B7=E7=9A=84=E8=A1=A8=E5=8D=95demo=EF=BC=8C?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E7=9A=84=E6=95=88=E6=9E=9C=E4=B8=8D=E4=B8=80?= =?UTF-8?q?=E6=A0=B7=20pmd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../layout/FRAbsoluteLayoutAdapter.java | 70 ++++++++++--------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java index 1765a8ef00..6e68cc2d71 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java @@ -67,38 +67,7 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { XLayoutContainer topLayout = XCreatorUtils.getHotspotContainer((XCreator)comp).getTopLayout(); if(topLayout != null){ if (topLayout.isEditable()){ - //判断有没有和当前控件重叠 - //先计算当前控件的位置 - int creatorX, creatorY; - if (XCreatorUtils.getParentXLayoutContainer(creator) != null) { - - Rectangle creatorRectangle = ComponentUtils.getRelativeBounds(creator); - creatorX = creatorRectangle.x; - creatorY = creatorRectangle.y; - } else { - int w = creator.getWidth() / 2; - int h = creator.getHeight() / 2; - creatorX = x - w; - creatorY = y - h; - } - //再判断和布局中其他控件重叠 - Rectangle curRec = new Rectangle(creatorX, creatorY, creator.getWidth(), creator.getHeight()); - WAbsoluteLayout wAbsoluteLayout = (WAbsoluteLayout)topLayout.toData(); - for (int i = 0, count = wAbsoluteLayout.getWidgetCount(); i < count; i++) { - WAbsoluteLayout.BoundsWidget temp = (WAbsoluteLayout.BoundsWidget) wAbsoluteLayout.getWidget(i); - Rectangle rectangle = temp.getBounds(); - if (curRec.intersects(rectangle)){ - return false; - } - } - if (creatorX < 0 - || creatorX + creator.getWidth() > container.getWidth() - || creatorY < 0 - || creatorY + creator.getHeight() > container.getHeight()) { - return false; - } - return x >= 0 && y >= 0 && creator.getHeight() <= container.getHeight() - && creator.getWidth() <= container.getWidth(); + return topLayoutAccept(creator, x, y, topLayout); } //绝对布局嵌套,处于内层,不可编辑,不添加,topLayout只能获取到最外层可编辑的布局 else if (((XLayoutContainer)topLayout.getParent()).acceptType(XWAbsoluteLayout.class)) { @@ -115,6 +84,42 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { return false; } + //toplayout假如可以编辑的话就往里面添加组件 + private boolean topLayoutAccept(XCreator creator, int x, int y, XLayoutContainer topLayout) { + //判断有没有和当前控件重叠 + //先计算当前控件的位置 + int creatorX, creatorY; + if (XCreatorUtils.getParentXLayoutContainer(creator) != null) { + + Rectangle creatorRectangle = ComponentUtils.getRelativeBounds(creator); + creatorX = creatorRectangle.x; + creatorY = creatorRectangle.y; + } else { + int w = creator.getWidth() / 2; + int h = creator.getHeight() / 2; + creatorX = x - w; + creatorY = y - h; + } + //再判断和布局中其他控件重叠 + Rectangle curRec = new Rectangle(creatorX, creatorY, creator.getWidth(), creator.getHeight()); + WAbsoluteLayout wAbsoluteLayout = (WAbsoluteLayout)topLayout.toData(); + for (int i = 0, count = wAbsoluteLayout.getWidgetCount(); i < count; i++) { + WAbsoluteLayout.BoundsWidget temp = (WAbsoluteLayout.BoundsWidget) wAbsoluteLayout.getWidget(i); + Rectangle rectangle = temp.getBounds(); + if (curRec.intersects(rectangle)){ + return false; + } + } + if (creatorX < 0 || creatorX + creator.getWidth() > container.getWidth()) { + return false; + } + if (creatorY < 0 || creatorY + creator.getHeight() > container.getHeight()){ + return false; + } + return x >= 0 && y >= 0 && creator.getHeight() <= container.getHeight() + && creator.getWidth() <= container.getWidth(); + } + /** * 判断是否鼠标在组件的三等分区域,如果组件在布局管理器中间,上下左右都可能会三等分 * @param parentComp 鼠标所在区域的组件 @@ -156,6 +161,7 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter { return !ComparatorUtils.equals(trisectAreaDirect, 0); } + //当前绝对布局不可编辑,就当成一个控件,组件添加在周围 private boolean acceptWidget(XCreator creator, int x, int y){ isFindRelatedComps = false; //拖入组件判断时,先判断是否为交叉点区域,其次三等分区域,再次平分区域 From 68a3ecdfa9d9633e2c66fe6d1ff96f6d3e82e341 Mon Sep 17 00:00:00 2001 From: neil Date: Thu, 8 Dec 2016 17:36:15 +0800 Subject: [PATCH 120/139] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=EF=BC=8C=20build=20failed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/extra/WebManagerPaneFactory.java | 99 ------------------- 1 file changed, 99 deletions(-) delete mode 100644 designer_base/src/com/fr/design/extra/WebManagerPaneFactory.java diff --git a/designer_base/src/com/fr/design/extra/WebManagerPaneFactory.java b/designer_base/src/com/fr/design/extra/WebManagerPaneFactory.java deleted file mode 100644 index faf67d1778..0000000000 --- a/designer_base/src/com/fr/design/extra/WebManagerPaneFactory.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.fr.design.extra; - -import com.fr.design.dialog.BasicPane; -import com.fr.design.gui.frpane.UITabbedPane; -import com.fr.general.Inter; -import com.fr.stable.StableUtils; -import javafx.embed.swing.JFXPanel; - -import java.awt.*; -import java.io.File; -import java.net.URL; - -/** - * Created by vito on 2016/9/28. - */ -public class WebManagerPaneFactory { - private String installHome; - - public WebManagerPaneFactory() { - if (StableUtils.isDebug()) { - URL url = ClassLoader.getSystemResource(""); - this.installHome = url.getPath(); - } else { - this.installHome = StableUtils.getInstallHome(); - } - } - - public BasicPane createPluginPane() { - if (StableUtils.getMajorJavaVersion() == 8) { - return new ShopManagerPane(new ShopPaneConfig() { - @Override - String setMainJS() { - String relativePath = "/scripts/store/web/index.html"; - return StableUtils.pathJoin(new File(installHome).getAbsolutePath(), relativePath); - } - - @Override - String setScriptsId() { - return "shop_scripts"; - } - - @Override - JFXPanel setWebPane() { - return new PluginWebPane(setMainJS()); - } - - }); - } else { - BasicPane traditionalStorePane = new BasicPane() { - @Override - protected String title4PopupWindow() { - return Inter.getLocText("FR-Designer-Plugin_Manager"); - } - }; - traditionalStorePane.setLayout(new BorderLayout()); - traditionalStorePane.add(initTraditionalStore(), BorderLayout.CENTER); - return traditionalStorePane; - } - } - - public BasicPane createReusePane() { - return new ShopManagerPane(new ShopPaneConfig() { - @Override - String setMainJS() { - String relativePath = "/scripts/store/reuse/index.html"; - return StableUtils.pathJoin(new File(installHome).getAbsolutePath(), relativePath); - } - - @Override - String setScriptsId() { - return "reuse_scripts"; - } - - @Override - JFXPanel setWebPane() { - return new ReuseWebPane(setMainJS()); - } - }); - } - - /** - * 以关键词打开设计器商店 - * - * @param keyword 关键词 - */ - public BasicPane createPluginPane(String keyword) { - PluginWebBridge.getHelper().openWithSearch(keyword); - return createPluginPane(); - } - - private Component initTraditionalStore() { - UITabbedPane tabbedPane = new UITabbedPane(); - PluginInstalledPane installedPane = new PluginInstalledPane(); - tabbedPane.addTab(installedPane.tabTitle(), installedPane); - tabbedPane.addTab(Inter.getLocText("FR-Designer-Plugin_Update"), new PluginUpdatePane(tabbedPane)); - tabbedPane.addTab(Inter.getLocText("FR-Designer-Plugin_All_Plugins"), new PluginFromStorePane(tabbedPane)); - return tabbedPane; - } -} From 2c96734c35c3ec6174a7f4e959e59a40997c1a82 Mon Sep 17 00:00:00 2001 From: neil Date: Thu, 8 Dec 2016 17:36:29 +0800 Subject: [PATCH 121/139] 1 --- designer_base/src/com/fr/design/extra/UserLoginContext.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/extra/UserLoginContext.java b/designer_base/src/com/fr/design/extra/UserLoginContext.java index a6d68f076a..354a9177f7 100644 --- a/designer_base/src/com/fr/design/extra/UserLoginContext.java +++ b/designer_base/src/com/fr/design/extra/UserLoginContext.java @@ -3,7 +3,7 @@ package com.fr.design.extra; import java.util.ArrayList; /** - * Created by lp on 2016/8/16. + * Created by lp on 2016/8/16. */ public class UserLoginContext { private static ArrayList fireLoginContextListener = new ArrayList(); From 0dec03fb65bc33ed215cace4fe2020b458990eff Mon Sep 17 00:00:00 2001 From: sunmondong Date: Fri, 9 Dec 2016 10:31:27 +0800 Subject: [PATCH 122/139] =?UTF-8?q?=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_form/build.master.gradle | 10 ++++ designer_form/build.master.gradle.bak | 83 +++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 designer_form/build.master.gradle.bak diff --git a/designer_form/build.master.gradle b/designer_form/build.master.gradle index 9c9764727c..c9caf34e73 100644 --- a/designer_form/build.master.gradle +++ b/designer_form/build.master.gradle @@ -47,6 +47,16 @@ def dataContent ={def dir -> } } } +FileTree f1=fileTree(dir:'../../',include:"finereport-*-stable/${branchName}/build/libs/*.jar"); +f1.each{File file-> + println "----------${file.path}" +} + +FileTree f2=fileTree(dir:"../../../finereport-lib-stable/${branchName}",include:'**/*.jar') +f2.each{File file-> + println "----------${file.path}" +} + //将非.java文件复制到classes文件夹下 参与打包 task copyFile(type:Copy,dependsOn:compileJava){ diff --git a/designer_form/build.master.gradle.bak b/designer_form/build.master.gradle.bak new file mode 100644 index 0000000000..9c9764727c --- /dev/null +++ b/designer_form/build.master.gradle.bak @@ -0,0 +1,83 @@ + +apply plugin: 'java' +tasks.withType(JavaCompile){ + options.encoding = 'UTF-8' +} +//指定构建的jdk版本 +sourceCompatibility=1.7 +//指定生成的jar包版本 +version='8.0' + +def srcDir="." + + +//指明生成jar包的名字 +jar{ + baseName='fr-designer-report' +} +//源码所在位置 +sourceSets{ + main{ + java{ + srcDirs=["${srcDir}/src", +"${srcDir}/../designer/src"] + } + } +} + +//获取什么分支名 +FileTree files =fileTree(dir:'./',include:'build.*.gradle') +def buildDir=files[0].path.substring(0,files[0].path.lastIndexOf ('\\')) +buildDir=buildDir.substring(0,buildDir.lastIndexOf ('\\')) +def branchName=buildDir.substring(buildDir.lastIndexOf ('\\')+1) + +//声明外部依赖 +dependencies{ +compile fileTree(dir:"../../../finereport-lib-stable/${branchName}",include:'**/*.jar') +compile fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/**/build/libs/*.jar") + + testCompile 'junit:junit:4.12' +} + +//指明无法编译文件所在路径 +def dataContent ={def dir -> + copySpec{ + from ("${dir}"){ + exclude '**/.setting/**','.classpath','.project','**/*.java','**/*.db','**/*.g','**/package.html' + } + } +} + +//将非.java文件复制到classes文件夹下 参与打包 +task copyFile(type:Copy,dependsOn:compileJava){ + copy{ + with dataContent.call("${srcDir}/src") + with dataContent.call("${srcDir}/../designer/src") + into ('build/classes/main') + } + +} + + +//压缩项目中的js文件 +task compressJS{ + ant.taskdef(name:'yuicompress',classname:'com.yahoo.platform.yui.compressor.YUICompressTask'){ + classpath { + fileset(dir:'../../../finereport-lib4build-stable',includes:'**/*.jar') + } + } + ant.yuicompress(linebreak:"500",warn:"false", munge:"yes",preserveallsemicolons:"false", charset:"utf-8",encoding:"utf-8",outputfolder:'build/classes/main'){ + fileset (dir:"${srcDir}/src"){ + include (name:'**/*.js') + include (name:'**/*.css') + + } + fileset (dir:"${srcDir}/../designer/src"){ + include (name:'**/*.js') + include (name:'**/*.css') + } + + } +} +jar.dependsOn compressJS + From 7dc4888d115260ead761c9b79aada2f511bb0a43 Mon Sep 17 00:00:00 2001 From: sunmondong Date: Fri, 9 Dec 2016 10:33:38 +0800 Subject: [PATCH 123/139] =?UTF-8?q?=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_form/build.master.gradle | 2 +- designer_form/build.master.gradle.bak | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/designer_form/build.master.gradle b/designer_form/build.master.gradle index c9caf34e73..b0c13ebb2a 100644 --- a/designer_form/build.master.gradle +++ b/designer_form/build.master.gradle @@ -47,7 +47,7 @@ def dataContent ={def dir -> } } } -FileTree f1=fileTree(dir:'../../',include:"finereport-*-stable/${branchName}/build/libs/*.jar"); +FileTree f1=fileTree(dir:'../../../include:"finereport-*-stable/${branchName}/build/libs/*.jar"); f1.each{File file-> println "----------${file.path}" } diff --git a/designer_form/build.master.gradle.bak b/designer_form/build.master.gradle.bak index 9c9764727c..c9caf34e73 100644 --- a/designer_form/build.master.gradle.bak +++ b/designer_form/build.master.gradle.bak @@ -47,6 +47,16 @@ def dataContent ={def dir -> } } } +FileTree f1=fileTree(dir:'../../',include:"finereport-*-stable/${branchName}/build/libs/*.jar"); +f1.each{File file-> + println "----------${file.path}" +} + +FileTree f2=fileTree(dir:"../../../finereport-lib-stable/${branchName}",include:'**/*.jar') +f2.each{File file-> + println "----------${file.path}" +} + //将非.java文件复制到classes文件夹下 参与打包 task copyFile(type:Copy,dependsOn:compileJava){ From 9a5fdfcfb663d7ccae5dc2b534d5e5a1120b2810 Mon Sep 17 00:00:00 2001 From: sunmondong Date: Fri, 9 Dec 2016 10:37:47 +0800 Subject: [PATCH 124/139] =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_form/build.master.gradle | 2 +- designer_form/build.master.gradle.bak | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/designer_form/build.master.gradle b/designer_form/build.master.gradle index b0c13ebb2a..b6fdde5069 100644 --- a/designer_form/build.master.gradle +++ b/designer_form/build.master.gradle @@ -47,7 +47,7 @@ def dataContent ={def dir -> } } } -FileTree f1=fileTree(dir:'../../../include:"finereport-*-stable/${branchName}/build/libs/*.jar"); +FileTree f1=fileTree(dir:'../../../'include:"finereport-*-stable/${branchName}/build/libs/*.jar") f1.each{File file-> println "----------${file.path}" } diff --git a/designer_form/build.master.gradle.bak b/designer_form/build.master.gradle.bak index c9caf34e73..35200d8cb9 100644 --- a/designer_form/build.master.gradle.bak +++ b/designer_form/build.master.gradle.bak @@ -47,7 +47,7 @@ def dataContent ={def dir -> } } } -FileTree f1=fileTree(dir:'../../',include:"finereport-*-stable/${branchName}/build/libs/*.jar"); +FileTree f1=fileTree(dir:'../../../include:"finereport-*-stable/${branchName}/build/libs/*.jar") f1.each{File file-> println "----------${file.path}" } From b0791ddf8303060cfb220ff44b80747805c4cb44 Mon Sep 17 00:00:00 2001 From: sunmondong Date: Fri, 9 Dec 2016 10:39:28 +0800 Subject: [PATCH 125/139] test --- designer_form/build.master.gradle | 2 +- designer_form/build.master.gradle.bak | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/designer_form/build.master.gradle b/designer_form/build.master.gradle index b6fdde5069..324f408bfd 100644 --- a/designer_form/build.master.gradle +++ b/designer_form/build.master.gradle @@ -47,7 +47,7 @@ def dataContent ={def dir -> } } } -FileTree f1=fileTree(dir:'../../../'include:"finereport-*-stable/${branchName}/build/libs/*.jar") +FileTree f1=fileTree(dir:'../../../',include:"finereport-*-stable/${branchName}/build/libs/*.jar") f1.each{File file-> println "----------${file.path}" } diff --git a/designer_form/build.master.gradle.bak b/designer_form/build.master.gradle.bak index 35200d8cb9..b6fdde5069 100644 --- a/designer_form/build.master.gradle.bak +++ b/designer_form/build.master.gradle.bak @@ -47,7 +47,7 @@ def dataContent ={def dir -> } } } -FileTree f1=fileTree(dir:'../../../include:"finereport-*-stable/${branchName}/build/libs/*.jar") +FileTree f1=fileTree(dir:'../../../'include:"finereport-*-stable/${branchName}/build/libs/*.jar") f1.each{File file-> println "----------${file.path}" } From 9d239159e90b131b4a6a50888ff4ad6569730a03 Mon Sep 17 00:00:00 2001 From: PanLi320 <854954082@qq.com> Date: Fri, 9 Dec 2016 15:37:26 +0800 Subject: [PATCH 126/139] =?UTF-8?q?REPORT-1147=20=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 最初是为了解决,插件更新和安装下会出现plugin的数组读取两遍的问题,所以在哪个地方加个强制的判断,当时的解决方案是可为两个,还有一个是在脚本 中加入sort处理。后来vito那边找到出现问题的核心点,在于pane部分加载两次,导致脚本数组加载两次,那这边的就去掉这边的判断,因为会导致脚 本更新问题。 --- designer_base/src/com/fr/design/extra/PluginHelper.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index ecaa34ea00..30f5e2a530 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -48,9 +48,11 @@ public class PluginHelper { * @param p 下载百分比处理 */ public static void downloadPluginFile(String id, String username, String password, Process p) throws Exception { + /* if (!PluginHelper.invalidUser(id, username, password)) { return; } + */ HttpClient httpClient = new HttpClient(getDownloadPath(id, username, password)); if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { int totalSize = httpClient.getContentLength(); @@ -353,4 +355,4 @@ public class PluginHelper { } private static final int TIME_OUT = 5000; -} \ No newline at end of file +} From 38a3b913430d64358c9e55e5cded3132debaee5c Mon Sep 17 00:00:00 2001 From: PanLi320 <854954082@qq.com> Date: Mon, 12 Dec 2016 09:25:52 +0800 Subject: [PATCH 127/139] 1 1 --- designer_base/src/com/fr/design/extra/PluginHelper.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 30f5e2a530..02f3680328 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -48,11 +48,6 @@ public class PluginHelper { * @param p 下载百分比处理 */ public static void downloadPluginFile(String id, String username, String password, Process p) throws Exception { - /* - if (!PluginHelper.invalidUser(id, username, password)) { - return; - } - */ HttpClient httpClient = new HttpClient(getDownloadPath(id, username, password)); if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { int totalSize = httpClient.getContentLength(); From 29043be8eeb61b4f2785cecc4a5070ad84746042 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Mon, 12 Dec 2016 10:22:16 +0800 Subject: [PATCH 128/139] rt --- .../src/com/fr/design/locale/designer.properties | 8 +++++--- .../src/com/fr/design/locale/designer_en_US.properties | 8 +++++--- .../src/com/fr/design/locale/designer_ja_JP.properties | 8 +++++--- .../src/com/fr/design/locale/designer_ko_KR.properties | 7 +++++-- .../src/com/fr/design/locale/designer_zh_CN.properties | 8 +++++--- .../src/com/fr/design/locale/designer_zh_TW.properties | 8 +++++--- 6 files changed, 30 insertions(+), 17 deletions(-) diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index d78df6b413..a8417919ac 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -357,7 +357,6 @@ FR-Designer_KeyPoint=KeyPoint FR-Designer_loadedTreeModel=loadedTreeModel FR-Designer-Failed_to_load_the_plugin=Failed to load the plugin\uFF0Cplease update the plugin\: FR-Designer-Plugin_Please_Update_Jar= -FR-Designer-Invalid_Page_Number=Invalid Page Number FR-Designer_XMLA_Database=Database FR-Designer_XMLA_UserName=User name FR-Designer_XMLA_Password=Password @@ -481,5 +480,8 @@ FR-Designer_Data_Analysis_Settings=Data Analysis Settings FR-Designer_Browser_Background=Browser Background FR-Designer_Import_Css=Import Css FR-Designer_Import_JavaScript=Import JavaScript -FR-Designer_Event= -FR-Designer_Properties= +FR-Designer-Datasource-Param_DES= you can type "${abc}" as a parameter, here, abc is a parameter name.
 for example\: select * from table where id\=${abc}.
 select * from table where id\='${abc}'.(if the field id is typeof string) +FR-Designer-DS-Database_Query= +FR-Designer_Is_Share_DBTableData= +FR-Designer-LayerPageReport_PageQuery= +FR-Designer-LayerPageReport_Define_PageQuerySQL= diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties index 57b8a16441..6f2a2ca2b4 100644 --- a/designer_base/src/com/fr/design/locale/designer_en_US.properties +++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties @@ -358,7 +358,6 @@ FR-Designer_KeyPoint=KeyPoint FR-Designer_loadedTreeModel=loadedTreeModel FR-Designer-Failed_to_load_the_plugin=Failed to load the plugin\uFF0Cplease update the plugin\: FR-Designer-Plugin_Please_Update_Jar=Please Update Jar -FR-Designer-Invalid_Page_Number=Invalid Page Number FR-Designer_XMLA_Database=DB FR-Designer_XMLA_UserName=User name FR-Designer_XMLA_Password=Password @@ -480,5 +479,8 @@ FR-Designer_Data_Analysis_Settings=Data Analysis Settings FR-Designer_Browser_Background=Browser Background FR-Designer_Import_Css=Reference Css FR-Designer_Import_JavaScript=Reference JavaScript -FR-Designer_Event=Event -FR-Designer_Properties=Properties +FR-Designer-LayerPageReport_PageQuery=Page Break query +FR-Designer-LayerPageReport_Define_PageQuerySQL=Define sql for page break query +FR-Designer-Datasource-Param_DES= You can type "${abc}" as a parameter, here, abc is a parameter name.
 for example\: select * from table where id\=${abc}.
 select * from table where id\='${abc}'.(if the type of id is string) +FR-Designer-DS-Database_Query=DB Query +FR-Designer_Is_Share_DBTableData=Shared data set diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index 40dcc1f016..f76e06d558 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -458,6 +458,8 @@ FR-Designer_Data_Analysis_Settings=\u30C7\u30FC\u30BF\u5206\u6790\u8A2D\u5B9A FR-Designer_Browser_Background=\u30D6\u30E9\u30A6\u30B6\u80CC\u666F FR-Designer_Import_Css=Css\u5F15\u7528 FR-Designer_Import_JavaScript=JavaScript\u5F15\u7528 -FR-Designer_Event=\ -FR-Designer_Properties=FR-Designer_Properties=\ -\ \ No newline at end of file +FR-Designer-Datasource-Param_DES=  "${abc}"\u3092\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3068\u3057\u3066\u5165\u529B\u3067\u304D\u307E\u3059\u3002\u3053\u3053\u3067abc\u306F\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3002abc\u306F\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u306E\u540D\u524D\u3067\u3059\u3002\u4F8B\u3048\u3070
 select * from table where id\=${abc}\u3002
 select * from table where id\='${abc}'\u3002(\u3082\u3057id\u306F\u6587\u5B57\u5217\u306A\u3089)\uFFFD +FR-Designer-DS-Database_Query=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30AF\u30A8\u30EA\u30FC +FR-Designer-LayerPageReport_PageQuery=\u30DA\u30FC\u30B8\u5225\u30AF\u30A8\u30EA +FR-Designer-LayerPageReport_Define_PageQuerySQL=\u5B9A\u7FA9\u30DA\u30FC\u30B8\u5225\u30AF\u30A8\u30EAsql +FR-Designer_Is_Share_DBTableData=\u5171\u6709\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 diff --git a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties index 6e680ad60f..fb39f20ce2 100644 --- a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties +++ b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties @@ -454,5 +454,8 @@ FR-Designer_Data_Analysis_Settings=\uB370\uC774\uD130\uBD84\uC11D\uC124\uC815 FR-Designer_Browser_Background=\uC6F9\uBE0C\uB77C\uC6B0\uC800\uBC30\uACBD FR-Designer_Import_Css=Css\uC778\uC6A9 FR-Designer_Import_JavaScript=JavaScript\uC778\uC6A9 -FR-Designer_Event=\ -FR-Designer_Properties=\ +FR-Designer-Datasource-Param_DES= , "${abc}"\uB97C\uB9E4\uAC1C\uBCC0\uC218\uB85C\uC785\uB825\uD560\uC218\uC788\uC73C\uBA70,abc\uB294\uB9E4\uAC1C\uBCC0\uC218\uC758\uBA85\uCE6D\uC785\uB2C8\uB2E4. \uC608\uFF1A
 select * from table where id\='${abc}'. (id\uD544\uB4DC\uAC00\uBB38\uC790\uC5F4\uC720\uD615\uC77C\uACBD\uC6B0) +FR-Designer-DS-Database_Query=\uB370\uC774\uD130\uBCA0\uC774\uC2A4\uCC3E\uC544\uBCF4\uAE30 +FR-Designer_Is_Share_DBTableData=\uB370\uC774\uD130\uC138\uD2B8\uACF5\uC720 +FR-Designer-LayerPageReport_PageQuery=\uD398\uC774\uC9C0\uB098\uB204\uAE30\uCC3E\uC544\uBCF4\uAE30 +FR-Designer-LayerPageReport_Define_PageQuerySQL=\uC815\uC758\uD398\uC774\uC9C0\uB098\uB204\uAE30\uCC3E\uC544\uBCF4\uAE30sql diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties index 3ac051a5e7..4a0cdfed65 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties @@ -358,7 +358,6 @@ FR-Designer_KeyPoint=\u5173\u952E\u8282\u70B9 FR-Designer_loadedTreeModel=\u52A0\u8F7D\u5931\u8D25,\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5 FR-Designer-Failed_to_load_the_plugin=\u65E0\u6CD5\u52A0\u8F7D\u63D2\u4EF6\uFF0C\u8BF7\u66F4\u65B0\u63D2\u4EF6\uFF1A FR-Designer-Plugin_Please_Update_Jar=\u8BF7\u66F4\u65B0Jar\u5305, \u63D2\u4EF6\u9700\u6C42\u6700\u4F4E\u7248\u672C -FR-Designer-Invalid_Page_Number=\u65E0\u6548\u9875\u7801 FR-Designer_Get-CubeGetting=\u83B7\u53D6cube FR-Designer_XMLA_Database=\u6570\u636E\u5E93 FR-Designer_XMLA_UserName=\u7528\u6237\u540D @@ -484,5 +483,8 @@ FR-Designer_Data_Analysis_Settings=\u6570\u636E\u5206\u6790\u8BBE\u7F6E FR-Designer_Browser_Background=\u6D4F\u89C8\u5668\u80CC\u666F FR-Designer_Import_Css=\u5F15\u7528Css FR-Designer_Import_JavaScript=\u5F15\u7528JavaScript -FR-Designer_Event=\u4E8B\u4EF6 -FR-Designer_Properties=\u5C5E\u6027 +FR-Designer-Datasource-Param_DES= \u60A8\u53EF\u4EE5\u952E\u5165"${abc}"\u505A\u4E3A\u4E00\u4E2A\u53C2\u6570\uFF0C\u8FD9\u91CCabc\u662F\u53C2\u6570\u7684\u540D\u79F0\u3002\u4F8B\u5982\uFF1A
 select * from table where id\=${abc}\u3002
 select * from table where id\='${abc}'\u3002(\u5982\u679Cid\u5B57\u6BB5\u4E3A\u5B57\u7B26\u4E32\u7C7B\u578B) +FR-Designer-DS-Database_Query=\u6570\u636E\u5E93\u67E5\u8BE2 +FR-Designer-LayerPageReport_PageQuery=\u5206\u9875\u67E5\u8BE2 +FR-Designer-LayerPageReport_Define_PageQuerySQL=\u5B9A\u4E49\u5206\u9875\u67E5\u8BE2sql +FR-Designer_Is_Share_DBTableData=\u5171\u4EAB\u6570\u636E\u96C6 diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index dc9f4a07b1..e7a968e5a6 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -357,7 +357,6 @@ FR-Designer_KeyPoint=\u95DC\u9375\u7BC0\u9EDE FR-Designer_loadedTreeModel=\u52A0\u8F09\u5931\u6557,\u8ACB\u6AA2\u67E5\u5F8C\u91CD\u8A66 FR-Designer-Failed_to_load_the_plugin=\u7121\u6CD5\u52A0\u8F09\u63D2\u4EF6\uFF0C\u8ACB\u66F4\u65B0\u63D2\u4EF6\uFF1A FR-Designer-Plugin_Please_Update_Jar=\u8ACB\u66F4\u65B0Jar\u5305, \u63D2\u4EF6\u9700\u6C42\u6700\u4F4E\u7248\u672C -FR-Designer-Invalid_Page_Number=\u7121\u6548\u9801\u78BC FR-Designer_Get-CubeGetting=\u7372\u53D6cube FR-Designer_XMLA_Database=\u8CC7\u6599\u5EAB FR-Designer_XMLA_UserName=\u5E33\u865F @@ -472,5 +471,8 @@ FR-Designer_Data_Analysis_Settings=\u8CC7\u6599\u5206\u6790\u8A2D\u5B9A FR-Designer_Browser_Background=\u700F\u89BD\u5668\u80CC\u666F FR-Designer_Import_Css=\u5F15\u7528Css FR-Designer_Import_JavaScript=\u5F15\u7528JavaScript -FR-Designer_Properties=\u5C6C\u6027 -FR-Designer_Event=\u4E8B\u4EF6 +FR-Designer-Datasource-Param_DES= \u60A8\u53EF\u4EE5\u9375\u5165"${abc}"\u505A\u70BA\u4E00\u500B\u53C3\u6578\uFF0C\u9019\u91CCabc\u662F\u53C3\u6578\u7684\u540D\u7A31\u3002\u4F8B\u5982\uFF1A
 select * from table where idDatasource-Procedurewaring\=\u7CFB\u7D71\u4E0D\u80FD\u81EA\u52D5\u7372\u53D6\u8A72\u5B58\u5132\u7A0B\u5E8F\u7684\u53C3\u6578\uFF0C\u8ACB\u624B\u52D5\u65B0\u589E\! +FR-Designer-DS-Database_Query=\u8CC7\u6599\u5EAB\u67E5\u8A62 +FR-Designer-LayerPageReport_PageQuery=\u5206\u9801\u67E5\u8A62 +FR-Designer-LayerPageReport_Define_PageQuerySQL=\u5B9A\u7FA9\u5206\u9801\u67E5\u8A62sql +FR-Designer_Is_Share_DBTableData=\u662F\u5426\u5171\u4EAB\u8CC7\u6599\u96C6 From 806642fddbd4bcb83bc74b6ee2b595f5ee359a5d Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Mon, 12 Dec 2016 10:46:38 +0800 Subject: [PATCH 129/139] rt --- .../src/com/fr/design/locale/designer.properties | 8 +++----- .../src/com/fr/design/locale/designer_en_US.properties | 8 +++----- .../src/com/fr/design/locale/designer_ja_JP.properties | 8 +++----- .../src/com/fr/design/locale/designer_ko_KR.properties | 7 ++----- .../src/com/fr/design/locale/designer_zh_CN.properties | 8 +++----- .../src/com/fr/design/locale/designer_zh_TW.properties | 8 +++----- 6 files changed, 17 insertions(+), 30 deletions(-) diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index a8417919ac..d78df6b413 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -357,6 +357,7 @@ FR-Designer_KeyPoint=KeyPoint FR-Designer_loadedTreeModel=loadedTreeModel FR-Designer-Failed_to_load_the_plugin=Failed to load the plugin\uFF0Cplease update the plugin\: FR-Designer-Plugin_Please_Update_Jar= +FR-Designer-Invalid_Page_Number=Invalid Page Number FR-Designer_XMLA_Database=Database FR-Designer_XMLA_UserName=User name FR-Designer_XMLA_Password=Password @@ -480,8 +481,5 @@ FR-Designer_Data_Analysis_Settings=Data Analysis Settings FR-Designer_Browser_Background=Browser Background FR-Designer_Import_Css=Import Css FR-Designer_Import_JavaScript=Import JavaScript -FR-Designer-Datasource-Param_DES= you can type "${abc}" as a parameter, here, abc is a parameter name.
 for example\: select * from table where id\=${abc}.
 select * from table where id\='${abc}'.(if the field id is typeof string) -FR-Designer-DS-Database_Query= -FR-Designer_Is_Share_DBTableData= -FR-Designer-LayerPageReport_PageQuery= -FR-Designer-LayerPageReport_Define_PageQuerySQL= +FR-Designer_Event= +FR-Designer_Properties= diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties index 6f2a2ca2b4..57b8a16441 100644 --- a/designer_base/src/com/fr/design/locale/designer_en_US.properties +++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties @@ -358,6 +358,7 @@ FR-Designer_KeyPoint=KeyPoint FR-Designer_loadedTreeModel=loadedTreeModel FR-Designer-Failed_to_load_the_plugin=Failed to load the plugin\uFF0Cplease update the plugin\: FR-Designer-Plugin_Please_Update_Jar=Please Update Jar +FR-Designer-Invalid_Page_Number=Invalid Page Number FR-Designer_XMLA_Database=DB FR-Designer_XMLA_UserName=User name FR-Designer_XMLA_Password=Password @@ -479,8 +480,5 @@ FR-Designer_Data_Analysis_Settings=Data Analysis Settings FR-Designer_Browser_Background=Browser Background FR-Designer_Import_Css=Reference Css FR-Designer_Import_JavaScript=Reference JavaScript -FR-Designer-LayerPageReport_PageQuery=Page Break query -FR-Designer-LayerPageReport_Define_PageQuerySQL=Define sql for page break query -FR-Designer-Datasource-Param_DES= You can type "${abc}" as a parameter, here, abc is a parameter name.
 for example\: select * from table where id\=${abc}.
 select * from table where id\='${abc}'.(if the type of id is string) -FR-Designer-DS-Database_Query=DB Query -FR-Designer_Is_Share_DBTableData=Shared data set +FR-Designer_Event=Event +FR-Designer_Properties=Properties diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index f76e06d558..40dcc1f016 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -458,8 +458,6 @@ FR-Designer_Data_Analysis_Settings=\u30C7\u30FC\u30BF\u5206\u6790\u8A2D\u5B9A FR-Designer_Browser_Background=\u30D6\u30E9\u30A6\u30B6\u80CC\u666F FR-Designer_Import_Css=Css\u5F15\u7528 FR-Designer_Import_JavaScript=JavaScript\u5F15\u7528 -FR-Designer-Datasource-Param_DES=  "${abc}"\u3092\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3068\u3057\u3066\u5165\u529B\u3067\u304D\u307E\u3059\u3002\u3053\u3053\u3067abc\u306F\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3002abc\u306F\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u306E\u540D\u524D\u3067\u3059\u3002\u4F8B\u3048\u3070
 select * from table where id\=${abc}\u3002
 select * from table where id\='${abc}'\u3002(\u3082\u3057id\u306F\u6587\u5B57\u5217\u306A\u3089)\uFFFD -FR-Designer-DS-Database_Query=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30AF\u30A8\u30EA\u30FC -FR-Designer-LayerPageReport_PageQuery=\u30DA\u30FC\u30B8\u5225\u30AF\u30A8\u30EA -FR-Designer-LayerPageReport_Define_PageQuerySQL=\u5B9A\u7FA9\u30DA\u30FC\u30B8\u5225\u30AF\u30A8\u30EAsql -FR-Designer_Is_Share_DBTableData=\u5171\u6709\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 +FR-Designer_Event=\ +FR-Designer_Properties=FR-Designer_Properties=\ +\ \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties index fb39f20ce2..6e680ad60f 100644 --- a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties +++ b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties @@ -454,8 +454,5 @@ FR-Designer_Data_Analysis_Settings=\uB370\uC774\uD130\uBD84\uC11D\uC124\uC815 FR-Designer_Browser_Background=\uC6F9\uBE0C\uB77C\uC6B0\uC800\uBC30\uACBD FR-Designer_Import_Css=Css\uC778\uC6A9 FR-Designer_Import_JavaScript=JavaScript\uC778\uC6A9 -FR-Designer-Datasource-Param_DES= , "${abc}"\uB97C\uB9E4\uAC1C\uBCC0\uC218\uB85C\uC785\uB825\uD560\uC218\uC788\uC73C\uBA70,abc\uB294\uB9E4\uAC1C\uBCC0\uC218\uC758\uBA85\uCE6D\uC785\uB2C8\uB2E4. \uC608\uFF1A
 select * from table where id\='${abc}'. (id\uD544\uB4DC\uAC00\uBB38\uC790\uC5F4\uC720\uD615\uC77C\uACBD\uC6B0) -FR-Designer-DS-Database_Query=\uB370\uC774\uD130\uBCA0\uC774\uC2A4\uCC3E\uC544\uBCF4\uAE30 -FR-Designer_Is_Share_DBTableData=\uB370\uC774\uD130\uC138\uD2B8\uACF5\uC720 -FR-Designer-LayerPageReport_PageQuery=\uD398\uC774\uC9C0\uB098\uB204\uAE30\uCC3E\uC544\uBCF4\uAE30 -FR-Designer-LayerPageReport_Define_PageQuerySQL=\uC815\uC758\uD398\uC774\uC9C0\uB098\uB204\uAE30\uCC3E\uC544\uBCF4\uAE30sql +FR-Designer_Event=\ +FR-Designer_Properties=\ diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties index 4a0cdfed65..3ac051a5e7 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties @@ -358,6 +358,7 @@ FR-Designer_KeyPoint=\u5173\u952E\u8282\u70B9 FR-Designer_loadedTreeModel=\u52A0\u8F7D\u5931\u8D25,\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5 FR-Designer-Failed_to_load_the_plugin=\u65E0\u6CD5\u52A0\u8F7D\u63D2\u4EF6\uFF0C\u8BF7\u66F4\u65B0\u63D2\u4EF6\uFF1A FR-Designer-Plugin_Please_Update_Jar=\u8BF7\u66F4\u65B0Jar\u5305, \u63D2\u4EF6\u9700\u6C42\u6700\u4F4E\u7248\u672C +FR-Designer-Invalid_Page_Number=\u65E0\u6548\u9875\u7801 FR-Designer_Get-CubeGetting=\u83B7\u53D6cube FR-Designer_XMLA_Database=\u6570\u636E\u5E93 FR-Designer_XMLA_UserName=\u7528\u6237\u540D @@ -483,8 +484,5 @@ FR-Designer_Data_Analysis_Settings=\u6570\u636E\u5206\u6790\u8BBE\u7F6E FR-Designer_Browser_Background=\u6D4F\u89C8\u5668\u80CC\u666F FR-Designer_Import_Css=\u5F15\u7528Css FR-Designer_Import_JavaScript=\u5F15\u7528JavaScript -FR-Designer-Datasource-Param_DES= \u60A8\u53EF\u4EE5\u952E\u5165"${abc}"\u505A\u4E3A\u4E00\u4E2A\u53C2\u6570\uFF0C\u8FD9\u91CCabc\u662F\u53C2\u6570\u7684\u540D\u79F0\u3002\u4F8B\u5982\uFF1A
 select * from table where id\=${abc}\u3002
 select * from table where id\='${abc}'\u3002(\u5982\u679Cid\u5B57\u6BB5\u4E3A\u5B57\u7B26\u4E32\u7C7B\u578B) -FR-Designer-DS-Database_Query=\u6570\u636E\u5E93\u67E5\u8BE2 -FR-Designer-LayerPageReport_PageQuery=\u5206\u9875\u67E5\u8BE2 -FR-Designer-LayerPageReport_Define_PageQuerySQL=\u5B9A\u4E49\u5206\u9875\u67E5\u8BE2sql -FR-Designer_Is_Share_DBTableData=\u5171\u4EAB\u6570\u636E\u96C6 +FR-Designer_Event=\u4E8B\u4EF6 +FR-Designer_Properties=\u5C5E\u6027 diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index e7a968e5a6..dc9f4a07b1 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -357,6 +357,7 @@ FR-Designer_KeyPoint=\u95DC\u9375\u7BC0\u9EDE FR-Designer_loadedTreeModel=\u52A0\u8F09\u5931\u6557,\u8ACB\u6AA2\u67E5\u5F8C\u91CD\u8A66 FR-Designer-Failed_to_load_the_plugin=\u7121\u6CD5\u52A0\u8F09\u63D2\u4EF6\uFF0C\u8ACB\u66F4\u65B0\u63D2\u4EF6\uFF1A FR-Designer-Plugin_Please_Update_Jar=\u8ACB\u66F4\u65B0Jar\u5305, \u63D2\u4EF6\u9700\u6C42\u6700\u4F4E\u7248\u672C +FR-Designer-Invalid_Page_Number=\u7121\u6548\u9801\u78BC FR-Designer_Get-CubeGetting=\u7372\u53D6cube FR-Designer_XMLA_Database=\u8CC7\u6599\u5EAB FR-Designer_XMLA_UserName=\u5E33\u865F @@ -471,8 +472,5 @@ FR-Designer_Data_Analysis_Settings=\u8CC7\u6599\u5206\u6790\u8A2D\u5B9A FR-Designer_Browser_Background=\u700F\u89BD\u5668\u80CC\u666F FR-Designer_Import_Css=\u5F15\u7528Css FR-Designer_Import_JavaScript=\u5F15\u7528JavaScript -FR-Designer-Datasource-Param_DES= \u60A8\u53EF\u4EE5\u9375\u5165"${abc}"\u505A\u70BA\u4E00\u500B\u53C3\u6578\uFF0C\u9019\u91CCabc\u662F\u53C3\u6578\u7684\u540D\u7A31\u3002\u4F8B\u5982\uFF1A
 select * from table where idDatasource-Procedurewaring\=\u7CFB\u7D71\u4E0D\u80FD\u81EA\u52D5\u7372\u53D6\u8A72\u5B58\u5132\u7A0B\u5E8F\u7684\u53C3\u6578\uFF0C\u8ACB\u624B\u52D5\u65B0\u589E\! -FR-Designer-DS-Database_Query=\u8CC7\u6599\u5EAB\u67E5\u8A62 -FR-Designer-LayerPageReport_PageQuery=\u5206\u9801\u67E5\u8A62 -FR-Designer-LayerPageReport_Define_PageQuerySQL=\u5B9A\u7FA9\u5206\u9801\u67E5\u8A62sql -FR-Designer_Is_Share_DBTableData=\u662F\u5426\u5171\u4EAB\u8CC7\u6599\u96C6 +FR-Designer_Properties=\u5C6C\u6027 +FR-Designer_Event=\u4E8B\u4EF6 From 043fa45d59115656a4615ed1babbd096c4491577 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Mon, 12 Dec 2016 10:56:19 +0800 Subject: [PATCH 130/139] rt --- designer_base/src/com/fr/design/locale/designer.properties | 5 +++++ .../src/com/fr/design/locale/designer_en_US.properties | 5 +++++ .../src/com/fr/design/locale/designer_ja_JP.properties | 7 ++++++- .../src/com/fr/design/locale/designer_ko_KR.properties | 7 ++++++- .../src/com/fr/design/locale/designer_zh_CN.properties | 5 +++++ .../src/com/fr/design/locale/designer_zh_TW.properties | 5 +++++ 6 files changed, 32 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/locale/designer.properties b/designer_base/src/com/fr/design/locale/designer.properties index d78df6b413..80f966919d 100644 --- a/designer_base/src/com/fr/design/locale/designer.properties +++ b/designer_base/src/com/fr/design/locale/designer.properties @@ -481,5 +481,10 @@ FR-Designer_Data_Analysis_Settings=Data Analysis Settings FR-Designer_Browser_Background=Browser Background FR-Designer_Import_Css=Import Css FR-Designer_Import_JavaScript=Import JavaScript +FR-Designer-Datasource-Param_DES= you can type "${abc}" as a parameter, here, abc is a parameter name.
 for example\: select * from table where id\=${abc}.
 select * from table where id\='${abc}'.(if the field id is typeof string) +FR-Designer-DS-Database_Query= +FR-Designer_Is_Share_DBTableData= +FR-Designer-LayerPageReport_PageQuery= +FR-Designer-LayerPageReport_Define_PageQuerySQL= FR-Designer_Event= FR-Designer_Properties= diff --git a/designer_base/src/com/fr/design/locale/designer_en_US.properties b/designer_base/src/com/fr/design/locale/designer_en_US.properties index 57b8a16441..f2738c38e3 100644 --- a/designer_base/src/com/fr/design/locale/designer_en_US.properties +++ b/designer_base/src/com/fr/design/locale/designer_en_US.properties @@ -480,5 +480,10 @@ FR-Designer_Data_Analysis_Settings=Data Analysis Settings FR-Designer_Browser_Background=Browser Background FR-Designer_Import_Css=Reference Css FR-Designer_Import_JavaScript=Reference JavaScript +FR-Designer-LayerPageReport_PageQuery=Page Break query +FR-Designer-LayerPageReport_Define_PageQuerySQL=Define sql for page break query +FR-Designer-Datasource-Param_DES= You can type "${abc}" as a parameter, here, abc is a parameter name.
 for example\: select * from table where id\=${abc}.
 select * from table where id\='${abc}'.(if the type of id is string) +FR-Designer-DS-Database_Query=DB Query +FR-Designer_Is_Share_DBTableData=Shared data set FR-Designer_Event=Event FR-Designer_Properties=Properties diff --git a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties index 40dcc1f016..4ab48d0e6b 100644 --- a/designer_base/src/com/fr/design/locale/designer_ja_JP.properties +++ b/designer_base/src/com/fr/design/locale/designer_ja_JP.properties @@ -458,6 +458,11 @@ FR-Designer_Data_Analysis_Settings=\u30C7\u30FC\u30BF\u5206\u6790\u8A2D\u5B9A FR-Designer_Browser_Background=\u30D6\u30E9\u30A6\u30B6\u80CC\u666F FR-Designer_Import_Css=Css\u5F15\u7528 FR-Designer_Import_JavaScript=JavaScript\u5F15\u7528 +FR-Designer-Datasource-Param_DES=  "${abc}"\u3092\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3068\u3057\u3066\u5165\u529B\u3067\u304D\u307E\u3059\u3002\u3053\u3053\u3067abc\u306F\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u3002abc\u306F\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u306E\u540D\u524D\u3067\u3059\u3002\u4F8B\u3048\u3070
 select * from table where id\=${abc}\u3002
 select * from table where id\='${abc}'\u3002(\u3082\u3057id\u306F\u6587\u5B57\u5217\u306A\u3089)\uFFFD +FR-Designer-DS-Database_Query=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30AF\u30A8\u30EA\u30FC +FR-Designer-LayerPageReport_PageQuery=\u30DA\u30FC\u30B8\u5225\u30AF\u30A8\u30EA +FR-Designer-LayerPageReport_Define_PageQuerySQL=\u5B9A\u7FA9\u30DA\u30FC\u30B8\u5225\u30AF\u30A8\u30EAsql +FR-Designer_Is_Share_DBTableData=\u5171\u6709\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 FR-Designer_Event=\ FR-Designer_Properties=FR-Designer_Properties=\ -\ \ No newline at end of file +\ diff --git a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties index 6e680ad60f..64bee79036 100644 --- a/designer_base/src/com/fr/design/locale/designer_ko_KR.properties +++ b/designer_base/src/com/fr/design/locale/designer_ko_KR.properties @@ -454,5 +454,10 @@ FR-Designer_Data_Analysis_Settings=\uB370\uC774\uD130\uBD84\uC11D\uC124\uC815 FR-Designer_Browser_Background=\uC6F9\uBE0C\uB77C\uC6B0\uC800\uBC30\uACBD FR-Designer_Import_Css=Css\uC778\uC6A9 FR-Designer_Import_JavaScript=JavaScript\uC778\uC6A9 +FR-Designer-Datasource-Param_DES= , "${abc}"\uB97C\uB9E4\uAC1C\uBCC0\uC218\uB85C\uC785\uB825\uD560\uC218\uC788\uC73C\uBA70,abc\uB294\uB9E4\uAC1C\uBCC0\uC218\uC758\uBA85\uCE6D\uC785\uB2C8\uB2E4. \uC608\uFF1A
 select * from table where id\='${abc}'. (id\uD544\uB4DC\uAC00\uBB38\uC790\uC5F4\uC720\uD615\uC77C\uACBD\uC6B0) +FR-Designer-DS-Database_Query=\uB370\uC774\uD130\uBCA0\uC774\uC2A4\uCC3E\uC544\uBCF4\uAE30 +FR-Designer_Is_Share_DBTableData=\uB370\uC774\uD130\uC138\uD2B8\uACF5\uC720 +FR-Designer-LayerPageReport_PageQuery=\uD398\uC774\uC9C0\uB098\uB204\uAE30\uCC3E\uC544\uBCF4\uAE30 +FR-Designer-LayerPageReport_Define_PageQuerySQL=\uC815\uC758\uD398\uC774\uC9C0\uB098\uB204\uAE30\uCC3E\uC544\uBCF4\uAE30sql FR-Designer_Event=\ -FR-Designer_Properties=\ +FR-Designer_Properties=\ \ No newline at end of file diff --git a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties index 3ac051a5e7..47ab967f1c 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_CN.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_CN.properties @@ -484,5 +484,10 @@ FR-Designer_Data_Analysis_Settings=\u6570\u636E\u5206\u6790\u8BBE\u7F6E FR-Designer_Browser_Background=\u6D4F\u89C8\u5668\u80CC\u666F FR-Designer_Import_Css=\u5F15\u7528Css FR-Designer_Import_JavaScript=\u5F15\u7528JavaScript +FR-Designer-Datasource-Param_DES= \u60A8\u53EF\u4EE5\u952E\u5165"${abc}"\u505A\u4E3A\u4E00\u4E2A\u53C2\u6570\uFF0C\u8FD9\u91CCabc\u662F\u53C2\u6570\u7684\u540D\u79F0\u3002\u4F8B\u5982\uFF1A
 select * from table where id\=${abc}\u3002
 select * from table where id\='${abc}'\u3002(\u5982\u679Cid\u5B57\u6BB5\u4E3A\u5B57\u7B26\u4E32\u7C7B\u578B) +FR-Designer-DS-Database_Query=\u6570\u636E\u5E93\u67E5\u8BE2 +FR-Designer-LayerPageReport_PageQuery=\u5206\u9875\u67E5\u8BE2 +FR-Designer-LayerPageReport_Define_PageQuerySQL=\u5B9A\u4E49\u5206\u9875\u67E5\u8BE2sql +FR-Designer_Is_Share_DBTableData=\u5171\u4EAB\u6570\u636E\u96C6 FR-Designer_Event=\u4E8B\u4EF6 FR-Designer_Properties=\u5C5E\u6027 diff --git a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties index dc9f4a07b1..01a04e850d 100644 --- a/designer_base/src/com/fr/design/locale/designer_zh_TW.properties +++ b/designer_base/src/com/fr/design/locale/designer_zh_TW.properties @@ -472,5 +472,10 @@ FR-Designer_Data_Analysis_Settings=\u8CC7\u6599\u5206\u6790\u8A2D\u5B9A FR-Designer_Browser_Background=\u700F\u89BD\u5668\u80CC\u666F FR-Designer_Import_Css=\u5F15\u7528Css FR-Designer_Import_JavaScript=\u5F15\u7528JavaScript +FR-Designer-Datasource-Param_DES= \u60A8\u53EF\u4EE5\u9375\u5165"${abc}"\u505A\u70BA\u4E00\u500B\u53C3\u6578\uFF0C\u9019\u91CCabc\u662F\u53C3\u6578\u7684\u540D\u7A31\u3002\u4F8B\u5982\uFF1A
 select * from table where idDatasource-Procedurewaring\=\u7CFB\u7D71\u4E0D\u80FD\u81EA\u52D5\u7372\u53D6\u8A72\u5B58\u5132\u7A0B\u5E8F\u7684\u53C3\u6578\uFF0C\u8ACB\u624B\u52D5\u65B0\u589E\! +FR-Designer-DS-Database_Query=\u8CC7\u6599\u5EAB\u67E5\u8A62 +FR-Designer-LayerPageReport_PageQuery=\u5206\u9801\u67E5\u8A62 +FR-Designer-LayerPageReport_Define_PageQuerySQL=\u5B9A\u7FA9\u5206\u9801\u67E5\u8A62sql +FR-Designer_Is_Share_DBTableData=\u662F\u5426\u5171\u4EAB\u8CC7\u6599\u96C6 FR-Designer_Properties=\u5C6C\u6027 FR-Designer_Event=\u4E8B\u4EF6 From 86bea80f192d53f286b25b423a78d8c350a72565 Mon Sep 17 00:00:00 2001 From: vito Date: Tue, 13 Dec 2016 10:48:35 +0800 Subject: [PATCH 131/139] =?UTF-8?q?REPORT-1181=20mac10.12=E5=92=8Cjavafx?= =?UTF-8?q?=E5=BC=B9=E5=87=BA=E6=A1=86=E5=88=9D=E5=A7=8B=E5=8C=96=E6=97=B6?= =?UTF-8?q?=E4=BC=9A=E6=9C=89=E5=A4=A7=E5=87=A0=E7=8E=87=E5=8D=A1=E6=AD=BB?= =?UTF-8?q?=E5=9C=A8native=E6=96=B9=E6=B3=95=EF=BC=8C=E8=BF=99=E9=87=8C?= =?UTF-8?q?=E5=85=88=E5=B1=8F=E8=94=BD=E4=B8=80=E4=B8=8B=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/bbs/UserInfoLabel.java | 494 +++++++++--------- 1 file changed, 247 insertions(+), 247 deletions(-) diff --git a/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java b/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java index ddce30d70f..f6e3d3e7ca 100644 --- a/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java +++ b/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java @@ -1,5 +1,5 @@ /** - * + * */ package com.fr.design.mainframe.bbs; @@ -18,6 +18,7 @@ import com.fr.general.Inter; import com.fr.general.SiteCenter; import com.fr.general.http.HttpClient; import com.fr.stable.EncodeConstants; +import com.fr.stable.OperatingSystem; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; @@ -34,62 +35,61 @@ import java.util.HashMap; /** * @author neil - * * @date: 2015-3-4-上午9:05:52 */ -public class UserInfoLabel extends UILabel{ - - //默认查询消息时间, 30s - private static final long CHECK_MESSAGE_TIME = 30 * 1000L; +public class UserInfoLabel extends UILabel { + + //默认查询消息时间, 30s + private static final long CHECK_MESSAGE_TIME = 30 * 1000L; //默认论坛检测到更新后的弹出延迟时间 - private static final long DELAY_TIME = 2 * 1000L; - private static final String MESSAGE_KEY = "messageCount"; - - private static final int MIN_MESSAGE_COUNT = 1; - private static final int MENU_HEIGHT = 20; - - private static final int DEFAULT_BBS_UID = 0; - - //用户名 - private String userName; - //消息条数 - private int messageCount; - - private UserInfoPane userInfoPane; - private BBSLoginDialog bbsLoginDialog; - - public UserInfoPane getUserInfoPane() { - return userInfoPane; - } - - public void setUserInfoPane(UserInfoPane userInfoPane) { - this.userInfoPane = userInfoPane; - } - - public BBSLoginDialog getBbsLoginDialog() { - return bbsLoginDialog; - } - - public void setBbsLoginDialog(BBSLoginDialog bbsLoginDialog) { - this.bbsLoginDialog = bbsLoginDialog; - } - - public UserInfoLabel(UserInfoPane userInfoPane) { - this.userInfoPane = userInfoPane; - - String userName = DesignerEnvManager.getEnvManager().getBBSName(); - this.addMouseListener(userInfoAdapter); - this.setHorizontalAlignment(SwingConstants.CENTER); - this.setText(userName); - - LoginWebBridge loginWebBridge = new LoginWebBridge(); - loginWebBridge.setUserName(userName, UserInfoLabel.this); - - LoginCheckContext.addLoginCheckListener(new LoginCheckListener() { - @Override - public void loginChecked() { - /* - if (bbsLoginDialog == null) { + private static final long DELAY_TIME = 2 * 1000L; + private static final String MESSAGE_KEY = "messageCount"; + + private static final int MIN_MESSAGE_COUNT = 1; + private static final int MENU_HEIGHT = 20; + + private static final int DEFAULT_BBS_UID = 0; + + //用户名 + private String userName; + //消息条数 + private int messageCount; + + private UserInfoPane userInfoPane; + private BBSLoginDialog bbsLoginDialog; + + public UserInfoPane getUserInfoPane() { + return userInfoPane; + } + + public void setUserInfoPane(UserInfoPane userInfoPane) { + this.userInfoPane = userInfoPane; + } + + public BBSLoginDialog getBbsLoginDialog() { + return bbsLoginDialog; + } + + public void setBbsLoginDialog(BBSLoginDialog bbsLoginDialog) { + this.bbsLoginDialog = bbsLoginDialog; + } + + public UserInfoLabel(UserInfoPane userInfoPane) { + this.userInfoPane = userInfoPane; + + String userName = DesignerEnvManager.getEnvManager().getBBSName(); + this.addMouseListener(userInfoAdapter); + this.setHorizontalAlignment(SwingConstants.CENTER); + this.setText(userName); + + LoginWebBridge loginWebBridge = new LoginWebBridge(); + loginWebBridge.setUserName(userName, UserInfoLabel.this); + + LoginCheckContext.addLoginCheckListener(new LoginCheckListener() { + @Override + public void loginChecked() { + /* + if (bbsLoginDialog == null) { bbsLoginDialog = new BBSLoginDialog(DesignerContext.getDesignerFrame(), UserInfoLabel.this); } bbsLoginDialog.clearLoginInformation(); @@ -97,144 +97,144 @@ public class UserInfoLabel extends UILabel{ bbsLoginDialog.setModal(true); bbsLoginDialog.showWindow(); */ - } - }); - - if (StableUtils.getMajorJavaVersion() == 8) { - PluginWebBridge.getHelper().setUILabel(UserInfoLabel.this); - } - QQLoginWebBridge.getHelper().setUILabelInPlugin(UserInfoLabel.this); - - UserLoginContext.addLoginContextListener(new LoginContextListener() { - @Override - public void showLoginContext() { - LoginPane managerPane = new LoginPane(); - UIDialog qqdlg = new LoginDialog(DesignerContext.getDesignerFrame(),managerPane); - LoginWebBridge.getHelper().setDialogHandle(qqdlg); - LoginWebBridge.getHelper().setUILabel(UserInfoLabel.this); - QQLoginWebBridge.getHelper().setLoginlabel(); - qqdlg.setVisible(true); - clearLoginInformation(); - updateInfoPane(); - } - }); - } - - private void clearLoginInformation(){ - DesignerEnvManager.getEnvManager().setBBSName(StringUtils.EMPTY); - DesignerEnvManager.getEnvManager().setBBSPassword(StringUtils.EMPTY); - DesignerEnvManager.getEnvManager().setInShowBBsName(StringUtils.EMPTY); - DesignerEnvManager.getEnvManager().setBbsUid(DEFAULT_BBS_UID); - } - - private void updateInfoPane(){ - userInfoPane.markUnSignIn(); - } - - /** - * showBBSDialog 弹出BBS资讯框 - */ - public static void showBBSDialog(){ - Thread showBBSThread = new Thread(new Runnable() { - - @Override - public void run() { - if(!FRContext.isChineseEnv()){ - return; - } - String lastBBSNewsTime = DesignerEnvManager.getEnvManager().getLastShowBBSNewsTime(); - try { + } + }); + + if (StableUtils.getMajorJavaVersion() == 8) { + PluginWebBridge.getHelper().setUILabel(UserInfoLabel.this); + } + QQLoginWebBridge.getHelper().setUILabelInPlugin(UserInfoLabel.this); + + UserLoginContext.addLoginContextListener(new LoginContextListener() { + @Override + public void showLoginContext() { + LoginPane managerPane = new LoginPane(); + UIDialog qqdlg = new LoginDialog(DesignerContext.getDesignerFrame(), managerPane); + LoginWebBridge.getHelper().setDialogHandle(qqdlg); + LoginWebBridge.getHelper().setUILabel(UserInfoLabel.this); + QQLoginWebBridge.getHelper().setLoginlabel(); + qqdlg.setVisible(true); + clearLoginInformation(); + updateInfoPane(); + } + }); + } + + private void clearLoginInformation() { + DesignerEnvManager.getEnvManager().setBBSName(StringUtils.EMPTY); + DesignerEnvManager.getEnvManager().setBBSPassword(StringUtils.EMPTY); + DesignerEnvManager.getEnvManager().setInShowBBsName(StringUtils.EMPTY); + DesignerEnvManager.getEnvManager().setBbsUid(DEFAULT_BBS_UID); + } + + private void updateInfoPane() { + userInfoPane.markUnSignIn(); + } + + /** + * showBBSDialog 弹出BBS资讯框 + */ + public static void showBBSDialog() { + Thread showBBSThread = new Thread(new Runnable() { + + @Override + public void run() { + // vito:最新mac10.12和javafx弹出框初始化时会有大几率卡死在native方法,这里先屏蔽一下。 + if (!FRContext.isChineseEnv() || OperatingSystem.isMacOS()) { + return; + } + String lastBBSNewsTime = DesignerEnvManager.getEnvManager().getLastShowBBSNewsTime(); + try { String today = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); if (ComparatorUtils.equals(lastBBSNewsTime, today)) { return; } - Thread.sleep(DELAY_TIME); - } catch (InterruptedException e) { - FRContext.getLogger().error(e.getMessage()); - } + Thread.sleep(DELAY_TIME); + } catch (InterruptedException e) { + FRContext.getLogger().error(e.getMessage()); + } HttpClient hc = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.popup")); - if (!hc.isServerAlive()){ + if (!hc.isServerAlive()) { return; } String res = hc.getResponseText(); - if (res.indexOf(BBSConstants.UPDATE_KEY) == -1){ + if (res.indexOf(BBSConstants.UPDATE_KEY) == -1) { return; } - try { - BBSDialog bbsLabel = new BBSDialog(DesignerContext.getDesignerFrame()); - bbsLabel.showWindow(SiteCenter.getInstance().acquireUrlByKind("bbs.popup")); - DesignerEnvManager.getEnvManager().setLastShowBBSNewsTime(DateUtils.DATEFORMAT2.format(new Date())); - } catch (Throwable e) { - } - } - }); - showBBSThread.start(); - } - - private void sleep(long millis){ - try { - Thread.sleep(millis); - } catch (InterruptedException e) { - FRContext.getLogger().error(e.getMessage()); - } - } - - public String getUserName() { - return userName; - } - - /** - * 重置当前用户名 - * - */ - public void resetUserName(){ - this.userName = StringUtils.EMPTY; - } - - public void setUserName(String userName) { - if(StringUtils.isEmpty(userName)){ - return; - } - - if(StringUtils.isEmpty(this.userName)){ - updateMessageCount(); - } - //往designerenvmanger里写一下 - DesignerEnvManager.getEnvManager().setBBSName(userName); - this.userName = userName; - } - - private void updateMessageCount(){ - //启动获取消息更新的线程 - //登陆状态, 根据存起来的用户名密码, 每1分钟发起一次请求, 更新消息条数. - Thread updateMessageThread = new Thread(new Runnable() { - - @Override - public void run() { + try { + BBSDialog bbsLabel = new BBSDialog(DesignerContext.getDesignerFrame()); + bbsLabel.showWindow(SiteCenter.getInstance().acquireUrlByKind("bbs.popup")); + DesignerEnvManager.getEnvManager().setLastShowBBSNewsTime(DateUtils.DATEFORMAT2.format(new Date())); + } catch (Throwable e) { + } + } + }); + showBBSThread.start(); + } + + private void sleep(long millis) { + try { + Thread.sleep(millis); + } catch (InterruptedException e) { + FRContext.getLogger().error(e.getMessage()); + } + } + + public String getUserName() { + return userName; + } + + /** + * 重置当前用户名 + */ + public void resetUserName() { + this.userName = StringUtils.EMPTY; + } + + public void setUserName(String userName) { + if (StringUtils.isEmpty(userName)) { + return; + } + + if (StringUtils.isEmpty(this.userName)) { + updateMessageCount(); + } + //往designerenvmanger里写一下 + DesignerEnvManager.getEnvManager().setBBSName(userName); + this.userName = userName; + } + + private void updateMessageCount() { + //启动获取消息更新的线程 + //登陆状态, 根据存起来的用户名密码, 每1分钟发起一次请求, 更新消息条数. + Thread updateMessageThread = new Thread(new Runnable() { + + @Override + public void run() { sleep(CHECK_MESSAGE_TIME); - //从env中获取username, 因为如果注销的话, env的里username会被清空. - while(StringUtils.isNotEmpty(DesignerEnvManager.getEnvManager().getBBSName())){ - HashMap para = new HashMap(); - para.put("username", encode(encode(userName))); - HttpClient getMessage = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.message"), para); - getMessage.asGet(); - if(getMessage.isServerAlive()){ - try { + //从env中获取username, 因为如果注销的话, env的里username会被清空. + while (StringUtils.isNotEmpty(DesignerEnvManager.getEnvManager().getBBSName())) { + HashMap para = new HashMap(); + para.put("username", encode(encode(userName))); + HttpClient getMessage = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.message"), para); + getMessage.asGet(); + if (getMessage.isServerAlive()) { + try { String res = getMessage.getResponseText(); if (StringUtils.isNotEmpty(res)) { setMessageCount(Integer.parseInt(res)); } - } catch (Exception e) { - } - } - sleep(CHECK_MESSAGE_TIME); - } - } - }); - updateMessageThread.start(); - } + } catch (Exception e) { + } + } + sleep(CHECK_MESSAGE_TIME); + } + } + }); + updateMessageThread.start(); + } - private String encode(String str){ + private String encode(String str) { try { return URLEncoder.encode(str, EncodeConstants.ENCODING_UTF_8); } catch (UnsupportedEncodingException e) { @@ -242,75 +242,75 @@ public class UserInfoLabel extends UILabel{ } } - public int getMessageCount() { - return messageCount; - } - - public void setMessageCount(int messageCount) { - // 当只有一条消息时,阅读之后,消息面板重置为只含用户名的状态 - if(this.messageCount == MIN_MESSAGE_COUNT && messageCount < MIN_MESSAGE_COUNT){ - this.setText(this.userName); - return; - } - if(this.messageCount == messageCount || messageCount < MIN_MESSAGE_COUNT){ - return; - } - - this.messageCount = messageCount; - StringBuilder sb = new StringBuilder(); - //内容eg: aaa(11) - sb.append(StringUtils.BLANK).append(this.userName) - .append("(").append(this.messageCount) - .append(")").append(StringUtils.BLANK); - - //更新面板Text - this.setText(sb.toString()); - } - - private MouseAdapter userInfoAdapter = new MouseAdapter() { - - public void mouseEntered(MouseEvent e) { - UserInfoLabel.this.setCursor(new Cursor(Cursor.HAND_CURSOR)); - }; - - @Override - public void mouseClicked(MouseEvent e) { - userName = DesignerEnvManager.getEnvManager().getBBSName(); - if(StringUtils.isNotEmpty(userName)) { - UIPopupMenu menu = new UIPopupMenu(); - menu.setOnlyText(true); - menu.setPopupSize(userInfoPane.getWidth(),userInfoPane.getHeight()*3); - - //私人消息 - UIMenuItem priviteMessage = new UIMenuItem(Inter.getLocText("FR-Designer-BBSLogin_Privite-Message")); - priviteMessage.addMouseListener(new MouseAdapter() { - public void mousePressed(MouseEvent e) { - if(StringUtils.isNotEmpty(userName)){ - try { - String loginUrl = SiteCenter.getInstance().acquireUrlByKind("bbs.default"); - Desktop.getDesktop().browse(new URI(loginUrl)); - } catch (Exception exp) { - FRContext.getLogger().info(exp.getMessage()); - } - return; - } - } - - }); - //切换账号 - UIMenuItem closeOther = new UIMenuItem(Inter.getLocText("FR-Designer-BBSLogin_Switch-Account")); - closeOther.addMouseListener(new MouseAdapter() { - public void mousePressed(MouseEvent e) { - UserLoginContext.fireLoginContextListener(); - } - - }); - menu.add(priviteMessage); - menu.add(closeOther); - GUICoreUtils.showPopupMenu(menu, UserInfoLabel.this, 0, MENU_HEIGHT); - } else { - UserLoginContext.fireLoginContextListener(); - } - } - }; + public int getMessageCount() { + return messageCount; + } + + public void setMessageCount(int messageCount) { + // 当只有一条消息时,阅读之后,消息面板重置为只含用户名的状态 + if (this.messageCount == MIN_MESSAGE_COUNT && messageCount < MIN_MESSAGE_COUNT) { + this.setText(this.userName); + return; + } + if (this.messageCount == messageCount || messageCount < MIN_MESSAGE_COUNT) { + return; + } + + this.messageCount = messageCount; + StringBuilder sb = new StringBuilder(); + //内容eg: aaa(11) + sb.append(StringUtils.BLANK).append(this.userName) + .append("(").append(this.messageCount) + .append(")").append(StringUtils.BLANK); + + //更新面板Text + this.setText(sb.toString()); + } + + private MouseAdapter userInfoAdapter = new MouseAdapter() { + + public void mouseEntered(MouseEvent e) { + UserInfoLabel.this.setCursor(new Cursor(Cursor.HAND_CURSOR)); + } + + @Override + public void mouseClicked(MouseEvent e) { + userName = DesignerEnvManager.getEnvManager().getBBSName(); + if (StringUtils.isNotEmpty(userName)) { + UIPopupMenu menu = new UIPopupMenu(); + menu.setOnlyText(true); + menu.setPopupSize(userInfoPane.getWidth(), userInfoPane.getHeight() * 3); + + //私人消息 + UIMenuItem priviteMessage = new UIMenuItem(Inter.getLocText("FR-Designer-BBSLogin_Privite-Message")); + priviteMessage.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + if (StringUtils.isNotEmpty(userName)) { + try { + String loginUrl = SiteCenter.getInstance().acquireUrlByKind("bbs.default"); + Desktop.getDesktop().browse(new URI(loginUrl)); + } catch (Exception exp) { + FRContext.getLogger().info(exp.getMessage()); + } + return; + } + } + + }); + //切换账号 + UIMenuItem closeOther = new UIMenuItem(Inter.getLocText("FR-Designer-BBSLogin_Switch-Account")); + closeOther.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + UserLoginContext.fireLoginContextListener(); + } + + }); + menu.add(priviteMessage); + menu.add(closeOther); + GUICoreUtils.showPopupMenu(menu, UserInfoLabel.this, 0, MENU_HEIGHT); + } else { + UserLoginContext.fireLoginContextListener(); + } + } + }; } From 779b71ee28e23c62b3c8b2f8c6e6a7f09faf1432 Mon Sep 17 00:00:00 2001 From: zack Date: Tue, 13 Dec 2016 14:08:58 +0800 Subject: [PATCH 132/139] =?UTF-8?q?REPORT-1097=20=E8=B6=85=E9=93=BE?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=9C=A8=E5=B9=B3=E5=8F=B0=E5=86=85=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E6=89=93=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/gui/frpane/HyperlinkGroupPane.java | 17 ++++--- .../hyperlink/AbstractHyperlinkPane.java | 49 +++++++++++++------ .../hyperlink/ReportletHyperlinkPane.java | 25 +++++++++- .../fr/design/hyperlink/WebHyperlinkPane.java | 32 ++++++++++++ 4 files changed, 100 insertions(+), 23 deletions(-) diff --git a/designer_base/src/com/fr/design/gui/frpane/HyperlinkGroupPane.java b/designer_base/src/com/fr/design/gui/frpane/HyperlinkGroupPane.java index 4d1028e784..112fa54dc2 100644 --- a/designer_base/src/com/fr/design/gui/frpane/HyperlinkGroupPane.java +++ b/designer_base/src/com/fr/design/gui/frpane/HyperlinkGroupPane.java @@ -13,12 +13,12 @@ import com.fr.js.JavaScript; import com.fr.js.NameJavaScript; import com.fr.js.NameJavaScriptGroup; import com.fr.plugin.PluginManager; -import com.fr.stable.ArrayUtils; import com.fr.stable.Nameable; import java.util.ArrayList; -import java.util.List; +import java.util.Map; import java.util.Set; +import java.util.TreeMap; /** * 超级链接 界面. @@ -34,23 +34,26 @@ public class HyperlinkGroupPane extends JListControlPane { * @return 返回Nameable按钮数组. */ public NameableCreator[] createNameableCreators() { + Map nameCreators = new TreeMap(); NameableCreator[] creators = DesignModuleFactory.getHyperlinkGroupType().getHyperlinkCreators(); + for (NameableCreator creator : creators) { + nameCreators.put(creator.menuName(), creator); + } PluginManager.getInstance().setExtensionPoint(HyperlinkPluginAction.XML_TAG); ArrayList templateArrayLisy = PluginManager.getInstance().getResultList(); // if (templateArrayLisy.isEmpty()) { // return creators; // } - NameableCreator[] pluginCreators = new NameableCreator[templateArrayLisy.size()]; for (int i = 0; i < templateArrayLisy.size(); i++) { - pluginCreators[i] = ((HyperlinkPluginAction) templateArrayLisy.get(i)).getHyperlinkCreator(); + NameableCreator nameableCreator = ((HyperlinkPluginAction) templateArrayLisy.get(i)).getHyperlinkCreator(); + nameCreators.put(nameableCreator.menuName(), nameableCreator); } Set providers = ExtraDesignClassManager.getInstance().getArray(HyperlinkProvider.XML_TAG); - List creatorList = new ArrayList(); for (HyperlinkProvider provider : providers) { NameableCreator nc = provider.createHyperlinkCreator(); - creatorList.add(nc); + nameCreators.put(nc.menuName(), nc); } - return ArrayUtils.addAll(creatorList.toArray(new NameableCreator[creatorList.size()]), ArrayUtils.addAll(creators, pluginCreators)); + return nameCreators.values().toArray(new NameableCreator[nameCreators.size()]); } /** diff --git a/designer_base/src/com/fr/design/hyperlink/AbstractHyperlinkPane.java b/designer_base/src/com/fr/design/hyperlink/AbstractHyperlinkPane.java index 36297d1656..311eaf7d94 100644 --- a/designer_base/src/com/fr/design/hyperlink/AbstractHyperlinkPane.java +++ b/designer_base/src/com/fr/design/hyperlink/AbstractHyperlinkPane.java @@ -1,27 +1,19 @@ package com.fr.design.hyperlink; -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.DefaultComboBoxModel; -import javax.swing.DefaultListCellRenderer; - -import com.fr.design.gui.ilable.UILabel; - -import javax.swing.JList; -import javax.swing.JPanel; - import com.fr.base.Utils; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UINumberField; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.general.Inter; import com.fr.js.Hyperlink; +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + public abstract class AbstractHyperlinkPane extends BasicBeanPane { public static final int NEW_WINDOW = 0; public static final int DIALOG = 1; @@ -46,7 +38,7 @@ public abstract class AbstractHyperlinkPane extends BasicBe headerPane = this.setHeaderPanel(); this.add(headerPane, BorderLayout.NORTH); this.add(centerPane, BorderLayout.CENTER); - targetFrameComboBox = new UIComboBox(new String[]{Inter.getLocText("Hyperlink-New_Window"), Inter.getLocText("FR-Hyperlink_Dialog"), Inter.getLocText("Hyperlink-Self_Window")}); + targetFrameComboBox = new UIComboBox(getTargetFrames()); targetFrameComboBox.setRenderer(new DefaultListCellRenderer() { public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); @@ -86,6 +78,9 @@ public abstract class AbstractHyperlinkPane extends BasicBe this.add(this.setFootPanel(), BorderLayout.SOUTH); } + protected String[] getTargetFrames(){ + return new String[]{Inter.getLocText("Hyperlink-New_Window"), Inter.getLocText("FR-Hyperlink_Dialog"), Inter.getLocText("Hyperlink-Self_Window")}; + } protected abstract JPanel setHeaderPanel(); @@ -93,6 +88,30 @@ public abstract class AbstractHyperlinkPane extends BasicBe protected abstract void populateSubHyperlinkBean(T link); + public UIComboBox getTargetFrameComboBox() { + return targetFrameComboBox; + } + + public void setTargetFrameComboBox(UIComboBox targetFrameComboBox) { + this.targetFrameComboBox = targetFrameComboBox; + } + + public UINumberField getHeightTextFiled() { + return heightTextFiled; + } + + public void setHeightTextFiled(UINumberField heightTextFiled) { + this.heightTextFiled = heightTextFiled; + } + + public UINumberField getWidthTextFiled() { + return widthTextFiled; + } + + public void setWidthTextFiled(UINumberField widthTextFiled) { + this.widthTextFiled = widthTextFiled; + } + @Override public void populateBean(T link) { String name = link.getTargetFrame(); diff --git a/designer_base/src/com/fr/design/hyperlink/ReportletHyperlinkPane.java b/designer_base/src/com/fr/design/hyperlink/ReportletHyperlinkPane.java index 1cdb3dcbb5..2664a746c9 100644 --- a/designer_base/src/com/fr/design/hyperlink/ReportletHyperlinkPane.java +++ b/designer_base/src/com/fr/design/hyperlink/ReportletHyperlinkPane.java @@ -104,7 +104,7 @@ public class ReportletHyperlinkPane extends BasicBeanPane { } - private class HyperlinkParametersAction extends UITableEditAction { + protected class HyperlinkParametersAction extends UITableEditAction { public HyperlinkParametersAction() { this.setName(Inter.getLocText(new String[]{"Reportlet", "Parameter"})); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_report/p.gif")); @@ -207,4 +207,27 @@ public class ReportletHyperlinkPane extends BasicBeanPane { } } + public ReporletHyperNorthPane getNorthPane() { + return northPane; + } + + public void setNorthPane(ReporletHyperNorthPane northPane) { + this.northPane = northPane; + } + + public ReportletParameterViewPane getParameterViewPane() { + return parameterViewPane; + } + + public void setParameterViewPane(ReportletParameterViewPane parameterViewPane) { + this.parameterViewPane = parameterViewPane; + } + + public UICheckBox getExtendParametersCheckBox() { + return extendParametersCheckBox; + } + + public void setExtendParametersCheckBox(UICheckBox extendParametersCheckBox) { + this.extendParametersCheckBox = extendParametersCheckBox; + } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/hyperlink/WebHyperlinkPane.java b/designer_base/src/com/fr/design/hyperlink/WebHyperlinkPane.java index 88bff48fb7..72a68baa9d 100644 --- a/designer_base/src/com/fr/design/hyperlink/WebHyperlinkPane.java +++ b/designer_base/src/com/fr/design/hyperlink/WebHyperlinkPane.java @@ -167,4 +167,36 @@ public class WebHyperlinkPane extends BasicBeanPane { return ParameterTableModel.CHART_METER_USE; } } + + public WebHyperNorthPane getNorthPane() { + return northPane; + } + + public void setNorthPane(WebHyperNorthPane northPane) { + this.northPane = northPane; + } + + public ReportletParameterViewPane getParameterViewPane() { + return parameterViewPane; + } + + public void setParameterViewPane(ReportletParameterViewPane parameterViewPane) { + this.parameterViewPane = parameterViewPane; + } + + public UICheckBox getUseCJKCheckBox() { + return useCJKCheckBox; + } + + public void setUseCJKCheckBox(UICheckBox useCJKCheckBox) { + this.useCJKCheckBox = useCJKCheckBox; + } + + public UICheckBox getExtendParametersCheckBox() { + return extendParametersCheckBox; + } + + public void setExtendParametersCheckBox(UICheckBox extendParametersCheckBox) { + this.extendParametersCheckBox = extendParametersCheckBox; + } } \ No newline at end of file From 3ae0adb1c0e8c54e9b3f0750acb208e204f47421 Mon Sep 17 00:00:00 2001 From: zack Date: Tue, 13 Dec 2016 14:11:20 +0800 Subject: [PATCH 133/139] REPORT-1097 pmd --- designer_base/src/com/fr/design/hyperlink/WebHyperlinkPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/hyperlink/WebHyperlinkPane.java b/designer_base/src/com/fr/design/hyperlink/WebHyperlinkPane.java index 72a68baa9d..fda40217bd 100644 --- a/designer_base/src/com/fr/design/hyperlink/WebHyperlinkPane.java +++ b/designer_base/src/com/fr/design/hyperlink/WebHyperlinkPane.java @@ -40,7 +40,7 @@ public class WebHyperlinkPane extends BasicBeanPane { parameterViewPane = new ReportletParameterViewPane(getChartParaType(), getValueEditorPane(), getValueEditorPane()); this.add(parameterViewPane, BorderLayout.CENTER); - parameterViewPane.setBorder(GUICoreUtils.createTitledBorder(Inter.getLocText("Parameters"), null)); + parameterViewPane.setBorder(GUICoreUtils.createTitledBorder(Inter.getLocText("FR-Designer_Parameters"), null)); useCJKCheckBox = new UICheckBox(Inter.getLocText("Hyperlink-Use_CJK_to_encode_parameter")); extendParametersCheckBox = new UICheckBox(Inter.getLocText("Hyperlink-Extends_Report_Parameters")); From 805fe40f14451f4d5d1b6ed7943cc55ce61bd098 Mon Sep 17 00:00:00 2001 From: neil Date: Tue, 13 Dec 2016 14:45:02 +0800 Subject: [PATCH 134/139] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=EF=BC=8C=20=E4=BF=AE=E5=A4=8D=E5=90=88=E5=B9=B6=E5=86=B2?= =?UTF-8?q?=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/actions/file/PreferencePane.java | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/designer_base/src/com/fr/design/actions/file/PreferencePane.java b/designer_base/src/com/fr/design/actions/file/PreferencePane.java index b03ba8f62a..bae1414524 100644 --- a/designer_base/src/com/fr/design/actions/file/PreferencePane.java +++ b/designer_base/src/com/fr/design/actions/file/PreferencePane.java @@ -29,7 +29,9 @@ import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.File; +import java.util.ArrayList; import java.util.Locale; +import java.util.Map; /** * 选项对话框 @@ -72,17 +74,17 @@ public class PreferencePane extends BasicPane { private static final String DISPLAY_MINUS = "-"; private static final FRLevel[] LOG = {FRLevel.SEVERE, FRLevel.WARNING, FRLevel.INFO, FRLevel.DEBUG}; - private static final String[] LANGUAGE = {Inter.getLocText("FR-Designer_Language_Default"), - getLocaledLanguage("Simplified_Chinese_Language", Locale.SIMPLIFIED_CHINESE), - getLocaledLanguage("English_Language", Locale.ENGLISH), - getLocaledLanguage("Japanese_Language", Locale.JAPAN), - getLocaledLanguage("Traditional_Chinese_Language", Locale.TRADITIONAL_CHINESE), - getLocaledLanguage("Korea_Language",Locale.KOREA), + private static java.util.List LANGUAGE = new ArrayList<>(); + static { + Map map = Inter.getSupportLocaleMap(); + LANGUAGE.add(Inter.getLocText("FR-Designer_Language_Default")); + for(Locale locale : map.keySet()){ + LANGUAGE.add(getLocaledLanguage(map.get(locale), locale)); + } }; - private static int designerEnvLanguageIndex; // 打开设置对话框时,设计器使用的语言 + private static int designerEnvLanguageIndex; // 打开设置对话框时,设计器使用的语言 private boolean languageChanged; // 是否修改了设计器语言设置 - //设置是否支持undo private UICheckBox supportUndoCheckBox; //设置最大撤销次数 @@ -359,7 +361,7 @@ public class PreferencePane extends BasicPane { JPanel LanguagePane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Choose_Language")); generalPane.add(languageAndDashBoard_pane); languageAndDashBoard_pane.add(LanguagePane); - languageComboBox = new UIComboBox(LANGUAGE); + languageComboBox = new UIComboBox(LANGUAGE.toArray()); languageComboBox.setFont(FRFont.getInstance("Dialog", Font.PLAIN, 12));//为了在中文系统中显示韩文 ActionLabel languageLabel = new ActionLabel(Inter.getLocText("FR-Designer_Designer_Language")); languageLabel.addActionListener(new ActionListener() { @@ -530,9 +532,8 @@ public class PreferencePane extends BasicPane { this.logLevelComboBox.setSelectedItem(FRLevel.getByLevel(designerEnvManager.getLogLevel())); - this.languageComboBox.setSelectedItem(LANGUAGE[designerEnvManager.getLanguage()]); + this.languageComboBox.setSelectedItem(LANGUAGE.get(designerEnvManager.getLanguage())); designerEnvLanguageIndex = designerEnvManager.getLanguage(); - this.pageLengthComboBox.setSelectedIndex(designerEnvManager.getPageLengthUnit()); this.reportLengthComboBox.setSelectedIndex(designerEnvManager.getReportLengthUnit()); @@ -618,8 +619,8 @@ public class PreferencePane extends BasicPane { private int getLanguageInt() { int l = 0; String lang = (String) this.languageComboBox.getSelectedItem(); - for (int i = 0; i < LANGUAGE.length; i++) { - if (ComparatorUtils.equals(lang, LANGUAGE[i])) { + for (int i = 0; i < LANGUAGE.size(); i++) { + if (ComparatorUtils.equals(lang, LANGUAGE.get(i))) { l = i; break; } @@ -627,6 +628,7 @@ public class PreferencePane extends BasicPane { return l; } + // 如果语言设置改变了,则显示重启对话框 public void showRestartDialog() { if (!languageChanged) { From 72cb528a7736faead65cbea29be7e96d3d14b133 Mon Sep 17 00:00:00 2001 From: neil Date: Tue, 13 Dec 2016 15:11:59 +0800 Subject: [PATCH 135/139] ct --- .../design/actions/file/PreferencePane.java | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/designer_base/src/com/fr/design/actions/file/PreferencePane.java b/designer_base/src/com/fr/design/actions/file/PreferencePane.java index bae1414524..965cf415a0 100644 --- a/designer_base/src/com/fr/design/actions/file/PreferencePane.java +++ b/designer_base/src/com/fr/design/actions/file/PreferencePane.java @@ -1,11 +1,13 @@ package com.fr.design.actions.file; import com.fr.base.BaseUtils; +import com.fr.base.FRContext; import com.fr.design.DesignerEnvManager; import com.fr.design.RestartHelper; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; +import com.fr.design.dialog.DialogActionListener; import com.fr.design.editor.editor.IntegerEditor; import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.gui.ibutton.UIButton; @@ -29,9 +31,7 @@ import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.File; -import java.util.ArrayList; import java.util.Locale; -import java.util.Map; /** * 选项对话框 @@ -72,19 +72,19 @@ public class PreferencePane extends BasicPane { private static final String DISPLAY_EQUALS = "+"; private static final String MINUS = "MINUS"; private static final String DISPLAY_MINUS = "-"; - + private static final FRLevel[] LOG = {FRLevel.SEVERE, FRLevel.WARNING, FRLevel.INFO, FRLevel.DEBUG}; - private static java.util.List LANGUAGE = new ArrayList<>(); - static { - Map map = Inter.getSupportLocaleMap(); - LANGUAGE.add(Inter.getLocText("FR-Designer_Language_Default")); - for(Locale locale : map.keySet()){ - LANGUAGE.add(getLocaledLanguage(map.get(locale), locale)); - } + private static final String[] LANGUAGE = {Inter.getLocText("FR-Designer_Language_Default"), + getLocaledLanguage("Simplified_Chinese_Language", Locale.SIMPLIFIED_CHINESE), + getLocaledLanguage("English_Language", Locale.ENGLISH), + getLocaledLanguage("Japanese_Language", Locale.JAPAN), + getLocaledLanguage("Traditional_Chinese_Language", Locale.TRADITIONAL_CHINESE), + getLocaledLanguage("Korea_Language",Locale.KOREA), }; - private static int designerEnvLanguageIndex; // 打开设置对话框时,设计器使用的语言 + private boolean languageChanged; // 是否修改了设计器语言设置 + //设置是否支持undo private UICheckBox supportUndoCheckBox; //设置最大撤销次数 @@ -154,7 +154,7 @@ public class PreferencePane extends BasicPane { JPanel oraclePane = FRGUIPaneFactory.createTitledBorderPane("Oracle" + Inter.getLocText("FR-Designer_Oracle_All_Tables")); oracleSpace = new UICheckBox(Inter.getLocText(message, sign)); oraclePane.add(oracleSpace); - + JPanel improvePane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Product_improve")); joinProductImprove = new UICheckBox(Inter.getLocText("FR-Designer_Join_Product_improve")); improvePane.add(joinProductImprove); @@ -164,12 +164,12 @@ public class PreferencePane extends BasicPane { spaceUpPane.add(improvePane, BorderLayout.SOUTH); advancePane.add(spaceUpPane); } - + private static String getLocaledLanguage(String key, Locale locale){ - StringBuilder sb = new StringBuilder(); - sb.append(Inter.getLocText(key)).append("("); - sb.append(Inter.getLocText(key, locale)).append(")"); - return sb.toString(); + StringBuilder sb = new StringBuilder(); + sb.append(Inter.getLocText(key)).append("("); + sb.append(Inter.getLocText(key, locale)).append(")"); + return sb.toString(); } private void createFunctionPane(JPanel generalPane) { @@ -361,7 +361,7 @@ public class PreferencePane extends BasicPane { JPanel LanguagePane = FRGUIPaneFactory.createTitledBorderPane(Inter.getLocText("FR-Designer_Choose_Language")); generalPane.add(languageAndDashBoard_pane); languageAndDashBoard_pane.add(LanguagePane); - languageComboBox = new UIComboBox(LANGUAGE.toArray()); + languageComboBox = new UIComboBox(LANGUAGE); languageComboBox.setFont(FRFont.getInstance("Dialog", Font.PLAIN, 12));//为了在中文系统中显示韩文 ActionLabel languageLabel = new ActionLabel(Inter.getLocText("FR-Designer_Designer_Language")); languageLabel.addActionListener(new ActionListener() { @@ -530,10 +530,11 @@ public class PreferencePane extends BasicPane { this.logExportDirectoryField.setText(designerEnvManager.getLogLocation()); - this.logLevelComboBox.setSelectedItem(FRLevel.getByLevel(designerEnvManager.getLogLevel())); + this.logLevelComboBox.setSelectedItem(FRLevel.getByLevel(designerEnvManager.getLogLevel())); - this.languageComboBox.setSelectedItem(LANGUAGE.get(designerEnvManager.getLanguage())); + this.languageComboBox.setSelectedItem(LANGUAGE[designerEnvManager.getLanguage()]); designerEnvLanguageIndex = designerEnvManager.getLanguage(); + this.pageLengthComboBox.setSelectedIndex(designerEnvManager.getPageLengthUnit()); this.reportLengthComboBox.setSelectedIndex(designerEnvManager.getReportLengthUnit()); @@ -619,8 +620,8 @@ public class PreferencePane extends BasicPane { private int getLanguageInt() { int l = 0; String lang = (String) this.languageComboBox.getSelectedItem(); - for (int i = 0; i < LANGUAGE.size(); i++) { - if (ComparatorUtils.equals(lang, LANGUAGE.get(i))) { + for (int i = 0; i < LANGUAGE.length; i++) { + if (ComparatorUtils.equals(lang, LANGUAGE[i])) { l = i; break; } @@ -628,21 +629,20 @@ public class PreferencePane extends BasicPane { return l; } - // 如果语言设置改变了,则显示重启对话框 public void showRestartDialog() { if (!languageChanged) { return; } int rv = JOptionPane.showOptionDialog( - null, - Inter.getLocText("FR-Designer_Language_Change_Successful"), - Inter.getLocText("FR-Designer-Plugin_Warning"), - JOptionPane.YES_NO_OPTION, - JOptionPane.INFORMATION_MESSAGE, - null, - new String[]{Inter.getLocText("FR-Designer-Basic_Restart_Designer"), Inter.getLocText("FR-Designer-Basic_Restart_Designer_Later")}, - null + null, + Inter.getLocText("FR-Designer_Language_Change_Successful"), + Inter.getLocText("FR-Designer-Plugin_Warning"), + JOptionPane.YES_NO_OPTION, + JOptionPane.INFORMATION_MESSAGE, + null, + new String[]{Inter.getLocText("FR-Designer-Basic_Restart_Designer"), Inter.getLocText("FR-Designer-Basic_Restart_Designer_Later")}, + null ); if (rv == JOptionPane.OK_OPTION) { RestartHelper.restart(); From 717ce1109002578f33b11c4ed163001e2e882301 Mon Sep 17 00:00:00 2001 From: neil Date: Tue, 13 Dec 2016 15:50:08 +0800 Subject: [PATCH 136/139] pmd --- .../widget/ui/TextFieldEditorDefinePane.java | 6 +- .../fr/design/actions/file/LocalePane.java | 90 ++++++++----------- 2 files changed, 40 insertions(+), 56 deletions(-) diff --git a/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java b/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java index c9128627cc..1c11aad2e4 100644 --- a/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java +++ b/designer/src/com/fr/design/widget/ui/TextFieldEditorDefinePane.java @@ -61,7 +61,11 @@ public class TextFieldEditorDefinePane extends FieldEditorDefinePane regPane.getRegComboBox().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { RegExp regExp = (RegExp) regPane.getRegComboBox().getSelectedItem(); - getRegErrorMsgTextField().setEnabled(regExp.errorMessageEditable()); + if (!StringUtils.isNotEmpty(regExp.toRegText())) { + getRegErrorMsgTextField().setEnabled(false); + } else { + getRegErrorMsgTextField().setEnabled(true); + } } }); diff --git a/designer_base/src/com/fr/design/actions/file/LocalePane.java b/designer_base/src/com/fr/design/actions/file/LocalePane.java index 4dd25c5048..c215ab6181 100644 --- a/designer_base/src/com/fr/design/actions/file/LocalePane.java +++ b/designer_base/src/com/fr/design/actions/file/LocalePane.java @@ -4,33 +4,29 @@ package com.fr.design.actions.file; -import java.awt.BorderLayout; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.*; - -import javax.swing.JTable; -import javax.swing.RowFilter; -import javax.swing.SwingWorker; -import javax.swing.event.DocumentEvent; -import javax.swing.event.DocumentListener; -import javax.swing.table.DefaultTableModel; -import javax.swing.table.TableRowSorter; - import com.fr.base.Env; import com.fr.base.FRContext; +import com.fr.design.dialog.BasicPane; import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.itextfield.UITextField; -import com.fr.design.dialog.BasicPane; import com.fr.file.filetree.FileNode; import com.fr.general.*; import com.fr.stable.ArrayUtils; -import com.fr.stable.StringUtils; -import com.fr.stable.bridge.StableFactory; import com.fr.stable.project.ProjectConstants; +import javax.swing.*; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.TableRowSorter; +import java.awt.*; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.*; +import java.util.List; + /** * @author : richie * @since : 8.0 @@ -53,8 +49,8 @@ public class LocalePane extends BasicPane { add(tabbedPane, BorderLayout.CENTER); predefineTableModel = new DefaultTableModel() { - public boolean isCellEditable(int row, int column) { - return column == 0; + public boolean isCellEditable(int col, int row) { + return false; } }; @@ -111,39 +107,23 @@ public class LocalePane extends BasicPane { } private void initPredefinedProperties() { - - Map supportLocaleMap = Inter.getSupportLocaleMap(); - - String[] localeFiles = StableFactory.getLocaleFiles(); - - + Map map = Inter.getPredefinedPackageMap(); + LocalePackage chinese = map.get(Locale.SIMPLIFIED_CHINESE); List sortKeys = new ArrayList(); - for (String path : localeFiles) { - ResourceBundle chineseBundle = loadResourceBundle(path, Locale.SIMPLIFIED_CHINESE); - sortKeys.addAll(chineseBundle.keySet()); + Set bundles = chinese.getKindsOfResourceBundle(); + for (ResourceBundle bundle : bundles) { + sortKeys.addAll(bundle.keySet()); } Collections.sort(sortKeys); - Map> localeResourceBundleMap = new HashMap>(); - for (Map.Entry entry : supportLocaleMap.entrySet()) { - Locale locale = entry.getKey(); - List list = new ArrayList<>(); - for (String path : localeFiles) { - ResourceBundle chineseBundle = loadResourceBundle(path, locale); - list.add(chineseBundle); - } - localeResourceBundleMap.put(locale, list); - } - Map> data = new HashMap>(); - for (Map.Entry> entry : localeResourceBundleMap.entrySet()) { + for (Map.Entry entry : map.entrySet()) { Vector column = new Vector(); - List rbs = entry.getValue(); for (String key : sortKeys) { - column.add(readText(rbs, key)); + column.add(entry.getValue().getLocText(key)); } data.put(entry.getKey(), column); } @@ -158,19 +138,6 @@ public class LocalePane extends BasicPane { } } - private String readText(List rbs, String key) { - for (ResourceBundle rb : rbs) { - if (rb.containsKey(key)) { - return rb.getString(key); - } - } - return null; - } - - private ResourceBundle loadResourceBundle(String dir, Locale locale) { - return ResourceBundle.getBundle(dir, locale, Inter.class.getClassLoader()); - } - private void initCustomProperties() throws Exception { Env env = FRContext.getCurrentEnv(); if (env == null) { @@ -207,9 +174,22 @@ public class LocalePane extends BasicPane { } } + private Properties loadLocaleProperties(String name) { + Properties properties = new Properties(); + InputStream inputStream = IOUtils.readResource("/com/fr/general/locale/" + name); + try { + properties.load(inputStream); + } catch (IOException e) { + FRLogger.getLogger().error(e.getMessage()); + } + return properties; + } + /** * 保存当前编辑的国际化 * + * + * @date 2014-9-30-下午3:10:30 */ public void save() { Env env = FRContext.getCurrentEnv(); From e36b2fdbf903fc674d2281c3c46a223588b17c13 Mon Sep 17 00:00:00 2001 From: neil Date: Tue, 13 Dec 2016 15:51:44 +0800 Subject: [PATCH 137/139] pmd --- .../fr/design/actions/file/LocalePane.java | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/designer_base/src/com/fr/design/actions/file/LocalePane.java b/designer_base/src/com/fr/design/actions/file/LocalePane.java index c215ab6181..3356fa70af 100644 --- a/designer_base/src/com/fr/design/actions/file/LocalePane.java +++ b/designer_base/src/com/fr/design/actions/file/LocalePane.java @@ -4,29 +4,31 @@ package com.fr.design.actions.file; +import java.awt.BorderLayout; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.*; + +import javax.swing.JTable; +import javax.swing.RowFilter; +import javax.swing.SwingWorker; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.TableRowSorter; + import com.fr.base.Env; import com.fr.base.FRContext; -import com.fr.design.dialog.BasicPane; import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.itextfield.UITextField; +import com.fr.design.dialog.BasicPane; import com.fr.file.filetree.FileNode; import com.fr.general.*; import com.fr.stable.ArrayUtils; import com.fr.stable.project.ProjectConstants; -import javax.swing.*; -import javax.swing.event.DocumentEvent; -import javax.swing.event.DocumentListener; -import javax.swing.table.DefaultTableModel; -import javax.swing.table.TableRowSorter; -import java.awt.*; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.*; -import java.util.List; - /** * @author : richie * @since : 8.0 From 11d2469cc586a978e0a3752cc9a1dba68c80ba86 Mon Sep 17 00:00:00 2001 From: neil Date: Tue, 13 Dec 2016 17:28:23 +0800 Subject: [PATCH 138/139] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=EF=BC=8C=20build=20failed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java index 90cc40e685..99858a6dc9 100644 --- a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java @@ -495,7 +495,7 @@ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraCh extraChartDesignInterfaceList.add(tagName); } if (IndependentChartUIProvider.XML_TAG.equals(tagName)) { - addChartInterface(reader.getAttrAsString("class", ""), reader.getAttrAsString("priority", ChartTypeManager.DEFAULT_PRIORITY),reader.getAttrAsString("plotID", ""), simplify); + addChartInterface(reader.getAttrAsString("class", ""), reader.getAttrAsString("priority", ChartTypeManager.CHART_PRIORITY),reader.getAttrAsString("plotID", ""), simplify); } } } From 46e1e1f0452346401f3690539ffbe9eb3e89df4c Mon Sep 17 00:00:00 2001 From: neil Date: Tue, 13 Dec 2016 17:28:47 +0800 Subject: [PATCH 139/139] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=EF=BC=8C=20build=20failed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java index 99858a6dc9..2ddb5b05f2 100644 --- a/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer_chart/src/com/fr/design/ChartTypeInterfaceManager.java @@ -38,7 +38,7 @@ import javax.swing.*; import java.util.*; /** - * Created by eason on 14/12/29. + * Created by eason on 14/12/29. */ public class ChartTypeInterfaceManager extends XMLFileManager implements ExtraChartDesignClassManagerProvider {